* [Intel-xe] [PATCH v5 0/3] drm/xe/pmu: Enable PMU interface
@ 2023-08-30 5:15 Aravind Iddamsetty
2023-08-30 5:10 ` [Intel-xe] ✓ CI.Patch_applied: success for drm/xe/pmu: Enable PMU interface (rev5) Patchwork
` (7 more replies)
0 siblings, 8 replies; 29+ messages in thread
From: Aravind Iddamsetty @ 2023-08-30 5:15 UTC (permalink / raw)
To: intel-xe
There are a set of engine group busyness counters provided by HW which are
perfect fit to be exposed via PMU perf events.
BSPEC: 46559, 46560, 46722, 46729, 52071, 71028
events can be listed using:
perf list
xe_0000_03_00.0/any-engine-group-busy-gt0/ [Kernel PMU event]
xe_0000_03_00.0/copy-group-busy-gt0/ [Kernel PMU event]
xe_0000_03_00.0/interrupts/ [Kernel PMU event]
xe_0000_03_00.0/media-group-busy-gt0/ [Kernel PMU event]
xe_0000_03_00.0/render-group-busy-gt0/ [Kernel PMU event]
and can be read using:
perf stat -e "xe_0000_8c_00.0/render-group-busy-gt0/" -I 1000
time counts unit events
1.001139062 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
2.003294678 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
3.005199582 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
4.007076497 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
5.008553068 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
6.010531563 43520 ns xe_0000_8c_00.0/render-group-busy-gt0/
7.012468029 44800 ns xe_0000_8c_00.0/render-group-busy-gt0/
8.013463515 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
9.015300183 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
10.017233010 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
10.971934120 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
The pmu base implementation is taken from i915.
v5:
1. Use spinlock in forcewake instead of mutex
2. take forcewake when accessing the OAG registers
v4: minor nits.
v3:
1. drop init_samples, as storing counters before going to suspend should
be sufficient.
2. ported the "drm/i915/pmu: Make PMU sample array two-dimensional" and
dropped helpers to store and read samples.
3. use xe_device_mem_access_get_if_ongoing to check if device is active
before reading the OA registers.
4. dropped format attr as no longer needed
5. introduce xe_pmu_suspend to call engine_group_busyness_store
6. few other nits.
v2:
Store last known value when device is awake return that while the GT is
suspended and then update the driver copy when read during awake.
Aravind Iddamsetty (3):
drm/xe: Get GT clock to nanosecs
drm/xe: Use spinlock in forcewake instead of mutex
drm/xe/pmu: Enable PMU interface
drivers/gpu/drm/xe/Makefile | 2 +
drivers/gpu/drm/xe/regs/xe_gt_regs.h | 5 +
drivers/gpu/drm/xe/xe_device.c | 2 +
drivers/gpu/drm/xe/xe_device_types.h | 4 +
drivers/gpu/drm/xe/xe_force_wake.c | 14 +-
drivers/gpu/drm/xe/xe_force_wake_types.h | 2 +-
drivers/gpu/drm/xe/xe_gt.c | 2 +
drivers/gpu/drm/xe/xe_gt_clock.c | 5 +
drivers/gpu/drm/xe/xe_gt_clock.h | 4 +-
drivers/gpu/drm/xe/xe_irq.c | 18 +
drivers/gpu/drm/xe/xe_module.c | 5 +
drivers/gpu/drm/xe/xe_pmu.c | 679 +++++++++++++++++++++++
drivers/gpu/drm/xe/xe_pmu.h | 25 +
drivers/gpu/drm/xe/xe_pmu_types.h | 76 +++
include/uapi/drm/xe_drm.h | 16 +
15 files changed, 850 insertions(+), 9 deletions(-)
create mode 100644 drivers/gpu/drm/xe/xe_pmu.c
create mode 100644 drivers/gpu/drm/xe/xe_pmu.h
create mode 100644 drivers/gpu/drm/xe/xe_pmu_types.h
--
2.25.1
^ permalink raw reply [flat|nested] 29+ messages in thread* [Intel-xe] ✓ CI.Patch_applied: success for drm/xe/pmu: Enable PMU interface (rev5) 2023-08-30 5:15 [Intel-xe] [PATCH v5 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty @ 2023-08-30 5:10 ` Patchwork 2023-08-30 5:10 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork ` (6 subsequent siblings) 7 siblings, 0 replies; 29+ messages in thread From: Patchwork @ 2023-08-30 5:10 UTC (permalink / raw) To: Iddamsetty, Aravind; +Cc: intel-xe == Series Details == Series: drm/xe/pmu: Enable PMU interface (rev5) URL : https://patchwork.freedesktop.org/series/119504/ State : success == Summary == === Applying kernel patches on branch 'drm-xe-next' with base: === Base commit: 7af4e6595 fixup! drm/xe/pvc: Use fast copy engines as migrate engine on PVC === git am output follows === .git/rebase-apply/patch:876: new blank line at EOF. + warning: 1 line adds whitespace errors. Applying: drm/xe: Get GT clock to nanosecs Applying: drm/xe: Use spinlock in forcewake instead of mutex Applying: drm/xe/pmu: Enable PMU interface ^ permalink raw reply [flat|nested] 29+ messages in thread
* [Intel-xe] ✗ CI.checkpatch: warning for drm/xe/pmu: Enable PMU interface (rev5) 2023-08-30 5:15 [Intel-xe] [PATCH v5 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty 2023-08-30 5:10 ` [Intel-xe] ✓ CI.Patch_applied: success for drm/xe/pmu: Enable PMU interface (rev5) Patchwork @ 2023-08-30 5:10 ` Patchwork 2023-08-30 5:12 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork ` (5 subsequent siblings) 7 siblings, 0 replies; 29+ messages in thread From: Patchwork @ 2023-08-30 5:10 UTC (permalink / raw) To: Iddamsetty, Aravind; +Cc: intel-xe == Series Details == Series: drm/xe/pmu: Enable PMU interface (rev5) URL : https://patchwork.freedesktop.org/series/119504/ 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 e700ea2f248a75138759bcb443affeef4a2d1991 + cd /kernel + git config --global --add safe.directory /kernel + git log -n1 commit 1383c6d7721be86a6e524fcb82be577a20e1d9b6 Author: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com> Date: Wed Aug 30 10:45:44 2023 +0530 drm/xe/pmu: Enable PMU interface There are a set of engine group busyness counters provided by HW which are perfect fit to be exposed via PMU perf events. BSPEC: 46559, 46560, 46722, 46729, 52071, 71028 events can be listed using: perf list xe_0000_03_00.0/any-engine-group-busy-gt0/ [Kernel PMU event] xe_0000_03_00.0/copy-group-busy-gt0/ [Kernel PMU event] xe_0000_03_00.0/interrupts/ [Kernel PMU event] xe_0000_03_00.0/media-group-busy-gt0/ [Kernel PMU event] xe_0000_03_00.0/render-group-busy-gt0/ [Kernel PMU event] and can be read using: perf stat -e "xe_0000_8c_00.0/render-group-busy-gt0/" -I 1000 time counts unit events 1.001139062 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 2.003294678 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 3.005199582 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 4.007076497 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 5.008553068 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 6.010531563 43520 ns xe_0000_8c_00.0/render-group-busy-gt0/ 7.012468029 44800 ns xe_0000_8c_00.0/render-group-busy-gt0/ 8.013463515 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 9.015300183 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 10.017233010 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 10.971934120 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ The pmu base implementation is taken from i915. v2: Store last known value when device is awake return that while the GT is suspended and then update the driver copy when read during awake. v3: 1. drop init_samples, as storing counters before going to suspend should be sufficient. 2. ported the "drm/i915/pmu: Make PMU sample array two-dimensional" and dropped helpers to store and read samples. 3. use xe_device_mem_access_get_if_ongoing to check if device is active before reading the OA registers. 4. dropped format attr as no longer needed 5. introduce xe_pmu_suspend to call engine_group_busyness_store 6. few other nits. v4: minor nits. v5: take forcewake when accessing the OAG registers Co-developed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Co-developed-by: Bommu Krishnaiah <krishnaiah.bommu@intel.com> Signed-off-by: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com> + /mt/dim checkpatch 7af4e65956a8d0346547567b534d49acf30085e0 drm-intel /mt/dim: line 50: /root/.dimrc: No such file or directory ^ permalink raw reply [flat|nested] 29+ messages in thread
* [Intel-xe] ✓ CI.KUnit: success for drm/xe/pmu: Enable PMU interface (rev5) 2023-08-30 5:15 [Intel-xe] [PATCH v5 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty 2023-08-30 5:10 ` [Intel-xe] ✓ CI.Patch_applied: success for drm/xe/pmu: Enable PMU interface (rev5) Patchwork 2023-08-30 5:10 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork @ 2023-08-30 5:12 ` Patchwork 2023-08-30 5:15 ` [Intel-xe] [PATCH v3 1/3] drm/xe: Get GT clock to nanosecs Aravind Iddamsetty ` (4 subsequent siblings) 7 siblings, 0 replies; 29+ messages in thread From: Patchwork @ 2023-08-30 5:12 UTC (permalink / raw) To: Iddamsetty, Aravind; +Cc: intel-xe == Series Details == Series: drm/xe/pmu: Enable PMU interface (rev5) URL : https://patchwork.freedesktop.org/series/119504/ State : success == Summary == + trap cleanup EXIT + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig stty: 'standard input': Inappropriate ioctl for device [05:10:53] Configuring KUnit Kernel ... Generating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [05:10:57] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make ARCH=um O=.kunit --jobs=48 [05:11:16] Starting KUnit Kernel (1/1)... [05:11:16] ============================================================ [05:11:17] ==================== xe_bo (2 subtests) ==================== [05:11:17] [SKIPPED] xe_ccs_migrate_kunit [05:11:17] [SKIPPED] xe_bo_evict_kunit [05:11:17] ===================== [SKIPPED] xe_bo ====================== [05:11:17] ================== xe_dma_buf (1 subtest) ================== [05:11:17] [SKIPPED] xe_dma_buf_kunit [05:11:17] =================== [SKIPPED] xe_dma_buf =================== [05:11:17] ================== xe_migrate (1 subtest) ================== [05:11:17] [SKIPPED] xe_migrate_sanity_kunit [05:11:17] =================== [SKIPPED] xe_migrate =================== [05:11:17] =================== xe_pci (2 subtests) ==================== [05:11:17] [PASSED] xe_gmdid_graphics_ip [05:11:17] [PASSED] xe_gmdid_media_ip [05:11:17] ===================== [PASSED] xe_pci ====================== [05:11:17] ==================== xe_rtp (1 subtest) ==================== [05:11:17] ================== xe_rtp_process_tests =================== [05:11:17] [PASSED] coalesce-same-reg [05:11:17] [PASSED] no-match-no-add [05:11:17] [PASSED] no-match-no-add-multiple-rules [05:11:17] [PASSED] two-regs-two-entries [05:11:17] [PASSED] clr-one-set-other [05:11:17] [PASSED] set-field [05:11:17] [PASSED] conflict-duplicate [05:11:17] [PASSED] conflict-not-disjoint [05:11:17] [PASSED] conflict-reg-type [05:11:17] ============== [PASSED] xe_rtp_process_tests =============== [05:11:17] ===================== [PASSED] xe_rtp ====================== [05:11:17] ==================== xe_wa (1 subtest) ===================== [05:11:17] ======================== xe_wa_gt ========================= [05:11:17] [PASSED] TIGERLAKE (B0) [05:11:17] [PASSED] DG1 (A0) [05:11:17] [PASSED] DG1 (B0) [05:11:17] [PASSED] ALDERLAKE_S (A0) [05:11:17] [PASSED] ALDERLAKE_S (B0) [05:11:17] [PASSED] ALDERLAKE_S (C0) [05:11:17] [PASSED] ALDERLAKE_S (D0) [05:11:17] [PASSED] ALDERLAKE_P (A0) [05:11:17] [PASSED] ALDERLAKE_P (B0) [05:11:17] [PASSED] ALDERLAKE_P (C0) [05:11:17] [PASSED] DG2_G10 (A0) [05:11:17] [PASSED] DG2_G10 (A1) [05:11:17] [PASSED] DG2_G10 (B0) [05:11:17] [PASSED] DG2_G10 (C0) [05:11:17] [PASSED] DG2_G11 (A0) [05:11:17] [PASSED] DG2_G11 (B0) [05:11:17] [PASSED] DG2_G11 (B1) [05:11:17] [PASSED] DG2_G12 (A0) [05:11:17] [PASSED] DG2_G12 (A1) [05:11:17] [PASSED] PVC (B0) [05:11:17] [PASSED] PVC (B1) [05:11:17] [PASSED] PVC (C0) [05:11:17] ==================== [PASSED] xe_wa_gt ===================== [05:11:17] ====================== [PASSED] xe_wa ====================== [05:11:17] ============================================================ [05:11:17] Testing complete. Ran 37 tests: passed: 33, skipped: 4 [05:11:17] Elapsed time: 23.974s total, 4.231s configuring, 19.573s building, 0.137s running + /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [05:11:17] Configuring KUnit Kernel ... Regenerating .config ... Populating config with: $ make ARCH=um O=.kunit olddefconfig [05:11:18] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make ARCH=um O=.kunit --jobs=48 [05:11:38] Starting KUnit Kernel (1/1)... [05:11:38] ============================================================ [05:11:38] ============ drm_test_pick_cmdline (2 subtests) ============ [05:11:38] [PASSED] drm_test_pick_cmdline_res_1920_1080_60 [05:11:38] =============== drm_test_pick_cmdline_named =============== [05:11:38] [PASSED] NTSC [05:11:38] [PASSED] NTSC-J [05:11:38] [PASSED] PAL [05:11:38] [PASSED] PAL-M [05:11:38] =========== [PASSED] drm_test_pick_cmdline_named =========== [05:11:38] ============== [PASSED] drm_test_pick_cmdline ============== [05:11:38] ================== drm_buddy (6 subtests) ================== [05:11:38] [PASSED] drm_test_buddy_alloc_limit [05:11:38] [PASSED] drm_test_buddy_alloc_range [05:11:38] [PASSED] drm_test_buddy_alloc_optimistic [05:11:38] [PASSED] drm_test_buddy_alloc_pessimistic [05:11:38] [PASSED] drm_test_buddy_alloc_smoke [05:11:38] [PASSED] drm_test_buddy_alloc_pathological [05:11:38] ==================== [PASSED] drm_buddy ==================== [05:11:38] ============= drm_cmdline_parser (40 subtests) ============= [05:11:38] [PASSED] drm_test_cmdline_force_d_only [05:11:38] [PASSED] drm_test_cmdline_force_D_only_dvi [05:11:38] [PASSED] drm_test_cmdline_force_D_only_hdmi [05:11:38] [PASSED] drm_test_cmdline_force_D_only_not_digital [05:11:38] [PASSED] drm_test_cmdline_force_e_only [05:11:38] [PASSED] drm_test_cmdline_res [05:11:38] [PASSED] drm_test_cmdline_res_vesa [05:11:38] [PASSED] drm_test_cmdline_res_vesa_rblank [05:11:38] [PASSED] drm_test_cmdline_res_rblank [05:11:38] [PASSED] drm_test_cmdline_res_bpp [05:11:38] [PASSED] drm_test_cmdline_res_refresh [05:11:38] [PASSED] drm_test_cmdline_res_bpp_refresh [05:11:38] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [05:11:38] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [05:11:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [05:11:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [05:11:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [05:11:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [05:11:38] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [05:11:38] [PASSED] drm_test_cmdline_res_margins_force_on [05:11:38] [PASSED] drm_test_cmdline_res_vesa_margins [05:11:38] [PASSED] drm_test_cmdline_name [05:11:38] [PASSED] drm_test_cmdline_name_bpp [05:11:38] [PASSED] drm_test_cmdline_name_option [05:11:38] [PASSED] drm_test_cmdline_name_bpp_option [05:11:38] [PASSED] drm_test_cmdline_rotate_0 [05:11:38] [PASSED] drm_test_cmdline_rotate_90 [05:11:38] [PASSED] drm_test_cmdline_rotate_180 [05:11:38] [PASSED] drm_test_cmdline_rotate_270 [05:11:38] [PASSED] drm_test_cmdline_hmirror [05:11:38] [PASSED] drm_test_cmdline_vmirror [05:11:38] [PASSED] drm_test_cmdline_margin_options [05:11:38] [PASSED] drm_test_cmdline_multiple_options [05:11:38] [PASSED] drm_test_cmdline_bpp_extra_and_option [05:11:38] [PASSED] drm_test_cmdline_extra_and_option [05:11:38] [PASSED] drm_test_cmdline_freestanding_options [05:11:38] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [05:11:38] [PASSED] drm_test_cmdline_panel_orientation [05:11:38] ================ drm_test_cmdline_invalid ================= [05:11:38] [PASSED] margin_only [05:11:38] [PASSED] interlace_only [05:11:38] [PASSED] res_missing_x [05:11:38] [PASSED] res_missing_y [05:11:38] [PASSED] res_bad_y [05:11:38] [PASSED] res_missing_y_bpp [05:11:38] [PASSED] res_bad_bpp [05:11:38] [PASSED] res_bad_refresh [05:11:38] [PASSED] res_bpp_refresh_force_on_off [05:11:38] [PASSED] res_invalid_mode [05:11:38] [PASSED] res_bpp_wrong_place_mode [05:11:38] [PASSED] name_bpp_refresh [05:11:38] [PASSED] name_refresh [05:11:38] [PASSED] name_refresh_wrong_mode [05:11:38] [PASSED] name_refresh_invalid_mode [05:11:38] [PASSED] rotate_multiple [05:11:38] [PASSED] rotate_invalid_val [05:11:38] [PASSED] rotate_truncated [05:11:38] [PASSED] invalid_option [05:11:38] [PASSED] invalid_tv_option [05:11:38] [PASSED] truncated_tv_option [05:11:38] ============ [PASSED] drm_test_cmdline_invalid ============= [05:11:38] =============== drm_test_cmdline_tv_options =============== [05:11:38] [PASSED] NTSC [05:11:38] [PASSED] NTSC_443 [05:11:38] [PASSED] NTSC_J [05:11:38] [PASSED] PAL [05:11:38] [PASSED] PAL_M [05:11:38] [PASSED] PAL_N [05:11:38] [PASSED] SECAM [05:11:38] =========== [PASSED] drm_test_cmdline_tv_options =========== [05:11:38] =============== [PASSED] drm_cmdline_parser ================ [05:11:38] ========== drm_get_tv_mode_from_name (2 subtests) ========== [05:11:38] ========== drm_test_get_tv_mode_from_name_valid =========== [05:11:38] [PASSED] NTSC [05:11:38] [PASSED] NTSC-443 [05:11:38] [PASSED] NTSC-J [05:11:38] [PASSED] PAL [05:11:38] [PASSED] PAL-M [05:11:38] [PASSED] PAL-N [05:11:38] [PASSED] SECAM [05:11:38] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [05:11:38] [PASSED] drm_test_get_tv_mode_from_name_truncated [05:11:38] ============ [PASSED] drm_get_tv_mode_from_name ============ [05:11:38] ============= drm_damage_helper (21 subtests) ============== [05:11:38] [PASSED] drm_test_damage_iter_no_damage [05:11:38] [PASSED] drm_test_damage_iter_no_damage_fractional_src [05:11:38] [PASSED] drm_test_damage_iter_no_damage_src_moved [05:11:38] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [05:11:38] [PASSED] drm_test_damage_iter_no_damage_not_visible [05:11:38] [PASSED] drm_test_damage_iter_no_damage_no_crtc [05:11:38] [PASSED] drm_test_damage_iter_no_damage_no_fb [05:11:38] [PASSED] drm_test_damage_iter_simple_damage [05:11:38] [PASSED] drm_test_damage_iter_single_damage [05:11:38] [PASSED] drm_test_damage_iter_single_damage_intersect_src [05:11:38] [PASSED] drm_test_damage_iter_single_damage_outside_src [05:11:38] [PASSED] drm_test_damage_iter_single_damage_fractional_src [05:11:38] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [05:11:38] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [05:11:38] [PASSED] drm_test_damage_iter_single_damage_src_moved [05:11:38] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [05:11:38] [PASSED] drm_test_damage_iter_damage [05:11:38] [PASSED] drm_test_damage_iter_damage_one_intersect [05:11:38] [PASSED] drm_test_damage_iter_damage_one_outside [05:11:38] [PASSED] drm_test_damage_iter_damage_src_moved [05:11:38] [PASSED] drm_test_damage_iter_damage_not_visible [05:11:38] ================ [PASSED] drm_damage_helper ================ [05:11:38] ============== drm_dp_mst_helper (2 subtests) ============== [05:11:38] ============== drm_test_dp_mst_calc_pbn_mode ============== [05:11:38] [PASSED] Clock 154000 BPP 30 DSC disabled [05:11:38] [PASSED] Clock 234000 BPP 30 DSC disabled [05:11:38] [PASSED] Clock 297000 BPP 24 DSC disabled [05:11:38] [PASSED] Clock 332880 BPP 24 DSC enabled [05:11:38] [PASSED] Clock 324540 BPP 24 DSC enabled [05:11:38] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [05:11:38] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [05:11:38] [PASSED] DP_ENUM_PATH_RESOURCES with port number [05:11:38] [PASSED] DP_POWER_UP_PHY with port number [05:11:38] [PASSED] DP_POWER_DOWN_PHY with port number [05:11:38] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [05:11:38] [PASSED] DP_ALLOCATE_PAYLOAD with port number [05:11:38] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [05:11:38] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [05:11:38] [PASSED] DP_QUERY_PAYLOAD with port number [05:11:38] [PASSED] DP_QUERY_PAYLOAD with VCPI [05:11:38] [PASSED] DP_REMOTE_DPCD_READ with port number [05:11:38] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [05:11:38] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [05:11:38] [PASSED] DP_REMOTE_DPCD_WRITE with port number [05:11:38] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [05:11:38] [PASSED] DP_REMOTE_DPCD_WRITE with data array [05:11:38] [PASSED] DP_REMOTE_I2C_READ with port number [05:11:38] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [05:11:38] [PASSED] DP_REMOTE_I2C_READ with transactions array [05:11:38] [PASSED] DP_REMOTE_I2C_WRITE with port number [05:11:38] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [05:11:38] [PASSED] DP_REMOTE_I2C_WRITE with data array [05:11:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [05:11:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [05:11:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [05:11:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [05:11:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [05:11:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [05:11:38] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [05:11:38] ================ [PASSED] drm_dp_mst_helper ================ [05:11:38] =========== drm_format_helper_test (11 subtests) =========== [05:11:38] ============== drm_test_fb_xrgb8888_to_gray8 ============== [05:11:38] [PASSED] single_pixel_source_buffer [05:11:38] [PASSED] single_pixel_clip_rectangle [05:11:38] [PASSED] well_known_colors [05:11:38] [PASSED] destination_pitch [05:11:38] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [05:11:38] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [05:11:38] [PASSED] single_pixel_source_buffer [05:11:38] [PASSED] single_pixel_clip_rectangle [05:11:38] [PASSED] well_known_colors [05:11:38] [PASSED] destination_pitch [05:11:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [05:11:38] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [05:11:38] [PASSED] single_pixel_source_buffer [05:11:38] [PASSED] single_pixel_clip_rectangle [05:11:38] [PASSED] well_known_colors [05:11:38] [PASSED] destination_pitch [05:11:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [05:11:38] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [05:11:38] [PASSED] single_pixel_source_buffer [05:11:38] [PASSED] single_pixel_clip_rectangle [05:11:38] [PASSED] well_known_colors [05:11:38] [PASSED] destination_pitch [05:11:38] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [05:11:38] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [05:11:38] [PASSED] single_pixel_source_buffer [05:11:38] [PASSED] single_pixel_clip_rectangle [05:11:38] [PASSED] well_known_colors [05:11:38] [PASSED] destination_pitch [05:11:38] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [05:11:38] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [05:11:38] [PASSED] single_pixel_source_buffer [05:11:38] [PASSED] single_pixel_clip_rectangle [05:11:38] [PASSED] well_known_colors [05:11:38] [PASSED] destination_pitch [05:11:38] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [05:11:38] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [05:11:38] [PASSED] single_pixel_source_buffer [05:11:38] [PASSED] single_pixel_clip_rectangle [05:11:38] [PASSED] well_known_colors [05:11:38] [PASSED] destination_pitch [05:11:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [05:11:38] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [05:11:38] [PASSED] single_pixel_source_buffer [05:11:38] [PASSED] single_pixel_clip_rectangle [05:11:38] [PASSED] well_known_colors [05:11:38] [PASSED] destination_pitch [05:11:38] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [05:11:38] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [05:11:38] [PASSED] single_pixel_source_buffer [05:11:38] [PASSED] single_pixel_clip_rectangle [05:11:38] [PASSED] well_known_colors [05:11:38] [PASSED] destination_pitch [05:11:38] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [05:11:38] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [05:11:38] [PASSED] single_pixel_source_buffer [05:11:38] [PASSED] single_pixel_clip_rectangle [05:11:38] [PASSED] well_known_colors [05:11:38] [PASSED] destination_pitch [05:11:38] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [05:11:38] ============== drm_test_fb_xrgb8888_to_mono =============== [05:11:38] [PASSED] single_pixel_source_buffer [05:11:38] [PASSED] single_pixel_clip_rectangle [05:11:38] [PASSED] well_known_colors [05:11:38] [PASSED] destination_pitch [05:11:38] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [05:11:38] ============= [PASSED] drm_format_helper_test ============== [05:11:38] ================= drm_format (18 subtests) ================= [05:11:38] [PASSED] drm_test_format_block_width_invalid [05:11:38] [PASSED] drm_test_format_block_width_one_plane [05:11:38] [PASSED] drm_test_format_block_width_two_plane [05:11:38] [PASSED] drm_test_format_block_width_three_plane [05:11:38] [PASSED] drm_test_format_block_width_tiled [05:11:38] [PASSED] drm_test_format_block_height_invalid [05:11:38] [PASSED] drm_test_format_block_height_one_plane [05:11:38] [PASSED] drm_test_format_block_height_two_plane [05:11:38] [PASSED] drm_test_format_block_height_three_plane [05:11:38] [PASSED] drm_test_format_block_height_tiled [05:11:38] [PASSED] drm_test_format_min_pitch_invalid [05:11:38] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [05:11:38] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [05:11:38] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [05:11:38] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [05:11:38] [PASSED] drm_test_format_min_pitch_two_plane [05:11:38] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [05:11:38] [PASSED] drm_test_format_min_pitch_tiled [05:11:38] =================== [PASSED] drm_format ==================== [05:11:38] =============== drm_framebuffer (1 subtest) ================ [05:11:38] =============== drm_test_framebuffer_create =============== [05:11:38] [PASSED] ABGR8888 normal sizes [05:11:38] [PASSED] ABGR8888 max sizes [05:11:38] [PASSED] ABGR8888 pitch greater than min required [05:11:38] [PASSED] ABGR8888 pitch less than min required [05:11:38] [PASSED] ABGR8888 Invalid width [05:11:38] [PASSED] ABGR8888 Invalid buffer handle [05:11:38] [PASSED] No pixel format [05:11:38] [PASSED] ABGR8888 Width 0 [05:11:38] [PASSED] ABGR8888 Height 0 [05:11:38] [PASSED] ABGR8888 Out of bound height * pitch combination [05:11:38] [PASSED] ABGR8888 Large buffer offset [05:11:38] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [05:11:38] [PASSED] ABGR8888 Valid buffer modifier [05:11:38] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [05:11:38] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [05:11:38] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [05:11:38] [PASSED] NV12 Normal sizes [05:11:38] [PASSED] NV12 Max sizes [05:11:38] [PASSED] NV12 Invalid pitch [05:11:38] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [05:11:38] [PASSED] NV12 different modifier per-plane [05:11:38] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [05:11:38] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [05:11:38] [PASSED] NV12 Modifier for inexistent plane [05:11:38] [PASSED] NV12 Handle for inexistent plane [05:11:38] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [05:11:38] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [05:11:38] [PASSED] YVU420 Normal sizes [05:11:38] [PASSED] YVU420 Max sizes [05:11:38] [PASSED] YVU420 Invalid pitch [05:11:38] [PASSED] YVU420 Different pitches [05:11:38] [PASSED] YVU420 Different buffer offsets/pitches [05:11:38] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [05:11:38] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [05:11:38] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [05:11:38] [PASSED] YVU420 Valid modifier [05:11:38] [PASSED] YVU420 Different modifiers per plane [05:11:38] [PASSED] YVU420 Modifier for inexistent plane [05:11:38] [PASSED] X0L2 Normal sizes [05:11:38] [PASSED] X0L2 Max sizes [05:11:38] [PASSED] X0L2 Invalid pitch [05:11:38] [PASSED] X0L2 Pitch greater than minimum required stty: 'standard input': Inappropriate ioctl for device [05:11:38] [PASSED] X0L2 Handle for inexistent plane [05:11:38] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [05:11:38] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [05:11:38] [PASSED] X0L2 Valid modifier [05:11:38] [PASSED] X0L2 Modifier for inexistent plane [05:11:38] =========== [PASSED] drm_test_framebuffer_create =========== [05:11:38] ================= [PASSED] drm_framebuffer ================= [05:11:38] =============== drm-test-managed (1 subtest) =============== [05:11:38] [PASSED] drm_test_managed_run_action [05:11:38] ================ [PASSED] drm-test-managed ================= [05:11:38] =================== drm_mm (19 subtests) =================== [05:11:38] [PASSED] drm_test_mm_init [05:11:38] [PASSED] drm_test_mm_debug [05:11:48] [PASSED] drm_test_mm_reserve [05:11:58] [PASSED] drm_test_mm_insert [05:11:59] [PASSED] drm_test_mm_replace [05:11:59] [PASSED] drm_test_mm_insert_range [05:11:59] [PASSED] drm_test_mm_frag [05:11:59] [PASSED] drm_test_mm_align [05:11:59] [PASSED] drm_test_mm_align32 [05:11:59] [PASSED] drm_test_mm_align64 [05:11:59] [PASSED] drm_test_mm_evict [05:11:59] [PASSED] drm_test_mm_evict_range [05:12:00] [PASSED] drm_test_mm_topdown [05:12:00] [PASSED] drm_test_mm_bottomup [05:12:00] [PASSED] drm_test_mm_lowest [05:12:00] [PASSED] drm_test_mm_highest [05:12:00] [PASSED] drm_test_mm_color [05:12:01] [PASSED] drm_test_mm_color_evict [05:12:01] [PASSED] drm_test_mm_color_evict_range [05:12:01] ===================== [PASSED] drm_mm ====================== [05:12:01] ============= drm_modes_analog_tv (4 subtests) ============= [05:12:01] [PASSED] drm_test_modes_analog_tv_ntsc_480i [05:12:01] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [05:12:01] [PASSED] drm_test_modes_analog_tv_pal_576i [05:12:01] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [05:12:01] =============== [PASSED] drm_modes_analog_tv =============== [05:12:01] ============== drm_plane_helper (2 subtests) =============== [05:12:01] =============== drm_test_check_plane_state ================ [05:12:01] [PASSED] clipping_simple [05:12:01] [PASSED] clipping_rotate_reflect [05:12:01] [PASSED] positioning_simple [05:12:01] [PASSED] upscaling [05:12:01] [PASSED] downscaling [05:12:01] [PASSED] rounding1 [05:12:01] [PASSED] rounding2 [05:12:01] [PASSED] rounding3 [05:12:01] [PASSED] rounding4 [05:12:01] =========== [PASSED] drm_test_check_plane_state ============ [05:12:01] =========== drm_test_check_invalid_plane_state ============ [05:12:01] [PASSED] positioning_invalid [05:12:01] [PASSED] upscaling_invalid [05:12:01] [PASSED] downscaling_invalid [05:12:01] ======= [PASSED] drm_test_check_invalid_plane_state ======== [05:12:01] ================ [PASSED] drm_plane_helper ================= [05:12:01] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [05:12:01] ====== drm_test_connector_helper_tv_get_modes_check ======= [05:12:01] [PASSED] None [05:12:01] [PASSED] PAL [05:12:01] [PASSED] NTSC [05:12:01] [PASSED] Both, NTSC Default [05:12:01] [PASSED] Both, PAL Default [05:12:01] [PASSED] Both, NTSC Default, with PAL on command-line [05:12:01] [PASSED] Both, PAL Default, with NTSC on command-line [05:12:01] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [05:12:01] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [05:12:01] ================== drm_rect (9 subtests) =================== [05:12:01] [PASSED] drm_test_rect_clip_scaled_div_by_zero [05:12:01] [PASSED] drm_test_rect_clip_scaled_not_clipped [05:12:01] [PASSED] drm_test_rect_clip_scaled_clipped [05:12:01] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [05:12:01] ================= drm_test_rect_intersect ================= [05:12:01] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [05:12:01] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [05:12:01] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [05:12:01] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [05:12:01] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [05:12:01] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [05:12:01] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [05:12:01] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [05:12:01] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [05:12:01] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [05:12:01] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [05:12:01] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [05:12:01] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [05:12:01] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [05:12:01] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [05:12:01] ============= [PASSED] drm_test_rect_intersect ============= [05:12:01] ================ drm_test_rect_calc_hscale ================ [05:12:01] [PASSED] normal use [05:12:01] [PASSED] out of max range [05:12:01] [PASSED] out of min range [05:12:01] [PASSED] zero dst [05:12:01] [PASSED] negative src [05:12:01] [PASSED] negative dst [05:12:01] ============ [PASSED] drm_test_rect_calc_hscale ============ [05:12:01] ================ drm_test_rect_calc_vscale ================ [05:12:01] [PASSED] normal use [05:12:01] [PASSED] out of max range [05:12:01] [PASSED] out of min range [05:12:01] [PASSED] zero dst [05:12:01] [PASSED] negative src [05:12:01] [PASSED] negative dst [05:12:01] ============ [PASSED] drm_test_rect_calc_vscale ============ [05:12:01] ================== drm_test_rect_rotate =================== [05:12:01] [PASSED] reflect-x [05:12:01] [PASSED] reflect-y [05:12:01] [PASSED] rotate-0 [05:12:01] [PASSED] rotate-90 [05:12:01] [PASSED] rotate-180 [05:12:01] [PASSED] rotate-270 [05:12:01] ============== [PASSED] drm_test_rect_rotate =============== [05:12:01] ================ drm_test_rect_rotate_inv ================= [05:12:01] [PASSED] reflect-x [05:12:01] [PASSED] reflect-y [05:12:01] [PASSED] rotate-0 [05:12:01] [PASSED] rotate-90 [05:12:01] [PASSED] rotate-180 [05:12:01] [PASSED] rotate-270 [05:12:01] ============ [PASSED] drm_test_rect_rotate_inv ============= [05:12:01] ==================== [PASSED] drm_rect ===================== [05:12:01] ================== drm_exec (7 subtests) =================== [05:12:01] [PASSED] sanitycheck [05:12:01] [PASSED] test_lock [05:12:01] [PASSED] test_lock_unlock [05:12:01] [PASSED] test_duplicates [05:12:01] [PASSED] test_prepare [05:12:01] [PASSED] test_prepare_array [05:12:01] [PASSED] test_multiple_loops [05:12:01] ==================== [PASSED] drm_exec ===================== [05:12:01] ============================================================ [05:12:01] Testing complete. Ran 340 tests: passed: 340 [05:12:01] Elapsed time: 44.246s total, 1.697s configuring, 19.520s building, 23.017s running + cleanup ++ stat -c %u:%g /kernel + chown -R 1003:1003 /kernel ^ permalink raw reply [flat|nested] 29+ messages in thread
* [Intel-xe] [PATCH v3 1/3] drm/xe: Get GT clock to nanosecs 2023-08-30 5:15 [Intel-xe] [PATCH v5 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty ` (2 preceding siblings ...) 2023-08-30 5:12 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork @ 2023-08-30 5:15 ` Aravind Iddamsetty 2023-08-30 5:15 ` [Intel-xe] [PATCH 2/3] drm/xe: Use spinlock in forcewake instead of mutex Aravind Iddamsetty ` (3 subsequent siblings) 7 siblings, 0 replies; 29+ messages in thread From: Aravind Iddamsetty @ 2023-08-30 5:15 UTC (permalink / raw) To: intel-xe Helper to convert GT clock cycles to nanoseconds. v2: Use DIV_ROUND_CLOSEST_ULL helper(Ashutosh) v3: rename xe_gt_clock_interval_to_ns to xe_gt_clock_cycles_to_ns Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com> Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com> Signed-off-by: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com> --- drivers/gpu/drm/xe/xe_gt_clock.c | 5 +++++ drivers/gpu/drm/xe/xe_gt_clock.h | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/xe/xe_gt_clock.c b/drivers/gpu/drm/xe/xe_gt_clock.c index 2f77b8bbcf53..c67080ce1593 100644 --- a/drivers/gpu/drm/xe/xe_gt_clock.c +++ b/drivers/gpu/drm/xe/xe_gt_clock.c @@ -78,3 +78,8 @@ int xe_gt_clock_init(struct xe_gt *gt) gt->info.clock_freq = freq; return 0; } + +u64 xe_gt_clock_cycles_to_ns(const struct xe_gt *gt, u64 count) +{ + return DIV_ROUND_CLOSEST_ULL(count * NSEC_PER_SEC, gt->info.clock_freq); +} diff --git a/drivers/gpu/drm/xe/xe_gt_clock.h b/drivers/gpu/drm/xe/xe_gt_clock.h index 511923afd224..aa162722f859 100644 --- a/drivers/gpu/drm/xe/xe_gt_clock.h +++ b/drivers/gpu/drm/xe/xe_gt_clock.h @@ -6,8 +6,10 @@ #ifndef _XE_GT_CLOCK_H_ #define _XE_GT_CLOCK_H_ +#include <linux/types.h> + struct xe_gt; int xe_gt_clock_init(struct xe_gt *gt); - +u64 xe_gt_clock_cycles_to_ns(const struct xe_gt *gt, u64 count); #endif -- 2.25.1 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Intel-xe] [PATCH 2/3] drm/xe: Use spinlock in forcewake instead of mutex 2023-08-30 5:15 [Intel-xe] [PATCH v5 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty ` (3 preceding siblings ...) 2023-08-30 5:15 ` [Intel-xe] [PATCH v3 1/3] drm/xe: Get GT clock to nanosecs Aravind Iddamsetty @ 2023-08-30 5:15 ` Aravind Iddamsetty 2023-08-30 5:33 ` Dixit, Ashutosh 2023-08-30 5:15 ` [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty ` (2 subsequent siblings) 7 siblings, 1 reply; 29+ messages in thread From: Aravind Iddamsetty @ 2023-08-30 5:15 UTC (permalink / raw) To: intel-xe In PMU we need to access certain registers which fall under GT power domain for which we need to take forcewake. But as PMU being an atomic context can't expect to have any sleeping calls. Signed-off-by: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com> --- drivers/gpu/drm/xe/xe_force_wake.c | 14 +++++++------- drivers/gpu/drm/xe/xe_force_wake_types.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_force_wake.c b/drivers/gpu/drm/xe/xe_force_wake.c index ef7279e0b006..53d5b013a80c 100644 --- a/drivers/gpu/drm/xe/xe_force_wake.c +++ b/drivers/gpu/drm/xe/xe_force_wake.c @@ -42,7 +42,7 @@ void xe_force_wake_init_gt(struct xe_gt *gt, struct xe_force_wake *fw) struct xe_device *xe = gt_to_xe(gt); fw->gt = gt; - mutex_init(&fw->lock); + spin_lock_init(&fw->lock); /* Assuming gen11+ so assert this assumption is correct */ XE_WARN_ON(GRAPHICS_VER(gt_to_xe(gt)) < 11); @@ -116,7 +116,7 @@ static int domain_wake_wait(struct xe_gt *gt, { return xe_mmio_wait32(gt, domain->reg_ack, domain->val, domain->val, XE_FORCE_WAKE_ACK_TIMEOUT_MS * USEC_PER_MSEC, - NULL, false); + NULL, true); } static void domain_sleep(struct xe_gt *gt, struct xe_force_wake_domain *domain) @@ -129,7 +129,7 @@ static int domain_sleep_wait(struct xe_gt *gt, { return xe_mmio_wait32(gt, domain->reg_ack, domain->val, 0, XE_FORCE_WAKE_ACK_TIMEOUT_MS * USEC_PER_MSEC, - NULL, false); + NULL, true); } #define for_each_fw_domain_masked(domain__, mask__, fw__, tmp__) \ @@ -147,7 +147,7 @@ int xe_force_wake_get(struct xe_force_wake *fw, enum xe_force_wake_domains tmp, woken = 0; int ret, ret2 = 0; - mutex_lock(&fw->lock); + spin_lock(&fw->lock); for_each_fw_domain_masked(domain, domains, fw, tmp) { if (!domain->ref++) { woken |= BIT(domain->id); @@ -162,7 +162,7 @@ int xe_force_wake_get(struct xe_force_wake *fw, domain->id, ret); } fw->awake_domains |= woken; - mutex_unlock(&fw->lock); + spin_unlock(&fw->lock); return ret2; } @@ -176,7 +176,7 @@ int xe_force_wake_put(struct xe_force_wake *fw, enum xe_force_wake_domains tmp, sleep = 0; int ret, ret2 = 0; - mutex_lock(&fw->lock); + spin_lock(&fw->lock); for_each_fw_domain_masked(domain, domains, fw, tmp) { if (!--domain->ref) { sleep |= BIT(domain->id); @@ -191,7 +191,7 @@ int xe_force_wake_put(struct xe_force_wake *fw, domain->id, ret); } fw->awake_domains &= ~sleep; - mutex_unlock(&fw->lock); + spin_unlock(&fw->lock); return ret2; } diff --git a/drivers/gpu/drm/xe/xe_force_wake_types.h b/drivers/gpu/drm/xe/xe_force_wake_types.h index cb782696855b..ed0edc2cdf9f 100644 --- a/drivers/gpu/drm/xe/xe_force_wake_types.h +++ b/drivers/gpu/drm/xe/xe_force_wake_types.h @@ -76,7 +76,7 @@ struct xe_force_wake { /** @gt: back pointers to GT */ struct xe_gt *gt; /** @lock: protects everything force wake struct */ - struct mutex lock; + spinlock_t lock; /** @awake_domains: mask of all domains awake */ enum xe_force_wake_domains awake_domains; /** @domains: force wake domains */ -- 2.25.1 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH 2/3] drm/xe: Use spinlock in forcewake instead of mutex 2023-08-30 5:15 ` [Intel-xe] [PATCH 2/3] drm/xe: Use spinlock in forcewake instead of mutex Aravind Iddamsetty @ 2023-08-30 5:33 ` Dixit, Ashutosh 2023-08-30 20:56 ` Rodrigo Vivi 0 siblings, 1 reply; 29+ messages in thread From: Dixit, Ashutosh @ 2023-08-30 5:33 UTC (permalink / raw) To: Aravind Iddamsetty; +Cc: intel-xe, Rodrigo Vivi On Tue, 29 Aug 2023 22:15:43 -0700, Aravind Iddamsetty wrote: > Hi Aravind, > @@ -162,7 +162,7 @@ int xe_force_wake_get(struct xe_force_wake *fw, > domain->id, ret); > } > fw->awake_domains |= woken; > - mutex_unlock(&fw->lock); > + spin_unlock(&fw->lock); No need to change anything yet, but let's get some more opinion on this: is it ok to (a) just replace the mutex with a spinlock in these force_wake functions, or, (b) should we have a second set of functions to be called in atomic context, say: xe_force_wake_get/put_atomic? So we should use (b) in atomic contexts and everywhere else we just continue to use the previous set of non-atomic functions? Or just converting the default set of functions to use spin lock (as is done in this patch) is ok? Thanks. -- Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH 2/3] drm/xe: Use spinlock in forcewake instead of mutex 2023-08-30 5:33 ` Dixit, Ashutosh @ 2023-08-30 20:56 ` Rodrigo Vivi 2023-08-30 22:19 ` Dixit, Ashutosh 0 siblings, 1 reply; 29+ messages in thread From: Rodrigo Vivi @ 2023-08-30 20:56 UTC (permalink / raw) To: Dixit, Ashutosh; +Cc: intel-xe On Tue, Aug 29, 2023 at 10:33:02PM -0700, Dixit, Ashutosh wrote: > On Tue, 29 Aug 2023 22:15:43 -0700, Aravind Iddamsetty wrote: > > > > Hi Aravind, > > > @@ -162,7 +162,7 @@ int xe_force_wake_get(struct xe_force_wake *fw, > > domain->id, ret); > > } > > fw->awake_domains |= woken; > > - mutex_unlock(&fw->lock); > > + spin_unlock(&fw->lock); > > No need to change anything yet, but let's get some more opinion on this: is > it ok to (a) just replace the mutex with a spinlock in these force_wake > functions, or, (b) should we have a second set of functions to be called in > atomic context, say: xe_force_wake_get/put_atomic? So we should use (b) in > atomic contexts and everywhere else we just continue to use the previous > set of non-atomic functions? Or just converting the default set of > functions to use spin lock (as is done in this patch) is ok? It looks okay to me, Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > > Thanks. > -- > Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH 2/3] drm/xe: Use spinlock in forcewake instead of mutex 2023-08-30 20:56 ` Rodrigo Vivi @ 2023-08-30 22:19 ` Dixit, Ashutosh 2023-08-31 4:13 ` Aravind Iddamsetty 0 siblings, 1 reply; 29+ messages in thread From: Dixit, Ashutosh @ 2023-08-30 22:19 UTC (permalink / raw) To: Rodrigo Vivi; +Cc: intel-xe On Wed, 30 Aug 2023 13:56:57 -0700, Rodrigo Vivi wrote: > > On Tue, Aug 29, 2023 at 10:33:02PM -0700, Dixit, Ashutosh wrote: > > On Tue, 29 Aug 2023 22:15:43 -0700, Aravind Iddamsetty wrote: > > > > > > > Hi Aravind, > > > > > @@ -162,7 +162,7 @@ int xe_force_wake_get(struct xe_force_wake *fw, > > > domain->id, ret); > > > } > > > fw->awake_domains |= woken; > > > - mutex_unlock(&fw->lock); > > > + spin_unlock(&fw->lock); > > > > No need to change anything yet, but let's get some more opinion on this: is > > it ok to (a) just replace the mutex with a spinlock in these force_wake > > functions, or, (b) should we have a second set of functions to be called in > > atomic context, say: xe_force_wake_get/put_atomic? So we should use (b) in > > atomic contexts and everywhere else we just continue to use the previous > > set of non-atomic functions? Or just converting the default set of > > functions to use spin lock (as is done in this patch) is ok? > > It looks okay to me, > Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Still thinking about this, maybe some time (not part of this series) we should do a power measurement comparison between mutex and spinlock and see if there's an appreciable difference (unless we already know?). But till we do that, this is fine, so this is also: Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com> ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH 2/3] drm/xe: Use spinlock in forcewake instead of mutex 2023-08-30 22:19 ` Dixit, Ashutosh @ 2023-08-31 4:13 ` Aravind Iddamsetty 0 siblings, 0 replies; 29+ messages in thread From: Aravind Iddamsetty @ 2023-08-31 4:13 UTC (permalink / raw) To: Dixit, Ashutosh, Rodrigo Vivi; +Cc: intel-xe [-- Attachment #1: Type: text/plain, Size: 1464 bytes --] On 31/08/23 03:49, Dixit, Ashutosh wrote: > On Wed, 30 Aug 2023 13:56:57 -0700, Rodrigo Vivi wrote: >> On Tue, Aug 29, 2023 at 10:33:02PM -0700, Dixit, Ashutosh wrote: >>> On Tue, 29 Aug 2023 22:15:43 -0700, Aravind Iddamsetty wrote: >>> Hi Aravind, >>> >>>> @@ -162,7 +162,7 @@ int xe_force_wake_get(struct xe_force_wake *fw, >>>> domain->id, ret); >>>> } >>>> fw->awake_domains |= woken; >>>> - mutex_unlock(&fw->lock); >>>> + spin_unlock(&fw->lock); >>> No need to change anything yet, but let's get some more opinion on this: is >>> it ok to (a) just replace the mutex with a spinlock in these force_wake >>> functions, or, (b) should we have a second set of functions to be called in >>> atomic context, say: xe_force_wake_get/put_atomic? So we should use (b) in >>> atomic contexts and everywhere else we just continue to use the previous >>> set of non-atomic functions? Or just converting the default set of >>> functions to use spin lock (as is done in this patch) is ok? >> It looks okay to me, >> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > Still thinking about this, maybe some time (not part of this series) we > should do a power measurement comparison between mutex and spinlock and see > if there's an appreciable difference (unless we already know?). But till we > do that, this is fine, so this is also: > > Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com> Thanks Rodrigo and Ashutosh for your r-b. Regards, Aravind. [-- Attachment #2: Type: text/html, Size: 2748 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-30 5:15 [Intel-xe] [PATCH v5 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty ` (4 preceding siblings ...) 2023-08-30 5:15 ` [Intel-xe] [PATCH 2/3] drm/xe: Use spinlock in forcewake instead of mutex Aravind Iddamsetty @ 2023-08-30 5:15 ` Aravind Iddamsetty 2023-08-30 20:58 ` Rodrigo Vivi 2023-08-31 4:48 ` Dixit, Ashutosh 2023-08-30 5:19 ` [Intel-xe] ✓ CI.Build: success for drm/xe/pmu: Enable PMU interface (rev5) Patchwork 2023-08-30 5:19 ` [Intel-xe] ✗ CI.Hooks: failure " Patchwork 7 siblings, 2 replies; 29+ messages in thread From: Aravind Iddamsetty @ 2023-08-30 5:15 UTC (permalink / raw) To: intel-xe; +Cc: Bommu Krishnaiah, Tvrtko Ursulin There are a set of engine group busyness counters provided by HW which are perfect fit to be exposed via PMU perf events. BSPEC: 46559, 46560, 46722, 46729, 52071, 71028 events can be listed using: perf list xe_0000_03_00.0/any-engine-group-busy-gt0/ [Kernel PMU event] xe_0000_03_00.0/copy-group-busy-gt0/ [Kernel PMU event] xe_0000_03_00.0/interrupts/ [Kernel PMU event] xe_0000_03_00.0/media-group-busy-gt0/ [Kernel PMU event] xe_0000_03_00.0/render-group-busy-gt0/ [Kernel PMU event] and can be read using: perf stat -e "xe_0000_8c_00.0/render-group-busy-gt0/" -I 1000 time counts unit events 1.001139062 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 2.003294678 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 3.005199582 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 4.007076497 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 5.008553068 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 6.010531563 43520 ns xe_0000_8c_00.0/render-group-busy-gt0/ 7.012468029 44800 ns xe_0000_8c_00.0/render-group-busy-gt0/ 8.013463515 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 9.015300183 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 10.017233010 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ 10.971934120 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ The pmu base implementation is taken from i915. v2: Store last known value when device is awake return that while the GT is suspended and then update the driver copy when read during awake. v3: 1. drop init_samples, as storing counters before going to suspend should be sufficient. 2. ported the "drm/i915/pmu: Make PMU sample array two-dimensional" and dropped helpers to store and read samples. 3. use xe_device_mem_access_get_if_ongoing to check if device is active before reading the OA registers. 4. dropped format attr as no longer needed 5. introduce xe_pmu_suspend to call engine_group_busyness_store 6. few other nits. v4: minor nits. v5: take forcewake when accessing the OAG registers Co-developed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Co-developed-by: Bommu Krishnaiah <krishnaiah.bommu@intel.com> Signed-off-by: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com> --- drivers/gpu/drm/xe/Makefile | 2 + drivers/gpu/drm/xe/regs/xe_gt_regs.h | 5 + drivers/gpu/drm/xe/xe_device.c | 2 + drivers/gpu/drm/xe/xe_device_types.h | 4 + drivers/gpu/drm/xe/xe_gt.c | 2 + drivers/gpu/drm/xe/xe_irq.c | 18 + drivers/gpu/drm/xe/xe_module.c | 5 + drivers/gpu/drm/xe/xe_pmu.c | 679 +++++++++++++++++++++++++++ drivers/gpu/drm/xe/xe_pmu.h | 25 + drivers/gpu/drm/xe/xe_pmu_types.h | 76 +++ include/uapi/drm/xe_drm.h | 16 + 11 files changed, 834 insertions(+) create mode 100644 drivers/gpu/drm/xe/xe_pmu.c create mode 100644 drivers/gpu/drm/xe/xe_pmu.h create mode 100644 drivers/gpu/drm/xe/xe_pmu_types.h diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile index 9d2311f8141f..cc95a46b5e4d 100644 --- a/drivers/gpu/drm/xe/Makefile +++ b/drivers/gpu/drm/xe/Makefile @@ -233,6 +233,8 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \ i915-display/skl_universal_plane.o \ i915-display/skl_watermark.o +xe-$(CONFIG_PERF_EVENTS) += xe_pmu.o + ifeq ($(CONFIG_ACPI),y) xe-$(CONFIG_DRM_XE_DISPLAY) += \ i915-display/intel_acpi.o \ diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h b/drivers/gpu/drm/xe/regs/xe_gt_regs.h index 271ed0cdbe21..e13fbbdf6929 100644 --- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h +++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h @@ -294,6 +294,11 @@ #define INVALIDATION_BROADCAST_MODE_DIS REG_BIT(12) #define GLOBAL_INVALIDATION_MODE REG_BIT(2) +#define XE_OAG_RC0_ANY_ENGINE_BUSY_FREE XE_REG(0xdb80) +#define XE_OAG_ANY_MEDIA_FF_BUSY_FREE XE_REG(0xdba0) +#define XE_OAG_BLT_BUSY_FREE XE_REG(0xdbbc) +#define XE_OAG_RENDER_BUSY_FREE XE_REG(0xdbdc) + #define SAMPLER_MODE XE_REG_MCR(0xe18c, XE_REG_OPTION_MASKED) #define ENABLE_SMALLPL REG_BIT(15) #define SC_DISABLE_POWER_OPTIMIZATION_EBB REG_BIT(9) diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c index 766df07de979..e7178460c924 100644 --- a/drivers/gpu/drm/xe/xe_device.c +++ b/drivers/gpu/drm/xe/xe_device.c @@ -335,6 +335,8 @@ int xe_device_probe(struct xe_device *xe) xe_debugfs_register(xe); + xe_pmu_register(&xe->pmu); + err = drmm_add_action_or_reset(&xe->drm, xe_device_sanitize, xe); if (err) return err; diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h index 750e1f0d3339..a82f28c6a3a0 100644 --- a/drivers/gpu/drm/xe/xe_device_types.h +++ b/drivers/gpu/drm/xe/xe_device_types.h @@ -15,6 +15,7 @@ #include "xe_devcoredump_types.h" #include "xe_gt_types.h" #include "xe_platform_types.h" +#include "xe_pmu.h" #include "xe_step_types.h" #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY) @@ -361,6 +362,9 @@ struct xe_device { */ struct task_struct *pm_callback_task; + /** @pmu: performance monitoring unit */ + struct xe_pmu pmu; + /* private: */ #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY) diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c index 3d6a7c11bac1..ded798f54b41 100644 --- a/drivers/gpu/drm/xe/xe_gt.c +++ b/drivers/gpu/drm/xe/xe_gt.c @@ -620,6 +620,8 @@ int xe_gt_suspend(struct xe_gt *gt) if (err) goto err_msg; + xe_pmu_suspend(gt); + err = xe_uc_suspend(>->uc); if (err) goto err_force_wake; diff --git a/drivers/gpu/drm/xe/xe_irq.c b/drivers/gpu/drm/xe/xe_irq.c index 1dee3e832eb5..0a307274ba74 100644 --- a/drivers/gpu/drm/xe/xe_irq.c +++ b/drivers/gpu/drm/xe/xe_irq.c @@ -27,6 +27,20 @@ #define IIR(offset) XE_REG(offset + 0x8) #define IER(offset) XE_REG(offset + 0xc) +/* + * Interrupt statistic for PMU. Increments the counter only if the + * interrupt originated from the GPU so interrupts from a device which + * shares the interrupt line are not accounted. + */ +static __always_inline void xe_pmu_irq_stats(struct xe_device *xe) +{ + /* + * A clever compiler translates that into INC. A not so clever one + * should at least prevent store tearing. + */ + WRITE_ONCE(xe->pmu.irq_count, xe->pmu.irq_count + 1); +} + static void assert_iir_is_zero(struct xe_gt *mmio, struct xe_reg reg) { u32 val = xe_mmio_read32(mmio, reg); @@ -337,6 +351,8 @@ static irqreturn_t xelp_irq_handler(int irq, void *arg) xe_display_irq_enable(xe, gu_misc_iir); + xe_pmu_irq_stats(xe); + return IRQ_HANDLED; } @@ -433,6 +449,8 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg) dg1_intr_enable(xe, false); xe_display_irq_enable(xe, gu_misc_iir); + xe_pmu_irq_stats(xe); + return IRQ_HANDLED; } diff --git a/drivers/gpu/drm/xe/xe_module.c b/drivers/gpu/drm/xe/xe_module.c index de85494e2280..86557e8f89a1 100644 --- a/drivers/gpu/drm/xe/xe_module.c +++ b/drivers/gpu/drm/xe/xe_module.c @@ -12,6 +12,7 @@ #include "xe_hw_fence.h" #include "xe_module.h" #include "xe_pci.h" +#include "xe_pmu.h" #include "xe_sched_job.h" bool force_execlist = false; @@ -49,6 +50,10 @@ static const struct init_funcs init_funcs[] = { .init = xe_sched_job_module_init, .exit = xe_sched_job_module_exit, }, + { + .init = xe_pmu_init, + .exit = xe_pmu_exit, + }, { .init = xe_register_pci_driver, .exit = xe_unregister_pci_driver, diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c new file mode 100644 index 000000000000..41dd422812ff --- /dev/null +++ b/drivers/gpu/drm/xe/xe_pmu.c @@ -0,0 +1,679 @@ +// SPDX-License-Identifier: MIT +/* + * Copyright © 2023 Intel Corporation + */ + +#include <drm/drm_drv.h> +#include <drm/drm_managed.h> +#include <drm/xe_drm.h> + +#include "regs/xe_gt_regs.h" +#include "xe_device.h" +#include "xe_gt_clock.h" +#include "xe_mmio.h" + +static cpumask_t xe_pmu_cpumask; +static unsigned int xe_pmu_target_cpu = -1; + +static unsigned int config_gt_id(const u64 config) +{ + return config >> __XE_PMU_GT_SHIFT; +} + +static u64 config_counter(const u64 config) +{ + return config & ~(~0ULL << __XE_PMU_GT_SHIFT); +} + +static int engine_busyness_sample_type(u64 config) +{ + int type = 0; + + switch (config) { + case XE_PMU_RENDER_GROUP_BUSY(0): + type = __XE_SAMPLE_RENDER_GROUP_BUSY; + break; + case XE_PMU_COPY_GROUP_BUSY(0): + type = __XE_SAMPLE_COPY_GROUP_BUSY; + break; + case XE_PMU_MEDIA_GROUP_BUSY(0): + type = __XE_SAMPLE_MEDIA_GROUP_BUSY; + break; + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): + type = __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; + break; + } + + return type; +} + +static void xe_pmu_event_destroy(struct perf_event *event) +{ + struct xe_device *xe = + container_of(event->pmu, typeof(*xe), pmu.base); + + drm_WARN_ON(&xe->drm, event->parent); + + drm_dev_put(&xe->drm); +} + +static u64 __engine_group_busyness_read(struct xe_gt *gt, int sample_type) +{ + u64 val = 0; + + switch (sample_type) { + case __XE_SAMPLE_RENDER_GROUP_BUSY: + val = xe_mmio_read32(gt, XE_OAG_RENDER_BUSY_FREE); + break; + case __XE_SAMPLE_COPY_GROUP_BUSY: + val = xe_mmio_read32(gt, XE_OAG_BLT_BUSY_FREE); + break; + case __XE_SAMPLE_MEDIA_GROUP_BUSY: + val = xe_mmio_read32(gt, XE_OAG_ANY_MEDIA_FF_BUSY_FREE); + break; + case __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY: + val = xe_mmio_read32(gt, XE_OAG_RC0_ANY_ENGINE_BUSY_FREE); + break; + default: + drm_warn(>->tile->xe->drm, "unknown pmu event\n"); + } + + return xe_gt_clock_cycles_to_ns(gt, val * 16); +} + +static u64 engine_group_busyness_read(struct xe_gt *gt, u64 config) +{ + int sample_type = engine_busyness_sample_type(config); + const unsigned int gt_id = gt->info.id; + struct xe_device *xe = gt->tile->xe; + struct xe_pmu *pmu = &xe->pmu; + unsigned long flags; + bool device_awake; + u64 val; + + device_awake = xe_device_mem_access_get_if_ongoing(xe); + if (device_awake) { + XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT)); + val = __engine_group_busyness_read(gt, sample_type); + XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT)); + xe_device_mem_access_put(xe); + } + + spin_lock_irqsave(&pmu->lock, flags); + + if (device_awake) + pmu->sample[gt_id][sample_type] = val; + else + val = pmu->sample[gt_id][sample_type]; + + spin_unlock_irqrestore(&pmu->lock, flags); + + return val; +} + +static void engine_group_busyness_store(struct xe_gt *gt) +{ + struct xe_pmu *pmu = >->tile->xe->pmu; + unsigned int gt_id = gt->info.id; + unsigned long flags; + int i; + + spin_lock_irqsave(&pmu->lock, flags); + + for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { + pmu->sample[gt_id][i] = __engine_group_busyness_read(gt, i); + } + + spin_unlock_irqrestore(&pmu->lock, flags); +} + +static int +config_status(struct xe_device *xe, u64 config) +{ + unsigned int max_gt_id = xe->info.gt_count > 1 ? 1 : 0; + unsigned int gt_id = config_gt_id(config); + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); + + if (gt_id > max_gt_id) + return -ENOENT; + + switch (config_counter(config)) { + case XE_PMU_INTERRUPTS(0): + if (gt_id) + return -ENOENT; + break; + case XE_PMU_RENDER_GROUP_BUSY(0): + case XE_PMU_COPY_GROUP_BUSY(0): + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): + if (gt->info.type == XE_GT_TYPE_MEDIA) + return -ENOENT; + break; + case XE_PMU_MEDIA_GROUP_BUSY(0): + if (!(gt->info.engine_mask & (BIT(XE_HW_ENGINE_VCS0) | BIT(XE_HW_ENGINE_VECS0)))) + return -ENOENT; + break; + default: + return -ENOENT; + } + + return 0; +} + +static int xe_pmu_event_init(struct perf_event *event) +{ + struct xe_device *xe = + container_of(event->pmu, typeof(*xe), pmu.base); + struct xe_pmu *pmu = &xe->pmu; + int ret; + + if (pmu->closed) + return -ENODEV; + + if (event->attr.type != event->pmu->type) + return -ENOENT; + + /* unsupported modes and filters */ + if (event->attr.sample_period) /* no sampling */ + return -EINVAL; + + if (has_branch_stack(event)) + return -EOPNOTSUPP; + + if (event->cpu < 0) + return -EINVAL; + + /* only allow running on one cpu at a time */ + if (!cpumask_test_cpu(event->cpu, &xe_pmu_cpumask)) + return -EINVAL; + + ret = config_status(xe, event->attr.config); + if (ret) + return ret; + + if (!event->parent) { + drm_dev_get(&xe->drm); + event->destroy = xe_pmu_event_destroy; + } + + return 0; +} + +static u64 __xe_pmu_event_read(struct perf_event *event) +{ + struct xe_device *xe = + container_of(event->pmu, typeof(*xe), pmu.base); + const unsigned int gt_id = config_gt_id(event->attr.config); + const u64 config = config_counter(event->attr.config); + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); + struct xe_pmu *pmu = &xe->pmu; + u64 val = 0; + + switch (config) { + case XE_PMU_INTERRUPTS(0): + val = READ_ONCE(pmu->irq_count); + break; + case XE_PMU_RENDER_GROUP_BUSY(0): + case XE_PMU_COPY_GROUP_BUSY(0): + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): + case XE_PMU_MEDIA_GROUP_BUSY(0): + val = engine_group_busyness_read(gt, config); + } + + return val; +} + +static void xe_pmu_event_read(struct perf_event *event) +{ + struct xe_device *xe = + container_of(event->pmu, typeof(*xe), pmu.base); + struct hw_perf_event *hwc = &event->hw; + struct xe_pmu *pmu = &xe->pmu; + u64 prev, new; + + if (pmu->closed) { + event->hw.state = PERF_HES_STOPPED; + return; + } +again: + prev = local64_read(&hwc->prev_count); + new = __xe_pmu_event_read(event); + + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) + goto again; + + local64_add(new - prev, &event->count); +} + +static void xe_pmu_enable(struct perf_event *event) +{ + /* + * Store the current counter value so we can report the correct delta + * for all listeners. Even when the event was already enabled and has + * an existing non-zero value. + */ + local64_set(&event->hw.prev_count, __xe_pmu_event_read(event)); +} + +static void xe_pmu_event_start(struct perf_event *event, int flags) +{ + struct xe_device *xe = + container_of(event->pmu, typeof(*xe), pmu.base); + struct xe_pmu *pmu = &xe->pmu; + + if (pmu->closed) + return; + + xe_pmu_enable(event); + event->hw.state = 0; +} + +static void xe_pmu_event_stop(struct perf_event *event, int flags) +{ + if (flags & PERF_EF_UPDATE) + xe_pmu_event_read(event); + + event->hw.state = PERF_HES_STOPPED; +} + +static int xe_pmu_event_add(struct perf_event *event, int flags) +{ + struct xe_device *xe = + container_of(event->pmu, typeof(*xe), pmu.base); + struct xe_pmu *pmu = &xe->pmu; + + if (pmu->closed) + return -ENODEV; + + if (flags & PERF_EF_START) + xe_pmu_event_start(event, flags); + + return 0; +} + +static void xe_pmu_event_del(struct perf_event *event, int flags) +{ + xe_pmu_event_stop(event, PERF_EF_UPDATE); +} + +static int xe_pmu_event_event_idx(struct perf_event *event) +{ + return 0; +} + +struct xe_ext_attribute { + struct device_attribute attr; + unsigned long val; +}; + +static ssize_t xe_pmu_event_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct xe_ext_attribute *eattr; + + eattr = container_of(attr, struct xe_ext_attribute, attr); + return sprintf(buf, "config=0x%lx\n", eattr->val); +} + +static ssize_t cpumask_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return cpumap_print_to_pagebuf(true, buf, &xe_pmu_cpumask); +} + +static DEVICE_ATTR_RO(cpumask); + +static struct attribute *xe_cpumask_attrs[] = { + &dev_attr_cpumask.attr, + NULL, +}; + +static const struct attribute_group xe_pmu_cpumask_attr_group = { + .attrs = xe_cpumask_attrs, +}; + +#define __event(__counter, __name, __unit) \ +{ \ + .counter = (__counter), \ + .name = (__name), \ + .unit = (__unit), \ + .global = false, \ +} + +#define __global_event(__counter, __name, __unit) \ +{ \ + .counter = (__counter), \ + .name = (__name), \ + .unit = (__unit), \ + .global = true, \ +} + +static struct xe_ext_attribute * +add_xe_attr(struct xe_ext_attribute *attr, const char *name, u64 config) +{ + sysfs_attr_init(&attr->attr.attr); + attr->attr.attr.name = name; + attr->attr.attr.mode = 0444; + attr->attr.show = xe_pmu_event_show; + attr->val = config; + + return ++attr; +} + +static struct perf_pmu_events_attr * +add_pmu_attr(struct perf_pmu_events_attr *attr, const char *name, + const char *str) +{ + sysfs_attr_init(&attr->attr.attr); + attr->attr.attr.name = name; + attr->attr.attr.mode = 0444; + attr->attr.show = perf_event_sysfs_show; + attr->event_str = str; + + return ++attr; +} + +static struct attribute ** +create_event_attributes(struct xe_pmu *pmu) +{ + struct xe_device *xe = container_of(pmu, typeof(*xe), pmu); + static const struct { + unsigned int counter; + const char *name; + const char *unit; + bool global; + } events[] = { + __global_event(0, "interrupts", NULL), + __event(1, "render-group-busy", "ns"), + __event(2, "copy-group-busy", "ns"), + __event(3, "media-group-busy", "ns"), + __event(4, "any-engine-group-busy", "ns"), + }; + + struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter; + struct xe_ext_attribute *xe_attr = NULL, *xe_iter; + struct attribute **attr = NULL, **attr_iter; + unsigned int count = 0; + unsigned int i, j; + struct xe_gt *gt; + + /* Count how many counters we will be exposing. */ + for_each_gt(gt, xe, j) { + for (i = 0; i < ARRAY_SIZE(events); i++) { + u64 config = ___XE_PMU_OTHER(j, events[i].counter); + + if (!config_status(xe, config)) + count++; + } + } + + /* Allocate attribute objects and table. */ + xe_attr = kcalloc(count, sizeof(*xe_attr), GFP_KERNEL); + if (!xe_attr) + goto err_alloc; + + pmu_attr = kcalloc(count, sizeof(*pmu_attr), GFP_KERNEL); + if (!pmu_attr) + goto err_alloc; + + /* Max one pointer of each attribute type plus a termination entry. */ + attr = kcalloc(count * 2 + 1, sizeof(*attr), GFP_KERNEL); + if (!attr) + goto err_alloc; + + xe_iter = xe_attr; + pmu_iter = pmu_attr; + attr_iter = attr; + + for_each_gt(gt, xe, j) { + for (i = 0; i < ARRAY_SIZE(events); i++) { + u64 config = ___XE_PMU_OTHER(j, events[i].counter); + char *str; + + if (config_status(xe, config)) + continue; + + if (events[i].global) + str = kstrdup(events[i].name, GFP_KERNEL); + else + str = kasprintf(GFP_KERNEL, "%s-gt%u", + events[i].name, j); + if (!str) + goto err; + + *attr_iter++ = &xe_iter->attr.attr; + xe_iter = add_xe_attr(xe_iter, str, config); + + if (events[i].unit) { + if (events[i].global) + str = kasprintf(GFP_KERNEL, "%s.unit", + events[i].name); + else + str = kasprintf(GFP_KERNEL, "%s-gt%u.unit", + events[i].name, j); + if (!str) + goto err; + + *attr_iter++ = &pmu_iter->attr.attr; + pmu_iter = add_pmu_attr(pmu_iter, str, + events[i].unit); + } + } + } + + pmu->xe_attr = xe_attr; + pmu->pmu_attr = pmu_attr; + + return attr; + +err: + for (attr_iter = attr; *attr_iter; attr_iter++) + kfree((*attr_iter)->name); + +err_alloc: + kfree(attr); + kfree(xe_attr); + kfree(pmu_attr); + + return NULL; +} + +static void free_event_attributes(struct xe_pmu *pmu) +{ + struct attribute **attr_iter = pmu->events_attr_group.attrs; + + for (; *attr_iter; attr_iter++) + kfree((*attr_iter)->name); + + kfree(pmu->events_attr_group.attrs); + kfree(pmu->xe_attr); + kfree(pmu->pmu_attr); + + pmu->events_attr_group.attrs = NULL; + pmu->xe_attr = NULL; + pmu->pmu_attr = NULL; +} + +static int xe_pmu_cpu_online(unsigned int cpu, struct hlist_node *node) +{ + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); + + BUG_ON(!pmu->base.event_init); + + /* Select the first online CPU as a designated reader. */ + if (cpumask_empty(&xe_pmu_cpumask)) + cpumask_set_cpu(cpu, &xe_pmu_cpumask); + + return 0; +} + +static int xe_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node) +{ + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); + unsigned int target = xe_pmu_target_cpu; + + BUG_ON(!pmu->base.event_init); + + /* + * Unregistering an instance generates a CPU offline event which we must + * ignore to avoid incorrectly modifying the shared xe_pmu_cpumask. + */ + if (pmu->closed) + return 0; + + if (cpumask_test_and_clear_cpu(cpu, &xe_pmu_cpumask)) { + target = cpumask_any_but(topology_sibling_cpumask(cpu), cpu); + + /* Migrate events if there is a valid target */ + if (target < nr_cpu_ids) { + cpumask_set_cpu(target, &xe_pmu_cpumask); + xe_pmu_target_cpu = target; + } + } + + if (target < nr_cpu_ids && target != pmu->cpuhp.cpu) { + perf_pmu_migrate_context(&pmu->base, cpu, target); + pmu->cpuhp.cpu = target; + } + + return 0; +} + +static enum cpuhp_state cpuhp_slot = CPUHP_INVALID; + +int xe_pmu_init(void) +{ + int ret; + + ret = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN, + "perf/x86/intel/xe:online", + xe_pmu_cpu_online, + xe_pmu_cpu_offline); + if (ret < 0) + pr_notice("Failed to setup cpuhp state for xe PMU! (%d)\n", + ret); + else + cpuhp_slot = ret; + + return 0; +} + +void xe_pmu_exit(void) +{ + if (cpuhp_slot != CPUHP_INVALID) + cpuhp_remove_multi_state(cpuhp_slot); +} + +static int xe_pmu_register_cpuhp_state(struct xe_pmu *pmu) +{ + if (cpuhp_slot == CPUHP_INVALID) + return -EINVAL; + + return cpuhp_state_add_instance(cpuhp_slot, &pmu->cpuhp.node); +} + +static void xe_pmu_unregister_cpuhp_state(struct xe_pmu *pmu) +{ + cpuhp_state_remove_instance(cpuhp_slot, &pmu->cpuhp.node); +} + +void xe_pmu_suspend(struct xe_gt *gt) +{ + engine_group_busyness_store(gt); +} + +static void xe_pmu_unregister(struct drm_device *device, void *arg) +{ + struct xe_pmu *pmu = arg; + + if (!pmu->base.event_init) + return; + + /* + * "Disconnect" the PMU callbacks - since all are atomic synchronize_rcu + * ensures all currently executing ones will have exited before we + * proceed with unregistration. + */ + pmu->closed = true; + synchronize_rcu(); + + xe_pmu_unregister_cpuhp_state(pmu); + + perf_pmu_unregister(&pmu->base); + pmu->base.event_init = NULL; + kfree(pmu->base.attr_groups); + kfree(pmu->name); + free_event_attributes(pmu); +} + +void xe_pmu_register(struct xe_pmu *pmu) +{ + struct xe_device *xe = container_of(pmu, typeof(*xe), pmu); + const struct attribute_group *attr_groups[] = { + &pmu->events_attr_group, + &xe_pmu_cpumask_attr_group, + NULL + }; + + int ret = -ENOMEM; + + spin_lock_init(&pmu->lock); + pmu->cpuhp.cpu = -1; + + pmu->name = kasprintf(GFP_KERNEL, + "xe_%s", + dev_name(xe->drm.dev)); + if (pmu->name) + /* tools/perf reserves colons as special. */ + strreplace((char *)pmu->name, ':', '_'); + + if (!pmu->name) + goto err; + + pmu->events_attr_group.name = "events"; + pmu->events_attr_group.attrs = create_event_attributes(pmu); + if (!pmu->events_attr_group.attrs) + goto err_name; + + pmu->base.attr_groups = kmemdup(attr_groups, sizeof(attr_groups), + GFP_KERNEL); + if (!pmu->base.attr_groups) + goto err_attr; + + pmu->base.module = THIS_MODULE; + pmu->base.task_ctx_nr = perf_invalid_context; + pmu->base.event_init = xe_pmu_event_init; + pmu->base.add = xe_pmu_event_add; + pmu->base.del = xe_pmu_event_del; + pmu->base.start = xe_pmu_event_start; + pmu->base.stop = xe_pmu_event_stop; + pmu->base.read = xe_pmu_event_read; + pmu->base.event_idx = xe_pmu_event_event_idx; + + ret = perf_pmu_register(&pmu->base, pmu->name, -1); + if (ret) + goto err_groups; + + ret = xe_pmu_register_cpuhp_state(pmu); + if (ret) + goto err_unreg; + + ret = drmm_add_action_or_reset(&xe->drm, xe_pmu_unregister, pmu); + if (ret) + goto err_cpuhp; + + return; + +err_cpuhp: + xe_pmu_unregister_cpuhp_state(pmu); +err_unreg: + perf_pmu_unregister(&pmu->base); +err_groups: + kfree(pmu->base.attr_groups); +err_attr: + pmu->base.event_init = NULL; + free_event_attributes(pmu); +err_name: + kfree(pmu->name); +err: + drm_notice(&xe->drm, "Failed to register PMU!\n"); +} diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h new file mode 100644 index 000000000000..a99d4ddd023e --- /dev/null +++ b/drivers/gpu/drm/xe/xe_pmu.h @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2023 Intel Corporation + */ + +#ifndef _XE_PMU_H_ +#define _XE_PMU_H_ + +#include "xe_gt_types.h" +#include "xe_pmu_types.h" + +#if IS_ENABLED(CONFIG_PERF_EVENTS) +int xe_pmu_init(void); +void xe_pmu_exit(void); +void xe_pmu_register(struct xe_pmu *pmu); +void xe_pmu_suspend(struct xe_gt *gt); +#else +static inline int xe_pmu_init(void) { return 0; } +static inline void xe_pmu_exit(void) {} +static inline void xe_pmu_register(struct xe_pmu *pmu) {} +static inline void xe_pmu_suspend(struct xe_gt *gt) {} +#endif + +#endif + diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h new file mode 100644 index 000000000000..4ccc7e9042f6 --- /dev/null +++ b/drivers/gpu/drm/xe/xe_pmu_types.h @@ -0,0 +1,76 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright © 2023 Intel Corporation + */ + +#ifndef _XE_PMU_TYPES_H_ +#define _XE_PMU_TYPES_H_ + +#include <linux/perf_event.h> +#include <linux/spinlock_types.h> +#include <uapi/drm/xe_drm.h> + +enum { + __XE_SAMPLE_RENDER_GROUP_BUSY, + __XE_SAMPLE_COPY_GROUP_BUSY, + __XE_SAMPLE_MEDIA_GROUP_BUSY, + __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY, + __XE_NUM_PMU_SAMPLERS +}; + +#define XE_PMU_MAX_GT 2 + +struct xe_pmu { + /** + * @cpuhp: Struct used for CPU hotplug handling. + */ + struct { + struct hlist_node node; + unsigned int cpu; + } cpuhp; + /** + * @base: PMU base. + */ + struct pmu base; + /** + * @closed: xe is unregistering. + */ + bool closed; + /** + * @name: Name as registered with perf core. + */ + const char *name; + /** + * @lock: Lock protecting enable mask and ref count handling. + */ + spinlock_t lock; + /** + * @sample: Current and previous (raw) counters. + * + * These counters are updated when the device is awake. + * + */ + u64 sample[XE_PMU_MAX_GT][__XE_NUM_PMU_SAMPLERS]; + /** + * @irq_count: Number of interrupts + * + * Intentionally unsigned long to avoid atomics or heuristics on 32bit. + * 4e9 interrupts are a lot and postprocessing can really deal with an + * occasional wraparound easily. It's 32bit after all. + */ + unsigned long irq_count; + /** + * @events_attr_group: Device events attribute group. + */ + struct attribute_group events_attr_group; + /** + * @xe_attr: Memory block holding device attributes. + */ + void *xe_attr; + /** + * @pmu_attr: Memory block holding device attributes. + */ + void *pmu_attr; +}; + +#endif diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h index 86f16d50e9cc..75c9a7fe3490 100644 --- a/include/uapi/drm/xe_drm.h +++ b/include/uapi/drm/xe_drm.h @@ -1056,6 +1056,22 @@ struct drm_xe_vm_madvise { __u64 reserved[2]; }; +/* PMU event config IDs */ + +/* + * Top bits of every counter are GT id. + */ +#define __XE_PMU_GT_SHIFT (56) + +#define ___XE_PMU_OTHER(gt, x) \ + (((__u64)(x)) | ((__u64)(gt) << __XE_PMU_GT_SHIFT)) + +#define XE_PMU_INTERRUPTS(gt) ___XE_PMU_OTHER(gt, 0) +#define XE_PMU_RENDER_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 1) +#define XE_PMU_COPY_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 2) +#define XE_PMU_MEDIA_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 3) +#define XE_PMU_ANY_ENGINE_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 4) + #if defined(__cplusplus) } #endif -- 2.25.1 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-30 5:15 ` [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty @ 2023-08-30 20:58 ` Rodrigo Vivi 2023-08-31 20:45 ` Dixit, Ashutosh 2023-08-31 4:48 ` Dixit, Ashutosh 1 sibling, 1 reply; 29+ messages in thread From: Rodrigo Vivi @ 2023-08-30 20:58 UTC (permalink / raw) To: Aravind Iddamsetty; +Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On Wed, Aug 30, 2023 at 10:45:44AM +0530, Aravind Iddamsetty wrote: > There are a set of engine group busyness counters provided by HW which are > perfect fit to be exposed via PMU perf events. > > BSPEC: 46559, 46560, 46722, 46729, 52071, 71028 > > events can be listed using: > perf list > xe_0000_03_00.0/any-engine-group-busy-gt0/ [Kernel PMU event] > xe_0000_03_00.0/copy-group-busy-gt0/ [Kernel PMU event] > xe_0000_03_00.0/interrupts/ [Kernel PMU event] > xe_0000_03_00.0/media-group-busy-gt0/ [Kernel PMU event] > xe_0000_03_00.0/render-group-busy-gt0/ [Kernel PMU event] > > and can be read using: > > perf stat -e "xe_0000_8c_00.0/render-group-busy-gt0/" -I 1000 > time counts unit events > 1.001139062 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ > 2.003294678 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ > 3.005199582 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ > 4.007076497 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ > 5.008553068 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ > 6.010531563 43520 ns xe_0000_8c_00.0/render-group-busy-gt0/ > 7.012468029 44800 ns xe_0000_8c_00.0/render-group-busy-gt0/ > 8.013463515 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ > 9.015300183 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ > 10.017233010 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ > 10.971934120 0 ns xe_0000_8c_00.0/render-group-busy-gt0/ > > The pmu base implementation is taken from i915. > > v2: > Store last known value when device is awake return that while the GT is > suspended and then update the driver copy when read during awake. > > v3: > 1. drop init_samples, as storing counters before going to suspend should > be sufficient. > 2. ported the "drm/i915/pmu: Make PMU sample array two-dimensional" and > dropped helpers to store and read samples. > 3. use xe_device_mem_access_get_if_ongoing to check if device is active > before reading the OA registers. > 4. dropped format attr as no longer needed > 5. introduce xe_pmu_suspend to call engine_group_busyness_store > 6. few other nits. > > v4: minor nits. > > v5: take forcewake when accessing the OAG registers > > Co-developed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Co-developed-by: Bommu Krishnaiah <krishnaiah.bommu@intel.com> > Signed-off-by: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com> > --- > drivers/gpu/drm/xe/Makefile | 2 + > drivers/gpu/drm/xe/regs/xe_gt_regs.h | 5 + > drivers/gpu/drm/xe/xe_device.c | 2 + > drivers/gpu/drm/xe/xe_device_types.h | 4 + > drivers/gpu/drm/xe/xe_gt.c | 2 + > drivers/gpu/drm/xe/xe_irq.c | 18 + > drivers/gpu/drm/xe/xe_module.c | 5 + > drivers/gpu/drm/xe/xe_pmu.c | 679 +++++++++++++++++++++++++++ > drivers/gpu/drm/xe/xe_pmu.h | 25 + > drivers/gpu/drm/xe/xe_pmu_types.h | 76 +++ > include/uapi/drm/xe_drm.h | 16 + > 11 files changed, 834 insertions(+) > create mode 100644 drivers/gpu/drm/xe/xe_pmu.c > create mode 100644 drivers/gpu/drm/xe/xe_pmu.h > create mode 100644 drivers/gpu/drm/xe/xe_pmu_types.h > > diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile > index 9d2311f8141f..cc95a46b5e4d 100644 > --- a/drivers/gpu/drm/xe/Makefile > +++ b/drivers/gpu/drm/xe/Makefile > @@ -233,6 +233,8 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \ > i915-display/skl_universal_plane.o \ > i915-display/skl_watermark.o > > +xe-$(CONFIG_PERF_EVENTS) += xe_pmu.o > + > ifeq ($(CONFIG_ACPI),y) > xe-$(CONFIG_DRM_XE_DISPLAY) += \ > i915-display/intel_acpi.o \ > diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h b/drivers/gpu/drm/xe/regs/xe_gt_regs.h > index 271ed0cdbe21..e13fbbdf6929 100644 > --- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h > +++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h > @@ -294,6 +294,11 @@ > #define INVALIDATION_BROADCAST_MODE_DIS REG_BIT(12) > #define GLOBAL_INVALIDATION_MODE REG_BIT(2) > > +#define XE_OAG_RC0_ANY_ENGINE_BUSY_FREE XE_REG(0xdb80) > +#define XE_OAG_ANY_MEDIA_FF_BUSY_FREE XE_REG(0xdba0) > +#define XE_OAG_BLT_BUSY_FREE XE_REG(0xdbbc) > +#define XE_OAG_RENDER_BUSY_FREE XE_REG(0xdbdc) > + > #define SAMPLER_MODE XE_REG_MCR(0xe18c, XE_REG_OPTION_MASKED) > #define ENABLE_SMALLPL REG_BIT(15) > #define SC_DISABLE_POWER_OPTIMIZATION_EBB REG_BIT(9) > diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c > index 766df07de979..e7178460c924 100644 > --- a/drivers/gpu/drm/xe/xe_device.c > +++ b/drivers/gpu/drm/xe/xe_device.c > @@ -335,6 +335,8 @@ int xe_device_probe(struct xe_device *xe) > > xe_debugfs_register(xe); > > + xe_pmu_register(&xe->pmu); > + > err = drmm_add_action_or_reset(&xe->drm, xe_device_sanitize, xe); > if (err) > return err; > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h > index 750e1f0d3339..a82f28c6a3a0 100644 > --- a/drivers/gpu/drm/xe/xe_device_types.h > +++ b/drivers/gpu/drm/xe/xe_device_types.h > @@ -15,6 +15,7 @@ > #include "xe_devcoredump_types.h" > #include "xe_gt_types.h" > #include "xe_platform_types.h" > +#include "xe_pmu.h" > #include "xe_step_types.h" > > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY) > @@ -361,6 +362,9 @@ struct xe_device { > */ > struct task_struct *pm_callback_task; > > + /** @pmu: performance monitoring unit */ > + struct xe_pmu pmu; > + > /* private: */ > > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY) > diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c > index 3d6a7c11bac1..ded798f54b41 100644 > --- a/drivers/gpu/drm/xe/xe_gt.c > +++ b/drivers/gpu/drm/xe/xe_gt.c > @@ -620,6 +620,8 @@ int xe_gt_suspend(struct xe_gt *gt) > if (err) > goto err_msg; > > + xe_pmu_suspend(gt); > + > err = xe_uc_suspend(>->uc); > if (err) > goto err_force_wake; > diff --git a/drivers/gpu/drm/xe/xe_irq.c b/drivers/gpu/drm/xe/xe_irq.c > index 1dee3e832eb5..0a307274ba74 100644 > --- a/drivers/gpu/drm/xe/xe_irq.c > +++ b/drivers/gpu/drm/xe/xe_irq.c > @@ -27,6 +27,20 @@ > #define IIR(offset) XE_REG(offset + 0x8) > #define IER(offset) XE_REG(offset + 0xc) > > +/* > + * Interrupt statistic for PMU. Increments the counter only if the > + * interrupt originated from the GPU so interrupts from a device which > + * shares the interrupt line are not accounted. > + */ > +static __always_inline void xe_pmu_irq_stats(struct xe_device *xe) > +{ > + /* > + * A clever compiler translates that into INC. A not so clever one > + * should at least prevent store tearing. > + */ > + WRITE_ONCE(xe->pmu.irq_count, xe->pmu.irq_count + 1); > +} > + > static void assert_iir_is_zero(struct xe_gt *mmio, struct xe_reg reg) > { > u32 val = xe_mmio_read32(mmio, reg); > @@ -337,6 +351,8 @@ static irqreturn_t xelp_irq_handler(int irq, void *arg) > > xe_display_irq_enable(xe, gu_misc_iir); > > + xe_pmu_irq_stats(xe); > + > return IRQ_HANDLED; > } > > @@ -433,6 +449,8 @@ static irqreturn_t dg1_irq_handler(int irq, void *arg) > dg1_intr_enable(xe, false); > xe_display_irq_enable(xe, gu_misc_iir); > > + xe_pmu_irq_stats(xe); > + > return IRQ_HANDLED; > } > > diff --git a/drivers/gpu/drm/xe/xe_module.c b/drivers/gpu/drm/xe/xe_module.c > index de85494e2280..86557e8f89a1 100644 > --- a/drivers/gpu/drm/xe/xe_module.c > +++ b/drivers/gpu/drm/xe/xe_module.c > @@ -12,6 +12,7 @@ > #include "xe_hw_fence.h" > #include "xe_module.h" > #include "xe_pci.h" > +#include "xe_pmu.h" > #include "xe_sched_job.h" > > bool force_execlist = false; > @@ -49,6 +50,10 @@ static const struct init_funcs init_funcs[] = { > .init = xe_sched_job_module_init, > .exit = xe_sched_job_module_exit, > }, > + { > + .init = xe_pmu_init, > + .exit = xe_pmu_exit, > + }, > { > .init = xe_register_pci_driver, > .exit = xe_unregister_pci_driver, > diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c > new file mode 100644 > index 000000000000..41dd422812ff > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_pmu.c > @@ -0,0 +1,679 @@ > +// SPDX-License-Identifier: MIT > +/* > + * Copyright © 2023 Intel Corporation > + */ > + > +#include <drm/drm_drv.h> > +#include <drm/drm_managed.h> > +#include <drm/xe_drm.h> > + > +#include "regs/xe_gt_regs.h" > +#include "xe_device.h" > +#include "xe_gt_clock.h" > +#include "xe_mmio.h" > + > +static cpumask_t xe_pmu_cpumask; > +static unsigned int xe_pmu_target_cpu = -1; > + > +static unsigned int config_gt_id(const u64 config) > +{ > + return config >> __XE_PMU_GT_SHIFT; > +} > + > +static u64 config_counter(const u64 config) > +{ > + return config & ~(~0ULL << __XE_PMU_GT_SHIFT); > +} > + > +static int engine_busyness_sample_type(u64 config) > +{ > + int type = 0; > + > + switch (config) { > + case XE_PMU_RENDER_GROUP_BUSY(0): > + type = __XE_SAMPLE_RENDER_GROUP_BUSY; > + break; > + case XE_PMU_COPY_GROUP_BUSY(0): > + type = __XE_SAMPLE_COPY_GROUP_BUSY; > + break; > + case XE_PMU_MEDIA_GROUP_BUSY(0): > + type = __XE_SAMPLE_MEDIA_GROUP_BUSY; > + break; > + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): > + type = __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; > + break; > + } > + > + return type; > +} > + > +static void xe_pmu_event_destroy(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + > + drm_WARN_ON(&xe->drm, event->parent); > + > + drm_dev_put(&xe->drm); > +} > + > +static u64 __engine_group_busyness_read(struct xe_gt *gt, int sample_type) > +{ > + u64 val = 0; > + > + switch (sample_type) { > + case __XE_SAMPLE_RENDER_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_RENDER_BUSY_FREE); > + break; > + case __XE_SAMPLE_COPY_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_BLT_BUSY_FREE); > + break; > + case __XE_SAMPLE_MEDIA_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_ANY_MEDIA_FF_BUSY_FREE); > + break; > + case __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_RC0_ANY_ENGINE_BUSY_FREE); > + break; > + default: > + drm_warn(>->tile->xe->drm, "unknown pmu event\n"); > + } > + > + return xe_gt_clock_cycles_to_ns(gt, val * 16); > +} > + > +static u64 engine_group_busyness_read(struct xe_gt *gt, u64 config) > +{ > + int sample_type = engine_busyness_sample_type(config); > + const unsigned int gt_id = gt->info.id; > + struct xe_device *xe = gt->tile->xe; > + struct xe_pmu *pmu = &xe->pmu; > + unsigned long flags; > + bool device_awake; > + u64 val; > + > + device_awake = xe_device_mem_access_get_if_ongoing(xe); > + if (device_awake) { > + XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT)); > + val = __engine_group_busyness_read(gt, sample_type); > + XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT)); > + xe_device_mem_access_put(xe); > + } > + > + spin_lock_irqsave(&pmu->lock, flags); > + > + if (device_awake) > + pmu->sample[gt_id][sample_type] = val; > + else > + val = pmu->sample[gt_id][sample_type]; > + > + spin_unlock_irqrestore(&pmu->lock, flags); > + > + return val; > +} > + > +static void engine_group_busyness_store(struct xe_gt *gt) > +{ > + struct xe_pmu *pmu = >->tile->xe->pmu; > + unsigned int gt_id = gt->info.id; > + unsigned long flags; > + int i; > + > + spin_lock_irqsave(&pmu->lock, flags); > + > + for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { > + pmu->sample[gt_id][i] = __engine_group_busyness_read(gt, i); > + } > + > + spin_unlock_irqrestore(&pmu->lock, flags); > +} > + > +static int > +config_status(struct xe_device *xe, u64 config) > +{ > + unsigned int max_gt_id = xe->info.gt_count > 1 ? 1 : 0; > + unsigned int gt_id = config_gt_id(config); > + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); > + > + if (gt_id > max_gt_id) > + return -ENOENT; > + > + switch (config_counter(config)) { > + case XE_PMU_INTERRUPTS(0): > + if (gt_id) > + return -ENOENT; > + break; > + case XE_PMU_RENDER_GROUP_BUSY(0): > + case XE_PMU_COPY_GROUP_BUSY(0): > + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): > + if (gt->info.type == XE_GT_TYPE_MEDIA) > + return -ENOENT; > + break; > + case XE_PMU_MEDIA_GROUP_BUSY(0): > + if (!(gt->info.engine_mask & (BIT(XE_HW_ENGINE_VCS0) | BIT(XE_HW_ENGINE_VECS0)))) > + return -ENOENT; > + break; > + default: > + return -ENOENT; > + } > + > + return 0; > +} > + > +static int xe_pmu_event_init(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + struct xe_pmu *pmu = &xe->pmu; > + int ret; > + > + if (pmu->closed) > + return -ENODEV; > + > + if (event->attr.type != event->pmu->type) > + return -ENOENT; > + > + /* unsupported modes and filters */ > + if (event->attr.sample_period) /* no sampling */ > + return -EINVAL; > + > + if (has_branch_stack(event)) > + return -EOPNOTSUPP; > + > + if (event->cpu < 0) > + return -EINVAL; > + > + /* only allow running on one cpu at a time */ > + if (!cpumask_test_cpu(event->cpu, &xe_pmu_cpumask)) > + return -EINVAL; > + > + ret = config_status(xe, event->attr.config); > + if (ret) > + return ret; > + > + if (!event->parent) { > + drm_dev_get(&xe->drm); > + event->destroy = xe_pmu_event_destroy; > + } > + > + return 0; > +} > + > +static u64 __xe_pmu_event_read(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + const unsigned int gt_id = config_gt_id(event->attr.config); > + const u64 config = config_counter(event->attr.config); > + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); > + struct xe_pmu *pmu = &xe->pmu; > + u64 val = 0; > + > + switch (config) { > + case XE_PMU_INTERRUPTS(0): > + val = READ_ONCE(pmu->irq_count); > + break; > + case XE_PMU_RENDER_GROUP_BUSY(0): > + case XE_PMU_COPY_GROUP_BUSY(0): > + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): > + case XE_PMU_MEDIA_GROUP_BUSY(0): > + val = engine_group_busyness_read(gt, config); > + } > + > + return val; > +} > + > +static void xe_pmu_event_read(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + struct hw_perf_event *hwc = &event->hw; > + struct xe_pmu *pmu = &xe->pmu; > + u64 prev, new; > + > + if (pmu->closed) { > + event->hw.state = PERF_HES_STOPPED; > + return; > + } > +again: > + prev = local64_read(&hwc->prev_count); > + new = __xe_pmu_event_read(event); > + > + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) > + goto again; > + > + local64_add(new - prev, &event->count); > +} > + > +static void xe_pmu_enable(struct perf_event *event) > +{ > + /* > + * Store the current counter value so we can report the correct delta > + * for all listeners. Even when the event was already enabled and has > + * an existing non-zero value. > + */ > + local64_set(&event->hw.prev_count, __xe_pmu_event_read(event)); > +} > + > +static void xe_pmu_event_start(struct perf_event *event, int flags) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + struct xe_pmu *pmu = &xe->pmu; > + > + if (pmu->closed) > + return; > + > + xe_pmu_enable(event); > + event->hw.state = 0; > +} > + > +static void xe_pmu_event_stop(struct perf_event *event, int flags) > +{ > + if (flags & PERF_EF_UPDATE) > + xe_pmu_event_read(event); > + > + event->hw.state = PERF_HES_STOPPED; > +} > + > +static int xe_pmu_event_add(struct perf_event *event, int flags) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + struct xe_pmu *pmu = &xe->pmu; > + > + if (pmu->closed) > + return -ENODEV; > + > + if (flags & PERF_EF_START) > + xe_pmu_event_start(event, flags); > + > + return 0; > +} > + > +static void xe_pmu_event_del(struct perf_event *event, int flags) > +{ > + xe_pmu_event_stop(event, PERF_EF_UPDATE); > +} > + > +static int xe_pmu_event_event_idx(struct perf_event *event) > +{ > + return 0; > +} > + > +struct xe_ext_attribute { > + struct device_attribute attr; > + unsigned long val; > +}; > + > +static ssize_t xe_pmu_event_show(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + struct xe_ext_attribute *eattr; > + > + eattr = container_of(attr, struct xe_ext_attribute, attr); > + return sprintf(buf, "config=0x%lx\n", eattr->val); > +} > + > +static ssize_t cpumask_show(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + return cpumap_print_to_pagebuf(true, buf, &xe_pmu_cpumask); > +} > + > +static DEVICE_ATTR_RO(cpumask); > + > +static struct attribute *xe_cpumask_attrs[] = { > + &dev_attr_cpumask.attr, > + NULL, > +}; > + > +static const struct attribute_group xe_pmu_cpumask_attr_group = { > + .attrs = xe_cpumask_attrs, > +}; > + > +#define __event(__counter, __name, __unit) \ > +{ \ > + .counter = (__counter), \ > + .name = (__name), \ > + .unit = (__unit), \ > + .global = false, \ > +} > + > +#define __global_event(__counter, __name, __unit) \ > +{ \ > + .counter = (__counter), \ > + .name = (__name), \ > + .unit = (__unit), \ > + .global = true, \ > +} > + > +static struct xe_ext_attribute * > +add_xe_attr(struct xe_ext_attribute *attr, const char *name, u64 config) > +{ > + sysfs_attr_init(&attr->attr.attr); > + attr->attr.attr.name = name; > + attr->attr.attr.mode = 0444; > + attr->attr.show = xe_pmu_event_show; > + attr->val = config; > + > + return ++attr; > +} > + > +static struct perf_pmu_events_attr * > +add_pmu_attr(struct perf_pmu_events_attr *attr, const char *name, > + const char *str) > +{ > + sysfs_attr_init(&attr->attr.attr); > + attr->attr.attr.name = name; > + attr->attr.attr.mode = 0444; > + attr->attr.show = perf_event_sysfs_show; > + attr->event_str = str; > + > + return ++attr; > +} > + > +static struct attribute ** > +create_event_attributes(struct xe_pmu *pmu) > +{ > + struct xe_device *xe = container_of(pmu, typeof(*xe), pmu); > + static const struct { > + unsigned int counter; > + const char *name; > + const char *unit; > + bool global; > + } events[] = { > + __global_event(0, "interrupts", NULL), > + __event(1, "render-group-busy", "ns"), > + __event(2, "copy-group-busy", "ns"), > + __event(3, "media-group-busy", "ns"), > + __event(4, "any-engine-group-busy", "ns"), > + }; > + > + struct perf_pmu_events_attr *pmu_attr = NULL, *pmu_iter; > + struct xe_ext_attribute *xe_attr = NULL, *xe_iter; > + struct attribute **attr = NULL, **attr_iter; > + unsigned int count = 0; > + unsigned int i, j; > + struct xe_gt *gt; > + > + /* Count how many counters we will be exposing. */ > + for_each_gt(gt, xe, j) { > + for (i = 0; i < ARRAY_SIZE(events); i++) { > + u64 config = ___XE_PMU_OTHER(j, events[i].counter); > + > + if (!config_status(xe, config)) > + count++; > + } > + } > + > + /* Allocate attribute objects and table. */ > + xe_attr = kcalloc(count, sizeof(*xe_attr), GFP_KERNEL); > + if (!xe_attr) > + goto err_alloc; > + > + pmu_attr = kcalloc(count, sizeof(*pmu_attr), GFP_KERNEL); > + if (!pmu_attr) > + goto err_alloc; > + > + /* Max one pointer of each attribute type plus a termination entry. */ > + attr = kcalloc(count * 2 + 1, sizeof(*attr), GFP_KERNEL); > + if (!attr) > + goto err_alloc; > + > + xe_iter = xe_attr; > + pmu_iter = pmu_attr; > + attr_iter = attr; > + > + for_each_gt(gt, xe, j) { > + for (i = 0; i < ARRAY_SIZE(events); i++) { > + u64 config = ___XE_PMU_OTHER(j, events[i].counter); > + char *str; > + > + if (config_status(xe, config)) > + continue; > + > + if (events[i].global) > + str = kstrdup(events[i].name, GFP_KERNEL); > + else > + str = kasprintf(GFP_KERNEL, "%s-gt%u", > + events[i].name, j); > + if (!str) > + goto err; > + > + *attr_iter++ = &xe_iter->attr.attr; > + xe_iter = add_xe_attr(xe_iter, str, config); > + > + if (events[i].unit) { > + if (events[i].global) > + str = kasprintf(GFP_KERNEL, "%s.unit", > + events[i].name); > + else > + str = kasprintf(GFP_KERNEL, "%s-gt%u.unit", > + events[i].name, j); > + if (!str) > + goto err; > + > + *attr_iter++ = &pmu_iter->attr.attr; > + pmu_iter = add_pmu_attr(pmu_iter, str, > + events[i].unit); > + } > + } > + } > + > + pmu->xe_attr = xe_attr; > + pmu->pmu_attr = pmu_attr; > + > + return attr; > + > +err: > + for (attr_iter = attr; *attr_iter; attr_iter++) > + kfree((*attr_iter)->name); > + > +err_alloc: > + kfree(attr); > + kfree(xe_attr); > + kfree(pmu_attr); > + > + return NULL; > +} > + > +static void free_event_attributes(struct xe_pmu *pmu) > +{ > + struct attribute **attr_iter = pmu->events_attr_group.attrs; > + > + for (; *attr_iter; attr_iter++) > + kfree((*attr_iter)->name); > + > + kfree(pmu->events_attr_group.attrs); > + kfree(pmu->xe_attr); > + kfree(pmu->pmu_attr); > + > + pmu->events_attr_group.attrs = NULL; > + pmu->xe_attr = NULL; > + pmu->pmu_attr = NULL; > +} > + > +static int xe_pmu_cpu_online(unsigned int cpu, struct hlist_node *node) > +{ > + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); > + > + BUG_ON(!pmu->base.event_init); > + > + /* Select the first online CPU as a designated reader. */ > + if (cpumask_empty(&xe_pmu_cpumask)) > + cpumask_set_cpu(cpu, &xe_pmu_cpumask); > + > + return 0; > +} > + > +static int xe_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node) > +{ > + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); > + unsigned int target = xe_pmu_target_cpu; > + > + BUG_ON(!pmu->base.event_init); > + > + /* > + * Unregistering an instance generates a CPU offline event which we must > + * ignore to avoid incorrectly modifying the shared xe_pmu_cpumask. > + */ > + if (pmu->closed) > + return 0; > + > + if (cpumask_test_and_clear_cpu(cpu, &xe_pmu_cpumask)) { > + target = cpumask_any_but(topology_sibling_cpumask(cpu), cpu); > + > + /* Migrate events if there is a valid target */ > + if (target < nr_cpu_ids) { > + cpumask_set_cpu(target, &xe_pmu_cpumask); > + xe_pmu_target_cpu = target; > + } > + } > + > + if (target < nr_cpu_ids && target != pmu->cpuhp.cpu) { > + perf_pmu_migrate_context(&pmu->base, cpu, target); > + pmu->cpuhp.cpu = target; > + } > + > + return 0; > +} > + > +static enum cpuhp_state cpuhp_slot = CPUHP_INVALID; > + > +int xe_pmu_init(void) > +{ > + int ret; > + > + ret = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN, > + "perf/x86/intel/xe:online", > + xe_pmu_cpu_online, > + xe_pmu_cpu_offline); > + if (ret < 0) > + pr_notice("Failed to setup cpuhp state for xe PMU! (%d)\n", > + ret); > + else > + cpuhp_slot = ret; > + > + return 0; > +} > + > +void xe_pmu_exit(void) > +{ > + if (cpuhp_slot != CPUHP_INVALID) > + cpuhp_remove_multi_state(cpuhp_slot); > +} > + > +static int xe_pmu_register_cpuhp_state(struct xe_pmu *pmu) > +{ > + if (cpuhp_slot == CPUHP_INVALID) > + return -EINVAL; > + > + return cpuhp_state_add_instance(cpuhp_slot, &pmu->cpuhp.node); > +} > + > +static void xe_pmu_unregister_cpuhp_state(struct xe_pmu *pmu) > +{ > + cpuhp_state_remove_instance(cpuhp_slot, &pmu->cpuhp.node); > +} > + > +void xe_pmu_suspend(struct xe_gt *gt) > +{ > + engine_group_busyness_store(gt); > +} > + > +static void xe_pmu_unregister(struct drm_device *device, void *arg) > +{ > + struct xe_pmu *pmu = arg; > + > + if (!pmu->base.event_init) > + return; > + > + /* > + * "Disconnect" the PMU callbacks - since all are atomic synchronize_rcu > + * ensures all currently executing ones will have exited before we > + * proceed with unregistration. > + */ > + pmu->closed = true; > + synchronize_rcu(); > + > + xe_pmu_unregister_cpuhp_state(pmu); > + > + perf_pmu_unregister(&pmu->base); > + pmu->base.event_init = NULL; > + kfree(pmu->base.attr_groups); > + kfree(pmu->name); > + free_event_attributes(pmu); > +} > + > +void xe_pmu_register(struct xe_pmu *pmu) > +{ > + struct xe_device *xe = container_of(pmu, typeof(*xe), pmu); > + const struct attribute_group *attr_groups[] = { > + &pmu->events_attr_group, > + &xe_pmu_cpumask_attr_group, > + NULL > + }; > + > + int ret = -ENOMEM; > + > + spin_lock_init(&pmu->lock); > + pmu->cpuhp.cpu = -1; > + > + pmu->name = kasprintf(GFP_KERNEL, > + "xe_%s", > + dev_name(xe->drm.dev)); > + if (pmu->name) > + /* tools/perf reserves colons as special. */ > + strreplace((char *)pmu->name, ':', '_'); > + > + if (!pmu->name) > + goto err; > + > + pmu->events_attr_group.name = "events"; > + pmu->events_attr_group.attrs = create_event_attributes(pmu); > + if (!pmu->events_attr_group.attrs) > + goto err_name; > + > + pmu->base.attr_groups = kmemdup(attr_groups, sizeof(attr_groups), > + GFP_KERNEL); > + if (!pmu->base.attr_groups) > + goto err_attr; > + > + pmu->base.module = THIS_MODULE; > + pmu->base.task_ctx_nr = perf_invalid_context; > + pmu->base.event_init = xe_pmu_event_init; > + pmu->base.add = xe_pmu_event_add; > + pmu->base.del = xe_pmu_event_del; > + pmu->base.start = xe_pmu_event_start; > + pmu->base.stop = xe_pmu_event_stop; > + pmu->base.read = xe_pmu_event_read; > + pmu->base.event_idx = xe_pmu_event_event_idx; > + > + ret = perf_pmu_register(&pmu->base, pmu->name, -1); > + if (ret) > + goto err_groups; > + > + ret = xe_pmu_register_cpuhp_state(pmu); > + if (ret) > + goto err_unreg; > + > + ret = drmm_add_action_or_reset(&xe->drm, xe_pmu_unregister, pmu); > + if (ret) > + goto err_cpuhp; > + > + return; > + > +err_cpuhp: > + xe_pmu_unregister_cpuhp_state(pmu); > +err_unreg: > + perf_pmu_unregister(&pmu->base); > +err_groups: > + kfree(pmu->base.attr_groups); > +err_attr: > + pmu->base.event_init = NULL; > + free_event_attributes(pmu); > +err_name: > + kfree(pmu->name); > +err: > + drm_notice(&xe->drm, "Failed to register PMU!\n"); > +} > diff --git a/drivers/gpu/drm/xe/xe_pmu.h b/drivers/gpu/drm/xe/xe_pmu.h > new file mode 100644 > index 000000000000..a99d4ddd023e > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_pmu.h > @@ -0,0 +1,25 @@ > +/* SPDX-License-Identifier: MIT */ > +/* > + * Copyright © 2023 Intel Corporation > + */ > + > +#ifndef _XE_PMU_H_ > +#define _XE_PMU_H_ > + > +#include "xe_gt_types.h" > +#include "xe_pmu_types.h" > + > +#if IS_ENABLED(CONFIG_PERF_EVENTS) > +int xe_pmu_init(void); > +void xe_pmu_exit(void); > +void xe_pmu_register(struct xe_pmu *pmu); > +void xe_pmu_suspend(struct xe_gt *gt); > +#else > +static inline int xe_pmu_init(void) { return 0; } > +static inline void xe_pmu_exit(void) {} > +static inline void xe_pmu_register(struct xe_pmu *pmu) {} > +static inline void xe_pmu_suspend(struct xe_gt *gt) {} > +#endif > + > +#endif > + > diff --git a/drivers/gpu/drm/xe/xe_pmu_types.h b/drivers/gpu/drm/xe/xe_pmu_types.h > new file mode 100644 > index 000000000000..4ccc7e9042f6 > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_pmu_types.h > @@ -0,0 +1,76 @@ > +/* SPDX-License-Identifier: MIT */ > +/* > + * Copyright © 2023 Intel Corporation > + */ > + > +#ifndef _XE_PMU_TYPES_H_ > +#define _XE_PMU_TYPES_H_ > + > +#include <linux/perf_event.h> > +#include <linux/spinlock_types.h> > +#include <uapi/drm/xe_drm.h> > + > +enum { > + __XE_SAMPLE_RENDER_GROUP_BUSY, > + __XE_SAMPLE_COPY_GROUP_BUSY, > + __XE_SAMPLE_MEDIA_GROUP_BUSY, > + __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY, > + __XE_NUM_PMU_SAMPLERS > +}; > + > +#define XE_PMU_MAX_GT 2 > + > +struct xe_pmu { > + /** > + * @cpuhp: Struct used for CPU hotplug handling. > + */ > + struct { > + struct hlist_node node; > + unsigned int cpu; > + } cpuhp; > + /** > + * @base: PMU base. > + */ > + struct pmu base; > + /** > + * @closed: xe is unregistering. > + */ > + bool closed; > + /** > + * @name: Name as registered with perf core. > + */ > + const char *name; > + /** > + * @lock: Lock protecting enable mask and ref count handling. > + */ > + spinlock_t lock; > + /** > + * @sample: Current and previous (raw) counters. > + * > + * These counters are updated when the device is awake. > + * > + */ > + u64 sample[XE_PMU_MAX_GT][__XE_NUM_PMU_SAMPLERS]; > + /** > + * @irq_count: Number of interrupts > + * > + * Intentionally unsigned long to avoid atomics or heuristics on 32bit. > + * 4e9 interrupts are a lot and postprocessing can really deal with an > + * occasional wraparound easily. It's 32bit after all. > + */ > + unsigned long irq_count; > + /** > + * @events_attr_group: Device events attribute group. > + */ > + struct attribute_group events_attr_group; > + /** > + * @xe_attr: Memory block holding device attributes. > + */ > + void *xe_attr; > + /** > + * @pmu_attr: Memory block holding device attributes. > + */ > + void *pmu_attr; > +}; > + > +#endif > diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h > index 86f16d50e9cc..75c9a7fe3490 100644 > --- a/include/uapi/drm/xe_drm.h > +++ b/include/uapi/drm/xe_drm.h > @@ -1056,6 +1056,22 @@ struct drm_xe_vm_madvise { > __u64 reserved[2]; > }; > > +/* PMU event config IDs */ > + > +/* > + * Top bits of every counter are GT id. > + */ > +#define __XE_PMU_GT_SHIFT (56) > + > +#define ___XE_PMU_OTHER(gt, x) \ > + (((__u64)(x)) | ((__u64)(gt) << __XE_PMU_GT_SHIFT)) > + > +#define XE_PMU_INTERRUPTS(gt) ___XE_PMU_OTHER(gt, 0) > +#define XE_PMU_RENDER_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 1) > +#define XE_PMU_COPY_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 2) > +#define XE_PMU_MEDIA_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 3) > +#define XE_PMU_ANY_ENGINE_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 4) Could you please add uapi documentation here showing examples on how this is used and all? > + > #if defined(__cplusplus) > } > #endif > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-30 20:58 ` Rodrigo Vivi @ 2023-08-31 20:45 ` Dixit, Ashutosh 2023-08-31 22:14 ` Aravind Iddamsetty 0 siblings, 1 reply; 29+ messages in thread From: Dixit, Ashutosh @ 2023-08-31 20:45 UTC (permalink / raw) To: Rodrigo Vivi; +Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On Wed, 30 Aug 2023 13:58:29 -0700, Rodrigo Vivi wrote: > Hi Aravind, > > diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h > > index 86f16d50e9cc..75c9a7fe3490 100644 > > --- a/include/uapi/drm/xe_drm.h > > +++ b/include/uapi/drm/xe_drm.h > > @@ -1056,6 +1056,22 @@ struct drm_xe_vm_madvise { > > __u64 reserved[2]; > > }; > > > > +/* PMU event config IDs */ > > + > > +/* > > + * Top bits of every counter are GT id. > > + */ > > +#define __XE_PMU_GT_SHIFT (56) > > + > > +#define ___XE_PMU_OTHER(gt, x) \ > > + (((__u64)(x)) | ((__u64)(gt) << __XE_PMU_GT_SHIFT)) > > + > > +#define XE_PMU_INTERRUPTS(gt) ___XE_PMU_OTHER(gt, 0) > > +#define XE_PMU_RENDER_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 1) > > +#define XE_PMU_COPY_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 2) > > +#define XE_PMU_MEDIA_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 3) > > +#define XE_PMU_ANY_ENGINE_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 4) > > Could you please add uapi documentation here showing examples on how > this is used and all? Rodrigo clarified some more the sort of uapi documentation to add here: https://patchwork.freedesktop.org/patch/551694/?series=121084&rev=4#comment_1009774 Cheers, Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-31 20:45 ` Dixit, Ashutosh @ 2023-08-31 22:14 ` Aravind Iddamsetty 0 siblings, 0 replies; 29+ messages in thread From: Aravind Iddamsetty @ 2023-08-31 22:14 UTC (permalink / raw) To: Dixit, Ashutosh, Rodrigo Vivi; +Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On 01/09/23 02:15, Dixit, Ashutosh wrote: > On Wed, 30 Aug 2023 13:58:29 -0700, Rodrigo Vivi wrote: > Hi Aravind, > >>> diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h >>> index 86f16d50e9cc..75c9a7fe3490 100644 >>> --- a/include/uapi/drm/xe_drm.h >>> +++ b/include/uapi/drm/xe_drm.h >>> @@ -1056,6 +1056,22 @@ struct drm_xe_vm_madvise { >>> __u64 reserved[2]; >>> }; >>> >>> +/* PMU event config IDs */ >>> + >>> +/* >>> + * Top bits of every counter are GT id. >>> + */ >>> +#define __XE_PMU_GT_SHIFT (56) >>> + >>> +#define ___XE_PMU_OTHER(gt, x) \ >>> + (((__u64)(x)) | ((__u64)(gt) << __XE_PMU_GT_SHIFT)) >>> + >>> +#define XE_PMU_INTERRUPTS(gt) ___XE_PMU_OTHER(gt, 0) >>> +#define XE_PMU_RENDER_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 1) >>> +#define XE_PMU_COPY_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 2) >>> +#define XE_PMU_MEDIA_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 3) >>> +#define XE_PMU_ANY_ENGINE_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 4) >> Could you please add uapi documentation here showing examples on how >> this is used and all? > Rodrigo clarified some more the sort of uapi documentation to add here: yup I didn't acknowledge but didn't neglect it either, i'm working on it will add as part of next series. Thanks, Aravind. > > https://patchwork.freedesktop.org/patch/551694/?series=121084&rev=4#comment_1009774 > > Cheers, > Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-30 5:15 ` [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty 2023-08-30 20:58 ` Rodrigo Vivi @ 2023-08-31 4:48 ` Dixit, Ashutosh 2023-08-31 10:29 ` Aravind Iddamsetty 1 sibling, 1 reply; 29+ messages in thread From: Dixit, Ashutosh @ 2023-08-31 4:48 UTC (permalink / raw) To: Aravind Iddamsetty; +Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On Tue, 29 Aug 2023 22:15:44 -0700, Aravind Iddamsetty wrote: > Hi Aravind, > diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c > new file mode 100644 > index 000000000000..41dd422812ff > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_pmu.c > @@ -0,0 +1,679 @@ > +// SPDX-License-Identifier: MIT > +/* > + * Copyright © 2023 Intel Corporation > + */ > + > +#include <drm/drm_drv.h> > +#include <drm/drm_managed.h> > +#include <drm/xe_drm.h> > + > +#include "regs/xe_gt_regs.h" > +#include "xe_device.h" > +#include "xe_gt_clock.h" > +#include "xe_mmio.h" > + > +static cpumask_t xe_pmu_cpumask; > +static unsigned int xe_pmu_target_cpu = -1; > + > +static unsigned int config_gt_id(const u64 config) > +{ > + return config >> __XE_PMU_GT_SHIFT; > +} > + > +static u64 config_counter(const u64 config) > +{ > + return config & ~(~0ULL << __XE_PMU_GT_SHIFT); > +} > + > +static int engine_busyness_sample_type(u64 config) > +{ > + int type = 0; Why initialize? The switch statement should have a default with a BUG/WARN_ON below? Also see the comment below. > + > + switch (config) { > + case XE_PMU_RENDER_GROUP_BUSY(0): > + type = __XE_SAMPLE_RENDER_GROUP_BUSY; > + break; > + case XE_PMU_COPY_GROUP_BUSY(0): > + type = __XE_SAMPLE_COPY_GROUP_BUSY; > + break; > + case XE_PMU_MEDIA_GROUP_BUSY(0): > + type = __XE_SAMPLE_MEDIA_GROUP_BUSY; > + break; > + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): > + type = __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; > + break; > + } > + > + return type; > +} I am thinking this function is not really needed. We can just do: int sample_type = config - 1; or int sample_type = config_counter(config) - 1; in engine_group_busyness_read? See comment at __xe_pmu_event_read below. > + > +static void xe_pmu_event_destroy(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + > + drm_WARN_ON(&xe->drm, event->parent); > + > + drm_dev_put(&xe->drm); > +} > + > +static u64 __engine_group_busyness_read(struct xe_gt *gt, int sample_type) > +{ > + u64 val = 0; > + > + switch (sample_type) { > + case __XE_SAMPLE_RENDER_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_RENDER_BUSY_FREE); > + break; > + case __XE_SAMPLE_COPY_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_BLT_BUSY_FREE); > + break; > + case __XE_SAMPLE_MEDIA_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_ANY_MEDIA_FF_BUSY_FREE); > + break; > + case __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_RC0_ANY_ENGINE_BUSY_FREE); > + break; > + default: > + drm_warn(>->tile->xe->drm, "unknown pmu event\n"); > + } > + > + return xe_gt_clock_cycles_to_ns(gt, val * 16); > +} > + > +static u64 engine_group_busyness_read(struct xe_gt *gt, u64 config) > +{ > + int sample_type = engine_busyness_sample_type(config); If config is event->attr.config, this can just be 'config_counter(config) - 1'. See comment at __xe_pmu_event_read below. > + const unsigned int gt_id = gt->info.id; > + struct xe_device *xe = gt->tile->xe; > + struct xe_pmu *pmu = &xe->pmu; > + unsigned long flags; > + bool device_awake; > + u64 val; > + > + device_awake = xe_device_mem_access_get_if_ongoing(xe); > + if (device_awake) { > + XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT)); > + val = __engine_group_busyness_read(gt, sample_type); > + XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT)); > + xe_device_mem_access_put(xe); > + } > + > + spin_lock_irqsave(&pmu->lock, flags); > + > + if (device_awake) > + pmu->sample[gt_id][sample_type] = val; > + else > + val = pmu->sample[gt_id][sample_type]; > + > + spin_unlock_irqrestore(&pmu->lock, flags); > + > + return val; > +} > + > +static void engine_group_busyness_store(struct xe_gt *gt) > +{ > + struct xe_pmu *pmu = >->tile->xe->pmu; > + unsigned int gt_id = gt->info.id; > + unsigned long flags; > + int i; > + > + spin_lock_irqsave(&pmu->lock, flags); > + > + for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { > + pmu->sample[gt_id][i] = __engine_group_busyness_read(gt, i); This is not quite right. At the minimum we need to take forcewake here. Also since this is called in both suspend and runtime_suspend code paths we might also need to the take the runtime_pm reference. I think the simplest might be to just construct 'config' (event->attr.config) here and call engine_group_busyness_read? Something like: for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { config = ; // Construct config using gt_id and i engine_group_busyness_read(gt, i); } This will automatically save the read values in pmu->sample[][] if the device is awake. Thoughts? > + } > + > + spin_unlock_irqrestore(&pmu->lock, flags); > +} > + > +static int > +config_status(struct xe_device *xe, u64 config) > +{ > + unsigned int max_gt_id = xe->info.gt_count > 1 ? 1 : 0; What is this for? See below. > + unsigned int gt_id = config_gt_id(config); > + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); > + > + if (gt_id > max_gt_id) Maybe this can just be: if (gt_id >= XE_PMU_MAX_GT) > + return -ENOENT; > + > + switch (config_counter(config)) { > + case XE_PMU_INTERRUPTS(0): > + if (gt_id) > + return -ENOENT; > + break; > + case XE_PMU_RENDER_GROUP_BUSY(0): > + case XE_PMU_COPY_GROUP_BUSY(0): > + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): > + if (gt->info.type == XE_GT_TYPE_MEDIA) > + return -ENOENT; > + break; > + case XE_PMU_MEDIA_GROUP_BUSY(0): > + if (!(gt->info.engine_mask & (BIT(XE_HW_ENGINE_VCS0) | BIT(XE_HW_ENGINE_VECS0)))) > + return -ENOENT; > + break; > + default: > + return -ENOENT; > + } > + > + return 0; > +} > + > +static int xe_pmu_event_init(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + struct xe_pmu *pmu = &xe->pmu; > + int ret; > + > + if (pmu->closed) > + return -ENODEV; > + > + if (event->attr.type != event->pmu->type) > + return -ENOENT; > + > + /* unsupported modes and filters */ > + if (event->attr.sample_period) /* no sampling */ > + return -EINVAL; > + > + if (has_branch_stack(event)) > + return -EOPNOTSUPP; > + > + if (event->cpu < 0) > + return -EINVAL; > + > + /* only allow running on one cpu at a time */ > + if (!cpumask_test_cpu(event->cpu, &xe_pmu_cpumask)) > + return -EINVAL; > + > + ret = config_status(xe, event->attr.config); > + if (ret) > + return ret; > + > + if (!event->parent) { > + drm_dev_get(&xe->drm); > + event->destroy = xe_pmu_event_destroy; > + } > + > + return 0; > +} > + > +static u64 __xe_pmu_event_read(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + const unsigned int gt_id = config_gt_id(event->attr.config); > + const u64 config = config_counter(event->attr.config); Probably nit but this config being different from event->attr.config is confusing. Let's use 'event->attr.config' throughout as argument to functions and use config_counter() to get rid of gt_id. So get rid of this config variable. > + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); > + struct xe_pmu *pmu = &xe->pmu; > + u64 val = 0; > + > + switch (config) { switch (config_counter(event->attr.config)) > + case XE_PMU_INTERRUPTS(0): > + val = READ_ONCE(pmu->irq_count); > + break; > + case XE_PMU_RENDER_GROUP_BUSY(0): > + case XE_PMU_COPY_GROUP_BUSY(0): > + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): > + case XE_PMU_MEDIA_GROUP_BUSY(0): > + val = engine_group_busyness_read(gt, config); engine_group_busyness_read(gt, event->attr.config); Also, need a default case. > + } > + > + return val; > +} > + > +static void xe_pmu_event_read(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + struct hw_perf_event *hwc = &event->hw; > + struct xe_pmu *pmu = &xe->pmu; > + u64 prev, new; > + > + if (pmu->closed) { > + event->hw.state = PERF_HES_STOPPED; > + return; > + } > +again: > + prev = local64_read(&hwc->prev_count); > + new = __xe_pmu_event_read(event); > + > + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) > + goto again; > + > + local64_add(new - prev, &event->count); > +} > + > +static void xe_pmu_enable(struct perf_event *event) > +{ > + /* > + * Store the current counter value so we can report the correct delta > + * for all listeners. Even when the event was already enabled and has > + * an existing non-zero value. > + */ > + local64_set(&event->hw.prev_count, __xe_pmu_event_read(event)); Right now nothing is being enabled here (unlike i915) so the function name xe_pmu_enable looks weird. Not sure, maybe leave as is for when things get added in the future? > +static int xe_pmu_cpu_online(unsigned int cpu, struct hlist_node *node) > +{ > + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); > + > + BUG_ON(!pmu->base.event_init); > + > + /* Select the first online CPU as a designated reader. */ > + if (cpumask_empty(&xe_pmu_cpumask)) > + cpumask_set_cpu(cpu, &xe_pmu_cpumask); > + > + return 0; > +} > + > +static int xe_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node) > +{ > + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); > + unsigned int target = xe_pmu_target_cpu; > + > + BUG_ON(!pmu->base.event_init); nit but wondering if we should remove these two BUG_ON's (and save a couple of checkpatch warnings even though the BUG_ON's are in i915) and just do something like: if (!pmu->base.event_init) return 0; The reason for the BUG_ON's seems to be that these functions can be called after module_init but before probe. xe_pmu_cpu_online() doesn't depend on pmu at all so looks like the BUG_ON can just be dropped? Thanks. -- Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-31 4:48 ` Dixit, Ashutosh @ 2023-08-31 10:29 ` Aravind Iddamsetty 2023-08-31 16:58 ` Dixit, Ashutosh 0 siblings, 1 reply; 29+ messages in thread From: Aravind Iddamsetty @ 2023-08-31 10:29 UTC (permalink / raw) To: Dixit, Ashutosh; +Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin [-- Attachment #1: Type: text/plain, Size: 10925 bytes --] On 31/08/23 10:18, Dixit, Ashutosh wrote: Hi Ashutosh, > On Tue, 29 Aug 2023 22:15:44 -0700, Aravind Iddamsetty wrote: > Hi Aravind, > >> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c >> new file mode 100644 >> index 000000000000..41dd422812ff >> --- /dev/null >> +++ b/drivers/gpu/drm/xe/xe_pmu.c >> @@ -0,0 +1,679 @@ >> +// SPDX-License-Identifier: MIT >> +/* >> + * Copyright © 2023 Intel Corporation >> + */ >> + >> +#include <drm/drm_drv.h> >> +#include <drm/drm_managed.h> >> +#include <drm/xe_drm.h> >> + >> +#include "regs/xe_gt_regs.h" >> +#include "xe_device.h" >> +#include "xe_gt_clock.h" >> +#include "xe_mmio.h" >> + >> +static cpumask_t xe_pmu_cpumask; >> +static unsigned int xe_pmu_target_cpu = -1; >> + >> +static unsigned int config_gt_id(const u64 config) >> +{ >> + return config >> __XE_PMU_GT_SHIFT; >> +} >> + >> +static u64 config_counter(const u64 config) >> +{ >> + return config & ~(~0ULL << __XE_PMU_GT_SHIFT); >> +} >> + >> +static int engine_busyness_sample_type(u64 config) >> +{ >> + int type = 0; > Why initialize? The switch statement should have a default with a BUG/WARN_ON > below? Also see the comment below. > >> + >> + switch (config) { >> + case XE_PMU_RENDER_GROUP_BUSY(0): >> + type = __XE_SAMPLE_RENDER_GROUP_BUSY; >> + break; >> + case XE_PMU_COPY_GROUP_BUSY(0): >> + type = __XE_SAMPLE_COPY_GROUP_BUSY; >> + break; >> + case XE_PMU_MEDIA_GROUP_BUSY(0): >> + type = __XE_SAMPLE_MEDIA_GROUP_BUSY; >> + break; >> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >> + type = __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; >> + break; >> + } >> + >> + return type; >> +} > I am thinking this function is not really needed. We can just do: > > int sample_type = config - 1; > > or > > int sample_type = config_counter(config) - 1; It might not always be true in future, the configs can start from any range. > > in engine_group_busyness_read? See comment at __xe_pmu_event_read below. > >> + >> +static void xe_pmu_event_destroy(struct perf_event *event) >> +{ >> + struct xe_device *xe = >> + container_of(event->pmu, typeof(*xe), pmu.base); >> + >> + drm_WARN_ON(&xe->drm, event->parent); >> + >> + drm_dev_put(&xe->drm); >> +} >> + >> +static u64 __engine_group_busyness_read(struct xe_gt *gt, int sample_type) >> +{ >> + u64 val = 0; >> + >> + switch (sample_type) { >> + case __XE_SAMPLE_RENDER_GROUP_BUSY: >> + val = xe_mmio_read32(gt, XE_OAG_RENDER_BUSY_FREE); >> + break; >> + case __XE_SAMPLE_COPY_GROUP_BUSY: >> + val = xe_mmio_read32(gt, XE_OAG_BLT_BUSY_FREE); >> + break; >> + case __XE_SAMPLE_MEDIA_GROUP_BUSY: >> + val = xe_mmio_read32(gt, XE_OAG_ANY_MEDIA_FF_BUSY_FREE); >> + break; >> + case __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY: >> + val = xe_mmio_read32(gt, XE_OAG_RC0_ANY_ENGINE_BUSY_FREE); >> + break; >> + default: >> + drm_warn(>->tile->xe->drm, "unknown pmu event\n"); >> + } >> + >> + return xe_gt_clock_cycles_to_ns(gt, val * 16); >> +} >> + >> +static u64 engine_group_busyness_read(struct xe_gt *gt, u64 config) >> +{ >> + int sample_type = engine_busyness_sample_type(config); > If config is event->attr.config, this can just be 'config_counter(config) - 1'. > See comment at __xe_pmu_event_read below. > >> + const unsigned int gt_id = gt->info.id; >> + struct xe_device *xe = gt->tile->xe; >> + struct xe_pmu *pmu = &xe->pmu; >> + unsigned long flags; >> + bool device_awake; >> + u64 val; >> + >> + device_awake = xe_device_mem_access_get_if_ongoing(xe); >> + if (device_awake) { >> + XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT)); >> + val = __engine_group_busyness_read(gt, sample_type); >> + XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT)); >> + xe_device_mem_access_put(xe); >> + } >> + >> + spin_lock_irqsave(&pmu->lock, flags); >> + >> + if (device_awake) >> + pmu->sample[gt_id][sample_type] = val; >> + else >> + val = pmu->sample[gt_id][sample_type]; >> + >> + spin_unlock_irqrestore(&pmu->lock, flags); >> + >> + return val; >> +} >> + >> +static void engine_group_busyness_store(struct xe_gt *gt) >> +{ >> + struct xe_pmu *pmu = >->tile->xe->pmu; >> + unsigned int gt_id = gt->info.id; >> + unsigned long flags; >> + int i; >> + >> + spin_lock_irqsave(&pmu->lock, flags); >> + >> + for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { >> + pmu->sample[gt_id][i] = __engine_group_busyness_read(gt, i); > This is not quite right. At the minimum we need to take forcewake > here. Also since this is called in both suspend and runtime_suspend code > paths we might also need to the take the runtime_pm reference. The pm reference and forcewake are already taken in suspend paths hence didn't add here again as this is called only from those paths. check xe_gt_suspend. > > I think the simplest might be to just construct 'config' > (event->attr.config) here and call engine_group_busyness_read? Something > like: > > for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { > config = ; // Construct config using gt_id and i > engine_group_busyness_read(gt, i); > } > > This will automatically save the read values in pmu->sample[][] if the > device is awake. Thoughts? I think this is best kept separate from usual read paths(which are atomic) didn't want to club them. Also because forcewakes and pm reference are taken separately in suspend path. > >> + } >> + >> + spin_unlock_irqrestore(&pmu->lock, flags); >> +} >> + >> +static int >> +config_status(struct xe_device *xe, u64 config) >> +{ >> + unsigned int max_gt_id = xe->info.gt_count > 1 ? 1 : 0; > What is this for? See below. reminiscent of my previous code, will clean it up. > >> + unsigned int gt_id = config_gt_id(config); >> + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); >> + >> + if (gt_id > max_gt_id) > Maybe this can just be: > > if (gt_id >= XE_PMU_MAX_GT) > >> + return -ENOENT; >> + >> + switch (config_counter(config)) { >> + case XE_PMU_INTERRUPTS(0): >> + if (gt_id) >> + return -ENOENT; >> + break; >> + case XE_PMU_RENDER_GROUP_BUSY(0): >> + case XE_PMU_COPY_GROUP_BUSY(0): >> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >> + if (gt->info.type == XE_GT_TYPE_MEDIA) >> + return -ENOENT; >> + break; >> + case XE_PMU_MEDIA_GROUP_BUSY(0): >> + if (!(gt->info.engine_mask & (BIT(XE_HW_ENGINE_VCS0) | BIT(XE_HW_ENGINE_VECS0)))) >> + return -ENOENT; >> + break; >> + default: >> + return -ENOENT; >> + } >> + >> + return 0; >> +} >> + >> +static int xe_pmu_event_init(struct perf_event *event) >> +{ >> + struct xe_device *xe = >> + container_of(event->pmu, typeof(*xe), pmu.base); >> + struct xe_pmu *pmu = &xe->pmu; >> + int ret; >> + >> + if (pmu->closed) >> + return -ENODEV; >> + >> + if (event->attr.type != event->pmu->type) >> + return -ENOENT; >> + >> + /* unsupported modes and filters */ >> + if (event->attr.sample_period) /* no sampling */ >> + return -EINVAL; >> + >> + if (has_branch_stack(event)) >> + return -EOPNOTSUPP; >> + >> + if (event->cpu < 0) >> + return -EINVAL; >> + >> + /* only allow running on one cpu at a time */ >> + if (!cpumask_test_cpu(event->cpu, &xe_pmu_cpumask)) >> + return -EINVAL; >> + >> + ret = config_status(xe, event->attr.config); >> + if (ret) >> + return ret; >> + >> + if (!event->parent) { >> + drm_dev_get(&xe->drm); >> + event->destroy = xe_pmu_event_destroy; >> + } >> + >> + return 0; >> +} >> + >> +static u64 __xe_pmu_event_read(struct perf_event *event) >> +{ >> + struct xe_device *xe = >> + container_of(event->pmu, typeof(*xe), pmu.base); >> + const unsigned int gt_id = config_gt_id(event->attr.config); >> + const u64 config = config_counter(event->attr.config); > Probably nit but this config being different from event->attr.config is > confusing. Let's use 'event->attr.config' throughout as argument to > functions and use config_counter() to get rid of gt_id. So get rid of this > config variable. > >> + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); >> + struct xe_pmu *pmu = &xe->pmu; >> + u64 val = 0; >> + >> + switch (config) { > switch (config_counter(event->attr.config)) > >> + case XE_PMU_INTERRUPTS(0): >> + val = READ_ONCE(pmu->irq_count); >> + break; >> + case XE_PMU_RENDER_GROUP_BUSY(0): >> + case XE_PMU_COPY_GROUP_BUSY(0): >> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >> + case XE_PMU_MEDIA_GROUP_BUSY(0): >> + val = engine_group_busyness_read(gt, config); > engine_group_busyness_read(gt, event->attr.config); hmmm ok. > > Also, need a default case. > >> + } >> + >> + return val; >> +} >> + >> +static void xe_pmu_event_read(struct perf_event *event) >> +{ >> + struct xe_device *xe = >> + container_of(event->pmu, typeof(*xe), pmu.base); >> + struct hw_perf_event *hwc = &event->hw; >> + struct xe_pmu *pmu = &xe->pmu; >> + u64 prev, new; >> + >> + if (pmu->closed) { >> + event->hw.state = PERF_HES_STOPPED; >> + return; >> + } >> +again: >> + prev = local64_read(&hwc->prev_count); >> + new = __xe_pmu_event_read(event); >> + >> + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) >> + goto again; >> + >> + local64_add(new - prev, &event->count); >> +} >> + >> +static void xe_pmu_enable(struct perf_event *event) >> +{ >> + /* >> + * Store the current counter value so we can report the correct delta >> + * for all listeners. Even when the event was already enabled and has >> + * an existing non-zero value. >> + */ >> + local64_set(&event->hw.prev_count, __xe_pmu_event_read(event)); > Right now nothing is being enabled here (unlike i915) so the function name > xe_pmu_enable looks weird. Not sure, maybe leave as is for when things get > added in the future? > >> +static int xe_pmu_cpu_online(unsigned int cpu, struct hlist_node *node) >> +{ >> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); >> + >> + BUG_ON(!pmu->base.event_init); >> + >> + /* Select the first online CPU as a designated reader. */ >> + if (cpumask_empty(&xe_pmu_cpumask)) >> + cpumask_set_cpu(cpu, &xe_pmu_cpumask); >> + >> + return 0; >> +} >> + >> +static int xe_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node) >> +{ >> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); >> + unsigned int target = xe_pmu_target_cpu; >> + >> + BUG_ON(!pmu->base.event_init); > nit but wondering if we should remove these two BUG_ON's (and save a couple > of checkpatch warnings even though the BUG_ON's are in i915) and just do > something like: > > if (!pmu->base.event_init) > return 0; > > The reason for the BUG_ON's seems to be that these functions can be called > after module_init but before probe. > > xe_pmu_cpu_online() doesn't depend on pmu at all so looks like the BUG_ON > can just be dropped? the xe_pmu_cpu_online/offline are not invoked when they are registered with cpuhp_setup_state_multi, but rather when cpuhp_state_add_instance() is called which is done post the PMU is initialized hence the check for BUG_ON. Thanks, Aravind. > > Thanks. > -- > Ashutosh [-- Attachment #2: Type: text/html, Size: 13443 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-31 10:29 ` Aravind Iddamsetty @ 2023-08-31 16:58 ` Dixit, Ashutosh 2023-08-31 22:11 ` Aravind Iddamsetty 0 siblings, 1 reply; 29+ messages in thread From: Dixit, Ashutosh @ 2023-08-31 16:58 UTC (permalink / raw) To: Aravind Iddamsetty; +Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On Thu, 31 Aug 2023 03:29:11 -0700, Aravind Iddamsetty wrote: > Hi Aravind, Hmm, what happened to the email formatting here? > On Tue, 29 Aug 2023 22:15:44 -0700, Aravind Iddamsetty wrote: > > diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c > new file mode 100644 > index 000000000000..41dd422812ff > --- /dev/null > +++ b/drivers/gpu/drm/xe/xe_pmu.c > @@ -0,0 +1,679 @@ > +// SPDX-License-Identifier: MIT > +/* > + * Copyright © 2023 Intel Corporation > + */ > + > +#include <drm/drm_drv.h> > +#include <drm/drm_managed.h> > +#include <drm/xe_drm.h> > + > +#include "regs/xe_gt_regs.h" > +#include "xe_device.h" > +#include "xe_gt_clock.h" > +#include "xe_mmio.h" > + > +static cpumask_t xe_pmu_cpumask; > +static unsigned int xe_pmu_target_cpu = -1; > + > +static unsigned int config_gt_id(const u64 config) > +{ > + return config >> __XE_PMU_GT_SHIFT; > +} > + > +static u64 config_counter(const u64 config) > +{ > + return config & ~(~0ULL << __XE_PMU_GT_SHIFT); > +} > + > +static int engine_busyness_sample_type(u64 config) > +{ > + int type = 0; > > > Why initialize? The switch statement should have a default with a BUG/WARN_ON > below? Also see the comment below. > > + > + switch (config) { > + case XE_PMU_RENDER_GROUP_BUSY(0): > + type = __XE_SAMPLE_RENDER_GROUP_BUSY; > + break; > + case XE_PMU_COPY_GROUP_BUSY(0): > + type = __XE_SAMPLE_COPY_GROUP_BUSY; > + break; > + case XE_PMU_MEDIA_GROUP_BUSY(0): > + type = __XE_SAMPLE_MEDIA_GROUP_BUSY; > + break; > + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): > + type = __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; > + break; > + } > + > + return type; > +} > > > I am thinking this function is not really needed. We can just do: > > int sample_type = config - 1; > > or > > int sample_type = config_counter(config) - 1; > > It might not always be true in future, the configs can start from any range. Disagree. This is uapi. Once it is exposed it cannot change. I am talking about this: +#define XE_PMU_INTERRUPTS(gt) ___XE_PMU_OTHER(gt, 0) +#define XE_PMU_RENDER_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 1) +#define XE_PMU_COPY_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 2) +#define XE_PMU_MEDIA_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 3) +#define XE_PMU_ANY_ENGINE_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 4) How can this "start from any range"? We can only add new counters after these, not before these, correct? > in engine_group_busyness_read? See comment at __xe_pmu_event_read below. > > + > +static void xe_pmu_event_destroy(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + > + drm_WARN_ON(&xe->drm, event->parent); > + > + drm_dev_put(&xe->drm); > +} > + > +static u64 __engine_group_busyness_read(struct xe_gt *gt, int sample_type) > +{ > + u64 val = 0; No need to initialize here I think. We are not really expecting to drop into the default case, which should be caught much before we enter this function. > + > + switch (sample_type) { > + case __XE_SAMPLE_RENDER_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_RENDER_BUSY_FREE); > + break; > + case __XE_SAMPLE_COPY_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_BLT_BUSY_FREE); > + break; > + case __XE_SAMPLE_MEDIA_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_ANY_MEDIA_FF_BUSY_FREE); > + break; > + case __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY: > + val = xe_mmio_read32(gt, XE_OAG_RC0_ANY_ENGINE_BUSY_FREE); > + break; > + default: > + drm_warn(>->tile->xe->drm, "unknown pmu event\n"); > + } > + > + return xe_gt_clock_cycles_to_ns(gt, val * 16); > +} > + > +static u64 engine_group_busyness_read(struct xe_gt *gt, u64 config) > +{ > + int sample_type = engine_busyness_sample_type(config); > > > If config is event->attr.config, this can just be 'config_counter(config) - 1'. > See comment at __xe_pmu_event_read below. > > + const unsigned int gt_id = gt->info.id; > + struct xe_device *xe = gt->tile->xe; > + struct xe_pmu *pmu = &xe->pmu; > + unsigned long flags; > + bool device_awake; > + u64 val; > + > + device_awake = xe_device_mem_access_get_if_ongoing(xe); > + if (device_awake) { > + XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT)); > + val = __engine_group_busyness_read(gt, sample_type); > + XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT)); > + xe_device_mem_access_put(xe); > + } > + > + spin_lock_irqsave(&pmu->lock, flags); > + > + if (device_awake) > + pmu->sample[gt_id][sample_type] = val; > + else > + val = pmu->sample[gt_id][sample_type]; > + > + spin_unlock_irqrestore(&pmu->lock, flags); > + > + return val; > +} > + > +static void engine_group_busyness_store(struct xe_gt *gt) > +{ > + struct xe_pmu *pmu = >->tile->xe->pmu; > + unsigned int gt_id = gt->info.id; > + unsigned long flags; > + int i; > + > + spin_lock_irqsave(&pmu->lock, flags); > + > + for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { > + pmu->sample[gt_id][i] = __engine_group_busyness_read(gt, i); > > > This is not quite right. At the minimum we need to take forcewake > here. Also since this is called in both suspend and runtime_suspend code > paths we might also need to the take the runtime_pm reference. > > The pm reference and forcewake are already taken in suspend paths hence > didn't add here again as this is called only from those paths. > > check xe_gt_suspend. Sorry, you are right, I missed it. So this is fine. > > > > I think the simplest might be to just construct 'config' > (event->attr.config) here and call engine_group_busyness_read? Something > like: > > for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { > config = ; // Construct config using gt_id and i > engine_group_busyness_read(gt, i); > } > > This will automatically save the read values in pmu->sample[][] if the > device is awake. Thoughts? > > I think this is best kept separate from usual read paths(which are > atomic) didn't want to club them. Also because forcewakes and pm > reference are taken separately in suspend path. Sure, no changes needed here. Just get rid of the braces to keep checkpatch happy. > > > > + } > + > + spin_unlock_irqrestore(&pmu->lock, flags); > +} > + > +static int > +config_status(struct xe_device *xe, u64 config) > +{ > + unsigned int max_gt_id = xe->info.gt_count > 1 ? 1 : 0; > > > What is this for? See below. > > reminiscent of my previous code, will clean it up. > > > > + unsigned int gt_id = config_gt_id(config); > + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); > + > + if (gt_id > max_gt_id) > > > Maybe this can just be: > > if (gt_id >= XE_PMU_MAX_GT) > > + return -ENOENT; > + > + switch (config_counter(config)) { > + case XE_PMU_INTERRUPTS(0): > + if (gt_id) > + return -ENOENT; > + break; > + case XE_PMU_RENDER_GROUP_BUSY(0): > + case XE_PMU_COPY_GROUP_BUSY(0): > + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): > + if (gt->info.type == XE_GT_TYPE_MEDIA) > + return -ENOENT; > + break; > + case XE_PMU_MEDIA_GROUP_BUSY(0): > + if (!(gt->info.engine_mask & (BIT(XE_HW_ENGINE_VCS0) | BIT(XE_HW_ENGINE_VECS0)))) > + return -ENOENT; > + break; > + default: > + return -ENOENT; > + } > + > + return 0; > +} > + > +static int xe_pmu_event_init(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + struct xe_pmu *pmu = &xe->pmu; > + int ret; > + > + if (pmu->closed) > + return -ENODEV; > + > + if (event->attr.type != event->pmu->type) > + return -ENOENT; > + > + /* unsupported modes and filters */ > + if (event->attr.sample_period) /* no sampling */ > + return -EINVAL; > + > + if (has_branch_stack(event)) > + return -EOPNOTSUPP; > + > + if (event->cpu < 0) > + return -EINVAL; > + > + /* only allow running on one cpu at a time */ > + if (!cpumask_test_cpu(event->cpu, &xe_pmu_cpumask)) > + return -EINVAL; > + > + ret = config_status(xe, event->attr.config); > + if (ret) > + return ret; > + > + if (!event->parent) { > + drm_dev_get(&xe->drm); > + event->destroy = xe_pmu_event_destroy; > + } > + > + return 0; > +} > + > +static u64 __xe_pmu_event_read(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + const unsigned int gt_id = config_gt_id(event->attr.config); > + const u64 config = config_counter(event->attr.config); > > > Probably nit but this config being different from event->attr.config is > confusing. Let's use 'event->attr.config' throughout as argument to > functions and use config_counter() to get rid of gt_id. So get rid of this > config variable. > > + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); > + struct xe_pmu *pmu = &xe->pmu; > + u64 val = 0; > + > + switch (config) { > > > switch (config_counter(event->attr.config)) > > + case XE_PMU_INTERRUPTS(0): > + val = READ_ONCE(pmu->irq_count); > + break; > + case XE_PMU_RENDER_GROUP_BUSY(0): > + case XE_PMU_COPY_GROUP_BUSY(0): > + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): > + case XE_PMU_MEDIA_GROUP_BUSY(0): > + val = engine_group_busyness_read(gt, config); > > > engine_group_busyness_read(gt, event->attr.config); > > hmmm ok. > > > > Also, need a default case. > > + } > + > + return val; > +} > + > +static void xe_pmu_event_read(struct perf_event *event) > +{ > + struct xe_device *xe = > + container_of(event->pmu, typeof(*xe), pmu.base); > + struct hw_perf_event *hwc = &event->hw; > + struct xe_pmu *pmu = &xe->pmu; > + u64 prev, new; > + > + if (pmu->closed) { > + event->hw.state = PERF_HES_STOPPED; > + return; > + } > +again: > + prev = local64_read(&hwc->prev_count); > + new = __xe_pmu_event_read(event); > + > + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) > + goto again; > + > + local64_add(new - prev, &event->count); > +} > + > +static void xe_pmu_enable(struct perf_event *event) > +{ > + /* > + * Store the current counter value so we can report the correct delta > + * for all listeners. Even when the event was already enabled and has > + * an existing non-zero value. > + */ > + local64_set(&event->hw.prev_count, __xe_pmu_event_read(event)); > > > Right now nothing is being enabled here (unlike i915) so the function name > xe_pmu_enable looks weird. Not sure, maybe leave as is for when things get > added in the future? > > +static int xe_pmu_cpu_online(unsigned int cpu, struct hlist_node *node) > +{ > + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); > + > + BUG_ON(!pmu->base.event_init); > + > + /* Select the first online CPU as a designated reader. */ > + if (cpumask_empty(&xe_pmu_cpumask)) > + cpumask_set_cpu(cpu, &xe_pmu_cpumask); > + > + return 0; > +} > + > +static int xe_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node) > +{ > + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); > + unsigned int target = xe_pmu_target_cpu; > + > + BUG_ON(!pmu->base.event_init); > > > nit but wondering if we should remove these two BUG_ON's (and save a couple > of checkpatch warnings even though the BUG_ON's are in i915) and just do > something like: > > if (!pmu->base.event_init) > return 0; > > The reason for the BUG_ON's seems to be that these functions can be called > after module_init but before probe. > > xe_pmu_cpu_online() doesn't depend on pmu at all so looks like the BUG_ON > can just be dropped? > > the xe_pmu_cpu_online/offline are not invoked when they are registered with > cpuhp_setup_state_multi, but rather when cpuhp_state_add_instance() is called > which is done post the PMU is initialized hence the check for BUG_ON. cpuhp_setup_state_multi is called at module_init time. cpuhp_state_add_instance is called from xe_pmu_register, i.e. during device probe when pmu->base.event_init is already initialized. Therefore seems even less reason to have the BUG_ON's. Just a few minor issues left now so I am hoping we can wrap this marathon review up soon :) Thanks. -- Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-31 16:58 ` Dixit, Ashutosh @ 2023-08-31 22:11 ` Aravind Iddamsetty 2023-08-31 22:21 ` Belgaumkar, Vinay 0 siblings, 1 reply; 29+ messages in thread From: Aravind Iddamsetty @ 2023-08-31 22:11 UTC (permalink / raw) To: Dixit, Ashutosh; +Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On 31/08/23 22:28, Dixit, Ashutosh wrote: HI Ashutosh, > On Thu, 31 Aug 2023 03:29:11 -0700, Aravind Iddamsetty wrote: > Hi Aravind, > > Hmm, what happened to the email formatting here? not sure, some how my email client is showing proper or I messed up. > >> On Tue, 29 Aug 2023 22:15:44 -0700, Aravind Iddamsetty wrote: >> >> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c >> new file mode 100644 >> index 000000000000..41dd422812ff >> --- /dev/null >> +++ b/drivers/gpu/drm/xe/xe_pmu.c >> @@ -0,0 +1,679 @@ >> +// SPDX-License-Identifier: MIT >> +/* >> + * Copyright © 2023 Intel Corporation >> + */ >> + >> +#include <drm/drm_drv.h> >> +#include <drm/drm_managed.h> >> +#include <drm/xe_drm.h> >> + >> +#include "regs/xe_gt_regs.h" >> +#include "xe_device.h" >> +#include "xe_gt_clock.h" >> +#include "xe_mmio.h" >> + >> +static cpumask_t xe_pmu_cpumask; >> +static unsigned int xe_pmu_target_cpu = -1; >> + >> +static unsigned int config_gt_id(const u64 config) >> +{ >> + return config >> __XE_PMU_GT_SHIFT; >> +} >> + >> +static u64 config_counter(const u64 config) >> +{ >> + return config & ~(~0ULL << __XE_PMU_GT_SHIFT); >> +} >> + >> +static int engine_busyness_sample_type(u64 config) >> +{ >> + int type = 0; >> >> >> Why initialize? The switch statement should have a default with a BUG/WARN_ON >> below? Also see the comment below. >> >> + >> + switch (config) { >> + case XE_PMU_RENDER_GROUP_BUSY(0): >> + type = __XE_SAMPLE_RENDER_GROUP_BUSY; >> + break; >> + case XE_PMU_COPY_GROUP_BUSY(0): >> + type = __XE_SAMPLE_COPY_GROUP_BUSY; >> + break; >> + case XE_PMU_MEDIA_GROUP_BUSY(0): >> + type = __XE_SAMPLE_MEDIA_GROUP_BUSY; >> + break; >> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >> + type = __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; >> + break; >> + } >> + >> + return type; >> +} >> >> >> I am thinking this function is not really needed. We can just do: >> >> int sample_type = config - 1; >> >> or >> >> int sample_type = config_counter(config) - 1; >> >> It might not always be true in future, the configs can start from any range. > Disagree. This is uapi. Once it is exposed it cannot change. I am talking > about this: > > +#define XE_PMU_INTERRUPTS(gt) ___XE_PMU_OTHER(gt, 0) > +#define XE_PMU_RENDER_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 1) > +#define XE_PMU_COPY_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 2) > +#define XE_PMU_MEDIA_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 3) > +#define XE_PMU_ANY_ENGINE_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 4) > > How can this "start from any range"? We can only add new counters after > these, not before these, correct? I didn't mean to say that these particular one's would change but any future new events that might fall into these categories might start from a different range. sorry for the confusion. Your suggestion makes it looks simple but somehow i wanted to tie this to the enums we defined in sample array, so ya will check one more time if it doesn't really makes any sense will clean it up. > >> in engine_group_busyness_read? See comment at __xe_pmu_event_read below. >> >> + >> +static void xe_pmu_event_destroy(struct perf_event *event) >> +{ >> + struct xe_device *xe = >> + container_of(event->pmu, typeof(*xe), pmu.base); >> + >> + drm_WARN_ON(&xe->drm, event->parent); >> + >> + drm_dev_put(&xe->drm); >> +} >> + >> +static u64 __engine_group_busyness_read(struct xe_gt *gt, int sample_type) >> +{ >> + u64 val = 0; > No need to initialize here I think. We are not really expecting to drop > into the default case, which should be caught much before we enter this > function. > >> + >> + switch (sample_type) { >> + case __XE_SAMPLE_RENDER_GROUP_BUSY: >> + val = xe_mmio_read32(gt, XE_OAG_RENDER_BUSY_FREE); >> + break; >> + case __XE_SAMPLE_COPY_GROUP_BUSY: >> + val = xe_mmio_read32(gt, XE_OAG_BLT_BUSY_FREE); >> + break; >> + case __XE_SAMPLE_MEDIA_GROUP_BUSY: >> + val = xe_mmio_read32(gt, XE_OAG_ANY_MEDIA_FF_BUSY_FREE); >> + break; >> + case __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY: >> + val = xe_mmio_read32(gt, XE_OAG_RC0_ANY_ENGINE_BUSY_FREE); >> + break; >> + default: >> + drm_warn(>->tile->xe->drm, "unknown pmu event\n"); >> + } >> + >> + return xe_gt_clock_cycles_to_ns(gt, val * 16); >> +} >> + >> +static u64 engine_group_busyness_read(struct xe_gt *gt, u64 config) >> +{ >> + int sample_type = engine_busyness_sample_type(config); >> >> >> If config is event->attr.config, this can just be 'config_counter(config) - 1'. >> See comment at __xe_pmu_event_read below. >> >> + const unsigned int gt_id = gt->info.id; >> + struct xe_device *xe = gt->tile->xe; >> + struct xe_pmu *pmu = &xe->pmu; >> + unsigned long flags; >> + bool device_awake; >> + u64 val; >> + >> + device_awake = xe_device_mem_access_get_if_ongoing(xe); >> + if (device_awake) { >> + XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT)); >> + val = __engine_group_busyness_read(gt, sample_type); >> + XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT)); >> + xe_device_mem_access_put(xe); >> + } >> + >> + spin_lock_irqsave(&pmu->lock, flags); >> + >> + if (device_awake) >> + pmu->sample[gt_id][sample_type] = val; >> + else >> + val = pmu->sample[gt_id][sample_type]; >> + >> + spin_unlock_irqrestore(&pmu->lock, flags); >> + >> + return val; >> +} >> + >> +static void engine_group_busyness_store(struct xe_gt *gt) >> +{ >> + struct xe_pmu *pmu = >->tile->xe->pmu; >> + unsigned int gt_id = gt->info.id; >> + unsigned long flags; >> + int i; >> + >> + spin_lock_irqsave(&pmu->lock, flags); >> + >> + for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { >> + pmu->sample[gt_id][i] = __engine_group_busyness_read(gt, i); >> >> >> This is not quite right. At the minimum we need to take forcewake >> here. Also since this is called in both suspend and runtime_suspend code >> paths we might also need to the take the runtime_pm reference. >> >> The pm reference and forcewake are already taken in suspend paths hence >> didn't add here again as this is called only from those paths. >> >> check xe_gt_suspend. > Sorry, you are right, I missed it. So this is fine. > > >> >> >> I think the simplest might be to just construct 'config' >> (event->attr.config) here and call engine_group_busyness_read? Something >> like: >> >> for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { >> config = ; // Construct config using gt_id and i >> engine_group_busyness_read(gt, i); >> } >> >> This will automatically save the read values in pmu->sample[][] if the >> device is awake. Thoughts? >> >> I think this is best kept separate from usual read paths(which are >> atomic) didn't want to club them. Also because forcewakes and pm >> reference are taken separately in suspend path. > Sure, no changes needed here. Just get rid of the braces to keep checkpatch > happy. > > >> >> >> + } >> + >> + spin_unlock_irqrestore(&pmu->lock, flags); >> +} >> + >> +static int >> +config_status(struct xe_device *xe, u64 config) >> +{ >> + unsigned int max_gt_id = xe->info.gt_count > 1 ? 1 : 0; >> >> >> What is this for? See below. >> >> reminiscent of my previous code, will clean it up. >> >> >> >> + unsigned int gt_id = config_gt_id(config); >> + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); >> + >> + if (gt_id > max_gt_id) >> >> >> Maybe this can just be: >> >> if (gt_id >= XE_PMU_MAX_GT) >> >> + return -ENOENT; >> + >> + switch (config_counter(config)) { >> + case XE_PMU_INTERRUPTS(0): >> + if (gt_id) >> + return -ENOENT; >> + break; >> + case XE_PMU_RENDER_GROUP_BUSY(0): >> + case XE_PMU_COPY_GROUP_BUSY(0): >> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >> + if (gt->info.type == XE_GT_TYPE_MEDIA) >> + return -ENOENT; >> + break; >> + case XE_PMU_MEDIA_GROUP_BUSY(0): >> + if (!(gt->info.engine_mask & (BIT(XE_HW_ENGINE_VCS0) | BIT(XE_HW_ENGINE_VECS0)))) >> + return -ENOENT; >> + break; >> + default: >> + return -ENOENT; >> + } >> + >> + return 0; >> +} >> + >> +static int xe_pmu_event_init(struct perf_event *event) >> +{ >> + struct xe_device *xe = >> + container_of(event->pmu, typeof(*xe), pmu.base); >> + struct xe_pmu *pmu = &xe->pmu; >> + int ret; >> + >> + if (pmu->closed) >> + return -ENODEV; >> + >> + if (event->attr.type != event->pmu->type) >> + return -ENOENT; >> + >> + /* unsupported modes and filters */ >> + if (event->attr.sample_period) /* no sampling */ >> + return -EINVAL; >> + >> + if (has_branch_stack(event)) >> + return -EOPNOTSUPP; >> + >> + if (event->cpu < 0) >> + return -EINVAL; >> + >> + /* only allow running on one cpu at a time */ >> + if (!cpumask_test_cpu(event->cpu, &xe_pmu_cpumask)) >> + return -EINVAL; >> + >> + ret = config_status(xe, event->attr.config); >> + if (ret) >> + return ret; >> + >> + if (!event->parent) { >> + drm_dev_get(&xe->drm); >> + event->destroy = xe_pmu_event_destroy; >> + } >> + >> + return 0; >> +} >> + >> +static u64 __xe_pmu_event_read(struct perf_event *event) >> +{ >> + struct xe_device *xe = >> + container_of(event->pmu, typeof(*xe), pmu.base); >> + const unsigned int gt_id = config_gt_id(event->attr.config); >> + const u64 config = config_counter(event->attr.config); >> >> >> Probably nit but this config being different from event->attr.config is >> confusing. Let's use 'event->attr.config' throughout as argument to >> functions and use config_counter() to get rid of gt_id. So get rid of this >> config variable. >> >> + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); >> + struct xe_pmu *pmu = &xe->pmu; >> + u64 val = 0; >> + >> + switch (config) { >> >> >> switch (config_counter(event->attr.config)) >> >> + case XE_PMU_INTERRUPTS(0): >> + val = READ_ONCE(pmu->irq_count); >> + break; >> + case XE_PMU_RENDER_GROUP_BUSY(0): >> + case XE_PMU_COPY_GROUP_BUSY(0): >> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >> + case XE_PMU_MEDIA_GROUP_BUSY(0): >> + val = engine_group_busyness_read(gt, config); >> >> >> engine_group_busyness_read(gt, event->attr.config); >> >> hmmm ok. >> >> >> >> Also, need a default case. >> >> + } >> + >> + return val; >> +} >> + >> +static void xe_pmu_event_read(struct perf_event *event) >> +{ >> + struct xe_device *xe = >> + container_of(event->pmu, typeof(*xe), pmu.base); >> + struct hw_perf_event *hwc = &event->hw; >> + struct xe_pmu *pmu = &xe->pmu; >> + u64 prev, new; >> + >> + if (pmu->closed) { >> + event->hw.state = PERF_HES_STOPPED; >> + return; >> + } >> +again: >> + prev = local64_read(&hwc->prev_count); >> + new = __xe_pmu_event_read(event); >> + >> + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) >> + goto again; >> + >> + local64_add(new - prev, &event->count); >> +} >> + >> +static void xe_pmu_enable(struct perf_event *event) >> +{ >> + /* >> + * Store the current counter value so we can report the correct delta >> + * for all listeners. Even when the event was already enabled and has >> + * an existing non-zero value. >> + */ >> + local64_set(&event->hw.prev_count, __xe_pmu_event_read(event)); >> >> >> Right now nothing is being enabled here (unlike i915) so the function name >> xe_pmu_enable looks weird. Not sure, maybe leave as is for when things get >> added in the future? >> >> +static int xe_pmu_cpu_online(unsigned int cpu, struct hlist_node *node) >> +{ >> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); >> + >> + BUG_ON(!pmu->base.event_init); >> + >> + /* Select the first online CPU as a designated reader. */ >> + if (cpumask_empty(&xe_pmu_cpumask)) >> + cpumask_set_cpu(cpu, &xe_pmu_cpumask); >> + >> + return 0; >> +} >> + >> +static int xe_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node) >> +{ >> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); >> + unsigned int target = xe_pmu_target_cpu; >> + >> + BUG_ON(!pmu->base.event_init); >> >> >> nit but wondering if we should remove these two BUG_ON's (and save a couple >> of checkpatch warnings even though the BUG_ON's are in i915) and just do >> something like: >> >> if (!pmu->base.event_init) >> return 0; >> >> The reason for the BUG_ON's seems to be that these functions can be called >> after module_init but before probe. >> >> xe_pmu_cpu_online() doesn't depend on pmu at all so looks like the BUG_ON >> can just be dropped? >> >> the xe_pmu_cpu_online/offline are not invoked when they are registered with >> cpuhp_setup_state_multi, but rather when cpuhp_state_add_instance() is called >> which is done post the PMU is initialized hence the check for BUG_ON. > cpuhp_setup_state_multi is called at module_init > time. cpuhp_state_add_instance is called from xe_pmu_register, i.e. during > device probe when pmu->base.event_init is already initialized. Therefore > seems even less reason to have the BUG_ON's. that is true even, so will remove the BUG_ON. > > Just a few minor issues left now so I am hoping we can wrap this marathon > review up soon :) ya i'm waiting for the same :) Thanks, Aravind. > > Thanks. > -- > Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-31 22:11 ` Aravind Iddamsetty @ 2023-08-31 22:21 ` Belgaumkar, Vinay 2023-08-31 23:11 ` Aravind Iddamsetty 0 siblings, 1 reply; 29+ messages in thread From: Belgaumkar, Vinay @ 2023-08-31 22:21 UTC (permalink / raw) To: Aravind Iddamsetty, Dixit, Ashutosh Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On 8/31/2023 3:11 PM, Aravind Iddamsetty wrote: > On 31/08/23 22:28, Dixit, Ashutosh wrote: > HI Ashutosh, > >> On Thu, 31 Aug 2023 03:29:11 -0700, Aravind Iddamsetty wrote: >> Hi Aravind, >> >> Hmm, what happened to the email formatting here? > not sure, some how my email client is showing proper or I messed up. >>> On Tue, 29 Aug 2023 22:15:44 -0700, Aravind Iddamsetty wrote: >>> >>> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c >>> new file mode 100644 >>> index 000000000000..41dd422812ff >>> --- /dev/null >>> +++ b/drivers/gpu/drm/xe/xe_pmu.c >>> @@ -0,0 +1,679 @@ >>> +// SPDX-License-Identifier: MIT >>> +/* >>> + * Copyright © 2023 Intel Corporation >>> + */ >>> + >>> +#include <drm/drm_drv.h> >>> +#include <drm/drm_managed.h> >>> +#include <drm/xe_drm.h> >>> + >>> +#include "regs/xe_gt_regs.h" >>> +#include "xe_device.h" >>> +#include "xe_gt_clock.h" >>> +#include "xe_mmio.h" >>> + >>> +static cpumask_t xe_pmu_cpumask; >>> +static unsigned int xe_pmu_target_cpu = -1; >>> + >>> +static unsigned int config_gt_id(const u64 config) >>> +{ >>> + return config >> __XE_PMU_GT_SHIFT; >>> +} >>> + >>> +static u64 config_counter(const u64 config) >>> +{ >>> + return config & ~(~0ULL << __XE_PMU_GT_SHIFT); >>> +} >>> + >>> +static int engine_busyness_sample_type(u64 config) >>> +{ >>> + int type = 0; >>> >>> >>> Why initialize? The switch statement should have a default with a BUG/WARN_ON >>> below? Also see the comment below. >>> >>> + >>> + switch (config) { >>> + case XE_PMU_RENDER_GROUP_BUSY(0): >>> + type = __XE_SAMPLE_RENDER_GROUP_BUSY; >>> + break; >>> + case XE_PMU_COPY_GROUP_BUSY(0): >>> + type = __XE_SAMPLE_COPY_GROUP_BUSY; >>> + break; >>> + case XE_PMU_MEDIA_GROUP_BUSY(0): >>> + type = __XE_SAMPLE_MEDIA_GROUP_BUSY; >>> + break; >>> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >>> + type = __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; >>> + break; >>> + } >>> + >>> + return type; >>> +} >>> >>> >>> I am thinking this function is not really needed. We can just do: >>> >>> int sample_type = config - 1; >>> >>> or >>> >>> int sample_type = config_counter(config) - 1; >>> >>> It might not always be true in future, the configs can start from any range. >> Disagree. This is uapi. Once it is exposed it cannot change. I am talking >> about this: >> >> +#define XE_PMU_INTERRUPTS(gt) ___XE_PMU_OTHER(gt, 0) >> +#define XE_PMU_RENDER_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 1) >> +#define XE_PMU_COPY_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 2) >> +#define XE_PMU_MEDIA_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 3) >> +#define XE_PMU_ANY_ENGINE_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 4) >> >> How can this "start from any range"? We can only add new counters after >> these, not before these, correct? > I didn't mean to say that these particular one's would change but any > future new events that might fall into these categories might start > from a different range. sorry for the confusion. > > Your suggestion makes it looks simple but somehow i wanted to tie this to > the enums we defined in sample array, so ya will check one more time if > it doesn't really makes any sense will clean it up. > > >>> in engine_group_busyness_read? See comment at __xe_pmu_event_read below. >>> >>> + >>> +static void xe_pmu_event_destroy(struct perf_event *event) >>> +{ >>> + struct xe_device *xe = >>> + container_of(event->pmu, typeof(*xe), pmu.base); >>> + >>> + drm_WARN_ON(&xe->drm, event->parent); >>> + >>> + drm_dev_put(&xe->drm); >>> +} >>> + >>> +static u64 __engine_group_busyness_read(struct xe_gt *gt, int sample_type) >>> +{ >>> + u64 val = 0; >> No need to initialize here I think. We are not really expecting to drop >> into the default case, which should be caught much before we enter this >> function. >> >>> + >>> + switch (sample_type) { >>> + case __XE_SAMPLE_RENDER_GROUP_BUSY: >>> + val = xe_mmio_read32(gt, XE_OAG_RENDER_BUSY_FREE); >>> + break; >>> + case __XE_SAMPLE_COPY_GROUP_BUSY: >>> + val = xe_mmio_read32(gt, XE_OAG_BLT_BUSY_FREE); >>> + break; >>> + case __XE_SAMPLE_MEDIA_GROUP_BUSY: >>> + val = xe_mmio_read32(gt, XE_OAG_ANY_MEDIA_FF_BUSY_FREE); >>> + break; >>> + case __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY: >>> + val = xe_mmio_read32(gt, XE_OAG_RC0_ANY_ENGINE_BUSY_FREE); >>> + break; >>> + default: >>> + drm_warn(>->tile->xe->drm, "unknown pmu event\n"); >>> + } >>> + >>> + return xe_gt_clock_cycles_to_ns(gt, val * 16); >>> +} >>> + >>> +static u64 engine_group_busyness_read(struct xe_gt *gt, u64 config) >>> +{ >>> + int sample_type = engine_busyness_sample_type(config); >>> >>> >>> If config is event->attr.config, this can just be 'config_counter(config) - 1'. >>> See comment at __xe_pmu_event_read below. >>> >>> + const unsigned int gt_id = gt->info.id; >>> + struct xe_device *xe = gt->tile->xe; >>> + struct xe_pmu *pmu = &xe->pmu; >>> + unsigned long flags; >>> + bool device_awake; >>> + u64 val; >>> + >>> + device_awake = xe_device_mem_access_get_if_ongoing(xe); >>> + if (device_awake) { >>> + XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT)); >>> + val = __engine_group_busyness_read(gt, sample_type); >>> + XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT)); >>> + xe_device_mem_access_put(xe); >>> + } >>> + >>> + spin_lock_irqsave(&pmu->lock, flags); >>> + >>> + if (device_awake) >>> + pmu->sample[gt_id][sample_type] = val; >>> + else >>> + val = pmu->sample[gt_id][sample_type]; >>> + >>> + spin_unlock_irqrestore(&pmu->lock, flags); >>> + >>> + return val; >>> +} >>> + >>> +static void engine_group_busyness_store(struct xe_gt *gt) >>> +{ >>> + struct xe_pmu *pmu = >->tile->xe->pmu; >>> + unsigned int gt_id = gt->info.id; >>> + unsigned long flags; >>> + int i; >>> + >>> + spin_lock_irqsave(&pmu->lock, flags); >>> + >>> + for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { >>> + pmu->sample[gt_id][i] = __engine_group_busyness_read(gt, i); >>> >>> >>> This is not quite right. At the minimum we need to take forcewake >>> here. Also since this is called in both suspend and runtime_suspend code >>> paths we might also need to the take the runtime_pm reference. >>> >>> The pm reference and forcewake are already taken in suspend paths hence >>> didn't add here again as this is called only from those paths. >>> >>> check xe_gt_suspend. >> Sorry, you are right, I missed it. So this is fine. >> >> >>> >>> I think the simplest might be to just construct 'config' >>> (event->attr.config) here and call engine_group_busyness_read? Something >>> like: >>> >>> for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { >>> config = ; // Construct config using gt_id and i >>> engine_group_busyness_read(gt, i); >>> } >>> >>> This will automatically save the read values in pmu->sample[][] if the >>> device is awake. Thoughts? >>> >>> I think this is best kept separate from usual read paths(which are >>> atomic) didn't want to club them. Also because forcewakes and pm >>> reference are taken separately in suspend path. >> Sure, no changes needed here. Just get rid of the braces to keep checkpatch >> happy. >> >> >>> >>> + } >>> + >>> + spin_unlock_irqrestore(&pmu->lock, flags); >>> +} >>> + >>> +static int >>> +config_status(struct xe_device *xe, u64 config) >>> +{ >>> + unsigned int max_gt_id = xe->info.gt_count > 1 ? 1 : 0; >>> >>> >>> What is this for? See below. >>> >>> reminiscent of my previous code, will clean it up. >>> >>> >>> >>> + unsigned int gt_id = config_gt_id(config); >>> + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); >>> + >>> + if (gt_id > max_gt_id) >>> >>> >>> Maybe this can just be: >>> >>> if (gt_id >= XE_PMU_MAX_GT) >>> >>> + return -ENOENT; >>> + >>> + switch (config_counter(config)) { >>> + case XE_PMU_INTERRUPTS(0): >>> + if (gt_id) >>> + return -ENOENT; >>> + break; >>> + case XE_PMU_RENDER_GROUP_BUSY(0): >>> + case XE_PMU_COPY_GROUP_BUSY(0): >>> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >>> + if (gt->info.type == XE_GT_TYPE_MEDIA) >>> + return -ENOENT; >>> + break; >>> + case XE_PMU_MEDIA_GROUP_BUSY(0): >>> + if (!(gt->info.engine_mask & (BIT(XE_HW_ENGINE_VCS0) | BIT(XE_HW_ENGINE_VECS0)))) >>> + return -ENOENT; >>> + break; >>> + default: >>> + return -ENOENT; >>> + } >>> + >>> + return 0; >>> +} >>> + >>> +static int xe_pmu_event_init(struct perf_event *event) >>> +{ >>> + struct xe_device *xe = >>> + container_of(event->pmu, typeof(*xe), pmu.base); >>> + struct xe_pmu *pmu = &xe->pmu; >>> + int ret; >>> + >>> + if (pmu->closed) >>> + return -ENODEV; >>> + >>> + if (event->attr.type != event->pmu->type) >>> + return -ENOENT; >>> + >>> + /* unsupported modes and filters */ >>> + if (event->attr.sample_period) /* no sampling */ >>> + return -EINVAL; >>> + >>> + if (has_branch_stack(event)) >>> + return -EOPNOTSUPP; >>> + >>> + if (event->cpu < 0) >>> + return -EINVAL; >>> + >>> + /* only allow running on one cpu at a time */ >>> + if (!cpumask_test_cpu(event->cpu, &xe_pmu_cpumask)) >>> + return -EINVAL; >>> + >>> + ret = config_status(xe, event->attr.config); >>> + if (ret) >>> + return ret; >>> + >>> + if (!event->parent) { >>> + drm_dev_get(&xe->drm); >>> + event->destroy = xe_pmu_event_destroy; >>> + } >>> + >>> + return 0; >>> +} >>> + >>> +static u64 __xe_pmu_event_read(struct perf_event *event) >>> +{ >>> + struct xe_device *xe = >>> + container_of(event->pmu, typeof(*xe), pmu.base); >>> + const unsigned int gt_id = config_gt_id(event->attr.config); >>> + const u64 config = config_counter(event->attr.config); >>> >>> >>> Probably nit but this config being different from event->attr.config is >>> confusing. Let's use 'event->attr.config' throughout as argument to >>> functions and use config_counter() to get rid of gt_id. So get rid of this >>> config variable. >>> >>> + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); >>> + struct xe_pmu *pmu = &xe->pmu; >>> + u64 val = 0; >>> + >>> + switch (config) { >>> >>> >>> switch (config_counter(event->attr.config)) >>> >>> + case XE_PMU_INTERRUPTS(0): >>> + val = READ_ONCE(pmu->irq_count); >>> + break; >>> + case XE_PMU_RENDER_GROUP_BUSY(0): >>> + case XE_PMU_COPY_GROUP_BUSY(0): >>> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >>> + case XE_PMU_MEDIA_GROUP_BUSY(0): >>> + val = engine_group_busyness_read(gt, config); >>> >>> >>> engine_group_busyness_read(gt, event->attr.config); >>> >>> hmmm ok. >>> >>> >>> >>> Also, need a default case. >>> >>> + } >>> + >>> + return val; >>> +} >>> + >>> +static void xe_pmu_event_read(struct perf_event *event) >>> +{ >>> + struct xe_device *xe = >>> + container_of(event->pmu, typeof(*xe), pmu.base); >>> + struct hw_perf_event *hwc = &event->hw; >>> + struct xe_pmu *pmu = &xe->pmu; >>> + u64 prev, new; >>> + >>> + if (pmu->closed) { >>> + event->hw.state = PERF_HES_STOPPED; >>> + return; >>> + } >>> +again: >>> + prev = local64_read(&hwc->prev_count); >>> + new = __xe_pmu_event_read(event); >>> + >>> + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) >>> + goto again; >>> + >>> + local64_add(new - prev, &event->count); >>> +} >>> + >>> +static void xe_pmu_enable(struct perf_event *event) >>> +{ The i915_pmu code checks which event is requested here and accordingly sets pmu->enable (which doesn't seem to be defined here yet). Any reason we are not doing this yet? Thanks, Vinay. >>> + /* >>> + * Store the current counter value so we can report the correct delta >>> + * for all listeners. Even when the event was already enabled and has >>> + * an existing non-zero value. >>> + */ >>> + local64_set(&event->hw.prev_count, __xe_pmu_event_read(event)); >>> >>> >>> Right now nothing is being enabled here (unlike i915) so the function name >>> xe_pmu_enable looks weird. Not sure, maybe leave as is for when things get >>> added in the future? >>> >>> +static int xe_pmu_cpu_online(unsigned int cpu, struct hlist_node *node) >>> +{ >>> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); >>> + >>> + BUG_ON(!pmu->base.event_init); >>> + >>> + /* Select the first online CPU as a designated reader. */ >>> + if (cpumask_empty(&xe_pmu_cpumask)) >>> + cpumask_set_cpu(cpu, &xe_pmu_cpumask); >>> + >>> + return 0; >>> +} >>> + >>> +static int xe_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node) >>> +{ >>> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); >>> + unsigned int target = xe_pmu_target_cpu; >>> + >>> + BUG_ON(!pmu->base.event_init); >>> >>> >>> nit but wondering if we should remove these two BUG_ON's (and save a couple >>> of checkpatch warnings even though the BUG_ON's are in i915) and just do >>> something like: >>> >>> if (!pmu->base.event_init) >>> return 0; >>> >>> The reason for the BUG_ON's seems to be that these functions can be called >>> after module_init but before probe. >>> >>> xe_pmu_cpu_online() doesn't depend on pmu at all so looks like the BUG_ON >>> can just be dropped? >>> >>> the xe_pmu_cpu_online/offline are not invoked when they are registered with >>> cpuhp_setup_state_multi, but rather when cpuhp_state_add_instance() is called >>> which is done post the PMU is initialized hence the check for BUG_ON. >> cpuhp_setup_state_multi is called at module_init >> time. cpuhp_state_add_instance is called from xe_pmu_register, i.e. during >> device probe when pmu->base.event_init is already initialized. Therefore >> seems even less reason to have the BUG_ON's. > that is true even, so will remove the BUG_ON. >> Just a few minor issues left now so I am hoping we can wrap this marathon >> review up soon :) > ya i'm waiting for the same :) > > Thanks, > Aravind. >> Thanks. >> -- >> Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-31 22:21 ` Belgaumkar, Vinay @ 2023-08-31 23:11 ` Aravind Iddamsetty 2023-08-31 23:22 ` Belgaumkar, Vinay 0 siblings, 1 reply; 29+ messages in thread From: Aravind Iddamsetty @ 2023-08-31 23:11 UTC (permalink / raw) To: Belgaumkar, Vinay, Dixit, Ashutosh Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On 01/09/23 03:51, Belgaumkar, Vinay wrote: > > On 8/31/2023 3:11 PM, Aravind Iddamsetty wrote: >> On 31/08/23 22:28, Dixit, Ashutosh wrote: >> HI Ashutosh, >> >>> On Thu, 31 Aug 2023 03:29:11 -0700, Aravind Iddamsetty wrote: >>> Hi Aravind, >>> >>> Hmm, what happened to the email formatting here? >> not sure, some how my email client is showing proper or I messed up. >>>> On Tue, 29 Aug 2023 22:15:44 -0700, Aravind Iddamsetty wrote: >>>> >>>> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c >>>> new file mode 100644 >>>> index 000000000000..41dd422812ff >>>> --- /dev/null >>>> +++ b/drivers/gpu/drm/xe/xe_pmu.c >>>> @@ -0,0 +1,679 @@ >>>> +// SPDX-License-Identifier: MIT >>>> +/* >>>> + * Copyright © 2023 Intel Corporation >>>> + */ >>>> + >>>> +#include <drm/drm_drv.h> >>>> +#include <drm/drm_managed.h> >>>> +#include <drm/xe_drm.h> >>>> + >>>> +#include "regs/xe_gt_regs.h" >>>> +#include "xe_device.h" >>>> +#include "xe_gt_clock.h" >>>> +#include "xe_mmio.h" >>>> + >>>> +static cpumask_t xe_pmu_cpumask; >>>> +static unsigned int xe_pmu_target_cpu = -1; >>>> + >>>> +static unsigned int config_gt_id(const u64 config) >>>> +{ >>>> + return config >> __XE_PMU_GT_SHIFT; >>>> +} >>>> + >>>> +static u64 config_counter(const u64 config) >>>> +{ >>>> + return config & ~(~0ULL << __XE_PMU_GT_SHIFT); >>>> +} >>>> + >>>> +static int engine_busyness_sample_type(u64 config) >>>> +{ >>>> + int type = 0; >>>> >>>> >>>> Why initialize? The switch statement should have a default with a BUG/WARN_ON >>>> below? Also see the comment below. >>>> >>>> + >>>> + switch (config) { >>>> + case XE_PMU_RENDER_GROUP_BUSY(0): >>>> + type = __XE_SAMPLE_RENDER_GROUP_BUSY; >>>> + break; >>>> + case XE_PMU_COPY_GROUP_BUSY(0): >>>> + type = __XE_SAMPLE_COPY_GROUP_BUSY; >>>> + break; >>>> + case XE_PMU_MEDIA_GROUP_BUSY(0): >>>> + type = __XE_SAMPLE_MEDIA_GROUP_BUSY; >>>> + break; >>>> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >>>> + type = __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; >>>> + break; >>>> + } >>>> + >>>> + return type; >>>> +} >>>> >>>> >>>> I am thinking this function is not really needed. We can just do: >>>> >>>> int sample_type = config - 1; >>>> >>>> or >>>> >>>> int sample_type = config_counter(config) - 1; >>>> >>>> It might not always be true in future, the configs can start from any range. >>> Disagree. This is uapi. Once it is exposed it cannot change. I am talking >>> about this: >>> >>> +#define XE_PMU_INTERRUPTS(gt) ___XE_PMU_OTHER(gt, 0) >>> +#define XE_PMU_RENDER_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 1) >>> +#define XE_PMU_COPY_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 2) >>> +#define XE_PMU_MEDIA_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 3) >>> +#define XE_PMU_ANY_ENGINE_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 4) >>> >>> How can this "start from any range"? We can only add new counters after >>> these, not before these, correct? >> I didn't mean to say that these particular one's would change but any >> future new events that might fall into these categories might start >> from a different range. sorry for the confusion. >> >> Your suggestion makes it looks simple but somehow i wanted to tie this to >> the enums we defined in sample array, so ya will check one more time if >> it doesn't really makes any sense will clean it up. >> >> >>>> in engine_group_busyness_read? See comment at __xe_pmu_event_read below. >>>> >>>> + >>>> +static void xe_pmu_event_destroy(struct perf_event *event) >>>> +{ >>>> + struct xe_device *xe = >>>> + container_of(event->pmu, typeof(*xe), pmu.base); >>>> + >>>> + drm_WARN_ON(&xe->drm, event->parent); >>>> + >>>> + drm_dev_put(&xe->drm); >>>> +} >>>> + >>>> +static u64 __engine_group_busyness_read(struct xe_gt *gt, int sample_type) >>>> +{ >>>> + u64 val = 0; >>> No need to initialize here I think. We are not really expecting to drop >>> into the default case, which should be caught much before we enter this >>> function. >>> >>>> + >>>> + switch (sample_type) { >>>> + case __XE_SAMPLE_RENDER_GROUP_BUSY: >>>> + val = xe_mmio_read32(gt, XE_OAG_RENDER_BUSY_FREE); >>>> + break; >>>> + case __XE_SAMPLE_COPY_GROUP_BUSY: >>>> + val = xe_mmio_read32(gt, XE_OAG_BLT_BUSY_FREE); >>>> + break; >>>> + case __XE_SAMPLE_MEDIA_GROUP_BUSY: >>>> + val = xe_mmio_read32(gt, XE_OAG_ANY_MEDIA_FF_BUSY_FREE); >>>> + break; >>>> + case __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY: >>>> + val = xe_mmio_read32(gt, XE_OAG_RC0_ANY_ENGINE_BUSY_FREE); >>>> + break; >>>> + default: >>>> + drm_warn(>->tile->xe->drm, "unknown pmu event\n"); >>>> + } >>>> + >>>> + return xe_gt_clock_cycles_to_ns(gt, val * 16); >>>> +} >>>> + >>>> +static u64 engine_group_busyness_read(struct xe_gt *gt, u64 config) >>>> +{ >>>> + int sample_type = engine_busyness_sample_type(config); >>>> >>>> >>>> If config is event->attr.config, this can just be 'config_counter(config) - 1'. >>>> See comment at __xe_pmu_event_read below. >>>> >>>> + const unsigned int gt_id = gt->info.id; >>>> + struct xe_device *xe = gt->tile->xe; >>>> + struct xe_pmu *pmu = &xe->pmu; >>>> + unsigned long flags; >>>> + bool device_awake; >>>> + u64 val; >>>> + >>>> + device_awake = xe_device_mem_access_get_if_ongoing(xe); >>>> + if (device_awake) { >>>> + XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT)); >>>> + val = __engine_group_busyness_read(gt, sample_type); >>>> + XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT)); >>>> + xe_device_mem_access_put(xe); >>>> + } >>>> + >>>> + spin_lock_irqsave(&pmu->lock, flags); >>>> + >>>> + if (device_awake) >>>> + pmu->sample[gt_id][sample_type] = val; >>>> + else >>>> + val = pmu->sample[gt_id][sample_type]; >>>> + >>>> + spin_unlock_irqrestore(&pmu->lock, flags); >>>> + >>>> + return val; >>>> +} >>>> + >>>> +static void engine_group_busyness_store(struct xe_gt *gt) >>>> +{ >>>> + struct xe_pmu *pmu = >->tile->xe->pmu; >>>> + unsigned int gt_id = gt->info.id; >>>> + unsigned long flags; >>>> + int i; >>>> + >>>> + spin_lock_irqsave(&pmu->lock, flags); >>>> + >>>> + for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { >>>> + pmu->sample[gt_id][i] = __engine_group_busyness_read(gt, i); >>>> >>>> >>>> This is not quite right. At the minimum we need to take forcewake >>>> here. Also since this is called in both suspend and runtime_suspend code >>>> paths we might also need to the take the runtime_pm reference. >>>> >>>> The pm reference and forcewake are already taken in suspend paths hence >>>> didn't add here again as this is called only from those paths. >>>> >>>> check xe_gt_suspend. >>> Sorry, you are right, I missed it. So this is fine. >>> >>> >>>> >>>> I think the simplest might be to just construct 'config' >>>> (event->attr.config) here and call engine_group_busyness_read? Something >>>> like: >>>> >>>> for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { >>>> config = ; // Construct config using gt_id and i >>>> engine_group_busyness_read(gt, i); >>>> } >>>> >>>> This will automatically save the read values in pmu->sample[][] if the >>>> device is awake. Thoughts? >>>> >>>> I think this is best kept separate from usual read paths(which are >>>> atomic) didn't want to club them. Also because forcewakes and pm >>>> reference are taken separately in suspend path. >>> Sure, no changes needed here. Just get rid of the braces to keep checkpatch >>> happy. >>> >>> >>>> >>>> + } >>>> + >>>> + spin_unlock_irqrestore(&pmu->lock, flags); >>>> +} >>>> + >>>> +static int >>>> +config_status(struct xe_device *xe, u64 config) >>>> +{ >>>> + unsigned int max_gt_id = xe->info.gt_count > 1 ? 1 : 0; >>>> >>>> >>>> What is this for? See below. >>>> >>>> reminiscent of my previous code, will clean it up. >>>> >>>> >>>> >>>> + unsigned int gt_id = config_gt_id(config); >>>> + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); >>>> + >>>> + if (gt_id > max_gt_id) >>>> >>>> >>>> Maybe this can just be: >>>> >>>> if (gt_id >= XE_PMU_MAX_GT) >>>> >>>> + return -ENOENT; >>>> + >>>> + switch (config_counter(config)) { >>>> + case XE_PMU_INTERRUPTS(0): >>>> + if (gt_id) >>>> + return -ENOENT; >>>> + break; >>>> + case XE_PMU_RENDER_GROUP_BUSY(0): >>>> + case XE_PMU_COPY_GROUP_BUSY(0): >>>> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >>>> + if (gt->info.type == XE_GT_TYPE_MEDIA) >>>> + return -ENOENT; >>>> + break; >>>> + case XE_PMU_MEDIA_GROUP_BUSY(0): >>>> + if (!(gt->info.engine_mask & (BIT(XE_HW_ENGINE_VCS0) | BIT(XE_HW_ENGINE_VECS0)))) >>>> + return -ENOENT; >>>> + break; >>>> + default: >>>> + return -ENOENT; >>>> + } >>>> + >>>> + return 0; >>>> +} >>>> + >>>> +static int xe_pmu_event_init(struct perf_event *event) >>>> +{ >>>> + struct xe_device *xe = >>>> + container_of(event->pmu, typeof(*xe), pmu.base); >>>> + struct xe_pmu *pmu = &xe->pmu; >>>> + int ret; >>>> + >>>> + if (pmu->closed) >>>> + return -ENODEV; >>>> + >>>> + if (event->attr.type != event->pmu->type) >>>> + return -ENOENT; >>>> + >>>> + /* unsupported modes and filters */ >>>> + if (event->attr.sample_period) /* no sampling */ >>>> + return -EINVAL; >>>> + >>>> + if (has_branch_stack(event)) >>>> + return -EOPNOTSUPP; >>>> + >>>> + if (event->cpu < 0) >>>> + return -EINVAL; >>>> + >>>> + /* only allow running on one cpu at a time */ >>>> + if (!cpumask_test_cpu(event->cpu, &xe_pmu_cpumask)) >>>> + return -EINVAL; >>>> + >>>> + ret = config_status(xe, event->attr.config); >>>> + if (ret) >>>> + return ret; >>>> + >>>> + if (!event->parent) { >>>> + drm_dev_get(&xe->drm); >>>> + event->destroy = xe_pmu_event_destroy; >>>> + } >>>> + >>>> + return 0; >>>> +} >>>> + >>>> +static u64 __xe_pmu_event_read(struct perf_event *event) >>>> +{ >>>> + struct xe_device *xe = >>>> + container_of(event->pmu, typeof(*xe), pmu.base); >>>> + const unsigned int gt_id = config_gt_id(event->attr.config); >>>> + const u64 config = config_counter(event->attr.config); >>>> >>>> >>>> Probably nit but this config being different from event->attr.config is >>>> confusing. Let's use 'event->attr.config' throughout as argument to >>>> functions and use config_counter() to get rid of gt_id. So get rid of this >>>> config variable. >>>> >>>> + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); >>>> + struct xe_pmu *pmu = &xe->pmu; >>>> + u64 val = 0; >>>> + >>>> + switch (config) { >>>> >>>> >>>> switch (config_counter(event->attr.config)) >>>> >>>> + case XE_PMU_INTERRUPTS(0): >>>> + val = READ_ONCE(pmu->irq_count); >>>> + break; >>>> + case XE_PMU_RENDER_GROUP_BUSY(0): >>>> + case XE_PMU_COPY_GROUP_BUSY(0): >>>> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >>>> + case XE_PMU_MEDIA_GROUP_BUSY(0): >>>> + val = engine_group_busyness_read(gt, config); >>>> >>>> >>>> engine_group_busyness_read(gt, event->attr.config); >>>> >>>> hmmm ok. >>>> >>>> >>>> >>>> Also, need a default case. >>>> >>>> + } >>>> + >>>> + return val; >>>> +} >>>> + >>>> +static void xe_pmu_event_read(struct perf_event *event) >>>> +{ >>>> + struct xe_device *xe = >>>> + container_of(event->pmu, typeof(*xe), pmu.base); >>>> + struct hw_perf_event *hwc = &event->hw; >>>> + struct xe_pmu *pmu = &xe->pmu; >>>> + u64 prev, new; >>>> + >>>> + if (pmu->closed) { >>>> + event->hw.state = PERF_HES_STOPPED; >>>> + return; >>>> + } >>>> +again: >>>> + prev = local64_read(&hwc->prev_count); >>>> + new = __xe_pmu_event_read(event); >>>> + >>>> + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) >>>> + goto again; >>>> + >>>> + local64_add(new - prev, &event->count); >>>> +} >>>> + >>>> +static void xe_pmu_enable(struct perf_event *event) >>>> +{ > > The i915_pmu code checks which event is requested here and accordingly sets pmu->enable (which doesn't seem to be defined here yet). Any reason we are not doing this yet? in i915 pmu->enable is only used by events for which there is an internal timer sampler which periodically samples those events, this series is not adding such events. Thanks, Aravind. > > Thanks, > > Vinay. > >>>> + /* >>>> + * Store the current counter value so we can report the correct delta >>>> + * for all listeners. Even when the event was already enabled and has >>>> + * an existing non-zero value. >>>> + */ >>>> + local64_set(&event->hw.prev_count, __xe_pmu_event_read(event)); >>>> >>>> >>>> Right now nothing is being enabled here (unlike i915) so the function name >>>> xe_pmu_enable looks weird. Not sure, maybe leave as is for when things get >>>> added in the future? >>>> >>>> +static int xe_pmu_cpu_online(unsigned int cpu, struct hlist_node *node) >>>> +{ >>>> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); >>>> + >>>> + BUG_ON(!pmu->base.event_init); >>>> + >>>> + /* Select the first online CPU as a designated reader. */ >>>> + if (cpumask_empty(&xe_pmu_cpumask)) >>>> + cpumask_set_cpu(cpu, &xe_pmu_cpumask); >>>> + >>>> + return 0; >>>> +} >>>> + >>>> +static int xe_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node) >>>> +{ >>>> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); >>>> + unsigned int target = xe_pmu_target_cpu; >>>> + >>>> + BUG_ON(!pmu->base.event_init); >>>> >>>> >>>> nit but wondering if we should remove these two BUG_ON's (and save a couple >>>> of checkpatch warnings even though the BUG_ON's are in i915) and just do >>>> something like: >>>> >>>> if (!pmu->base.event_init) >>>> return 0; >>>> >>>> The reason for the BUG_ON's seems to be that these functions can be called >>>> after module_init but before probe. >>>> >>>> xe_pmu_cpu_online() doesn't depend on pmu at all so looks like the BUG_ON >>>> can just be dropped? >>>> >>>> the xe_pmu_cpu_online/offline are not invoked when they are registered with >>>> cpuhp_setup_state_multi, but rather when cpuhp_state_add_instance() is called >>>> which is done post the PMU is initialized hence the check for BUG_ON. >>> cpuhp_setup_state_multi is called at module_init >>> time. cpuhp_state_add_instance is called from xe_pmu_register, i.e. during >>> device probe when pmu->base.event_init is already initialized. Therefore >>> seems even less reason to have the BUG_ON's. >> that is true even, so will remove the BUG_ON. >>> Just a few minor issues left now so I am hoping we can wrap this marathon >>> review up soon :) >> ya i'm waiting for the same :) >> >> Thanks, >> Aravind. >>> Thanks. >>> -- >>> Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-31 23:11 ` Aravind Iddamsetty @ 2023-08-31 23:22 ` Belgaumkar, Vinay 2023-08-31 23:16 ` Dixit, Ashutosh 0 siblings, 1 reply; 29+ messages in thread From: Belgaumkar, Vinay @ 2023-08-31 23:22 UTC (permalink / raw) To: Aravind Iddamsetty, Dixit, Ashutosh Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On 8/31/2023 4:11 PM, Aravind Iddamsetty wrote: > On 01/09/23 03:51, Belgaumkar, Vinay wrote: >> On 8/31/2023 3:11 PM, Aravind Iddamsetty wrote: >>> On 31/08/23 22:28, Dixit, Ashutosh wrote: >>> HI Ashutosh, >>> >>>> On Thu, 31 Aug 2023 03:29:11 -0700, Aravind Iddamsetty wrote: >>>> Hi Aravind, >>>> >>>> Hmm, what happened to the email formatting here? >>> not sure, some how my email client is showing proper or I messed up. >>>>> On Tue, 29 Aug 2023 22:15:44 -0700, Aravind Iddamsetty wrote: >>>>> >>>>> diff --git a/drivers/gpu/drm/xe/xe_pmu.c b/drivers/gpu/drm/xe/xe_pmu.c >>>>> new file mode 100644 >>>>> index 000000000000..41dd422812ff >>>>> --- /dev/null >>>>> +++ b/drivers/gpu/drm/xe/xe_pmu.c >>>>> @@ -0,0 +1,679 @@ >>>>> +// SPDX-License-Identifier: MIT >>>>> +/* >>>>> + * Copyright © 2023 Intel Corporation >>>>> + */ >>>>> + >>>>> +#include <drm/drm_drv.h> >>>>> +#include <drm/drm_managed.h> >>>>> +#include <drm/xe_drm.h> >>>>> + >>>>> +#include "regs/xe_gt_regs.h" >>>>> +#include "xe_device.h" >>>>> +#include "xe_gt_clock.h" >>>>> +#include "xe_mmio.h" >>>>> + >>>>> +static cpumask_t xe_pmu_cpumask; >>>>> +static unsigned int xe_pmu_target_cpu = -1; >>>>> + >>>>> +static unsigned int config_gt_id(const u64 config) >>>>> +{ >>>>> + return config >> __XE_PMU_GT_SHIFT; >>>>> +} >>>>> + >>>>> +static u64 config_counter(const u64 config) >>>>> +{ >>>>> + return config & ~(~0ULL << __XE_PMU_GT_SHIFT); >>>>> +} >>>>> + >>>>> +static int engine_busyness_sample_type(u64 config) >>>>> +{ >>>>> + int type = 0; >>>>> >>>>> >>>>> Why initialize? The switch statement should have a default with a BUG/WARN_ON >>>>> below? Also see the comment below. >>>>> >>>>> + >>>>> + switch (config) { >>>>> + case XE_PMU_RENDER_GROUP_BUSY(0): >>>>> + type = __XE_SAMPLE_RENDER_GROUP_BUSY; >>>>> + break; >>>>> + case XE_PMU_COPY_GROUP_BUSY(0): >>>>> + type = __XE_SAMPLE_COPY_GROUP_BUSY; >>>>> + break; >>>>> + case XE_PMU_MEDIA_GROUP_BUSY(0): >>>>> + type = __XE_SAMPLE_MEDIA_GROUP_BUSY; >>>>> + break; >>>>> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >>>>> + type = __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; >>>>> + break; >>>>> + } >>>>> + >>>>> + return type; >>>>> +} >>>>> >>>>> >>>>> I am thinking this function is not really needed. We can just do: >>>>> >>>>> int sample_type = config - 1; >>>>> >>>>> or >>>>> >>>>> int sample_type = config_counter(config) - 1; >>>>> >>>>> It might not always be true in future, the configs can start from any range. >>>> Disagree. This is uapi. Once it is exposed it cannot change. I am talking >>>> about this: >>>> >>>> +#define XE_PMU_INTERRUPTS(gt) ___XE_PMU_OTHER(gt, 0) >>>> +#define XE_PMU_RENDER_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 1) >>>> +#define XE_PMU_COPY_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 2) >>>> +#define XE_PMU_MEDIA_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 3) >>>> +#define XE_PMU_ANY_ENGINE_GROUP_BUSY(gt) ___XE_PMU_OTHER(gt, 4) >>>> >>>> How can this "start from any range"? We can only add new counters after >>>> these, not before these, correct? >>> I didn't mean to say that these particular one's would change but any >>> future new events that might fall into these categories might start >>> from a different range. sorry for the confusion. >>> >>> Your suggestion makes it looks simple but somehow i wanted to tie this to >>> the enums we defined in sample array, so ya will check one more time if >>> it doesn't really makes any sense will clean it up. >>> >>> >>>>> in engine_group_busyness_read? See comment at __xe_pmu_event_read below. >>>>> >>>>> + >>>>> +static void xe_pmu_event_destroy(struct perf_event *event) >>>>> +{ >>>>> + struct xe_device *xe = >>>>> + container_of(event->pmu, typeof(*xe), pmu.base); >>>>> + >>>>> + drm_WARN_ON(&xe->drm, event->parent); >>>>> + >>>>> + drm_dev_put(&xe->drm); >>>>> +} >>>>> + >>>>> +static u64 __engine_group_busyness_read(struct xe_gt *gt, int sample_type) >>>>> +{ >>>>> + u64 val = 0; >>>> No need to initialize here I think. We are not really expecting to drop >>>> into the default case, which should be caught much before we enter this >>>> function. >>>> >>>>> + >>>>> + switch (sample_type) { >>>>> + case __XE_SAMPLE_RENDER_GROUP_BUSY: >>>>> + val = xe_mmio_read32(gt, XE_OAG_RENDER_BUSY_FREE); >>>>> + break; >>>>> + case __XE_SAMPLE_COPY_GROUP_BUSY: >>>>> + val = xe_mmio_read32(gt, XE_OAG_BLT_BUSY_FREE); >>>>> + break; >>>>> + case __XE_SAMPLE_MEDIA_GROUP_BUSY: >>>>> + val = xe_mmio_read32(gt, XE_OAG_ANY_MEDIA_FF_BUSY_FREE); >>>>> + break; >>>>> + case __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY: >>>>> + val = xe_mmio_read32(gt, XE_OAG_RC0_ANY_ENGINE_BUSY_FREE); >>>>> + break; >>>>> + default: >>>>> + drm_warn(>->tile->xe->drm, "unknown pmu event\n"); >>>>> + } >>>>> + >>>>> + return xe_gt_clock_cycles_to_ns(gt, val * 16); >>>>> +} >>>>> + >>>>> +static u64 engine_group_busyness_read(struct xe_gt *gt, u64 config) >>>>> +{ >>>>> + int sample_type = engine_busyness_sample_type(config); >>>>> >>>>> >>>>> If config is event->attr.config, this can just be 'config_counter(config) - 1'. >>>>> See comment at __xe_pmu_event_read below. >>>>> >>>>> + const unsigned int gt_id = gt->info.id; >>>>> + struct xe_device *xe = gt->tile->xe; >>>>> + struct xe_pmu *pmu = &xe->pmu; >>>>> + unsigned long flags; >>>>> + bool device_awake; >>>>> + u64 val; >>>>> + >>>>> + device_awake = xe_device_mem_access_get_if_ongoing(xe); >>>>> + if (device_awake) { >>>>> + XE_WARN_ON(xe_force_wake_get(gt_to_fw(gt), XE_FW_GT)); >>>>> + val = __engine_group_busyness_read(gt, sample_type); >>>>> + XE_WARN_ON(xe_force_wake_put(gt_to_fw(gt), XE_FW_GT)); >>>>> + xe_device_mem_access_put(xe); >>>>> + } >>>>> + >>>>> + spin_lock_irqsave(&pmu->lock, flags); >>>>> + >>>>> + if (device_awake) >>>>> + pmu->sample[gt_id][sample_type] = val; >>>>> + else >>>>> + val = pmu->sample[gt_id][sample_type]; >>>>> + >>>>> + spin_unlock_irqrestore(&pmu->lock, flags); >>>>> + >>>>> + return val; >>>>> +} >>>>> + >>>>> +static void engine_group_busyness_store(struct xe_gt *gt) >>>>> +{ >>>>> + struct xe_pmu *pmu = >->tile->xe->pmu; >>>>> + unsigned int gt_id = gt->info.id; >>>>> + unsigned long flags; >>>>> + int i; >>>>> + >>>>> + spin_lock_irqsave(&pmu->lock, flags); >>>>> + >>>>> + for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { >>>>> + pmu->sample[gt_id][i] = __engine_group_busyness_read(gt, i); >>>>> >>>>> >>>>> This is not quite right. At the minimum we need to take forcewake >>>>> here. Also since this is called in both suspend and runtime_suspend code >>>>> paths we might also need to the take the runtime_pm reference. >>>>> >>>>> The pm reference and forcewake are already taken in suspend paths hence >>>>> didn't add here again as this is called only from those paths. >>>>> >>>>> check xe_gt_suspend. >>>> Sorry, you are right, I missed it. So this is fine. >>>> >>>> >>>>> I think the simplest might be to just construct 'config' >>>>> (event->attr.config) here and call engine_group_busyness_read? Something >>>>> like: >>>>> >>>>> for (i = __XE_SAMPLE_RENDER_GROUP_BUSY; i <= __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY; i++) { >>>>> config = ; // Construct config using gt_id and i >>>>> engine_group_busyness_read(gt, i); >>>>> } >>>>> >>>>> This will automatically save the read values in pmu->sample[][] if the >>>>> device is awake. Thoughts? >>>>> >>>>> I think this is best kept separate from usual read paths(which are >>>>> atomic) didn't want to club them. Also because forcewakes and pm >>>>> reference are taken separately in suspend path. >>>> Sure, no changes needed here. Just get rid of the braces to keep checkpatch >>>> happy. >>>> >>>> >>>>> + } >>>>> + >>>>> + spin_unlock_irqrestore(&pmu->lock, flags); >>>>> +} >>>>> + >>>>> +static int >>>>> +config_status(struct xe_device *xe, u64 config) >>>>> +{ >>>>> + unsigned int max_gt_id = xe->info.gt_count > 1 ? 1 : 0; >>>>> >>>>> >>>>> What is this for? See below. >>>>> >>>>> reminiscent of my previous code, will clean it up. >>>>> >>>>> >>>>> >>>>> + unsigned int gt_id = config_gt_id(config); >>>>> + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); >>>>> + >>>>> + if (gt_id > max_gt_id) >>>>> >>>>> >>>>> Maybe this can just be: >>>>> >>>>> if (gt_id >= XE_PMU_MAX_GT) >>>>> >>>>> + return -ENOENT; >>>>> + >>>>> + switch (config_counter(config)) { >>>>> + case XE_PMU_INTERRUPTS(0): >>>>> + if (gt_id) >>>>> + return -ENOENT; >>>>> + break; >>>>> + case XE_PMU_RENDER_GROUP_BUSY(0): >>>>> + case XE_PMU_COPY_GROUP_BUSY(0): >>>>> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >>>>> + if (gt->info.type == XE_GT_TYPE_MEDIA) >>>>> + return -ENOENT; >>>>> + break; >>>>> + case XE_PMU_MEDIA_GROUP_BUSY(0): >>>>> + if (!(gt->info.engine_mask & (BIT(XE_HW_ENGINE_VCS0) | BIT(XE_HW_ENGINE_VECS0)))) >>>>> + return -ENOENT; >>>>> + break; >>>>> + default: >>>>> + return -ENOENT; >>>>> + } >>>>> + >>>>> + return 0; >>>>> +} >>>>> + >>>>> +static int xe_pmu_event_init(struct perf_event *event) >>>>> +{ >>>>> + struct xe_device *xe = >>>>> + container_of(event->pmu, typeof(*xe), pmu.base); >>>>> + struct xe_pmu *pmu = &xe->pmu; >>>>> + int ret; >>>>> + >>>>> + if (pmu->closed) >>>>> + return -ENODEV; >>>>> + >>>>> + if (event->attr.type != event->pmu->type) >>>>> + return -ENOENT; >>>>> + >>>>> + /* unsupported modes and filters */ >>>>> + if (event->attr.sample_period) /* no sampling */ >>>>> + return -EINVAL; >>>>> + >>>>> + if (has_branch_stack(event)) >>>>> + return -EOPNOTSUPP; >>>>> + >>>>> + if (event->cpu < 0) >>>>> + return -EINVAL; >>>>> + >>>>> + /* only allow running on one cpu at a time */ >>>>> + if (!cpumask_test_cpu(event->cpu, &xe_pmu_cpumask)) >>>>> + return -EINVAL; >>>>> + >>>>> + ret = config_status(xe, event->attr.config); >>>>> + if (ret) >>>>> + return ret; >>>>> + >>>>> + if (!event->parent) { >>>>> + drm_dev_get(&xe->drm); >>>>> + event->destroy = xe_pmu_event_destroy; >>>>> + } >>>>> + >>>>> + return 0; >>>>> +} >>>>> + >>>>> +static u64 __xe_pmu_event_read(struct perf_event *event) >>>>> +{ >>>>> + struct xe_device *xe = >>>>> + container_of(event->pmu, typeof(*xe), pmu.base); >>>>> + const unsigned int gt_id = config_gt_id(event->attr.config); >>>>> + const u64 config = config_counter(event->attr.config); >>>>> >>>>> >>>>> Probably nit but this config being different from event->attr.config is >>>>> confusing. Let's use 'event->attr.config' throughout as argument to >>>>> functions and use config_counter() to get rid of gt_id. So get rid of this >>>>> config variable. >>>>> >>>>> + struct xe_gt *gt = xe_device_get_gt(xe, gt_id); >>>>> + struct xe_pmu *pmu = &xe->pmu; >>>>> + u64 val = 0; >>>>> + >>>>> + switch (config) { >>>>> >>>>> >>>>> switch (config_counter(event->attr.config)) >>>>> >>>>> + case XE_PMU_INTERRUPTS(0): >>>>> + val = READ_ONCE(pmu->irq_count); >>>>> + break; >>>>> + case XE_PMU_RENDER_GROUP_BUSY(0): >>>>> + case XE_PMU_COPY_GROUP_BUSY(0): >>>>> + case XE_PMU_ANY_ENGINE_GROUP_BUSY(0): >>>>> + case XE_PMU_MEDIA_GROUP_BUSY(0): >>>>> + val = engine_group_busyness_read(gt, config); >>>>> >>>>> >>>>> engine_group_busyness_read(gt, event->attr.config); >>>>> >>>>> hmmm ok. >>>>> >>>>> >>>>> >>>>> Also, need a default case. >>>>> >>>>> + } >>>>> + >>>>> + return val; >>>>> +} >>>>> + >>>>> +static void xe_pmu_event_read(struct perf_event *event) >>>>> +{ >>>>> + struct xe_device *xe = >>>>> + container_of(event->pmu, typeof(*xe), pmu.base); >>>>> + struct hw_perf_event *hwc = &event->hw; >>>>> + struct xe_pmu *pmu = &xe->pmu; >>>>> + u64 prev, new; >>>>> + >>>>> + if (pmu->closed) { >>>>> + event->hw.state = PERF_HES_STOPPED; >>>>> + return; >>>>> + } >>>>> +again: >>>>> + prev = local64_read(&hwc->prev_count); >>>>> + new = __xe_pmu_event_read(event); >>>>> + >>>>> + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) >>>>> + goto again; >>>>> + >>>>> + local64_add(new - prev, &event->count); >>>>> +} >>>>> + >>>>> +static void xe_pmu_enable(struct perf_event *event) >>>>> +{ >> The i915_pmu code checks which event is requested here and accordingly sets pmu->enable (which doesn't seem to be defined here yet). Any reason we are not doing this yet? > > in i915 pmu->enable is only used by events for which there is an internal timer sampler > which periodically samples those events, this series is not adding such events. Ok, the tracked events are bound by I915_NUM_PMU_SAMPLERS in i915, whereas you have already defined the max non/tracking ones as __XE_NUM_PMU_SAMPLERS, hence my confusion. Should we use a different name in lieu of the tracked events which will be defined in subsequent patches? enum { __I915_SAMPLE_FREQ_ACT = 0, __I915_SAMPLE_FREQ_REQ, __I915_SAMPLE_RC6, __I915_SAMPLE_RC6_LAST_REPORTED, __I915_NUM_PMU_SAMPLERS }; Thanks, Vinay. > > Thanks, > Aravind. >> Thanks, >> >> Vinay. >> >>>>> + /* >>>>> + * Store the current counter value so we can report the correct delta >>>>> + * for all listeners. Even when the event was already enabled and has >>>>> + * an existing non-zero value. >>>>> + */ >>>>> + local64_set(&event->hw.prev_count, __xe_pmu_event_read(event)); >>>>> >>>>> >>>>> Right now nothing is being enabled here (unlike i915) so the function name >>>>> xe_pmu_enable looks weird. Not sure, maybe leave as is for when things get >>>>> added in the future? >>>>> >>>>> +static int xe_pmu_cpu_online(unsigned int cpu, struct hlist_node *node) >>>>> +{ >>>>> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); >>>>> + >>>>> + BUG_ON(!pmu->base.event_init); >>>>> + >>>>> + /* Select the first online CPU as a designated reader. */ >>>>> + if (cpumask_empty(&xe_pmu_cpumask)) >>>>> + cpumask_set_cpu(cpu, &xe_pmu_cpumask); >>>>> + >>>>> + return 0; >>>>> +} >>>>> + >>>>> +static int xe_pmu_cpu_offline(unsigned int cpu, struct hlist_node *node) >>>>> +{ >>>>> + struct xe_pmu *pmu = hlist_entry_safe(node, typeof(*pmu), cpuhp.node); >>>>> + unsigned int target = xe_pmu_target_cpu; >>>>> + >>>>> + BUG_ON(!pmu->base.event_init); >>>>> >>>>> >>>>> nit but wondering if we should remove these two BUG_ON's (and save a couple >>>>> of checkpatch warnings even though the BUG_ON's are in i915) and just do >>>>> something like: >>>>> >>>>> if (!pmu->base.event_init) >>>>> return 0; >>>>> >>>>> The reason for the BUG_ON's seems to be that these functions can be called >>>>> after module_init but before probe. >>>>> >>>>> xe_pmu_cpu_online() doesn't depend on pmu at all so looks like the BUG_ON >>>>> can just be dropped? >>>>> >>>>> the xe_pmu_cpu_online/offline are not invoked when they are registered with >>>>> cpuhp_setup_state_multi, but rather when cpuhp_state_add_instance() is called >>>>> which is done post the PMU is initialized hence the check for BUG_ON. >>>> cpuhp_setup_state_multi is called at module_init >>>> time. cpuhp_state_add_instance is called from xe_pmu_register, i.e. during >>>> device probe when pmu->base.event_init is already initialized. Therefore >>>> seems even less reason to have the BUG_ON's. >>> that is true even, so will remove the BUG_ON. >>>> Just a few minor issues left now so I am hoping we can wrap this marathon >>>> review up soon :) >>> ya i'm waiting for the same :) >>> >>> Thanks, >>> Aravind. >>>> Thanks. >>>> -- >>>> Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-31 23:22 ` Belgaumkar, Vinay @ 2023-08-31 23:16 ` Dixit, Ashutosh 2023-08-31 23:57 ` Belgaumkar, Vinay 0 siblings, 1 reply; 29+ messages in thread From: Dixit, Ashutosh @ 2023-08-31 23:16 UTC (permalink / raw) To: Belgaumkar, Vinay; +Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On Thu, 31 Aug 2023 16:22:10 -0700, Belgaumkar, Vinay wrote: > > >>>>> +static void xe_pmu_event_read(struct perf_event *event) > >>>>> +{ > >>>>> + struct xe_device *xe = > >>>>> + container_of(event->pmu, typeof(*xe), pmu.base); > >>>>> + struct hw_perf_event *hwc = &event->hw; > >>>>> + struct xe_pmu *pmu = &xe->pmu; > >>>>> + u64 prev, new; > >>>>> + > >>>>> + if (pmu->closed) { > >>>>> + event->hw.state = PERF_HES_STOPPED; > >>>>> + return; > >>>>> + } > >>>>> +again: > >>>>> + prev = local64_read(&hwc->prev_count); > >>>>> + new = __xe_pmu_event_read(event); > >>>>> + > >>>>> + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) > >>>>> + goto again; > >>>>> + > >>>>> + local64_add(new - prev, &event->count); > >>>>> +} > >>>>> + > >>>>> +static void xe_pmu_enable(struct perf_event *event) > >>>>> +{ > >> The i915_pmu code checks which event is requested here and accordingly sets pmu->enable (which doesn't seem to be defined here yet). Any reason we are not doing this yet? > > > > in i915 pmu->enable is only used by events for which there is an internal timer sampler > > which periodically samples those events, this series is not adding such events. > > Ok, the tracked events are bound by I915_NUM_PMU_SAMPLERS in i915, whereas > you have already defined the max non/tracking ones as > __XE_NUM_PMU_SAMPLERS, hence my confusion. Should we use a different name > in lieu of the tracked events which will be defined in subsequent patches? > > enum { > > __I915_SAMPLE_FREQ_ACT = 0, > > __I915_SAMPLE_FREQ_REQ, > __I915_SAMPLE_RC6, > __I915_SAMPLE_RC6_LAST_REPORTED, > __I915_NUM_PMU_SAMPLERS > > }; +enum { + __XE_SAMPLE_RENDER_GROUP_BUSY, + __XE_SAMPLE_COPY_GROUP_BUSY, + __XE_SAMPLE_MEDIA_GROUP_BUSY, + __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY, + __XE_NUM_PMU_SAMPLERS +}; + I'd think any future events will be added after __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY, changing the value of __XE_NUM_PMU_SAMPLERS, no? Why do we need a different name? ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-31 23:16 ` Dixit, Ashutosh @ 2023-08-31 23:57 ` Belgaumkar, Vinay 2023-08-31 23:58 ` Dixit, Ashutosh 0 siblings, 1 reply; 29+ messages in thread From: Belgaumkar, Vinay @ 2023-08-31 23:57 UTC (permalink / raw) To: Dixit, Ashutosh; +Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On 8/31/2023 4:16 PM, Dixit, Ashutosh wrote: > On Thu, 31 Aug 2023 16:22:10 -0700, Belgaumkar, Vinay wrote: >>>>>>> +static void xe_pmu_event_read(struct perf_event *event) >>>>>>> +{ >>>>>>> + struct xe_device *xe = >>>>>>> + container_of(event->pmu, typeof(*xe), pmu.base); >>>>>>> + struct hw_perf_event *hwc = &event->hw; >>>>>>> + struct xe_pmu *pmu = &xe->pmu; >>>>>>> + u64 prev, new; >>>>>>> + >>>>>>> + if (pmu->closed) { >>>>>>> + event->hw.state = PERF_HES_STOPPED; >>>>>>> + return; >>>>>>> + } >>>>>>> +again: >>>>>>> + prev = local64_read(&hwc->prev_count); >>>>>>> + new = __xe_pmu_event_read(event); >>>>>>> + >>>>>>> + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) >>>>>>> + goto again; >>>>>>> + >>>>>>> + local64_add(new - prev, &event->count); >>>>>>> +} >>>>>>> + >>>>>>> +static void xe_pmu_enable(struct perf_event *event) >>>>>>> +{ >>>> The i915_pmu code checks which event is requested here and accordingly sets pmu->enable (which doesn't seem to be defined here yet). Any reason we are not doing this yet? >>> in i915 pmu->enable is only used by events for which there is an internal timer sampler >>> which periodically samples those events, this series is not adding such events. >> Ok, the tracked events are bound by I915_NUM_PMU_SAMPLERS in i915, whereas >> you have already defined the max non/tracking ones as >> __XE_NUM_PMU_SAMPLERS, hence my confusion. Should we use a different name >> in lieu of the tracked events which will be defined in subsequent patches? >> >> enum { >> >> __I915_SAMPLE_FREQ_ACT = 0, >> >> __I915_SAMPLE_FREQ_REQ, >> __I915_SAMPLE_RC6, >> __I915_SAMPLE_RC6_LAST_REPORTED, >> __I915_NUM_PMU_SAMPLERS >> >> }; > +enum { > + __XE_SAMPLE_RENDER_GROUP_BUSY, > + __XE_SAMPLE_COPY_GROUP_BUSY, > + __XE_SAMPLE_MEDIA_GROUP_BUSY, > + __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY, > + __XE_NUM_PMU_SAMPLERS > +}; > + > > I'd think any future events will be added after > __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY, changing the value of > __XE_NUM_PMU_SAMPLERS, no? Why do we need a different name? I guess that'll work, but the events in i915 are divided into ones that need the timer (non-engine) (max of I915_NUM_PMU_SAMPLERS) and the per-engine events (that don't need the timer). We now should have 3 types? Non-engine-non-timer, non-engine-timer and per-engine? Or just club together the non-engine ones? Thanks, Vinay. ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-31 23:57 ` Belgaumkar, Vinay @ 2023-08-31 23:58 ` Dixit, Ashutosh 2023-09-01 3:34 ` Aravind Iddamsetty 0 siblings, 1 reply; 29+ messages in thread From: Dixit, Ashutosh @ 2023-08-31 23:58 UTC (permalink / raw) To: Belgaumkar, Vinay; +Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On Thu, 31 Aug 2023 16:57:25 -0700, Belgaumkar, Vinay wrote: > > On 8/31/2023 4:16 PM, Dixit, Ashutosh wrote: > > On Thu, 31 Aug 2023 16:22:10 -0700, Belgaumkar, Vinay wrote: > >>>>>>> +static void xe_pmu_event_read(struct perf_event *event) > >>>>>>> +{ > >>>>>>> + struct xe_device *xe = > >>>>>>> + container_of(event->pmu, typeof(*xe), pmu.base); > >>>>>>> + struct hw_perf_event *hwc = &event->hw; > >>>>>>> + struct xe_pmu *pmu = &xe->pmu; > >>>>>>> + u64 prev, new; > >>>>>>> + > >>>>>>> + if (pmu->closed) { > >>>>>>> + event->hw.state = PERF_HES_STOPPED; > >>>>>>> + return; > >>>>>>> + } > >>>>>>> +again: > >>>>>>> + prev = local64_read(&hwc->prev_count); > >>>>>>> + new = __xe_pmu_event_read(event); > >>>>>>> + > >>>>>>> + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) > >>>>>>> + goto again; > >>>>>>> + > >>>>>>> + local64_add(new - prev, &event->count); > >>>>>>> +} > >>>>>>> + > >>>>>>> +static void xe_pmu_enable(struct perf_event *event) > >>>>>>> +{ > >>>> The i915_pmu code checks which event is requested here and accordingly sets pmu->enable (which doesn't seem to be defined here yet). Any reason we are not doing this yet? > >>> in i915 pmu->enable is only used by events for which there is an internal timer sampler > >>> which periodically samples those events, this series is not adding such events. > >> Ok, the tracked events are bound by I915_NUM_PMU_SAMPLERS in i915, whereas > >> you have already defined the max non/tracking ones as > >> __XE_NUM_PMU_SAMPLERS, hence my confusion. Should we use a different name > >> in lieu of the tracked events which will be defined in subsequent patches? > >> > >> enum { > >> > >> __I915_SAMPLE_FREQ_ACT = 0, > >> > >> __I915_SAMPLE_FREQ_REQ, > >> __I915_SAMPLE_RC6, > >> __I915_SAMPLE_RC6_LAST_REPORTED, > >> __I915_NUM_PMU_SAMPLERS > >> > >> }; > > +enum { > > + __XE_SAMPLE_RENDER_GROUP_BUSY, > > + __XE_SAMPLE_COPY_GROUP_BUSY, > > + __XE_SAMPLE_MEDIA_GROUP_BUSY, > > + __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY, > > + __XE_NUM_PMU_SAMPLERS > > +}; > > + > > > > I'd think any future events will be added after > > __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY, changing the value of > > __XE_NUM_PMU_SAMPLERS, no? Why do we need a different name? > > I guess that'll work, but the events in i915 are divided into ones that > need the timer (non-engine) (max of I915_NUM_PMU_SAMPLERS) and the > per-engine events (that don't need the timer). i915 per engine events need timer. They are just stored in engine->pmu->sample[] array, not in i915->pmu->sample[][] array. __I915_NUM_PMU_SAMPLERS is the size of the 2nd array. > We now should have 3 types? > Non-engine-non-timer, non-engine-timer and per-engine? RC6 events in i915 are also non-engine-non-timer (same as this patch). So it's the same. __XE_NUM_PMU_SAMPLERS is just the size of the xe->pmu->sample[][] array. > Or just club together the non-engine ones? I'd say let's restrict here to reviewing this patch. Everything in this patch can be changed except the uapi, the implementation can be completely changed/enhanced by future patches. So we should just make sure the uapi should not change by future changes. Incidentally I am against exposing freq through the PMU since it is available through sysfs. But we can have that discussion when we get to it. Thanks. -- Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface 2023-08-31 23:58 ` Dixit, Ashutosh @ 2023-09-01 3:34 ` Aravind Iddamsetty 0 siblings, 0 replies; 29+ messages in thread From: Aravind Iddamsetty @ 2023-09-01 3:34 UTC (permalink / raw) To: Dixit, Ashutosh, Belgaumkar, Vinay Cc: Bommu Krishnaiah, intel-xe, Tvrtko Ursulin On 01/09/23 05:28, Dixit, Ashutosh wrote: HI Ashutosh, > On Thu, 31 Aug 2023 16:57:25 -0700, Belgaumkar, Vinay wrote: >> On 8/31/2023 4:16 PM, Dixit, Ashutosh wrote: >>> On Thu, 31 Aug 2023 16:22:10 -0700, Belgaumkar, Vinay wrote: >>>>>>>>> +static void xe_pmu_event_read(struct perf_event *event) >>>>>>>>> +{ >>>>>>>>> + struct xe_device *xe = >>>>>>>>> + container_of(event->pmu, typeof(*xe), pmu.base); >>>>>>>>> + struct hw_perf_event *hwc = &event->hw; >>>>>>>>> + struct xe_pmu *pmu = &xe->pmu; >>>>>>>>> + u64 prev, new; >>>>>>>>> + >>>>>>>>> + if (pmu->closed) { >>>>>>>>> + event->hw.state = PERF_HES_STOPPED; >>>>>>>>> + return; >>>>>>>>> + } >>>>>>>>> +again: >>>>>>>>> + prev = local64_read(&hwc->prev_count); >>>>>>>>> + new = __xe_pmu_event_read(event); >>>>>>>>> + >>>>>>>>> + if (local64_cmpxchg(&hwc->prev_count, prev, new) != prev) >>>>>>>>> + goto again; >>>>>>>>> + >>>>>>>>> + local64_add(new - prev, &event->count); >>>>>>>>> +} >>>>>>>>> + >>>>>>>>> +static void xe_pmu_enable(struct perf_event *event) >>>>>>>>> +{ >>>>>> The i915_pmu code checks which event is requested here and accordingly sets pmu->enable (which doesn't seem to be defined here yet). Any reason we are not doing this yet? >>>>> in i915 pmu->enable is only used by events for which there is an internal timer sampler >>>>> which periodically samples those events, this series is not adding such events. >>>> Ok, the tracked events are bound by I915_NUM_PMU_SAMPLERS in i915, whereas >>>> you have already defined the max non/tracking ones as >>>> __XE_NUM_PMU_SAMPLERS, hence my confusion. Should we use a different name >>>> in lieu of the tracked events which will be defined in subsequent patches? >>>> >>>> enum { >>>> >>>> __I915_SAMPLE_FREQ_ACT = 0, >>>> >>>> __I915_SAMPLE_FREQ_REQ, >>>> __I915_SAMPLE_RC6, >>>> __I915_SAMPLE_RC6_LAST_REPORTED, >>>> __I915_NUM_PMU_SAMPLERS >>>> >>>> }; >>> +enum { >>> + __XE_SAMPLE_RENDER_GROUP_BUSY, >>> + __XE_SAMPLE_COPY_GROUP_BUSY, >>> + __XE_SAMPLE_MEDIA_GROUP_BUSY, >>> + __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY, >>> + __XE_NUM_PMU_SAMPLERS >>> +}; >>> + >>> >>> I'd think any future events will be added after >>> __XE_SAMPLE_ANY_ENGINE_GROUP_BUSY, changing the value of >>> __XE_NUM_PMU_SAMPLERS, no? Why do we need a different name? >> I guess that'll work, but the events in i915 are divided into ones that >> need the timer (non-engine) (max of I915_NUM_PMU_SAMPLERS) and the >> per-engine events (that don't need the timer). > i915 per engine events need timer. They are just stored in > engine->pmu->sample[] array, not in i915->pmu->sample[][] > array. __I915_NUM_PMU_SAMPLERS is the size of the 2nd array. > >> We now should have 3 types? >> Non-engine-non-timer, non-engine-timer and per-engine? > RC6 events in i915 are also non-engine-non-timer (same as this patch). So > it's the same. > > __XE_NUM_PMU_SAMPLERS is just the size of the xe->pmu->sample[][] array. > >> Or just club together the non-engine ones? > I'd say let's restrict here to reviewing this patch. Everything in this > patch can be changed except the uapi, the implementation can be completely > changed/enhanced by future patches. So we should just make sure the uapi > should not change by future changes. > > Incidentally I am against exposing freq through the PMU since it is > available through sysfs. But we can have that discussion when we get to it. Thanks Ashutosh for taking up the queries, yup let's stick to this series and handle the future changes as they come. Regards, Aravind. > > Thanks. > -- > Ashutosh ^ permalink raw reply [flat|nested] 29+ messages in thread
* [Intel-xe] ✓ CI.Build: success for drm/xe/pmu: Enable PMU interface (rev5) 2023-08-30 5:15 [Intel-xe] [PATCH v5 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty ` (5 preceding siblings ...) 2023-08-30 5:15 ` [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty @ 2023-08-30 5:19 ` Patchwork 2023-08-30 5:19 ` [Intel-xe] ✗ CI.Hooks: failure " Patchwork 7 siblings, 0 replies; 29+ messages in thread From: Patchwork @ 2023-08-30 5:19 UTC (permalink / raw) To: Iddamsetty, Aravind; +Cc: intel-xe == Series Details == Series: drm/xe/pmu: Enable PMU interface (rev5) URL : https://patchwork.freedesktop.org/series/119504/ State : success == Summary == + trap cleanup EXIT + cd /kernel + git clone https://gitlab.freedesktop.org/drm/xe/ci.git .ci Cloning into '.ci'... ++ date +%s + echo -e '\e[0Ksection_start:1693372333:build_x86_64[collapsed=true]\r\e[0KBuild x86-64' + mkdir -p build64-default ^[[0Ksection_start:1693372333:build_x86_64[collapsed=true] ^[[0KBuild x86-64 + cp .ci/kernel/kconfig build64-default/.config + make O=build64-default olddefconfig make[1]: Entering directory '/kernel/build64-default' GEN Makefile HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/confdata.o HOSTCC scripts/kconfig/expr.o LEX scripts/kconfig/lexer.lex.c YACC scripts/kconfig/parser.tab.[ch] HOSTCC scripts/kconfig/lexer.lex.o HOSTCC scripts/kconfig/menu.o HOSTCC scripts/kconfig/parser.tab.o HOSTCC scripts/kconfig/preprocess.o HOSTCC scripts/kconfig/symbol.o HOSTCC scripts/kconfig/util.o HOSTLD scripts/kconfig/conf # # configuration written to .config # make[1]: Leaving directory '/kernel/build64-default' ++ nproc + make O=build64-default -j48 make[1]: Entering directory '/kernel/build64-default' GEN Makefile SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.h WRAP arch/x86/include/generated/uapi/asm/bpf_perf_event.h SYSTBL arch/x86/include/generated/asm/syscalls_32.h SYSHDR arch/x86/include/generated/asm/unistd_32_ia32.h WRAP arch/x86/include/generated/uapi/asm/errno.h WRAP arch/x86/include/generated/uapi/asm/fcntl.h GEN arch/x86/include/generated/asm/orc_hash.h SYSHDR arch/x86/include/generated/asm/unistd_64_x32.h SYSTBL arch/x86/include/generated/asm/syscalls_64.h WRAP arch/x86/include/generated/uapi/asm/ioctl.h WRAP arch/x86/include/generated/uapi/asm/ioctls.h WRAP arch/x86/include/generated/uapi/asm/ipcbuf.h WRAP arch/x86/include/generated/uapi/asm/param.h WRAP arch/x86/include/generated/uapi/asm/poll.h WRAP arch/x86/include/generated/uapi/asm/resource.h WRAP arch/x86/include/generated/uapi/asm/socket.h WRAP arch/x86/include/generated/uapi/asm/sockios.h WRAP arch/x86/include/generated/uapi/asm/termbits.h WRAP arch/x86/include/generated/uapi/asm/termios.h WRAP arch/x86/include/generated/uapi/asm/types.h HOSTCC arch/x86/tools/relocs_32.o HOSTCC arch/x86/tools/relocs_64.o HOSTCC arch/x86/tools/relocs_common.o WRAP arch/x86/include/generated/asm/early_ioremap.h WRAP arch/x86/include/generated/asm/export.h WRAP arch/x86/include/generated/asm/mcs_spinlock.h WRAP arch/x86/include/generated/asm/irq_regs.h WRAP arch/x86/include/generated/asm/local64.h WRAP arch/x86/include/generated/asm/kmap_size.h WRAP arch/x86/include/generated/asm/module.lds.h WRAP arch/x86/include/generated/asm/mmiowb.h WRAP arch/x86/include/generated/asm/rwonce.h WRAP arch/x86/include/generated/asm/unaligned.h UPD include/generated/uapi/linux/version.h UPD include/config/kernel.release HOSTCC scripts/kallsyms HOSTCC scripts/sorttable HOSTCC scripts/asn1_compiler HOSTCC scripts/unifdef UPD include/generated/compile.h UPD include/generated/utsrelease.h DESCEND objtool HOSTCC /kernel/build64-default/tools/objtool/fixdep.o HOSTLD /kernel/build64-default/tools/objtool/fixdep-in.o LINK /kernel/build64-default/tools/objtool/fixdep HOSTLD arch/x86/tools/relocs INSTALL /kernel/build64-default/tools/objtool/libsubcmd/include/subcmd/exec-cmd.h INSTALL /kernel/build64-default/tools/objtool/libsubcmd/include/subcmd/help.h INSTALL /kernel/build64-default/tools/objtool/libsubcmd/include/subcmd/pager.h INSTALL /kernel/build64-default/tools/objtool/libsubcmd/include/subcmd/parse-options.h INSTALL /kernel/build64-default/tools/objtool/libsubcmd/include/subcmd/run-command.h CC /kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o INSTALL libsubcmd_headers CC /kernel/build64-default/tools/objtool/libsubcmd/help.o CC /kernel/build64-default/tools/objtool/libsubcmd/pager.o CC /kernel/build64-default/tools/objtool/libsubcmd/parse-options.o CC /kernel/build64-default/tools/objtool/libsubcmd/run-command.o CC /kernel/build64-default/tools/objtool/libsubcmd/sigchain.o CC /kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig CC scripts/mod/devicetable-offsets.s HDRINST usr/include/video/edid.h HDRINST usr/include/video/uvesafb.h HDRINST usr/include/video/sisfb.h HDRINST usr/include/drm/amdgpu_drm.h HDRINST usr/include/drm/qaic_accel.h HDRINST usr/include/drm/i915_drm.h HDRINST usr/include/drm/vgem_drm.h HDRINST usr/include/drm/virtgpu_drm.h HDRINST usr/include/drm/xe_drm.h HDRINST usr/include/drm/omap_drm.h UPD scripts/mod/devicetable-offsets.h HDRINST usr/include/drm/radeon_drm.h HDRINST usr/include/drm/tegra_drm.h HDRINST usr/include/drm/drm_mode.h HDRINST usr/include/drm/ivpu_accel.h HDRINST usr/include/drm/exynos_drm.h HDRINST usr/include/drm/drm_sarea.h HDRINST usr/include/drm/v3d_drm.h HDRINST usr/include/drm/qxl_drm.h HDRINST usr/include/drm/drm_fourcc.h HDRINST usr/include/drm/nouveau_drm.h HDRINST usr/include/drm/habanalabs_accel.h HDRINST usr/include/drm/vmwgfx_drm.h HDRINST usr/include/drm/msm_drm.h HDRINST usr/include/drm/etnaviv_drm.h HDRINST usr/include/drm/vc4_drm.h HDRINST usr/include/drm/panfrost_drm.h HDRINST usr/include/drm/lima_drm.h HDRINST usr/include/drm/drm.h HDRINST usr/include/drm/armada_drm.h HDRINST usr/include/mtd/inftl-user.h HDRINST usr/include/mtd/nftl-user.h HDRINST usr/include/mtd/mtd-user.h HDRINST usr/include/mtd/ubi-user.h HDRINST usr/include/mtd/mtd-abi.h HDRINST usr/include/xen/gntdev.h HDRINST usr/include/xen/gntalloc.h HDRINST usr/include/xen/evtchn.h HDRINST usr/include/xen/privcmd.h HDRINST usr/include/asm-generic/auxvec.h HDRINST usr/include/asm-generic/bitsperlong.h HDRINST usr/include/asm-generic/posix_types.h HDRINST usr/include/asm-generic/ioctls.h HDRINST usr/include/asm-generic/mman.h HDRINST usr/include/asm-generic/shmbuf.h HDRINST usr/include/asm-generic/bpf_perf_event.h HDRINST usr/include/asm-generic/types.h HDRINST usr/include/asm-generic/poll.h HDRINST usr/include/asm-generic/msgbuf.h HDRINST usr/include/asm-generic/swab.h HDRINST usr/include/asm-generic/statfs.h HDRINST usr/include/asm-generic/unistd.h HDRINST usr/include/asm-generic/hugetlb_encode.h HDRINST usr/include/asm-generic/resource.h HDRINST usr/include/asm-generic/param.h MKELF scripts/mod/elfconfig.h HDRINST usr/include/asm-generic/termbits-common.h HDRINST usr/include/asm-generic/sockios.h HDRINST usr/include/asm-generic/kvm_para.h HDRINST usr/include/asm-generic/errno.h HOSTCC scripts/mod/modpost.o HDRINST usr/include/asm-generic/termios.h HDRINST usr/include/asm-generic/mman-common.h HOSTCC scripts/mod/file2alias.o HDRINST usr/include/asm-generic/ioctl.h HDRINST usr/include/asm-generic/socket.h HOSTCC scripts/mod/sumversion.o HDRINST usr/include/asm-generic/signal-defs.h HDRINST usr/include/asm-generic/termbits.h HDRINST usr/include/asm-generic/int-ll64.h HDRINST usr/include/asm-generic/signal.h HDRINST usr/include/asm-generic/siginfo.h HDRINST usr/include/asm-generic/stat.h HDRINST usr/include/asm-generic/int-l64.h HDRINST usr/include/asm-generic/errno-base.h HDRINST usr/include/asm-generic/fcntl.h HDRINST usr/include/asm-generic/setup.h HDRINST usr/include/asm-generic/ipcbuf.h HDRINST usr/include/asm-generic/sembuf.h HDRINST usr/include/asm-generic/ucontext.h HDRINST usr/include/rdma/mlx5_user_ioctl_cmds.h HDRINST usr/include/rdma/irdma-abi.h HDRINST usr/include/rdma/mana-abi.h HDRINST usr/include/rdma/hfi/hfi1_user.h HDRINST usr/include/rdma/hfi/hfi1_ioctl.h HDRINST usr/include/rdma/rdma_user_rxe.h HDRINST usr/include/rdma/rdma_user_ioctl.h HDRINST usr/include/rdma/mlx5_user_ioctl_verbs.h HDRINST usr/include/rdma/bnxt_re-abi.h HDRINST usr/include/rdma/hns-abi.h HDRINST usr/include/rdma/qedr-abi.h HDRINST usr/include/rdma/ib_user_ioctl_cmds.h HDRINST usr/include/rdma/vmw_pvrdma-abi.h HDRINST usr/include/rdma/ib_user_sa.h HDRINST usr/include/rdma/ib_user_ioctl_verbs.h HDRINST usr/include/rdma/rvt-abi.h HDRINST usr/include/rdma/mlx5-abi.h HDRINST usr/include/rdma/rdma_netlink.h HDRINST usr/include/rdma/erdma-abi.h HDRINST usr/include/rdma/rdma_user_ioctl_cmds.h HDRINST usr/include/rdma/rdma_user_cm.h HDRINST usr/include/rdma/ib_user_verbs.h HDRINST usr/include/rdma/efa-abi.h HDRINST usr/include/rdma/siw-abi.h HDRINST usr/include/rdma/mlx4-abi.h HDRINST usr/include/rdma/mthca-abi.h HDRINST usr/include/rdma/ib_user_mad.h HDRINST usr/include/rdma/ocrdma-abi.h HDRINST usr/include/rdma/cxgb4-abi.h HDRINST usr/include/misc/xilinx_sdfec.h HDRINST usr/include/misc/uacce/hisi_qm.h HDRINST usr/include/misc/uacce/uacce.h HDRINST usr/include/misc/cxl.h HDRINST usr/include/misc/ocxl.h HDRINST usr/include/misc/fastrpc.h HDRINST usr/include/misc/pvpanic.h HDRINST usr/include/linux/i8k.h HDRINST usr/include/linux/acct.h HDRINST usr/include/linux/atmmpc.h HDRINST usr/include/linux/fs.h HDRINST usr/include/linux/cifs/cifs_mount.h HDRINST usr/include/linux/cifs/cifs_netlink.h HDRINST usr/include/linux/if_packet.h HDRINST usr/include/linux/route.h HDRINST usr/include/linux/patchkey.h HDRINST usr/include/linux/tc_ematch/tc_em_cmp.h HDRINST usr/include/linux/tc_ematch/tc_em_ipt.h HDRINST usr/include/linux/tc_ematch/tc_em_meta.h HDRINST usr/include/linux/tc_ematch/tc_em_nbyte.h HDRINST usr/include/linux/tc_ematch/tc_em_text.h HDRINST usr/include/linux/virtio_pmem.h HDRINST usr/include/linux/rkisp1-config.h HDRINST usr/include/linux/vhost.h HDRINST usr/include/linux/cec-funcs.h HDRINST usr/include/linux/ppdev.h HDRINST usr/include/linux/isdn/capicmd.h HDRINST usr/include/linux/virtio_fs.h HDRINST usr/include/linux/netfilter_ipv6.h HDRINST usr/include/linux/lirc.h HDRINST usr/include/linux/mroute6.h HDRINST usr/include/linux/nl80211-vnd-intel.h HDRINST usr/include/linux/ivtvfb.h HDRINST usr/include/linux/auxvec.h HDRINST usr/include/linux/dm-log-userspace.h HDRINST usr/include/linux/dccp.h HDRINST usr/include/linux/virtio_scmi.h HDRINST usr/include/linux/atmarp.h HDRINST usr/include/linux/arcfb.h HDRINST usr/include/linux/nbd-netlink.h HDRINST usr/include/linux/sched/types.h HDRINST usr/include/linux/tcp.h HDRINST usr/include/linux/neighbour.h HDRINST usr/include/linux/dlm_device.h HDRINST usr/include/linux/wmi.h HDRINST usr/include/linux/btrfs_tree.h HDRINST usr/include/linux/virtio_crypto.h HDRINST usr/include/linux/vbox_err.h HDRINST usr/include/linux/edd.h HDRINST usr/include/linux/loop.h HDRINST usr/include/linux/nvme_ioctl.h HDRINST usr/include/linux/mmtimer.h HDRINST usr/include/linux/if_pppol2tp.h HDRINST usr/include/linux/mtio.h HDRINST usr/include/linux/if_arcnet.h HDRINST usr/include/linux/romfs_fs.h HDRINST usr/include/linux/posix_types.h HDRINST usr/include/linux/rtc.h HDRINST usr/include/linux/landlock.h HDRINST usr/include/linux/gpio.h HDRINST usr/include/linux/selinux_netlink.h HDRINST usr/include/linux/ndctl.h HDRINST usr/include/linux/pps.h HDRINST usr/include/linux/virtio_gpu.h HDRINST usr/include/linux/android/binderfs.h HDRINST usr/include/linux/android/binder.h HDRINST usr/include/linux/virtio_vsock.h HDRINST usr/include/linux/sound.h HDRINST usr/include/linux/vtpm_proxy.h HDRINST usr/include/linux/nfs_fs.h HDRINST usr/include/linux/elf-fdpic.h HDRINST usr/include/linux/adfs_fs.h HDRINST usr/include/linux/target_core_user.h HDRINST usr/include/linux/netlink_diag.h HDRINST usr/include/linux/const.h HDRINST usr/include/linux/firewire-cdev.h HDRINST usr/include/linux/vdpa.h HDRINST usr/include/linux/if_infiniband.h HDRINST usr/include/linux/serial.h HDRINST usr/include/linux/iio/types.h HDRINST usr/include/linux/iio/buffer.h HDRINST usr/include/linux/iio/events.h HDRINST usr/include/linux/baycom.h HDRINST usr/include/linux/major.h HDRINST usr/include/linux/atmppp.h HDRINST usr/include/linux/ipv6_route.h HDRINST usr/include/linux/spi/spidev.h HDRINST usr/include/linux/spi/spi.h HDRINST usr/include/linux/virtio_ring.h HDRINST usr/include/linux/hdlc/ioctl.h HDRINST usr/include/linux/remoteproc_cdev.h HDRINST usr/include/linux/hyperv.h HDRINST usr/include/linux/rpl_iptunnel.h HDRINST usr/include/linux/sync_file.h HDRINST usr/include/linux/igmp.h HDRINST usr/include/linux/v4l2-dv-timings.h HDRINST usr/include/linux/virtio_i2c.h HDRINST usr/include/linux/xfrm.h HDRINST usr/include/linux/capability.h HDRINST usr/include/linux/gtp.h HDRINST usr/include/linux/xdp_diag.h HDRINST usr/include/linux/pkt_cls.h HDRINST usr/include/linux/suspend_ioctls.h HDRINST usr/include/linux/vt.h HDRINST usr/include/linux/loadpin.h HDRINST usr/include/linux/dlm_plock.h HDRINST usr/include/linux/fb.h HDRINST usr/include/linux/max2175.h HDRINST usr/include/linux/sunrpc/debug.h HDRINST usr/include/linux/gsmmux.h HDRINST usr/include/linux/watchdog.h HDRINST usr/include/linux/vhost_types.h HDRINST usr/include/linux/vduse.h HDRINST usr/include/linux/ila.h HDRINST usr/include/linux/tdx-guest.h HDRINST usr/include/linux/close_range.h HDRINST usr/include/linux/ivtv.h HDRINST usr/include/linux/cryptouser.h HDRINST usr/include/linux/netfilter/xt_string.h HDRINST usr/include/linux/netfilter/nfnetlink_compat.h HDRINST usr/include/linux/netfilter/nf_nat.h HDRINST usr/include/linux/netfilter/xt_recent.h HDRINST usr/include/linux/netfilter/xt_addrtype.h HDRINST usr/include/linux/netfilter/nf_conntrack_tcp.h HDRINST usr/include/linux/netfilter/xt_SYNPROXY.h HDRINST usr/include/linux/netfilter/xt_MARK.h HDRINST usr/include/linux/netfilter/xt_multiport.h HDRINST usr/include/linux/netfilter/nfnetlink.h HDRINST usr/include/linux/netfilter/xt_cgroup.h HDRINST usr/include/linux/netfilter/nf_synproxy.h HDRINST usr/include/linux/netfilter/xt_TCPOPTSTRIP.h HDRINST usr/include/linux/netfilter/nfnetlink_log.h HDRINST usr/include/linux/netfilter/xt_TPROXY.h HDRINST usr/include/linux/netfilter/nfnetlink_osf.h HDRINST usr/include/linux/netfilter/xt_u32.h HDRINST usr/include/linux/netfilter/xt_ecn.h HDRINST usr/include/linux/netfilter/xt_esp.h HDRINST usr/include/linux/netfilter/nfnetlink_hook.h HDRINST usr/include/linux/netfilter/xt_mac.h HDRINST usr/include/linux/netfilter/xt_comment.h HDRINST usr/include/linux/netfilter/xt_NFQUEUE.h HDRINST usr/include/linux/netfilter/xt_osf.h HDRINST usr/include/linux/netfilter/xt_hashlimit.h HDRINST usr/include/linux/netfilter/nf_conntrack_sctp.h HDRINST usr/include/linux/netfilter/xt_socket.h HDRINST usr/include/linux/netfilter/xt_connmark.h HDRINST usr/include/linux/netfilter/xt_sctp.h HDRINST usr/include/linux/netfilter/xt_tcpudp.h HDRINST usr/include/linux/netfilter/xt_DSCP.h HDRINST usr/include/linux/netfilter/xt_time.h HDRINST usr/include/linux/netfilter/xt_IDLETIMER.h HDRINST usr/include/linux/netfilter/xt_policy.h HDRINST usr/include/linux/netfilter/xt_rpfilter.h HDRINST usr/include/linux/netfilter/xt_nfacct.h HDRINST usr/include/linux/netfilter/xt_SECMARK.h HDRINST usr/include/linux/netfilter/xt_length.h HDRINST usr/include/linux/netfilter/nfnetlink_cthelper.h HDRINST usr/include/linux/netfilter/xt_quota.h HDRINST usr/include/linux/netfilter/xt_CLASSIFY.h HDRINST usr/include/linux/netfilter/xt_ipcomp.h HDRINST usr/include/linux/netfilter/xt_iprange.h HDRINST usr/include/linux/netfilter/xt_bpf.h HDRINST usr/include/linux/netfilter/xt_LOG.h HDRINST usr/include/linux/netfilter/xt_rateest.h HDRINST usr/include/linux/netfilter/xt_CONNSECMARK.h HDRINST usr/include/linux/netfilter/xt_HMARK.h HDRINST usr/include/linux/netfilter/xt_CONNMARK.h HDRINST usr/include/linux/netfilter/xt_pkttype.h HDRINST usr/include/linux/netfilter/xt_ipvs.h HDRINST usr/include/linux/netfilter/xt_devgroup.h HDRINST usr/include/linux/netfilter/xt_AUDIT.h HDRINST usr/include/linux/netfilter/xt_realm.h HDRINST usr/include/linux/netfilter/nf_conntrack_common.h HDRINST usr/include/linux/netfilter/xt_set.h HDRINST usr/include/linux/netfilter/xt_LED.h HDRINST usr/include/linux/netfilter/xt_connlabel.h HDRINST usr/include/linux/netfilter/xt_owner.h HDRINST usr/include/linux/netfilter/xt_dccp.h HDRINST usr/include/linux/netfilter/xt_limit.h HDRINST usr/include/linux/netfilter/xt_conntrack.h HDRINST usr/include/linux/netfilter/xt_TEE.h HDRINST usr/include/linux/netfilter/xt_RATEEST.h HDRINST usr/include/linux/netfilter/xt_connlimit.h HDRINST usr/include/linux/netfilter/ipset/ip_set.h HDRINST usr/include/linux/netfilter/ipset/ip_set_list.h HDRINST usr/include/linux/netfilter/ipset/ip_set_hash.h HDRINST usr/include/linux/netfilter/ipset/ip_set_bitmap.h HDRINST usr/include/linux/netfilter/x_tables.h HDRINST usr/include/linux/netfilter/xt_dscp.h HDRINST usr/include/linux/netfilter/nf_conntrack_ftp.h HDRINST usr/include/linux/netfilter/xt_cluster.h HDRINST usr/include/linux/netfilter/nf_conntrack_tuple_common.h HDRINST usr/include/linux/netfilter/nf_log.h HDRINST usr/include/linux/netfilter/xt_tcpmss.h HDRINST usr/include/linux/netfilter/xt_NFLOG.h HDRINST usr/include/linux/netfilter/xt_l2tp.h HDRINST usr/include/linux/netfilter/xt_helper.h HDRINST usr/include/linux/netfilter/xt_statistic.h HDRINST usr/include/linux/netfilter/nfnetlink_queue.h HDRINST usr/include/linux/netfilter/nfnetlink_cttimeout.h HDRINST usr/include/linux/netfilter/xt_CT.h HDRINST usr/include/linux/netfilter/xt_CHECKSUM.h HDRINST usr/include/linux/netfilter/xt_connbytes.h HDRINST usr/include/linux/netfilter/xt_state.h HDRINST usr/include/linux/netfilter/nf_tables.h HDRINST usr/include/linux/netfilter/xt_mark.h HDRINST usr/include/linux/netfilter/xt_cpu.h HDRINST usr/include/linux/netfilter/nf_tables_compat.h HDRINST usr/include/linux/netfilter/xt_physdev.h HDRINST usr/include/linux/netfilter/nfnetlink_conntrack.h HDRINST usr/include/linux/netfilter/nfnetlink_acct.h HDRINST usr/include/linux/netfilter/xt_TCPMSS.h HDRINST usr/include/linux/tty_flags.h HDRINST usr/include/linux/if_phonet.h HDRINST usr/include/linux/elf-em.h HDRINST usr/include/linux/vm_sockets.h HDRINST usr/include/linux/dlmconstants.h HDRINST usr/include/linux/bsg.h HDRINST usr/include/linux/matroxfb.h HDRINST usr/include/linux/sysctl.h HDRINST usr/include/linux/unix_diag.h HDRINST usr/include/linux/pcitest.h HDRINST usr/include/linux/mman.h HDRINST usr/include/linux/if_plip.h HDRINST usr/include/linux/virtio_balloon.h HDRINST usr/include/linux/pidfd.h HDRINST usr/include/linux/f2fs.h HDRINST usr/include/linux/x25.h HDRINST usr/include/linux/if_cablemodem.h HDRINST usr/include/linux/utsname.h HDRINST usr/include/linux/counter.h HDRINST usr/include/linux/atm_tcp.h HDRINST usr/include/linux/atalk.h HDRINST usr/include/linux/virtio_rng.h HDRINST usr/include/linux/vboxguest.h HDRINST usr/include/linux/bpf_perf_event.h HDRINST usr/include/linux/ipmi_ssif_bmc.h HDRINST usr/include/linux/nfs_mount.h HDRINST usr/include/linux/sonet.h HDRINST usr/include/linux/netfilter.h HDRINST usr/include/linux/keyctl.h HDRINST usr/include/linux/nl80211.h HDRINST usr/include/linux/misc/bcm_vk.h HDRINST usr/include/linux/audit.h HDRINST usr/include/linux/tipc_config.h HDRINST usr/include/linux/tipc_sockets_diag.h HDRINST usr/include/linux/futex.h HDRINST usr/include/linux/sev-guest.h HDRINST usr/include/linux/ublk_cmd.h HDRINST usr/include/linux/types.h HDRINST usr/include/linux/virtio_input.h HDRINST usr/include/linux/if_slip.h HDRINST usr/include/linux/personality.h HDRINST usr/include/linux/openat2.h HDRINST usr/include/linux/poll.h HDRINST usr/include/linux/posix_acl.h HDRINST usr/include/linux/smc_diag.h HDRINST usr/include/linux/snmp.h HDRINST usr/include/linux/errqueue.h HDRINST usr/include/linux/if_tunnel.h HDRINST usr/include/linux/fanotify.h HDRINST usr/include/linux/kernel.h HDRINST usr/include/linux/rtnetlink.h HDRINST usr/include/linux/rpl.h HDRINST usr/include/linux/memfd.h HDRINST usr/include/linux/serial_core.h HDRINST usr/include/linux/dns_resolver.h HDRINST usr/include/linux/pr.h HDRINST usr/include/linux/atm_eni.h HDRINST usr/include/linux/lp.h HDRINST usr/include/linux/virtio_mem.h HDRINST usr/include/linux/ultrasound.h HDRINST usr/include/linux/sctp.h HDRINST usr/include/linux/uio.h HDRINST usr/include/linux/tcp_metrics.h HDRINST usr/include/linux/wwan.h HDRINST usr/include/linux/atmbr2684.h HDRINST usr/include/linux/in_route.h HDRINST usr/include/linux/qemu_fw_cfg.h HDRINST usr/include/linux/if_macsec.h HDRINST usr/include/linux/usb/charger.h HDRINST usr/include/linux/usb/g_uvc.h HDRINST usr/include/linux/usb/gadgetfs.h HDRINST usr/include/linux/usb/raw_gadget.h HDRINST usr/include/linux/usb/cdc-wdm.h HDRINST usr/include/linux/usb/g_printer.h HDRINST usr/include/linux/usb/midi.h HDRINST usr/include/linux/usb/tmc.h HDRINST usr/include/linux/usb/video.h HDRINST usr/include/linux/usb/functionfs.h HDRINST usr/include/linux/usb/audio.h HDRINST usr/include/linux/usb/ch11.h HDRINST usr/include/linux/usb/ch9.h HDRINST usr/include/linux/usb/cdc.h HDRINST usr/include/linux/jffs2.h HDRINST usr/include/linux/ax25.h HDRINST usr/include/linux/auto_fs.h HDRINST usr/include/linux/tiocl.h HDRINST usr/include/linux/scc.h HDRINST usr/include/linux/psci.h HDRINST usr/include/linux/swab.h HDRINST usr/include/linux/cec.h HDRINST usr/include/linux/kfd_ioctl.h HDRINST usr/include/linux/smc.h HDRINST usr/include/linux/qrtr.h HDRINST usr/include/linux/screen_info.h HDRINST usr/include/linux/nfsacl.h HDRINST usr/include/linux/seg6_hmac.h HDRINST usr/include/linux/gameport.h HDRINST usr/include/linux/wireless.h HDRINST usr/include/linux/fdreg.h HDRINST usr/include/linux/cciss_defs.h HDRINST usr/include/linux/serial_reg.h HDRINST usr/include/linux/perf_event.h HDRINST usr/include/linux/in6.h HDRINST usr/include/linux/hid.h HDRINST usr/include/linux/netlink.h HDRINST usr/include/linux/fuse.h HDRINST usr/include/linux/magic.h HDRINST usr/include/linux/ioam6_iptunnel.h HDRINST usr/include/linux/stm.h HDRINST usr/include/linux/vsockmon.h HDRINST usr/include/linux/seg6.h HDRINST usr/include/linux/idxd.h HDRINST usr/include/linux/nitro_enclaves.h HDRINST usr/include/linux/ptrace.h HDRINST usr/include/linux/ioam6_genl.h HDRINST usr/include/linux/qnx4_fs.h HDRINST usr/include/linux/fsl_mc.h HDRINST usr/include/linux/net_tstamp.h HDRINST usr/include/linux/msg.h HDRINST usr/include/linux/netfilter_ipv4/ipt_TTL.h HDRINST usr/include/linux/netfilter_ipv4/ipt_ttl.h HDRINST usr/include/linux/netfilter_ipv4/ipt_ah.h HDRINST usr/include/linux/netfilter_ipv4/ipt_ECN.h HDRINST usr/include/linux/netfilter_ipv4/ip_tables.h HDRINST usr/include/linux/netfilter_ipv4/ipt_ecn.h HDRINST usr/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h HDRINST usr/include/linux/netfilter_ipv4/ipt_REJECT.h HDRINST usr/include/linux/netfilter_ipv4/ipt_LOG.h HDRINST usr/include/linux/sem.h HDRINST usr/include/linux/net_namespace.h HDRINST usr/include/linux/radeonfb.h HDRINST usr/include/linux/tee.h HDRINST usr/include/linux/udp.h HDRINST usr/include/linux/virtio_bt.h HDRINST usr/include/linux/v4l2-subdev.h HDRINST usr/include/linux/posix_acl_xattr.h HDRINST usr/include/linux/v4l2-mediabus.h HDRINST usr/include/linux/atmapi.h HDRINST usr/include/linux/raid/md_p.h HDRINST usr/include/linux/raid/md_u.h HDRINST usr/include/linux/zorro_ids.h HDRINST usr/include/linux/nbd.h HDRINST usr/include/linux/isst_if.h HDRINST usr/include/linux/rxrpc.h HDRINST usr/include/linux/unistd.h HDRINST usr/include/linux/if_arp.h HDRINST usr/include/linux/atm_zatm.h HDRINST usr/include/linux/io_uring.h HDRINST usr/include/linux/if_fddi.h HDRINST usr/include/linux/bpqether.h HDRINST usr/include/linux/sysinfo.h HDRINST usr/include/linux/auto_dev-ioctl.h HDRINST usr/include/linux/nfs4_mount.h HDRINST usr/include/linux/keyboard.h HDRINST usr/include/linux/virtio_mmio.h HDRINST usr/include/linux/input.h HDRINST usr/include/linux/qnxtypes.h HDRINST usr/include/linux/mdio.h HDRINST usr/include/linux/lwtunnel.h HDRINST usr/include/linux/gfs2_ondisk.h HDRINST usr/include/linux/eventfd.h HDRINST usr/include/linux/nfs4.h HDRINST usr/include/linux/ptp_clock.h HDRINST usr/include/linux/nubus.h HDRINST usr/include/linux/if_bonding.h HDRINST usr/include/linux/kcov.h HDRINST usr/include/linux/fadvise.h HDRINST usr/include/linux/taskstats.h HDRINST usr/include/linux/veth.h HDRINST usr/include/linux/atm.h HDRINST usr/include/linux/ipmi.h HDRINST usr/include/linux/kdev_t.h HDRINST usr/include/linux/mount.h HDRINST usr/include/linux/shm.h HDRINST usr/include/linux/resource.h HDRINST usr/include/linux/prctl.h HDRINST usr/include/linux/watch_queue.h HDRINST usr/include/linux/sched.h HDRINST usr/include/linux/phonet.h HDRINST usr/include/linux/random.h HDRINST usr/include/linux/tty.h HDRINST usr/include/linux/apm_bios.h HDRINST usr/include/linux/fd.h HDRINST usr/include/linux/um_timetravel.h HDRINST usr/include/linux/tls.h LD /kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o HDRINST usr/include/linux/rpmsg_types.h HDRINST usr/include/linux/pfrut.h HDRINST usr/include/linux/mei.h HDRINST usr/include/linux/fsi.h HDRINST usr/include/linux/rds.h HDRINST usr/include/linux/if_x25.h HDRINST usr/include/linux/param.h HDRINST usr/include/linux/netdevice.h HDRINST usr/include/linux/binfmts.h HDRINST usr/include/linux/if_pppox.h HDRINST usr/include/linux/sockios.h HDRINST usr/include/linux/kcm.h HDRINST usr/include/linux/virtio_9p.h HDRINST usr/include/linux/genwqe/genwqe_card.h HDRINST usr/include/linux/if_tun.h HDRINST usr/include/linux/ext4.h HDRINST usr/include/linux/if_ether.h HDRINST usr/include/linux/kvm_para.h HDRINST usr/include/linux/kernel-page-flags.h HDRINST usr/include/linux/cdrom.h HDRINST usr/include/linux/un.h HDRINST usr/include/linux/module.h HDRINST usr/include/linux/mqueue.h HDRINST usr/include/linux/a.out.h HDRINST usr/include/linux/input-event-codes.h HDRINST usr/include/linux/coda.h HDRINST usr/include/linux/rio_mport_cdev.h HDRINST usr/include/linux/ipsec.h HDRINST usr/include/linux/blkpg.h HDRINST usr/include/linux/blkzoned.h AR /kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a HDRINST usr/include/linux/netfilter_bridge/ebt_arpreply.h HDRINST usr/include/linux/netfilter_bridge/ebt_redirect.h HDRINST usr/include/linux/netfilter_bridge/ebt_nflog.h HDRINST usr/include/linux/netfilter_bridge/ebt_802_3.h HDRINST usr/include/linux/netfilter_bridge/ebt_nat.h HDRINST usr/include/linux/netfilter_bridge/ebt_mark_m.h HDRINST usr/include/linux/netfilter_bridge/ebtables.h HDRINST usr/include/linux/netfilter_bridge/ebt_vlan.h HDRINST usr/include/linux/netfilter_bridge/ebt_limit.h HDRINST usr/include/linux/netfilter_bridge/ebt_log.h HDRINST usr/include/linux/netfilter_bridge/ebt_stp.h HDRINST usr/include/linux/netfilter_bridge/ebt_pkttype.h HDRINST usr/include/linux/netfilter_bridge/ebt_ip.h HDRINST usr/include/linux/netfilter_bridge/ebt_ip6.h HDRINST usr/include/linux/netfilter_bridge/ebt_arp.h HDRINST usr/include/linux/netfilter_bridge/ebt_mark_t.h HDRINST usr/include/linux/netfilter_bridge/ebt_among.h HDRINST usr/include/linux/reiserfs_fs.h HDRINST usr/include/linux/cciss_ioctl.h HDRINST usr/include/linux/fsmap.h HDRINST usr/include/linux/smiapp.h HDRINST usr/include/linux/switchtec_ioctl.h HDRINST usr/include/linux/atmdev.h HDRINST usr/include/linux/hpet.h HDRINST usr/include/linux/virtio_config.h HDRINST usr/include/linux/string.h HDRINST usr/include/linux/kfd_sysfs.h HDRINST usr/include/linux/inet_diag.h HDRINST usr/include/linux/netdev.h HDRINST usr/include/linux/xattr.h HDRINST usr/include/linux/iommufd.h HDRINST usr/include/linux/user_events.h HDRINST usr/include/linux/errno.h HDRINST usr/include/linux/icmp.h HDRINST usr/include/linux/i2o-dev.h HDRINST usr/include/linux/pg.h HDRINST usr/include/linux/if_bridge.h HDRINST usr/include/linux/thermal.h HDRINST usr/include/linux/uinput.h HDRINST usr/include/linux/handshake.h HDRINST usr/include/linux/dqblk_xfs.h HDRINST usr/include/linux/v4l2-common.h HDRINST usr/include/linux/nvram.h HDRINST usr/include/linux/if_vlan.h HDRINST usr/include/linux/uhid.h HDRINST usr/include/linux/omap3isp.h HDRINST usr/include/linux/rose.h HDRINST usr/include/linux/phantom.h HDRINST usr/include/linux/ipmi_msgdefs.h HDRINST usr/include/linux/bcm933xx_hcs.h HDRINST usr/include/linux/bpf.h HDRINST usr/include/linux/mempolicy.h HDRINST usr/include/linux/efs_fs_sb.h HDRINST usr/include/linux/nexthop.h HDRINST usr/include/linux/net_dropmon.h HDRINST usr/include/linux/surface_aggregator/cdev.h HDRINST usr/include/linux/surface_aggregator/dtx.h HDRINST usr/include/linux/net.h HDRINST usr/include/linux/mii.h HDRINST usr/include/linux/virtio_pcidev.h HDRINST usr/include/linux/termios.h HDRINST usr/include/linux/cgroupstats.h CC /kernel/build64-default/tools/objtool/weak.o HDRINST usr/include/linux/mpls.h CC /kernel/build64-default/tools/objtool/check.o HDRINST usr/include/linux/iommu.h HDRINST usr/include/linux/toshiba.h HDRINST usr/include/linux/virtio_scsi.h CC /kernel/build64-default/tools/objtool/special.o HDRINST usr/include/linux/zorro.h HDRINST usr/include/linux/chio.h MKDIR /kernel/build64-default/tools/objtool/arch/x86/ CC /kernel/build64-default/tools/objtool/builtin-check.o HDRINST usr/include/linux/pkt_sched.h HDRINST usr/include/linux/cramfs_fs.h CC /kernel/build64-default/tools/objtool/elf.o HDRINST usr/include/linux/nfs3.h HDRINST usr/include/linux/vfio_ccw.h CC /kernel/build64-default/tools/objtool/objtool.o MKDIR /kernel/build64-default/tools/objtool/arch/x86/lib/ CC /kernel/build64-default/tools/objtool/orc_gen.o HDRINST usr/include/linux/atm_nicstar.h CC /kernel/build64-default/tools/objtool/arch/x86/special.o CC /kernel/build64-default/tools/objtool/orc_dump.o HDRINST usr/include/linux/ncsi.h GEN /kernel/build64-default/tools/objtool/arch/x86/lib/inat-tables.c CC /kernel/build64-default/tools/objtool/libstring.o HDRINST usr/include/linux/virtio_net.h CC /kernel/build64-default/tools/objtool/libctype.o HDRINST usr/include/linux/ioctl.h CC /kernel/build64-default/tools/objtool/str_error_r.o HDRINST usr/include/linux/stddef.h CC /kernel/build64-default/tools/objtool/librbtree.o HDRINST usr/include/linux/limits.h HDRINST usr/include/linux/ipmi_bmc.h HDRINST usr/include/linux/netfilter_arp.h HDRINST usr/include/linux/if_addr.h HDRINST usr/include/linux/rpmsg.h HDRINST usr/include/linux/media-bus-format.h HDRINST usr/include/linux/kernelcapi.h HDRINST usr/include/linux/ppp_defs.h HDRINST usr/include/linux/ethtool.h HDRINST usr/include/linux/aspeed-video.h HDRINST usr/include/linux/hdlc.h HDRINST usr/include/linux/fscrypt.h HDRINST usr/include/linux/batadv_packet.h HDRINST usr/include/linux/uuid.h HDRINST usr/include/linux/capi.h HDRINST usr/include/linux/mptcp.h HDRINST usr/include/linux/hidraw.h HDRINST usr/include/linux/virtio_console.h HDRINST usr/include/linux/irqnr.h HDRINST usr/include/linux/coresight-stm.h HDRINST usr/include/linux/cxl_mem.h HDRINST usr/include/linux/iso_fs.h HDRINST usr/include/linux/virtio_blk.h HDRINST usr/include/linux/udf_fs_i.h HDRINST usr/include/linux/coff.h HDRINST usr/include/linux/dma-buf.h HDRINST usr/include/linux/ife.h HDRINST usr/include/linux/agpgart.h HDRINST usr/include/linux/socket.h HDRINST usr/include/linux/nilfs2_ondisk.h HDRINST usr/include/linux/connector.h HDRINST usr/include/linux/auto_fs4.h HDRINST usr/include/linux/bt-bmc.h HDRINST usr/include/linux/map_to_7segment.h HDRINST usr/include/linux/tc_act/tc_skbedit.h HDRINST usr/include/linux/tc_act/tc_ctinfo.h HDRINST usr/include/linux/tc_act/tc_defact.h HDRINST usr/include/linux/tc_act/tc_gact.h HDRINST usr/include/linux/tc_act/tc_vlan.h HDRINST usr/include/linux/tc_act/tc_skbmod.h HDRINST usr/include/linux/tc_act/tc_sample.h HDRINST usr/include/linux/tc_act/tc_tunnel_key.h HDRINST usr/include/linux/tc_act/tc_gate.h HDRINST usr/include/linux/tc_act/tc_mirred.h HDRINST usr/include/linux/tc_act/tc_nat.h HDRINST usr/include/linux/tc_act/tc_csum.h HDRINST usr/include/linux/tc_act/tc_connmark.h HDRINST usr/include/linux/tc_act/tc_ife.h HDRINST usr/include/linux/tc_act/tc_ct.h HDRINST usr/include/linux/tc_act/tc_pedit.h HDRINST usr/include/linux/tc_act/tc_mpls.h HDRINST usr/include/linux/tc_act/tc_bpf.h HDRINST usr/include/linux/tc_act/tc_ipt.h HDRINST usr/include/linux/netrom.h HDRINST usr/include/linux/joystick.h HDRINST usr/include/linux/falloc.h HDRINST usr/include/linux/cycx_cfm.h HDRINST usr/include/linux/omapfb.h HDRINST usr/include/linux/msdos_fs.h HDRINST usr/include/linux/virtio_types.h HDRINST usr/include/linux/mroute.h HDRINST usr/include/linux/psample.h HDRINST usr/include/linux/ipv6.h HDRINST usr/include/linux/dw100.h HDRINST usr/include/linux/psp-sev.h HDRINST usr/include/linux/vfio.h HDRINST usr/include/linux/if_ppp.h CC /kernel/build64-default/tools/objtool/arch/x86/decode.o HDRINST usr/include/linux/byteorder/big_endian.h HDRINST usr/include/linux/byteorder/little_endian.h HDRINST usr/include/linux/comedi.h HDRINST usr/include/linux/scif_ioctl.h HDRINST usr/include/linux/timerfd.h HDRINST usr/include/linux/time_types.h HDRINST usr/include/linux/firewire-constants.h HDRINST usr/include/linux/virtio_snd.h HDRINST usr/include/linux/ppp-ioctl.h HDRINST usr/include/linux/fib_rules.h HDRINST usr/include/linux/gen_stats.h HDRINST usr/include/linux/virtio_iommu.h HDRINST usr/include/linux/genetlink.h HDRINST usr/include/linux/uvcvideo.h HDRINST usr/include/linux/pfkeyv2.h HDRINST usr/include/linux/soundcard.h HDRINST usr/include/linux/times.h HDRINST usr/include/linux/nfc.h HDRINST usr/include/linux/affs_hardblocks.h HDRINST usr/include/linux/nilfs2_api.h HDRINST usr/include/linux/rseq.h HDRINST usr/include/linux/caif/caif_socket.h HDRINST usr/include/linux/caif/if_caif.h HDRINST usr/include/linux/i2c-dev.h HDRINST usr/include/linux/cuda.h HDRINST usr/include/linux/mei_uuid.h HDRINST usr/include/linux/cn_proc.h HDRINST usr/include/linux/parport.h HDRINST usr/include/linux/v4l2-controls.h HDRINST usr/include/linux/hsi/cs-protocol.h HDRINST usr/include/linux/hsi/hsi_char.h HDRINST usr/include/linux/seg6_genl.h HDRINST usr/include/linux/am437x-vpfe.h HDRINST usr/include/linux/amt.h HDRINST usr/include/linux/netconf.h HDRINST usr/include/linux/erspan.h HDRINST usr/include/linux/nsfs.h HDRINST usr/include/linux/xilinx-v4l2-controls.h HDRINST usr/include/linux/aspeed-p2a-ctrl.h HDRINST usr/include/linux/vfio_zdev.h HDRINST usr/include/linux/serio.h HDRINST usr/include/linux/acrn.h HDRINST usr/include/linux/nfs2.h HDRINST usr/include/linux/virtio_pci.h HDRINST usr/include/linux/ipc.h HDRINST usr/include/linux/ethtool_netlink.h HDRINST usr/include/linux/kd.h HDRINST usr/include/linux/videodev2.h HDRINST usr/include/linux/elf.h HDRINST usr/include/linux/if_alg.h HDRINST usr/include/linux/sonypi.h HDRINST usr/include/linux/fsverity.h HDRINST usr/include/linux/if.h HDRINST usr/include/linux/btrfs.h HDRINST usr/include/linux/vm_sockets_diag.h HDRINST usr/include/linux/netfilter_bridge.h HDRINST usr/include/linux/packet_diag.h HDRINST usr/include/linux/netfilter_ipv4.h HDRINST usr/include/linux/kvm.h HDRINST usr/include/linux/pci.h HDRINST usr/include/linux/if_addrlabel.h HDRINST usr/include/linux/hdlcdrv.h HDRINST usr/include/linux/cfm_bridge.h HDRINST usr/include/linux/fiemap.h HDRINST usr/include/linux/dm-ioctl.h HDRINST usr/include/linux/aspeed-lpc-ctrl.h HDRINST usr/include/linux/atmioc.h HDRINST usr/include/linux/dlm.h HDRINST usr/include/linux/pci_regs.h HDRINST usr/include/linux/cachefiles.h HDRINST usr/include/linux/membarrier.h HDRINST usr/include/linux/nfs_idmap.h HDRINST usr/include/linux/ip.h HDRINST usr/include/linux/atm_he.h HDRINST usr/include/linux/nfsd/export.h HDRINST usr/include/linux/nfsd/stats.h HDRINST usr/include/linux/nfsd/debug.h HDRINST usr/include/linux/nfsd/cld.h HDRINST usr/include/linux/vmcore.h HDRINST usr/include/linux/ip_vs.h HDRINST usr/include/linux/vbox_vmmdev_types.h HDRINST usr/include/linux/dvb/osd.h HDRINST usr/include/linux/dvb/dmx.h HDRINST usr/include/linux/dvb/net.h HDRINST usr/include/linux/dvb/frontend.h HDRINST usr/include/linux/dvb/ca.h HDRINST usr/include/linux/dvb/version.h HDRINST usr/include/linux/dvb/video.h HDRINST usr/include/linux/dvb/audio.h HDRINST usr/include/linux/nfs.h HDRINST usr/include/linux/if_link.h HDRINST usr/include/linux/wait.h HDRINST usr/include/linux/icmpv6.h HDRINST usr/include/linux/media.h HDRINST usr/include/linux/seg6_local.h HDRINST usr/include/linux/tps6594_pfsm.h HDRINST usr/include/linux/openvswitch.h HDRINST usr/include/linux/atmsap.h HDRINST usr/include/linux/bpfilter.h HDRINST usr/include/linux/fpga-dfl.h HDRINST usr/include/linux/userio.h HDRINST usr/include/linux/signal.h HDRINST usr/include/linux/map_to_14segment.h HDRINST usr/include/linux/hdreg.h HDRINST usr/include/linux/utime.h HDRINST usr/include/linux/usbdevice_fs.h HDRINST usr/include/linux/timex.h HDRINST usr/include/linux/if_fc.h HDRINST usr/include/linux/reiserfs_xattr.h HDRINST usr/include/linux/hw_breakpoint.h HDRINST usr/include/linux/quota.h HDRINST usr/include/linux/ioprio.h HDRINST usr/include/linux/eventpoll.h HDRINST usr/include/linux/atmclip.h HDRINST usr/include/linux/can.h HDRINST usr/include/linux/if_team.h HDRINST usr/include/linux/usbip.h HDRINST usr/include/linux/stat.h HDRINST usr/include/linux/fou.h HDRINST usr/include/linux/hash_info.h HDRINST usr/include/linux/ppp-comp.h HDRINST usr/include/linux/ip6_tunnel.h HDRINST usr/include/linux/tipc_netlink.h HDRINST usr/include/linux/in.h HDRINST usr/include/linux/wireguard.h HDRINST usr/include/linux/btf.h HDRINST usr/include/linux/batman_adv.h HDRINST usr/include/linux/fcntl.h HDRINST usr/include/linux/if_ltalk.h HDRINST usr/include/linux/i2c.h HDRINST usr/include/linux/atm_idt77105.h HDRINST usr/include/linux/kexec.h HDRINST usr/include/linux/arm_sdei.h HDRINST usr/include/linux/netfilter_ipv6/ip6_tables.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_ah.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_NPT.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_rt.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_REJECT.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_opts.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_srh.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_LOG.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_mh.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_HL.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_hl.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_frag.h HDRINST usr/include/linux/netfilter_ipv6/ip6t_ipv6header.h HDRINST usr/include/linux/minix_fs.h HDRINST usr/include/linux/aio_abi.h HDRINST usr/include/linux/pktcdvd.h HDRINST usr/include/linux/libc-compat.h HDRINST usr/include/linux/atmlec.h HDRINST usr/include/linux/signalfd.h HDRINST usr/include/linux/bpf_common.h HDRINST usr/include/linux/seg6_iptunnel.h HDRINST usr/include/linux/synclink.h HDRINST usr/include/linux/mpls_iptunnel.h HDRINST usr/include/linux/mctp.h HDRINST usr/include/linux/if_xdp.h HDRINST usr/include/linux/llc.h HDRINST usr/include/linux/atmsvc.h HDRINST usr/include/linux/sed-opal.h HDRINST usr/include/linux/sock_diag.h HDRINST usr/include/linux/time.h HDRINST usr/include/linux/securebits.h HDRINST usr/include/linux/fsl_hypervisor.h HDRINST usr/include/linux/if_hippi.h HDRINST usr/include/linux/seccomp.h HDRINST usr/include/linux/oom.h HDRINST usr/include/linux/filter.h HDRINST usr/include/linux/inotify.h HDRINST usr/include/linux/rfkill.h HDRINST usr/include/linux/reboot.h HDRINST usr/include/linux/can/vxcan.h HDRINST usr/include/linux/can/j1939.h HDRINST usr/include/linux/can/netlink.h HDRINST usr/include/linux/can/bcm.h HDRINST usr/include/linux/can/raw.h HDRINST usr/include/linux/can/gw.h HDRINST usr/include/linux/can/error.h HDRINST usr/include/linux/can/isotp.h HDRINST usr/include/linux/if_eql.h HDRINST usr/include/linux/hiddev.h HDRINST usr/include/linux/blktrace_api.h HDRINST usr/include/linux/ccs.h HDRINST usr/include/linux/ioam6.h HDRINST usr/include/linux/hsr_netlink.h HDRINST usr/include/linux/mmc/ioctl.h HDRINST usr/include/linux/bfs_fs.h HDRINST usr/include/linux/rio_cm_cdev.h HDRINST usr/include/linux/uleds.h HDRINST usr/include/linux/mrp_bridge.h HDRINST usr/include/linux/adb.h HDRINST usr/include/linux/pmu.h HDRINST usr/include/linux/udmabuf.h HDRINST usr/include/linux/kcmp.h HDRINST usr/include/linux/dma-heap.h HDRINST usr/include/linux/userfaultfd.h HDRINST usr/include/linux/netfilter_arp/arpt_mangle.h HDRINST usr/include/linux/netfilter_arp/arp_tables.h HDRINST usr/include/linux/tipc.h HDRINST usr/include/linux/virtio_ids.h HDRINST usr/include/linux/l2tp.h HDRINST usr/include/linux/devlink.h HDRINST usr/include/linux/virtio_gpio.h HDRINST usr/include/linux/dcbnl.h HDRINST usr/include/linux/cyclades.h HDRINST usr/include/sound/intel/avs/tokens.h HDRINST usr/include/sound/sof/fw.h HDRINST usr/include/sound/sof/abi.h HDRINST usr/include/sound/sof/tokens.h HDRINST usr/include/sound/sof/header.h HDRINST usr/include/sound/usb_stream.h HDRINST usr/include/sound/sfnt_info.h HDRINST usr/include/sound/asequencer.h HDRINST usr/include/sound/tlv.h HDRINST usr/include/sound/asound.h HDRINST usr/include/sound/asoc.h HDRINST usr/include/sound/sb16_csp.h HDRINST usr/include/sound/compress_offload.h HDRINST usr/include/sound/hdsp.h HDRINST usr/include/sound/emu10k1.h HDRINST usr/include/sound/snd_ar_tokens.h HDRINST usr/include/sound/snd_sst_tokens.h HDRINST usr/include/sound/asound_fm.h HDRINST usr/include/sound/hdspm.h HDRINST usr/include/sound/compress_params.h HDRINST usr/include/sound/firewire.h HDRINST usr/include/sound/skl-tplg-interface.h HDRINST usr/include/scsi/scsi_bsg_ufs.h HDRINST usr/include/scsi/scsi_netlink_fc.h HDRINST usr/include/scsi/scsi_bsg_mpi3mr.h HDRINST usr/include/scsi/fc/fc_ns.h HDRINST usr/include/scsi/fc/fc_fs.h HDRINST usr/include/scsi/fc/fc_els.h HDRINST usr/include/scsi/fc/fc_gs.h HDRINST usr/include/scsi/scsi_bsg_fc.h HDRINST usr/include/scsi/cxlflash_ioctl.h HDRINST usr/include/scsi/scsi_netlink.h HDRINST usr/include/linux/version.h HDRINST usr/include/asm/processor-flags.h HDRINST usr/include/asm/auxvec.h HDRINST usr/include/asm/svm.h HDRINST usr/include/asm/bitsperlong.h HDRINST usr/include/asm/kvm_perf.h HDRINST usr/include/asm/mce.h HDRINST usr/include/asm/posix_types.h HDRINST usr/include/asm/msr.h HDRINST usr/include/asm/sigcontext32.h HDRINST usr/include/asm/mman.h HDRINST usr/include/asm/shmbuf.h HDRINST usr/include/asm/e820.h HDRINST usr/include/asm/posix_types_64.h HDRINST usr/include/asm/vsyscall.h HDRINST usr/include/asm/msgbuf.h HDRINST usr/include/asm/swab.h HDRINST usr/include/asm/statfs.h HDRINST usr/include/asm/posix_types_x32.h HDRINST usr/include/asm/ptrace.h HDRINST usr/include/asm/unistd.h HDRINST usr/include/asm/ist.h HDRINST usr/include/asm/prctl.h HDRINST usr/include/asm/boot.h HDRINST usr/include/asm/sigcontext.h HDRINST usr/include/asm/posix_types_32.h HDRINST usr/include/asm/kvm_para.h HDRINST usr/include/asm/a.out.h HDRINST usr/include/asm/mtrr.h HDRINST usr/include/asm/amd_hsmp.h HDRINST usr/include/asm/hwcap2.h HDRINST usr/include/asm/ptrace-abi.h HDRINST usr/include/asm/vm86.h HDRINST usr/include/asm/vmx.h HDRINST usr/include/asm/perf_regs.h HDRINST usr/include/asm/ldt.h HDRINST usr/include/asm/kvm.h HDRINST usr/include/asm/debugreg.h HDRINST usr/include/asm/signal.h HDRINST usr/include/asm/bootparam.h HDRINST usr/include/asm/siginfo.h HDRINST usr/include/asm/hw_breakpoint.h HDRINST usr/include/asm/stat.h HDRINST usr/include/asm/setup.h HDRINST usr/include/asm/sembuf.h HDRINST usr/include/asm/sgx.h HDRINST usr/include/asm/ucontext.h HDRINST usr/include/asm/byteorder.h HDRINST usr/include/asm/unistd_64.h HDRINST usr/include/asm/ioctls.h HDRINST usr/include/asm/bpf_perf_event.h HDRINST usr/include/asm/types.h HDRINST usr/include/asm/poll.h HDRINST usr/include/asm/resource.h HDRINST usr/include/asm/param.h HDRINST usr/include/asm/sockios.h HDRINST usr/include/asm/errno.h HDRINST usr/include/asm/unistd_x32.h HDRINST usr/include/asm/termios.h HDRINST usr/include/asm/ioctl.h HDRINST usr/include/asm/socket.h HDRINST usr/include/asm/unistd_32.h HDRINST usr/include/asm/termbits.h HDRINST usr/include/asm/fcntl.h HDRINST usr/include/asm/ipcbuf.h HOSTLD scripts/mod/modpost CC kernel/bounds.s CHKSHA1 ../include/linux/atomic/atomic-arch-fallback.h CHKSHA1 ../include/linux/atomic/atomic-instrumented.h CHKSHA1 ../include/linux/atomic/atomic-long.h UPD include/generated/timeconst.h UPD include/generated/bounds.h CC arch/x86/kernel/asm-offsets.s LD /kernel/build64-default/tools/objtool/arch/x86/objtool-in.o UPD include/generated/asm-offsets.h CALL ../scripts/checksyscalls.sh LD /kernel/build64-default/tools/objtool/objtool-in.o LINK /kernel/build64-default/tools/objtool/objtool LDS scripts/module.lds CC ipc/compat.o HOSTCC usr/gen_init_cpio CC ipc/util.o CC ipc/msgutil.o AR certs/built-in.a CC init/main.o CC io_uring/io_uring.o CC ipc/msg.o CC io_uring/xattr.o CC ipc/sem.o AS arch/x86/lib/clear_page_64.o CC security/commoncap.o CC io_uring/nop.o CC block/bdev.o CC io_uring/fs.o CC security/min_addr.o UPD init/utsversion-tmp.h CC init/do_mounts.o CC io_uring/splice.o CC block/fops.o CC block/partitions/core.o CC init/do_mounts_initrd.o CC block/bio.o CC arch/x86/lib/cmdline.o CC ipc/shm.o CC arch/x86/pci/i386.o AR arch/x86/video/built-in.a CC io_uring/sync.o CC arch/x86/power/cpu.o CC security/keys/gc.o AR virt/lib/built-in.a AR arch/x86/ia32/built-in.a CC [M] arch/x86/video/fbdev.o CC arch/x86/power/hibernate_64.o AS arch/x86/crypto/aesni-intel_asm.o CC net/llc/llc_core.o CC [M] virt/lib/irqbypass.o CC arch/x86/realmode/init.o AR drivers/irqchip/built-in.a CC sound/core/seq/seq.o AR arch/x86/platform/atom/built-in.a AR sound/i2c/other/built-in.a CC fs/notify/dnotify/dnotify.o CC net/core/sock.o CC arch/x86/mm/pat/set_memory.o CC arch/x86/events/amd/core.o CC net/core/request_sock.o AS arch/x86/realmode/rm/header.o CC arch/x86/kernel/fpu/init.o AR sound/i2c/built-in.a AR arch/x86/platform/ce4100/built-in.a CC lib/kunit/test.o CC arch/x86/entry/vdso/vma.o AS arch/x86/realmode/rm/trampoline_64.o AR drivers/bus/mhi/built-in.a CC lib/kunit/resource.o CC kernel/sched/core.o AR drivers/bus/built-in.a CC mm/kasan/common.o CC arch/x86/platform/efi/memmap.o CC arch/x86/crypto/aesni-intel_glue.o AR drivers/phy/allwinner/built-in.a AS arch/x86/realmode/rm/stack.o AR drivers/phy/amlogic/built-in.a CC crypto/api.o AS arch/x86/realmode/rm/reboot.o AR drivers/phy/broadcom/built-in.a AR drivers/phy/cadence/built-in.a AS arch/x86/lib/cmpxchg16b_emu.o AS arch/x86/realmode/rm/wakeup_asm.o AR drivers/phy/freescale/built-in.a CC arch/x86/lib/copy_mc.o AR drivers/phy/hisilicon/built-in.a CC arch/x86/realmode/rm/wakemain.o AR drivers/phy/ingenic/built-in.a AR drivers/phy/intel/built-in.a AR drivers/phy/lantiq/built-in.a AR drivers/phy/marvell/built-in.a AR drivers/phy/mediatek/built-in.a AR drivers/phy/microchip/built-in.a AR drivers/phy/motorola/built-in.a CC arch/x86/realmode/rm/video-mode.o AR drivers/phy/mscc/built-in.a AR drivers/phy/qualcomm/built-in.a AR drivers/phy/ralink/built-in.a GEN usr/initramfs_data.cpio AR drivers/phy/renesas/built-in.a AR drivers/phy/rockchip/built-in.a COPY usr/initramfs_inc_data AS usr/initramfs_data.o AR drivers/phy/samsung/built-in.a AR usr/built-in.a AR drivers/phy/socionext/built-in.a CC io_uring/advise.o AR drivers/phy/st/built-in.a AS arch/x86/realmode/rm/copy.o AR drivers/phy/sunplus/built-in.a AS arch/x86/realmode/rm/bioscall.o AR drivers/phy/tegra/built-in.a CC arch/x86/realmode/rm/regs.o AR drivers/phy/ti/built-in.a CC arch/x86/kernel/fpu/bugs.o AR drivers/phy/xilinx/built-in.a CC drivers/phy/phy-core.o CC arch/x86/realmode/rm/video-vga.o AS arch/x86/lib/copy_mc_64.o AR virt/built-in.a AS arch/x86/lib/copy_page_64.o AS arch/x86/lib/copy_user_64.o CC security/inode.o CC arch/x86/realmode/rm/video-vesa.o AS arch/x86/lib/copy_user_uncached_64.o AR arch/x86/platform/geode/built-in.a CC arch/x86/lib/cpu.o CC arch/x86/mm/init.o CC arch/x86/kernel/fpu/core.o CC sound/core/seq/seq_lock.o CC arch/x86/entry/vdso/extable.o CC arch/x86/realmode/rm/video-bios.o AR arch/x86/platform/iris/built-in.a CC crypto/cipher.o CC mm/kasan/report.o CC security/keys/key.o CC crypto/compress.o PASYMS arch/x86/realmode/rm/pasyms.h CC lib/math/div64.o AS arch/x86/power/hibernate_asm_64.o AR fs/notify/dnotify/built-in.a LDS arch/x86/realmode/rm/realmode.lds CC lib/crypto/memneq.o LD arch/x86/realmode/rm/realmode.elf CC fs/notify/inotify/inotify_fsnotify.o RELOCS arch/x86/realmode/rm/realmode.relocs OBJCOPY arch/x86/realmode/rm/realmode.bin AS arch/x86/realmode/rmpiggy.o CC lib/zlib_inflate/inffast.o CC arch/x86/pci/init.o CC lib/math/gcd.o CC lib/math/lcm.o AR arch/x86/realmode/built-in.a CC lib/kunit/static_stub.o CC lib/zlib_deflate/deflate.o CC lib/kunit/string-stream.o CC fs/notify/fanotify/fanotify.o CC fs/notify/fsnotify.o CC fs/notify/fanotify/fanotify_user.o CC lib/math/int_pow.o CC arch/x86/platform/efi/quirks.o CC net/llc/llc_input.o CC lib/math/int_sqrt.o CC arch/x86/power/hibernate.o CC block/partitions/ldm.o CC arch/x86/platform/intel/iosf_mbi.o CC lib/math/reciprocal_div.o CC block/partitions/msdos.o CC arch/x86/platform/efi/efi.o CC lib/zlib_inflate/inflate.o CC mm/kasan/init.o CC arch/x86/lib/delay.o CC arch/x86/mm/pat/memtype.o CC lib/math/rational.o CC sound/core/seq/seq_clientmgr.o CC ipc/syscall.o CC init/initramfs.o CC arch/x86/events/amd/lbr.o AS arch/x86/crypto/aesni-intel_avx-x86_64.o CC lib/zlib_deflate/deftree.o CC lib/crypto/utils.o CC lib/zlib_inflate/infutil.o CC [M] lib/math/prime_numbers.o CC ipc/ipc_sysctl.o CC fs/nfs_common/grace.o CC security/device_cgroup.o CC crypto/algapi.o CC lib/kunit/assert.o CC ipc/mqueue.o CC fs/notify/inotify/inotify_user.o AS arch/x86/lib/getuser.o CC fs/iomap/trace.o CC arch/x86/entry/vdso/vdso32-setup.o GEN arch/x86/lib/inat-tables.c CC arch/x86/lib/insn-eval.o CC arch/x86/pci/mmconfig_64.o CC fs/iomap/iter.o AS arch/x86/crypto/aes_ctrby8_avx-x86_64.o AR drivers/phy/built-in.a AR drivers/pinctrl/actions/built-in.a CC arch/x86/events/amd/ibs.o AR drivers/pinctrl/bcm/built-in.a AR drivers/pinctrl/cirrus/built-in.a AS [M] arch/x86/crypto/ghash-clmulni-intel_asm.o AR drivers/pinctrl/freescale/built-in.a CC drivers/pinctrl/intel/pinctrl-baytrail.o CC [M] arch/x86/crypto/ghash-clmulni-intel_glue.o CC fs/iomap/buffered-io.o AR arch/x86/net/built-in.a LDS arch/x86/entry/vdso/vdso.lds AR drivers/pinctrl/mediatek/built-in.a CC crypto/scatterwalk.o CC lib/crypto/chacha.o AS arch/x86/entry/vdso/vdso-note.o CC kernel/locking/mutex.o AR arch/x86/power/built-in.a CC crypto/proc.o CC arch/x86/entry/vdso/vclock_gettime.o CC kernel/locking/semaphore.o AR arch/x86/platform/intel/built-in.a CC arch/x86/entry/vdso/vgetcpu.o CC fs/notify/notification.o AS [M] arch/x86/crypto/crc32-pclmul_asm.o CC security/keys/keyring.o CC net/llc/llc_output.o CC mm/filemap.o CC arch/x86/mm/pat/memtype_interval.o CC lib/zlib_inflate/inftrees.o CC arch/x86/kernel/fpu/regset.o CC arch/x86/pci/direct.o CC lib/crypto/aes.o CC drivers/pinctrl/intel/pinctrl-intel.o CC ipc/namespace.o CC arch/x86/platform/efi/efi_64.o CC lib/kunit/try-catch.o CC lib/zlib_deflate/deflate_syms.o AR lib/math/built-in.a CC mm/kasan/generic.o CC arch/x86/mm/init_64.o AS arch/x86/platform/efi/efi_stub_64.o CC kernel/locking/rwsem.o CC [M] arch/x86/kvm/../../../virt/kvm/kvm_main.o CC lib/zlib_inflate/inflate_syms.o CC ipc/mq_sysctl.o AR drivers/pinctrl/mvebu/built-in.a CC arch/x86/kernel/fpu/signal.o CC lib/lzo/lzo1x_compress.o CC lib/lz4/lz4_compress.o AR fs/nfs_common/built-in.a CC lib/lzo/lzo1x_decompress_safe.o CC init/calibrate.o CC [M] arch/x86/crypto/crc32-pclmul_glue.o CC block/partitions/efi.o CC kernel/sched/fair.o CC arch/x86/kernel/cpu/mce/core.o HOSTCC arch/x86/entry/vdso/vdso2c AR lib/zlib_deflate/built-in.a CC arch/x86/kernel/cpu/mce/severity.o CC crypto/aead.o CC arch/x86/kernel/cpu/mtrr/mtrr.o CC arch/x86/kernel/cpu/cacheinfo.o CC lib/kunit/executor.o AR lib/zlib_inflate/built-in.a CC arch/x86/kernel/cpu/mtrr/if.o AR fs/notify/fanotify/built-in.a CC arch/x86/kernel/cpu/mce/genpool.o CC fs/notify/group.o CC kernel/sched/build_policy.o AR fs/notify/inotify/built-in.a CC fs/notify/mark.o CC fs/notify/fdinfo.o AR arch/x86/mm/pat/built-in.a CC arch/x86/mm/fault.o CC arch/x86/lib/insn.o CC init/init_task.o CC arch/x86/kernel/cpu/scattered.o CC lib/crypto/gf128mul.o CC arch/x86/pci/mmconfig-shared.o CC arch/x86/kernel/cpu/mce/intel.o CC lib/zstd/zstd_compress_module.o AR net/llc/built-in.a CC fs/iomap/direct-io.o CC crypto/geniv.o CC lib/zstd/compress/fse_compress.o CC sound/core/seq/seq_memory.o LDS arch/x86/entry/vdso/vdso32/vdso32.lds AR lib/lzo/built-in.a CC crypto/skcipher.o AS arch/x86/entry/vdso/vdso32/note.o CC sound/core/seq/seq_queue.o AS arch/x86/entry/vdso/vdso32/system_call.o AS [M] arch/x86/crypto/crct10dif-pcl-asm_64.o AS arch/x86/entry/vdso/vdso32/sigreturn.o CC [M] arch/x86/crypto/crct10dif-pclmul_glue.o CC arch/x86/entry/vdso/vdso32/vclock_gettime.o CC lib/zstd/compress/hist.o CC arch/x86/events/amd/uncore.o AR arch/x86/platform/efi/built-in.a AR arch/x86/platform/intel-mid/built-in.a AR arch/x86/platform/intel-quark/built-in.a AR arch/x86/platform/olpc/built-in.a AR arch/x86/platform/scx200/built-in.a CC mm/kasan/report_generic.o AR arch/x86/platform/ts5500/built-in.a AR arch/x86/platform/uv/built-in.a CC mm/kasan/shadow.o AR arch/x86/platform/built-in.a CC lib/kunit/hooks.o AS arch/x86/lib/memcpy_64.o AS arch/x86/lib/memmove_64.o CC arch/x86/kernel/cpu/mce/threshold.o CC arch/x86/kernel/fpu/xstate.o AS arch/x86/lib/memset_64.o CC arch/x86/lib/misc.o CC lib/zstd/compress/huf_compress.o CC arch/x86/lib/pc-conf-reg.o CC arch/x86/entry/vdso/vdso32/vgetcpu.o CC [M] drivers/pinctrl/intel/pinctrl-cherryview.o CC lib/crypto/blake2s.o CC mm/mempool.o CC security/keys/keyctl.o CC arch/x86/entry/vsyscall/vsyscall_64.o CC fs/iomap/fiemap.o AS arch/x86/entry/vsyscall/vsyscall_emu_64.o CC fs/iomap/seek.o CC fs/iomap/swapfile.o AR lib/kunit/built-in.a CC [M] drivers/pinctrl/intel/pinctrl-broxton.o CC arch/x86/kernel/cpu/mtrr/generic.o AR block/partitions/built-in.a CC block/elevator.o LD [M] arch/x86/crypto/ghash-clmulni-intel.o LD [M] arch/x86/crypto/crc32-pclmul.o CC init/version.o CC arch/x86/kernel/cpu/topology.o LD [M] arch/x86/crypto/crct10dif-pclmul.o CC drivers/gpio/gpiolib.o AR arch/x86/crypto/built-in.a AS arch/x86/lib/putuser.o CC arch/x86/kernel/cpu/mce/apei.o AS arch/x86/lib/retpoline.o AR sound/drivers/opl3/built-in.a AR sound/drivers/opl4/built-in.a CC mm/kasan/quarantine.o AR sound/drivers/mpu401/built-in.a CC arch/x86/lib/usercopy.o AR sound/drivers/vx/built-in.a AR sound/drivers/pcsp/built-in.a AR sound/drivers/built-in.a AR ipc/built-in.a CC [M] drivers/pinctrl/intel/pinctrl-geminilake.o AR drivers/pinctrl/nomadik/built-in.a CC lib/zstd/compress/zstd_compress.o VDSO arch/x86/entry/vdso/vdso64.so.dbg CC lib/zstd/compress/zstd_compress_literals.o VDSO arch/x86/entry/vdso/vdso32.so.dbg OBJCOPY arch/x86/entry/vdso/vdso64.so OBJCOPY arch/x86/entry/vdso/vdso32.so VDSO2C arch/x86/entry/vdso/vdso-image-64.c AR fs/notify/built-in.a VDSO2C arch/x86/entry/vdso/vdso-image-32.c CC arch/x86/entry/vdso/vdso-image-64.o CC lib/crypto/blake2s-generic.o CC net/ethernet/eth.o AR fs/quota/built-in.a CC lib/crypto/blake2s-selftest.o AR init/built-in.a CC crypto/seqiv.o CC arch/x86/kernel/cpu/mtrr/cleanup.o CC kernel/power/qos.o CC sound/core/seq/seq_fifo.o CC arch/x86/pci/fixup.o CC arch/x86/mm/ioremap.o CC arch/x86/events/intel/core.o CC arch/x86/events/zhaoxin/core.o CC arch/x86/events/core.o CC arch/x86/lib/usercopy_64.o CC lib/zstd/compress/zstd_compress_sequences.o CC mm/oom_kill.o CC mm/fadvise.o CC arch/x86/entry/vdso/vdso-image-32.o CC [M] drivers/pinctrl/intel/pinctrl-sunrisepoint.o CC lib/lz4/lz4hc_compress.o CC lib/crypto/des.o AR arch/x86/events/amd/built-in.a CC lib/zstd/compress/zstd_compress_superblock.o CC kernel/locking/percpu-rwsem.o CC mm/maccess.o CC arch/x86/kernel/cpu/common.o CC lib/crypto/sha1.o CC net/core/skbuff.o CC arch/x86/lib/msr-smp.o CC [M] arch/x86/kvm/../../../virt/kvm/eventfd.o CC lib/zstd/compress/zstd_double_fast.o AR fs/iomap/built-in.a CC arch/x86/pci/acpi.o CC arch/x86/events/probe.o AR arch/x86/entry/vsyscall/built-in.a CC drivers/gpio/gpiolib-devres.o AR arch/x86/entry/vdso/built-in.a CC arch/x86/lib/cache-smp.o AS arch/x86/entry/entry.o CC fs/proc/task_mmu.o AS arch/x86/entry/entry_64.o AR arch/x86/kernel/cpu/mce/built-in.a CC net/core/datagram.o CC fs/kernfs/mount.o CC arch/x86/entry/syscall_64.o AR mm/kasan/built-in.a CC fs/kernfs/inode.o CC fs/sysfs/file.o CC crypto/echainiv.o CC fs/sysfs/dir.o CC sound/core/seq/seq_prioq.o CC crypto/ahash.o CC fs/sysfs/symlink.o CC fs/kernfs/dir.o CC arch/x86/kernel/cpu/rdrand.o AR drivers/pinctrl/intel/built-in.a AR arch/x86/kernel/fpu/built-in.a CC mm/page-writeback.o AR drivers/pinctrl/nuvoton/built-in.a CC arch/x86/lib/msr.o AR drivers/pinctrl/nxp/built-in.a AR drivers/pinctrl/qcom/built-in.a AR drivers/pinctrl/sprd/built-in.a AR drivers/pinctrl/sunplus/built-in.a CC [M] arch/x86/kvm/../../../virt/kvm/binary_stats.o CC block/blk-core.o CC security/keys/permission.o AR drivers/pinctrl/ti/built-in.a CC drivers/pinctrl/core.o CC arch/x86/mm/extable.o CC kernel/locking/irqflag-debug.o AR arch/x86/events/zhaoxin/built-in.a AR sound/isa/ad1816a/built-in.a CC kernel/locking/mutex-debug.o AR sound/isa/ad1848/built-in.a CC arch/x86/events/utils.o AR sound/isa/cs423x/built-in.a CC arch/x86/events/rapl.o AR sound/isa/es1688/built-in.a CC arch/x86/pci/legacy.o AR sound/isa/galaxy/built-in.a AR sound/isa/gus/built-in.a CC kernel/power/main.o CC mm/folio-compat.o AR sound/isa/msnd/built-in.a AR arch/x86/kernel/cpu/mtrr/built-in.a CC [M] arch/x86/kvm/../../../virt/kvm/vfio.o CC mm/readahead.o AR sound/isa/opti9xx/built-in.a AR sound/isa/sb/built-in.a CC kernel/locking/lockdep.o AR sound/isa/wavefront/built-in.a AR sound/isa/wss/built-in.a AR sound/isa/built-in.a CC arch/x86/events/msr.o CC arch/x86/pci/irq.o CC block/blk-sysfs.o CC arch/x86/entry/common.o AR net/ethernet/built-in.a CC sound/core/seq/seq_timer.o CC kernel/sched/build_utility.o CC drivers/pinctrl/pinctrl-utils.o AR sound/pci/ac97/built-in.a AR sound/pci/ali5451/built-in.a CC sound/core/seq/seq_system.o AR sound/pci/asihpi/built-in.a CC lib/crypto/sha256.o AR sound/pci/au88x0/built-in.a AR sound/pci/aw2/built-in.a AR sound/ppc/built-in.a AR sound/pci/ctxfi/built-in.a CC drivers/pinctrl/pinmux.o AR sound/pci/ca0106/built-in.a AR sound/pci/cs46xx/built-in.a CC lib/lz4/lz4_decompress.o CC security/keys/process_keys.o AR sound/pci/cs5535audio/built-in.a AR sound/pci/lola/built-in.a CC fs/sysfs/mount.o AR sound/pci/lx6464es/built-in.a AR sound/pci/echoaudio/built-in.a AR sound/pci/emu10k1/built-in.a AR sound/pci/hda/built-in.a CC [M] sound/pci/hda/hda_bind.o CC sound/core/seq/seq_ports.o CC arch/x86/pci/common.o CC kernel/locking/lockdep_proc.o AS arch/x86/lib/msr-reg.o CC arch/x86/lib/msr-reg-export.o CC io_uring/filetable.o CC crypto/shash.o CC [M] arch/x86/kvm/../../../virt/kvm/coalesced_mmio.o CC crypto/akcipher.o CC arch/x86/mm/mmap.o AS arch/x86/lib/hweight.o CC arch/x86/lib/iomem.o CC arch/x86/kernel/cpu/match.o CC net/core/stream.o AR sound/arm/built-in.a CC fs/sysfs/group.o CC sound/core/seq/seq_info.o CC security/keys/request_key.o CC arch/x86/mm/pgtable.o CC [M] sound/pci/hda/hda_codec.o AS arch/x86/entry/thunk_64.o CC fs/kernfs/file.o AS arch/x86/entry/entry_64_compat.o CC mm/swap.o CC arch/x86/entry/syscall_32.o AS arch/x86/lib/iomap_copy_64.o CC security/keys/request_key_auth.o CC [M] lib/crypto/arc4.o AR sound/sh/built-in.a CC arch/x86/mm/physaddr.o CC kernel/power/console.o CC block/blk-flush.o CC mm/truncate.o CC arch/x86/lib/inat.o CC kernel/locking/spinlock.o CC arch/x86/pci/early.o CC drivers/pinctrl/pinconf.o CC security/keys/user_defined.o CC arch/x86/mm/tlb.o CC mm/vmscan.o CC arch/x86/kernel/cpu/bugs.o CC fs/proc/inode.o AR arch/x86/lib/built-in.a AR arch/x86/lib/lib.a AR drivers/pwm/built-in.a CC drivers/pci/msi/pcidev_msi.o CC drivers/pci/msi/api.o AR sound/core/seq/built-in.a CC drivers/pci/pcie/portdrv.o CC sound/core/sound.o CC drivers/pci/pcie/rcec.o AR lib/crypto/built-in.a CC security/keys/compat.o CC drivers/pci/hotplug/pci_hotplug_core.o LD [M] lib/crypto/libarc4.o CC security/keys/proc.o AR drivers/pci/controller/dwc/built-in.a AR drivers/pci/controller/mobiveil/built-in.a CC drivers/pci/controller/vmd.o CC drivers/pci/hotplug/acpi_pcihp.o CC drivers/gpio/gpiolib-legacy.o CC [M] arch/x86/kvm/../../../virt/kvm/async_pf.o AR lib/lz4/built-in.a AR fs/sysfs/built-in.a CC drivers/pci/msi/msi.o CC crypto/sig.o CC arch/x86/mm/cpu_entry_area.o AR arch/x86/entry/built-in.a CC arch/x86/kernel/cpu/aperfmperf.o CC kernel/power/process.o CC security/keys/sysctl.o CC drivers/video/console/dummycon.o CC io_uring/openclose.o CC drivers/video/console/vgacon.o CC drivers/video/logo/logo.o CC arch/x86/pci/bus_numa.o HOSTCC drivers/video/logo/pnmtologo CC drivers/video/backlight/backlight.o CC drivers/pinctrl/pinconf-generic.o CC net/core/scm.o CC fs/kernfs/symlink.o CC drivers/pci/msi/irqdomain.o CC arch/x86/events/intel/bts.o CC arch/x86/events/intel/ds.o CC sound/core/init.o CC drivers/gpio/gpiolib-cdev.o CC fs/configfs/inode.o CC lib/xz/xz_dec_syms.o CC fs/configfs/file.o CC drivers/pci/hotplug/pciehp_core.o CC lib/raid6/algos.o CC drivers/pci/hotplug/pciehp_ctrl.o CC lib/raid6/recov.o CC block/blk-settings.o LOGO drivers/video/logo/logo_linux_clut224.c CC fs/proc/root.o CC drivers/video/logo/logo_linux_clut224.o CC arch/x86/kernel/acpi/boot.o AR drivers/video/logo/built-in.a CC fs/proc/base.o CC drivers/pci/pcie/aspm.o AR security/keys/built-in.a CC net/802/p8022.o AR security/built-in.a CC arch/x86/mm/maccess.o CC drivers/pci/pcie/aer.o CC drivers/pci/hotplug/pciehp_pci.o CC crypto/kpp.o CC arch/x86/events/intel/knc.o CC net/sched/sch_generic.o CC drivers/pci/hotplug/pciehp_hpc.o CC arch/x86/pci/amd_bus.o CC lib/xz/xz_dec_stream.o AR drivers/pinctrl/built-in.a CC net/sched/sch_mq.o CC [M] arch/x86/kvm/../../../virt/kvm/irqchip.o CC kernel/locking/osq_lock.o AR drivers/pci/controller/built-in.a AR fs/kernfs/built-in.a CC arch/x86/mm/pgprot.o CC net/802/psnap.o CC net/netlink/af_netlink.o CC drivers/video/fbdev/core/fb_notify.o CC kernel/power/suspend.o AR drivers/pci/msi/built-in.a CC net/netlink/genetlink.o CC drivers/pci/pcie/err.o CC fs/configfs/dir.o CC fs/configfs/symlink.o AR drivers/video/backlight/built-in.a HOSTCC lib/raid6/mktables CC fs/configfs/mount.o CC arch/x86/kernel/cpu/cpuid-deps.o AR drivers/video/console/built-in.a AR net/bpf/built-in.a CC net/802/stp.o CC arch/x86/kernel/cpu/umwait.o AR drivers/video/fbdev/omap/built-in.a CC arch/x86/kernel/cpu/proc.o CC kernel/locking/qspinlock.o CC fs/proc/generic.o CC fs/devpts/inode.o CC io_uring/uring_cmd.o CC kernel/locking/rtmutex_api.o UNROLL lib/raid6/int1.c UNROLL lib/raid6/int2.c CC [M] drivers/video/fbdev/core/fb_info.o UNROLL lib/raid6/int4.c CC kernel/locking/spinlock_debug.o UNROLL lib/raid6/int8.c CC block/blk-ioc.o UNROLL lib/raid6/int16.c UNROLL lib/raid6/int32.c CC sound/core/memory.o CC lib/raid6/recov_ssse3.o CC fs/ext4/balloc.o CC crypto/acompress.o CC lib/xz/xz_dec_lzma2.o CC fs/ext4/bitmap.o CC arch/x86/mm/hugetlbpage.o CC drivers/video/aperture.o AR drivers/pci/switch/built-in.a CC arch/x86/mm/kasan_init_64.o AR arch/x86/pci/built-in.a CC drivers/pci/pcie/aer_inject.o CC [M] sound/pci/hda/hda_jack.o AR drivers/video/fbdev/omap2/omapfb/dss/built-in.a AR drivers/video/fbdev/omap2/omapfb/displays/built-in.a AR drivers/video/fbdev/omap2/omapfb/built-in.a AR drivers/video/fbdev/omap2/built-in.a CC [M] drivers/video/fbdev/uvesafb.o CC arch/x86/events/intel/lbr.o CC net/ethtool/ioctl.o CC arch/x86/events/intel/p4.o CC net/ethtool/common.o CC kernel/locking/qrwlock.o CC lib/zstd/compress/zstd_fast.o CC [M] drivers/video/fbdev/core/fbmem.o CC arch/x86/kernel/acpi/sleep.o CC [M] arch/x86/kvm/../../../virt/kvm/dirty_ring.o CC sound/core/control.o CC drivers/pci/hotplug/acpiphp_core.o MKCAP arch/x86/kernel/cpu/capflags.c CC arch/x86/kernel/cpu/powerflags.o CC drivers/pci/hotplug/acpiphp_glue.o CC fs/proc/array.o CC lib/raid6/recov_avx2.o CC fs/ext4/block_validity.o CC block/blk-map.o CC fs/proc/fd.o CC fs/proc/proc_tty.o AR net/802/built-in.a CC fs/ext4/dir.o AR fs/devpts/built-in.a CC mm/shmem.o CC fs/ext4/ext4_jbd2.o CC arch/x86/events/intel/p6.o CC kernel/power/hibernate.o CC drivers/gpio/gpiolib-sysfs.o CC fs/ext4/extents.o CC io_uring/epoll.o CC arch/x86/mm/pkeys.o CC [M] net/netfilter/ipvs/ip_vs_conn.o CC crypto/scompress.o CC lib/xz/xz_dec_bcj.o AR net/ipv4/netfilter/built-in.a CC [M] net/ipv4/netfilter/nf_defrag_ipv4.o CC net/xfrm/xfrm_policy.o CC net/unix/af_unix.o CC net/ipv4/route.o CC fs/configfs/item.o CC drivers/pci/pcie/pme.o CC net/xfrm/xfrm_state.o AS arch/x86/kernel/acpi/wakeup_64.o CC arch/x86/kernel/acpi/apei.o CC lib/raid6/mmx.o CC io_uring/statx.o CC lib/raid6/sse1.o CC lib/raid6/sse2.o CC [M] sound/pci/hda/hda_auto_parser.o CC fs/proc/cmdline.o AR kernel/locking/built-in.a CC kernel/printk/printk.o CC fs/proc/consoles.o CC lib/fonts/fonts.o CC [M] arch/x86/kvm/../../../virt/kvm/pfncache.o CC net/core/gen_stats.o CC lib/argv_split.o AR lib/xz/built-in.a CC lib/fonts/font_8x8.o CC kernel/irq/irqdesc.o CC [M] arch/x86/kvm/x86.o CC [M] arch/x86/kvm/emulate.o CC arch/x86/events/intel/pt.o CC arch/x86/mm/pti.o CC drivers/gpio/gpiolib-acpi.o CC net/sched/sch_frag.o AR fs/configfs/built-in.a CC lib/fonts/font_8x16.o CC [M] net/ipv4/netfilter/nf_reject_ipv4.o CC block/blk-merge.o AR drivers/pci/hotplug/built-in.a CC kernel/irq/handle.o AR sound/pci/ice1712/built-in.a CC fs/ext4/extents_status.o CC drivers/idle/intel_idle.o CC fs/proc/cpuinfo.o CC [M] drivers/video/fbdev/core/fbcmap.o CC crypto/algboss.o AR sound/synth/emux/built-in.a AR sound/synth/built-in.a CC fs/ext4/file.o AR sound/usb/misc/built-in.a AR sound/usb/usx2y/built-in.a CC arch/x86/kernel/acpi/cppc.o CC fs/ext4/fsmap.o AR sound/usb/caiaq/built-in.a CC [M] drivers/video/fbdev/simplefb.o AR sound/usb/6fire/built-in.a CC drivers/pci/pcie/dpc.o CC kernel/rcu/update.o AR sound/usb/hiface/built-in.a AR sound/usb/bcd2000/built-in.a AR sound/usb/built-in.a AR sound/firewire/built-in.a AR sound/sparc/built-in.a AR kernel/livepatch/built-in.a CC arch/x86/kernel/acpi/cstate.o CC io_uring/net.o AR sound/spi/built-in.a CC net/core/gen_estimator.o AR lib/fonts/built-in.a CC lib/raid6/avx2.o CC net/core/net_namespace.o CC kernel/irq/manage.o CC kernel/power/snapshot.o CC kernel/irq/spurious.o AR sound/pci/korg1212/built-in.a CC net/sched/sch_api.o CC sound/core/misc.o CC net/sched/sch_blackhole.o CC fs/proc/devices.o AR arch/x86/mm/built-in.a CC [M] sound/pci/hda/hda_sysfs.o CC [M] net/netfilter/ipvs/ip_vs_core.o CC kernel/power/swap.o AR sound/pci/mixart/built-in.a CC crypto/testmgr.o CC [M] net/netfilter/ipvs/ip_vs_ctl.o CC kernel/irq/resend.o CC kernel/printk/printk_safe.o AR arch/x86/kernel/acpi/built-in.a CC arch/x86/kernel/apic/apic.o CC net/netlink/policy.o CC [M] drivers/video/fbdev/core/modedb.o CC arch/x86/kernel/apic/apic_common.o CC drivers/gpio/gpiolib-swnode.o CC kernel/printk/printk_ringbuffer.o CC mm/util.o AR drivers/pci/pcie/built-in.a CC drivers/pci/access.o AR kernel/sched/built-in.a CC lib/raid6/avx512.o CC [M] net/ipv4/netfilter/ip_tables.o CC arch/x86/kernel/kprobes/core.o CC kernel/dma/mapping.o CC kernel/entry/common.o CC arch/x86/events/intel/uncore.o AR drivers/idle/built-in.a CC fs/proc/interrupts.o CC kernel/entry/syscall_user_dispatch.o CC sound/core/device.o CC block/blk-timeout.o CC [M] arch/x86/kvm/i8259.o CC net/ethtool/netlink.o CC drivers/pci/bus.o CC net/ethtool/bitset.o CC [M] sound/pci/hda/hda_controller.o AR sound/pci/nm256/built-in.a CC net/sched/sch_fifo.o CC [M] drivers/video/fbdev/core/fbcvt.o AR drivers/gpio/built-in.a AR drivers/char/ipmi/built-in.a CC kernel/dma/direct.o CC sound/core/info.o CC kernel/printk/sysctl.o CC kernel/rcu/sync.o CC fs/ext4/fsync.o CC fs/proc/loadavg.o CC net/netlink/diag.o CC lib/raid6/recov_avx512.o CC block/blk-lib.o CC [M] drivers/video/fbdev/core/fb_cmdline.o CC mm/mmzone.o CC kernel/irq/chip.o CC net/core/secure_seq.o CC arch/x86/events/intel/uncore_nhmex.o CC arch/x86/events/intel/uncore_snb.o LDS arch/x86/kernel/vmlinux.lds CC net/core/flow_dissector.o AR kernel/printk/built-in.a CC [M] drivers/video/fbdev/core/fb_io_fops.o CC [M] drivers/video/fbdev/core/fb_backlight.o CC arch/x86/kernel/cpu/feat_ctl.o CC net/core/sysctl_net_core.o CC kernel/rcu/srcutree.o CC block/blk-mq.o CC arch/x86/kernel/kprobes/opt.o CC kernel/power/user.o CC net/ethtool/strset.o CC drivers/pci/probe.o CC io_uring/msg_ring.o CC net/unix/garbage.o CC kernel/entry/kvm.o CC kernel/dma/ops_helpers.o CC lib/zstd/compress/zstd_lazy.o CC fs/proc/meminfo.o CC mm/vmstat.o CC [M] drivers/video/fbdev/core/fbmon.o CC net/ethtool/linkinfo.o CC sound/core/isadma.o CC arch/x86/kernel/cpu/intel.o CC arch/x86/kernel/cpu/intel_pconfig.o TABLE lib/raid6/tables.c CC lib/raid6/int1.o CC kernel/rcu/tree.o CC arch/x86/kernel/kprobes/ftrace.o CC net/unix/sysctl_net_unix.o CC net/ipv4/inetpeer.o CC arch/x86/kernel/apic/apic_noop.o CC [M] net/ipv4/netfilter/iptable_filter.o CC drivers/video/cmdline.o CC [M] drivers/video/fbdev/core/fb_defio.o CC net/core/dev.o CC net/core/dev_addr_lists.o AR net/sched/built-in.a AS arch/x86/kernel/head_64.o CC lib/raid6/int2.o AR net/netlink/built-in.a CC drivers/video/nomodeset.o CC drivers/pci/host-bridge.o CC [M] sound/pci/hda/hda_proc.o CC [M] drivers/video/fbdev/core/fb_chrdev.o CC kernel/power/poweroff.o CC kernel/dma/dummy.o CC arch/x86/kernel/apic/ipi.o CC net/xfrm/xfrm_hash.o CC arch/x86/kernel/apic/vector.o CC fs/ext4/hash.o CC arch/x86/kernel/apic/hw_nmi.o CC sound/core/vmaster.o CC kernel/irq/dummychip.o CC drivers/pci/remove.o CC lib/zstd/compress/zstd_ldm.o CC fs/proc/stat.o AR kernel/power/built-in.a CC net/unix/diag.o CC lib/zstd/compress/zstd_opt.o AR kernel/entry/built-in.a CC arch/x86/events/intel/uncore_snbep.o CC arch/x86/events/intel/uncore_discovery.o CC [M] drivers/video/fbdev/core/fb_procfs.o CC crypto/cmac.o AR arch/x86/kernel/kprobes/built-in.a CC kernel/dma/contiguous.o CC drivers/video/hdmi.o AR net/ipv6/netfilter/built-in.a CC [M] net/ipv6/netfilter/nf_defrag_ipv6_hooks.o CC net/ipv6/af_inet6.o CC io_uring/timeout.o CC net/ipv6/anycast.o CC io_uring/sqpoll.o CC arch/x86/kernel/apic/io_apic.o CC [M] net/ipv4/netfilter/iptable_mangle.o CC net/ethtool/linkmodes.o CC lib/raid6/int4.o CC drivers/acpi/acpica/dsargs.o CC drivers/acpi/apei/apei-base.o CC net/ethtool/rss.o CC kernel/dma/swiotlb.o CC kernel/irq/devres.o AR drivers/acpi/pmic/built-in.a CC arch/x86/kernel/apic/msi.o CC sound/core/ctljack.o CC arch/x86/kernel/cpu/tsx.o CC lib/bug.o CC kernel/module/main.o CC drivers/acpi/dptf/int340x_thermal.o CC kernel/module/strict_rwx.o CC net/xfrm/xfrm_input.o AR sound/parisc/built-in.a CC kernel/dma/remap.o CC fs/proc/uptime.o CC crypto/hmac.o CC arch/x86/kernel/apic/x2apic_phys.o CC fs/ext4/ialloc.o CC [M] drivers/video/fbdev/core/fbsysfs.o CC [M] net/netfilter/ipvs/ip_vs_sched.o CC mm/backing-dev.o CC drivers/acpi/apei/hest.o CC net/xfrm/xfrm_output.o CC arch/x86/kernel/cpu/intel_epb.o CC [M] drivers/video/fbdev/core/fbcon.o CC drivers/acpi/acpica/dscontrol.o CC [M] sound/pci/hda/hda_hwdep.o CC drivers/pci/pci.o CC kernel/irq/autoprobe.o CC sound/core/jack.o CC arch/x86/kernel/cpu/amd.o CC fs/proc/util.o CC [M] drivers/video/fbdev/core/bitblit.o CC drivers/acpi/apei/erst.o AR drivers/acpi/dptf/built-in.a CC net/unix/scm.o CC lib/raid6/int8.o CC net/xfrm/xfrm_sysctl.o CC mm/mm_init.o CC io_uring/fdinfo.o CC kernel/time/time.o CC kernel/futex/core.o CC lib/buildid.o CC kernel/futex/syscalls.o CC kernel/futex/pi.o CC drivers/acpi/acpica/dsdebug.o CC arch/x86/kernel/apic/x2apic_cluster.o CC drivers/acpi/apei/bert.o CC [M] net/ipv4/netfilter/iptable_nat.o CC fs/proc/version.o CC kernel/futex/requeue.o CC [M] net/ipv6/netfilter/nf_conntrack_reasm.o CC net/ethtool/linkstate.o CC crypto/vmac.o CC kernel/module/kmod.o CC kernel/irq/irqdomain.o CC mm/percpu.o CC [M] sound/pci/hda/hda_generic.o CC drivers/pnp/pnpacpi/core.o CC drivers/pnp/core.o CC arch/x86/kernel/apic/apic_flat_64.o AR kernel/dma/built-in.a CC [M] net/netfilter/ipvs/ip_vs_xmit.o CC sound/core/timer.o CC drivers/acpi/acpica/dsfield.o CC [M] net/netfilter/ipvs/ip_vs_app.o CC fs/proc/softirqs.o CC net/core/dst.o CC lib/raid6/int16.o CC net/ipv6/ip6_output.o CC mm/slab_common.o CC arch/x86/kernel/cpu/hygon.o CC arch/x86/kernel/apic/probe_64.o CC kernel/cgroup/cgroup.o CC kernel/futex/waitwake.o AR net/unix/built-in.a CC kernel/cgroup/rstat.o CC kernel/time/timer.o CC [M] sound/pci/hda/patch_realtek.o CC drivers/acpi/apei/ghes.o CC drivers/pnp/pnpacpi/rsparser.o CC arch/x86/events/intel/cstate.o CC net/ethtool/debug.o CC kernel/time/hrtimer.o CC kernel/cgroup/namespace.o CC [M] arch/x86/kvm/irq.o CC drivers/pnp/card.o AR arch/x86/kernel/apic/built-in.a CC mm/compaction.o CC net/xfrm/xfrm_replay.o CC kernel/time/timekeeping.o CC drivers/acpi/acpica/dsinit.o CC mm/show_mem.o CC drivers/pnp/driver.o CC crypto/xcbc.o CC fs/proc/namespaces.o CC io_uring/tctx.o CC kernel/irq/proc.o CC [M] net/ipv4/netfilter/ipt_REJECT.o CC lib/raid6/int32.o CC arch/x86/kernel/cpu/centaur.o CC mm/interval_tree.o CC arch/x86/kernel/head64.o AR kernel/futex/built-in.a CC drivers/acpi/acpica/dsmethod.o CC kernel/trace/trace_clock.o CC drivers/acpi/acpica/dsmthdat.o CC [M] drivers/video/fbdev/core/softcursor.o CC crypto/crypto_null.o CC kernel/trace/ftrace.o LD [M] net/ipv6/netfilter/nf_defrag_ipv6.o CC kernel/time/ntp.o CC net/ipv6/ip6_input.o CC kernel/cgroup/cgroup-v1.o CC kernel/module/tree_lookup.o CC block/blk-mq-tag.o AR arch/x86/events/intel/built-in.a CC block/blk-stat.o AR arch/x86/events/built-in.a CC lib/raid6/tables.o CC arch/x86/kernel/cpu/zhaoxin.o CC [M] arch/x86/kvm/lapic.o CC fs/ext4/indirect.o CC fs/proc/self.o CC kernel/module/debug_kmemleak.o CC kernel/irq/migration.o AR drivers/pnp/pnpacpi/built-in.a CC drivers/pnp/resource.o CC kernel/bpf/core.o CC [M] sound/pci/hda/patch_analog.o CC arch/x86/kernel/cpu/perfctr-watchdog.o CC [M] arch/x86/kvm/i8254.o CC net/ethtool/wol.o CC io_uring/poll.o CC kernel/irq/cpuhotplug.o CC drivers/acpi/acpica/dsobject.o AR drivers/acpi/apei/built-in.a CC lib/zstd/zstd_decompress_module.o CC arch/x86/kernel/ebda.o CC sound/core/hrtimer.o CC lib/zstd/decompress/huf_decompress.o CC crypto/md5.o CC kernel/irq/pm.o CC net/ipv4/protocol.o CC [M] arch/x86/kvm/ioapic.o CC [M] drivers/video/fbdev/core/tileblit.o CC [M] net/netfilter/ipvs/ip_vs_sync.o CC net/packet/af_packet.o CC net/xfrm/xfrm_device.o CC kernel/time/clocksource.o CC fs/proc/thread_self.o CC [M] drivers/video/fbdev/core/cfbfillrect.o CC kernel/module/kallsyms.o CC net/ipv4/ip_input.o CC kernel/trace/ring_buffer.o CC kernel/cgroup/freezer.o CC drivers/acpi/acpica/dsopcode.o AR lib/raid6/built-in.a CC kernel/events/core.o CC kernel/irq/msi.o CC kernel/trace/trace.o CC kernel/events/ring_buffer.o CC kernel/irq/affinity.o CC arch/x86/kernel/cpu/vmware.o CC drivers/pci/pci-driver.o CC sound/core/seq_device.o CC [M] sound/pci/hda/patch_hdmi.o CC crypto/sha1_generic.o CC block/blk-mq-sysfs.o CC mm/list_lru.o CC drivers/pnp/manager.o CC [M] arch/x86/kvm/irq_comm.o CC net/xfrm/xfrm_algo.o CC kernel/rcu/rcu_segcblist.o CC fs/proc/proc_sysctl.o CC net/ethtool/features.o CC [M] arch/x86/kvm/cpuid.o CC kernel/time/jiffies.o CC drivers/acpi/acpica/dspkginit.o CC lib/zstd/decompress/zstd_ddict.o CC kernel/irq/matrix.o CC kernel/module/procfs.o CC arch/x86/kernel/cpu/hypervisor.o CC io_uring/cancel.o CC kernel/fork.o CC [M] sound/core/control_led.o CC [M] drivers/video/fbdev/core/cfbcopyarea.o CC kernel/trace/trace_output.o CC drivers/pci/search.o CC block/blk-mq-cpumap.o CC crypto/sha256_generic.o CC kernel/time/timer_list.o CC block/blk-mq-sched.o CC drivers/pnp/support.o CC arch/x86/kernel/cpu/mshyperv.o CC kernel/cgroup/legacy_freezer.o CC drivers/acpi/acpica/dsutils.o CC fs/proc/proc_net.o CC [M] sound/core/hwdep.o AR kernel/rcu/built-in.a CC fs/ext4/inline.o CC arch/x86/kernel/cpu/capflags.o CC arch/x86/kernel/platform-quirks.o CC kernel/events/callchain.o CC kernel/module/sysfs.o CC net/ipv6/addrconf.o CC drivers/pnp/interface.o CC mm/workingset.o CC [M] drivers/video/fbdev/core/cfbimgblt.o CC fs/proc/kcore.o CC kernel/exec_domain.o CC crypto/sha512_generic.o CC drivers/pnp/quirks.o CC net/ipv4/ip_fragment.o CC io_uring/kbuf.o CC net/xfrm/xfrm_user.o CC kernel/panic.o CC [M] arch/x86/kvm/pmu.o CC drivers/pci/pci-sysfs.o CC block/ioctl.o CC net/ethtool/privflags.o CC drivers/acpi/acpica/dswexec.o CC fs/proc/kmsg.o CC [M] net/netfilter/ipvs/ip_vs_est.o CC fs/jbd2/transaction.o CC kernel/time/timeconv.o CC fs/jbd2/commit.o AR arch/x86/kernel/cpu/built-in.a CC kernel/cgroup/pids.o CC arch/x86/kernel/process_64.o CC [M] sound/core/pcm.o AR kernel/irq/built-in.a CC net/ethtool/rings.o CC drivers/pnp/system.o CC fs/proc/page.o AR kernel/module/built-in.a CC crypto/sha3_generic.o CC arch/x86/kernel/signal.o CC [M] drivers/video/fbdev/core/sysfillrect.o AR kernel/bpf/built-in.a CC kernel/trace/trace_seq.o CC kernel/time/timecounter.o CC lib/zstd/decompress/zstd_decompress.o CC fs/ramfs/inode.o CC net/netfilter/core.o CC kernel/time/alarmtimer.o CC fs/ramfs/file-mmu.o CC drivers/acpi/acpica/dswload.o CC crypto/blake2b_generic.o CC net/ipv6/addrlabel.o CC net/netfilter/nf_log.o CC [M] drivers/video/fbdev/core/syscopyarea.o CC mm/debug.o CC kernel/cpu.o CC kernel/time/posix-timers.o AR drivers/pnp/built-in.a CC net/netfilter/nf_queue.o CC [M] sound/pci/hda/hda_eld.o CC kernel/cgroup/cpuset.o CC block/genhd.o CC net/ethtool/channels.o CC lib/zstd/decompress/zstd_decompress_block.o CC fs/hugetlbfs/inode.o CC kernel/exit.o CC kernel/trace/trace_stat.o CC io_uring/rsrc.o CC [M] net/netfilter/ipvs/ip_vs_proto.o CC drivers/acpi/acpica/dswload2.o CC [M] sound/core/pcm_native.o CC fs/jbd2/recovery.o CC net/ipv4/ip_forward.o CC kernel/trace/trace_printk.o AR fs/ramfs/built-in.a CC drivers/pci/rom.o CC [M] net/netfilter/ipvs/ip_vs_pe.o AR fs/proc/built-in.a CC [M] sound/core/pcm_lib.o CC mm/gup.o CC fs/fat/cache.o CC fs/ext4/inode.o CC [M] sound/core/pcm_misc.o CC [M] sound/pci/hda/hda_intel.o CC [M] drivers/video/fbdev/core/sysimgblt.o CC arch/x86/kernel/signal_64.o CC crypto/ecb.o CC mm/mmap_lock.o CC fs/ext4/ioctl.o CC [M] sound/core/pcm_memory.o CC [M] net/netfilter/ipvs/ip_vs_proto_tcp.o CC lib/zstd/zstd_common_module.o CC drivers/acpi/acpica/dswscope.o CC [M] arch/x86/kvm/mtrr.o CC fs/jbd2/checkpoint.o CC fs/jbd2/revoke.o CC net/core/netevent.o CC drivers/pci/setup-res.o CC net/ipv6/route.o CC [M] net/netfilter/ipvs/ip_vs_proto_udp.o CC net/packet/diag.o CC drivers/pci/irq.o CC net/ethtool/coalesce.o CC arch/x86/kernel/traps.o CC crypto/cbc.o CC fs/ext4/mballoc.o AR drivers/amba/built-in.a AR drivers/clk/actions/built-in.a CC drivers/dma/dw/core.o CC fs/fat/dir.o AR drivers/clk/analogbits/built-in.a AR drivers/clk/bcm/built-in.a CC drivers/dma/dw/dw.o AR drivers/clk/imgtec/built-in.a AR drivers/clk/imx/built-in.a AR drivers/clk/ingenic/built-in.a CC drivers/acpi/acpica/dswstate.o AR drivers/clk/mediatek/built-in.a CC drivers/dma/dw/idma32.o AR drivers/clk/microchip/built-in.a AR drivers/clk/mstar/built-in.a AR drivers/clk/mvebu/built-in.a AR drivers/clk/ralink/built-in.a AR drivers/clk/renesas/built-in.a CC fs/fat/fatent.o AR drivers/clk/socfpga/built-in.a AR drivers/clk/sprd/built-in.a AR drivers/clk/starfive/built-in.a AR drivers/clk/sunxi-ng/built-in.a CC block/ioprio.o CC drivers/pci/vpd.o AR drivers/clk/ti/built-in.a AR drivers/clk/versatile/built-in.a CC [M] drivers/video/fbdev/core/fb_sys_fops.o CC drivers/clk/x86/clk-lpss-atom.o CC fs/jbd2/journal.o CC kernel/time/posix-cpu-timers.o CC drivers/clk/x86/clk-pmc-atom.o AR fs/hugetlbfs/built-in.a CC drivers/dma/dw/acpi.o CC [M] net/netfilter/ipvs/ip_vs_nfct.o CC crypto/pcbc.o CC drivers/pci/setup-bus.o CC net/ipv4/ip_options.o CC kernel/trace/pid_list.o CC net/core/neighbour.o CC mm/highmem.o CC arch/x86/kernel/idt.o CC drivers/acpi/acpica/evevent.o AR net/xfrm/built-in.a CC fs/nfs/client.o CC fs/fat/file.o AR drivers/clk/xilinx/built-in.a CC [M] arch/x86/kvm/hyperv.o CC drivers/dma/dw/pci.o AR sound/pci/oxygen/built-in.a CC drivers/pci/vc.o CC [M] arch/x86/kvm/debugfs.o CC kernel/time/posix-clock.o CC io_uring/rw.o AR net/packet/built-in.a CC block/badblocks.o CC net/ethtool/pause.o CC [M] sound/core/memalloc.o CC crypto/cts.o AR drivers/clk/x86/built-in.a CC drivers/clk/clk-devres.o CC drivers/acpi/tables.o LD [M] sound/pci/hda/snd-hda-codec.o LD [M] drivers/video/fbdev/core/fb.o CC drivers/pci/mmap.o CC [M] sound/core/pcm_timer.o LD [M] sound/pci/hda/snd-hda-codec-generic.o AR drivers/video/fbdev/core/built-in.a CC crypto/lrw.o AR drivers/video/fbdev/built-in.a CC fs/nfs/dir.o AR drivers/video/built-in.a CC drivers/acpi/acpica/evgpe.o CC [M] net/netfilter/ipvs/ip_vs_rr.o LD [M] sound/pci/hda/snd-hda-codec-realtek.o CC block/blk-rq-qos.o CC crypto/xts.o CC drivers/pci/setup-irq.o LD [M] sound/pci/hda/snd-hda-codec-analog.o LD [M] sound/pci/hda/snd-hda-codec-hdmi.o LD [M] sound/pci/hda/snd-hda-intel.o CC kernel/trace/trace_sched_switch.o AR sound/pci/pcxhr/built-in.a AR sound/pci/riptide/built-in.a AR sound/pci/rme9652/built-in.a AR sound/pci/trident/built-in.a AR sound/pci/ymfpci/built-in.a AR sound/pci/vx222/built-in.a AR sound/pci/built-in.a CC mm/memory.o CC kernel/softirq.o AR drivers/soc/apple/built-in.a AR drivers/soc/aspeed/built-in.a AR drivers/dma/dw/built-in.a CC drivers/virtio/virtio.o AR drivers/soc/bcm/bcm63xx/built-in.a CC arch/x86/kernel/irq.o AR drivers/soc/bcm/built-in.a CC drivers/dma/hsu/hsu.o AR drivers/soc/fsl/built-in.a CC fs/fat/inode.o AR drivers/soc/fujitsu/built-in.a AR drivers/soc/imx/built-in.a AR drivers/soc/ixp4xx/built-in.a AR drivers/soc/loongson/built-in.a AR drivers/soc/mediatek/built-in.a CC drivers/pci/proc.o AR drivers/soc/microchip/built-in.a CC drivers/clk/clk-bulk.o AR drivers/soc/nuvoton/built-in.a AR drivers/soc/pxa/built-in.a AR drivers/soc/amlogic/built-in.a AR drivers/soc/qcom/built-in.a AR drivers/soc/renesas/built-in.a CC io_uring/opdef.o AR drivers/soc/rockchip/built-in.a AR drivers/soc/sifive/built-in.a AR drivers/soc/sunxi/built-in.a CC drivers/pci/slot.o CC mm/mincore.o AR drivers/soc/ti/built-in.a CC crypto/ctr.o AR drivers/soc/xilinx/built-in.a AR drivers/soc/built-in.a CC kernel/trace/trace_functions.o CC kernel/time/itimer.o CC fs/ext4/migrate.o CC net/ipv4/ip_output.o CC drivers/acpi/acpica/evgpeblk.o CC mm/mlock.o CC lib/cmdline.o CC drivers/pci/pci-acpi.o CC net/ipv4/ip_sockglue.o AR kernel/cgroup/built-in.a CC fs/fat/misc.o CC kernel/time/clockevents.o AR drivers/dma/idxd/built-in.a CC mm/mmap.o AR drivers/dma/mediatek/built-in.a CC [M] arch/x86/kvm/mmu/mmu.o AR drivers/dma/qcom/built-in.a CC drivers/pci/quirks.o CC block/disk-events.o CC fs/fat/nfs.o CC fs/fat/namei_vfat.o CC net/ethtool/eee.o CC lib/cpumask.o CC drivers/acpi/acpica/evgpeinit.o CC drivers/clk/clkdev.o CC kernel/trace/trace_preemptirq.o CC drivers/virtio/virtio_ring.o CC crypto/gcm.o CC arch/x86/kernel/irq_64.o LD [M] sound/core/snd-ctl-led.o LD [M] sound/core/snd-hwdep.o LD [M] net/netfilter/ipvs/ip_vs.o LD [M] sound/core/snd-pcm.o CC drivers/pci/ats.o AR sound/core/built-in.a CC kernel/time/tick-common.o CC net/netfilter/nf_sockopt.o AR drivers/dma/hsu/built-in.a AR sound/pcmcia/vx/built-in.a AR drivers/dma/ti/built-in.a AR sound/pcmcia/pdaudiocf/built-in.a AR drivers/dma/xilinx/built-in.a AR sound/pcmcia/built-in.a CC lib/zstd/common/debug.o CC [M] drivers/dma/ioat/init.o AR sound/mips/built-in.a AR sound/soc/built-in.a CC drivers/dma/dmaengine.o AR sound/atmel/built-in.a CC drivers/virtio/virtio_anchor.o AR sound/hda/built-in.a CC [M] sound/hda/hda_bus_type.o CC [M] drivers/dma/ioat/dma.o CC drivers/acpi/acpica/evgpeutil.o CC [M] sound/hda/hdac_bus.o CC drivers/dma/virt-dma.o CC net/core/rtnetlink.o CC net/ipv6/ip6_fib.o CC net/netfilter/utils.o CC io_uring/notif.o CC fs/nfs/file.o CC fs/nfs/getroot.o CC mm/mmu_gather.o CC lib/ctype.o CC drivers/clk/clk.o CC lib/zstd/common/entropy_common.o CC lib/dec_and_lock.o CC net/ipv6/ipv6_sockglue.o CC block/blk-ia-ranges.o CC arch/x86/kernel/dumpstack_64.o CC fs/fat/namei_msdos.o CC net/ethtool/tsinfo.o CC drivers/acpi/acpica/evglock.o CC drivers/virtio/virtio_pci_modern_dev.o CC lib/decompress.o CC kernel/trace/trace_nop.o CC net/ethtool/cabletest.o CC lib/decompress_bunzip2.o CC drivers/acpi/acpica/evhandler.o CC net/core/utils.o CC [M] sound/hda/hdac_device.o CC block/early-lookup.o AR fs/jbd2/built-in.a CC fs/exportfs/expfs.o CC [M] sound/hda/hdac_sysfs.o CC block/bsg.o CC [M] sound/hda/hdac_regmap.o CC lib/decompress_inflate.o CC kernel/time/tick-broadcast.o CC drivers/pci/iov.o CC fs/ext4/mmp.o CC crypto/pcrypt.o AR sound/x86/built-in.a AR sound/xen/built-in.a AR sound/virtio/built-in.a CC sound/sound_core.o CC arch/x86/kernel/time.o CC drivers/acpi/acpica/evmisc.o CC [M] net/netfilter/nfnetlink.o CC kernel/trace/trace_functions_graph.o CC drivers/dma/acpi-dma.o CC kernel/trace/fgraph.o CC io_uring/io-wq.o CC [M] drivers/dma/ioat/prep.o CC lib/zstd/common/error_private.o AR fs/fat/built-in.a CC kernel/trace/blktrace.o CC block/bsg-lib.o CC drivers/tty/vt/vt_ioctl.o CC block/blk-cgroup.o CC drivers/tty/vt/vc_screen.o CC net/key/af_key.o CC drivers/virtio/virtio_pci_legacy_dev.o CC net/ipv4/inet_hashtables.o CC block/blk-cgroup-rwstat.o CC kernel/resource.o CC kernel/events/hw_breakpoint.o CC lib/decompress_unlz4.o AR fs/exportfs/built-in.a CC drivers/tty/hvc/hvc_console.o CC [M] net/netfilter/nf_conntrack_core.o CC crypto/cryptd.o CC drivers/acpi/acpica/evregion.o CC [M] sound/hda/hdac_controller.o CC arch/x86/kernel/ioport.o CC drivers/tty/serial/8250/8250_core.o CC [M] sound/hda/hdac_stream.o CC kernel/time/tick-broadcast-hrtimer.o CC net/ipv4/inet_timewait_sock.o CC net/ethtool/tunnels.o CC [M] net/netfilter/nf_conntrack_standalone.o CC net/ethtool/fec.o CC lib/zstd/common/fse_decompress.o CC net/core/link_watch.o CC arch/x86/kernel/dumpstack.o CC drivers/virtio/virtio_pci_modern.o AR drivers/dma/built-in.a CC drivers/virtio/virtio_pci_common.o CC drivers/pci/pci-label.o CC kernel/events/uprobes.o CC net/ipv4/inet_connection_sock.o CC fs/nfs/inode.o CC drivers/tty/serial/8250/8250_pnp.o CC kernel/time/tick-oneshot.o CC drivers/acpi/acpica/evrgnini.o CC crypto/des_generic.o CC fs/ext4/move_extent.o CC net/ethtool/eeprom.o CC drivers/acpi/blacklist.o AR drivers/tty/ipwireless/built-in.a CC drivers/tty/tty_io.o CC kernel/trace/trace_events.o CC drivers/virtio/virtio_pci_legacy.o CC [M] drivers/dma/ioat/dca.o CC net/ipv6/ndisc.o AR drivers/tty/hvc/built-in.a CC [M] drivers/dma/ioat/sysfs.o CC [M] sound/hda/array.o CC drivers/tty/vt/selection.o CC arch/x86/kernel/nmi.o CC block/blk-throttle.o CC drivers/pci/pci-stub.o CC kernel/time/tick-sched.o CC drivers/clk/clk-divider.o CC net/ethtool/stats.o CC arch/x86/kernel/ldt.o CC crypto/aes_generic.o CC drivers/acpi/acpica/evsci.o CC kernel/trace/trace_export.o CC block/mq-deadline.o CC [M] drivers/virtio/virtio_mem.o CC net/ethtool/phc_vclocks.o CC arch/x86/kernel/setup.o CC drivers/clk/clk-fixed-factor.o CC drivers/tty/serial/8250/8250_port.o AR io_uring/built-in.a CC drivers/tty/serial/8250/8250_dma.o CC block/kyber-iosched.o CC mm/mprotect.o CC kernel/sysctl.o CC drivers/acpi/osi.o CC drivers/tty/serial/8250/8250_dwlib.o CC net/ethtool/mm.o CC sound/last.o CC drivers/tty/n_tty.o CC crypto/deflate.o CC block/bfq-iosched.o CC drivers/acpi/acpica/evxface.o CC [M] sound/hda/hdmi_chmap.o CC net/ipv6/udp.o LD [M] drivers/dma/ioat/ioatdma.o CC drivers/pci/vgaarb.o CC drivers/clk/clk-fixed-rate.o CC fs/ext4/namei.o CC drivers/char/hw_random/core.o CC drivers/tty/vt/keyboard.o CC lib/zstd/common/zstd_common.o CC drivers/char/hw_random/intel-rng.o CC block/bfq-wf2q.o CC [M] net/netfilter/nf_conntrack_expect.o CC net/ethtool/module.o AR lib/zstd/built-in.a CC lib/decompress_unlzma.o AR drivers/iommu/amd/built-in.a CC drivers/iommu/intel/dmar.o CC fs/ext4/page-io.o CC drivers/iommu/intel/iommu.o CC arch/x86/kernel/x86_init.o CC drivers/tty/tty_ioctl.o CC drivers/tty/tty_ldisc.o CC drivers/acpi/acpica/evxfevnt.o CC net/ipv4/tcp.o CC kernel/time/vsyscall.o AR drivers/gpu/host1x/built-in.a CC kernel/time/timekeeping_debug.o AR drivers/gpu/drm/tests/built-in.a CC [M] drivers/gpu/drm/tests/drm_kunit_helpers.o AR drivers/gpu/drm/arm/built-in.a CC drivers/clk/clk-gate.o CC [M] drivers/gpu/drm/tests/drm_buddy_test.o CC crypto/crc32c_generic.o CC drivers/acpi/osl.o CC net/ethtool/pse-pd.o AR kernel/events/built-in.a CC drivers/iommu/intel/pasid.o CC drivers/tty/serial/8250/8250_pcilib.o AR drivers/virtio/built-in.a CC [M] drivers/gpu/drm/tests/drm_cmdline_parser_test.o AR drivers/iommu/arm/arm-smmu/built-in.a AR drivers/iommu/arm/arm-smmu-v3/built-in.a AR drivers/iommu/arm/built-in.a AR net/key/built-in.a CC kernel/trace/trace_event_perf.o CC crypto/crct10dif_common.o CC net/ethtool/plca.o AR drivers/char/hw_random/built-in.a CC [M] sound/hda/trace.o CC [M] drivers/gpu/drm/tests/drm_connector_test.o CC drivers/char/agp/backend.o CC fs/nfs/super.o CC drivers/char/tpm/tpm-chip.o CC lib/decompress_unlzo.o CC drivers/acpi/acpica/evxfgpe.o CC drivers/char/tpm/tpm-dev-common.o CC drivers/clk/clk-multiplier.o AR drivers/iommu/iommufd/built-in.a CC drivers/iommu/iommu.o CC [M] sound/hda/hdac_component.o CC arch/x86/kernel/i8259.o CC net/ipv4/tcp_input.o CC mm/mremap.o CC drivers/char/tpm/tpm-dev.o AR drivers/pci/built-in.a CC lib/decompress_unxz.o CC block/bfq-cgroup.o CC kernel/time/namespace.o CC net/core/filter.o CC crypto/crct10dif_generic.o CC kernel/capability.o CC lib/decompress_unzstd.o CC drivers/tty/vt/consolemap.o CC fs/ext4/readpage.o AR drivers/gpu/vga/built-in.a CC net/core/sock_diag.o CC mm/msync.o CC drivers/connector/cn_queue.o CC drivers/tty/tty_buffer.o CC fs/lockd/clntlock.o CC drivers/connector/connector.o CC [M] drivers/gpu/drm/tests/drm_damage_helper_test.o CC drivers/base/power/sysfs.o CC drivers/acpi/acpica/evxfregn.o CC drivers/clk/clk-mux.o CC drivers/tty/serial/8250/8250_pci.o CC drivers/tty/serial/8250/8250_exar.o CC drivers/char/agp/generic.o CC lib/dump_stack.o CC [M] net/netfilter/nf_conntrack_helper.o CC drivers/tty/serial/serial_core.o CC crypto/authenc.o CC drivers/block/loop.o CC crypto/authencesn.o CC arch/x86/kernel/irqinit.o AR drivers/misc/eeprom/built-in.a CC drivers/mfd/mfd-core.o AR drivers/misc/cb710/built-in.a CC drivers/mfd/intel-lpss.o AR drivers/misc/ti-st/built-in.a CC drivers/mfd/intel-lpss-pci.o AR drivers/misc/lis3lv02d/built-in.a CC kernel/trace/trace_events_filter.o AR drivers/misc/cardreader/built-in.a CC [M] drivers/misc/mei/hdcp/mei_hdcp.o CC drivers/char/tpm/tpm-interface.o CC [M] drivers/misc/mei/pxp/mei_pxp.o CC drivers/mfd/intel-lpss-acpi.o CC [M] sound/hda/hdac_i915.o AR net/ethtool/built-in.a CC lib/earlycpio.o CC mm/page_vma_mapped.o AR kernel/time/built-in.a CC drivers/acpi/acpica/exconcat.o CC drivers/iommu/intel/trace.o CC kernel/ptrace.o CC drivers/clk/clk-composite.o AR net/bridge/netfilter/built-in.a CC net/bridge/br.o CC drivers/base/power/generic_ops.o CC net/bridge/br_device.o CC mm/pagewalk.o CC lib/extable.o HOSTCC drivers/tty/vt/conmakehash CC drivers/acpi/utils.o CC fs/nls/nls_base.o AR fs/unicode/built-in.a CC fs/ext4/resize.o CC fs/nls/nls_cp437.o CC fs/ext4/super.o CC kernel/user.o CC fs/ntfs/aops.o CC drivers/acpi/acpica/exconfig.o CC drivers/connector/cn_proc.o CC drivers/tty/vt/vt.o CC fs/nfs/io.o CC block/blk-mq-pci.o CC arch/x86/kernel/jump_label.o CC [M] sound/hda/intel-dsp-config.o CC fs/ntfs/attrib.o CC block/blk-mq-virtio.o CC drivers/mfd/intel_soc_pmic_crc.o CC fs/nfs/direct.o CC [M] drivers/gpu/drm/tests/drm_dp_mst_helper_test.o CC drivers/char/tpm/tpm1-cmd.o CC drivers/base/power/common.o CC kernel/signal.o CC fs/lockd/clntproc.o CC lib/flex_proportions.o CC crypto/lzo.o CC net/ipv6/udplite.o CC drivers/clk/clk-fractional-divider.o CC [M] drivers/misc/mei/init.o CC drivers/char/agp/isoch.o CC block/blk-mq-debugfs.o CC fs/nls/nls_ascii.o CC drivers/iommu/intel/cap_audit.o CC kernel/sys.o CC net/core/dev_ioctl.o CC drivers/acpi/acpica/exconvrt.o CC drivers/tty/serial/8250/8250_early.o CC [M] net/netfilter/nf_conntrack_proto.o CC arch/x86/kernel/irq_work.o CC drivers/acpi/reboot.o CC block/blk-pm.o CC drivers/acpi/acpica/excreate.o CC lib/idr.o CC [M] sound/hda/intel-nhlt.o CC drivers/clk/clk-gpio.o CC [M] drivers/misc/mei/hbm.o CC drivers/base/power/qos.o CC mm/pgtable-generic.o CC kernel/trace/trace_events_trigger.o CC fs/nls/nls_iso8859-1.o CC [M] net/netfilter/nf_conntrack_proto_generic.o CC crypto/lzo-rle.o CC [M] drivers/mfd/lpc_sch.o CC kernel/umh.o CC [M] arch/x86/kvm/mmu/page_track.o CC drivers/acpi/acpica/exdebug.o CC fs/ext4/symlink.o CC mm/rmap.o CC [M] drivers/block/nbd.o CC net/core/tso.o CC crypto/lz4.o CC fs/nfs/pagelist.o CC [M] net/netfilter/nf_conntrack_proto_tcp.o CC [M] drivers/gpu/drm/tests/drm_format_helper_test.o CC net/bridge/br_fdb.o CC drivers/char/tpm/tpm2-cmd.o CC drivers/char/agp/intel-agp.o CC fs/ntfs/collate.o CC kernel/workqueue.o AR drivers/connector/built-in.a CC drivers/tty/serial/8250/8250_dw.o CC kernel/pid.o CC fs/nls/nls_utf8.o CC net/ipv6/raw.o AR drivers/clk/built-in.a CC drivers/iommu/intel/irq_remapping.o CC kernel/trace/trace_eprobe.o CC [M] net/netfilter/nf_conntrack_proto_udp.o CC block/holder.o CC lib/irq_regs.o CC [M] sound/hda/intel-sdw-acpi.o CC drivers/acpi/acpica/exdump.o CC lib/is_single_threaded.o CC [M] net/netfilter/nf_conntrack_proto_icmp.o CC arch/x86/kernel/probe_roms.o AR drivers/misc/built-in.a CC net/ipv6/icmp.o CC mm/vmalloc.o CC crypto/lz4hc.o CC [M] drivers/mfd/lpc_ich.o AR fs/nls/built-in.a AR fs/hostfs/built-in.a LD [M] sound/hda/snd-hda-core.o CC fs/lockd/clntxdr.o CC drivers/iommu/intel/perfmon.o CC drivers/tty/serial/serial_base_bus.o CC lib/klist.o CC drivers/acpi/nvs.o CC fs/ntfs/compress.o AR drivers/nfc/built-in.a CC [M] arch/x86/kvm/mmu/spte.o CC [M] arch/x86/kvm/mmu/tdp_iter.o CC drivers/acpi/acpica/exfield.o CC kernel/trace/trace_kprobe.o CC drivers/base/power/runtime.o CC [M] drivers/misc/mei/interrupt.o CC fs/nfs/read.o LD [M] sound/hda/snd-intel-dspcfg.o CC drivers/acpi/acpica/exfldio.o LD [M] sound/hda/snd-intel-sdw-acpi.o AR sound/built-in.a CC drivers/char/agp/intel-gtt.o CC net/core/sock_reuseport.o AR block/built-in.a CC net/bridge/br_forward.o CC lib/kobject.o CC [M] net/netfilter/nf_conntrack_extend.o CC crypto/xxhash_generic.o CC [M] drivers/gpu/drm/tests/drm_format_test.o CC net/ipv4/tcp_output.o CC drivers/base/power/wakeirq.o CC net/bridge/br_if.o CC drivers/char/tpm/tpmrm-dev.o CC fs/ext4/sysfs.o CC drivers/tty/serial/8250/8250_lpss.o CC arch/x86/kernel/sys_ia32.o CC drivers/acpi/acpica/exmisc.o CC drivers/acpi/wakeup.o CC drivers/tty/serial/serial_ctrl.o CC crypto/rng.o AR drivers/mfd/built-in.a CC [M] net/netfilter/nf_conntrack_acct.o CC drivers/char/mem.o CC [M] net/netfilter/nf_conntrack_seqadj.o CC drivers/tty/serial/serial_port.o COPY drivers/tty/vt/defkeymap.c CC [M] net/netfilter/nf_conntrack_proto_icmpv6.o CC drivers/acpi/acpica/exmutex.o CC drivers/acpi/sleep.o CC fs/ext4/xattr.o CC fs/lockd/host.o CONMK drivers/tty/vt/consolemap_deftbl.c CC drivers/tty/vt/defkeymap.o CC fs/nfs/symlink.o CC lib/kobject_uevent.o CC drivers/char/tpm/tpm2-space.o CC [M] arch/x86/kvm/mmu/tdp_mmu.o AR net/dsa/built-in.a CC [M] drivers/misc/mei/client.o CC drivers/acpi/device_sysfs.o CC mm/page_alloc.o CC drivers/tty/serial/8250/8250_mid.o AR drivers/iommu/intel/built-in.a CC drivers/tty/vt/consolemap_deftbl.o CC fs/ntfs/debug.o CC drivers/iommu/iommu-traces.o CC drivers/tty/serial/8250/8250_pericom.o AR drivers/tty/vt/built-in.a CC fs/ext4/xattr_hurd.o CC drivers/tty/tty_port.o CC drivers/base/power/main.o CC [M] drivers/gpu/drm/tests/drm_framebuffer_test.o AR drivers/char/agp/built-in.a CC fs/ntfs/dir.o CC [M] drivers/misc/mei/main.o CC fs/ext4/xattr_trusted.o CC drivers/tty/serial/earlycon.o CC drivers/acpi/acpica/exnames.o CC arch/x86/kernel/signal_32.o CC crypto/drbg.o CC drivers/acpi/acpica/exoparg1.o CC fs/nfs/unlink.o CC [M] drivers/misc/mei/dma-ring.o CC net/ipv6/mcast.o CC drivers/iommu/iommu-sysfs.o CC net/core/fib_notifier.o CC mm/init-mm.o CC kernel/task_work.o CC kernel/extable.o CC drivers/acpi/acpica/exoparg2.o CC drivers/tty/serial/serial_mctrl_gpio.o CC arch/x86/kernel/sys_x86_64.o CC net/bridge/br_input.o CC drivers/char/tpm/tpm-sysfs.o CC [M] drivers/misc/mei/bus.o AR drivers/block/built-in.a AR drivers/dax/hmem/built-in.a CC [M] drivers/gpu/drm/tests/drm_managed_test.o CC drivers/dax/super.o CC drivers/dma-buf/dma-buf.o CC fs/ext4/xattr_user.o CC [M] drivers/gpu/drm/tests/drm_mm_test.o AR drivers/tty/serial/8250/built-in.a CC drivers/dax/bus.o CC drivers/dma-buf/dma-fence.o CC drivers/acpi/device_pm.o CC drivers/char/tpm/eventlog/common.o CC [M] drivers/gpu/drm/tests/drm_modes_test.o CC arch/x86/kernel/espfix_64.o CC kernel/trace/error_report-traces.o CC drivers/base/power/wakeup.o CC drivers/char/tpm/eventlog/tpm1.o CC fs/ext4/fast_commit.o CC drivers/dma-buf/dma-fence-array.o CC [M] net/netfilter/nf_conntrack_proto_dccp.o CC lib/logic_pio.o CC net/ipv4/tcp_timer.o CC drivers/char/random.o CC drivers/iommu/dma-iommu.o CC mm/memblock.o CC drivers/acpi/acpica/exoparg3.o CC fs/lockd/svc.o AR drivers/cxl/core/built-in.a AR drivers/cxl/built-in.a CC fs/debugfs/inode.o AR drivers/macintosh/built-in.a CC mm/memory_hotplug.o CC drivers/acpi/acpica/exoparg6.o CC fs/tracefs/inode.o CC fs/ntfs/file.o CC arch/x86/kernel/ksysfs.o AR drivers/tty/serial/built-in.a CC drivers/tty/tty_mutex.o CC drivers/base/power/wakeup_stats.o CC net/core/xdp.o CC drivers/dma-buf/dma-fence-chain.o CC drivers/dma-buf/dma-fence-unwrap.o CC kernel/params.o CC drivers/char/tpm/eventlog/tpm2.o CC fs/ntfs/index.o CC net/core/flow_offload.o CC drivers/char/misc.o CC fs/debugfs/file.o CC kernel/trace/power-traces.o CC kernel/kthread.o CC lib/maple_tree.o CC [M] drivers/gpu/drm/tests/drm_plane_helper_test.o CC drivers/acpi/acpica/exprep.o CC crypto/jitterentropy.o CC crypto/jitterentropy-kcapi.o CC [M] drivers/misc/mei/bus-fixup.o CC fs/ntfs/inode.o CC fs/nfs/write.o CC drivers/dma-buf/dma-resv.o CC fs/ext4/orphan.o CC drivers/char/virtio_console.o CC drivers/dma-buf/sync_file.o AR drivers/dax/built-in.a CC arch/x86/kernel/bootflag.o CC fs/ntfs/mft.o CC drivers/scsi/scsi.o CC fs/nfs/namespace.o CC arch/x86/kernel/e820.o AR fs/tracefs/built-in.a CC drivers/dma-buf/sw_sync.o CC drivers/scsi/hosts.o CC kernel/trace/rpm-traces.o CC drivers/tty/tty_ldsem.o CC drivers/scsi/scsi_ioctl.o CC net/bridge/br_ioctl.o CC [M] arch/x86/kvm/smm.o CC drivers/char/hpet.o CC [M] net/netfilter/nf_conntrack_proto_sctp.o CC drivers/base/power/domain.o CC drivers/acpi/acpica/exregion.o CC drivers/char/tpm/tpm_ppi.o CC drivers/char/nvram.o CC crypto/ghash-generic.o CC drivers/tty/tty_baudrate.o CC fs/lockd/svclock.o CC drivers/base/firmware_loader/builtin/main.o CC drivers/base/regmap/regmap.o CC drivers/iommu/iova.o CC drivers/base/regmap/regcache.o CC mm/madvise.o CC [M] drivers/misc/mei/debugfs.o AR drivers/gpu/drm/display/built-in.a CC [M] drivers/gpu/drm/display/drm_display_helper_mod.o CC net/ipv4/tcp_ipv4.o CC [M] drivers/gpu/drm/display/drm_dp_dual_mode_helper.o AR fs/debugfs/built-in.a CC drivers/acpi/acpica/exresnte.o AR drivers/base/firmware_loader/builtin/built-in.a CC drivers/base/firmware_loader/main.o CC [M] drivers/gpu/drm/tests/drm_probe_helper_test.o CC mm/page_io.o CC fs/btrfs/super.o CC crypto/af_alg.o CC [M] drivers/gpu/drm/display/drm_dp_helper.o CC [M] drivers/gpu/drm/tests/drm_rect_test.o CC mm/swap_state.o CC [M] net/sunrpc/auth_gss/auth_gss.o CC net/8021q/vlan_core.o CC drivers/tty/tty_jobctrl.o CC drivers/char/tpm/eventlog/acpi.o CC [M] drivers/gpu/drm/display/drm_dp_mst_topology.o CC [M] drivers/gpu/drm/tests/drm_exec_test.o CC [M] net/8021q/vlan.o CC drivers/dma-buf/sync_debug.o CC mm/swapfile.o CC fs/lockd/svcshare.o CC net/dcb/dcbnl.o CC fs/lockd/svcproc.o CC kernel/sys_ni.o CC drivers/acpi/acpica/exresolv.o CC net/dcb/dcbevent.o CC [M] drivers/misc/mei/mei-trace.o CC arch/x86/kernel/pci-dma.o CC fs/nfs/mount_clnt.o CC kernel/trace/trace_dynevent.o CC fs/ntfs/mst.o CC net/bridge/br_stp.o CC [M] net/sunrpc/auth_gss/gss_generic_token.o CC [M] arch/x86/kvm/vmx/vmx.o CC drivers/iommu/irq_remapping.o CC drivers/scsi/scsicam.o CC [M] net/netfilter/nf_conntrack_netlink.o CC [M] net/netfilter/nf_nat_core.o CC [M] drivers/gpu/drm/display/drm_dsc_helper.o CC fs/btrfs/ctree.o CC fs/btrfs/extent-tree.o CC arch/x86/kernel/quirks.o CC drivers/acpi/acpica/exresop.o CC [M] drivers/dma-buf/selftest.o CC drivers/char/tpm/eventlog/efi.o CC fs/pstore/inode.o CC net/core/gro.o CC drivers/tty/n_null.o CC fs/pstore/platform.o CC kernel/nsproxy.o CC drivers/base/power/domain_governor.o AR drivers/base/firmware_loader/built-in.a CC drivers/char/tpm/tpm_crb.o CC fs/lockd/svcsubs.o CC fs/lockd/mon.o CC fs/ntfs/namei.o CC [M] drivers/misc/mei/pci-me.o CC [M] drivers/misc/mei/hw-me.o CC net/ipv6/reassembly.o AR drivers/iommu/built-in.a CC [M] drivers/gpu/drm/display/drm_hdcp_helper.o CC kernel/notifier.o CC drivers/scsi/scsi_error.o CC arch/x86/kernel/topology.o CC kernel/trace/trace_probe.o CC [M] net/sunrpc/auth_gss/gss_mech_switch.o CC drivers/acpi/acpica/exserial.o CC net/l3mdev/l3mdev.o CC net/handshake/genl.o CC [M] drivers/dma-buf/st-dma-fence.o CC net/handshake/netlink.o CC mm/swap_slots.o CC [M] net/8021q/vlan_dev.o CC [M] net/sunrpc/auth_gss/svcauth_gss.o CC kernel/trace/trace_uprobe.o CC drivers/tty/pty.o CC drivers/acpi/acpica/exstore.o CC drivers/base/power/clock_ops.o CC drivers/nvme/host/core.o CC crypto/algif_hash.o CC drivers/ata/libata-core.o CC fs/pstore/pmsg.o CC arch/x86/kernel/kdebugfs.o CC fs/nfs/nfstrace.o CC drivers/ata/libata-scsi.o CC fs/ntfs/runlist.o CC net/bridge/br_stp_bpdu.o CC [M] drivers/gpu/drm/display/drm_hdmi_helper.o CC drivers/tty/sysrq.o AR drivers/char/tpm/built-in.a AR drivers/char/built-in.a CC [M] drivers/dma-buf/st-dma-fence-chain.o CC [M] net/sunrpc/auth_gss/gss_rpc_upcall.o CC [M] net/bluetooth/af_bluetooth.o CC [M] arch/x86/kvm/kvm-asm-offsets.s CC drivers/acpi/acpica/exstoren.o CC [M] net/netfilter/nf_nat_proto.o AR net/l3mdev/built-in.a CC [M] drivers/dma-buf/st-dma-fence-unwrap.o CC net/handshake/request.o AR net/dcb/built-in.a CC [M] net/dns_resolver/dns_key.o CC [M] arch/x86/kvm/vmx/pmu_intel.o CC fs/lockd/trace.o CC [M] net/dns_resolver/dns_query.o CC drivers/spi/spi.o AR drivers/base/power/built-in.a AR fs/pstore/built-in.a CC fs/ntfs/super.o CC drivers/net/phy/mdio-boardinfo.o CC arch/x86/kernel/alternative.o AR drivers/net/pse-pd/built-in.a CC drivers/net/mdio/acpi_mdio.o AR drivers/net/pcs/built-in.a AR drivers/net/ethernet/adi/built-in.a AR drivers/net/ethernet/alacritech/built-in.a CC arch/x86/kernel/i8253.o AR drivers/net/ethernet/amazon/built-in.a CC drivers/net/mdio/fwnode_mdio.o AR drivers/net/ethernet/aquantia/built-in.a CC drivers/acpi/acpica/exstorob.o AR drivers/net/ethernet/asix/built-in.a AR drivers/net/ethernet/cadence/built-in.a CC net/handshake/tlshd.o AR drivers/net/ethernet/broadcom/built-in.a CC [M] drivers/net/ethernet/broadcom/b44.o CC drivers/base/regmap/regcache-rbtree.o CC net/core/netdev-genl.o CC [M] net/8021q/vlan_netlink.o CC net/ipv6/tcp_ipv6.o CC crypto/algif_skcipher.o CC [M] drivers/net/ethernet/broadcom/bnx2.o CC net/ipv4/tcp_minisocks.o CC net/handshake/trace.o CC net/core/netdev-genl-gen.o AR drivers/net/ethernet/cavium/common/built-in.a CC mm/dmapool.o CC drivers/scsi/scsi_lib.o AR drivers/net/ethernet/cavium/thunder/built-in.a AR drivers/net/ethernet/cavium/liquidio/built-in.a AR drivers/net/ethernet/cavium/octeon/built-in.a AR drivers/net/ethernet/cavium/built-in.a CC net/core/gso.o CC net/core/net-sysfs.o CC [M] drivers/misc/mei/gsc-me.o LD [M] net/dns_resolver/dns_resolver.o AR drivers/tty/built-in.a CC [M] net/sunrpc/auth_gss/gss_rpc_xdr.o CC crypto/xor.o CC drivers/acpi/acpica/exsystem.o CC net/ipv6/ping.o CC [M] drivers/dma-buf/st-dma-resv.o CC drivers/net/phy/mdio_devres.o CC net/bridge/br_stp_if.o CC [M] net/sunrpc/auth_gss/trace.o CC fs/ntfs/sysctl.o CC fs/ntfs/unistr.o LD [M] drivers/misc/mei/mei.o LD [M] drivers/misc/mei/mei-me.o CC fs/ntfs/upcase.o AR drivers/net/mdio/built-in.a AR drivers/net/ethernet/cortina/built-in.a AR drivers/net/usb/built-in.a CC fs/lockd/xdr.o CC [M] drivers/net/usb/pegasus.o CC drivers/base/regmap/regcache-flat.o CC [M] net/bluetooth/hci_core.o CC drivers/acpi/acpica/extrace.o CC [M] drivers/gpu/drm/display/drm_scdc_helper.o CC kernel/trace/rethook.o CC [M] drivers/net/usb/rtl8150.o CC net/ipv6/exthdrs.o AR drivers/dma-buf/built-in.a LD [M] drivers/dma-buf/dmabuf_selftests.o CC [M] net/8021q/vlanproc.o AR drivers/firewire/built-in.a CC [M] net/bluetooth/hci_conn.o CC mm/hugetlb.o AR drivers/net/ethernet/engleder/built-in.a CC drivers/scsi/scsi_lib_dma.o CC [M] arch/x86/kvm/vmx/vmcs12.o CC drivers/scsi/scsi_scan.o LD [M] drivers/misc/mei/mei-gsc.o CC [M] net/netfilter/nf_nat_helper.o AR fs/ext4/built-in.a CC fs/lockd/clnt4xdr.o CC crypto/hash_info.o AR drivers/base/test/built-in.a AR drivers/cdrom/built-in.a CC drivers/base/component.o GEN drivers/scsi/scsi_devinfo_tbl.c CC net/ipv4/tcp_cong.o CC [M] drivers/net/ipvlan/ipvlan_core.o CC drivers/scsi/scsi_devinfo.o CC drivers/net/phy/phy.o CC crypto/simd.o CC arch/x86/kernel/hw_breakpoint.o CC [M] drivers/net/ipvlan/ipvlan_main.o CC drivers/acpi/acpica/exutils.o AR fs/ntfs/built-in.a AR drivers/net/ethernet/ezchip/built-in.a CC fs/efivarfs/inode.o CC drivers/base/regmap/regcache-maple.o CC fs/efivarfs/file.o AR net/handshake/built-in.a CC drivers/acpi/acpica/hwacpi.o CC drivers/ata/libata-eh.o CC [M] crypto/md4.o AR drivers/auxdisplay/built-in.a CC net/ipv6/datagram.o AR kernel/trace/built-in.a CC kernel/ksysfs.o CC net/bridge/br_stp_timer.o CC [M] drivers/gpu/drm/display/drm_dp_aux_dev.o AR drivers/nvme/target/built-in.a CC drivers/scsi/scsi_sysctl.o CC arch/x86/kernel/tsc.o CC drivers/acpi/acpica/hwesleep.o CC lib/memcat_p.o CC drivers/base/core.o CC drivers/base/regmap/regmap-debugfs.o CC [M] fs/netfs/buffered_read.o CC net/devres.o CC [M] fs/netfs/io.o AR net/8021q/built-in.a LD [M] net/8021q/8021q.o CC [M] drivers/net/usb/r8152.o CC mm/hugetlb_vmemmap.o CC net/bridge/br_netlink.o CC drivers/usb/common/common.o CC fs/efivarfs/super.o CC net/ipv4/tcp_metrics.o CC drivers/ata/libata-transport.o CC net/bridge/br_netlink_tunnel.o CC drivers/base/regmap/regmap-i2c.o CC net/core/page_pool.o CC [M] crypto/ccm.o CC fs/lockd/xdr4.o CC drivers/input/serio/serio.o CC lib/nmi_backtrace.o CC drivers/acpi/acpica/hwgpe.o CC drivers/input/serio/i8042.o CC kernel/cred.o CC net/bridge/br_arp_nd_proxy.o CC [M] net/netfilter/nf_nat_redirect.o CC drivers/input/keyboard/atkbd.o CC drivers/scsi/scsi_debugfs.o CC drivers/nvme/host/ioctl.o CC net/ipv4/tcp_fastopen.o LD [M] drivers/gpu/drm/display/drm_display_helper.o CC [M] net/sunrpc/auth_gss/gss_krb5_mech.o CC drivers/net/phy/phy-c45.o AR drivers/gpu/drm/renesas/rcar-du/built-in.a CC drivers/net/phy/phy-core.o AR drivers/gpu/drm/renesas/built-in.a AR drivers/spi/built-in.a CC drivers/usb/common/debug.o CC fs/efivarfs/vars.o CC drivers/net/phy/phy_device.o AR drivers/gpu/drm/omapdrm/built-in.a CC net/ipv6/ip6_flowlabel.o CC [M] net/sunrpc/auth_gss/gss_krb5_seal.o AR drivers/gpu/drm/tilcdc/built-in.a AR drivers/gpu/drm/imx/built-in.a AR drivers/gpu/drm/i2c/built-in.a AR drivers/gpu/drm/panel/built-in.a CC drivers/acpi/acpica/hwregs.o AR drivers/gpu/drm/bridge/analogix/built-in.a CC drivers/rtc/lib.o AR drivers/gpu/drm/bridge/cadence/built-in.a CC arch/x86/kernel/tsc_msr.o AR drivers/gpu/drm/bridge/imx/built-in.a CC [M] drivers/net/ipvlan/ipvlan_l3s.o AR drivers/gpu/drm/bridge/synopsys/built-in.a CC drivers/rtc/class.o AR drivers/gpu/drm/bridge/built-in.a AR drivers/usb/common/built-in.a AR drivers/gpu/drm/hisilicon/built-in.a CC drivers/usb/core/usb.o CC lib/plist.o AR drivers/gpu/drm/mxsfb/built-in.a CC drivers/rtc/interface.o AR drivers/gpu/drm/tiny/built-in.a AR drivers/gpu/drm/xlnx/built-in.a AR drivers/gpu/drm/gud/built-in.a AR drivers/gpu/drm/solomon/built-in.a CC [M] drivers/gpu/drm/ttm/ttm_tt.o CC drivers/rtc/nvmem.o CC drivers/base/regmap/regmap-irq.o CC lib/radix-tree.o CC [M] fs/netfs/iterator.o CC [M] drivers/gpu/drm/ttm/ttm_bo.o CC drivers/scsi/scsi_trace.o AR drivers/net/ethernet/fungible/built-in.a CC [M] fs/netfs/main.o CC net/ipv6/inet6_connection_sock.o CC arch/x86/kernel/io_delay.o CC [M] crypto/arc4.o CC kernel/reboot.o CC net/ipv6/udp_offload.o CC drivers/acpi/acpica/hwsleep.o CC fs/lockd/svc4proc.o CC drivers/scsi/scsi_logging.o CC fs/btrfs/print-tree.o CC fs/nfs/export.o CC [M] fs/netfs/objects.o AR drivers/input/keyboard/built-in.a CC net/core/net-procfs.o AR drivers/input/mouse/built-in.a CC drivers/input/input.o AR fs/efivarfs/built-in.a CC mm/sparse.o CC [M] net/netfilter/nf_nat_masquerade.o CC fs/btrfs/root-tree.o CC fs/lockd/procfs.o CC drivers/rtc/dev.o CC drivers/input/serio/libps2.o CC arch/x86/kernel/rtc.o CC [M] net/sunrpc/auth_gss/gss_krb5_unseal.o CC drivers/nvme/host/sysfs.o CC [M] crypto/ecc.o CC [M] net/netfilter/x_tables.o CC net/sunrpc/clnt.o CC drivers/input/input-compat.o CC drivers/ata/libata-trace.o CC drivers/acpi/acpica/hwvalid.o CC arch/x86/kernel/resource.o CC [M] drivers/net/vxlan/vxlan_core.o CC drivers/net/loopback.o CC [M] drivers/net/vxlan/vxlan_multicast.o CC drivers/usb/core/hub.o CC drivers/ata/libata-sata.o CC net/bridge/br_sysfs_if.o LD [M] drivers/net/ipvlan/ipvlan.o CC [M] drivers/net/usb/asix_devices.o CC [M] arch/x86/kvm/vmx/hyperv.o CC net/ipv4/tcp_rate.o CC lib/ratelimit.o CC lib/rbtree.o CC net/ipv4/tcp_recovery.o AR drivers/base/regmap/built-in.a CC net/ipv4/tcp_ulp.o CC [M] drivers/gpu/drm/ttm/ttm_bo_util.o CC drivers/scsi/scsi_pm.o CC [M] net/bluetooth/hci_event.o CC [M] net/sunrpc/auth_gss/gss_krb5_seqnum.o LD [M] fs/netfs/netfs.o CC drivers/acpi/acpica/hwxface.o CC net/sunrpc/xprt.o AS arch/x86/kernel/irqflags.o CC [M] drivers/net/usb/asix_common.o CC drivers/acpi/acpica/hwxfsleep.o CC arch/x86/kernel/static_call.o CC [M] fs/fscache/cache.o CC drivers/scsi/scsi_bsg.o CC kernel/async.o CC [M] fs/fscache/cookie.o CC kernel/range.o AR drivers/input/serio/built-in.a CC [M] drivers/gpu/drm/ttm/ttm_bo_vm.o CC net/ipv6/seg6.o CC net/core/netpoll.o AR fs/lockd/built-in.a CC [M] net/bluetooth/mgmt.o CC [M] net/bluetooth/hci_sock.o CC drivers/rtc/proc.o AR drivers/i2c/algos/built-in.a CC [M] drivers/i2c/algos/i2c-algo-bit.o CC drivers/i2c/busses/i2c-designware-common.o CC drivers/base/bus.o CC lib/seq_buf.o CC drivers/i2c/busses/i2c-designware-master.o CC [M] net/sunrpc/auth_gss/gss_krb5_wrap.o CC drivers/net/phy/linkmode.o CC drivers/rtc/sysfs.o CC drivers/nvme/host/pr.o CC drivers/acpi/acpica/hwpci.o CC arch/x86/kernel/process.o CC fs/nfs/sysfs.o CC [M] net/netfilter/xt_tcpudp.o CC kernel/smpboot.o CC fs/btrfs/dir-item.o CC [M] fs/smb/common/cifs_arc4.o CC [M] fs/smb/client/trace.o CC drivers/scsi/scsi_common.o CC drivers/usb/core/hcd.o CC net/bridge/br_sysfs_br.o CC drivers/i2c/busses/i2c-designware-platdrv.o CC [M] arch/x86/kvm/vmx/nested.o CC [M] drivers/net/ethernet/broadcom/cnic.o CC net/core/fib_rules.o CC drivers/ata/libata-sff.o CC net/ipv4/tcp_offload.o CC drivers/i2c/busses/i2c-designware-baytrail.o CC drivers/acpi/acpica/nsaccess.o CC [M] drivers/gpu/drm/ttm/ttm_module.o CC drivers/usb/core/urb.o CC drivers/input/input-mt.o CC lib/siphash.o CC net/ipv4/tcp_plb.o CC [M] fs/smb/common/cifs_md4.o CC net/ipv4/datagram.o CC [M] drivers/net/usb/ax88172a.o CC drivers/rtc/rtc-mc146818-lib.o CC drivers/net/phy/mdio_bus.o CC drivers/base/dd.o CC drivers/scsi/sd.o CC fs/btrfs/file-item.o CC [M] fs/smb/client/cifsfs.o CC drivers/usb/core/message.o CC [M] net/sunrpc/auth_gss/gss_krb5_crypto.o CC net/ipv6/fib6_notifier.o CC kernel/ucount.o CC [M] crypto/essiv.o CC drivers/nvme/host/trace.o CC mm/sparse-vmemmap.o CC [M] net/sunrpc/auth_gss/gss_krb5_keys.o CC [M] drivers/gpu/drm/ttm/ttm_execbuf_util.o CC drivers/acpi/acpica/nsalloc.o CC lib/string.o CC [M] fs/fscache/io.o CC [M] drivers/i2c/busses/i2c-scmi.o LD [M] net/sunrpc/auth_gss/auth_rpcgss.o CC fs/nfs/fs_context.o CC fs/btrfs/inode-item.o CC kernel/regset.o CC drivers/input/input-poller.o CC [M] drivers/i2c/busses/i2c-ccgx-ucsi.o CC drivers/rtc/rtc-cmos.o CC drivers/base/syscore.o CC [M] net/netfilter/xt_mark.o CC net/core/net-traces.o CC drivers/base/driver.o CC drivers/usb/core/driver.o CC arch/x86/kernel/ptrace.o CC drivers/acpi/acpica/nsarguments.o AR drivers/i3c/built-in.a CC net/ipv4/raw.o CC kernel/ksyms_common.o CC net/core/selftests.o CC lib/timerqueue.o CC net/bridge/br_nf_core.o CC [M] crypto/ecdh.o CC net/ipv6/rpl.o CC mm/mmu_notifier.o CC [M] drivers/gpu/drm/ttm/ttm_range_manager.o CC net/ipv6/ioam6.o CC net/socket.o CC drivers/scsi/sg.o CC drivers/acpi/acpica/nsconvert.o CC drivers/nvme/host/fault_inject.o CC drivers/nvme/host/pci.o CC lib/vsprintf.o CC drivers/input/ff-core.o CC [M] fs/fscache/main.o LD [M] net/sunrpc/auth_gss/rpcsec_gss_krb5.o CC [M] drivers/i2c/busses/i2c-i801.o CC net/ipv6/sysctl_net_ipv6.o CC [M] drivers/gpu/drm/ttm/ttm_resource.o CC drivers/base/class.o CC drivers/net/phy/mdio_device.o CC drivers/usb/core/config.o CC fs/nfs/sysctl.o CC kernel/groups.o CC [M] fs/fscache/volume.o CC net/ipv6/xfrm6_policy.o CC [M] net/netfilter/xt_nat.o CC net/sunrpc/socklib.o CC drivers/base/platform.o CC [M] crypto/ecdh_helper.o CC [M] drivers/i2c/busses/i2c-isch.o CC drivers/acpi/acpica/nsdump.o CC net/compat.o AR drivers/rtc/built-in.a CC kernel/vhost_task.o CC drivers/acpi/proc.o CC [M] drivers/net/usb/ax88179_178a.o CC drivers/input/touchscreen.o CC drivers/usb/core/file.o CC arch/x86/kernel/tls.o CC drivers/ata/libata-pmp.o CC drivers/ata/libata-acpi.o CC mm/ksm.o CC fs/btrfs/disk-io.o LD [M] crypto/ecdh_generic.o CC drivers/scsi/scsi_sysfs.o CC drivers/usb/core/buffer.o AR crypto/built-in.a CC net/sunrpc/xprtsock.o CC drivers/acpi/acpica/nseval.o CC net/bridge/br_multicast.o AR drivers/media/i2c/built-in.a AR drivers/ptp/built-in.a AR drivers/media/tuners/built-in.a CC [M] drivers/ptp/ptp_clock.o CC drivers/net/phy/swphy.o AR drivers/media/rc/keymaps/built-in.a AR drivers/media/rc/built-in.a AR drivers/media/common/b2c2/built-in.a AR drivers/media/common/saa7146/built-in.a CC drivers/net/phy/fixed_phy.o AR drivers/media/common/siano/built-in.a AR drivers/media/common/v4l2-tpg/built-in.a AR drivers/media/common/videobuf2/built-in.a AR drivers/media/common/built-in.a CC kernel/kcmp.o AR drivers/media/platform/allegro-dvt/built-in.a AR drivers/media/platform/amlogic/meson-ge2d/built-in.a CC [M] drivers/gpu/drm/ttm/ttm_pool.o AR drivers/media/platform/amlogic/built-in.a AR drivers/media/pci/ttpci/built-in.a AR drivers/media/pci/b2c2/built-in.a AR drivers/media/platform/amphion/built-in.a AR drivers/media/pci/pluto2/built-in.a AR drivers/media/platform/aspeed/built-in.a AR drivers/media/pci/dm1105/built-in.a AR drivers/media/usb/b2c2/built-in.a AR drivers/media/platform/atmel/built-in.a AR drivers/media/pci/pt1/built-in.a AR drivers/media/usb/dvb-usb/built-in.a AR drivers/media/platform/cadence/built-in.a AR drivers/media/pci/pt3/built-in.a AR drivers/media/usb/dvb-usb-v2/built-in.a AR drivers/media/platform/chips-media/built-in.a AR drivers/media/usb/s2255/built-in.a AR drivers/media/pci/mantis/built-in.a AR drivers/media/platform/intel/built-in.a AR drivers/media/usb/siano/built-in.a AR drivers/media/pci/ngene/built-in.a AR drivers/media/platform/marvell/built-in.a AR drivers/media/usb/ttusb-budget/built-in.a AR drivers/media/pci/ddbridge/built-in.a AR drivers/media/usb/ttusb-dec/built-in.a AR drivers/media/pci/saa7146/built-in.a AR drivers/media/usb/built-in.a AR drivers/media/platform/mediatek/jpeg/built-in.a AR drivers/media/pci/smipcie/built-in.a AR drivers/media/platform/mediatek/mdp/built-in.a CC [M] fs/fscache/proc.o AR drivers/media/pci/netup_unidvb/built-in.a AR drivers/media/platform/mediatek/vcodec/built-in.a AR drivers/media/platform/mediatek/vpu/built-in.a CC [M] drivers/ptp/ptp_chardev.o CC fs/nfs/nfs2super.o AR drivers/media/pci/intel/ipu3/built-in.a AR drivers/media/platform/mediatek/mdp3/built-in.a AR drivers/media/pci/intel/built-in.a AR drivers/media/platform/mediatek/built-in.a CC [M] drivers/i2c/busses/i2c-ismt.o AR drivers/media/pci/built-in.a AR drivers/media/platform/microchip/built-in.a AR drivers/media/mmc/siano/built-in.a CC drivers/usb/core/sysfs.o AR drivers/media/mmc/built-in.a CC drivers/acpi/acpica/nsinit.o CC drivers/acpi/acpica/nsload.o AR drivers/media/platform/nvidia/tegra-vde/built-in.a CC drivers/acpi/acpica/nsnames.o CC drivers/input/ff-memless.o CC [M] fs/smb/client/cifs_debug.o AR drivers/media/platform/nvidia/built-in.a CC [M] fs/smb/client/connect.o AR drivers/media/platform/nxp/dw100/built-in.a AR drivers/media/platform/nxp/imx-jpeg/built-in.a AR drivers/media/platform/qcom/camss/built-in.a AR drivers/media/platform/nxp/imx8-isi/built-in.a AR drivers/media/platform/nxp/built-in.a AR drivers/media/platform/qcom/venus/built-in.a CC arch/x86/kernel/step.o AR drivers/media/platform/qcom/built-in.a CC arch/x86/kernel/i8237.o CC drivers/input/vivaldi-fmap.o AR drivers/media/platform/renesas/rcar-vin/built-in.a CC [M] net/netfilter/xt_REDIRECT.o AR drivers/media/platform/renesas/rzg2l-cru/built-in.a AR drivers/media/platform/renesas/vsp1/built-in.a AR drivers/media/platform/renesas/built-in.a CC drivers/acpi/acpica/nsobject.o CC net/ipv4/udp.o AR drivers/media/platform/rockchip/rga/built-in.a CC net/ipv6/xfrm6_state.o AR drivers/media/platform/rockchip/rkisp1/built-in.a AR drivers/media/platform/rockchip/built-in.a CC fs/btrfs/transaction.o CC drivers/usb/core/endpoint.o AR drivers/media/platform/samsung/exynos-gsc/built-in.a CC drivers/base/cpu.o AR drivers/media/platform/samsung/exynos4-is/built-in.a CC drivers/usb/core/devio.o AR drivers/media/platform/samsung/s3c-camif/built-in.a AR drivers/media/platform/samsung/s5p-g2d/built-in.a AR drivers/media/platform/samsung/s5p-jpeg/built-in.a AR drivers/media/platform/samsung/s5p-mfc/built-in.a AR drivers/media/platform/samsung/built-in.a CC [M] drivers/gpu/drm/scheduler/sched_main.o AR drivers/media/platform/st/sti/bdisp/built-in.a AR drivers/media/platform/st/sti/c8sectpfe/built-in.a AR drivers/media/platform/st/sti/delta/built-in.a AR drivers/media/platform/st/sti/hva/built-in.a AR drivers/media/platform/st/stm32/built-in.a CC [M] drivers/gpu/drm/scheduler/sched_fence.o AR drivers/media/platform/st/built-in.a CC [M] arch/x86/kvm/vmx/posted_intr.o AR drivers/media/platform/sunxi/sun4i-csi/built-in.a AR drivers/media/platform/sunxi/sun6i-csi/built-in.a AR drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a CC [M] drivers/net/vxlan/vxlan_vnifilter.o CC lib/win_minmax.o AR drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a AR drivers/media/platform/sunxi/sun8i-di/built-in.a AR drivers/media/platform/sunxi/sun8i-rotate/built-in.a AR drivers/media/platform/sunxi/built-in.a AR drivers/media/platform/ti/am437x/built-in.a AR drivers/media/platform/verisilicon/built-in.a AR drivers/media/platform/ti/cal/built-in.a AR drivers/media/platform/ti/vpe/built-in.a CC kernel/freezer.o LD [M] arch/x86/kvm/kvm.o AR drivers/media/platform/ti/davinci/built-in.a CC [M] net/netfilter/xt_MASQUERADE.o CC [M] net/netfilter/xt_addrtype.o CC drivers/input/input-leds.o AR drivers/media/platform/ti/omap/built-in.a CC [M] drivers/net/phy/phylink.o AR drivers/media/platform/ti/omap3isp/built-in.a CC lib/xarray.o AR drivers/media/platform/ti/built-in.a CC arch/x86/kernel/stacktrace.o AR drivers/media/platform/via/built-in.a CC drivers/ata/libata-pata-timings.o AR drivers/media/platform/xilinx/built-in.a LD [M] fs/fscache/fscache.o AR drivers/media/platform/built-in.a CC drivers/acpi/acpica/nsparse.o CC net/core/ptp_classifier.o AR drivers/media/firewire/built-in.a AR drivers/media/spi/built-in.a CC [M] drivers/net/vxlan/vxlan_mdb.o AR drivers/media/test-drivers/built-in.a AR drivers/media/built-in.a CC [M] drivers/i2c/busses/i2c-piix4.o CC [M] drivers/gpu/drm/ttm/ttm_device.o CC arch/x86/kernel/reboot.o CC [M] drivers/ptp/ptp_sysfs.o UPD arch/x86/kvm/kvm-asm-offsets.h CC [M] drivers/net/usb/cdc_ether.o CC [M] fs/smb/client/dir.o CC drivers/acpi/acpica/nspredef.o CC drivers/ata/ahci.o CC drivers/base/firmware.o CC drivers/usb/core/notify.o CC [M] fs/smb/client/file.o CC fs/nfs/proc.o AR drivers/scsi/built-in.a AR drivers/net/ethernet/huawei/built-in.a CC drivers/input/mousedev.o CC drivers/usb/core/generic.o CC arch/x86/kernel/msr.o CC lib/lockref.o AR drivers/nvme/host/built-in.a AR drivers/nvme/built-in.a CC [M] drivers/gpu/drm/scheduler/sched_entity.o CC [M] net/netfilter/xt_conntrack.o CC net/ipv6/xfrm6_input.o CC drivers/net/netconsole.o CC net/bridge/br_mdb.o CC drivers/base/init.o CC [M] drivers/gpu/drm/ttm/ttm_sys_manager.o CC drivers/acpi/acpica/nsprepkg.o CC kernel/stacktrace.o CC [M] drivers/ptp/ptp_vclock.o CC fs/btrfs/inode.o CC net/sysctl_net.o CC [M] drivers/gpu/drm/ttm/ttm_agp_backend.o CC [M] drivers/net/ethernet/intel/e1000/e1000_main.o CC [M] drivers/net/ethernet/intel/e1000e/82571.o CC arch/x86/kernel/cpuid.o CC [M] drivers/net/ethernet/intel/igb/igb_main.o CC [M] net/netfilter/xt_ipvs.o CC [M] drivers/net/ethernet/intel/igb/igb_ethtool.o CC arch/x86/kernel/early-quirks.o CC [M] net/bluetooth/hci_sysfs.o CC drivers/acpi/acpica/nsrepair.o CC [M] drivers/net/usb/cdc_eem.o CC [M] drivers/net/ethernet/intel/igc/igc_main.o CC [M] drivers/net/ethernet/intel/igbvf/vf.o CC [M] drivers/net/ethernet/intel/igc/igc_mac.o CC [M] drivers/i2c/busses/i2c-designware-pcidrv.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_main.o CC [M] drivers/net/ethernet/intel/igbvf/mbx.o CC [M] drivers/net/ethernet/broadcom/tg3.o CC drivers/base/map.o CC drivers/input/evdev.o CC kernel/dma.o CC drivers/ata/libahci.o LD [M] drivers/gpu/drm/scheduler/gpu-sched.o LD [M] drivers/gpu/drm/ttm/ttm.o CC [M] drivers/ptp/ptp_kvm_x86.o AR drivers/net/ethernet/i825xx/built-in.a CC [M] drivers/net/ethernet/intel/e1000/e1000_hw.o CC lib/bcd.o CC fs/nfs/nfs2xdr.o CC lib/sort.o CC fs/btrfs/file.o CC drivers/acpi/acpica/nsrepair2.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o CC fs/btrfs/defrag.o CC lib/parser.o AR drivers/i2c/muxes/built-in.a CC [M] drivers/i2c/muxes/i2c-mux-gpio.o CC drivers/acpi/acpica/nssearch.o CC mm/slub.o CC drivers/base/devres.o CC drivers/usb/core/quirks.o CC net/ipv6/xfrm6_output.o CC kernel/smp.o CC [M] drivers/net/usb/smsc75xx.o CC arch/x86/kernel/smp.o CC net/sunrpc/sched.o CC [M] drivers/net/ethernet/intel/igbvf/ethtool.o CC drivers/base/attribute_container.o CC [M] fs/smb/client/inode.o CC [M] drivers/net/ethernet/intel/igbvf/netdev.o AS [M] arch/x86/kvm/vmx/vmenter.o CC net/ipv6/xfrm6_protocol.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_device.o CC [M] net/bluetooth/l2cap_core.o LD [M] arch/x86/kvm/kvm-intel.o LD [M] drivers/i2c/busses/i2c-designware-pci.o AR drivers/i2c/busses/built-in.a CC arch/x86/kernel/smpboot.o CC lib/debug_locks.o CC net/core/netprio_cgroup.o CC drivers/usb/core/devices.o LD [M] drivers/net/vxlan/vxlan.o CC [M] fs/smb/client/link.o CC [M] drivers/ptp/ptp_kvm_common.o CC kernel/uid16.o LD [M] net/netfilter/nf_conntrack.o CC drivers/acpi/acpica/nsutils.o CC [M] fs/smb/client/misc.o LD [M] net/netfilter/nf_nat.o CC [M] drivers/net/phy/aquantia_main.o AR net/netfilter/built-in.a CC kernel/kallsyms.o CC lib/random32.o CC [M] drivers/net/ethernet/intel/e1000e/ich8lan.o AR drivers/input/built-in.a CC [M] drivers/net/usb/smsc95xx.o AR drivers/power/reset/built-in.a CC drivers/power/supply/power_supply_core.o CC net/bridge/br_multicast_eht.o CC drivers/i2c/i2c-boardinfo.o CC drivers/usb/core/phy.o CC net/sunrpc/auth.o CC drivers/base/transport_class.o CC lib/bust_spinlocks.o CC drivers/acpi/acpica/nswalk.o LD [M] drivers/ptp/ptp.o LD [M] drivers/ptp/ptp_kvm.o CC drivers/hwmon/hwmon.o AR drivers/thermal/broadcom/built-in.a AR drivers/thermal/samsung/built-in.a CC net/ipv4/udplite.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_doorbell_mgr.o CC drivers/thermal/intel/intel_tcc.o AR drivers/thermal/st/built-in.a AR drivers/thermal/qcom/built-in.a CC drivers/usb/core/port.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_kms.o CC kernel/acct.o CC lib/kasprintf.o CC drivers/base/topology.o CC [M] drivers/net/ethernet/intel/igc/igc_i225.o CC drivers/thermal/intel/therm_throt.o CC fs/nfs/nfs3super.o CC [M] drivers/net/phy/aquantia_hwmon.o CC net/core/dst_cache.o CC drivers/acpi/acpica/nsxfeval.o CC net/ipv6/netfilter.o CC drivers/power/supply/power_supply_sysfs.o CC drivers/i2c/i2c-core-base.o CC [M] drivers/net/dummy.o CC net/sunrpc/auth_null.o CC drivers/ata/ata_piix.o CC fs/btrfs/extent_map.o CC arch/x86/kernel/tsc_sync.o CC drivers/acpi/acpica/nsxfname.o CC drivers/i2c/i2c-core-smbus.o CC [M] drivers/net/macvlan.o CC lib/bitmap.o CC mm/migrate.o CC [M] drivers/net/usb/mcs7830.o CC [M] drivers/net/usb/usbnet.o CC [M] drivers/hwmon/acpi_power_meter.o CC drivers/base/container.o CC drivers/power/supply/power_supply_leds.o CC net/bridge/br_vlan.o CC drivers/usb/core/hcd-pci.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.o CC [M] drivers/net/phy/ax88796b.o CC net/ipv4/udp_offload.o CC drivers/acpi/acpica/nsxfobj.o CC arch/x86/kernel/setup_percpu.o CC kernel/crash_core.o CC [M] fs/smb/client/netmisc.o CC [M] drivers/net/usb/cdc_ncm.o CC [M] drivers/net/ethernet/intel/igc/igc_base.o CC drivers/power/supply/power_supply_hwmon.o CC fs/nfs/nfs3client.o CC [M] drivers/net/usb/r8153_ecm.o CC [M] drivers/thermal/intel/x86_pkg_temp_thermal.o LD [M] drivers/net/ethernet/intel/igbvf/igbvf.o CC net/ipv4/arp.o CC drivers/base/property.o CC net/core/gro_cells.o CC [M] drivers/net/ethernet/intel/ixgbevf/vf.o CC [M] drivers/net/ethernet/intel/e1000/e1000_ethtool.o AR drivers/net/ethernet/intel/built-in.a CC [M] drivers/net/ethernet/intel/e1000/e1000_param.o CC [M] drivers/hwmon/coretemp.o CC drivers/acpi/acpica/psargs.o CC fs/btrfs/sysfs.o CC net/sunrpc/auth_tls.o CC net/ipv4/icmp.o AR drivers/ata/built-in.a CC [M] drivers/net/mii.o CC net/ipv6/fib6_rules.o CC lib/scatterlist.o CC arch/x86/kernel/ftrace.o AR drivers/power/supply/built-in.a CC [M] drivers/net/phy/bcm7xxx.o AR drivers/power/built-in.a AR drivers/usb/phy/built-in.a CC [M] drivers/net/mdio.o CC [M] drivers/gpu/drm/amd/amdxcp/amdgpu_xcp_drv.o CC drivers/usb/core/usb-acpi.o CC kernel/compat.o CC net/bridge/br_vlan_tunnel.o CC drivers/i2c/i2c-core-acpi.o AR drivers/thermal/intel/built-in.a AR drivers/thermal/tegra/built-in.a AR drivers/thermal/mediatek/built-in.a CC drivers/thermal/thermal_core.o CC drivers/acpi/acpica/psloop.o CC [M] drivers/net/ethernet/intel/igb/e1000_82575.o CC drivers/watchdog/watchdog_core.o CC [M] drivers/md/persistent-data/dm-array.o AR net/core/built-in.a CC drivers/md/md.o CC [M] drivers/net/ethernet/intel/e1000e/80003es2lan.o LD [M] drivers/gpu/drm/amd/amdxcp/amdxcp.o CC fs/nfs/nfs3proc.o CC drivers/md/md-bitmap.o CC [M] fs/smb/client/smbencrypt.o AR drivers/hwmon/built-in.a CC drivers/thermal/thermal_sysfs.o CC [M] drivers/gpu/drm/amd/amdgpu/atombios_crtc.o CC [M] drivers/net/ethernet/intel/ixgbevf/mbx.o CC [M] drivers/net/tun.o CC drivers/base/cacheinfo.o CC [M] drivers/net/veth.o CC [M] drivers/net/ethernet/intel/igc/igc_nvm.o AS arch/x86/kernel/ftrace_64.o CC drivers/md/md-autodetect.o AR drivers/usb/core/built-in.a CC mm/migrate_device.o CC [M] fs/smb/client/transport.o CC arch/x86/kernel/trace_clock.o CC drivers/opp/core.o CC drivers/usb/host/pci-quirks.o CC [M] drivers/net/ethernet/intel/ixgbevf/ethtool.o CC drivers/opp/cpu.o CC drivers/acpi/acpica/psobject.o CC drivers/opp/debugfs.o CC [M] drivers/net/ethernet/intel/igc/igc_phy.o CC [M] drivers/net/phy/bcm87xx.o CC [M] drivers/net/phy/bcm-phy-lib.o CC kernel/utsname.o CC arch/x86/kernel/trace.o CC drivers/usb/host/ehci-hcd.o CC lib/list_sort.o CC lib/uuid.o CC net/ipv6/proc.o LD [M] drivers/net/usb/asix.o CC [M] drivers/net/phy/broadcom.o CC drivers/i2c/i2c-core-slave.o CC kernel/user_namespace.o CC lib/iov_iter.o CC drivers/watchdog/watchdog_dev.o CC [M] drivers/md/persistent-data/dm-bitset.o CC drivers/thermal/thermal_trip.o CC drivers/usb/host/ehci-pci.o CC drivers/acpi/acpica/psopcode.o CC net/ipv6/syncookies.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.o CC arch/x86/kernel/rethook.o LD [M] drivers/net/ethernet/intel/e1000/e1000.o CC [M] drivers/net/phy/lxt.o CC drivers/usb/storage/scsiglue.o CC [M] drivers/net/phy/realtek.o CC drivers/base/swnode.o CC net/ipv4/devinet.o CC drivers/md/dm-uevent.o CC drivers/base/auxiliary.o CC [M] drivers/net/phy/smsc.o CC [M] drivers/net/ethernet/intel/e1000e/mac.o CC [M] fs/smb/client/cached_dir.o CC drivers/base/devtmpfs.o AR drivers/net/ethernet/microsoft/built-in.a CC [M] net/bluetooth/l2cap_sock.o CC drivers/base/memory.o CC drivers/acpi/acpica/psopinfo.o CC [M] drivers/net/ethernet/intel/e1000e/manage.o CC drivers/thermal/thermal_helpers.o CC fs/btrfs/accessors.o CC fs/nfs/nfs3xdr.o CC net/bridge/br_vlan_options.o CC [M] drivers/net/ethernet/intel/igc/igc_diag.o CC drivers/i2c/i2c-dev.o CC arch/x86/kernel/crash_core_64.o CC [M] drivers/md/persistent-data/dm-block-manager.o CC drivers/usb/serial/usb-serial.o CC [M] drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.o CC drivers/usb/serial/generic.o CC drivers/usb/serial/bus.o CC [M] drivers/net/ethernet/intel/igb/e1000_mac.o CC drivers/base/module.o AR drivers/net/ethernet/litex/built-in.a CC drivers/base/pinctrl.o CC drivers/acpi/acpica/psparse.o CC kernel/pid_namespace.o CC drivers/md/dm.o CC drivers/watchdog/softdog.o AR drivers/usb/misc/built-in.a CC drivers/usb/gadget/udc/core.o AR drivers/usb/gadget/function/built-in.a CC fs/btrfs/xattr.o CC drivers/usb/storage/protocol.o CC drivers/thermal/thermal_hwmon.o AR drivers/opp/built-in.a CC fs/btrfs/ordered-data.o CC mm/huge_memory.o CC net/ipv6/mip6.o CC drivers/usb/gadget/udc/trace.o CC drivers/cpufreq/cpufreq.o CC arch/x86/kernel/module.o LD [M] drivers/net/phy/aquantia.o CC drivers/cpufreq/freq_table.o AR drivers/net/phy/built-in.a CC [M] drivers/i2c/i2c-smbus.o CC drivers/base/devcoredump.o CC arch/x86/kernel/early_printk.o CC [M] drivers/i2c/i2c-mux.o CC drivers/cpufreq/cpufreq_performance.o CC drivers/acpi/acpica/psscope.o AR drivers/watchdog/built-in.a AR drivers/net/ethernet/microchip/built-in.a CC [M] drivers/md/persistent-data/dm-space-map-common.o UPD kernel/config_data CC fs/btrfs/extent_io.o CC drivers/usb/host/ohci-hcd.o AR drivers/usb/gadget/legacy/built-in.a CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_common.o CC [M] drivers/net/ethernet/intel/igc/igc_ethtool.o CC drivers/md/dm-table.o CC mm/khugepaged.o CC drivers/thermal/gov_fair_share.o CC drivers/usb/serial/console.o CC drivers/usb/host/ohci-pci.o CC drivers/usb/storage/transport.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.o CC kernel/stop_machine.o CC drivers/usb/serial/ftdi_sio.o CC fs/btrfs/volumes.o CC [M] drivers/gpu/drm/i915/i915_driver.o AR drivers/i2c/built-in.a CC drivers/usb/serial/pl2303.o CC [M] drivers/gpu/drm/amd/amdgpu/atom.o CC drivers/cpufreq/cpufreq_ondemand.o CC drivers/acpi/acpica/pstree.o CC [M] drivers/net/ethernet/intel/e1000e/nvm.o CC [M] drivers/gpu/drm/i915/i915_drm_client.o CC arch/x86/kernel/hpet.o CC drivers/base/platform-msi.o CC [M] fs/smb/client/cifs_unicode.o CC net/bridge/br_mst.o CC drivers/thermal/gov_step_wise.o CC drivers/thermal/gov_user_space.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_82599.o CC [M] drivers/net/ethernet/intel/igb/e1000_nvm.o CC net/ipv6/addrconf_core.o CC [M] net/bluetooth/smp.o CC drivers/acpi/acpica/psutils.o CC [M] drivers/md/persistent-data/dm-space-map-disk.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_fence.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.o CC lib/clz_ctz.o CC drivers/usb/host/uhci-hcd.o AR drivers/usb/gadget/udc/built-in.a AR fs/nfs/built-in.a CC drivers/usb/gadget/usbstring.o CC [M] fs/fuse/dev.o AR drivers/net/ethernet/mscc/built-in.a CC [M] drivers/md/persistent-data/dm-space-map-metadata.o CC [M] fs/fuse/dir.o CC drivers/base/physical_location.o CC lib/bsearch.o CC [M] fs/fuse/file.o AR drivers/thermal/built-in.a CC net/ipv6/exthdrs_core.o CC kernel/kprobes.o CC net/sunrpc/auth_unix.o CC drivers/acpi/acpica/pswalk.o CC net/ipv4/af_inet.o CC drivers/usb/storage/usb.o CC drivers/usb/storage/initializers.o CC net/ipv4/igmp.o CC [M] drivers/gpu/drm/xe/tests/xe_bo_test.o CC fs/btrfs/async-thread.o CC [M] fs/smb/client/nterr.o CC lib/find_bit.o CC arch/x86/kernel/amd_nb.o CC drivers/usb/storage/sierra_ms.o CC [M] drivers/net/ethernet/intel/e1000e/phy.o CC drivers/usb/gadget/config.o CC kernel/hung_task.o CC drivers/base/trace.o CC drivers/acpi/acpica/psxface.o AR drivers/usb/serial/built-in.a CC [M] drivers/gpu/drm/i915/i915_config.o CC [M] drivers/gpu/drm/i915/i915_getparam.o CC [M] drivers/net/ethernet/intel/igc/igc_ptp.o CC fs/btrfs/ioctl.o CC drivers/usb/gadget/epautoconf.o CC drivers/cpufreq/cpufreq_governor.o CC [M] drivers/net/ethernet/intel/igb/e1000_phy.o CC [M] net/bridge/br_netfilter_hooks.o CC lib/llist.o CC [M] drivers/gpu/drm/xe/tests/xe_dma_buf_test.o CC [M] drivers/md/persistent-data/dm-transaction-manager.o CC lib/memweight.o CC [M] fs/smb/client/cifsencrypt.o CC drivers/usb/storage/option_ms.o CC [M] drivers/usb/class/usbtmc.o CC lib/kfifo.o CC [M] drivers/gpu/drm/i915/i915_ioctl.o CC drivers/acpi/acpica/rsaddr.o CC net/ipv6/ip6_checksum.o CC [M] drivers/net/ethernet/intel/igb/e1000_mbx.o CC net/sunrpc/svc.o CC [M] fs/fuse/inode.o CC [M] drivers/gpu/drm/xe/tests/xe_migrate_test.o CC [M] fs/overlayfs/super.o CC [M] drivers/gpu/drm/xe/tests/xe_pci_test.o CC [M] fs/overlayfs/namei.o AR drivers/base/built-in.a CC drivers/usb/host/xhci.o CC drivers/usb/gadget/composite.o CC [M] drivers/net/ethernet/intel/igb/e1000_i210.o CC arch/x86/kernel/kvm.o CC drivers/cpuidle/governors/menu.o CC arch/x86/kernel/kvmclock.o CC drivers/cpuidle/governors/haltpoll.o CC drivers/cpufreq/cpufreq_governor_attr_set.o CC drivers/acpi/acpica/rscalc.o CC kernel/watchdog.o CC [M] fs/fuse/control.o CC [M] drivers/md/persistent-data/dm-btree.o CC [M] drivers/net/ethernet/intel/ixgbevf/ipsec.o CC [M] drivers/gpu/drm/xe/tests/xe_rtp_test.o CC drivers/usb/storage/usual-tables.o CC [M] net/bluetooth/lib.o CC [M] drivers/gpu/drm/vgem/vgem_drv.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_82598.o CC lib/percpu-refcount.o CC [M] drivers/gpu/drm/vgem/vgem_fence.o CC kernel/watchdog_perf.o CC [M] drivers/net/ethernet/intel/igc/igc_dump.o CC [M] drivers/gpu/drm/xe/xe_bb.o CC [M] net/bridge/br_netfilter_ipv6.o CC drivers/usb/host/xhci-mem.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_object.o CC drivers/cpufreq/acpi-cpufreq.o CC [M] drivers/net/ethernet/intel/igc/igc_tsn.o CC drivers/acpi/acpica/rscreate.o CC [M] drivers/gpu/drm/i915/i915_irq.o CC net/ipv6/ip6_icmp.o CC mm/page_counter.o AR drivers/usb/storage/built-in.a CC kernel/seccomp.o CC [M] drivers/gpu/drm/xe/tests/xe_wa_test.o AR drivers/cpuidle/governors/built-in.a CC lib/rhashtable.o CC drivers/cpuidle/cpuidle.o CC [M] drivers/gpu/drm/nouveau/nvif/object.o CC [M] drivers/net/ethernet/intel/igb/igb_ptp.o CC lib/base64.o CC drivers/cpuidle/driver.o CC mm/memcontrol.o CC net/ipv4/fib_frontend.o CC [M] fs/fuse/xattr.o CC [M] drivers/net/ethernet/intel/e1000e/param.o CC fs/btrfs/locking.o CC mm/vmpressure.o CC [M] drivers/md/persistent-data/dm-btree-remove.o CC [M] drivers/gpu/drm/nouveau/nvif/client.o CC [M] drivers/net/ethernet/intel/e1000e/ethtool.o CC [M] fs/overlayfs/util.o CC [M] fs/smb/client/readdir.o LD [M] drivers/gpu/drm/vgem/vgem.o CC [M] drivers/net/ethernet/intel/igb/igb_hwmon.o CC mm/swap_cgroup.o CC drivers/acpi/acpica/rsdumpinfo.o CC [M] drivers/gpu/drm/ast/ast_drv.o CC drivers/gpu/drm/drm_mipi_dsi.o CC arch/x86/kernel/paravirt.o CC [M] net/bluetooth/ecdh_helper.o CC [M] drivers/gpu/drm/ast/ast_i2c.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_gart.o CC drivers/cpufreq/intel_pstate.o CC [M] fs/smb/client/ioctl.o CC [M] drivers/md/persistent-data/dm-btree-spine.o CC drivers/cpuidle/governor.o LD [M] drivers/net/ethernet/intel/ixgbevf/ixgbevf.o CC [M] fs/fuse/acl.o CC drivers/acpi/acpica/rsinfo.o CC [M] fs/overlayfs/inode.o CC [M] drivers/net/ethernet/intel/igc/igc_xdp.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_phy.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.o CC net/ipv4/fib_semantics.o CC [M] drivers/gpu/drm/xe/xe_bo.o CC drivers/md/dm-target.o CC net/ipv6/output_core.o CC mm/hugetlb_cgroup.o CC [M] fs/overlayfs/file.o CC [M] drivers/gpu/drm/nouveau/nvif/conn.o CC [M] net/bluetooth/hci_request.o CC [M] drivers/gpu/drm/nouveau/nvif/device.o AR net/bridge/built-in.a CC net/sunrpc/svcsock.o LD [M] net/bridge/br_netfilter.o CC [M] drivers/gpu/drm/xe/xe_bo_evict.o CC [M] drivers/gpu/drm/nouveau/nvif/disp.o CC drivers/cpuidle/sysfs.o CC [M] fs/overlayfs/dir.o CC drivers/acpi/acpica/rsio.o CC [M] net/bluetooth/mgmt_util.o CC drivers/usb/gadget/functions.o CC arch/x86/kernel/pvclock.o AR drivers/net/ethernet/neterion/built-in.a CC [M] drivers/gpu/drm/ast/ast_main.o CC [M] fs/overlayfs/readdir.o CC [M] drivers/gpu/drm/nouveau/nvif/driver.o CC net/sunrpc/svcauth.o CC [M] net/bluetooth/mgmt_config.o LD [M] drivers/md/persistent-data/dm-persistent-data.o CC kernel/relay.o CC [M] fs/fuse/readdir.o CC net/ipv6/protocol.o CC lib/once.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_encoders.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_display.o CC [M] drivers/gpu/drm/i915/i915_mitigations.o CC [M] net/bluetooth/hci_codec.o CC drivers/acpi/acpica/rsirq.o CC [M] drivers/gpu/drm/nouveau/nvif/event.o LD [M] drivers/net/ethernet/intel/igb/igb.o CC fs/btrfs/orphan.o CC drivers/md/dm-linear.o LD [M] drivers/net/ethernet/intel/igc/igc.o CC drivers/cpuidle/poll_state.o CC [M] fs/fuse/ioctl.o CC drivers/usb/gadget/configfs.o CC [M] drivers/net/ethernet/intel/e100.o CC arch/x86/kernel/pcspeaker.o CC [M] drivers/net/ethernet/intel/e1000e/netdev.o CC [M] drivers/gpu/drm/i915/i915_module.o CC fs/btrfs/export.o CC arch/x86/kernel/check.o CC drivers/acpi/acpica/rslist.o CC lib/refcount.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.o CC drivers/md/dm-stripe.o CC kernel/utsname_sysctl.o CC [M] drivers/gpu/drm/xe/xe_debugfs.o CC drivers/usb/host/xhci-ext-caps.o CC drivers/cpuidle/cpuidle-haltpoll.o CC [M] drivers/net/ethernet/intel/e1000e/ptp.o AR drivers/net/ethernet/netronome/built-in.a CC net/ipv4/fib_trie.o CC drivers/acpi/acpica/rsmemory.o CC lib/rcuref.o CC [M] fs/smb/client/sess.o CC [M] drivers/gpu/drm/ast/ast_mm.o CC mm/kmemleak.o CC [M] drivers/gpu/drm/nouveau/nvif/fifo.o CC [M] drivers/gpu/drm/xe/xe_devcoredump.o AR drivers/net/ethernet/ni/built-in.a CC lib/usercopy.o CC [M] drivers/gpu/drm/ast/ast_mode.o CC mm/page_isolation.o CC [M] drivers/gpu/drm/nouveau/nvif/head.o CC [M] fs/overlayfs/copy_up.o CC net/ipv6/ip6_offload.o CC drivers/md/dm-ioctl.o CC [M] fs/smb/client/export.o CC net/ipv4/fib_notifier.o CC net/ipv4/inet_fragment.o CC arch/x86/kernel/uprobes.o CC mm/early_ioremap.o CC fs/open.o CC [M] drivers/gpu/drm/xe/xe_device.o CC [M] fs/smb/client/unc.o CC drivers/acpi/acpica/rsmisc.o CC kernel/delayacct.o CC [M] drivers/gpu/drm/nouveau/nvif/mem.o AR drivers/cpuidle/built-in.a AR drivers/cpufreq/built-in.a CC drivers/usb/gadget/u_f.o CC [M] drivers/gpu/drm/i915/i915_params.o CC net/ipv6/tcpv6_offload.o CC [M] net/bluetooth/eir.o LD [M] fs/fuse/fuse.o CC lib/errseq.o CC [M] net/bluetooth/hci_sync.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.o CC fs/btrfs/tree-log.o CC drivers/usb/host/xhci-ring.o CC lib/bucket_locks.o CC fs/btrfs/free-space-cache.o CC [M] fs/overlayfs/export.o CC kernel/taskstats.o CC [M] drivers/gpu/drm/xe/xe_device_sysfs.o AR drivers/net/ethernet/packetengines/built-in.a CC lib/generic-radix-tree.o CC fs/btrfs/zlib.o CC [M] drivers/gpu/drm/ast/ast_post.o CC [M] net/bluetooth/coredump.o CC net/sunrpc/svcauth_unix.o CC drivers/acpi/acpica/rsserial.o CC lib/string_helpers.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_gem.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_ring.o CC net/ipv4/ping.o CC fs/btrfs/lzo.o CC drivers/acpi/acpica/rsutils.o AR drivers/net/ethernet/realtek/built-in.a CC [M] drivers/net/ethernet/realtek/8139cp.o AR drivers/net/ethernet/renesas/built-in.a CC mm/cma.o AR drivers/usb/gadget/built-in.a CC [M] drivers/net/ethernet/realtek/8139too.o CC net/ipv4/ip_tunnel_core.o CC arch/x86/kernel/perf_regs.o CC arch/x86/kernel/tracepoint.o CC drivers/acpi/acpica/rsxface.o CC [M] drivers/gpu/drm/nouveau/nvif/mmu.o CC [M] drivers/gpu/drm/ast/ast_dp501.o CC mm/secretmem.o CC fs/btrfs/zstd.o CC net/ipv6/exthdrs_offload.o CC drivers/acpi/acpica/tbdata.o CC [M] fs/smb/client/winucase.o CC [M] drivers/gpu/drm/i915/i915_pci.o CC [M] fs/smb/client/smb2ops.o CC lib/hexdump.o CC [M] fs/overlayfs/params.o CC [M] drivers/gpu/drm/xe/xe_dma_buf.o CC [M] net/bluetooth/sco.o CC net/ipv4/gre_offload.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_x540.o CC [M] drivers/gpu/drm/i915/i915_scatterlist.o CC net/sunrpc/addr.o CC [M] drivers/gpu/drm/xe/xe_exec.o CC net/ipv6/inet6_hashtables.o CC [M] fs/smb/client/smb2maperror.o CC [M] fs/smb/client/smb2transport.o CC [M] drivers/net/ethernet/realtek/r8169_main.o CC net/ipv6/mcast_snoop.o CC arch/x86/kernel/itmt.o CC kernel/tsacct.o CC [M] drivers/gpu/drm/ast/ast_dp.o CC drivers/md/dm-io.o CC lib/kstrtox.o CC net/ipv4/metrics.o CC [M] drivers/gpu/drm/i915/i915_suspend.o CC drivers/acpi/acpica/tbfadt.o CC fs/read_write.o CC [M] drivers/gpu/drm/nouveau/nvif/outp.o CC drivers/acpi/acpica/tbfind.o CC net/sunrpc/rpcb_clnt.o CC net/sunrpc/timer.o CC fs/btrfs/compression.o CC drivers/mmc/core/core.o CC fs/btrfs/delayed-ref.o CC drivers/mmc/host/sdhci.o CC drivers/mmc/core/bus.o LD [M] fs/overlayfs/overlay.o CC fs/file_table.o CC lib/debug_info.o CC arch/x86/kernel/umip.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_cs.o CC drivers/mmc/core/host.o CC kernel/tracepoint.o CC drivers/acpi/acpica/tbinstal.o CC [M] drivers/gpu/drm/nouveau/nvif/timer.o CC [M] drivers/gpu/drm/i915/i915_switcheroo.o CC [M] net/ipv6/ip6_udp_tunnel.o CC [M] drivers/gpu/drm/xe/xe_execlist.o CC mm/userfaultfd.o CC lib/iomap.o CC fs/super.o CC fs/btrfs/relocation.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_x550.o CC lib/pci_iomap.o LD [M] drivers/gpu/drm/ast/ast.o CC [M] drivers/gpu/drm/i915/i915_sysfs.o CC [M] drivers/net/ethernet/realtek/r8169_firmware.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_lib.o AR drivers/ufs/built-in.a CC net/sunrpc/xdr.o CC drivers/mmc/host/sdhci-pci-core.o CC drivers/md/dm-kcopyd.o CC [M] drivers/net/ethernet/realtek/r8169_phy_config.o CC drivers/acpi/acpica/tbprint.o CC net/ipv4/netlink.o CC [M] drivers/gpu/drm/i915/i915_utils.o CC [M] fs/smb/client/smb2misc.o CC [M] fs/smb/client/smb2pdu.o CC [M] fs/smb/client/smb2inode.o CC mm/memremap.o CC arch/x86/kernel/unwind_orc.o CC drivers/mmc/host/sdhci-pci-o2micro.o CC fs/btrfs/delayed-inode.o CC kernel/latencytop.o CC [M] drivers/gpu/drm/i915/intel_clock_gating.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_bios.o CC drivers/acpi/bus.o CC arch/x86/kernel/callthunks.o CC drivers/mmc/core/mmc.o CC drivers/mmc/core/mmc_ops.o CC [M] drivers/gpu/drm/nouveau/nvif/vmm.o CC lib/iomap_copy.o CC drivers/acpi/acpica/tbutils.o CC [M] fs/smb/client/smb2file.o CC lib/devres.o CC [M] drivers/gpu/drm/xe/xe_exec_queue.o AR net/ipv6/built-in.a CC [M] drivers/gpu/drm/i915/intel_device_info.o CC [M] fs/smb/client/cifsacl.o CC kernel/irq_work.o CC kernel/static_call.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.o CC drivers/acpi/glue.o CC [M] net/bluetooth/iso.o CC [M] drivers/gpu/drm/drm_aperture.o CC drivers/usb/host/xhci-hub.o CC kernel/static_call_inline.o CC [M] drivers/gpu/drm/i915/intel_memory_region.o CC drivers/acpi/scan.o CC drivers/md/dm-sysfs.o CC [M] drivers/gpu/drm/drm_atomic.o CC drivers/acpi/acpica/tbxface.o CC net/ipv4/nexthop.o CC net/sunrpc/sunrpc_syms.o AR drivers/net/ethernet/sfc/built-in.a CC fs/btrfs/scrub.o AR drivers/net/ethernet/smsc/built-in.a CC [M] drivers/net/ethernet/smsc/smsc9420.o CC fs/char_dev.o CC arch/x86/kernel/mmconf-fam10h_64.o CC mm/hmm.o CC drivers/mmc/host/sdhci-pci-arasan.o CC drivers/acpi/resource.o CC [M] drivers/gpu/drm/nouveau/nvif/user.o CC lib/check_signature.o CC drivers/mmc/host/sdhci-pci-dwc-mshc.o CC lib/interval_tree.o CC fs/btrfs/backref.o CC drivers/mmc/host/sdhci-pci-gli.o CC mm/memfd.o CC net/ipv4/udp_tunnel_stub.o LD [M] drivers/net/ethernet/intel/e1000e/e1000e.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.o CC [M] drivers/gpu/drm/drm_atomic_uapi.o CC drivers/acpi/acpica/tbxfload.o CC mm/bootmem_info.o CC [M] drivers/gpu/drm/nouveau/nvif/userc361.o CC kernel/user-return-notifier.o CC fs/btrfs/ulist.o CC fs/btrfs/qgroup.o CC lib/assoc_array.o CC drivers/acpi/acpi_processor.o CC drivers/mmc/host/sdhci-acpi.o CC drivers/acpi/acpica/tbxfroot.o CC drivers/md/dm-stats.o CC arch/x86/kernel/vsmp_64.o LD [M] drivers/net/ethernet/realtek/r8169.o CC net/ipv4/sysctl_net_ipv4.o CC kernel/padata.o CC [M] drivers/gpu/drm/i915/intel_pcode.o CC [M] drivers/gpu/drm/amd/amdgpu/atombios_dp.o CC drivers/mmc/host/cqhci-core.o CC [M] drivers/mmc/host/sdhci-pltfm.o CC drivers/acpi/acpica/utaddress.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.o CC fs/btrfs/send.o CC drivers/mmc/core/sd.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_afmt.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_trace_points.o CC [M] drivers/gpu/drm/i915/intel_region_ttm.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/client.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.o CC drivers/acpi/acpica/utalloc.o CC [M] drivers/gpu/drm/xe/xe_force_wake.o CC [M] drivers/gpu/drm/drm_auth.o AR arch/x86/kernel/built-in.a AR arch/x86/built-in.a CC net/sunrpc/cache.o CC drivers/usb/host/xhci-dbg.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/engine.o AR mm/built-in.a CC fs/stat.o CC [M] drivers/gpu/drm/drm_blend.o CC [M] drivers/gpu/drm/i915/intel_runtime_pm.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.o CC net/ipv4/proc.o CC drivers/acpi/processor_core.o CC lib/list_debug.o CC lib/debugobjects.o CC [M] drivers/gpu/drm/drm_bridge.o CC drivers/acpi/acpica/utascii.o CC [M] drivers/gpu/drm/drm_cache.o CC fs/exec.o CC drivers/usb/host/xhci-trace.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/enum.o CC [M] net/bluetooth/a2mp.o CC [M] fs/smb/client/fs_context.o CC lib/bitrev.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.o CC drivers/acpi/acpica/utbuffer.o CC kernel/jump_label.o AR drivers/net/ethernet/socionext/built-in.a CC [M] net/bluetooth/amp.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_sysfs.o CC [M] fs/smb/client/dns_resolve.o CC [M] drivers/gpu/drm/i915/intel_sbi.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/event.o CC [M] drivers/gpu/drm/xe/xe_ggtt.o CC fs/btrfs/dev-replace.o CC [M] drivers/gpu/drm/amd/amdgpu/atombios_encoders.o CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.o ASN.1 fs/smb/client/cifs_spnego_negtokeninit.asn1.[ch] CC [M] drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.o CC drivers/usb/host/xhci-debugfs.o CC fs/btrfs/raid56.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_sa.o CC [M] net/bluetooth/hci_debugfs.o CC fs/pipe.o CC drivers/md/dm-rq.o CC drivers/md/dm-io-rewind.o CC drivers/acpi/processor_pdc.o CC [M] drivers/gpu/drm/amd/amdgpu/atombios_i2c.o CC drivers/usb/host/xhci-pci.o CC drivers/md/dm-builtin.o CC [M] drivers/gpu/drm/drm_client.o AR drivers/mmc/host/built-in.a CC net/ipv4/syncookies.o CC drivers/acpi/acpica/utcksum.o CC [M] drivers/gpu/drm/drm_client_modeset.o CC net/sunrpc/rpc_pipe.o CC drivers/mmc/core/sd_ops.o CC drivers/mmc/core/sdio.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/firmware.o CC lib/crc16.o CC [M] drivers/gpu/drm/drm_color_mgmt.o CC kernel/context_tracking.o CC [M] drivers/gpu/drm/i915/intel_step.o CC lib/crc-t10dif.o CC drivers/acpi/acpica/utcopy.o CC net/ipv4/esp4.o AR drivers/net/ethernet/vertexcom/built-in.a CC [M] drivers/gpu/drm/nouveau/nvkm/core/gpuobj.o HOSTCC lib/gen_crc32table CC lib/libcrc32c.o CC net/ipv4/esp4_offload.o CC [M] drivers/md/dm-bufio.o CC drivers/mmc/core/sdio_ops.o CC [M] drivers/gpu/drm/xe/xe_gt.o CC net/sunrpc/sysfs.o CC kernel/iomem.o CC fs/namei.o CC drivers/acpi/acpica/utexcep.o CC [M] fs/smb/client/smb1ops.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.o CC [M] fs/smb/client/cifssmb.o CC drivers/acpi/ec.o CC [M] drivers/gpu/drm/drm_connector.o CC net/sunrpc/svc_xprt.o CC [M] drivers/gpu/drm/xe/xe_gt_clock.o CC drivers/acpi/dock.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_vm.o CC drivers/mmc/core/sdio_bus.o CC net/sunrpc/xprtmultipath.o CC [M] drivers/gpu/drm/i915/intel_uncore.o CC net/ipv4/netfilter.o CC [M] drivers/gpu/drm/drm_crtc.o CC drivers/acpi/acpica/utdebug.o CC lib/xxhash.o CC kernel/rseq.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/intr.o AR drivers/net/ethernet/wangxun/built-in.a AR drivers/net/ethernet/xilinx/built-in.a AR drivers/net/ethernet/synopsys/built-in.a AR drivers/net/ethernet/pensando/built-in.a CC drivers/acpi/acpica/utdecode.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.o CC fs/fcntl.o CC net/ipv4/inet_diag.o CC net/sunrpc/stats.o CC [M] fs/smb/client/cifs_spnego_negtokeninit.asn1.o CC lib/genalloc.o CC net/ipv4/tcp_diag.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/ioctl.o CC [M] fs/smb/client/asn1.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/memory.o CC lib/percpu_counter.o CC drivers/acpi/acpica/utdelete.o GZIP kernel/config_data.gz LD [M] drivers/net/ethernet/intel/ixgbe/ixgbe.o CC fs/btrfs/uuid-tree.o CC net/ipv4/udp_diag.o CC drivers/acpi/acpica/uterror.o CC lib/fault-inject.o LD [M] net/bluetooth/bluetooth.o CC drivers/acpi/acpica/uteval.o AR drivers/usb/host/built-in.a AR drivers/net/ethernet/built-in.a AR drivers/usb/built-in.a CC [M] drivers/md/dm-bio-prison-v1.o CC fs/ioctl.o AR drivers/net/built-in.a CC [M] drivers/gpu/drm/xe/xe_gt_debugfs.o CC [M] drivers/gpu/drm/i915/intel_wakeref.o AR drivers/leds/trigger/built-in.a CC [M] drivers/leds/trigger/ledtrig-audio.o AR drivers/firmware/arm_ffa/built-in.a AR drivers/firmware/arm_scmi/built-in.a CC [M] drivers/gpu/drm/xe/xe_gt_idle_sysfs.o AR drivers/leds/blink/built-in.a AR drivers/firmware/broadcom/built-in.a CC drivers/acpi/acpica/utglobal.o AR drivers/firmware/cirrus/built-in.a AR drivers/firmware/meson/built-in.a CC drivers/mmc/core/sdio_cis.o AR drivers/firmware/imx/built-in.a CC drivers/acpi/acpica/uthex.o CC drivers/firmware/efi/efi-bgrt.o CC drivers/firmware/efi/libstub/efi-stub-helper.o CC [M] drivers/gpu/drm/xe/xe_gt_mcr.o CC [M] drivers/md/dm-bio-prison-v2.o CC net/ipv4/tcp_cubic.o CC drivers/clocksource/acpi_pm.o AR drivers/crypto/stm32/built-in.a CC net/ipv4/xfrm4_policy.o AR drivers/crypto/xilinx/built-in.a AR drivers/crypto/hisilicon/built-in.a CC drivers/hid/usbhid/hid-core.o AR drivers/crypto/intel/keembay/built-in.a AR drivers/crypto/intel/ixp4xx/built-in.a AR drivers/crypto/intel/built-in.a AR drivers/crypto/starfive/built-in.a AR drivers/crypto/built-in.a CC net/ipv4/xfrm4_state.o CC drivers/hid/usbhid/hiddev.o CC drivers/hid/hid-core.o CC drivers/acpi/acpica/utids.o CC lib/syscall.o CC kernel/configs.o AR drivers/leds/simple/built-in.a CC drivers/leds/led-core.o CC [M] drivers/gpu/drm/xe/xe_gt_pagefault.o CC lib/dynamic_debug.o CC [M] drivers/gpu/drm/i915/vlv_sideband.o CC net/sunrpc/sysctl.o CC drivers/leds/led-class.o CC [M] drivers/gpu/drm/drm_displayid.o CC drivers/clocksource/i8253.o CC drivers/acpi/pci_root.o CC [M] drivers/gpu/drm/drm_drv.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/mm.o CC [M] drivers/gpu/drm/xe/xe_gt_sysfs.o CC lib/errname.o CC fs/readdir.o CC net/ipv4/xfrm4_input.o CC drivers/firmware/efi/efi.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/object.o CC drivers/hid/hid-input.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/oproxy.o CC [M] drivers/gpu/drm/drm_dumb_buffers.o CC drivers/mmc/core/sdio_io.o CC drivers/acpi/acpica/utinit.o CC drivers/firmware/efi/libstub/gop.o CC drivers/firmware/efi/libstub/secureboot.o CC net/ipv4/xfrm4_output.o AR kernel/built-in.a CC drivers/hid/hid-quirks.o CC [M] drivers/gpu/drm/drm_edid.o CC [M] drivers/md/dm-crypt.o CC drivers/hid/hid-debug.o CC net/ipv4/xfrm4_protocol.o CC drivers/hid/hidraw.o CC drivers/acpi/acpica/utlock.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_ib.o AR drivers/clocksource/built-in.a CC drivers/firmware/efi/libstub/tpm.o CC drivers/firmware/efi/vars.o CC [M] drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/option.o CC [M] drivers/gpu/drm/xe/xe_gt_topology.o CC drivers/leds/led-triggers.o CC [M] drivers/md/dm-thin.o CC [M] drivers/md/dm-thin-metadata.o CC drivers/mmc/core/sdio_irq.o CC drivers/acpi/pci_link.o CC [M] net/ipv4/ip_tunnel.o CC drivers/acpi/acpica/utmath.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_pll.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/ramht.o CC [M] drivers/gpu/drm/drm_encoder.o LD [M] drivers/md/dm-bio-prison.o CC drivers/mmc/core/slot-gpio.o CC [M] drivers/gpu/drm/drm_file.o CC drivers/firmware/efi/libstub/file.o AR net/sunrpc/built-in.a CC [M] drivers/gpu/drm/drm_fourcc.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.o CC drivers/acpi/acpica/utmisc.o CC fs/btrfs/props.o CC drivers/acpi/acpica/utmutex.o CC drivers/firmware/efi/libstub/mem.o AR drivers/md/built-in.a CC drivers/firmware/efi/libstub/random.o CC drivers/acpi/pci_irq.o AR drivers/staging/media/built-in.a AR drivers/staging/built-in.a CC [M] net/ipv4/udp_tunnel_core.o CC [M] net/ipv4/udp_tunnel_nic.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/subdev.o CC drivers/acpi/acpi_lpss.o CC drivers/acpi/acpi_apd.o CC [M] drivers/gpu/drm/i915/vlv_suspend.o CC [M] drivers/gpu/drm/nouveau/nvkm/core/uevent.o CC drivers/mmc/core/regulator.o AR drivers/platform/x86/amd/built-in.a AR drivers/platform/surface/built-in.a CC drivers/platform/x86/intel/pmc/core.o AR drivers/hid/usbhid/built-in.a CC drivers/platform/x86/intel/turbo_max_3.o CC [M] drivers/platform/x86/intel/pmt/class.o CC drivers/hid/hid-generic.o AR drivers/leds/built-in.a CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.o CC drivers/firmware/efi/reboot.o AR drivers/firmware/psci/built-in.a CC drivers/hid/hid-a4tech.o CC [M] drivers/gpu/drm/nouveau/nvkm/nvfw/fw.o HOSTCC drivers/gpu/drm/xe/xe_gen_wa_oob CC [M] drivers/platform/x86/intel/vsec.o CC [M] drivers/gpu/drm/drm_framebuffer.o CC [M] drivers/platform/x86/intel/pmt/telemetry.o CC drivers/mmc/core/debugfs.o CC drivers/acpi/acpica/utnonansi.o CC drivers/mmc/core/block.o CC lib/nlattr.o AR drivers/firmware/smccc/built-in.a CC drivers/hid/hid-apple.o CC [M] drivers/gpu/drm/xe/xe_guc_ads.o AR drivers/firmware/tegra/built-in.a CC [M] drivers/gpu/drm/xe/xe_guc_ct.o CC drivers/mmc/core/queue.o AR drivers/firmware/xilinx/built-in.a CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.o CC drivers/hid/hid-belkin.o CC [M] drivers/platform/x86/intel/pmt/crashlog.o CC drivers/acpi/acpica/utobject.o CC [M] drivers/gpu/drm/xe/xe_guc_debugfs.o CC drivers/firmware/dmi_scan.o CC drivers/firmware/efi/libstub/randomalloc.o CC drivers/firmware/dmi-sysfs.o CC drivers/platform/x86/intel/pmc/core_ssram.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_sync.o CC drivers/acpi/acpi_platform.o CC [M] drivers/gpu/drm/drm_gem.o CC drivers/platform/x86/intel/pmc/spt.o CC [M] drivers/gpu/drm/i915/soc/intel_dram.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.o CC fs/select.o CC drivers/firmware/dmi-id.o CC [M] drivers/gpu/drm/nouveau/nvkm/nvfw/hs.o CC drivers/platform/x86/intel/pmc/cnp.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_preempt_mgr.o CC [M] drivers/gpu/drm/i915/soc/intel_gmch.o CC drivers/hid/hid-cherry.o CC [M] drivers/platform/x86/intel/rst.o CC fs/dcache.o CC drivers/acpi/acpica/utosi.o CC lib/checksum.o CC fs/btrfs/free-space-tree.o CC drivers/firmware/efi/memattr.o CC drivers/acpi/acpi_pnp.o CC drivers/platform/x86/intel/pmc/icl.o LD [M] drivers/platform/x86/intel/pmt/pmt_class.o LD [M] drivers/platform/x86/intel/pmt/pmt_telemetry.o CC drivers/hid/hid-chicony.o LD [M] drivers/platform/x86/intel/pmt/pmt_crashlog.o CC drivers/hid/hid-cypress.o CC drivers/platform/x86/p2sb.o CC drivers/firmware/efi/libstub/pci.o CC lib/cpu_rmap.o CC [M] drivers/gpu/drm/xe/xe_guc_hwconfig.o CC [M] drivers/gpu/drm/i915/soc/intel_pch.o CC drivers/platform/x86/pmc_atom.o CC drivers/acpi/acpica/utownerid.o CC lib/dynamic_queue_limits.o CC [M] drivers/platform/x86/wmi.o CC drivers/acpi/power.o LD [M] drivers/platform/x86/intel/intel_vsec.o AR net/ipv4/built-in.a CC drivers/acpi/acpica/utpredef.o CC drivers/acpi/event.o CC [M] drivers/gpu/drm/xe/xe_guc_log.o CC fs/inode.o LD [M] fs/smb/client/cifs.o CC drivers/platform/x86/intel/pmc/tgl.o CC [M] drivers/gpu/drm/nouveau/nvkm/nvfw/ls.o CC [M] drivers/gpu/drm/drm_ioctl.o CC drivers/firmware/memmap.o CC drivers/mailbox/mailbox.o CC drivers/mailbox/pcc.o CC drivers/devfreq/devfreq.o CC drivers/powercap/powercap_sys.o AR drivers/perf/built-in.a LD [M] net/ipv4/udp_tunnel.o CC drivers/platform/x86/intel/pmc/adl.o CC [M] drivers/gpu/drm/nouveau/nvkm/nvfw/acr.o CC drivers/platform/x86/intel/pmc/mtl.o CC fs/attr.o CC [M] drivers/gpu/drm/nouveau/nvkm/nvfw/flcn.o CC drivers/acpi/acpica/utresdecode.o CC lib/glob.o CC lib/strncpy_from_user.o CC drivers/acpi/evged.o CC lib/strnlen_user.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.o CC [M] drivers/gpu/drm/drm_lease.o CC [M] drivers/devfreq/governor_simpleondemand.o CC lib/net_utils.o CC drivers/firmware/efi/tpm.o CC fs/bad_inode.o LD [M] drivers/md/dm-thin-pool.o CC drivers/powercap/intel_rapl_common.o AR net/built-in.a CC [M] drivers/gpu/drm/drm_managed.o CC drivers/firmware/efi/libstub/skip_spaces.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_virt.o CC [M] drivers/gpu/drm/drm_mm.o CC drivers/hid/hid-ezkey.o CC drivers/firmware/efi/libstub/lib-cmdline.o CC lib/sg_pool.o CC drivers/firmware/efi/memmap.o CC fs/file.o CC drivers/ras/ras.o CC [M] drivers/platform/x86/wmi-bmof.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.o CC drivers/ras/debugfs.o CC drivers/firmware/efi/libstub/lib-ctype.o AR drivers/hwtracing/intel_th/built-in.a CC [M] drivers/gpu/drm/i915/i915_memcpy.o CC drivers/firmware/efi/libstub/alignedmem.o CC drivers/acpi/acpica/utresrc.o CC [M] drivers/devfreq/governor_performance.o CC drivers/platform/x86/intel/pmc/pltdrv.o CC [M] drivers/platform/x86/mxm-wmi.o CC drivers/firmware/efi/libstub/relocate.o CC drivers/firmware/efi/libstub/printk.o CC [M] drivers/gpu/drm/xe/xe_guc_pc.o AR drivers/mailbox/built-in.a CC [M] drivers/gpu/drm/i915/i915_mm.o CC drivers/powercap/intel_rapl_msr.o CC drivers/acpi/acpica/utstate.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_vf_error.o CC drivers/acpi/sysfs.o AR drivers/mmc/core/built-in.a AR drivers/mmc/built-in.a CC drivers/android/binderfs.o CC drivers/acpi/acpica/utstring.o CC drivers/firmware/efi/libstub/vsprintf.o CC drivers/android/binder.o LD [M] drivers/platform/x86/intel/intel-rst.o CC [M] drivers/gpu/drm/drm_mode_config.o CC fs/filesystems.o CC drivers/android/binder_alloc.o CC [M] drivers/gpu/drm/drm_mode_object.o CC [M] drivers/gpu/drm/nouveau/nvkm/falcon/base.o CC drivers/acpi/property.o CC [M] drivers/gpu/drm/xe/xe_guc_submit.o CC drivers/acpi/acpica/utstrsuppt.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_sched.o CC lib/stackdepot.o AR drivers/nvmem/layouts/built-in.a CC drivers/nvmem/core.o CC [M] drivers/mtd/chips/chipreg.o CC fs/namespace.o CC fs/seq_file.o CC [M] drivers/uio/uio.o CC drivers/firmware/efi/libstub/x86-stub.o STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o CC drivers/firmware/efi/esrt.o CC drivers/acpi/acpica/utstrtoul64.o CC [M] drivers/gpu/drm/drm_modes.o CC drivers/hid/hid-kensington.o AR drivers/platform/x86/intel/pmc/built-in.a STUBCPY drivers/firmware/efi/libstub/file.stub.o AR drivers/platform/x86/intel/built-in.a CC drivers/acpi/acpica/utxface.o CC [M] drivers/platform/x86/intel_ips.o CC drivers/firmware/efi/efi-pstore.o CC fs/xattr.o CC drivers/hid/hid-lg.o CC [M] drivers/gpu/drm/drm_modeset_lock.o CC [M] drivers/gpu/drm/xe/xe_hw_engine.o CC drivers/acpi/acpi_cmos_rtc.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.o CC [M] drivers/gpu/drm/nouveau/nvkm/falcon/cmdq.o CC fs/btrfs/tree-checker.o CC drivers/acpi/acpica/utxfinit.o CC [M] drivers/gpu/drm/i915/i915_sw_fence.o CC lib/ucs2_string.o AR drivers/ras/built-in.a CC [M] drivers/vfio/pci/vfio_pci_core.o CC drivers/acpi/acpica/utxferror.o CC [M] drivers/vfio/pci/vfio_pci_intrs.o AR drivers/powercap/built-in.a CC [M] drivers/vfio/pci/vfio_pci_rdwr.o CC [M] drivers/vfio/vfio_main.o CC [M] drivers/mtd/mtdcore.o CC [M] drivers/vfio/pci/vfio_pci_config.o AR drivers/devfreq/built-in.a CC [M] drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_ids.o CC fs/libfs.o CC [M] drivers/mtd/mtdsuper.o CC [M] drivers/bluetooth/btusb.o CC [M] drivers/pps/pps.o CC [M] drivers/bluetooth/btintel.o CC lib/sbitmap.o CC [M] drivers/bluetooth/btbcm.o CC [M] drivers/gpu/drm/i915/i915_sw_fence_work.o CC [M] drivers/gpu/drm/drm_plane.o CC [M] drivers/dca/dca-core.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.o CC [M] drivers/gpu/drm/drm_prime.o CC [M] drivers/bluetooth/btrtl.o CC [M] drivers/ssb/main.o CC [M] drivers/dca/dca-sysfs.o CC [M] drivers/vhost/net.o CC [M] drivers/pps/kapi.o CC [M] drivers/ssb/scan.o CC [M] drivers/vhost/vhost.o STUBCPY drivers/firmware/efi/libstub/gop.stub.o STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o STUBCPY drivers/firmware/efi/libstub/mem.stub.o STUBCPY drivers/firmware/efi/libstub/pci.stub.o STUBCPY drivers/firmware/efi/libstub/printk.stub.o CC [M] drivers/gpu/drm/drm_print.o STUBCPY drivers/firmware/efi/libstub/random.stub.o STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o CC drivers/acpi/acpica/utxfmutex.o STUBCPY drivers/firmware/efi/libstub/relocate.stub.o STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o CC drivers/firmware/efi/cper.o CC [M] drivers/pps/sysfs.o STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o STUBCPY drivers/firmware/efi/libstub/tpm.stub.o STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o AR drivers/firmware/efi/libstub/lib.a CC lib/group_cpus.o CC fs/fs-writeback.o CC [M] drivers/gpu/drm/i915/i915_syncmap.o AR drivers/nvmem/built-in.a CC drivers/hid/hid-lg-g15.o AR drivers/platform/x86/built-in.a AR drivers/platform/built-in.a CC [M] drivers/gpu/drm/nouveau/nvkm/falcon/fw.o CC [M] drivers/gpu/drm/nouveau/nvkm/falcon/msgq.o CC drivers/acpi/x86/apple.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.o CC [M] drivers/mtd/mtdconcat.o CC [M] drivers/vfio/pci/vfio_pci.o CC [M] lib/asn1_decoder.o CC drivers/hid/hid-microsoft.o CC drivers/firmware/efi/cper_cxl.o AR drivers/acpi/acpica/built-in.a CC [M] drivers/gpu/drm/drm_property.o CC drivers/hid/hid-monterey.o CC drivers/firmware/efi/runtime-wrappers.o CC drivers/acpi/x86/utils.o LD [M] drivers/pps/pps_core.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.o CC [M] drivers/gpu/drm/xe/xe_hw_fence.o CC [M] drivers/gpu/drm/drm_syncobj.o LD [M] drivers/dca/dca.o GEN lib/oid_registry_data.c CC [M] drivers/gpu/drm/drm_sysfs.o CC drivers/firmware/efi/dev-path-parser.o CC [M] drivers/gpu/drm/nouveau/nvkm/falcon/qmgr.o CC fs/pnode.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.o CC [M] drivers/gpu/drm/nouveau/nvkm/falcon/v1.o CC [M] drivers/mtd/mtdpart.o CC fs/btrfs/space-info.o CC [M] drivers/vfio/group.o CC drivers/acpi/x86/s2idle.o CC fs/splice.o CC fs/sync.o CC drivers/acpi/debugfs.o CC [M] lib/oid_registry.o CC [M] drivers/gpu/drm/nouveau/nvkm/falcon/gm200.o CC [M] drivers/gpu/drm/drm_trace_points.o CC drivers/firmware/efi/apple-properties.o CC [M] drivers/ssb/sprom.o CC [M] drivers/vfio/iova_bitmap.o CC fs/btrfs/block-rsv.o CC [M] drivers/vhost/iotlb.o AR lib/lib.a GEN lib/crc32table.h CC lib/crc32.o CC [M] drivers/ssb/pci.o CC drivers/acpi/acpi_lpat.o LD [M] drivers/vfio/pci/vfio-pci.o CC [M] drivers/vfio/container.o CC fs/btrfs/delalloc-space.o CC [M] drivers/ssb/pcihost_wrapper.o CC [M] drivers/gpu/drm/i915/i915_user_extensions.o LD [M] drivers/vfio/pci/vfio-pci-core.o CC [M] drivers/gpu/drm/xe/xe_huc.o CC [M] drivers/gpu/drm/xe/xe_huc_debugfs.o CC [M] drivers/ssb/driver_chipcommon.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_csa.o CC fs/btrfs/block-group.o CC drivers/firmware/efi/earlycon.o CC [M] drivers/mtd/mtdchar.o AR drivers/hid/built-in.a CC [M] drivers/gpu/drm/drm_vblank.o CC [M] drivers/gpu/drm/drm_vblank_work.o CC [M] drivers/gpu/drm/drm_vma_manager.o CC [M] drivers/ssb/driver_chipcommon_pmu.o CC [M] drivers/vfio/virqfd.o CC drivers/firmware/efi/cper-x86.o CC fs/utimes.o CC [M] drivers/gpu/drm/nouveau/nvkm/falcon/gp102.o CC fs/btrfs/discard.o CC [M] drivers/gpu/drm/xe/xe_irq.o CC [M] drivers/ssb/driver_pcicore.o CC [M] drivers/gpu/drm/i915/i915_ioc32.o CC [M] drivers/gpu/drm/xe/xe_lrc.o CC [M] drivers/gpu/drm/i915/i915_debugfs.o CC [M] drivers/vfio/vfio_iommu_type1.o CC [M] drivers/gpu/drm/i915/i915_debugfs_params.o CC fs/d_path.o CC drivers/acpi/acpi_lpit.o LD [M] drivers/vhost/vhost_net.o CC fs/btrfs/reflink.o LD [M] drivers/vhost/vhost_iotlb.o CC [M] drivers/gpu/drm/i915/display/intel_display_debugfs.o AR lib/built-in.a CC [M] drivers/gpu/drm/i915/display/intel_pipe_crc.o CC fs/stack.o CC drivers/acpi/prmt.o CC drivers/acpi/acpi_pcc.o CC [M] drivers/gpu/drm/drm_gpuva_mgr.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_ras.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.o GEN xe_wa_oob.c xe_wa_oob.h CC [M] drivers/gpu/drm/i915/i915_pmu.o GEN xe_wa_oob.c xe_wa_oob.h CC [M] drivers/gpu/drm/xe/xe_mmio.o CC [M] drivers/gpu/drm/xe/xe_mocs.o CC fs/btrfs/subpage.o CC [M] drivers/gpu/drm/xe/xe_module.o CC [M] drivers/gpu/drm/nouveau/nvkm/falcon/ga100.o CC drivers/acpi/ac.o CC fs/fs_struct.o CC [M] drivers/gpu/drm/i915/gt/gen2_engine_cs.o CC fs/btrfs/tree-mod-log.o AR drivers/firmware/efi/built-in.a CC [M] drivers/gpu/drm/drm_writeback.o AR drivers/firmware/built-in.a CC [M] drivers/gpu/drm/nouveau/nvkm/falcon/ga102.o CC drivers/acpi/button.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.o CC fs/statfs.o CC drivers/acpi/fan_core.o CC [M] drivers/gpu/drm/i915/gt/gen6_engine_cs.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/acr/base.o CC fs/fs_pin.o CC drivers/acpi/fan_attr.o LD [M] drivers/vfio/vfio.o CC drivers/acpi/processor_driver.o CC fs/nsfs.o CC fs/btrfs/extent-io-tree.o LD [M] drivers/ssb/ssb.o LD [M] drivers/mtd/mtd.o CC fs/btrfs/fs.o CC fs/btrfs/messages.o CC [M] drivers/gpu/drm/i915/gt/gen6_ppgtt.o CC fs/btrfs/bio.o CC fs/btrfs/lru_cache.o CC drivers/acpi/processor_thermal.o CC [M] drivers/gpu/drm/xe/xe_pat.o CC [M] drivers/gpu/drm/lib/drm_random.o CC drivers/acpi/processor_idle.o CC fs/fs_types.o CC fs/fs_context.o CC [M] drivers/gpu/drm/i915/gt/gen7_renderclear.o CC [M] drivers/gpu/drm/i915/gt/gen8_engine_cs.o CC [M] drivers/gpu/drm/drm_ioc32.o CC fs/btrfs/acl.o CC [M] drivers/gpu/drm/drm_panel.o CC [M] drivers/gpu/drm/drm_pci.o CC [M] drivers/gpu/drm/drm_debugfs.o CC [M] drivers/gpu/drm/xe/xe_pci.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.o CC [M] drivers/gpu/drm/i915/gt/gen8_ppgtt.o CC [M] drivers/gpu/drm/drm_debugfs_crc.o CC drivers/acpi/processor_throttling.o CC drivers/acpi/processor_perflib.o CC fs/fs_parser.o CC [M] drivers/gpu/drm/i915/gt/intel_breadcrumbs.o CC [M] drivers/gpu/drm/xe/xe_pcode.o CC [M] drivers/gpu/drm/drm_edid_load.o CC drivers/acpi/container.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.o CC fs/fsopen.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.o CC fs/init.o CC fs/kernel_read_file.o CC fs/mnt_idmapping.o CC fs/remap_range.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/acr/gm200.o CC [M] drivers/gpu/drm/i915/gt/intel_context.o CC [M] drivers/gpu/drm/i915/gt/intel_context_sseu.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/acr/gm20b.o CC [M] drivers/gpu/drm/xe/xe_pm.o CC [M] drivers/gpu/drm/drm_panel_orientation_quirks.o CC [M] drivers/gpu/drm/i915/gt/intel_engine_cs.o CC [M] drivers/gpu/drm/drm_exec.o CC drivers/acpi/thermal.o CC [M] drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o CC [M] drivers/gpu/drm/i915/gt/intel_engine_pm.o CC [M] drivers/gpu/drm/drm_buddy.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/acr/gp102.o AR drivers/android/built-in.a CC [M] drivers/gpu/drm/i915/gt/intel_engine_user.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_umc.o CC fs/buffer.o CC [M] drivers/gpu/drm/i915/gt/intel_execlists_submission.o CC [M] drivers/gpu/drm/drm_gem_shmem_helper.o CC [M] drivers/gpu/drm/drm_suballoc.o CC [M] drivers/gpu/drm/drm_gem_ttm_helper.o CC [M] drivers/gpu/drm/xe/xe_preempt_fence.o CC fs/mpage.o CC fs/proc_namespace.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/acr/gp108.o CC [M] drivers/gpu/drm/i915/gt/intel_ggtt.o CC fs/direct-io.o CC [M] drivers/gpu/drm/amd/amdgpu/smu_v11_0_i2c.o CC fs/eventpoll.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/acr/gv100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/acr/gp10b.o CC drivers/acpi/acpi_memhotplug.o CC drivers/acpi/ioapic.o CC [M] drivers/gpu/drm/drm_atomic_helper.o CC drivers/acpi/battery.o CC fs/anon_inodes.o CC [M] drivers/gpu/drm/xe/xe_pt.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.o CC [M] drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_rap.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_fw_attestation.o CC [M] drivers/gpu/drm/drm_atomic_state_helper.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_securedisplay.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_eeprom.o CC fs/signalfd.o CC drivers/acpi/hed.o CC [M] drivers/gpu/drm/drm_bridge_connector.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/acr/tu102.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_mca.o CC drivers/acpi/bgrt.o CC [M] drivers/gpu/drm/i915/gt/intel_gt.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o CC [M] drivers/gpu/drm/xe/xe_pt_walk.o CC [M] drivers/gpu/drm/drm_crtc_helper.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o CC [M] drivers/gpu/drm/drm_damage_helper.o CC fs/timerfd.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/acr/ga100.o AR fs/btrfs/built-in.a CC fs/eventfd.o CC fs/userfaultfd.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_debugfs.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/acr/ga102.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.o CC [M] drivers/gpu/drm/drm_encoder_slave.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bar/base.o CC fs/aio.o CC drivers/acpi/cppc_acpi.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_lsdma.o CC [M] drivers/gpu/drm/drm_flip_work.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_irq.o CC drivers/acpi/spcr.o CC fs/locks.o CC [M] drivers/gpu/drm/drm_format_helper.o CC [M] drivers/gpu/drm/drm_gem_atomic_helper.o CC [M] drivers/gpu/drm/xe/xe_query.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bar/g84.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_mcr.o CC drivers/acpi/acpi_pad.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_ring_mux.o CC [M] drivers/gpu/drm/drm_gem_framebuffer_helper.o CC [M] drivers/acpi/acpi_video.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.o CC [M] drivers/gpu/drm/xe/xe_range_fence.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_pm.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bar/gk20a.o CC [M] drivers/gpu/drm/drm_kms_helper_common.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o CC fs/binfmt_script.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bar/gm107.o CC fs/binfmt_elf.o CC [M] drivers/gpu/drm/drm_modeset_helper.o CC [M] drivers/gpu/drm/drm_plane_helper.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bar/gm20b.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_requests.o CC [M] drivers/gpu/drm/drm_probe_helper.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_sysfs.o CC [M] drivers/acpi/video_detect.o CC fs/compat_binfmt_elf.o CC [M] drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o CC [M] drivers/gpu/drm/xe/xe_reg_sr.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bar/tu102.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.o CC [M] drivers/gpu/drm/amd/amdgpu/cik.o CC [M] drivers/gpu/drm/amd/amdgpu/cik_ih.o CC [M] drivers/gpu/drm/xe/xe_reg_whitelist.o CC [M] drivers/gpu/drm/i915/gt/intel_gtt.o CC [M] drivers/gpu/drm/drm_rect.o CC fs/mbcache.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/base.o CC [M] drivers/gpu/drm/xe/xe_rtp.o CC [M] drivers/gpu/drm/drm_self_refresh_helper.o CC fs/posix_acl.o CC [M] drivers/gpu/drm/drm_simple_kms_helper.o CC [M] drivers/gpu/drm/i915/gt/intel_llc.o CC [M] drivers/gpu/drm/amd/amdgpu/dce_v8_0.o AR drivers/acpi/built-in.a CC [M] drivers/gpu/drm/bridge/panel.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/bit.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/conn.o CC [M] drivers/gpu/drm/xe/xe_ring_ops.o CC [M] drivers/gpu/drm/i915/gt/intel_lrc.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/cstep.o CC [M] drivers/gpu/drm/drm_fbdev_generic.o CC [M] drivers/gpu/drm/drm_fb_helper.o LD [M] drivers/gpu/drm/drm.o CC [M] drivers/gpu/drm/amd/amdgpu/gfx_v7_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/dcb.o CC [M] drivers/gpu/drm/amd/amdgpu/cik_sdma.o CC fs/coredump.o LD [M] drivers/gpu/drm/drm_shmem_helper.o CC [M] drivers/gpu/drm/amd/amdgpu/uvd_v4_2.o CC [M] drivers/gpu/drm/i915/gt/intel_migrate.o LD [M] drivers/gpu/drm/drm_suballoc_helper.o LD [M] drivers/gpu/drm/drm_ttm_helper.o CC [M] drivers/gpu/drm/xe/xe_sa.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/disp.o AR drivers/gpu/drm/built-in.a CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/dp.o CC fs/drop_caches.o CC [M] drivers/gpu/drm/i915/gt/intel_mocs.o CC [M] drivers/gpu/drm/xe/xe_sched_job.o CC [M] drivers/gpu/drm/i915/gt/intel_ppgtt.o CC fs/sysctls.o CC fs/fhandle.o CC [M] drivers/gpu/drm/i915/gt/intel_rc6.o CC [M] drivers/gpu/drm/i915/gt/intel_region_lmem.o CC [M] drivers/gpu/drm/i915/gt/intel_renderstate.o LD [M] drivers/acpi/video.o CC [M] drivers/gpu/drm/i915/gt/intel_reset.o CC [M] drivers/gpu/drm/i915/gt/intel_ring.o CC [M] drivers/gpu/drm/i915/gt/intel_ring_submission.o CC [M] drivers/gpu/drm/i915/gt/intel_rps.o CC [M] drivers/gpu/drm/amd/amdgpu/vce_v2_0.o CC [M] drivers/gpu/drm/i915/gt/intel_sa_media.o CC [M] drivers/gpu/drm/amd/amdgpu/si.o CC [M] drivers/gpu/drm/i915/gt/intel_sseu.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/extdev.o CC [M] drivers/gpu/drm/xe/xe_step.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/fan.o CC [M] drivers/gpu/drm/amd/amdgpu/gmc_v6_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/gpio.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/i2c.o CC [M] drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o CC [M] drivers/gpu/drm/i915/gt/intel_timeline.o CC [M] drivers/gpu/drm/i915/gt/intel_tlb.o CC [M] drivers/gpu/drm/i915/gt/intel_wopcm.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/iccsense.o CC [M] drivers/gpu/drm/xe/xe_sync.o CC [M] drivers/gpu/drm/xe/xe_tile.o CC [M] drivers/gpu/drm/xe/xe_tile_sysfs.o CC [M] drivers/gpu/drm/xe/xe_trace.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/image.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.o CC [M] drivers/gpu/drm/xe/xe_ttm_sys_mgr.o CC [M] drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o CC [M] drivers/gpu/drm/amd/amdgpu/gfx_v6_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/mxm.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/npde.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/pcir.o CC [M] drivers/gpu/drm/i915/gt/intel_workarounds.o CC [M] drivers/gpu/drm/i915/gt/shmem_utils.o CC [M] drivers/gpu/drm/xe/xe_ttm_vram_mgr.o CC [M] drivers/gpu/drm/xe/xe_tuning.o CC [M] drivers/gpu/drm/amd/amdgpu/si_ih.o CC [M] drivers/gpu/drm/xe/xe_uc.o CC [M] drivers/gpu/drm/amd/amdgpu/si_dma.o CC [M] drivers/gpu/drm/i915/gt/sysfs_engines.o CC [M] drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o CC [M] drivers/gpu/drm/i915/gt/gen6_renderstate.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/perf.o CC [M] drivers/gpu/drm/amd/amdgpu/dce_v6_0.o LD [M] drivers/gpu/drm/drm_kms_helper.o CC [M] drivers/gpu/drm/xe/xe_uc_debugfs.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/pmu.o CC [M] drivers/gpu/drm/xe/xe_uc_fw.o CC [M] drivers/gpu/drm/xe/xe_vm.o AR fs/built-in.a CC [M] drivers/gpu/drm/i915/gt/gen7_renderstate.o CC [M] drivers/gpu/drm/i915/gt/gen8_renderstate.o CC [M] drivers/gpu/drm/i915/gt/gen9_renderstate.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_busy.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/power_budget.o CC [M] drivers/gpu/drm/amd/amdgpu/uvd_v3_1.o CC [M] drivers/gpu/drm/xe/xe_vm_madvise.o CC [M] drivers/gpu/drm/xe/xe_wait_user_fence.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_clflush.o CC [M] drivers/gpu/drm/amd/amdgpu/vi.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_context.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/ramcfg.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/rammap.o CC [M] drivers/gpu/drm/amd/amdgpu/mxgpu_vi.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.o CC [M] drivers/gpu/drm/xe/xe_wa.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_create.o CC [M] drivers/gpu/drm/xe/xe_wopcm.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o CC [M] drivers/gpu/drm/amd/amdgpu/nbio_v6_1.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_domain.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o CC [M] drivers/gpu/drm/xe/xe_display.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_internal.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_object.o CC [M] drivers/gpu/drm/xe/display/xe_fb_pin.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_lmem.o CC [M] drivers/gpu/drm/xe/display/xe_hdcp_gsc.o CC [M] drivers/gpu/drm/amd/amdgpu/soc15.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_mman.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_pages.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowof.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowpci.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_phys.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowramin.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_pm.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowrom.o CC [M] drivers/gpu/drm/xe/display/xe_plane_initial.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/timing.o CC [M] drivers/gpu/drm/xe/display/xe_display_rps.o CC [M] drivers/gpu/drm/xe/display/ext/i915_irq.o CC [M] drivers/gpu/drm/xe/display/ext/i915_utils.o CC [M] drivers/gpu/drm/xe/display/ext/intel_clock_gating.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_region.o CC [M] drivers/gpu/drm/amd/amdgpu/emu_soc.o CC [M] drivers/gpu/drm/xe/i915-soc/intel_dram.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/therm.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/vmap.o CC [M] drivers/gpu/drm/xe/i915-soc/intel_pch.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_shmem.o CC [M] drivers/gpu/drm/amd/amdgpu/mxgpu_ai.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_shrinker.o CC [M] drivers/gpu/drm/amd/amdgpu/nbio_v7_0.o CC [M] drivers/gpu/drm/amd/amdgpu/vega10_reg_init.o CC [M] drivers/gpu/drm/xe/i915-display/icl_dsi.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_stolen.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/volt.o CC [M] drivers/gpu/drm/xe/i915-display/intel_atomic.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_throttle.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/vpstate.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/xpio.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_tiling.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/M0203.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_ttm.o CC [M] drivers/gpu/drm/amd/amdgpu/vega20_reg_init.o CC [M] drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o CC [M] drivers/gpu/drm/xe/i915-display/intel_audio.o CC [M] drivers/gpu/drm/amd/amdgpu/nbio_v7_4.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/M0205.o CC [M] drivers/gpu/drm/amd/amdgpu/nbio_v2_3.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/M0209.o CC [M] drivers/gpu/drm/xe/i915-display/intel_backlight.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bios/P0260.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bus/base.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bus/hwsq.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_userptr.o CC [M] drivers/gpu/drm/xe/i915-display/intel_bios.o CC [M] drivers/gpu/drm/amd/amdgpu/nv.o CC [M] drivers/gpu/drm/i915/gem/i915_gem_wait.o CC [M] drivers/gpu/drm/amd/amdgpu/arct_reg_init.o CC [M] drivers/gpu/drm/xe/i915-display/intel_bw.o CC [M] drivers/gpu/drm/xe/i915-display/intel_cdclk.o CC [M] drivers/gpu/drm/xe/i915-display/intel_color.o CC [M] drivers/gpu/drm/i915/gem/i915_gemfs.o CC [M] drivers/gpu/drm/i915/i915_active.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv04.o CC [M] drivers/gpu/drm/amd/amdgpu/mxgpu_nv.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv31.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv50.o CC [M] drivers/gpu/drm/amd/amdgpu/nbio_v7_2.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bus/g94.o CC [M] drivers/gpu/drm/xe/i915-display/intel_combo_phy.o CC [M] drivers/gpu/drm/i915/i915_cmd_parser.o CC [M] drivers/gpu/drm/i915/i915_deps.o CC [M] drivers/gpu/drm/i915/i915_gem_evict.o CC [M] drivers/gpu/drm/amd/amdgpu/hdp_v4_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/bus/gf100.o CC [M] drivers/gpu/drm/i915/i915_gem_gtt.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv04.o CC [M] drivers/gpu/drm/amd/amdgpu/hdp_v5_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv40.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv50.o CC [M] drivers/gpu/drm/amd/amdgpu/aldebaran_reg_init.o CC [M] drivers/gpu/drm/i915/i915_gem_ww.o CC [M] drivers/gpu/drm/i915/i915_gem.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/g84.o CC [M] drivers/gpu/drm/i915/i915_query.o CC [M] drivers/gpu/drm/amd/amdgpu/aldebaran.o CC [M] drivers/gpu/drm/i915/i915_request.o CC [M] drivers/gpu/drm/i915/i915_scheduler.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.o CC [M] drivers/gpu/drm/amd/amdgpu/soc21.o CC [M] drivers/gpu/drm/i915/i915_trace_points.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/mcp77.o CC [M] drivers/gpu/drm/i915/i915_ttm_buddy_manager.o CC [M] drivers/gpu/drm/i915/i915_vma.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/gf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/gk104.o CC [M] drivers/gpu/drm/amd/amdgpu/sienna_cichlid.o CC [M] drivers/gpu/drm/xe/i915-display/intel_connector.o CC [M] drivers/gpu/drm/xe/i915-display/intel_crtc.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/gk20a.o CC [M] drivers/gpu/drm/i915/i915_vma_resource.o CC [M] drivers/gpu/drm/amd/amdgpu/smu_v13_0_10.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/gm20b.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/pllnv04.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/clk/pllgt215.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o CC [M] drivers/gpu/drm/amd/amdgpu/nbio_v4_3.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o CC [M] drivers/gpu/drm/amd/amdgpu/hdp_v6_0.o CC [M] drivers/gpu/drm/xe/i915-display/intel_crtc_state_dump.o CC [M] drivers/gpu/drm/xe/i915-display/intel_cursor.o CC [M] drivers/gpu/drm/amd/amdgpu/nbio_v7_7.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.o CC [M] drivers/gpu/drm/amd/amdgpu/hdp_v5_2.o CC [M] drivers/gpu/drm/xe/i915-display/intel_cx0_phy.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv04.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv05.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.o CC [M] drivers/gpu/drm/amd/amdgpu/lsdma_v6_0.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc.o CC [M] drivers/gpu/drm/xe/i915-display/intel_ddi.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o CC [M] drivers/gpu/drm/amd/amdgpu/nbio_v7_9.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv10.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv1a.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv20.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/g84.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.o CC [M] drivers/gpu/drm/amd/amdgpu/aqua_vanjaram.o CC [M] drivers/gpu/drm/xe/i915-display/intel_ddi_buf_trans.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/g98.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o CC [M] drivers/gpu/drm/amd/amdgpu/df_v1_7.o CC [M] drivers/gpu/drm/xe/i915-display/intel_display.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gt215.o CC [M] drivers/gpu/drm/xe/i915-display/intel_display_debugfs.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/mcp89.o CC [M] drivers/gpu/drm/amd/amdgpu/df_v3_6.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gf100.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc_log.o CC [M] drivers/gpu/drm/xe/i915-display/intel_display_device.o CC [M] drivers/gpu/drm/xe/i915-display/intel_display_driver.o CC [M] drivers/gpu/drm/amd/amdgpu/df_v4_3.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc_rc.o CC [M] drivers/gpu/drm/amd/amdgpu/gmc_v7_0.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm107.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm200.o CC [M] drivers/gpu/drm/amd/amdgpu/gmc_v8_0.o CC [M] drivers/gpu/drm/xe/i915-display/intel_display_irq.o CC [M] drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gv100.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_huc.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/tu102.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/devinit/ga100.o CC [M] drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fault/base.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fault/user.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_huc_fw.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fault/gp100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fault/gp10b.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_uc.o CC [M] drivers/gpu/drm/amd/amdgpu/gmc_v9_0.o CC [M] drivers/gpu/drm/amd/amdgpu/gfxhub_v1_1.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.o CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power.o CC [M] drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.o CC [M] drivers/gpu/drm/amd/amdgpu/gfxhub_v2_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fault/gv100.o CC [M] drivers/gpu/drm/i915/gt/uc/intel_uc_fw.o CC [M] drivers/gpu/drm/i915/gt/intel_gsc.o CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power_map.o CC [M] drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.o CC [M] drivers/gpu/drm/amd/amdgpu/gmc_v10_0.o CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power_well.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fault/tu102.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.o CC [M] drivers/gpu/drm/i915/i915_hwmon.o CC [M] drivers/gpu/drm/amd/amdgpu/gfxhub_v2_1.o CC [M] drivers/gpu/drm/i915/display/hsw_ips.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv04.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv10.o CC [M] drivers/gpu/drm/i915/display/intel_atomic.o CC [M] drivers/gpu/drm/xe/i915-display/intel_display_trace.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv1a.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv20.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv25.o CC [M] drivers/gpu/drm/i915/display/intel_atomic_plane.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv30.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv35.o CC [M] drivers/gpu/drm/i915/display/intel_audio.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv36.o CC [M] drivers/gpu/drm/i915/display/intel_bios.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o CC [M] drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.o CC [M] drivers/gpu/drm/i915/display/intel_bw.o CC [M] drivers/gpu/drm/i915/display/intel_cdclk.o CC [M] drivers/gpu/drm/i915/display/intel_color.o CC [M] drivers/gpu/drm/i915/display/intel_combo_phy.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv40.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dmc.o CC [M] drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv41.o CC [M] drivers/gpu/drm/amd/amdgpu/gfxhub_v3_0.o CC [M] drivers/gpu/drm/amd/amdgpu/mmhub_v3_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv44.o CC [M] drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_2.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv46.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv47.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv49.o CC [M] drivers/gpu/drm/i915/display/intel_connector.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv4e.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dp.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/g84.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gt215.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/mcp77.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/mcp89.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf108.o CC [M] drivers/gpu/drm/i915/display/intel_crtc.o CC [M] drivers/gpu/drm/i915/display/intel_crtc_state_dump.o CC [M] drivers/gpu/drm/amd/amdgpu/gmc_v11_0.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_aux.o CC [M] drivers/gpu/drm/i915/display/intel_cursor.o CC [M] drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_1.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gk104.o CC [M] drivers/gpu/drm/i915/display/intel_display.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gk110.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_hdcp.o CC [M] drivers/gpu/drm/amd/amdgpu/gfxhub_v3_0_3.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gk20a.o CC [M] drivers/gpu/drm/i915/display/intel_display_driver.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gm107.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gm200.o CC [M] drivers/gpu/drm/amd/amdgpu/gfxhub_v1_2.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gm20b.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gp100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gp102.o CC [M] drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gp10b.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_link_training.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_mst.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gv100.o CC [M] drivers/gpu/drm/amd/amdgpu/umc_v6_0.o CC [M] drivers/gpu/drm/amd/amdgpu/umc_v6_1.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/tu102.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ga100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ga102.o CC [M] drivers/gpu/drm/amd/amdgpu/umc_v6_7.o CC [M] drivers/gpu/drm/i915/display/intel_display_irq.o CC [M] drivers/gpu/drm/i915/display/intel_display_power.o CC [M] drivers/gpu/drm/amd/amdgpu/umc_v8_7.o CC [M] drivers/gpu/drm/i915/display/intel_display_power_map.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.o CC [M] drivers/gpu/drm/amd/amdgpu/umc_v8_10.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_irq.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv04.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_ih.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv10.o CC [M] drivers/gpu/drm/i915/display/intel_display_power_well.o CC [M] drivers/gpu/drm/i915/display/intel_display_reset.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv20.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.o CC [M] drivers/gpu/drm/amd/amdgpu/iceland_ih.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dpll.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv41.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv44.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv49.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv4e.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv50.o CC [M] drivers/gpu/drm/i915/display/intel_display_rps.o CC [M] drivers/gpu/drm/amd/amdgpu/tonga_ih.o CC [M] drivers/gpu/drm/amd/amdgpu/cz_ih.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dpt.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/rammcp77.o CC [M] drivers/gpu/drm/amd/amdgpu/vega10_ih.o CC [M] drivers/gpu/drm/xe/i915-display/intel_drrs.o CC [M] drivers/gpu/drm/amd/amdgpu/vega20_ih.o CC [M] drivers/gpu/drm/i915/display/intel_dmc.o CC [M] drivers/gpu/drm/amd/amdgpu/navi10_ih.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf108.o CC [M] drivers/gpu/drm/i915/display/intel_dpio_phy.o CC [M] drivers/gpu/drm/amd/amdgpu/ih_v6_0.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dsb.o CC [M] drivers/gpu/drm/amd/amdgpu/ih_v6_1.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_psp.o CC [M] drivers/gpu/drm/amd/amdgpu/psp_v3_1.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgk104.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgm107.o CC [M] drivers/gpu/drm/amd/amdgpu/psp_v10_0.o CC [M] drivers/gpu/drm/i915/display/intel_dpll.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgm200.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgp100.o CC [M] drivers/gpu/drm/amd/amdgpu/psp_v11_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgp102.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/sddr2.o CC [M] drivers/gpu/drm/i915/display/intel_dpll_mgr.o CC [M] drivers/gpu/drm/i915/display/intel_dpt.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/sddr3.o CC [M] drivers/gpu/drm/amd/amdgpu/psp_v11_0_8.o CC [M] drivers/gpu/drm/amd/amdgpu/psp_v12_0.o CC [M] drivers/gpu/drm/i915/display/intel_drrs.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gddr3.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi_dcs_backlight.o CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi_vbt.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fb/gddr5.o CC [M] drivers/gpu/drm/amd/amdgpu/psp_v13_0.o CC [M] drivers/gpu/drm/amd/amdgpu/psp_v13_0_4.o CC [M] drivers/gpu/drm/amd/amdgpu/dce_v10_0.o CC [M] drivers/gpu/drm/i915/display/intel_dsb.o CC [M] drivers/gpu/drm/amd/amdgpu/dce_v11_0.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fuse/base.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fuse/nv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gf100.o CC [M] drivers/gpu/drm/amd/amdgpu/gfx_v8_0.o CC [M] drivers/gpu/drm/xe/i915-display/intel_fb.o CC [M] drivers/gpu/drm/xe/i915-display/intel_fbc.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gm107.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.o CC [M] drivers/gpu/drm/amd/amdgpu/gfx_v9_0.o CC [M] drivers/gpu/drm/i915/display/intel_fb.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/gpio/nv10.o CC [M] drivers/gpu/drm/amd/amdgpu/gfx_v9_4.o CC [M] drivers/gpu/drm/amd/amdgpu/gfx_v9_4_2.o CC [M] drivers/gpu/drm/xe/i915-display/intel_fdi.o CC [M] drivers/gpu/drm/i915/display/intel_fb_pin.o CC [M] drivers/gpu/drm/i915/display/intel_fbc.o CC [M] drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o CC [M] drivers/gpu/drm/i915/display/intel_fdi.o CC [M] drivers/gpu/drm/i915/display/intel_fifo_underrun.o CC [M] drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/gpio/nv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/gpio/g94.o CC [M] drivers/gpu/drm/amd/amdgpu/gfx_v10_0.o CC [M] drivers/gpu/drm/i915/display/intel_frontbuffer.o CC [M] drivers/gpu/drm/amd/amdgpu/imu_v11_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/gpio/gf119.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/gpio/gk104.o CC [M] drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o CC [M] drivers/gpu/drm/i915/display/intel_global_state.o CC [M] drivers/gpu/drm/i915/display/intel_hdcp.o CC [M] drivers/gpu/drm/amd/amdgpu/gfx_v11_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/gpio/ga102.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/gsp/gv100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.o CC [M] drivers/gpu/drm/xe/i915-display/intel_global_state.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/base.o CC [M] drivers/gpu/drm/xe/i915-display/intel_gmbus.o CC [M] drivers/gpu/drm/amd/amdgpu/gfx_v11_0_3.o CC [M] drivers/gpu/drm/amd/amdgpu/imu_v11_0_3.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.o CC [M] drivers/gpu/drm/i915/display/intel_hdcp_gsc.o CC [M] drivers/gpu/drm/i915/display/intel_hotplug.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/nv04.o CC [M] drivers/gpu/drm/i915/display/intel_hotplug_irq.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/nv4e.o CC [M] drivers/gpu/drm/amd/amdgpu/sdma_v2_4.o CC [M] drivers/gpu/drm/xe/i915-display/intel_hdcp.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/nv50.o CC [M] drivers/gpu/drm/i915/display/intel_hti.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/g94.o CC [M] drivers/gpu/drm/amd/amdgpu/sdma_v3_0.o CC [M] drivers/gpu/drm/amd/amdgpu/sdma_v4_0.o CC [M] drivers/gpu/drm/i915/display/intel_load_detect.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gf117.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gf119.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gk104.o CC [M] drivers/gpu/drm/xe/i915-display/intel_hdmi.o CC [M] drivers/gpu/drm/xe/i915-display/intel_hotplug.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gk110.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gm200.o CC [M] drivers/gpu/drm/amd/amdgpu/sdma_v4_4.o CC [M] drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o CC [M] drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.o CC [M] drivers/gpu/drm/i915/display/intel_lpe_audio.o CC [M] drivers/gpu/drm/i915/display/intel_modeset_lock.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/pad.o CC [M] drivers/gpu/drm/amd/amdgpu/sdma_v5_0.o CC [M] drivers/gpu/drm/i915/display/intel_modeset_verify.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padnv04.o CC [M] drivers/gpu/drm/amd/amdgpu/sdma_v5_2.o CC [M] drivers/gpu/drm/i915/display/intel_modeset_setup.o CC [M] drivers/gpu/drm/xe/i915-display/intel_hti.o CC [M] drivers/gpu/drm/amd/amdgpu/sdma_v6_0.o CC [M] drivers/gpu/drm/xe/i915-display/intel_lspcon.o CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_lock.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_mes.o CC [M] drivers/gpu/drm/amd/amdgpu/mes_v10_1.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padnv4e.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padnv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padg94.o CC [M] drivers/gpu/drm/i915/display/intel_overlay.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padgf119.o CC [M] drivers/gpu/drm/i915/display/intel_pch_display.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padgm200.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.o CC [M] drivers/gpu/drm/i915/display/intel_pch_refclk.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/busnv04.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/busnv4e.o CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_setup.o CC [M] drivers/gpu/drm/i915/display/intel_plane_initial.o CC [M] drivers/gpu/drm/i915/display/intel_pmdemand.o CC [M] drivers/gpu/drm/i915/display/intel_psr.o CC [M] drivers/gpu/drm/amd/amdgpu/mes_v11_0.o CC [M] drivers/gpu/drm/i915/display/intel_quirks.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/busnv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/busgf119.o CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_verify.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bit.o CC [M] drivers/gpu/drm/xe/i915-display/intel_panel.o CC [M] drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o CC [M] drivers/gpu/drm/i915/display/intel_sprite.o CC [M] drivers/gpu/drm/i915/display/intel_sprite_uapi.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxg94.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgf119.o CC [M] drivers/gpu/drm/i915/display/intel_tc.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.o CC [M] drivers/gpu/drm/amd/amdgpu/uvd_v5_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/i2c/anx9805.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.o CC [M] drivers/gpu/drm/xe/i915-display/intel_pmdemand.o CC [M] drivers/gpu/drm/i915/display/intel_vblank.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/gf100.o CC [M] drivers/gpu/drm/amd/amdgpu/uvd_v6_0.o CC [M] drivers/gpu/drm/i915/display/intel_vga.o CC [M] drivers/gpu/drm/xe/i915-display/intel_pps.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/instmem/base.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv04.o CC [M] drivers/gpu/drm/amd/amdgpu/uvd_v7_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv40.o CC [M] drivers/gpu/drm/i915/display/intel_wm.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_vce.o CC [M] drivers/gpu/drm/xe/i915-display/intel_psr.o CC [M] drivers/gpu/drm/i915/display/i9xx_plane.o CC [M] drivers/gpu/drm/i915/display/i9xx_wm.o CC [M] drivers/gpu/drm/i915/display/skl_scaler.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.o CC [M] drivers/gpu/drm/i915/display/skl_universal_plane.o CC [M] drivers/gpu/drm/xe/i915-display/intel_qp_tables.o CC [M] drivers/gpu/drm/amd/amdgpu/vce_v3_0.o CC [M] drivers/gpu/drm/xe/i915-display/intel_quirks.o CC [M] drivers/gpu/drm/xe/i915-display/intel_snps_phy.o CC [M] drivers/gpu/drm/i915/display/skl_watermark.o CC [M] drivers/gpu/drm/xe/i915-display/intel_tc.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/ltc/base.o CC [M] drivers/gpu/drm/amd/amdgpu/vce_v4_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gf100.o CC [M] drivers/gpu/drm/xe/i915-display/intel_vblank.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gk104.o CC [M] drivers/gpu/drm/i915/display/intel_acpi.o CC [M] drivers/gpu/drm/i915/display/intel_opregion.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm107.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm200.o CC [M] drivers/gpu/drm/xe/i915-display/intel_vdsc.o CC [M] drivers/gpu/drm/xe/i915-display/intel_vga.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gp100.o CC [M] drivers/gpu/drm/amd/amdgpu/vcn_sw_ring.o CC [M] drivers/gpu/drm/amd/amdgpu/vcn_v1_0.o CC [M] drivers/gpu/drm/amd/amdgpu/vcn_v2_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gp102.o CC [M] drivers/gpu/drm/amd/amdgpu/vcn_v2_5.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gp10b.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/ltc/ga102.o CC [M] drivers/gpu/drm/i915/display/intel_fbdev.o CC [M] drivers/gpu/drm/amd/amdgpu/vcn_v3_0.o CC [M] drivers/gpu/drm/i915/display/dvo_ch7017.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/base.o CC [M] drivers/gpu/drm/xe/i915-display/intel_vrr.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv04.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv11.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv17.o CC [M] drivers/gpu/drm/i915/display/dvo_ch7xxx.o CC [M] drivers/gpu/drm/xe/i915-display/intel_wm.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv44.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/g84.o CC [M] drivers/gpu/drm/xe/i915-display/skl_scaler.o CC [M] drivers/gpu/drm/xe/i915-display/skl_universal_plane.o CC [M] drivers/gpu/drm/amd/amdgpu/vcn_v4_0.o CC [M] drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.o CC [M] drivers/gpu/drm/i915/display/dvo_ivch.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/g98.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/gt215.o CC [M] drivers/gpu/drm/xe/i915-display/skl_watermark.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/gf100.o CC [M] drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.o CC [M] drivers/gpu/drm/i915/display/dvo_ns2501.o CC [M] drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.o CC [M] drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.o CC [M] drivers/gpu/drm/xe/xe_pmu.o CC [M] drivers/gpu/drm/i915/display/dvo_sil164.o CC [M] drivers/gpu/drm/i915/display/dvo_tfp410.o CC [M] drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.o CC [M] drivers/gpu/drm/xe/i915-display/intel_acpi.o CC [M] drivers/gpu/drm/i915/display/g4x_dp.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/gk104.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/gk20a.o CC [M] drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/gp100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/gp10b.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mc/ga100.o CC [M] drivers/gpu/drm/i915/display/g4x_hdmi.o CC [M] drivers/gpu/drm/i915/display/icl_dsi.o CC [M] drivers/gpu/drm/i915/display/intel_backlight.o CC [M] drivers/gpu/drm/xe/i915-display/intel_opregion.o CC [M] drivers/gpu/drm/i915/display/intel_crt.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.o CC [M] drivers/gpu/drm/i915/display/intel_cx0_phy.o CC [M] drivers/gpu/drm/i915/display/intel_ddi.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv04.o CC [M] drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv41.o CC [M] drivers/gpu/drm/i915/display/intel_ddi_buf_trans.o CC [M] drivers/gpu/drm/xe/i915-display/intel_fbdev.o CC [M] drivers/gpu/drm/xe/xe_guc.o CC [M] drivers/gpu/drm/amd/amdgpu/athub_v1_0.o CC [M] drivers/gpu/drm/amd/amdgpu/athub_v2_0.o CC [M] drivers/gpu/drm/i915/display/intel_display_device.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv44.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv50.o CC [M] drivers/gpu/drm/xe/xe_migrate.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/g84.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/mcp77.o CC [M] drivers/gpu/drm/i915/display/intel_display_trace.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gf100.o HDRTEST drivers/gpu/drm/xe/abi/guc_klvs_abi.h HDRTEST drivers/gpu/drm/xe/abi/guc_errors_abi.h HDRTEST drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h HDRTEST drivers/gpu/drm/xe/abi/guc_communication_mmio_abi.h HDRTEST drivers/gpu/drm/xe/abi/guc_actions_abi.h HDRTEST drivers/gpu/drm/xe/abi/guc_communication_ctb_abi.h HDRTEST drivers/gpu/drm/xe/abi/guc_messages_abi.h CC [M] drivers/gpu/drm/amd/amdgpu/athub_v2_1.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vma_types.h CC [M] drivers/gpu/drm/amd/amdgpu/athub_v3_0.o CC [M] drivers/gpu/drm/i915/display/intel_dkl_phy.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_irq.h CC [M] drivers/gpu/drm/amd/amdgpu/smuio_v9_0.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/vlv_sideband_reg.h CC [M] drivers/gpu/drm/i915/display/intel_dp.o CC [M] drivers/gpu/drm/amd/amdgpu/smuio_v11_0.o CC [M] drivers/gpu/drm/amd/amdgpu/smuio_v11_0_6.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gk104.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gk20a.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gm200.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_wakeref.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_pcode.h CC [M] drivers/gpu/drm/amd/amdgpu/smuio_v13_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gm20b.o CC [M] drivers/gpu/drm/amd/amdgpu/smuio_v13_0_3.o CC [M] drivers/gpu/drm/amd/amdgpu/smuio_v13_0_6.o CC [M] drivers/gpu/drm/i915/display/intel_dp_aux.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gp100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gp10b.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_reg_defs.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_reset.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gv100.o CC [M] drivers/gpu/drm/i915/display/intel_dp_aux_backlight.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/tu102.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_trace.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_reg.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/mem.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_active_types.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_utils.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_config.h CC [M] drivers/gpu/drm/i915/display/intel_dp_hdcp.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/memnv04.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/vlv_sideband.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_mchbar_regs.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_debugfs.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/soc/intel_pch.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/soc/intel_dram.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/soc/intel_gmch.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vgpu.h CC [M] drivers/gpu/drm/i915/display/intel_dp_link_training.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/memnv50.o CC [M] drivers/gpu/drm/i915/display/intel_dp_mst.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_fixed.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/memgf100.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_runtime_pm.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_pci_config.h HDRTEST drivers/gpu/drm/xe/compat-i915-headers/gt/intel_rps.h CC [M] drivers/gpu/drm/i915/display/intel_dsi.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv04.o HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_clock_gating.h HDRTEST drivers/gpu/drm/xe/regs/xe_reg_defs.h CC [M] drivers/gpu/drm/amd/amdgpu/mca_v3_0.o HDRTEST drivers/gpu/drm/xe/regs/xe_guc_regs.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.o HDRTEST drivers/gpu/drm/xe/regs/xe_gt_regs.h HDRTEST drivers/gpu/drm/xe/regs/xe_regs.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv41.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv44.o CC [M] drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.o HDRTEST drivers/gpu/drm/xe/regs/xe_gpu_commands.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv50.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_module.o HDRTEST drivers/gpu/drm/xe/regs/xe_lrc_layout.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmmcp77.o CC [M] drivers/gpu/drm/i915/display/intel_dsi_vbt.o HDRTEST drivers/gpu/drm/xe/regs/xe_engine_regs.h CC [M] drivers/gpu/drm/i915/display/intel_dvo.o HDRTEST drivers/gpu/drm/xe/tests/xe_test.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device.o HDRTEST drivers/gpu/drm/xe/tests/xe_pci_test.h HDRTEST drivers/gpu/drm/xe/tests/xe_migrate_test.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_chardev.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_topology.o CC [M] drivers/gpu/drm/i915/display/intel_gmbus.o CC [M] drivers/gpu/drm/i915/display/intel_hdmi.o HDRTEST drivers/gpu/drm/xe/tests/xe_dma_buf_test.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgk104.o HDRTEST drivers/gpu/drm/xe/tests/xe_bo_test.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_pasid.o HDRTEST drivers/gpu/drm/xe/xe_bb.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgk20a.o HDRTEST drivers/gpu/drm/xe/xe_bb_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgm200.o HDRTEST drivers/gpu/drm/xe/xe_bo.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgm20b.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_doorbell.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.o HDRTEST drivers/gpu/drm/xe/xe_bo_doc.h HDRTEST drivers/gpu/drm/xe/xe_bo_evict.h HDRTEST drivers/gpu/drm/xe/xe_bo_types.h CC [M] drivers/gpu/drm/i915/display/intel_lspcon.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp10b.o CC [M] drivers/gpu/drm/i915/display/intel_lvds.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgv100.o HDRTEST drivers/gpu/drm/xe/xe_debugfs.h HDRTEST drivers/gpu/drm/xe/xe_devcoredump.h HDRTEST drivers/gpu/drm/xe/xe_devcoredump_types.h HDRTEST drivers/gpu/drm/xe/xe_device.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmtu102.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/umem.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/ummu.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_flat_memory.o CC [M] drivers/gpu/drm/i915/display/intel_panel.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_process.o CC [M] drivers/gpu/drm/i915/display/intel_pps.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mmu/uvmm.o HDRTEST drivers/gpu/drm/xe/xe_device_sysfs.h HDRTEST drivers/gpu/drm/xe/xe_device_types.h CC [M] drivers/gpu/drm/i915/display/intel_qp_tables.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mxm/base.o CC [M] drivers/gpu/drm/i915/display/intel_sdvo.o HDRTEST drivers/gpu/drm/xe/xe_display.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mxm/mxms.o HDRTEST drivers/gpu/drm/xe/xe_dma_buf.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/mxm/nv50.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_queue.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager.o CC [M] drivers/gpu/drm/i915/display/intel_snps_phy.o CC [M] drivers/gpu/drm/i915/display/intel_tv.o HDRTEST drivers/gpu/drm/xe/xe_drv.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_cik.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/base.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_vi.o HDRTEST drivers/gpu/drm/xe/xe_exec.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/pcie.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_v9.o CC [M] drivers/gpu/drm/i915/display/intel_vdsc.o CC [M] drivers/gpu/drm/i915/display/intel_vrr.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_v10.o CC [M] drivers/gpu/drm/i915/display/vlv_dsi.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv04.o HDRTEST drivers/gpu/drm/xe/xe_exec_queue.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_v11.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv40.o CC [M] drivers/gpu/drm/i915/display/vlv_dsi_pll.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv46.o HDRTEST drivers/gpu/drm/xe/xe_exec_queue_types.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_kernel_queue.o CC [M] drivers/gpu/drm/i915/i915_perf.o HDRTEST drivers/gpu/drm/xe/xe_execlist.h HDRTEST drivers/gpu/drm/xe/xe_execlist_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv4c.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/g84.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_packet_manager.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_packet_manager_vi.o CC [M] drivers/gpu/drm/i915/pxp/intel_pxp.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_packet_manager_v9.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_process_queue_manager.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/g92.o HDRTEST drivers/gpu/drm/xe/xe_force_wake.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/g94.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/gf100.o CC [M] drivers/gpu/drm/i915/pxp/intel_pxp_tee.o HDRTEST drivers/gpu/drm/xe/xe_force_wake_types.h HDRTEST drivers/gpu/drm/xe/xe_ggtt.h HDRTEST drivers/gpu/drm/xe/xe_ggtt_types.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/gf106.o HDRTEST drivers/gpu/drm/xe/xe_gt.h HDRTEST drivers/gpu/drm/xe/xe_gt_clock.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_cik.o CC [M] drivers/gpu/drm/i915/pxp/intel_pxp_huc.o HDRTEST drivers/gpu/drm/xe/xe_gt_debugfs.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_vi.o HDRTEST drivers/gpu/drm/xe/xe_gt_idle_sysfs.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/gk104.o HDRTEST drivers/gpu/drm/xe/xe_gt_idle_sysfs_types.h HDRTEST drivers/gpu/drm/xe/xe_gt_mcr.h HDRTEST drivers/gpu/drm/xe/xe_gt_pagefault.h HDRTEST drivers/gpu/drm/xe/xe_gt_printk.h HDRTEST drivers/gpu/drm/xe/xe_gt_sysfs.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pci/gp100.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_v9.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/base.o HDRTEST drivers/gpu/drm/xe/xe_gt_sysfs_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/memx.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gt215.o CC [M] drivers/gpu/drm/i915/pxp/intel_pxp_cmd.o CC [M] drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_v10.o HDRTEST drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h HDRTEST drivers/gpu/drm/xe/xe_gt_tlb_invalidation_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gf100.o HDRTEST drivers/gpu/drm/xe/xe_gt_topology.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gf119.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_v11.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_interrupt.o HDRTEST drivers/gpu/drm/xe/xe_gt_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk104.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_events.o CC [M] drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk110.o HDRTEST drivers/gpu/drm/xe/xe_guc.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/cik_event_interrupt.o HDRTEST drivers/gpu/drm/xe/xe_guc_ads.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_int_process_v9.o CC [M] drivers/gpu/drm/i915/pxp/intel_pxp_irq.o CC [M] drivers/gpu/drm/i915/pxp/intel_pxp_pm.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk208.o CC [M] drivers/gpu/drm/i915/pxp/intel_pxp_session.o HDRTEST drivers/gpu/drm/xe/xe_guc_ads_types.h CC [M] drivers/gpu/drm/i915/i915_gpu_error.o HDRTEST drivers/gpu/drm/xe/xe_guc_ct.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.o CC [M] drivers/gpu/drm/i915/gem/selftests/i915_gem_client_blt.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_int_process_v10.o HDRTEST drivers/gpu/drm/xe/xe_guc_ct_types.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_int_process_v11.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm107.o CC [M] drivers/gpu/drm/i915/gem/selftests/igt_gem_utils.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm200.o CC [M] drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_smi_events.o CC [M] drivers/gpu/drm/i915/selftests/i915_random.o HDRTEST drivers/gpu/drm/xe/xe_guc_debugfs.h CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_crat.o CC [M] drivers/gpu/drm/i915/selftests/i915_selftest.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_debug.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_debugfs.o HDRTEST drivers/gpu/drm/xe/xe_guc_exec_queue_types.h CC [M] drivers/gpu/drm/i915/selftests/igt_atomic.o CC [M] drivers/gpu/drm/i915/selftests/igt_flush_test.o HDRTEST drivers/gpu/drm/xe/xe_guc_fwif.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.o HDRTEST drivers/gpu/drm/xe/xe_guc_hwconfig.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp102.o HDRTEST drivers/gpu/drm/xe/xe_guc_log.h HDRTEST drivers/gpu/drm/xe/xe_guc_log_types.h HDRTEST drivers/gpu/drm/xe/xe_guc_pc.h HDRTEST drivers/gpu/drm/xe/xe_guc_pc_types.h HDRTEST drivers/gpu/drm/xe/xe_guc_submit.h HDRTEST drivers/gpu/drm/xe/xe_guc_submit_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/privring/gf100.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/privring/gf117.o CC [M] drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_migrate.o HDRTEST drivers/gpu/drm/xe/xe_guc_types.h HDRTEST drivers/gpu/drm/xe/xe_huc.h HDRTEST drivers/gpu/drm/xe/xe_huc_debugfs.h CC [M] drivers/gpu/drm/i915/selftests/igt_live_test.o HDRTEST drivers/gpu/drm/xe/xe_huc_types.h CC [M] drivers/gpu/drm/i915/selftests/igt_mmap.o CC [M] drivers/gpu/drm/i915/selftests/igt_reset.o HDRTEST drivers/gpu/drm/xe/xe_hw_engine.h HDRTEST drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.h HDRTEST drivers/gpu/drm/xe/xe_hw_engine_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/privring/gk104.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/privring/gk20a.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/privring/gm200.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.o CC [M] drivers/gpu/drm/i915/selftests/igt_spinner.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/privring/gp10b.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.o CC [M] drivers/gpu/drm/i915/selftests/librapl.o CC [M] drivers/gpu/drm/i915/i915_vgpu.o HDRTEST drivers/gpu/drm/xe/xe_hw_fence.h HDRTEST drivers/gpu/drm/xe/xe_hw_fence_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.o HDRTEST drivers/gpu/drm/i915/display/intel_dkl_phy_regs.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/fan.o HDRTEST drivers/gpu/drm/i915/display/intel_crtc_state_dump.h HDRTEST drivers/gpu/drm/xe/xe_irq.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.o HDRTEST drivers/gpu/drm/xe/xe_lrc.h HDRTEST drivers/gpu/drm/xe/xe_lrc_types.h HDRTEST drivers/gpu/drm/i915/display/hsw_ips.h HDRTEST drivers/gpu/drm/i915/display/g4x_hdmi.h HDRTEST drivers/gpu/drm/xe/xe_macros.h HDRTEST drivers/gpu/drm/xe/xe_map.h HDRTEST drivers/gpu/drm/xe/xe_migrate.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/fannil.o HDRTEST drivers/gpu/drm/i915/display/intel_hdcp_regs.h HDRTEST drivers/gpu/drm/i915/display/intel_overlay.h HDRTEST drivers/gpu/drm/i915/display/intel_display.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/fanpwm.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/fantog.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/ic.o HDRTEST drivers/gpu/drm/xe/xe_migrate_doc.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.o HDRTEST drivers/gpu/drm/xe/xe_mmio.h HDRTEST drivers/gpu/drm/i915/display/skl_watermark_regs.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10_3.o HDRTEST drivers/gpu/drm/i915/display/intel_dmc.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/nv40.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/nv50.o HDRTEST drivers/gpu/drm/i915/display/intel_vga.h HDRTEST drivers/gpu/drm/xe/xe_mocs.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v11.o HDRTEST drivers/gpu/drm/i915/display/intel_audio.h HDRTEST drivers/gpu/drm/xe/xe_module.h HDRTEST drivers/gpu/drm/i915/display/intel_lvds.h HDRTEST drivers/gpu/drm/xe/xe_pat.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.o HDRTEST drivers/gpu/drm/i915/display/intel_modeset_setup.h HDRTEST drivers/gpu/drm/xe/xe_pci.h HDRTEST drivers/gpu/drm/i915/display/intel_cdclk.h HDRTEST drivers/gpu/drm/xe/xe_pci_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/g84.o HDRTEST drivers/gpu/drm/xe/xe_pcode.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/gt215.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/gf100.o HDRTEST drivers/gpu/drm/i915/display/intel_display_limits.h HDRTEST drivers/gpu/drm/i915/display/intel_hotplug.h HDRTEST drivers/gpu/drm/i915/display/intel_dkl_phy.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/gf119.o HDRTEST drivers/gpu/drm/i915/display/intel_atomic.h HDRTEST drivers/gpu/drm/i915/display/intel_display_driver.h HDRTEST drivers/gpu/drm/i915/display/intel_dpll.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.o HDRTEST drivers/gpu/drm/i915/display/vlv_dsi_pll_regs.h HDRTEST drivers/gpu/drm/xe/xe_pcode_api.h HDRTEST drivers/gpu/drm/i915/display/intel_dp_mst.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/gk104.o HDRTEST drivers/gpu/drm/i915/display/intel_fdi_regs.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_job.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/gm107.o HDRTEST drivers/gpu/drm/xe/xe_platform_types.h HDRTEST drivers/gpu/drm/xe/xe_pm.h HDRTEST drivers/gpu/drm/i915/display/g4x_dp.h HDRTEST drivers/gpu/drm/i915/display/intel_tc.h HDRTEST drivers/gpu/drm/i915/display/intel_frontbuffer.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_acp.o CC [M] drivers/gpu/drm/amd/amdgpu/../acp/acp_hw.o HDRTEST drivers/gpu/drm/i915/display/intel_dsi_vbt.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_ioc32.o HDRTEST drivers/gpu/drm/i915/display/intel_psr.h HDRTEST drivers/gpu/drm/i915/display/intel_crt.h HDRTEST drivers/gpu/drm/xe/xe_pmu.h HDRTEST drivers/gpu/drm/i915/display/intel_opregion.h HDRTEST drivers/gpu/drm/i915/display/intel_snps_phy_regs.h HDRTEST drivers/gpu/drm/i915/display/i9xx_wm.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/gm200.o HDRTEST drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h HDRTEST drivers/gpu/drm/i915/display/intel_global_state.h HDRTEST drivers/gpu/drm/i915/display/intel_lpe_audio.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/therm/gp100.o HDRTEST drivers/gpu/drm/i915/display/intel_drrs.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.o HDRTEST drivers/gpu/drm/i915/display/intel_display_rps.h HDRTEST drivers/gpu/drm/xe/xe_pmu_types.h HDRTEST drivers/gpu/drm/xe/xe_preempt_fence.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv04.o CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv40.o HDRTEST drivers/gpu/drm/xe/xe_preempt_fence_types.h CC [M] drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv41.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/arcturus_ppt.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/timer/gk20a.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/top/base.o HDRTEST drivers/gpu/drm/xe/xe_pt.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/navi10_ppt.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/sienna_cichlid_ppt.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/vangogh_ppt.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/cyan_skillfish_ppt.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/top/gk104.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/smu_v11_0.o HDRTEST drivers/gpu/drm/xe/xe_pt_types.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu12/renoir_ppt.o HDRTEST drivers/gpu/drm/xe/xe_pt_walk.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/top/ga100.o HDRTEST drivers/gpu/drm/xe/xe_query.h HDRTEST drivers/gpu/drm/xe/xe_range_fence.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/vfn/base.o HDRTEST drivers/gpu/drm/i915/display/intel_fbdev.h HDRTEST drivers/gpu/drm/xe/xe_reg_sr.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu12/smu_v12_0.o HDRTEST drivers/gpu/drm/xe/xe_reg_sr_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/vfn/uvfn.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/vfn/gv100.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/vfn/tu102.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0.o HDRTEST drivers/gpu/drm/i915/display/intel_pps_regs.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/vfn/ga100.o HDRTEST drivers/gpu/drm/xe/xe_reg_whitelist.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/volt/base.o HDRTEST drivers/gpu/drm/xe/xe_res_cursor.h HDRTEST drivers/gpu/drm/i915/display/intel_hdmi.h HDRTEST drivers/gpu/drm/xe/xe_ring_ops.h HDRTEST drivers/gpu/drm/i915/display/intel_fdi.h HDRTEST drivers/gpu/drm/i915/display/intel_fb.h HDRTEST drivers/gpu/drm/xe/xe_ring_ops_types.h HDRTEST drivers/gpu/drm/xe/xe_rtp.h HDRTEST drivers/gpu/drm/xe/xe_rtp_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/volt/gpio.o HDRTEST drivers/gpu/drm/xe/xe_sa.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/volt/nv40.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf100.o HDRTEST drivers/gpu/drm/i915/display/intel_qp_tables.h HDRTEST drivers/gpu/drm/i915/display/intel_dsb_regs.h HDRTEST drivers/gpu/drm/i915/display/intel_vdsc.h HDRTEST drivers/gpu/drm/xe/xe_sa_types.h HDRTEST drivers/gpu/drm/xe/xe_sched_job.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/aldebaran_ppt.o HDRTEST drivers/gpu/drm/xe/xe_sched_job_types.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/yellow_carp_ppt.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_0_ppt.o HDRTEST drivers/gpu/drm/i915/display/intel_snps_phy.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf117.o HDRTEST drivers/gpu/drm/xe/xe_step.h HDRTEST drivers/gpu/drm/i915/display/intel_display_core.h HDRTEST drivers/gpu/drm/xe/xe_step_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/volt/gk104.o HDRTEST drivers/gpu/drm/i915/display/vlv_dsi_pll.h HDRTEST drivers/gpu/drm/i915/display/intel_dvo_dev.h CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/volt/gk20a.o CC [M] drivers/gpu/drm/nouveau/nvkm/subdev/volt/gm20b.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/falcon.o HDRTEST drivers/gpu/drm/i915/display/intel_hdcp.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_4_ppt.o HDRTEST drivers/gpu/drm/i915/display/intel_sdvo_regs.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_5_ppt.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/xtensa.o HDRTEST drivers/gpu/drm/i915/display/intel_pch_refclk.h HDRTEST drivers/gpu/drm/xe/xe_sync.h HDRTEST drivers/gpu/drm/xe/xe_sync_types.h HDRTEST drivers/gpu/drm/i915/display/intel_modeset_lock.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/bsp/g84.o HDRTEST drivers/gpu/drm/xe/xe_tile.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_7_ppt.o HDRTEST drivers/gpu/drm/i915/display/intel_display_trace.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/ce/gt215.o HDRTEST drivers/gpu/drm/xe/xe_tile_sysfs.h HDRTEST drivers/gpu/drm/i915/display/intel_display_power.h HDRTEST drivers/gpu/drm/i915/display/intel_dp_aux_regs.h HDRTEST drivers/gpu/drm/xe/xe_tile_sysfs_types.h HDRTEST drivers/gpu/drm/i915/display/i9xx_plane.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/ce/gf100.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_6_ppt.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/ce/gk104.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/amdgpu_smu.o HDRTEST drivers/gpu/drm/xe/xe_trace.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/ce/gm107.o HDRTEST drivers/gpu/drm/i915/display/intel_dp_aux_backlight.h HDRTEST drivers/gpu/drm/i915/display/intel_dpll_mgr.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/ce/gm200.o HDRTEST drivers/gpu/drm/xe/xe_ttm_stolen_mgr.h HDRTEST drivers/gpu/drm/xe/xe_ttm_sys_mgr.h HDRTEST drivers/gpu/drm/xe/xe_ttm_vram_mgr.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/ce/gp100.o HDRTEST drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/ce/gp102.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu_cmn.o HDRTEST drivers/gpu/drm/xe/xe_tuning.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smumgr.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu8_smumgr.o HDRTEST drivers/gpu/drm/xe/xe_uc.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/tonga_smumgr.o HDRTEST drivers/gpu/drm/xe/xe_uc_debugfs.h HDRTEST drivers/gpu/drm/xe/xe_uc_fw.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/ce/gv100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/ce/tu102.o HDRTEST drivers/gpu/drm/xe/xe_uc_fw_abi.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/ce/ga100.o HDRTEST drivers/gpu/drm/xe/xe_uc_fw_types.h HDRTEST drivers/gpu/drm/xe/xe_uc_types.h HDRTEST drivers/gpu/drm/xe/xe_vm.h HDRTEST drivers/gpu/drm/i915/display/vlv_dsi.h HDRTEST drivers/gpu/drm/i915/display/intel_plane_initial.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/fiji_smumgr.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/ce/ga102.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/cipher/g84.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/device/acpi.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/device/base.o HDRTEST drivers/gpu/drm/xe/xe_vm_doc.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/device/pci.o HDRTEST drivers/gpu/drm/xe/xe_vm_madvise.h HDRTEST drivers/gpu/drm/xe/xe_vm_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/device/user.o HDRTEST drivers/gpu/drm/xe/xe_wa.h HDRTEST drivers/gpu/drm/xe/xe_wait_user_fence.h HDRTEST drivers/gpu/drm/xe/xe_wopcm.h HDRTEST drivers/gpu/drm/xe/xe_wopcm_types.h LD [M] drivers/gpu/drm/xe/xe.o HDRTEST drivers/gpu/drm/i915/display/intel_display_device.h HDRTEST drivers/gpu/drm/i915/display/intel_fifo_underrun.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/base.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/chan.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/conn.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.o HDRTEST drivers/gpu/drm/i915/display/intel_cursor.h HDRTEST drivers/gpu/drm/i915/display/vlv_dsi_regs.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/polaris10_smumgr.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/head.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/iceland_smumgr.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.o HDRTEST drivers/gpu/drm/i915/display/intel_cx0_phy.h HDRTEST drivers/gpu/drm/i915/display/skl_scaler.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu7_smumgr.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/vga.o HDRTEST drivers/gpu/drm/i915/display/intel_hti.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/nv04.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/vega10_smumgr.o HDRTEST drivers/gpu/drm/i915/display/icl_dsi_regs.h HDRTEST drivers/gpu/drm/i915/display/intel_atomic_plane.h HDRTEST drivers/gpu/drm/i915/display/skl_watermark.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu10_smumgr.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/ci_smumgr.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/vega12_smumgr.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.o HDRTEST drivers/gpu/drm/i915/display/intel_fbc.h HDRTEST drivers/gpu/drm/i915/display/intel_display_reg_defs.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/g84.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/g94.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/vegam_smumgr.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu9_smumgr.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/vega20_smumgr.o HDRTEST drivers/gpu/drm/i915/display/intel_acpi.h HDRTEST drivers/gpu/drm/i915/display/intel_connector.h HDRTEST drivers/gpu/drm/i915/display/intel_dpt.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/gt200.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/mcp77.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/gt215.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/hwmgr.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/mcp89.o HDRTEST drivers/gpu/drm/i915/display/intel_quirks.h HDRTEST drivers/gpu/drm/i915/display/intel_dp_link_training.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/processpptables.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/gk104.o HDRTEST drivers/gpu/drm/i915/display/intel_color.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/hardwaremanager.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/gk110.o HDRTEST drivers/gpu/drm/i915/display/intel_crtc.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.o HDRTEST drivers/gpu/drm/i915/display/intel_display_debugfs.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/gm200.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/gp100.o HDRTEST drivers/gpu/drm/i915/display/intel_modeset_verify.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/gp102.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/gv100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/tu102.o HDRTEST drivers/gpu/drm/i915/display/intel_display_power_well.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu8_hwmgr.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/ga102.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/udisp.o HDRTEST drivers/gpu/drm/i915/display/intel_psr_regs.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/pppcielanes.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/ppatomctrl.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/ppatomfwctrl.o HDRTEST drivers/gpu/drm/i915/display/intel_wm.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/disp/uhead.o HDRTEST drivers/gpu/drm/i915/display/intel_pipe_crc.h HDRTEST drivers/gpu/drm/i915/display/intel_audio_regs.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/base.o HDRTEST drivers/gpu/drm/i915/display/intel_panel.h HDRTEST drivers/gpu/drm/i915/display/intel_sprite.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/nv04.o HDRTEST drivers/gpu/drm/i915/display/intel_wm_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/nv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/gf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/gf119.o HDRTEST drivers/gpu/drm/i915/display/intel_tv.h HDRTEST drivers/gpu/drm/i915/display/intel_hti_regs.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/gv100.o HDRTEST drivers/gpu/drm/i915/display/intel_vrr.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_hwmgr.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_powertune.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/user.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/usernv04.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/usernv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/usergf100.o HDRTEST drivers/gpu/drm/i915/display/intel_load_detect.h HDRTEST drivers/gpu/drm/i915/display/skl_universal_plane.h HDRTEST drivers/gpu/drm/i915/display/intel_mg_phy_regs.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/usergf119.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_thermal.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/dma/usergv100.o HDRTEST drivers/gpu/drm/i915/display/intel_bw.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.o HDRTEST drivers/gpu/drm/i915/display/intel_display_irq.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_clockpowergating.o HDRTEST drivers/gpu/drm/i915/display/intel_de.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/cgrp.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_processpptables.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_hwmgr.o HDRTEST drivers/gpu/drm/i915/display/intel_lvds_regs.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/chid.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/runl.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_powertune.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/runq.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.o HDRTEST drivers/gpu/drm/i915/display/intel_gmbus_regs.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_thermal.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu10_hwmgr.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/pp_psm.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv10.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv17.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_processpptables.o HDRTEST drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/g84.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/g98.o HDRTEST drivers/gpu/drm/i915/display/intel_dvo.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk110.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk208.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk20a.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_hwmgr.o HDRTEST drivers/gpu/drm/i915/display/intel_sdvo.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm107.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm200.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/gp100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/gv100.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_thermal.o HDRTEST drivers/gpu/drm/i915/display/intel_dp_aux.h HDRTEST drivers/gpu/drm/i915/display/intel_vdsc_regs.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/tu102.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/pp_overdriver.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/ga100.o HDRTEST drivers/gpu/drm/i915/display/intel_combo_phy.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/ga102.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu_helper.o HDRTEST drivers/gpu/drm/i915/display/intel_dvo_regs.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_processpptables.o HDRTEST drivers/gpu/drm/i915/display/intel_gmbus.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_hwmgr.o HDRTEST drivers/gpu/drm/i915/display/intel_hdcp_gsc.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_powertune.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/ucgrp.o HDRTEST drivers/gpu/drm/i915/display/intel_dsi.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/fifo/uchan.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/base.o HDRTEST drivers/gpu/drm/i915/display/intel_dmc_regs.h HDRTEST drivers/gpu/drm/i915/display/intel_ddi.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv04.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv10.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv15.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_thermal.o HDRTEST drivers/gpu/drm/i915/display/intel_hotplug_irq.h HDRTEST drivers/gpu/drm/i915/display/intel_tv_regs.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/common_baco.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv17.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_baco.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv25.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv2a.o HDRTEST drivers/gpu/drm/i915/display/intel_dsb.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv30.o HDRTEST drivers/gpu/drm/i915/display/intel_bios.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_baco.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_baco.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv34.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv35.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu9_baco.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv44.o HDRTEST drivers/gpu/drm/i915/display/intel_pch_display.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/tonga_baco.o HDRTEST drivers/gpu/drm/i915/display/intel_display_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/nv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/g84.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gt200.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/mcp79.o HDRTEST drivers/gpu/drm/i915/display/intel_backlight.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/polaris_baco.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gt215.o HDRTEST drivers/gpu/drm/i915/display/intel_vblank.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/mcp89.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gf104.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gf108.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gf110.o HDRTEST drivers/gpu/drm/i915/display/intel_dp.h HDRTEST drivers/gpu/drm/i915/display/intel_pmdemand.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gf117.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/fiji_baco.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gf119.o HDRTEST drivers/gpu/drm/i915/display/intel_backlight_regs.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gk104.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/ci_baco.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_baco.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gk110.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gk110b.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/powerplay/amd_powerplay.o HDRTEST drivers/gpu/drm/i915/display/intel_combo_phy_regs.h HDRTEST drivers/gpu/drm/i915/display/intel_display_reset.h HDRTEST drivers/gpu/drm/i915/display/intel_display_power_map.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gk208.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/legacy_dpm.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gk20a.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/kv_dpm.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gm107.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gm200.o HDRTEST drivers/gpu/drm/i915/display/intel_ddi_buf_trans.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/kv_smc.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gm20b.o HDRTEST drivers/gpu/drm/i915/display/icl_dsi.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gp100.o HDRTEST drivers/gpu/drm/i915/display/intel_lspcon.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gp102.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gp104.o HDRTEST drivers/gpu/drm/i915/display/intel_dpio_phy.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gp107.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gp108.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gp10b.o HDRTEST drivers/gpu/drm/i915/display/intel_dp_hdcp.h HDRTEST drivers/gpu/drm/i915/display/intel_fb_pin.h HDRTEST drivers/gpu/drm/i915/display/intel_pps.h HDRTEST drivers/gpu/drm/i915/display/intel_sprite_uapi.h CC [M] drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/si_dpm.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_ttm.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/gv100.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_region.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/tu102.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/si_smc.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ga102.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_context_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/amdgpu_dpm.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_lmem.h HDRTEST drivers/gpu/drm/i915/gem/i915_gem_mman.h HDRTEST drivers/gpu/drm/i915/gem/i915_gem_object_types.h HDRTEST drivers/gpu/drm/i915/gem/i915_gem_context.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf104.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/amdgpu_pm.o CC [M] drivers/gpu/drm/amd/amdgpu/../pm/amdgpu_dpm_internal.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_clflush.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf108.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf110.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_tiling.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_plane.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_stolen.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf119.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.h HDRTEST drivers/gpu/drm/i915/gem/i915_gem_create.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk104.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_crtc.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_irq.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_mst_types.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_ttm_move.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk110.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk110b.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_ioctls.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk208.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk20a.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm107.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm200.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm20b.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgp100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgp102.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgp104.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgp107.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_color.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_domain.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_internal.h HDRTEST drivers/gpu/drm/i915/gem/i915_gem_dmabuf.h HDRTEST drivers/gpu/drm/i915/gem/selftests/mock_context.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgv100.o HDRTEST drivers/gpu/drm/i915/gem/selftests/huge_gem_object.h HDRTEST drivers/gpu/drm/i915/gem/selftests/mock_gem_object.h HDRTEST drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.h HDRTEST drivers/gpu/drm/i915/gem/selftests/igt_gem_utils.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxtu102.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxga102.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_services.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv31.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv40.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_userptr.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv44.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv50.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_helpers.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_pp_smu.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/mpeg/g84.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_psr.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/mspdec/base.o HDRTEST drivers/gpu/drm/i915/gem/i915_gem_pm.h HDRTEST drivers/gpu/drm/i915/gem/i915_gem_shrinker.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/mspdec/g98.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gt215.o HDRTEST drivers/gpu/drm/i915/gem/i915_gemfs.h HDRTEST drivers/gpu/drm/i915/gem/i915_gem_object.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gk104.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/msppp/base.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/msppp/g98.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_replay.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/msppp/gt215.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/msppp/gf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/msvld/base.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_hdcp.o HDRTEST drivers/gpu/drm/i915/gt/intel_timeline_types.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/msvld/g98.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/msvld/gt215.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/msvld/mcp89.o HDRTEST drivers/gpu/drm/i915/gt/selftest_engine.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_crc.o HDRTEST drivers/gpu/drm/i915/gt/intel_breadcrumbs.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_debugfs.o HDRTEST drivers/gpu/drm/i915/gt/intel_engine_heartbeat.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/msvld/gf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/msvld/gk104.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/basics/conversion.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/basics/fixpt31_32.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/nvenc/base.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/basics/vector.o HDRTEST drivers/gpu/drm/i915/gt/intel_context_types.h HDRTEST drivers/gpu/drm/i915/gt/intel_execlists_submission.h HDRTEST drivers/gpu/drm/i915/gt/intel_gt_pm.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/basics/dc_common.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser_interface.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/nvenc/gm107.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/nvdec/base.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/nvdec/gm107.o HDRTEST drivers/gpu/drm/i915/gt/selftest_rc6.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/nvdec/ga102.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/pm/base.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/pm/nv40.o HDRTEST drivers/gpu/drm/i915/gt/intel_llc_types.h HDRTEST drivers/gpu/drm/i915/gt/intel_gt.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser_helper.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/pm/nv50.o HDRTEST drivers/gpu/drm/i915/gt/intel_region_lmem.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/pm/g84.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/pm/gt200.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/pm/gt215.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/pm/gf100.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/pm/gf108.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table_helper.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/pm/gf117.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/pm/gk104.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser_common.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sec/g98.o HDRTEST drivers/gpu/drm/i915/gt/intel_gt_requests.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sec2/base.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sec2/gp102.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sec2/gp108.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table2.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table_helper2.o HDRTEST drivers/gpu/drm/i915/gt/intel_ggtt_gmch.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sec2/tu102.o HDRTEST drivers/gpu/drm/i915/gt/intel_gt_print.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sec2/ga102.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser2.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce60/command_table_helper_dce60.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sw/base.o HDRTEST drivers/gpu/drm/i915/gt/gen8_ppgtt.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce80/command_table_helper_dce80.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce110/command_table_helper_dce110.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sw/nv04.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce112/command_table_helper_dce112.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce112/command_table_helper2_dce112.o HDRTEST drivers/gpu/drm/i915/gt/intel_gt_mcr.h CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sw/nv10.o HDRTEST drivers/gpu/drm/i915/gt/intel_timeline.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/dce_calcs.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/custom_float.o HDRTEST drivers/gpu/drm/i915/gt/gen6_engine_cs.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/bw_fixed.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sw/gf100.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_mode_lib.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.o HDRTEST drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_rq_dlg_helpers.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/sw/nvsw.o CC [M] drivers/gpu/drm/nouveau/nvkm/engine/vp/g84.o CC [M] drivers/gpu/drm/nouveau/nouveau_acpi.o CC [M] drivers/gpu/drm/nouveau/nouveau_debugfs.o HDRTEST drivers/gpu/drm/i915/gt/intel_workarounds_types.h CC [M] drivers/gpu/drm/nouveau/nouveau_drm.o CC [M] drivers/gpu/drm/nouveau/nouveau_hwmon.o CC [M] drivers/gpu/drm/nouveau/nouveau_ioc32.o HDRTEST drivers/gpu/drm/i915/gt/selftest_rps.h CC [M] drivers/gpu/drm/nouveau/nouveau_led.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dml1_display_rq_dlg_calc.o CC [M] drivers/gpu/drm/nouveau/nouveau_nvif.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn10/dcn10_fpu.o HDRTEST drivers/gpu/drm/i915/gt/intel_sa_media.h CC [M] drivers/gpu/drm/nouveau/nouveau_usif.o HDRTEST drivers/gpu/drm/i915/gt/intel_gt_debugfs.h CC [M] drivers/gpu/drm/nouveau/nouveau_vga.o HDRTEST drivers/gpu/drm/i915/gt/intel_gt_clock_utils.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/dcn20_fpu.o CC [M] drivers/gpu/drm/nouveau/nouveau_bo.o CC [M] drivers/gpu/drm/nouveau/nouveau_bo0039.o HDRTEST drivers/gpu/drm/i915/gt/intel_rps_types.h HDRTEST drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.h HDRTEST drivers/gpu/drm/i915/gt/sysfs_engines.h CC [M] drivers/gpu/drm/nouveau/nouveau_bo5039.o HDRTEST drivers/gpu/drm/i915/gt/gen7_renderclear.h CC [M] drivers/gpu/drm/nouveau/nouveau_bo74c1.o CC [M] drivers/gpu/drm/nouveau/nouveau_bo85b5.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_mode_vba.o HDRTEST drivers/gpu/drm/i915/gt/intel_context.h HDRTEST drivers/gpu/drm/i915/gt/intel_wopcm.h CC [M] drivers/gpu/drm/nouveau/nouveau_bo9039.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_rq_dlg_calc_20.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20.o HDRTEST drivers/gpu/drm/i915/gt/intel_mocs.h CC [M] drivers/gpu/drm/nouveau/nouveau_bo90b5.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_rq_dlg_calc_20v2.o HDRTEST drivers/gpu/drm/i915/gt/intel_engine_pm.h HDRTEST drivers/gpu/drm/i915/gt/intel_gt_sysfs.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20v2.o CC [M] drivers/gpu/drm/nouveau/nouveau_boa0b5.o HDRTEST drivers/gpu/drm/i915/gt/intel_rc6.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_rq_dlg_calc_21.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_mode_vba_21.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/dcn30_fpu.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.o CC [M] drivers/gpu/drm/nouveau/nouveau_gem.o CC [M] drivers/gpu/drm/nouveau/nouveau_svm.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_rq_dlg_calc_30.o HDRTEST drivers/gpu/drm/i915/gt/intel_gt_defines.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.o CC [M] drivers/gpu/drm/nouveau/nouveau_dmem.o CC [M] drivers/gpu/drm/nouveau/nouveau_mem.o HDRTEST drivers/gpu/drm/i915/gt/intel_ring_types.h CC [M] drivers/gpu/drm/nouveau/nouveau_prime.o CC [M] drivers/gpu/drm/nouveau/nouveau_sgdma.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_rq_dlg_calc_31.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn314/display_mode_vba_314.o CC [M] drivers/gpu/drm/nouveau/nouveau_ttm.o CC [M] drivers/gpu/drm/nouveau/nouveau_vmm.o CC [M] drivers/gpu/drm/nouveau/nouveau_exec.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn314/display_rq_dlg_calc_314.o CC [M] drivers/gpu/drm/nouveau/nouveau_sched.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.o HDRTEST drivers/gpu/drm/i915/gt/intel_workarounds.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_rq_dlg_calc_32.o CC [M] drivers/gpu/drm/nouveau/nouveau_uvmm.o CC [M] drivers/gpu/drm/nouveau/nouveau_backlight.o CC [M] drivers/gpu/drm/nouveau/nouveau_bios.o CC [M] drivers/gpu/drm/nouveau/nouveau_connector.o CC [M] drivers/gpu/drm/nouveau/nouveau_display.o CC [M] drivers/gpu/drm/nouveau/nouveau_dp.o CC [M] drivers/gpu/drm/nouveau/dispnv04/arb.o CC [M] drivers/gpu/drm/nouveau/dispnv04/crtc.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_util_32.o CC [M] drivers/gpu/drm/nouveau/dispnv04/cursor.o HDRTEST drivers/gpu/drm/i915/gt/intel_engine_regs.h CC [M] drivers/gpu/drm/nouveau/dispnv04/dac.o HDRTEST drivers/gpu/drm/i915/gt/intel_gt_pm_irq.h HDRTEST drivers/gpu/drm/i915/gt/shmem_utils.h HDRTEST drivers/gpu/drm/i915/gt/intel_engine.h HDRTEST drivers/gpu/drm/i915/gt/intel_reset_types.h HDRTEST drivers/gpu/drm/i915/gt/intel_gt_regs.h HDRTEST drivers/gpu/drm/i915/gt/intel_reset.h CC [M] drivers/gpu/drm/nouveau/dispnv04/dfp.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.h CC [M] drivers/gpu/drm/nouveau/dispnv04/disp.o CC [M] drivers/gpu/drm/nouveau/dispnv04/hw.o HDRTEST drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h HDRTEST drivers/gpu/drm/i915/gt/uc/intel_uc.h HDRTEST drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h CC [M] drivers/gpu/drm/nouveau/dispnv04/overlay.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/dcn31_fpu.o CC [M] drivers/gpu/drm/nouveau/dispnv04/tvmodesnv17.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/dcn32_fpu.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_print.h CC [M] drivers/gpu/drm/nouveau/dispnv04/tvnv04.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn321/dcn321_fpu.o CC [M] drivers/gpu/drm/nouveau/dispnv04/tvnv17.o CC [M] drivers/gpu/drm/nouveau/dispnv50/disp.o CC [M] drivers/gpu/drm/nouveau/dispnv50/lut.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn301/dcn301_fpu.o CC [M] drivers/gpu/drm/nouveau/dispnv50/core.o CC [M] drivers/gpu/drm/nouveau/dispnv50/core507d.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn302/dcn302_fpu.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn303/dcn303_fpu.o CC [M] drivers/gpu/drm/nouveau/dispnv50/core827d.o CC [M] drivers/gpu/drm/nouveau/dispnv50/core907d.o CC [M] drivers/gpu/drm/nouveau/dispnv50/core917d.o CC [M] drivers/gpu/drm/nouveau/dispnv50/corec37d.o CC [M] drivers/gpu/drm/nouveau/dispnv50/corec57d.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn314/dcn314_fpu.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dsc/rc_calc_fpu.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/dcn_calcs.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_fw.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/dcn_calc_math.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.h HDRTEST drivers/gpu/drm/i915/gt/uc/abi/guc_klvs_abi.h CC [M] drivers/gpu/drm/nouveau/dispnv50/crc.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/dcn_calc_auto.o HDRTEST drivers/gpu/drm/i915/gt/uc/abi/guc_errors_abi.h HDRTEST drivers/gpu/drm/i915/gt/uc/abi/guc_actions_slpc_abi.h HDRTEST drivers/gpu/drm/i915/gt/uc/abi/guc_communication_mmio_abi.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/clk_mgr.o CC [M] drivers/gpu/drm/nouveau/dispnv50/crc907d.o HDRTEST drivers/gpu/drm/i915/gt/uc/abi/guc_actions_abi.h CC [M] drivers/gpu/drm/nouveau/dispnv50/crcc37d.o HDRTEST drivers/gpu/drm/i915/gt/uc/abi/guc_communication_ctb_abi.h HDRTEST drivers/gpu/drm/i915/gt/uc/abi/guc_messages_abi.h CC [M] drivers/gpu/drm/nouveau/dispnv50/crcc57d.o CC [M] drivers/gpu/drm/nouveau/dispnv50/dac507d.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.h HDRTEST drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.h HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_reg.h HDRTEST drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.h HDRTEST drivers/gpu/drm/i915/gt/uc/intel_huc.h CC [M] drivers/gpu/drm/nouveau/dispnv50/dac907d.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce60/dce60_clk_mgr.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_gsc_binary_headers.h CC [M] drivers/gpu/drm/nouveau/dispnv50/pior507d.o CC [M] drivers/gpu/drm/nouveau/dispnv50/sor507d.o CC [M] drivers/gpu/drm/nouveau/dispnv50/sor907d.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc.h CC [M] drivers/gpu/drm/nouveau/dispnv50/sorc37d.o CC [M] drivers/gpu/drm/nouveau/dispnv50/head.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_huc_print.h CC [M] drivers/gpu/drm/nouveau/dispnv50/head507d.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce100/dce_clk_mgr.o CC [M] drivers/gpu/drm/nouveau/dispnv50/head827d.o CC [M] drivers/gpu/drm/nouveau/dispnv50/head907d.o CC [M] drivers/gpu/drm/nouveau/dispnv50/head917d.o CC [M] drivers/gpu/drm/nouveau/dispnv50/headc37d.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_huc_fw.h CC [M] drivers/gpu/drm/nouveau/dispnv50/headc57d.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce110/dce110_clk_mgr.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce112/dce112_clk_mgr.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce120/dce120_clk_mgr.o CC [M] drivers/gpu/drm/nouveau/dispnv50/wimm.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h CC [M] drivers/gpu/drm/nouveau/dispnv50/wimmc37b.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn10/rv1_clk_mgr.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn10/rv1_clk_mgr_vbios_smu.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn10/rv2_clk_mgr.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.o CC [M] drivers/gpu/drm/nouveau/dispnv50/wndw.o CC [M] drivers/gpu/drm/nouveau/dispnv50/wndwc37e.o CC [M] drivers/gpu/drm/nouveau/dispnv50/wndwc57e.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn201/dcn201_clk_mgr.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_capture.h HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.h CC [M] drivers/gpu/drm/nouveau/dispnv50/wndwc67e.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn21/rn_clk_mgr.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.h HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_submission.h CC [M] drivers/gpu/drm/nouveau/dispnv50/base.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_slpc_types.h CC [M] drivers/gpu/drm/nouveau/dispnv50/base507c.o CC [M] drivers/gpu/drm/nouveau/dispnv50/base827c.o CC [M] drivers/gpu/drm/nouveau/dispnv50/base907c.o CC [M] drivers/gpu/drm/nouveau/dispnv50/base917c.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_log.h HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.h CC [M] drivers/gpu/drm/nouveau/dispnv50/curs.o CC [M] drivers/gpu/drm/nouveau/dispnv50/curs507a.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn30/dcn30_clk_mgr.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h CC [M] drivers/gpu/drm/nouveau/dispnv50/curs907a.o CC [M] drivers/gpu/drm/nouveau/dispnv50/cursc37a.o CC [M] drivers/gpu/drm/nouveau/dispnv50/oimm.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn30/dcn30_clk_mgr_smu_msg.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn301/vg_clk_mgr.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_ads.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn301/dcn301_smu.o CC [M] drivers/gpu/drm/nouveau/dispnv50/oimm507b.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn31/dcn31_smu.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn31/dcn31_clk_mgr.o CC [M] drivers/gpu/drm/nouveau/dispnv50/ovly.o CC [M] drivers/gpu/drm/nouveau/dispnv50/ovly507e.o CC [M] drivers/gpu/drm/nouveau/dispnv50/ovly827e.o CC [M] drivers/gpu/drm/nouveau/dispnv50/ovly907e.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.h CC [M] drivers/gpu/drm/nouveau/dispnv50/ovly917e.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_rc.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn314/dcn314_smu.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn314/dcn314_clk_mgr.o CC [M] drivers/gpu/drm/nouveau/nouveau_abi16.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn315/dcn315_smu.o HDRTEST drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.h CC [M] drivers/gpu/drm/nouveau/nouveau_chan.o HDRTEST drivers/gpu/drm/i915/gt/intel_hwconfig.h CC [M] drivers/gpu/drm/nouveau/nouveau_dma.o CC [M] drivers/gpu/drm/nouveau/nouveau_fence.o HDRTEST drivers/gpu/drm/i915/gt/intel_llc.h CC [M] drivers/gpu/drm/nouveau/nv04_fence.o HDRTEST drivers/gpu/drm/i915/gt/gen8_engine_cs.h CC [M] drivers/gpu/drm/nouveau/nv10_fence.o HDRTEST drivers/gpu/drm/i915/gt/intel_sseu_debugfs.h HDRTEST drivers/gpu/drm/i915/gt/intel_rc6_types.h CC [M] drivers/gpu/drm/nouveau/nv17_fence.o HDRTEST drivers/gpu/drm/i915/gt/intel_context_param.h CC [M] drivers/gpu/drm/nouveau/nv50_fence.o CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn315/dcn315_clk_mgr.o HDRTEST drivers/gpu/drm/i915/gt/intel_gpu_commands.h CC [M] drivers/gpu/drm/nouveau/nv84_fence.o HDRTEST drivers/gpu/drm/i915/gt/intel_engine_user.h CC [M] drivers/gpu/drm/nouveau/nvc0_fence.o HDRTEST drivers/gpu/drm/i915/gt/intel_gt_irq.h HDRTEST drivers/gpu/drm/i915/gt/intel_gsc.h HDRTEST drivers/gpu/drm/i915/gt/intel_rps.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn316/dcn316_smu.o HDRTEST drivers/gpu/drm/i915/gt/intel_tlb.h HDRTEST drivers/gpu/drm/i915/gt/selftest_llc.h CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn316/dcn316_clk_mgr.o CC ^ permalink raw reply [flat|nested] 29+ messages in thread
* [Intel-xe] ✗ CI.Hooks: failure for drm/xe/pmu: Enable PMU interface (rev5) 2023-08-30 5:15 [Intel-xe] [PATCH v5 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty ` (6 preceding siblings ...) 2023-08-30 5:19 ` [Intel-xe] ✓ CI.Build: success for drm/xe/pmu: Enable PMU interface (rev5) Patchwork @ 2023-08-30 5:19 ` Patchwork 7 siblings, 0 replies; 29+ messages in thread From: Patchwork @ 2023-08-30 5:19 UTC (permalink / raw) To: Iddamsetty, Aravind; +Cc: intel-xe == Series Details == Series: drm/xe/pmu: Enable PMU interface (rev5) URL : https://patchwork.freedesktop.org/series/119504/ State : failure == Summary == run-parts: executing /workspace/ci/hooks/00-showenv + pwd + ls -la /workspace total 900 drwxrwxr-x 10 1003 1003 4096 Aug 30 05:19 . drwxr-xr-x 1 root root 4096 Aug 30 05:19 .. -rw-rw-r-- 1 1003 1003 787778 Aug 30 05:18 build.log -rw-rw-r-- 1 1003 1003 3348 Aug 30 05:10 checkpatch.log drwxrwxr-x 5 1003 1003 4096 Aug 30 05:08 ci drwxrwxr-x 9 1003 1003 4096 Aug 30 05:08 docker drwxrwxr-x 8 1003 1003 4096 Aug 30 05:08 .git -rw-rw-r-- 1 1003 1003 427 Aug 30 05:10 git_apply.log drwxrwxr-x 4 1003 1003 4096 Aug 30 05:08 .github -rw-rw-r-- 1 1003 1003 233 Aug 30 05:08 .groovylintrc.json -rw-rw-r-- 1 1003 1003 78 Aug 30 05:19 hooks.log drwxrwxr-x 31 1003 1003 4096 Aug 30 05:18 kernel -rw-rw-r-- 1 1003 1003 33255 Aug 30 05:10 kernel.mbox -rw-rw-r-- 1 1003 1003 26482 Aug 30 05:12 kunit.log -rw-rw-r-- 1 1003 1003 48 Aug 30 05:10 parent.tag drwxrwxr-x 45 1003 1003 4096 Aug 30 05:08 pipelines -rw-rw-r-- 1 1003 1003 793 Aug 30 05:08 README.adoc drwxrwxr-x 3 1003 1003 4096 Aug 30 05:08 scripts drwxrwxr-x 2 1003 1003 4096 Aug 30 05:08 .vscode + uname -a Linux 672a999f7938 5.4.0-149-generic #166-Ubuntu SMP Tue Apr 18 16:51:45 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux + export + grep -Ei '(^|\W)CI_' declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64" declare -x CI_KERNEL_IMAGES_DIR="/workspace/kernel/archive/boot" declare -x CI_KERNEL_MODULES_DIR="/workspace/kernel/archive" declare -x CI_KERNEL_SRC_DIR="/workspace/kernel" declare -x CI_SRC_DIR="/workspace/kernel" declare -x CI_TOOLS_SRC_DIR="/workspace/ci" declare -x CI_WORKSPACE_DIR="/workspace" + '[' -n /workspace ']' + git_args='-C /workspace/kernel' + git_log_args= + git --no-pager -C /workspace/kernel log --format=oneline --abbrev-commit 1383c6d77 drm/xe/pmu: Enable PMU interface ed9177ea7 drm/xe: Use spinlock in forcewake instead of mutex b37fcfd4c drm/xe: Get GT clock to nanosecs 7af4e6595 fixup! drm/xe/pvc: Use fast copy engines as migrate engine on PVC run-parts: executing /workspace/ci/hooks/10-build-W1 + SRC_DIR=/workspace/kernel + RESTORE_DISPLAY_CONFIG=0 + '[' -n /workspace/kernel/build64 ']' + BUILD_DIR=/workspace/kernel/build64 + cd /workspace/kernel + grep -q -e '^CONFIG_DRM_XE_DISPLAY=[yY]' /workspace/kernel/build64/.config grep: /workspace/kernel/build64/.config: No such file or directory + trap cleanup EXIT + ./scripts/config --file /workspace/kernel/build64/.config --disable CONFIG_DRM_XE_DISPLAY grep: /workspace/kernel/build64/.config: No such file or directory ./scripts/config: line 116: /workspace/kernel/build64/.config: No such file or directory + cleanup + '[' 0 -eq 1 ']' run-parts: /workspace/ci/hooks/10-build-W1 exited with return code 1 ^ permalink raw reply [flat|nested] 29+ messages in thread
* [Intel-xe] [PATCH v6 0/3] drm/xe/pmu: Enable PMU interface
@ 2023-09-01 7:06 Aravind Iddamsetty
2023-09-01 7:06 ` [Intel-xe] [PATCH v3 1/3] drm/xe: Get GT clock to nanosecs Aravind Iddamsetty
0 siblings, 1 reply; 29+ messages in thread
From: Aravind Iddamsetty @ 2023-09-01 7:06 UTC (permalink / raw)
To: intel-xe; +Cc: rodrigo.vivi
There are a set of engine group busyness counters provided by HW which are
perfect fit to be exposed via PMU perf events.
BSPEC: 46559, 46560, 46722, 46729, 52071, 71028
events can be listed using:
perf list
xe_0000_03_00.0/any-engine-group-busy-gt0/ [Kernel PMU event]
xe_0000_03_00.0/copy-group-busy-gt0/ [Kernel PMU event]
xe_0000_03_00.0/interrupts/ [Kernel PMU event]
xe_0000_03_00.0/media-group-busy-gt0/ [Kernel PMU event]
xe_0000_03_00.0/render-group-busy-gt0/ [Kernel PMU event]
and can be read using:
perf stat -e "xe_0000_8c_00.0/render-group-busy-gt0/" -I 1000
time counts unit events
1.001139062 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
2.003294678 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
3.005199582 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
4.007076497 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
5.008553068 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
6.010531563 43520 ns xe_0000_8c_00.0/render-group-busy-gt0/
7.012468029 44800 ns xe_0000_8c_00.0/render-group-busy-gt0/
8.013463515 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
9.015300183 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
10.017233010 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
10.971934120 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
The pmu base implementation is taken from i915.
v6:
1. drop engine_busyness_sample_type
2. update UAPI documentation
v5:
1. Use spinlock in forcewake instead of mutex
2. take forcewake when accessing the OAG registers
v4: minor nits.
v3:
1. drop init_samples, as storing counters before going to suspend should
be sufficient.
2. ported the "drm/i915/pmu: Make PMU sample array two-dimensional" and
dropped helpers to store and read samples.
3. use xe_device_mem_access_get_if_ongoing to check if device is active
before reading the OA registers.
4. dropped format attr as no longer needed
5. introduce xe_pmu_suspend to call engine_group_busyness_store
6. few other nits.
v2:
Store last known value when device is awake return that while the GT is
suspended and then update the driver copy when read during awake.
Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Aravind Iddamsetty (3):
drm/xe: Get GT clock to nanosecs
drm/xe: Use spinlock in forcewake instead of mutex
drm/xe/pmu: Enable PMU interface
drivers/gpu/drm/xe/Makefile | 2 +
drivers/gpu/drm/xe/regs/xe_gt_regs.h | 5 +
drivers/gpu/drm/xe/xe_device.c | 2 +
drivers/gpu/drm/xe/xe_device_types.h | 4 +
drivers/gpu/drm/xe/xe_force_wake.c | 14 +-
drivers/gpu/drm/xe/xe_force_wake_types.h | 2 +-
drivers/gpu/drm/xe/xe_gt.c | 2 +
drivers/gpu/drm/xe/xe_gt_clock.c | 5 +
drivers/gpu/drm/xe/xe_gt_clock.h | 4 +-
drivers/gpu/drm/xe/xe_irq.c | 18 +
drivers/gpu/drm/xe/xe_module.c | 5 +
drivers/gpu/drm/xe/xe_pmu.c | 661 +++++++++++++++++++++++
drivers/gpu/drm/xe/xe_pmu.h | 25 +
drivers/gpu/drm/xe/xe_pmu_types.h | 76 +++
include/uapi/drm/xe_drm.h | 39 ++
15 files changed, 855 insertions(+), 9 deletions(-)
create mode 100644 drivers/gpu/drm/xe/xe_pmu.c
create mode 100644 drivers/gpu/drm/xe/xe_pmu.h
create mode 100644 drivers/gpu/drm/xe/xe_pmu_types.h
--
2.25.1
^ permalink raw reply [flat|nested] 29+ messages in thread* [Intel-xe] [PATCH v3 1/3] drm/xe: Get GT clock to nanosecs 2023-09-01 7:06 [Intel-xe] [PATCH v6 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty @ 2023-09-01 7:06 ` Aravind Iddamsetty 0 siblings, 0 replies; 29+ messages in thread From: Aravind Iddamsetty @ 2023-09-01 7:06 UTC (permalink / raw) To: intel-xe; +Cc: rodrigo.vivi Helper to convert GT clock cycles to nanoseconds. v2: Use DIV_ROUND_CLOSEST_ULL helper(Ashutosh) v3: rename xe_gt_clock_interval_to_ns to xe_gt_clock_cycles_to_ns Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com> Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com> Signed-off-by: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com> --- drivers/gpu/drm/xe/xe_gt_clock.c | 5 +++++ drivers/gpu/drm/xe/xe_gt_clock.h | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/xe/xe_gt_clock.c b/drivers/gpu/drm/xe/xe_gt_clock.c index 2f77b8bbcf53..c67080ce1593 100644 --- a/drivers/gpu/drm/xe/xe_gt_clock.c +++ b/drivers/gpu/drm/xe/xe_gt_clock.c @@ -78,3 +78,8 @@ int xe_gt_clock_init(struct xe_gt *gt) gt->info.clock_freq = freq; return 0; } + +u64 xe_gt_clock_cycles_to_ns(const struct xe_gt *gt, u64 count) +{ + return DIV_ROUND_CLOSEST_ULL(count * NSEC_PER_SEC, gt->info.clock_freq); +} diff --git a/drivers/gpu/drm/xe/xe_gt_clock.h b/drivers/gpu/drm/xe/xe_gt_clock.h index 511923afd224..aa162722f859 100644 --- a/drivers/gpu/drm/xe/xe_gt_clock.h +++ b/drivers/gpu/drm/xe/xe_gt_clock.h @@ -6,8 +6,10 @@ #ifndef _XE_GT_CLOCK_H_ #define _XE_GT_CLOCK_H_ +#include <linux/types.h> + struct xe_gt; int xe_gt_clock_init(struct xe_gt *gt); - +u64 xe_gt_clock_cycles_to_ns(const struct xe_gt *gt, u64 count); #endif -- 2.25.1 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Intel-xe] [PATCH v7 0/3] drm/xe/pmu: Enable PMU interface
@ 2023-09-14 6:13 Aravind Iddamsetty
2023-09-14 6:13 ` [Intel-xe] [PATCH v3 1/3] drm/xe: Get GT clock to nanosecs Aravind Iddamsetty
0 siblings, 1 reply; 29+ messages in thread
From: Aravind Iddamsetty @ 2023-09-14 6:13 UTC (permalink / raw)
To: intel-xe; +Cc: rodrigo.vivi
There are a set of engine group busyness counters provided by HW which are
perfect fit to be exposed via PMU perf events.
BSPEC: 46559, 46560, 46722, 46729, 52071, 71028
events can be listed using:
perf list
xe_0000_03_00.0/any-engine-group-busy-gt0/ [Kernel PMU event]
xe_0000_03_00.0/copy-group-busy-gt0/ [Kernel PMU event]
xe_0000_03_00.0/interrupts/ [Kernel PMU event]
xe_0000_03_00.0/media-group-busy-gt0/ [Kernel PMU event]
xe_0000_03_00.0/render-group-busy-gt0/ [Kernel PMU event]
and can be read using:
perf stat -e "xe_0000_8c_00.0/render-group-busy-gt0/" -I 1000
time counts unit events
1.001139062 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
2.003294678 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
3.005199582 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
4.007076497 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
5.008553068 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
6.010531563 43520 ns xe_0000_8c_00.0/render-group-busy-gt0/
7.012468029 44800 ns xe_0000_8c_00.0/render-group-busy-gt0/
8.013463515 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
9.015300183 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
10.017233010 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
10.971934120 0 ns xe_0000_8c_00.0/render-group-busy-gt0/
The pmu base implementation is taken from i915.
v7:
1. update UAPI documentation
2. drop MEDIA_GT specific change for media busyness counter.
v6:
1. drop engine_busyness_sample_type
2. update UAPI documentation
v5:
1. Use spinlock in forcewake instead of mutex
2. take forcewake when accessing the OAG registers
v4: minor nits.
v3:
1. drop init_samples, as storing counters before going to suspend should
be sufficient.
2. ported the "drm/i915/pmu: Make PMU sample array two-dimensional" and
dropped helpers to store and read samples.
3. use xe_device_mem_access_get_if_ongoing to check if device is active
before reading the OA registers.
4. dropped format attr as no longer needed
5. introduce xe_pmu_suspend to call engine_group_busyness_store
6. few other nits.
v2:
Store last known value when device is awake return that while the GT is
suspended and then update the driver copy when read during awake.
Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Aravind Iddamsetty (3):
drm/xe: Get GT clock to nanosecs
drm/xe: Use spinlock in forcewake instead of mutex
drm/xe/pmu: Enable PMU interface
drivers/gpu/drm/xe/Makefile | 2 +
drivers/gpu/drm/xe/regs/xe_gt_regs.h | 5 +
drivers/gpu/drm/xe/xe_device.c | 2 +
drivers/gpu/drm/xe/xe_device_types.h | 4 +
drivers/gpu/drm/xe/xe_force_wake.c | 14 +-
drivers/gpu/drm/xe/xe_force_wake_types.h | 2 +-
drivers/gpu/drm/xe/xe_gt.c | 2 +
drivers/gpu/drm/xe/xe_gt_clock.c | 5 +
drivers/gpu/drm/xe/xe_gt_clock.h | 4 +-
drivers/gpu/drm/xe/xe_irq.c | 18 +
drivers/gpu/drm/xe/xe_module.c | 5 +
drivers/gpu/drm/xe/xe_pmu.c | 654 +++++++++++++++++++++++
drivers/gpu/drm/xe/xe_pmu.h | 25 +
drivers/gpu/drm/xe/xe_pmu_types.h | 76 +++
include/uapi/drm/xe_drm.h | 38 ++
15 files changed, 847 insertions(+), 9 deletions(-)
create mode 100644 drivers/gpu/drm/xe/xe_pmu.c
create mode 100644 drivers/gpu/drm/xe/xe_pmu.h
create mode 100644 drivers/gpu/drm/xe/xe_pmu_types.h
--
2.25.1
^ permalink raw reply [flat|nested] 29+ messages in thread* [Intel-xe] [PATCH v3 1/3] drm/xe: Get GT clock to nanosecs 2023-09-14 6:13 [Intel-xe] [PATCH v7 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty @ 2023-09-14 6:13 ` Aravind Iddamsetty 0 siblings, 0 replies; 29+ messages in thread From: Aravind Iddamsetty @ 2023-09-14 6:13 UTC (permalink / raw) To: intel-xe; +Cc: rodrigo.vivi Helper to convert GT clock cycles to nanoseconds. v2: Use DIV_ROUND_CLOSEST_ULL helper(Ashutosh) v3: rename xe_gt_clock_interval_to_ns to xe_gt_clock_cycles_to_ns Reviewed-by: Tejas Upadhyay <tejas.upadhyay@intel.com> Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com> Signed-off-by: Aravind Iddamsetty <aravind.iddamsetty@linux.intel.com> --- drivers/gpu/drm/xe/xe_gt_clock.c | 5 +++++ drivers/gpu/drm/xe/xe_gt_clock.h | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/xe/xe_gt_clock.c b/drivers/gpu/drm/xe/xe_gt_clock.c index 9136937324f3..25a18eaad9c4 100644 --- a/drivers/gpu/drm/xe/xe_gt_clock.c +++ b/drivers/gpu/drm/xe/xe_gt_clock.c @@ -78,3 +78,8 @@ int xe_gt_clock_init(struct xe_gt *gt) gt->info.clock_freq = freq; return 0; } + +u64 xe_gt_clock_cycles_to_ns(const struct xe_gt *gt, u64 count) +{ + return DIV_ROUND_CLOSEST_ULL(count * NSEC_PER_SEC, gt->info.clock_freq); +} diff --git a/drivers/gpu/drm/xe/xe_gt_clock.h b/drivers/gpu/drm/xe/xe_gt_clock.h index 511923afd224..aa162722f859 100644 --- a/drivers/gpu/drm/xe/xe_gt_clock.h +++ b/drivers/gpu/drm/xe/xe_gt_clock.h @@ -6,8 +6,10 @@ #ifndef _XE_GT_CLOCK_H_ #define _XE_GT_CLOCK_H_ +#include <linux/types.h> + struct xe_gt; int xe_gt_clock_init(struct xe_gt *gt); - +u64 xe_gt_clock_cycles_to_ns(const struct xe_gt *gt, u64 count); #endif -- 2.25.1 ^ permalink raw reply related [flat|nested] 29+ messages in thread
end of thread, other threads:[~2023-09-14 6:05 UTC | newest] Thread overview: 29+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-08-30 5:15 [Intel-xe] [PATCH v5 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty 2023-08-30 5:10 ` [Intel-xe] ✓ CI.Patch_applied: success for drm/xe/pmu: Enable PMU interface (rev5) Patchwork 2023-08-30 5:10 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork 2023-08-30 5:12 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork 2023-08-30 5:15 ` [Intel-xe] [PATCH v3 1/3] drm/xe: Get GT clock to nanosecs Aravind Iddamsetty 2023-08-30 5:15 ` [Intel-xe] [PATCH 2/3] drm/xe: Use spinlock in forcewake instead of mutex Aravind Iddamsetty 2023-08-30 5:33 ` Dixit, Ashutosh 2023-08-30 20:56 ` Rodrigo Vivi 2023-08-30 22:19 ` Dixit, Ashutosh 2023-08-31 4:13 ` Aravind Iddamsetty 2023-08-30 5:15 ` [Intel-xe] [PATCH v5 3/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty 2023-08-30 20:58 ` Rodrigo Vivi 2023-08-31 20:45 ` Dixit, Ashutosh 2023-08-31 22:14 ` Aravind Iddamsetty 2023-08-31 4:48 ` Dixit, Ashutosh 2023-08-31 10:29 ` Aravind Iddamsetty 2023-08-31 16:58 ` Dixit, Ashutosh 2023-08-31 22:11 ` Aravind Iddamsetty 2023-08-31 22:21 ` Belgaumkar, Vinay 2023-08-31 23:11 ` Aravind Iddamsetty 2023-08-31 23:22 ` Belgaumkar, Vinay 2023-08-31 23:16 ` Dixit, Ashutosh 2023-08-31 23:57 ` Belgaumkar, Vinay 2023-08-31 23:58 ` Dixit, Ashutosh 2023-09-01 3:34 ` Aravind Iddamsetty 2023-08-30 5:19 ` [Intel-xe] ✓ CI.Build: success for drm/xe/pmu: Enable PMU interface (rev5) Patchwork 2023-08-30 5:19 ` [Intel-xe] ✗ CI.Hooks: failure " Patchwork -- strict thread matches above, loose matches on Subject: below -- 2023-09-01 7:06 [Intel-xe] [PATCH v6 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty 2023-09-01 7:06 ` [Intel-xe] [PATCH v3 1/3] drm/xe: Get GT clock to nanosecs Aravind Iddamsetty 2023-09-14 6:13 [Intel-xe] [PATCH v7 0/3] drm/xe/pmu: Enable PMU interface Aravind Iddamsetty 2023-09-14 6:13 ` [Intel-xe] [PATCH v3 1/3] drm/xe: Get GT clock to nanosecs Aravind Iddamsetty
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox