All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-xe] ✓ CI.Patch_applied: success for drm/xe: Add engine scheduler control interface
  2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
@ 2023-06-15 14:16 ` Patchwork
  2023-06-15 14:17 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2023-06-15 14:16 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Add engine scheduler control interface
URL   : https://patchwork.freedesktop.org/series/119392/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-xe-next' with base: ===
Base commit: 6d2981d42 drm/xe/mtl: Add some initial MTL workarounds
=== git am output follows ===
.git/rebase-apply/patch:27: new blank line at EOF.
+
.git/rebase-apply/patch:72: new blank line at EOF.
+
warning: 2 lines add whitespace errors.
Applying: drm/xe: Add sysfs entries for engines under its GT
Applying: drm/xe: Add sysfs for default engine scheduler properties
Applying: drm/xe: Add job timeout engine property to sysfs
Applying: drm/xe: Add timeslice duration engine property to sysfs
Applying: drm/xe: Add sysfs for preempt reset timeout
Applying: drm/xe: Add min/max cap for engine scheduler properties



^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Intel-xe] ✗ CI.checkpatch: warning for drm/xe: Add engine scheduler control interface
  2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
  2023-06-15 14:16 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
@ 2023-06-15 14:17 ` Patchwork
  2023-06-15 14:18 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2023-06-15 14:17 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Add engine scheduler control interface
URL   : https://patchwork.freedesktop.org/series/119392/
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
c7d32770e3cd31d9fc134ce41f329b10aa33ee15
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit e966556bbabe3e96d6c1dbc049be18d88c435ba4
Author: Tejas Upadhyay <tejas.upadhyay@intel.com>
Date:   Thu Jun 15 19:49:33 2023 +0530

    drm/xe: Add min/max cap for engine scheduler properties
    
    Add sysfs entries for the min, max, and defaults for each of
    engine scheduler controls for every hardware engine class.
    
    Non-elevated user IOCTLs to set these controls must be within
    the min-max ranges of the sysfs entries, elevated user can set
    these controls to any value.
    
    Introducing compile time CONFIG min-max values which restricts elevated
    user to be in compile time min-max range if at all sysfs min/max
    are violated.
    
    Sysfs entries examples are,
    DUT# cat /sys/class/drm/cardX/device/gtN/engines/ccs/.defaults/
    job_timeout_max         job_timeout_ms          preempt_timeout_min     timeslice_duration_max  timeslice_duration_us
    job_timeout_min         preempt_timeout_max     preempt_timeout_us      timeslice_duration_min
    
    DUT# cat /sys/class/drm/card1/device/gt1/engines/ccs/
    .defaults/              job_timeout_min         preempt_timeout_max     preempt_timeout_us      timeslice_duration_min
    job_timeout_max         job_timeout_ms          preempt_timeout_min     timeslice_duration_max  timeslice_duration_us
    
    Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
+ /mt/dim checkpatch 6d2981d42cd891965094ec7d173203520cfa36f7 drm-intel
3938e4f64 drm/xe: Add sysfs entries for engines under its GT
-:46: WARNING:CONST_STRUCT: struct kobj_type should normally be const
#46: FILE: drivers/gpu/drm/xe/xe_gt_sysfs.c:30:
+static struct kobj_type kobj_xe_engine_type = {

-:93: CHECK:UNNECESSARY_PARENTHESES: Unnecessary parentheses around 'hwe->class == XE_ENGINE_CLASS_OTHER'
#93: FILE: drivers/gpu/drm/xe/xe_gt_sysfs.c:77:
+		if ((hwe->class == XE_ENGINE_CLASS_OTHER) ||
+		    (hwe->class == XE_ENGINE_CLASS_MAX))

-:93: CHECK:UNNECESSARY_PARENTHESES: Unnecessary parentheses around 'hwe->class == XE_ENGINE_CLASS_MAX'
#93: FILE: drivers/gpu/drm/xe/xe_gt_sysfs.c:77:
+		if ((hwe->class == XE_ENGINE_CLASS_OTHER) ||
+		    (hwe->class == XE_ENGINE_CLASS_MAX))

total: 0 errors, 1 warnings, 2 checks, 120 lines checked
3fb11cb89 drm/xe: Add sysfs for default engine scheduler properties
-:52: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#52: FILE: drivers/gpu/drm/xe/xe_gt_sysfs.c:36:
+static ssize_t job_timeout_default(struct kobject *kobj,
+				 struct kobj_attribute *attr, char *buf)

total: 0 errors, 0 warnings, 1 checks, 204 lines checked
bd6f915bc drm/xe: Add job timeout engine property to sysfs
-:25: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#25: FILE: drivers/gpu/drm/xe/xe_gt_sysfs.c:36:
+static ssize_t job_timeout_store(struct kobject *kobj,
+		struct kobj_attribute *attr,

-:45: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#45: FILE: drivers/gpu/drm/xe/xe_gt_sysfs.c:56:
+static ssize_t job_timeout_show(struct kobject *kobj,
+		struct kobj_attribute *attr, char *buf)

total: 0 errors, 0 warnings, 2 checks, 49 lines checked
c2685e795 drm/xe: Add timeslice duration engine property to sysfs
-:25: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#25: FILE: drivers/gpu/drm/xe/xe_gt_sysfs.c:36:
+static ssize_t timeslice_duration_store(struct kobject *kobj,
+		struct kobj_attribute *attr,

-:45: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#45: FILE: drivers/gpu/drm/xe/xe_gt_sysfs.c:56:
+static ssize_t timeslice_duration_show(struct kobject *kobj,
+		struct kobj_attribute *attr, char *buf)

-:54: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#54: FILE: drivers/gpu/drm/xe/xe_gt_sysfs.c:65:
+__ATTR(timeslice_duration_us, 0644, timeslice_duration_show,
+timeslice_duration_store);

total: 0 errors, 0 warnings, 3 checks, 50 lines checked
7b81a3a37 drm/xe: Add sysfs for preempt reset timeout
e966556bb drm/xe: Add min/max cap for engine scheduler properties
-:19: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line)
#19: 
job_timeout_max         job_timeout_ms          preempt_timeout_min     timeslice_duration_max  timeslice_duration_us

-:40: WARNING:EMBEDDED_FILENAME: It's generally not useful to have the filename in the file
#40: FILE: drivers/gpu/drm/xe/Kconfig:90:
+        source "drivers/gpu/drm/xe/Kconfig.profile"

-:44: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#44: 
new file mode 100644

total: 0 errors, 3 warnings, 0 checks, 646 lines checked



^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Intel-xe] ✓ CI.KUnit: success for drm/xe: Add engine scheduler control interface
  2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
  2023-06-15 14:16 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
  2023-06-15 14:17 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
@ 2023-06-15 14:18 ` Patchwork
  2023-06-15 14:19 ` [Intel-xe] [PATCH 1/6] drm/xe: Add sysfs entries for engines under its GT Tejas Upadhyay
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2023-06-15 14:18 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Add engine scheduler control interface
URL   : https://patchwork.freedesktop.org/series/119392/
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
[14:17:01] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:17:05] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
[14:17:27] Starting KUnit Kernel (1/1)...
[14:17:27] ============================================================
[14:17:27] ==================== xe_bo (2 subtests) ====================
[14:17:27] [SKIPPED] xe_ccs_migrate_kunit
[14:17:27] [SKIPPED] xe_bo_evict_kunit
[14:17:27] ===================== [SKIPPED] xe_bo ======================
[14:17:27] ================== xe_dma_buf (1 subtest) ==================
[14:17:27] [SKIPPED] xe_dma_buf_kunit
[14:17:27] =================== [SKIPPED] xe_dma_buf ===================
[14:17:27] ================== xe_migrate (1 subtest) ==================
[14:17:27] [SKIPPED] xe_migrate_sanity_kunit
[14:17:27] =================== [SKIPPED] xe_migrate ===================
[14:17:27] =================== xe_pci (2 subtests) ====================
[14:17:27] [PASSED] xe_gmdid_graphics_ip
[14:17:27] [PASSED] xe_gmdid_media_ip
[14:17:27] ===================== [PASSED] xe_pci ======================
[14:17:27] ==================== xe_rtp (1 subtest) ====================
[14:17:27] ================== xe_rtp_process_tests  ===================
[14:17:27] [PASSED] coalesce-same-reg
[14:17:27] [PASSED] no-match-no-add
[14:17:27] [PASSED] no-match-no-add-multiple-rules
[14:17:27] [PASSED] two-regs-two-entries
[14:17:27] [PASSED] clr-one-set-other
[14:17:27] [PASSED] set-field
[14:17:27] [PASSED] conflict-duplicate
[14:17:27] [PASSED] conflict-not-disjoint
[14:17:27] [PASSED] conflict-reg-type
[14:17:27] ============== [PASSED] xe_rtp_process_tests ===============
[14:17:27] ===================== [PASSED] xe_rtp ======================
[14:17:27] ==================== xe_wa (1 subtest) =====================
[14:17:27] ======================== xe_wa_gt  =========================
[14:17:27] [PASSED] TIGERLAKE (B0)
[14:17:27] [PASSED] DG1 (A0)
[14:17:27] [PASSED] DG1 (B0)
[14:17:27] [PASSED] ALDERLAKE_S (A0)
[14:17:27] [PASSED] ALDERLAKE_S (B0)
[14:17:27] [PASSED] ALDERLAKE_S (C0)
[14:17:27] [PASSED] ALDERLAKE_S (D0)
[14:17:27] [PASSED] DG2_G10 (A0)
[14:17:27] [PASSED] DG2_G10 (A1)
[14:17:27] [PASSED] DG2_G10 (B0)
[14:17:27] [PASSED] DG2_G10 (C0)
[14:17:27] [PASSED] DG2_G11 (A0)
[14:17:27] [PASSED] DG2_G11 (B0)
[14:17:27] [PASSED] DG2_G11 (B1)
[14:17:27] [PASSED] DG2_G12 (A0)
[14:17:27] [PASSED] DG2_G12 (A1)
[14:17:27] [PASSED] PVC (B0)
[14:17:27] [PASSED] PVC (B1)
[14:17:27] [PASSED] PVC (C0)
[14:17:27] ==================== [PASSED] xe_wa_gt =====================
[14:17:27] ====================== [PASSED] xe_wa ======================
[14:17:27] ============================================================
[14:17:27] Testing complete. Ran 34 tests: passed: 30, skipped: 4
[14:17:27] Elapsed time: 26.575s total, 4.270s configuring, 22.134s building, 0.142s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[14:17:28] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:17:29] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
[14:17:47] Starting KUnit Kernel (1/1)...
[14:17:47] ============================================================
[14:17:48] ============ drm_test_pick_cmdline (2 subtests) ============
[14:17:48] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[14:17:48] =============== drm_test_pick_cmdline_named  ===============
[14:17:48] [PASSED] NTSC
[14:17:48] [PASSED] NTSC-J
[14:17:48] [PASSED] PAL
[14:17:48] [PASSED] PAL-M
[14:17:48] =========== [PASSED] drm_test_pick_cmdline_named ===========
[14:17:48] ============== [PASSED] drm_test_pick_cmdline ==============
[14:17:48] ================== drm_buddy (6 subtests) ==================
[14:17:48] [PASSED] drm_test_buddy_alloc_limit
[14:17:48] [PASSED] drm_test_buddy_alloc_range
[14:17:48] [PASSED] drm_test_buddy_alloc_optimistic
[14:17:48] [PASSED] drm_test_buddy_alloc_pessimistic
[14:17:48] [PASSED] drm_test_buddy_alloc_smoke
[14:17:48] [PASSED] drm_test_buddy_alloc_pathological
[14:17:48] ==================== [PASSED] drm_buddy ====================
[14:17:48] ============= drm_cmdline_parser (40 subtests) =============
[14:17:48] [PASSED] drm_test_cmdline_force_d_only
[14:17:48] [PASSED] drm_test_cmdline_force_D_only_dvi
[14:17:48] [PASSED] drm_test_cmdline_force_D_only_hdmi
[14:17:48] [PASSED] drm_test_cmdline_force_D_only_not_digital
[14:17:48] [PASSED] drm_test_cmdline_force_e_only
[14:17:48] [PASSED] drm_test_cmdline_res
[14:17:48] [PASSED] drm_test_cmdline_res_vesa
[14:17:48] [PASSED] drm_test_cmdline_res_vesa_rblank
[14:17:48] [PASSED] drm_test_cmdline_res_rblank
[14:17:48] [PASSED] drm_test_cmdline_res_bpp
[14:17:48] [PASSED] drm_test_cmdline_res_refresh
[14:17:48] [PASSED] drm_test_cmdline_res_bpp_refresh
[14:17:48] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[14:17:48] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[14:17:48] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[14:17:48] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[14:17:48] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[14:17:48] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[14:17:48] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[14:17:48] [PASSED] drm_test_cmdline_res_margins_force_on
[14:17:48] [PASSED] drm_test_cmdline_res_vesa_margins
[14:17:48] [PASSED] drm_test_cmdline_name
[14:17:48] [PASSED] drm_test_cmdline_name_bpp
[14:17:48] [PASSED] drm_test_cmdline_name_option
[14:17:48] [PASSED] drm_test_cmdline_name_bpp_option
[14:17:48] [PASSED] drm_test_cmdline_rotate_0
[14:17:48] [PASSED] drm_test_cmdline_rotate_90
[14:17:48] [PASSED] drm_test_cmdline_rotate_180
[14:17:48] [PASSED] drm_test_cmdline_rotate_270
[14:17:48] [PASSED] drm_test_cmdline_hmirror
[14:17:48] [PASSED] drm_test_cmdline_vmirror
[14:17:48] [PASSED] drm_test_cmdline_margin_options
[14:17:48] [PASSED] drm_test_cmdline_multiple_options
[14:17:48] [PASSED] drm_test_cmdline_bpp_extra_and_option
[14:17:48] [PASSED] drm_test_cmdline_extra_and_option
[14:17:48] [PASSED] drm_test_cmdline_freestanding_options
[14:17:48] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[14:17:48] [PASSED] drm_test_cmdline_panel_orientation
[14:17:48] ================ drm_test_cmdline_invalid  =================
[14:17:48] [PASSED] margin_only
[14:17:48] [PASSED] interlace_only
[14:17:48] [PASSED] res_missing_x
[14:17:48] [PASSED] res_missing_y
[14:17:48] [PASSED] res_bad_y
[14:17:48] [PASSED] res_missing_y_bpp
[14:17:48] [PASSED] res_bad_bpp
[14:17:48] [PASSED] res_bad_refresh
[14:17:48] [PASSED] res_bpp_refresh_force_on_off
[14:17:48] [PASSED] res_invalid_mode
[14:17:48] [PASSED] res_bpp_wrong_place_mode
[14:17:48] [PASSED] name_bpp_refresh
[14:17:48] [PASSED] name_refresh
[14:17:48] [PASSED] name_refresh_wrong_mode
[14:17:48] [PASSED] name_refresh_invalid_mode
[14:17:48] [PASSED] rotate_multiple
[14:17:48] [PASSED] rotate_invalid_val
[14:17:48] [PASSED] rotate_truncated
[14:17:48] [PASSED] invalid_option
[14:17:48] [PASSED] invalid_tv_option
[14:17:48] [PASSED] truncated_tv_option
[14:17:48] ============ [PASSED] drm_test_cmdline_invalid =============
[14:17:48] =============== drm_test_cmdline_tv_options  ===============
[14:17:48] [PASSED] NTSC
[14:17:48] [PASSED] NTSC_443
[14:17:48] [PASSED] NTSC_J
[14:17:48] [PASSED] PAL
[14:17:48] [PASSED] PAL_M
[14:17:48] [PASSED] PAL_N
[14:17:48] [PASSED] SECAM
[14:17:48] =========== [PASSED] drm_test_cmdline_tv_options ===========
[14:17:48] =============== [PASSED] drm_cmdline_parser ================
[14:17:48] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[14:17:48] ========== drm_test_get_tv_mode_from_name_valid  ===========
[14:17:48] [PASSED] NTSC
[14:17:48] [PASSED] NTSC-443
[14:17:48] [PASSED] NTSC-J
[14:17:48] [PASSED] PAL
[14:17:48] [PASSED] PAL-M
[14:17:48] [PASSED] PAL-N
[14:17:48] [PASSED] SECAM
[14:17:48] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[14:17:48] [PASSED] drm_test_get_tv_mode_from_name_truncated
[14:17:48] ============ [PASSED] drm_get_tv_mode_from_name ============
[14:17:48] ============= drm_damage_helper (21 subtests) ==============
[14:17:48] [PASSED] drm_test_damage_iter_no_damage
[14:17:48] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[14:17:48] [PASSED] drm_test_damage_iter_no_damage_src_moved
[14:17:48] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[14:17:48] [PASSED] drm_test_damage_iter_no_damage_not_visible
[14:17:48] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[14:17:48] [PASSED] drm_test_damage_iter_no_damage_no_fb
[14:17:48] [PASSED] drm_test_damage_iter_simple_damage
[14:17:48] [PASSED] drm_test_damage_iter_single_damage
[14:17:48] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[14:17:48] [PASSED] drm_test_damage_iter_single_damage_outside_src
[14:17:48] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[14:17:48] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[14:17:48] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[14:17:48] [PASSED] drm_test_damage_iter_single_damage_src_moved
[14:17:48] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[14:17:48] [PASSED] drm_test_damage_iter_damage
[14:17:48] [PASSED] drm_test_damage_iter_damage_one_intersect
[14:17:48] [PASSED] drm_test_damage_iter_damage_one_outside
[14:17:48] [PASSED] drm_test_damage_iter_damage_src_moved
[14:17:48] [PASSED] drm_test_damage_iter_damage_not_visible
[14:17:48] ================ [PASSED] drm_damage_helper ================
[14:17:48] ============== drm_dp_mst_helper (2 subtests) ==============
[14:17:48] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[14:17:48] [PASSED] Clock 154000 BPP 30 DSC disabled
[14:17:48] [PASSED] Clock 234000 BPP 30 DSC disabled
[14:17:48] [PASSED] Clock 297000 BPP 24 DSC disabled
[14:17:48] [PASSED] Clock 332880 BPP 24 DSC enabled
[14:17:48] [PASSED] Clock 324540 BPP 24 DSC enabled
[14:17:48] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[14:17:48] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[14:17:48] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[14:17:48] [PASSED] DP_POWER_UP_PHY with port number
[14:17:48] [PASSED] DP_POWER_DOWN_PHY with port number
[14:17:48] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[14:17:48] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[14:17:48] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[14:17:48] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[14:17:48] [PASSED] DP_QUERY_PAYLOAD with port number
[14:17:48] [PASSED] DP_QUERY_PAYLOAD with VCPI
[14:17:48] [PASSED] DP_REMOTE_DPCD_READ with port number
[14:17:48] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[14:17:48] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[14:17:48] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[14:17:48] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[14:17:48] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[14:17:48] [PASSED] DP_REMOTE_I2C_READ with port number
[14:17:48] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[14:17:48] [PASSED] DP_REMOTE_I2C_READ with transactions array
[14:17:48] [PASSED] DP_REMOTE_I2C_WRITE with port number
[14:17:48] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[14:17:48] [PASSED] DP_REMOTE_I2C_WRITE with data array
[14:17:48] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[14:17:48] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[14:17:48] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[14:17:48] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[14:17:48] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[14:17:48] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[14:17:48] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[14:17:48] ================ [PASSED] drm_dp_mst_helper ================
[14:17:48] =========== drm_format_helper_test (11 subtests) ===========
[14:17:48] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[14:17:48] [PASSED] single_pixel_source_buffer
[14:17:48] [PASSED] single_pixel_clip_rectangle
[14:17:48] [PASSED] well_known_colors
[14:17:48] [PASSED] destination_pitch
[14:17:48] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[14:17:48] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[14:17:48] [PASSED] single_pixel_source_buffer
[14:17:48] [PASSED] single_pixel_clip_rectangle
[14:17:48] [PASSED] well_known_colors
[14:17:48] [PASSED] destination_pitch
[14:17:48] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[14:17:48] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[14:17:48] [PASSED] single_pixel_source_buffer
[14:17:48] [PASSED] single_pixel_clip_rectangle
[14:17:48] [PASSED] well_known_colors
[14:17:48] [PASSED] destination_pitch
[14:17:48] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[14:17:48] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[14:17:48] [PASSED] single_pixel_source_buffer
[14:17:48] [PASSED] single_pixel_clip_rectangle
[14:17:48] [PASSED] well_known_colors
[14:17:48] [PASSED] destination_pitch
[14:17:48] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[14:17:48] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[14:17:48] [PASSED] single_pixel_source_buffer
[14:17:48] [PASSED] single_pixel_clip_rectangle
[14:17:48] [PASSED] well_known_colors
[14:17:48] [PASSED] destination_pitch
[14:17:48] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[14:17:48] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[14:17:48] [PASSED] single_pixel_source_buffer
[14:17:48] [PASSED] single_pixel_clip_rectangle
[14:17:48] [PASSED] well_known_colors
[14:17:48] [PASSED] destination_pitch
[14:17:48] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[14:17:48] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[14:17:48] [PASSED] single_pixel_source_buffer
[14:17:48] [PASSED] single_pixel_clip_rectangle
[14:17:48] [PASSED] well_known_colors
[14:17:48] [PASSED] destination_pitch
[14:17:48] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[14:17:48] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[14:17:48] [PASSED] single_pixel_source_buffer
[14:17:48] [PASSED] single_pixel_clip_rectangle
[14:17:48] [PASSED] well_known_colors
[14:17:48] [PASSED] destination_pitch
[14:17:48] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[14:17:48] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[14:17:48] [PASSED] single_pixel_source_buffer
[14:17:48] [PASSED] single_pixel_clip_rectangle
[14:17:48] [PASSED] well_known_colors
[14:17:48] [PASSED] destination_pitch
[14:17:48] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[14:17:48] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[14:17:48] [PASSED] single_pixel_source_buffer
[14:17:48] [PASSED] single_pixel_clip_rectangle
[14:17:48] [PASSED] well_known_colors
[14:17:48] [PASSED] destination_pitch
[14:17:48] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[14:17:48] ============== drm_test_fb_xrgb8888_to_mono  ===============
[14:17:48] [PASSED] single_pixel_source_buffer
[14:17:48] [PASSED] single_pixel_clip_rectangle
[14:17:48] [PASSED] well_known_colors
[14:17:48] [PASSED] destination_pitch
[14:17:48] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[14:17:48] ============= [PASSED] drm_format_helper_test ==============
[14:17:48] ================= drm_format (18 subtests) =================
[14:17:48] [PASSED] drm_test_format_block_width_invalid
[14:17:48] [PASSED] drm_test_format_block_width_one_plane
[14:17:48] [PASSED] drm_test_format_block_width_two_plane
[14:17:48] [PASSED] drm_test_format_block_width_three_plane
[14:17:48] [PASSED] drm_test_format_block_width_tiled
[14:17:48] [PASSED] drm_test_format_block_height_invalid
[14:17:48] [PASSED] drm_test_format_block_height_one_plane
[14:17:48] [PASSED] drm_test_format_block_height_two_plane
[14:17:48] [PASSED] drm_test_format_block_height_three_plane
[14:17:48] [PASSED] drm_test_format_block_height_tiled
[14:17:48] [PASSED] drm_test_format_min_pitch_invalid
[14:17:48] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[14:17:48] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[14:17:48] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[14:17:48] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[14:17:48] [PASSED] drm_test_format_min_pitch_two_plane
[14:17:48] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[14:17:48] [PASSED] drm_test_format_min_pitch_tiled
[14:17:48] =================== [PASSED] drm_format ====================
[14:17:48] =============== drm_framebuffer (1 subtest) ================
[14:17:48] =============== drm_test_framebuffer_create  ===============
[14:17:48] [PASSED] ABGR8888 normal sizes
[14:17:48] [PASSED] ABGR8888 max sizes
[14:17:48] [PASSED] ABGR8888 pitch greater than min required
[14:17:48] [PASSED] ABGR8888 pitch less than min required
[14:17:48] [PASSED] ABGR8888 Invalid width
[14:17:48] [PASSED] ABGR8888 Invalid buffer handle
[14:17:48] [PASSED] No pixel format
[14:17:48] [PASSED] ABGR8888 Width 0
[14:17:48] [PASSED] ABGR8888 Height 0
[14:17:48] [PASSED] ABGR8888 Out of bound height * pitch combination
[14:17:48] [PASSED] ABGR8888 Large buffer offset
[14:17:48] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[14:17:48] [PASSED] ABGR8888 Valid buffer modifier
[14:17:48] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[14:17:48] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[14:17:48] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[14:17:48] [PASSED] NV12 Normal sizes
[14:17:48] [PASSED] NV12 Max sizes
[14:17:48] [PASSED] NV12 Invalid pitch
[14:17:48] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[14:17:48] [PASSED] NV12 different  modifier per-plane
[14:17:48] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[14:17:48] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[14:17:48] [PASSED] NV12 Modifier for inexistent plane
[14:17:48] [PASSED] NV12 Handle for inexistent plane
[14:17:48] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[14:17:48] [PASSED] YVU420 Normal sizes
[14:17:48] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[14:17:48] [PASSED] YVU420 Max sizes
[14:17:48] [PASSED] YVU420 Invalid pitch
[14:17:48] [PASSED] YVU420 Different pitches
[14:17:48] [PASSED] YVU420 Different buffer offsets/pitches
[14:17:48] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[14:17:48] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[14:17:48] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[14:17:48] [PASSED] YVU420 Valid modifier
[14:17:48] [PASSED] YVU420 Different modifiers per plane
[14:17:48] [PASSED] YVU420 Modifier for inexistent plane
[14:17:48] [PASSED] X0L2 Normal sizes
[14:17:48] [PASSED] X0L2 Max sizes
[14:17:48] [PASSED] X0L2 Invalid pitch
[14:17:48] [PASSED] X0L2 Pitch greater than minimum required
stty: 'standard input': Inappropriate ioctl for device
[14:17:48] [PASSED] X0L2 Handle for inexistent plane
[14:17:48] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[14:17:48] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[14:17:48] [PASSED] X0L2 Valid modifier
[14:17:48] [PASSED] X0L2 Modifier for inexistent plane
[14:17:48] =========== [PASSED] drm_test_framebuffer_create ===========
[14:17:48] ================= [PASSED] drm_framebuffer =================
[14:17:48] =============== drm-test-managed (1 subtest) ===============
[14:17:48] [PASSED] drm_test_managed_run_action
[14:17:48] ================ [PASSED] drm-test-managed =================
[14:17:48] =================== drm_mm (19 subtests) ===================
[14:17:48] [PASSED] drm_test_mm_init
[14:17:48] [PASSED] drm_test_mm_debug
[14:17:58] [PASSED] drm_test_mm_reserve
[14:18:08] [PASSED] drm_test_mm_insert
[14:18:09] [PASSED] drm_test_mm_replace
[14:18:09] [PASSED] drm_test_mm_insert_range
[14:18:09] [PASSED] drm_test_mm_frag
[14:18:09] [PASSED] drm_test_mm_align
[14:18:09] [PASSED] drm_test_mm_align32
[14:18:09] [PASSED] drm_test_mm_align64
[14:18:09] [PASSED] drm_test_mm_evict
[14:18:09] [PASSED] drm_test_mm_evict_range
[14:18:09] [PASSED] drm_test_mm_topdown
[14:18:09] [PASSED] drm_test_mm_bottomup
[14:18:09] [PASSED] drm_test_mm_lowest
[14:18:09] [PASSED] drm_test_mm_highest
[14:18:10] [PASSED] drm_test_mm_color
[14:18:11] [PASSED] drm_test_mm_color_evict
[14:18:11] [PASSED] drm_test_mm_color_evict_range
[14:18:11] ===================== [PASSED] drm_mm ======================
[14:18:11] ============= drm_modes_analog_tv (4 subtests) =============
[14:18:11] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[14:18:11] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[14:18:11] [PASSED] drm_test_modes_analog_tv_pal_576i
[14:18:11] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[14:18:11] =============== [PASSED] drm_modes_analog_tv ===============
[14:18:11] ============== drm_plane_helper (2 subtests) ===============
[14:18:11] =============== drm_test_check_plane_state  ================
[14:18:11] [PASSED] clipping_simple
[14:18:11] [PASSED] clipping_rotate_reflect
[14:18:11] [PASSED] positioning_simple
[14:18:11] [PASSED] upscaling
[14:18:11] [PASSED] downscaling
[14:18:11] [PASSED] rounding1
[14:18:11] [PASSED] rounding2
[14:18:11] [PASSED] rounding3
[14:18:11] [PASSED] rounding4
[14:18:11] =========== [PASSED] drm_test_check_plane_state ============
[14:18:11] =========== drm_test_check_invalid_plane_state  ============
[14:18:11] [PASSED] positioning_invalid
[14:18:11] [PASSED] upscaling_invalid
[14:18:11] [PASSED] downscaling_invalid
[14:18:11] ======= [PASSED] drm_test_check_invalid_plane_state ========
[14:18:11] ================ [PASSED] drm_plane_helper =================
[14:18:11] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[14:18:11] ====== drm_test_connector_helper_tv_get_modes_check  =======
[14:18:11] [PASSED] None
[14:18:11] [PASSED] PAL
[14:18:11] [PASSED] NTSC
[14:18:11] [PASSED] Both, NTSC Default
[14:18:11] [PASSED] Both, PAL Default
[14:18:11] [PASSED] Both, NTSC Default, with PAL on command-line
[14:18:11] [PASSED] Both, PAL Default, with NTSC on command-line
[14:18:11] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[14:18:11] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[14:18:11] ================== drm_rect (9 subtests) ===================
[14:18:11] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[14:18:11] [PASSED] drm_test_rect_clip_scaled_not_clipped
[14:18:11] [PASSED] drm_test_rect_clip_scaled_clipped
[14:18:11] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[14:18:11] ================= drm_test_rect_intersect  =================
[14:18:11] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[14:18:11] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[14:18:11] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[14:18:11] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[14:18:11] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[14:18:11] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[14:18:11] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[14:18:11] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[14:18:11] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[14:18:11] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[14:18:11] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[14:18:11] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[14:18:11] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[14:18:11] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[14:18:11] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[14:18:11] ============= [PASSED] drm_test_rect_intersect =============
[14:18:11] ================ drm_test_rect_calc_hscale  ================
[14:18:11] [PASSED] normal use
[14:18:11] [PASSED] out of max range
[14:18:11] [PASSED] out of min range
[14:18:11] [PASSED] zero dst
[14:18:11] [PASSED] negative src
[14:18:11] [PASSED] negative dst
[14:18:11] ============ [PASSED] drm_test_rect_calc_hscale ============
[14:18:11] ================ drm_test_rect_calc_vscale  ================
[14:18:11] [PASSED] normal use
[14:18:11] [PASSED] out of max range
[14:18:11] [PASSED] out of min range
[14:18:11] [PASSED] zero dst
[14:18:11] [PASSED] negative src
[14:18:11] [PASSED] negative dst
[14:18:11] ============ [PASSED] drm_test_rect_calc_vscale ============
[14:18:11] ================== drm_test_rect_rotate  ===================
[14:18:11] [PASSED] reflect-x
[14:18:11] [PASSED] reflect-y
[14:18:11] [PASSED] rotate-0
[14:18:11] [PASSED] rotate-90
[14:18:11] [PASSED] rotate-180
[14:18:11] [PASSED] rotate-270
[14:18:11] ============== [PASSED] drm_test_rect_rotate ===============
[14:18:11] ================ drm_test_rect_rotate_inv  =================
[14:18:11] [PASSED] reflect-x
[14:18:11] [PASSED] reflect-y
[14:18:11] [PASSED] rotate-0
[14:18:11] [PASSED] rotate-90
[14:18:11] [PASSED] rotate-180
[14:18:11] [PASSED] rotate-270
[14:18:11] ============ [PASSED] drm_test_rect_rotate_inv =============
[14:18:11] ==================== [PASSED] drm_rect =====================
[14:18:11] ============================================================
[14:18:11] Testing complete. Ran 333 tests: passed: 333
[14:18:11] Elapsed time: 43.179s total, 1.687s configuring, 18.156s building, 23.333s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface
@ 2023-06-15 14:19 Tejas Upadhyay
  2023-06-15 14:16 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
                   ` (10 more replies)
  0 siblings, 11 replies; 23+ messages in thread
From: Tejas Upadhyay @ 2023-06-15 14:19 UTC (permalink / raw)
  To: intel-xe

Patch series introduces this in several patches,
1. Add basic directory structure under its GT, as below
   DUT# cat /sys/class/drm/cardX/device/gtN/engines/
   ccs/ bcs/
2. Add default entries with its value for user to go back
   to default
3,4,5 : Add individual engine properties sysfs entry
6: Introduce min/max to control in what range these properties 
   can be set for elevated and non-elevated users.

VLK-46764, VLK-46767

Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
Tejas Upadhyay (6):
  drm/xe: Add sysfs entries for engines under its GT
  drm/xe: Add sysfs for default engine scheduler properties
  drm/xe: Add job timeout engine property to sysfs
  drm/xe: Add timeslice duration engine property to sysfs
  drm/xe: Add sysfs for preempt reset timeout
  drm/xe: Add min/max cap for engine scheduler properties

 drivers/gpu/drm/xe/Kconfig              |   7 +
 drivers/gpu/drm/xe/Kconfig.profile      |  39 ++
 drivers/gpu/drm/xe/xe_engine.c          |  44 +-
 drivers/gpu/drm/xe/xe_gt.c              |   6 +
 drivers/gpu/drm/xe/xe_gt_sysfs.c        | 617 ++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_gt_sysfs.h        |   9 +
 drivers/gpu/drm/xe/xe_gt_sysfs_types.h  |  13 +
 drivers/gpu/drm/xe/xe_guc_submit.c      |   5 +-
 drivers/gpu/drm/xe/xe_hw_engine.c       |  11 +
 drivers/gpu/drm/xe/xe_hw_engine.h       |  31 ++
 drivers/gpu/drm/xe/xe_hw_engine_types.h |  23 +
 11 files changed, 799 insertions(+), 6 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/Kconfig.profile

-- 
2.25.1


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Intel-xe] [PATCH 1/6] drm/xe: Add sysfs entries for engines under its GT
  2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
                   ` (2 preceding siblings ...)
  2023-06-15 14:18 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
@ 2023-06-15 14:19 ` Tejas Upadhyay
  2023-06-15 14:19 ` [Intel-xe] [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler properties Tejas Upadhyay
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Tejas Upadhyay @ 2023-06-15 14:19 UTC (permalink / raw)
  To: intel-xe

Add engines sysfs directory under its GT and
create sub directory for all engine class
(note its not per instance) present on GT.

For example,
DUT# cat /sys/class/drm/cardX/device/gtN/engines/
bcs/ ccs/

Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_gt.c       |  6 +++
 drivers/gpu/drm/xe/xe_gt_sysfs.c | 92 ++++++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_gt_sysfs.h |  3 ++
 3 files changed, 101 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
index 2458397ce8af..19c7964a064f 100644
--- a/drivers/gpu/drm/xe/xe_gt.c
+++ b/drivers/gpu/drm/xe/xe_gt.c
@@ -319,6 +319,12 @@ static int gt_fw_domain_init(struct xe_gt *gt)
 	if (err)
 		goto err_force_wake;
 
+	err = xe_gt_sysfs_engines(gt);
+	if (err)
+		drm_warn(&gt_to_xe(gt)->drm,
+			 "failed to register engines sysfs directory, err: %d\n",
+			 err);
+
 	err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
 	XE_WARN_ON(err);
 	xe_device_mem_access_put(gt_to_xe(gt));
diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
index c01cc689058c..7528cc723699 100644
--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
@@ -22,6 +22,98 @@ static struct kobj_type xe_gt_sysfs_kobj_type = {
 	.sysfs_ops = &kobj_sysfs_ops,
 };
 
+static void kobj_xe_engine_release(struct kobject *kobj)
+{
+	kfree(kobj);
+}
+
+static struct kobj_type kobj_xe_engine_type = {
+	.release = kobj_xe_engine_release,
+	.sysfs_ops = &kobj_sysfs_ops
+};
+
+static struct kobject *
+kobj_xe_engine(struct kobject *parent, char *name)
+{
+	struct kobject *kobj;
+
+	kobj = kzalloc(sizeof(*kobj), GFP_KERNEL);
+	if (!kobj)
+		return NULL;
+
+	kobject_init(kobj, &kobj_xe_engine_type);
+	if (kobject_add(kobj, parent, "%s", name)) {
+		kobject_put(kobj);
+		return NULL;
+	}
+
+	return kobj;
+}
+
+int xe_gt_sysfs_engines(struct xe_gt *gt)
+{
+	struct xe_hw_engine *hwe;
+	enum xe_hw_engine_id id;
+	struct kobject *kobj;
+	u16 class_mask = 0;
+	int err = 0;
+
+	kobj = kzalloc(sizeof(*kobj), GFP_KERNEL);
+	if (!kobj)
+		return -ENOMEM;
+
+	kobject_init(kobj, &xe_gt_sysfs_kobj_type);
+
+	err = kobject_add(kobj, gt->sysfs, "engines");
+	if (err) {
+		kobject_put(kobj);
+		return err;
+	}
+
+	for_each_hw_engine(hwe, gt, id) {
+		char name[MAX_ENGINE_NAME_LEN];
+		struct kobject *khwe;
+
+		if ((hwe->class == XE_ENGINE_CLASS_OTHER) ||
+		    (hwe->class == XE_ENGINE_CLASS_MAX))
+			continue;
+
+		if ((class_mask & hwe->class) == hwe->class)
+			continue;
+
+		class_mask |= hwe->class;
+
+		switch (hwe->class) {
+		case XE_ENGINE_CLASS_RENDER:
+			strcpy(name, "rcs");
+			break;
+		case XE_ENGINE_CLASS_VIDEO_DECODE:
+			strcpy(name, "vcs");
+			break;
+		case XE_ENGINE_CLASS_VIDEO_ENHANCE:
+			strcpy(name, "vecs");
+			break;
+		case XE_ENGINE_CLASS_COPY:
+			strcpy(name, "bcs");
+			break;
+		case XE_ENGINE_CLASS_COMPUTE:
+			strcpy(name, "ccs");
+			break;
+		default:
+			kobject_put(kobj);
+			return -EINVAL;
+		}
+
+		khwe = kobj_xe_engine(kobj, name);
+		if (!khwe) {
+			kobject_put(kobj);
+			return -EINVAL;
+		}
+	}
+
+	return err;
+}
+
 static void gt_sysfs_fini(struct drm_device *drm, void *arg)
 {
 	struct xe_gt *gt = arg;
diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h b/drivers/gpu/drm/xe/xe_gt_sysfs.h
index ecbfcc5c7d42..a531aebd10d6 100644
--- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
@@ -8,7 +8,10 @@
 
 #include "xe_gt_sysfs_types.h"
 
+#define MAX_ENGINE_NAME_LEN	16
+
 int xe_gt_sysfs_init(struct xe_gt *gt);
+int xe_gt_sysfs_engines(struct xe_gt *gt);
 
 static inline struct xe_gt *
 kobj_to_gt(struct kobject *kobj)
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Intel-xe] [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler properties
  2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
                   ` (3 preceding siblings ...)
  2023-06-15 14:19 ` [Intel-xe] [PATCH 1/6] drm/xe: Add sysfs entries for engines under its GT Tejas Upadhyay
@ 2023-06-15 14:19 ` Tejas Upadhyay
  2023-06-16 20:39   ` Niranjana Vishwanathapura
  2023-06-15 14:19 ` [Intel-xe] [PATCH 3/6] drm/xe: Add job timeout engine property to sysfs Tejas Upadhyay
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: Tejas Upadhyay @ 2023-06-15 14:19 UTC (permalink / raw)
  To: intel-xe

For each HW engine under GT we are adding defaults sysfs
entry to list all engine scheduler properties and its
default values. So that it will be easier for user to
fetch default values of these properties anytime to go
back to default.

For example,
DUT# cat /sys/class/drm/card1/device/gt0/engines/bcs/.defaults/
job_timeout_ms         preempt_timeout_us     timeslice_duration_us

where,
@job_timeout_ms: The time after which a job is removed from the scheduler.
@preempt_timeout_us: How long to wait (in microseconds) for a preemption
                     event to occur when submitting a new context.
@timeslice_duration_us: Each context is scheduled for execution for the
                        timeslice duration, before switching to the next
                        context.

Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_engine.c          |  4 +-
 drivers/gpu/drm/xe/xe_gt_sysfs.c        | 94 +++++++++++++++++++++++--
 drivers/gpu/drm/xe/xe_gt_sysfs.h        |  5 ++
 drivers/gpu/drm/xe/xe_gt_sysfs_types.h  | 13 ++++
 drivers/gpu/drm/xe/xe_guc_submit.c      |  5 +-
 drivers/gpu/drm/xe/xe_hw_engine.c       |  5 ++
 drivers/gpu/drm/xe/xe_hw_engine_types.h | 11 +++
 7 files changed, 128 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_engine.c b/drivers/gpu/drm/xe/xe_engine.c
index b3036c4a8ec3..e72423bc398a 100644
--- a/drivers/gpu/drm/xe/xe_engine.c
+++ b/drivers/gpu/drm/xe/xe_engine.c
@@ -53,8 +53,8 @@ static struct xe_engine *__xe_engine_create(struct xe_device *xe,
 	INIT_LIST_HEAD(&e->multi_gt_link);
 
 	/* FIXME: Wire up to configurable default value */
-	e->sched_props.timeslice_us = 1 * 1000;
-	e->sched_props.preempt_timeout_us = 640 * 1000;
+	e->sched_props.timeslice_us = hwe->sched_props.timeslice_us;
+	e->sched_props.preempt_timeout_us = hwe->sched_props.preempt_timeout_us;
 
 	if (xe_engine_is_parallel(e)) {
 		e->parallel.composite_fence_ctx = dma_fence_context_alloc(1);
diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
index 7528cc723699..72809078bd83 100644
--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
@@ -32,22 +32,92 @@ static struct kobj_type kobj_xe_engine_type = {
 	.sysfs_ops = &kobj_sysfs_ops
 };
 
-static struct kobject *
-kobj_xe_engine(struct kobject *parent, char *name)
+static ssize_t job_timeout_default(struct kobject *kobj,
+				 struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
+
+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_ms);
+}
+
+static struct kobj_attribute job_timeout_def =
+__ATTR(job_timeout_ms, 0444, job_timeout_default, NULL);
+
+static ssize_t timeslice_default(struct kobject *kobj,
+				 struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
+
+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_us);
+}
+
+static struct kobj_attribute timeslice_duration_def =
+__ATTR(timeslice_duration_us, 0444, timeslice_default, NULL);
+
+static ssize_t preempt_timeout_default(struct kobject *kobj,
+				       struct kobj_attribute *attr,
+				       char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
+
+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_us);
+}
+
+static struct kobj_attribute preempt_timeout_def =
+__ATTR(preempt_timeout_us, 0444, preempt_timeout_default, NULL);
+
+int xe_add_engine_defaults(struct kobject *parent)
 {
 	struct kobject *kobj;
+	int err = 0;
 
 	kobj = kzalloc(sizeof(*kobj), GFP_KERNEL);
 	if (!kobj)
-		return NULL;
+		return -ENOMEM;
 
 	kobject_init(kobj, &kobj_xe_engine_type);
-	if (kobject_add(kobj, parent, "%s", name)) {
+
+	err = kobject_add(kobj, parent, "%s", ".defaults");
+	if (err)
+		goto err_object;
+
+	err = sysfs_create_file(kobj, &job_timeout_def.attr);
+	if (err)
+		goto err_object;
+
+	err = sysfs_create_file(kobj, &timeslice_duration_def.attr);
+	if (err)
+		goto err_object;
+
+	err = sysfs_create_file(kobj, &preempt_timeout_def.attr);
+	if (err)
+		goto err_object;
+
+	if (0) {
+err_object:
 		kobject_put(kobj);
+		return err;
+	}
+
+	return err;
+}
+
+static struct kobj_hwe *
+kobj_xe_engine(struct kobject *parent, char *name)
+{
+	struct kobj_hwe *khwe;
+
+	khwe = kzalloc(sizeof(*khwe), GFP_KERNEL);
+	if (!khwe)
+		return NULL;
+
+	kobject_init(&khwe->base, &kobj_xe_engine_type);
+	if (kobject_add(&khwe->base, parent, "%s", name)) {
+		kobject_put(&khwe->base);
 		return NULL;
 	}
 
-	return kobj;
+	return khwe;
 }
 
 int xe_gt_sysfs_engines(struct xe_gt *gt)
@@ -72,7 +142,7 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
 
 	for_each_hw_engine(hwe, gt, id) {
 		char name[MAX_ENGINE_NAME_LEN];
-		struct kobject *khwe;
+		struct kobj_hwe *khwe;
 
 		if ((hwe->class == XE_ENGINE_CLASS_OTHER) ||
 		    (hwe->class == XE_ENGINE_CLASS_MAX))
@@ -109,6 +179,18 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
 			kobject_put(kobj);
 			return -EINVAL;
 		}
+
+		khwe->hwe = hwe;
+		hwe->sysfs_hwe = &khwe->base;
+
+		err = xe_add_engine_defaults(&khwe->base);
+		if (err) {
+			kobject_put(kobj);
+			drm_warn(&gt_to_xe(gt)->drm,
+				 "Warning: adding .defaults to engines failed!, err: %d\n",
+				 err);
+			return err;
+		}
 	}
 
 	return err;
diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h b/drivers/gpu/drm/xe/xe_gt_sysfs.h
index a531aebd10d6..a539cf031c7d 100644
--- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
@@ -19,4 +19,9 @@ kobj_to_gt(struct kobject *kobj)
 	return container_of(kobj, struct kobj_gt, base)->gt;
 }
 
+static inline struct xe_hw_engine *kobj_to_hwe(struct kobject *kobj)
+{
+	return container_of(kobj, struct kobj_hwe, base)->hwe;
+}
+
 #endif /* _XE_GT_SYSFS_H_ */
diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs_types.h b/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
index d3bc6b83360f..d0a5eae1bbb4 100644
--- a/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
+++ b/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
@@ -23,4 +23,17 @@ struct kobj_gt {
 	struct xe_gt *gt;
 };
 
+/**
+ * struct kobj_hwe - A hwe's kobject struct that connects the kobject and the
+ * hwe.
+ *
+ * When dealing with multiple hwe, this struct helps to understand which hwe
+ * needs to be addressed on a given sysfs call.
+ */
+struct kobj_hwe {
+	/** @base: The actual kobject */
+	struct kobject base;
+	/** @hwe: A pointer to the hwe itself */
+	struct xe_hw_engine *hwe;
+};
 #endif	/* _XE_GT_SYSFS_TYPES_H_ */
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index b209e4c2a3a9..bc0ffcf9fb1c 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -1063,13 +1063,16 @@ static int guc_engine_init(struct xe_engine *e)
 	ge->engine = e;
 	init_waitqueue_head(&ge->suspend_wait);
 
-	timeout = xe_vm_no_dma_fences(e->vm) ? MAX_SCHEDULE_TIMEOUT : HZ * 5;
+	timeout = xe_vm_no_dma_fences(e->vm) ? MAX_SCHEDULE_TIMEOUT :
+		  e->hwe->sched_props.job_timeout_ms;
 	err = drm_sched_init(&ge->sched, &drm_sched_ops,
 			     e->lrc[0].ring.size / MAX_JOB_SIZE_BYTES,
 			     64, timeout, guc_to_gt(guc)->ordered_wq, NULL,
 			     e->name, gt_to_xe(e->gt)->drm.dev);
 	if (err)
 		goto err_free;
+	/* Record timeout value, in order to show current set timeout */
+	e->hwe->sched_props.job_timeout_ms = timeout;
 
 	sched = &ge->sched;
 	err = drm_sched_entity_init(&ge->entity, DRM_SCHED_PRIORITY_NORMAL,
diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c
index 68cd793cdfb5..8314429cfa90 100644
--- a/drivers/gpu/drm/xe/xe_hw_engine.c
+++ b/drivers/gpu/drm/xe/xe_hw_engine.c
@@ -361,6 +361,11 @@ static void hw_engine_init_early(struct xe_gt *gt, struct xe_hw_engine *hwe,
 	hwe->name = info->name;
 	hwe->fence_irq = &gt->fence_irq[info->class];
 	hwe->engine_id = id;
+	/* FIXME: Wire up to configurable default value */
+	hwe->sched_props.job_timeout_ms = HZ * 5;
+	hwe->sched_props.timeslice_us = 1 * 1000;
+	hwe->sched_props.preempt_timeout_us = 640 * 1000;
+	hwe->defaults = hwe->sched_props; /* Record default props */
 
 	xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt));
 	xe_wa_process_engine(hwe);
diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h b/drivers/gpu/drm/xe/xe_hw_engine_types.h
index d788e67312b9..406a1e33a05e 100644
--- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
+++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
@@ -107,6 +107,17 @@ struct xe_hw_engine {
 	void (*irq_handler)(struct xe_hw_engine *, u16);
 	/** @engine_id: id  for this hw engine */
 	enum xe_hw_engine_id engine_id;
+	/** @sched_props: scheduling properties */
+	struct {
+		/** @set_job_timeout: Set job timeout in ms for engine */
+		u32 job_timeout_ms;
+		/** @timeslice_us: timeslice period in micro-seconds */
+		u32 timeslice_us;
+		/** @preempt_timeout_us: preemption timeout in micro-seconds */
+		u32 preempt_timeout_us;
+	} sched_props, defaults;
+	/** @sysfs: sysfs kobject pointing to this hwe */
+	struct kobject *sysfs_hwe;
 };
 
 /**
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Intel-xe] [PATCH 3/6] drm/xe: Add job timeout engine property to sysfs
  2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
                   ` (4 preceding siblings ...)
  2023-06-15 14:19 ` [Intel-xe] [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler properties Tejas Upadhyay
@ 2023-06-15 14:19 ` Tejas Upadhyay
  2023-06-15 14:19 ` [Intel-xe] [PATCH 4/6] drm/xe: Add timeslice duration " Tejas Upadhyay
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Tejas Upadhyay @ 2023-06-15 14:19 UTC (permalink / raw)
  To: intel-xe

The time after which a job is removed from the scheduler.
Add sysfs entry to provide user defined job timeout to
scheduler.

The job timeout can be adjusted per-engine class using,

/sys/class/drm/cardX/device/gtN/engines/ccs/job_timeout_ms

Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_gt_sysfs.c | 37 ++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
index 72809078bd83..39ff8f017fa1 100644
--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
@@ -32,6 +32,37 @@ static struct kobj_type kobj_xe_engine_type = {
 	.sysfs_ops = &kobj_sysfs_ops
 };
 
+static ssize_t job_timeout_store(struct kobject *kobj,
+		struct kobj_attribute *attr,
+		const char *buf, size_t count)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+	u32 timeout;
+	int err;
+
+	err = kstrtou32(buf, 0, &timeout);
+	if (err)
+		return err;
+
+	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
+		return -EINVAL;
+
+	WRITE_ONCE(hwe->sched_props.job_timeout_ms, timeout);
+
+	return count;
+}
+
+static ssize_t job_timeout_show(struct kobject *kobj,
+		struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+
+	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_ms);
+}
+
+static struct kobj_attribute job_timeout_attr =
+__ATTR(job_timeout_ms, 0644, job_timeout_show, job_timeout_store);
+
 static ssize_t job_timeout_default(struct kobject *kobj,
 				 struct kobj_attribute *attr, char *buf)
 {
@@ -191,6 +222,12 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
 				 err);
 			return err;
 		}
+
+		err = sysfs_create_file(&khwe->base, &job_timeout_attr.attr);
+		if (err) {
+			kobject_put(kobj);
+			return err;
+		}
 	}
 
 	return err;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Intel-xe] [PATCH 4/6] drm/xe: Add timeslice duration engine property to sysfs
  2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
                   ` (5 preceding siblings ...)
  2023-06-15 14:19 ` [Intel-xe] [PATCH 3/6] drm/xe: Add job timeout engine property to sysfs Tejas Upadhyay
@ 2023-06-15 14:19 ` Tejas Upadhyay
  2023-06-15 14:19 ` [Intel-xe] [PATCH 5/6] drm/xe: Add sysfs for preempt reset timeout Tejas Upadhyay
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Tejas Upadhyay @ 2023-06-15 14:19 UTC (permalink / raw)
  To: intel-xe

Timeslices between multiple context is supported via
guc scheduling. Add sysfs entry to provide user defined
timeslice duration to guc scheduling.

The timeslice duration can be adjusted per-engine class using,

/sys/class/drm/cardX/device/gtN/engines/ccs/timeslice_duration_us

Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_gt_sysfs.c | 38 ++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
index 39ff8f017fa1..bee8f56f0dee 100644
--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
@@ -32,6 +32,38 @@ static struct kobj_type kobj_xe_engine_type = {
 	.sysfs_ops = &kobj_sysfs_ops
 };
 
+static ssize_t timeslice_duration_store(struct kobject *kobj,
+		struct kobj_attribute *attr,
+		const char *buf, size_t count)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+	u32 duration;
+	int err;
+
+	err = kstrtou32(buf, 0, &duration);
+	if (err)
+		return err;
+
+	if (duration > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
+		return -EINVAL;
+
+	WRITE_ONCE(hwe->sched_props.timeslice_us, duration);
+
+	return count;
+}
+
+static ssize_t timeslice_duration_show(struct kobject *kobj,
+		struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+
+	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_us);
+}
+
+static struct kobj_attribute timeslice_duration_attr =
+__ATTR(timeslice_duration_us, 0644, timeslice_duration_show,
+timeslice_duration_store);
+
 static ssize_t job_timeout_store(struct kobject *kobj,
 		struct kobj_attribute *attr,
 		const char *buf, size_t count)
@@ -228,6 +260,12 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
 			kobject_put(kobj);
 			return err;
 		}
+
+		err = sysfs_create_file(&khwe->base, &timeslice_duration_attr.attr);
+		if (err) {
+			kobject_put(kobj);
+			return err;
+		}
 	}
 
 	return err;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Intel-xe] [PATCH 5/6] drm/xe: Add sysfs for preempt reset timeout
  2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
                   ` (6 preceding siblings ...)
  2023-06-15 14:19 ` [Intel-xe] [PATCH 4/6] drm/xe: Add timeslice duration " Tejas Upadhyay
@ 2023-06-15 14:19 ` Tejas Upadhyay
  2023-06-15 14:19 ` [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties Tejas Upadhyay
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Tejas Upadhyay @ 2023-06-15 14:19 UTC (permalink / raw)
  To: intel-xe

The preemption request and timeout is used for
higher priority context or kill hung context and reset
gpu.

The preempt timeout can be adjusted per-engine class using,

/sys/class/drm/cardX/device/gtN/engines/ccs/preempt_timeout_us

and can be disabled by setting it to 0.

Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/xe_gt_sysfs.c | 53 +++++++++++++++++++++++++++-----
 1 file changed, 45 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
index bee8f56f0dee..f88f8f7dfc7b 100644
--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
@@ -32,6 +32,37 @@ static struct kobj_type kobj_xe_engine_type = {
 	.sysfs_ops = &kobj_sysfs_ops
 };
 
+static ssize_t preempt_timeout_store(struct kobject *kobj,
+				     struct kobj_attribute *attr,
+				     const char *buf, size_t count)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+	u32 timeout;
+	int err;
+
+	err = kstrtou32(buf, 0, &timeout);
+	if (err)
+		return err;
+
+	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
+		return -EINVAL;
+
+	WRITE_ONCE(hwe->sched_props.preempt_timeout_us, timeout);
+
+	return count;
+}
+
+static ssize_t preempt_timeout_show(struct kobject *kobj,
+				    struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+
+	return sprintf(buf, "%u\n", hwe->sched_props.preempt_timeout_us);
+}
+
+static struct kobj_attribute preempt_timeout_attr =
+__ATTR(preempt_timeout_us, 0644, preempt_timeout_show, preempt_timeout_store);
+
 static ssize_t timeslice_duration_store(struct kobject *kobj,
 		struct kobj_attribute *attr,
 		const char *buf, size_t count)
@@ -256,16 +287,22 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
 		}
 
 		err = sysfs_create_file(&khwe->base, &job_timeout_attr.attr);
-		if (err) {
-			kobject_put(kobj);
-			return err;
-		}
+		if (err)
+			goto err_object;
 
 		err = sysfs_create_file(&khwe->base, &timeslice_duration_attr.attr);
-		if (err) {
-			kobject_put(kobj);
-			return err;
-		}
+		if (err)
+			goto err_object;
+
+		err = sysfs_create_file(&khwe->base, &preempt_timeout_attr.attr);
+		if (err)
+			goto err_object;
+	}
+
+	if (0) {
+err_object:
+		kobject_put(kobj);
+		return err;
 	}
 
 	return err;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties
  2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
                   ` (7 preceding siblings ...)
  2023-06-15 14:19 ` [Intel-xe] [PATCH 5/6] drm/xe: Add sysfs for preempt reset timeout Tejas Upadhyay
@ 2023-06-15 14:19 ` Tejas Upadhyay
  2023-06-16 20:56   ` Niranjana Vishwanathapura
  2023-06-22  9:40   ` Ghimiray, Himal Prasad
  2023-06-15 14:22 ` [Intel-xe] ✓ CI.Build: success for drm/xe: Add engine scheduler control interface Patchwork
  2023-06-15 14:22 ` [Intel-xe] ✗ CI.Hooks: failure " Patchwork
  10 siblings, 2 replies; 23+ messages in thread
From: Tejas Upadhyay @ 2023-06-15 14:19 UTC (permalink / raw)
  To: intel-xe

Add sysfs entries for the min, max, and defaults for each of
engine scheduler controls for every hardware engine class.

Non-elevated user IOCTLs to set these controls must be within
the min-max ranges of the sysfs entries, elevated user can set
these controls to any value.

Introducing compile time CONFIG min-max values which restricts elevated
user to be in compile time min-max range if at all sysfs min/max
are violated.

Sysfs entries examples are,
DUT# cat /sys/class/drm/cardX/device/gtN/engines/ccs/.defaults/
job_timeout_max         job_timeout_ms          preempt_timeout_min     timeslice_duration_max  timeslice_duration_us
job_timeout_min         preempt_timeout_max     preempt_timeout_us      timeslice_duration_min

DUT# cat /sys/class/drm/card1/device/gt1/engines/ccs/
.defaults/              job_timeout_min         preempt_timeout_max     preempt_timeout_us      timeslice_duration_min
job_timeout_max         job_timeout_ms          preempt_timeout_min     timeslice_duration_max  timeslice_duration_us

Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
---
 drivers/gpu/drm/xe/Kconfig              |   7 +
 drivers/gpu/drm/xe/Kconfig.profile      |  39 +++
 drivers/gpu/drm/xe/xe_engine.c          |  40 ++-
 drivers/gpu/drm/xe/xe_gt_sysfs.c        | 373 ++++++++++++++++++++++--
 drivers/gpu/drm/xe/xe_gt_sysfs.h        |   1 +
 drivers/gpu/drm/xe/xe_hw_engine.c       |   6 +
 drivers/gpu/drm/xe/xe_hw_engine.h       |  31 ++
 drivers/gpu/drm/xe/xe_hw_engine_types.h |  12 +
 8 files changed, 485 insertions(+), 24 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/Kconfig.profile

diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
index d44794f99338..964c440a1135 100644
--- a/drivers/gpu/drm/xe/Kconfig
+++ b/drivers/gpu/drm/xe/Kconfig
@@ -83,3 +83,10 @@ depends on DRM_XE
 depends on EXPERT
 source "drivers/gpu/drm/xe/Kconfig.debug"
 endmenu
+
+menu "drm/xe Profile Guided Optimisation"
+        visible if EXPERT
+        depends on DRM_XE
+        source "drivers/gpu/drm/xe/Kconfig.profile"
+endmenu
+
diff --git a/drivers/gpu/drm/xe/Kconfig.profile b/drivers/gpu/drm/xe/Kconfig.profile
new file mode 100644
index 000000000000..cffd73e44ca9
--- /dev/null
+++ b/drivers/gpu/drm/xe/Kconfig.profile
@@ -0,0 +1,39 @@
+config DRM_XE_JOB_TIMEOUT_MAX
+	int "Default max job timeout (ms)"
+	default 10000 # milliseconds
+	help
+	  Configures the default max job timeout after which job will
+	  be forcefully taken away from scheduler.
+config DRM_XE_JOB_TIMEOUT_MIN
+	int "Default max job timeout (ms)"
+	default 1 # milliseconds
+	help
+	  Configures the default min job timeout after which job will
+	  be forcefully taken away from scheduler.
+config DRM_XE_TIMESLICE_MAX
+	int "Default max timeslice duration (us)"
+	default 10000000 # microseconds
+	help
+	  Configures the default max timeslice duration between multiple
+	  contexts by guc scheduling.
+config DRM_XE_TIMESLICE_MIN
+	int "Default min timeslice duration (us)"
+	default 1 # microseconds
+	help
+	  Configures the default min timeslice duration between multiple
+	  contexts by guc scheduling.
+config DRM_XE_PREEMPT_TIMEOUT_MAX
+	int "Default max  preempt timeout (us)"
+	default 10000000 # microseconds
+	help
+	  Configures the default max preempt timeout after which context
+	  will be forcefully taken away and higher priority context will
+	  run.
+config DRM_XE_PREEMPT_TIMEOUT_MIN
+	int "Default min  preempt timeout (us)"
+	default 1 # microseconds
+	help
+	  Configures the default min preempt timeout after which context
+	  will be forcefully taken away and higher priority context will
+	  run.
+
diff --git a/drivers/gpu/drm/xe/xe_engine.c b/drivers/gpu/drm/xe/xe_engine.c
index e72423bc398a..c368ffd5e461 100644
--- a/drivers/gpu/drm/xe/xe_engine.c
+++ b/drivers/gpu/drm/xe/xe_engine.c
@@ -13,6 +13,7 @@
 
 #include "xe_device.h"
 #include "xe_gt.h"
+#include "xe_gt_sysfs.h"
 #include "xe_hw_fence.h"
 #include "xe_lrc.h"
 #include "xe_macros.h"
@@ -191,9 +192,20 @@ static int engine_set_priority(struct xe_device *xe, struct xe_engine *e,
 static int engine_set_timeslice(struct xe_device *xe, struct xe_engine *e,
 				u64 value, bool create)
 {
-	if (!capable(CAP_SYS_NICE))
+	if (!capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(value,
+				     e->hwe->sched_props.timeslice_min,
+				     e->hwe->sched_props.timeslice_max))
 		return -EPERM;
 
+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) && defined(CONFIG_DRM_XE_TIMESLICE_MAX)
+	if (capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(value,
+				     CONFIG_DRM_XE_TIMESLICE_MIN,
+				     CONFIG_DRM_XE_TIMESLICE_MAX))
+		return -EPERM;
+#endif
+
 	return e->ops->set_timeslice(e, value);
 }
 
@@ -201,8 +213,19 @@ static int engine_set_preemption_timeout(struct xe_device *xe,
 					 struct xe_engine *e, u64 value,
 					 bool create)
 {
-	if (!capable(CAP_SYS_NICE))
+	if (!capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(value,
+				     e->hwe->sched_props.preempt_timeout_min,
+				     e->hwe->sched_props.preempt_timeout_max))
+		return -EPERM;
+
+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
+	if (capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(value,
+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
 		return -EPERM;
+#endif
 
 	return e->ops->set_preempt_timeout(e, value);
 }
@@ -269,8 +292,19 @@ static int engine_set_job_timeout(struct xe_device *xe, struct xe_engine *e,
 	if (XE_IOCTL_ERR(xe, !create))
 		return -EINVAL;
 
-	if (!capable(CAP_SYS_NICE))
+	if (!capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(value,
+				     e->hwe->sched_props.job_timeout_min,
+				     e->hwe->sched_props.job_timeout_max))
+		return -EPERM;
+
+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
+	if (capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(value,
+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
 		return -EPERM;
+#endif
 
 	return e->ops->set_job_timeout(e, value);
 }
diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
index f88f8f7dfc7b..415b60845eef 100644
--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
@@ -32,6 +32,11 @@ static struct kobj_type kobj_xe_engine_type = {
 	.sysfs_ops = &kobj_sysfs_ops
 };
 
+bool engine_timeout_in_range(u64 timeout, u64 min, u64 max)
+{
+	return timeout >= min && timeout <= max;
+}
+
 static ssize_t preempt_timeout_store(struct kobject *kobj,
 				     struct kobj_attribute *attr,
 				     const char *buf, size_t count)
@@ -44,9 +49,20 @@ static ssize_t preempt_timeout_store(struct kobject *kobj,
 	if (err)
 		return err;
 
-	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
+	if (!capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(timeout,
+				     hwe->sched_props.preempt_timeout_min,
+				     hwe->sched_props.preempt_timeout_max))
 		return -EINVAL;
 
+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
+	if (capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(timeout,
+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
+		return -EINVAL;
+#endif
+
 	WRITE_ONCE(hwe->sched_props.preempt_timeout_us, timeout);
 
 	return count;
@@ -63,6 +79,78 @@ static ssize_t preempt_timeout_show(struct kobject *kobj,
 static struct kobj_attribute preempt_timeout_attr =
 __ATTR(preempt_timeout_us, 0644, preempt_timeout_show, preempt_timeout_store);
 
+static ssize_t preempt_timeout_max_store(struct kobject *kobj,
+					 struct kobj_attribute *attr,
+					 const char *buf, size_t count)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+	u32 timeout;
+	int err;
+
+	err = kstrtou32(buf, 0, &timeout);
+	if (err)
+		return err;
+
+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
+	if (!engine_timeout_in_range(timeout,
+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
+		return -EINVAL;
+#endif
+
+	WRITE_ONCE(hwe->sched_props.preempt_timeout_max, timeout);
+
+	return count;
+}
+
+static ssize_t preempt_timeout_max_show(struct kobject *kobj,
+					struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+
+	return sprintf(buf, "%u\n", hwe->sched_props.preempt_timeout_max);
+}
+
+static struct kobj_attribute preempt_timeout_max_attr =
+	__ATTR(preempt_timeout_max, 0644, preempt_timeout_max_show,
+	       preempt_timeout_max_store);
+
+static ssize_t preempt_timeout_min_store(struct kobject *kobj,
+					 struct kobj_attribute *attr,
+					 const char *buf, size_t count)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+	u32 timeout;
+	int err;
+
+	err = kstrtou32(buf, 0, &timeout);
+	if (err)
+		return err;
+
+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
+	if (!engine_timeout_in_range(timeout,
+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
+		return -EINVAL;
+#endif
+
+	WRITE_ONCE(hwe->sched_props.preempt_timeout_min, timeout);
+
+	return count;
+}
+
+static ssize_t preempt_timeout_min_show(struct kobject *kobj,
+					struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+
+	return sprintf(buf, "%u\n", hwe->sched_props.preempt_timeout_min);
+}
+
+static struct kobj_attribute preempt_timeout_min_attr =
+	__ATTR(preempt_timeout_min, 0644, preempt_timeout_min_show,
+	       preempt_timeout_min_store);
+
 static ssize_t timeslice_duration_store(struct kobject *kobj,
 		struct kobj_attribute *attr,
 		const char *buf, size_t count)
@@ -75,8 +163,19 @@ static ssize_t timeslice_duration_store(struct kobject *kobj,
 	if (err)
 		return err;
 
-	if (duration > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
+	if (!capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(duration,
+				     hwe->sched_props.timeslice_min,
+				     hwe->sched_props.timeslice_max))
+		return -EINVAL;
+
+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) && defined(CONFIG_DRM_XE_TIMESLICE_MAX)
+	if (capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(duration,
+				     CONFIG_DRM_XE_TIMESLICE_MIN,
+				     CONFIG_DRM_XE_TIMESLICE_MAX))
 		return -EINVAL;
+#endif
 
 	WRITE_ONCE(hwe->sched_props.timeslice_us, duration);
 
@@ -95,6 +194,79 @@ static struct kobj_attribute timeslice_duration_attr =
 __ATTR(timeslice_duration_us, 0644, timeslice_duration_show,
 timeslice_duration_store);
 
+static ssize_t timeslice_duration_max_store(struct kobject *kobj,
+					    struct kobj_attribute *attr,
+					    const char *buf, size_t count)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+	u32 duration;
+	int err;
+
+	err = kstrtou32(buf, 0, &duration);
+	if (err)
+		return err;
+
+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) && defined(CONFIG_DRM_XE_TIMESLICE_MAX)
+	if (!engine_timeout_in_range(duration,
+				     CONFIG_DRM_XE_TIMESLICE_MIN,
+				     CONFIG_DRM_XE_TIMESLICE_MAX))
+		return -EINVAL;
+#endif
+
+	WRITE_ONCE(hwe->sched_props.timeslice_max, duration);
+
+	return count;
+}
+
+static ssize_t timeslice_duration_max_show(struct kobject *kobj,
+					   struct kobj_attribute *attr,
+					   char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+
+	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_max);
+}
+
+static struct kobj_attribute timeslice_duration_max_attr =
+	__ATTR(timeslice_duration_max, 0644, timeslice_duration_max_show,
+	       timeslice_duration_max_store);
+
+static ssize_t timeslice_duration_min_store(struct kobject *kobj,
+					    struct kobj_attribute *attr,
+					    const char *buf, size_t count)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+	u32 duration;
+	int err;
+
+	err = kstrtou32(buf, 0, &duration);
+	if (err)
+		return err;
+
+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) && defined(CONFIG_DRM_XE_TIMESLICE_MAX)
+	if (!engine_timeout_in_range(duration,
+				     CONFIG_DRM_XE_TIMESLICE_MIN,
+				     CONFIG_DRM_XE_TIMESLICE_MAX))
+		return -EINVAL;
+#endif
+
+	WRITE_ONCE(hwe->sched_props.timeslice_min, duration);
+
+	return count;
+}
+
+static ssize_t timeslice_duration_min_show(struct kobject *kobj,
+					   struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+
+	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_min);
+}
+
+static struct kobj_attribute timeslice_duration_min_attr =
+	__ATTR(timeslice_duration_min, 0644, timeslice_duration_min_show,
+	       timeslice_duration_min_store);
+
 static ssize_t job_timeout_store(struct kobject *kobj,
 		struct kobj_attribute *attr,
 		const char *buf, size_t count)
@@ -107,8 +279,19 @@ static ssize_t job_timeout_store(struct kobject *kobj,
 	if (err)
 		return err;
 
-	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
+	if (!capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(timeout,
+				     hwe->sched_props.job_timeout_min,
+				     hwe->sched_props.job_timeout_max))
+		return -EINVAL;
+
+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
+	if (capable(CAP_SYS_NICE) &&
+	    !engine_timeout_in_range(timeout,
+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
 		return -EINVAL;
+#endif
 
 	WRITE_ONCE(hwe->sched_props.job_timeout_ms, timeout);
 
@@ -126,6 +309,89 @@ static ssize_t job_timeout_show(struct kobject *kobj,
 static struct kobj_attribute job_timeout_attr =
 __ATTR(job_timeout_ms, 0644, job_timeout_show, job_timeout_store);
 
+static ssize_t job_timeout_max_store(struct kobject *kobj,
+				     struct kobj_attribute *attr,
+				     const char *buf, size_t count)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+	u32 timeout;
+	int err;
+
+	err = kstrtou32(buf, 0, &timeout);
+	if (err)
+		return err;
+
+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
+	if (!engine_timeout_in_range(timeout,
+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
+		return -EINVAL;
+#endif
+
+	WRITE_ONCE(hwe->sched_props.job_timeout_max, timeout);
+
+	return count;
+}
+
+static ssize_t job_timeout_max_show(struct kobject *kobj,
+				    struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+
+	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_max);
+}
+
+static struct kobj_attribute job_timeout_max_attr =
+__ATTR(job_timeout_max, 0644, job_timeout_max_show, job_timeout_max_store);
+
+static ssize_t job_timeout_min_store(struct kobject *kobj,
+				     struct kobj_attribute *attr,
+				     const char *buf, size_t count)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+	u32 timeout;
+	int err;
+
+	err = kstrtou32(buf, 0, &timeout);
+	if (err)
+		return err;
+
+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
+	if (!engine_timeout_in_range(timeout,
+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
+		return -EINVAL;
+#endif
+
+	WRITE_ONCE(hwe->sched_props.job_timeout_min, timeout);
+
+	return count;
+}
+
+static ssize_t job_timeout_min_show(struct kobject *kobj,
+				    struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
+
+	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_min);
+}
+
+static struct kobj_attribute job_timeout_min_attr =
+__ATTR(job_timeout_min, 0644, job_timeout_min_show, job_timeout_min_store);
+
+static const struct attribute *files[] = {
+	&job_timeout_attr.attr,
+	&job_timeout_min_attr.attr,
+	&job_timeout_max_attr.attr,
+	&timeslice_duration_attr.attr,
+	&timeslice_duration_min_attr.attr,
+	&timeslice_duration_max_attr.attr,
+	&preempt_timeout_attr.attr,
+	&preempt_timeout_min_attr.attr,
+	&preempt_timeout_max_attr.attr,
+	NULL
+};
+
 static ssize_t job_timeout_default(struct kobject *kobj,
 				 struct kobj_attribute *attr, char *buf)
 {
@@ -137,6 +403,28 @@ static ssize_t job_timeout_default(struct kobject *kobj,
 static struct kobj_attribute job_timeout_def =
 __ATTR(job_timeout_ms, 0444, job_timeout_default, NULL);
 
+static ssize_t job_timeout_min_default(struct kobject *kobj,
+				       struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
+
+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_min);
+}
+
+static struct kobj_attribute job_timeout_min_def =
+__ATTR(job_timeout_min, 0444, job_timeout_min_default, NULL);
+
+static ssize_t job_timeout_max_default(struct kobject *kobj,
+				       struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
+
+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_max);
+}
+
+static struct kobj_attribute job_timeout_max_def =
+__ATTR(job_timeout_max, 0444, job_timeout_max_default, NULL);
+
 static ssize_t timeslice_default(struct kobject *kobj,
 				 struct kobj_attribute *attr, char *buf)
 {
@@ -148,6 +436,28 @@ static ssize_t timeslice_default(struct kobject *kobj,
 static struct kobj_attribute timeslice_duration_def =
 __ATTR(timeslice_duration_us, 0444, timeslice_default, NULL);
 
+static ssize_t timeslice_min_default(struct kobject *kobj,
+				     struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
+
+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_min);
+}
+
+static struct kobj_attribute timeslice_duration_min_def =
+__ATTR(timeslice_duration_min, 0444, timeslice_min_default, NULL);
+
+static ssize_t timeslice_max_default(struct kobject *kobj,
+				     struct kobj_attribute *attr, char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
+
+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_max);
+}
+
+static struct kobj_attribute timeslice_duration_max_def =
+__ATTR(timeslice_duration_max, 0444, timeslice_max_default, NULL);
+
 static ssize_t preempt_timeout_default(struct kobject *kobj,
 				       struct kobj_attribute *attr,
 				       char *buf)
@@ -160,6 +470,43 @@ static ssize_t preempt_timeout_default(struct kobject *kobj,
 static struct kobj_attribute preempt_timeout_def =
 __ATTR(preempt_timeout_us, 0444, preempt_timeout_default, NULL);
 
+static ssize_t preempt_timeout_min_default(struct kobject *kobj,
+					   struct kobj_attribute *attr,
+					   char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
+
+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_min);
+}
+
+static struct kobj_attribute preempt_timeout_min_def =
+__ATTR(preempt_timeout_min, 0444, preempt_timeout_min_default, NULL);
+
+static ssize_t preempt_timeout_max_default(struct kobject *kobj,
+					   struct kobj_attribute *attr,
+					   char *buf)
+{
+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
+
+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_max);
+}
+
+static struct kobj_attribute preempt_timeout_max_def =
+__ATTR(preempt_timeout_max, 0444, preempt_timeout_max_default, NULL);
+
+static const struct attribute *defaults[] = {
+	&job_timeout_def.attr,
+	&job_timeout_min_def.attr,
+	&job_timeout_max_def.attr,
+	&timeslice_duration_def.attr,
+	&timeslice_duration_min_def.attr,
+	&timeslice_duration_max_def.attr,
+	&preempt_timeout_def.attr,
+	&preempt_timeout_min_def.attr,
+	&preempt_timeout_max_def.attr,
+	NULL
+};
+
 int xe_add_engine_defaults(struct kobject *parent)
 {
 	struct kobject *kobj;
@@ -175,15 +522,7 @@ int xe_add_engine_defaults(struct kobject *parent)
 	if (err)
 		goto err_object;
 
-	err = sysfs_create_file(kobj, &job_timeout_def.attr);
-	if (err)
-		goto err_object;
-
-	err = sysfs_create_file(kobj, &timeslice_duration_def.attr);
-	if (err)
-		goto err_object;
-
-	err = sysfs_create_file(kobj, &preempt_timeout_def.attr);
+	err = sysfs_create_files(kobj, defaults);
 	if (err)
 		goto err_object;
 
@@ -286,15 +625,7 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
 			return err;
 		}
 
-		err = sysfs_create_file(&khwe->base, &job_timeout_attr.attr);
-		if (err)
-			goto err_object;
-
-		err = sysfs_create_file(&khwe->base, &timeslice_duration_attr.attr);
-		if (err)
-			goto err_object;
-
-		err = sysfs_create_file(&khwe->base, &preempt_timeout_attr.attr);
+		err = sysfs_create_files(&khwe->base, files);
 		if (err)
 			goto err_object;
 	}
diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h b/drivers/gpu/drm/xe/xe_gt_sysfs.h
index a539cf031c7d..a7ac7b9a9768 100644
--- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
@@ -12,6 +12,7 @@
 
 int xe_gt_sysfs_init(struct xe_gt *gt);
 int xe_gt_sysfs_engines(struct xe_gt *gt);
+bool engine_timeout_in_range(u64 timeout, u64 min, u64 max);
 
 static inline struct xe_gt *
 kobj_to_gt(struct kobject *kobj)
diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c
index 8314429cfa90..e52324eb1efa 100644
--- a/drivers/gpu/drm/xe/xe_hw_engine.c
+++ b/drivers/gpu/drm/xe/xe_hw_engine.c
@@ -363,8 +363,14 @@ static void hw_engine_init_early(struct xe_gt *gt, struct xe_hw_engine *hwe,
 	hwe->engine_id = id;
 	/* FIXME: Wire up to configurable default value */
 	hwe->sched_props.job_timeout_ms = HZ * 5;
+	hwe->sched_props.job_timeout_min = XE_HW_ENGINE_JOB_TIMEOUT_MIN;
+	hwe->sched_props.job_timeout_max = XE_HW_ENGINE_JOB_TIMEOUT_MAX;
 	hwe->sched_props.timeslice_us = 1 * 1000;
+	hwe->sched_props.timeslice_min = XE_HW_ENGINE_TIMESLICE_MIN;
+	hwe->sched_props.timeslice_max = XE_HW_ENGINE_TIMESLICE_MAX;
 	hwe->sched_props.preempt_timeout_us = 640 * 1000;
+	hwe->sched_props.preempt_timeout_min = XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN;
+	hwe->sched_props.preempt_timeout_max = XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX;
 	hwe->defaults = hwe->sched_props; /* Record default props */
 
 	xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt));
diff --git a/drivers/gpu/drm/xe/xe_hw_engine.h b/drivers/gpu/drm/xe/xe_hw_engine.h
index 7eca9d53c7b1..3d37d6d44261 100644
--- a/drivers/gpu/drm/xe/xe_hw_engine.h
+++ b/drivers/gpu/drm/xe/xe_hw_engine.h
@@ -10,6 +10,37 @@
 
 struct drm_printer;
 
+#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN
+#define XE_HW_ENGINE_JOB_TIMEOUT_MIN CONFIG_DRM_XE_JOB_TIMEOUT_MIN
+#else
+#define XE_HW_ENGINE_JOB_TIMEOUT_MIN 1
+#endif
+#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MAX
+#define XE_HW_ENGINE_JOB_TIMEOUT_MAX CONFIG_DRM_XE_JOB_TIMEOUT_MAX
+#else
+#define XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000)
+#endif
+#ifdef CONFIG_DRM_XE_TIMESLICE_MIN
+#define XE_HW_ENGINE_TIMESLICE_MIN CONFIG_DRM_XE_TIMESLICE_MIN
+#else
+#define XE_HW_ENGINE_TIMESLICE_MIN 1
+#endif
+#ifdef CONFIG_DRM_XE_TIMESLICE_MAX
+#define XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX
+#else
+#define XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000)
+#endif
+#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
+#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
+#else
+#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 1
+#endif
+#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
+#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
+#else
+#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 * 1000)
+#endif
+
 int xe_hw_engines_init_early(struct xe_gt *gt);
 int xe_hw_engines_init(struct xe_gt *gt);
 void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec);
diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h b/drivers/gpu/drm/xe/xe_hw_engine_types.h
index 406a1e33a05e..8582193b4947 100644
--- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
+++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
@@ -111,10 +111,22 @@ struct xe_hw_engine {
 	struct {
 		/** @set_job_timeout: Set job timeout in ms for engine */
 		u32 job_timeout_ms;
+		/** @job_timeout_min: Min job timeout in ms for engine */
+		u32 job_timeout_min;
+		/** @job_timeout_max: Max job timeout in ms for engine */
+		u32 job_timeout_max;
 		/** @timeslice_us: timeslice period in micro-seconds */
 		u32 timeslice_us;
+		/** @timeslice_min: min timeslice period in micro-seconds */
+		u32 timeslice_min;
+		/** @timeslice_max: max timeslice period in micro-seconds */
+		u32 timeslice_max;
 		/** @preempt_timeout_us: preemption timeout in micro-seconds */
 		u32 preempt_timeout_us;
+		/** @preempt_timeout_min: min preemption timeout in micro-seconds */
+		u32 preempt_timeout_min;
+		/** @preempt_timeout_max: max preemption timeout in micro-seconds */
+		u32 preempt_timeout_max;
 	} sched_props, defaults;
 	/** @sysfs: sysfs kobject pointing to this hwe */
 	struct kobject *sysfs_hwe;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Intel-xe] ✓ CI.Build: success for drm/xe: Add engine scheduler control interface
  2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
                   ` (8 preceding siblings ...)
  2023-06-15 14:19 ` [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties Tejas Upadhyay
@ 2023-06-15 14:22 ` Patchwork
  2023-06-15 14:22 ` [Intel-xe] ✗ CI.Hooks: failure " Patchwork
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2023-06-15 14:22 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Add engine scheduler control interface
URL   : https://patchwork.freedesktop.org/series/119392/
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:1686838703:build_x86_64[collapsed=true]\r\e[0KBuild x86-64'
+ mkdir -p build64
^[[0Ksection_start:1686838703:build_x86_64[collapsed=true]
^[[0KBuild x86-64
+ cat .ci/kernel/kconfig
+ [[ '' != '' ]]
+ make O=build64 olddefconfig
make[1]: Entering directory '/kernel/build64'
  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'
++ nproc
+ make O=build64 -j48
make[1]: Entering directory '/kernel/build64'
  GEN     Makefile
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.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
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_32.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_64.h
  WRAP    arch/x86/include/generated/uapi/asm/socket.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_x32.h
  WRAP    arch/x86/include/generated/uapi/asm/resource.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  WRAP    arch/x86/include/generated/uapi/asm/termbits.h
  WRAP    arch/x86/include/generated/uapi/asm/sockios.h
  SYSHDR  arch/x86/include/generated/asm/unistd_32_ia32.h
  SYSHDR  arch/x86/include/generated/asm/unistd_64_x32.h
  WRAP    arch/x86/include/generated/uapi/asm/types.h
  WRAP    arch/x86/include/generated/uapi/asm/termios.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_64.h
  UPD     include/generated/uapi/linux/version.h
  UPD     include/config/kernel.release
  HOSTCC  arch/x86/tools/relocs_32.o
  HOSTCC  arch/x86/tools/relocs_common.o
  HOSTCC  arch/x86/tools/relocs_64.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/kmap_size.h
  UPD     include/generated/compile.h
  WRAP    arch/x86/include/generated/asm/mmiowb.h
  WRAP    arch/x86/include/generated/asm/local64.h
  WRAP    arch/x86/include/generated/asm/module.lds.h
  WRAP    arch/x86/include/generated/asm/rwonce.h
  WRAP    arch/x86/include/generated/asm/unaligned.h
  HOSTCC  scripts/unifdef
  UPD     include/generated/utsrelease.h
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/sorttable
  HOSTCC  scripts/asn1_compiler
  DESCEND objtool
  HOSTCC  /kernel/build64/tools/objtool/fixdep.o
  HOSTLD  /kernel/build64/tools/objtool/fixdep-in.o
  LINK    /kernel/build64/tools/objtool/fixdep
  INSTALL /kernel/build64/tools/objtool/libsubcmd/include/subcmd/exec-cmd.h
  INSTALL /kernel/build64/tools/objtool/libsubcmd/include/subcmd/pager.h
  INSTALL /kernel/build64/tools/objtool/libsubcmd/include/subcmd/help.h
  INSTALL /kernel/build64/tools/objtool/libsubcmd/include/subcmd/parse-options.h
  INSTALL /kernel/build64/tools/objtool/libsubcmd/include/subcmd/run-command.h
  CC      /kernel/build64/tools/objtool/libsubcmd/exec-cmd.o
  CC      /kernel/build64/tools/objtool/libsubcmd/help.o
  INSTALL libsubcmd_headers
  CC      /kernel/build64/tools/objtool/libsubcmd/pager.o
  CC      /kernel/build64/tools/objtool/libsubcmd/parse-options.o
  CC      /kernel/build64/tools/objtool/libsubcmd/run-command.o
  CC      /kernel/build64/tools/objtool/libsubcmd/sigchain.o
  HOSTLD  arch/x86/tools/relocs
  CC      /kernel/build64/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/sisfb.h
  HDRINST usr/include/video/uvesafb.h
  HDRINST usr/include/drm/amdgpu_drm.h
  HDRINST usr/include/drm/i915_drm.h
  HDRINST usr/include/drm/qaic_accel.h
  HDRINST usr/include/drm/virtgpu_drm.h
  HDRINST usr/include/drm/vgem_drm.h
  HDRINST usr/include/drm/omap_drm.h
  HDRINST usr/include/drm/xe_drm.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/msm_drm.h
  HDRINST usr/include/drm/vmwgfx_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
  UPD     scripts/mod/devicetable-offsets.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
  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
  HDRINST usr/include/asm-generic/termios.h
  HDRINST usr/include/asm-generic/mman-common.h
  HDRINST usr/include/asm-generic/ioctl.h
  HDRINST usr/include/asm-generic/socket.h
  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
  MKELF   scripts/mod/elfconfig.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
  HOSTCC  scripts/mod/modpost.o
  HDRINST usr/include/rdma/hfi/hfi1_user.h
  HOSTCC  scripts/mod/file2alias.o
  HDRINST usr/include/rdma/hfi/hfi1_ioctl.h
  HDRINST usr/include/rdma/rdma_user_rxe.h
  HOSTCC  scripts/mod/sumversion.o
  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/pps.h
  HDRINST usr/include/linux/ndctl.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_MARK.h
  HDRINST usr/include/linux/netfilter/xt_SYNPROXY.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/xt_u32.h
  HDRINST usr/include/linux/netfilter/nfnetlink_osf.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/pcitest.h
  HDRINST usr/include/linux/unix_diag.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/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
  LD      /kernel/build64/tools/objtool/libsubcmd/libsubcmd-in.o
  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
  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/if_ether.h
  HDRINST usr/include/linux/kvm_para.h
  AR      /kernel/build64/tools/objtool/libsubcmd/libsubcmd.a
  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
  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/xattr.h
  HDRINST usr/include/linux/netdev.h
  HDRINST usr/include/linux/iommufd.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/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
  CC      /kernel/build64/tools/objtool/weak.o
  HDRINST usr/include/linux/net.h
  CC      /kernel/build64/tools/objtool/check.o
  HDRINST usr/include/linux/mii.h
  CC      /kernel/build64/tools/objtool/special.o
  CC      /kernel/build64/tools/objtool/builtin-check.o
  HDRINST usr/include/linux/cm4000_cs.h
  MKDIR   /kernel/build64/tools/objtool/arch/x86/
  HDRINST usr/include/linux/virtio_pcidev.h
  CC      /kernel/build64/tools/objtool/elf.o
  CC      /kernel/build64/tools/objtool/objtool.o
  HDRINST usr/include/linux/termios.h
  HDRINST usr/include/linux/cgroupstats.h
  HDRINST usr/include/linux/mpls.h
  MKDIR   /kernel/build64/tools/objtool/arch/x86/lib/
  HDRINST usr/include/linux/iommu.h
  CC      /kernel/build64/tools/objtool/orc_gen.o
  HDRINST usr/include/linux/toshiba.h
  CC      /kernel/build64/tools/objtool/arch/x86/special.o
  CC      /kernel/build64/tools/objtool/orc_dump.o
  HDRINST usr/include/linux/virtio_scsi.h
  HDRINST usr/include/linux/zorro.h
  CC      /kernel/build64/tools/objtool/libstring.o
  HDRINST usr/include/linux/chio.h
  CC      /kernel/build64/tools/objtool/libctype.o
  HDRINST usr/include/linux/pkt_sched.h
  GEN     /kernel/build64/tools/objtool/arch/x86/lib/inat-tables.c
  HDRINST usr/include/linux/cramfs_fs.h
  CC      /kernel/build64/tools/objtool/str_error_r.o
  HDRINST usr/include/linux/nfs3.h
  CC      /kernel/build64/tools/objtool/librbtree.o
  HDRINST usr/include/linux/vfio_ccw.h
  HDRINST usr/include/linux/atm_nicstar.h
  HDRINST usr/include/linux/ncsi.h
  HDRINST usr/include/linux/virtio_net.h
  HDRINST usr/include/linux/ioctl.h
  HDRINST usr/include/linux/stddef.h
  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_mpls.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_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
  HDRINST usr/include/linux/byteorder/big_endian.h
  HDRINST usr/include/linux/byteorder/little_endian.h
  CC      /kernel/build64/tools/objtool/arch/x86/decode.o
  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/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/elf.h
  HDRINST usr/include/linux/videodev2.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/aspeed-lpc-ctrl.h
  HDRINST usr/include/linux/dm-ioctl.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/ip_vs.h
  HDRINST usr/include/linux/vmcore.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/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/dlm_netlink.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/posix_types.h
  HDRINST usr/include/asm/mce.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/ldt.h
  HDRINST usr/include/asm/kvm.h
  HDRINST usr/include/asm/perf_regs.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-long.h
  CHKSHA1 ../include/linux/atomic/atomic-instrumented.h
  UPD     include/generated/timeconst.h
  LD      /kernel/build64/tools/objtool/arch/x86/objtool-in.o
  UPD     include/generated/bounds.h
  CC      arch/x86/kernel/asm-offsets.s
  UPD     include/generated/asm-offsets.h
  CALL    ../scripts/checksyscalls.sh
  LD      /kernel/build64/tools/objtool/objtool-in.o
  LINK    /kernel/build64/tools/objtool/objtool
  LDS     scripts/module.lds
  CC      ipc/compat.o
  CC      ipc/util.o
  CC      ipc/msgutil.o
  HOSTCC  usr/gen_init_cpio
  CC      ipc/msg.o
  CC      ipc/sem.o
  AR      certs/built-in.a
  CC      ipc/shm.o
  CC      ipc/syscall.o
  CC      init/main.o
  CC      ipc/ipc_sysctl.o
  CC      security/commoncap.o
  UPD     init/utsversion-tmp.h
  CC      io_uring/io_uring.o
  CC      ipc/mqueue.o
  CC      init/do_mounts.o
  CC      security/min_addr.o
  CC      arch/x86/power/cpu.o
  CC      mm/filemap.o
  CC      ipc/namespace.o
  CC      arch/x86/power/hibernate_64.o
  CC      io_uring/xattr.o
  AR      arch/x86/video/built-in.a
  CC      arch/x86/pci/i386.o
  AR      virt/lib/built-in.a
  AS      arch/x86/lib/clear_page_64.o
  CC      security/keys/gc.o
  CC [M]  arch/x86/video/fbdev.o
  AR      arch/x86/ia32/built-in.a
  CC      net/llc/llc_core.o
  AS      arch/x86/crypto/aesni-intel_asm.o
  AR      arch/x86/net/built-in.a
  CC      net/core/sock.o
  CC      arch/x86/realmode/init.o
  CC      block/partitions/core.o
  AR      sound/i2c/other/built-in.a
  CC [M]  virt/lib/irqbypass.o
  CC      sound/core/seq/seq.o
  AR      drivers/irqchip/built-in.a
  AR      sound/drivers/opl3/built-in.a
  CC      block/partitions/ldm.o
  AR      sound/isa/ad1816a/built-in.a
  AR      arch/x86/platform/atom/built-in.a
  AR      sound/i2c/built-in.a
  CC      arch/x86/mm/pat/set_memory.o
  AR      sound/pci/ac97/built-in.a
  CC      fs/notify/dnotify/dnotify.o
  CC      io_uring/nop.o
  CC      arch/x86/kernel/fpu/init.o
  AR      sound/isa/ad1848/built-in.a
  CC      arch/x86/events/amd/core.o
  AR      arch/x86/platform/ce4100/built-in.a
  AR      sound/drivers/opl4/built-in.a
  CC      arch/x86/lib/cmdline.o
  AR      sound/pci/ali5451/built-in.a
  AR      drivers/bus/mhi/built-in.a
  CC      lib/math/div64.o
  CC      arch/x86/entry/vdso/vma.o
  CC      lib/kunit/test.o
  AR      sound/isa/cs423x/built-in.a
  AR      sound/drivers/mpu401/built-in.a
  AR      drivers/bus/built-in.a
  CC      arch/x86/platform/efi/memmap.o
  AR      sound/pci/asihpi/built-in.a
  AR      sound/isa/es1688/built-in.a
  CC      kernel/sched/core.o
  CC      mm/kasan/common.o
  AR      sound/pci/au88x0/built-in.a
  AR      sound/drivers/vx/built-in.a
  AR      sound/isa/galaxy/built-in.a
  CC      arch/x86/crypto/aesni-intel_glue.o
  AR      drivers/phy/allwinner/built-in.a
  CC      crypto/api.o
  AR      sound/pci/aw2/built-in.a
  AR      sound/drivers/pcsp/built-in.a
  AR      sound/isa/gus/built-in.a
  AR      sound/drivers/built-in.a
  AR      drivers/phy/amlogic/built-in.a
  CC      lib/math/gcd.o
  AR      sound/pci/ctxfi/built-in.a
  AR      sound/isa/msnd/built-in.a
  CC      sound/core/seq/seq_lock.o
  AR      drivers/phy/broadcom/built-in.a
  AR      sound/pci/ca0106/built-in.a
  AR      sound/isa/opti9xx/built-in.a
  AR      drivers/phy/cadence/built-in.a
  AR      sound/pci/cs46xx/built-in.a
  AR      sound/isa/sb/built-in.a
  AR      sound/pci/cs5535audio/built-in.a
  AR      drivers/phy/freescale/built-in.a
  AR      sound/isa/wavefront/built-in.a
  AR      sound/pci/lola/built-in.a
  AR      drivers/phy/hisilicon/built-in.a
  AR      sound/isa/wss/built-in.a
  AR      sound/isa/built-in.a
  AR      sound/pci/lx6464es/built-in.a
  AR      drivers/phy/ingenic/built-in.a
  AS      arch/x86/lib/cmpxchg16b_emu.o
  AR      drivers/phy/intel/built-in.a
  CC      security/inode.o
  AR      sound/pci/echoaudio/built-in.a
  CC      lib/math/lcm.o
  AR      drivers/phy/lantiq/built-in.a
  AR      sound/pci/emu10k1/built-in.a
  CC      arch/x86/lib/copy_mc.o
  AR      drivers/phy/marvell/built-in.a
  AR      sound/pci/hda/built-in.a
  CC [M]  sound/pci/hda/hda_bind.o
  AR      drivers/phy/mediatek/built-in.a
  AR      drivers/phy/microchip/built-in.a
  CC      lib/math/int_pow.o
  GEN     usr/initramfs_data.cpio
  AR      drivers/phy/motorola/built-in.a
  COPY    usr/initramfs_inc_data
  AS      usr/initramfs_data.o
  AR      drivers/phy/mscc/built-in.a
  AR      drivers/phy/qualcomm/built-in.a
  AR      usr/built-in.a
  AR      drivers/phy/ralink/built-in.a
  AR      drivers/phy/renesas/built-in.a
  CC      lib/math/int_sqrt.o
  AR      drivers/phy/rockchip/built-in.a
  AS      arch/x86/realmode/rm/header.o
  AR      drivers/phy/samsung/built-in.a
  AR      drivers/phy/socionext/built-in.a
  AS      arch/x86/realmode/rm/trampoline_64.o
  AR      drivers/phy/st/built-in.a
  AR      drivers/phy/sunplus/built-in.a
  AR      drivers/phy/tegra/built-in.a
  CC      lib/math/reciprocal_div.o
  AS      arch/x86/realmode/rm/stack.o
  AR      drivers/phy/ti/built-in.a
  AR      drivers/phy/xilinx/built-in.a
  AS      arch/x86/realmode/rm/reboot.o
  CC      drivers/phy/phy-core.o
  AS      arch/x86/realmode/rm/wakeup_asm.o
  CC      lib/math/rational.o
  CC      arch/x86/realmode/rm/wakemain.o
  AS      arch/x86/lib/copy_mc_64.o
  CC      arch/x86/realmode/rm/video-mode.o
  CC      sound/core/seq/seq_clientmgr.o
  AR      virt/built-in.a
  AS      arch/x86/lib/copy_page_64.o
  CC      security/device_cgroup.o
  CC      sound/core/seq/seq_memory.o
  AS      arch/x86/lib/copy_user_64.o
  CC [M]  arch/x86/kvm/../../../virt/kvm/kvm_main.o
  CC      ipc/mq_sysctl.o
  CC      sound/core/seq/seq_queue.o
  CC [M]  arch/x86/kvm/../../../virt/kvm/eventfd.o
  CC      arch/x86/lib/cpu.o
  CC      fs/notify/inotify/inotify_fsnotify.o
  CC      arch/x86/kernel/fpu/bugs.o
  AS      arch/x86/realmode/rm/copy.o
  CC      fs/notify/inotify/inotify_user.o
  CC      sound/core/seq/seq_fifo.o
  CC      security/keys/key.o
  AS      arch/x86/realmode/rm/bioscall.o
  AS      arch/x86/power/hibernate_asm_64.o
  CC      arch/x86/realmode/rm/regs.o
  AR      fs/notify/dnotify/built-in.a
  CC      crypto/cipher.o
  CC [M]  arch/x86/kvm/../../../virt/kvm/binary_stats.o
  CC      arch/x86/pci/init.o
  CC      arch/x86/lib/delay.o
  CC      arch/x86/realmode/rm/video-vga.o
  CC      lib/kunit/resource.o
  CC      arch/x86/kernel/fpu/core.o
  CC      net/core/request_sock.o
  AS      arch/x86/lib/getuser.o
  CC      arch/x86/platform/efi/quirks.o
  CC      io_uring/fs.o
  CC      net/llc/llc_input.o
  CC      sound/core/sound.o
  CC      arch/x86/kernel/fpu/regset.o
  CC [M]  lib/math/prime_numbers.o
  CC      arch/x86/entry/vdso/extable.o
  CC      arch/x86/realmode/rm/video-vesa.o
  CC      arch/x86/power/hibernate.o
  CC      arch/x86/entry/vdso/vdso32-setup.o
  CC      mm/kasan/report.o
  CC      arch/x86/realmode/rm/video-bios.o
  CC [M]  sound/pci/hda/hda_codec.o
  AR      arch/x86/platform/geode/built-in.a
  CC      mm/kasan/init.o
  AR      arch/x86/platform/iris/built-in.a
  CC      arch/x86/pci/mmconfig_64.o
  PASYMS  arch/x86/realmode/rm/pasyms.h
  LDS     arch/x86/realmode/rm/realmode.lds
  LD      arch/x86/realmode/rm/realmode.elf
  GEN     arch/x86/lib/inat-tables.c
  RELOCS  arch/x86/realmode/rm/realmode.relocs
  OBJCOPY arch/x86/realmode/rm/realmode.bin
  AS      arch/x86/crypto/aesni-intel_avx-x86_64.o
  AS      arch/x86/realmode/rmpiggy.o
  AR      arch/x86/realmode/built-in.a
  CC      arch/x86/events/amd/lbr.o
  CC      arch/x86/lib/insn-eval.o
  LDS     arch/x86/entry/vdso/vdso.lds
  AS      arch/x86/entry/vdso/vdso-note.o
  CC      block/partitions/msdos.o
  CC      mm/kasan/generic.o
  CC      arch/x86/entry/vdso/vclock_gettime.o
  CC      block/partitions/efi.o
  CC      crypto/compress.o
  CC      mm/kasan/report_generic.o
  CC      arch/x86/lib/insn.o
  CC      init/do_mounts_initrd.o
  CC      fs/notify/fanotify/fanotify.o
  CC      lib/kunit/static_stub.o
  CC      fs/notify/fanotify/fanotify_user.o
  CC      lib/kunit/string-stream.o
  CC      mm/mempool.o
  AS      arch/x86/crypto/aes_ctrby8_avx-x86_64.o
  CC      mm/oom_kill.o
  AR      drivers/phy/built-in.a
  AR      drivers/pinctrl/actions/built-in.a
  CC      drivers/gpio/gpiolib.o
  AR      lib/math/built-in.a
  AR      drivers/pinctrl/bcm/built-in.a
  CC      drivers/gpio/gpiolib-devres.o
  AR      drivers/pinctrl/cirrus/built-in.a
  CC      drivers/gpio/gpiolib-legacy.o
  AR      drivers/pinctrl/freescale/built-in.a
  CC [M]  arch/x86/kvm/../../../virt/kvm/vfio.o
  AS [M]  arch/x86/crypto/ghash-clmulni-intel_asm.o
  CC      drivers/pinctrl/intel/pinctrl-baytrail.o
  CC [M]  arch/x86/kvm/../../../virt/kvm/coalesced_mmio.o
  CC [M]  arch/x86/crypto/ghash-clmulni-intel_glue.o
  CC      io_uring/splice.o
  AS      arch/x86/lib/memcpy_64.o
  CC      drivers/pinctrl/intel/pinctrl-intel.o
  AR      arch/x86/power/built-in.a
  CC      mm/kasan/shadow.o
  CC      crypto/algapi.o
  CC      security/keys/keyring.o
  CC      security/keys/keyctl.o
  CC      fs/notify/fsnotify.o
  AR      fs/notify/inotify/built-in.a
  CC [M]  arch/x86/kvm/../../../virt/kvm/async_pf.o
  CC      net/llc/llc_output.o
  CC      arch/x86/mm/pat/memtype.o
  CC      arch/x86/platform/efi/efi.o
  CC      arch/x86/kernel/cpu/mce/core.o
  CC      arch/x86/kernel/cpu/mtrr/mtrr.o
  CC      arch/x86/entry/vdso/vgetcpu.o
  CC      arch/x86/pci/direct.o
  CC      arch/x86/kernel/cpu/cacheinfo.o
  HOSTCC  arch/x86/entry/vdso/vdso2c
  CC      arch/x86/kernel/cpu/scattered.o
  CC      lib/kunit/assert.o
  CC      mm/kasan/quarantine.o
  CC      arch/x86/kernel/acpi/boot.o
  CC      lib/kunit/try-catch.o
  CC      init/initramfs.o
  CC      arch/x86/events/amd/ibs.o
  CC      sound/core/seq/seq_prioq.o
  AR      sound/ppc/built-in.a
  CC [M]  arch/x86/kvm/../../../virt/kvm/irqchip.o
  CC      drivers/gpio/gpiolib-cdev.o
  CC      drivers/gpio/gpiolib-sysfs.o
  CC      drivers/gpio/gpiolib-acpi.o
  CC      init/calibrate.o
  AS      arch/x86/lib/memmove_64.o
  AS [M]  arch/x86/crypto/crc32-pclmul_asm.o
  AS      arch/x86/lib/memset_64.o
  CC [M]  arch/x86/crypto/crc32-pclmul_glue.o
  AR      block/partitions/built-in.a
  CC      block/bdev.o
  CC      arch/x86/kernel/fpu/signal.o
  CC      arch/x86/lib/misc.o
  LDS     arch/x86/entry/vdso/vdso32/vdso32.lds
  CC      arch/x86/lib/pc-conf-reg.o
  AS      arch/x86/entry/vdso/vdso32/note.o
  CC      arch/x86/kernel/acpi/sleep.o
  AS      arch/x86/entry/vdso/vdso32/system_call.o
  AR      ipc/built-in.a
  CC      arch/x86/kernel/cpu/mtrr/if.o
  CC      lib/kunit/executor.o
  AS      arch/x86/entry/vdso/vdso32/sigreturn.o
  AS      arch/x86/kernel/acpi/wakeup_64.o
  CC      arch/x86/entry/vdso/vdso32/vclock_gettime.o
  AS      arch/x86/lib/putuser.o
  CC      arch/x86/mm/pat/memtype_interval.o
  CC      arch/x86/kernel/fpu/xstate.o
  CC      arch/x86/entry/vdso/vdso32/vgetcpu.o
  CC      arch/x86/kernel/cpu/mtrr/generic.o
  CC      arch/x86/kernel/acpi/apei.o
  CC [M]  arch/x86/kvm/../../../virt/kvm/dirty_ring.o
  CC      arch/x86/pci/mmconfig-shared.o
  AS      arch/x86/lib/retpoline.o
  CC      init/init_task.o
  CC      io_uring/sync.o
  CC      arch/x86/lib/usercopy.o
  AR      net/llc/built-in.a
  CC      net/ethernet/eth.o
  AR      drivers/pwm/built-in.a
  CC      net/802/p8022.o
  CC      drivers/pci/msi/pcidev_msi.o
  CC      drivers/video/console/dummycon.o
  AS [M]  arch/x86/crypto/crct10dif-pcl-asm_64.o
  CC      drivers/pci/pcie/portdrv.o
  CC      drivers/pci/hotplug/pci_hotplug_core.o
  AR      mm/kasan/built-in.a
  CC      drivers/pci/hotplug/acpi_pcihp.o
  CC [M]  arch/x86/crypto/crct10dif-pclmul_glue.o
  CC      sound/core/seq/seq_timer.o
  CC      sound/core/seq/seq_system.o
  CC      arch/x86/platform/efi/efi_64.o
  CC      lib/kunit/hooks.o
  AR      fs/notify/fanotify/built-in.a
  CC      fs/notify/notification.o
  CC      drivers/pci/pcie/rcec.o
  CC      security/keys/permission.o
  CC      crypto/scatterwalk.o
  CC      security/keys/process_keys.o
  LD [M]  arch/x86/crypto/ghash-clmulni-intel.o
  LD [M]  arch/x86/crypto/crc32-pclmul.o
  CC      sound/core/seq/seq_ports.o
  CC [M]  drivers/pinctrl/intel/pinctrl-cherryview.o
  CC      security/keys/request_key.o
  CC [M]  arch/x86/kvm/../../../virt/kvm/pfncache.o
  CC      arch/x86/kernel/apic/apic.o
  VDSO    arch/x86/entry/vdso/vdso64.so.dbg
  AR      arch/x86/mm/pat/built-in.a
  CC [M]  arch/x86/kvm/x86.o
  CC      arch/x86/lib/usercopy_64.o
  CC      arch/x86/mm/init.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
  VDSO2C  arch/x86/entry/vdso/vdso-image-32.c
  CC      arch/x86/entry/vdso/vdso-image-64.o
  AR      lib/kunit/built-in.a
  CC      arch/x86/kernel/acpi/cppc.o
  CC      lib/crypto/memneq.o
  CC      lib/crypto/utils.o
  CC      arch/x86/events/amd/uncore.o
  CC      lib/crypto/chacha.o
  AR      arch/x86/crypto/built-in.a
  LD [M]  arch/x86/crypto/crct10dif-pclmul.o
  CC      init/version.o
  CC      arch/x86/lib/msr-smp.o
  CC      drivers/video/console/vgacon.o
  CC      lib/zlib_inflate/inffast.o
  CC      drivers/pci/msi/api.o
  CC      arch/x86/kernel/cpu/mtrr/cleanup.o
  CC      drivers/idle/intel_idle.o
  AR      drivers/char/ipmi/built-in.a
  CC      sound/core/init.o
  CC      block/fops.o
  CC      block/bio.o
  CC      net/802/psnap.o
  CC      arch/x86/entry/vdso/vdso-image-32.o
  CC [M]  sound/pci/hda/hda_jack.o
  CC      arch/x86/kernel/apic/apic_common.o
  CC      net/802/stp.o
  CC      lib/zlib_inflate/inflate.o
  AR      init/built-in.a
  CC      arch/x86/pci/fixup.o
  CC [M]  arch/x86/kvm/emulate.o
  CC      security/keys/request_key_auth.o
  CC      drivers/pci/hotplug/pciehp_core.o
  CC      lib/crypto/aes.o
  CC      fs/notify/group.o
  CC      drivers/pci/hotplug/pciehp_ctrl.o
  CC      drivers/acpi/acpica/dsargs.o
  CC      arch/x86/kernel/cpu/mce/severity.o
  CC      drivers/pci/pcie/aspm.o
  CC      drivers/acpi/acpica/dscontrol.o
  CC      mm/fadvise.o
  CC      crypto/proc.o
  CC      drivers/acpi/acpica/dsdebug.o
  AR      arch/x86/entry/vdso/built-in.a
  CC      arch/x86/entry/vsyscall/vsyscall_64.o
  AS      arch/x86/platform/efi/efi_stub_64.o
  AS      arch/x86/entry/vsyscall/vsyscall_emu_64.o
  CC      arch/x86/lib/cache-smp.o
  AR      arch/x86/platform/efi/built-in.a
  CC      lib/crypto/gf128mul.o
  CC      net/core/skbuff.o
  CC      arch/x86/platform/intel/iosf_mbi.o
  CC      arch/x86/kernel/acpi/cstate.o
  AR      arch/x86/kernel/fpu/built-in.a
  CC      arch/x86/kernel/kprobes/core.o
  AR      net/ethernet/built-in.a
  CC      arch/x86/kernel/kprobes/opt.o
  CC      sound/core/seq/seq_info.o
  CC      arch/x86/lib/msr.o
  AR      sound/arm/built-in.a
  CC      net/sched/sch_generic.o
  CC      net/core/datagram.o
  CC      net/netlink/af_netlink.o
  CC      drivers/acpi/apei/apei-base.o
  CC      drivers/pci/msi/msi.o
  CC      drivers/acpi/acpica/dsfield.o
  AR      drivers/acpi/pmic/built-in.a
  CC      net/sched/sch_mq.o
  AR      sound/sh/built-in.a
  CC [M]  drivers/pinctrl/intel/pinctrl-broxton.o
  CC      drivers/acpi/acpica/dsinit.o
  CC      arch/x86/mm/init_64.o
  AR      arch/x86/events/amd/built-in.a
  CC      arch/x86/events/intel/core.o
  CC      crypto/aead.o
  CC      security/keys/user_defined.o
  CC      arch/x86/events/intel/bts.o
  CC      io_uring/advise.o
  CC      lib/zlib_inflate/infutil.o
  CC      fs/notify/mark.o
  AR      arch/x86/kernel/cpu/mtrr/built-in.a
  CC      arch/x86/events/zhaoxin/core.o
  CC      lib/zlib_inflate/inftrees.o
  AR      net/802/built-in.a
  CC      security/keys/compat.o
  AR      arch/x86/kernel/acpi/built-in.a
  CC      lib/zlib_inflate/inflate_syms.o
  CC      arch/x86/kernel/cpu/mce/genpool.o
  CC      arch/x86/events/core.o
  CC      security/keys/proc.o
  AR      drivers/video/console/built-in.a
  CC      arch/x86/pci/acpi.o
  CC      drivers/gpio/gpiolib-swnode.o
  CC      drivers/video/logo/logo.o
  CC      mm/maccess.o
  CC      drivers/pci/hotplug/pciehp_pci.o
  CC      lib/crypto/blake2s.o
  AR      sound/core/seq/built-in.a
  CC      sound/core/memory.o
  HOSTCC  drivers/video/logo/pnmtologo
  CC [M]  sound/pci/hda/hda_auto_parser.o
  AR      arch/x86/platform/intel/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
  CC      drivers/pci/hotplug/pciehp_hpc.o
  AR      arch/x86/platform/scx200/built-in.a
  AR      arch/x86/entry/vsyscall/built-in.a
  AS      arch/x86/entry/entry.o
  AR      arch/x86/platform/ts5500/built-in.a
  AR      arch/x86/platform/uv/built-in.a
  AS      arch/x86/entry/entry_64.o
  AR      arch/x86/platform/built-in.a
  AR      drivers/idle/built-in.a
  CC      drivers/acpi/acpica/dsmethod.o
  CC      drivers/acpi/acpica/dsmthdat.o
  CC      kernel/sched/fair.o
  CC      arch/x86/kernel/apic/apic_noop.o
  CC      arch/x86/entry/syscall_64.o
  CC [M]  drivers/pinctrl/intel/pinctrl-geminilake.o
  CC [M]  drivers/pinctrl/intel/pinctrl-sunrisepoint.o
  CC      net/sched/sch_frag.o
  AR      lib/zlib_inflate/built-in.a
  AS      arch/x86/lib/msr-reg.o
  AR      drivers/pinctrl/mediatek/built-in.a
  CC      security/keys/sysctl.o
  CC      drivers/acpi/acpica/dsobject.o
  CC      arch/x86/lib/msr-reg-export.o
  LOGO    drivers/video/logo/logo_linux_clut224.c
  CC      arch/x86/kernel/kprobes/ftrace.o
  CC      drivers/video/logo/logo_linux_clut224.o
  CC      drivers/pci/pcie/aer.o
  CC      lib/crypto/blake2s-generic.o
  AR      drivers/video/logo/built-in.a
  AR      drivers/pinctrl/mvebu/built-in.a
  CC      drivers/acpi/acpica/dsopcode.o
  CC      drivers/video/backlight/backlight.o
  CC      sound/core/control.o
  AS      arch/x86/lib/hweight.o
  AR      drivers/gpio/built-in.a
  CC      arch/x86/lib/iomem.o
  CC      drivers/acpi/acpica/dspkginit.o
  CC      arch/x86/kernel/apic/ipi.o
  CC      fs/nfs_common/grace.o
  CC      drivers/acpi/apei/hest.o
  CC      arch/x86/kernel/cpu/mce/intel.o
  CC      crypto/geniv.o
  CC      io_uring/filetable.o
  CC      crypto/skcipher.o
  CC      mm/page-writeback.o
  CC      drivers/acpi/acpica/dsutils.o
  CC      crypto/seqiv.o
  CC      drivers/acpi/acpica/dswexec.o
  CC      drivers/pci/msi/irqdomain.o
  CC      arch/x86/kernel/apic/vector.o
  AR      drivers/amba/built-in.a
  CC      drivers/pnp/pnpacpi/core.o
  CC      arch/x86/kernel/cpu/mce/threshold.o
  CC      arch/x86/kernel/cpu/mce/apei.o
  CC      drivers/pnp/core.o
  CC      arch/x86/pci/legacy.o
  AR      arch/x86/events/zhaoxin/built-in.a
  AR      drivers/pinctrl/intel/built-in.a
  CC      drivers/acpi/apei/erst.o
  CC      block/elevator.o
  AR      drivers/pinctrl/nomadik/built-in.a
  AR      drivers/pinctrl/nuvoton/built-in.a
  AR      drivers/pinctrl/sprd/built-in.a
  AR      security/keys/built-in.a
  AR      drivers/pinctrl/sunplus/built-in.a
  CC      arch/x86/entry/common.o
  AR      security/built-in.a
  AR      drivers/pci/controller/dwc/built-in.a
  AR      drivers/pinctrl/ti/built-in.a
  AS      arch/x86/entry/thunk_64.o
  CC      drivers/pinctrl/core.o
  AR      drivers/pci/controller/mobiveil/built-in.a
  CC      arch/x86/events/probe.o
  CC      drivers/pci/controller/vmd.o
  AS      arch/x86/lib/iomap_copy_64.o
  CC      arch/x86/lib/inat.o
  CC      fs/notify/fdinfo.o
  CC      arch/x86/kernel/apic/hw_nmi.o
  CC      arch/x86/kernel/apic/io_apic.o
  CC      drivers/pnp/pnpacpi/rsparser.o
  AR      arch/x86/kernel/kprobes/built-in.a
  CC      drivers/video/fbdev/core/fb_notify.o
  CC      drivers/video/aperture.o
  AR      arch/x86/lib/built-in.a
  AR      arch/x86/lib/lib.a
  CC      drivers/video/cmdline.o
  CC      lib/crypto/blake2s-selftest.o
  CC      drivers/acpi/acpica/dswload.o
  CC      arch/x86/mm/fault.o
  CC [M]  sound/pci/hda/hda_sysfs.o
  CC [M]  arch/x86/kvm/i8259.o
  CC      arch/x86/mm/ioremap.o
  CC      drivers/pci/hotplug/acpiphp_core.o
  CC      arch/x86/events/intel/ds.o
  CC [M]  drivers/video/fbdev/core/fbmem.o
  CC      arch/x86/mm/extable.o
  AR      fs/nfs_common/built-in.a
  CC [M]  drivers/video/fbdev/core/fbmon.o
  CC      drivers/acpi/apei/bert.o
  CC      arch/x86/events/intel/knc.o
  AR      drivers/video/backlight/built-in.a
  CC      lib/zlib_deflate/deflate.o
  AR      sound/pci/ice1712/built-in.a
  CC      arch/x86/pci/irq.o
  CC      kernel/locking/mutex.o
  CC      kernel/power/qos.o
  CC      kernel/sched/build_policy.o
  CC      kernel/sched/build_utility.o
  CC      lib/crypto/des.o
  AR      drivers/pci/msi/built-in.a
  CC      kernel/power/main.o
  CC      arch/x86/kernel/apic/msi.o
  AR      arch/x86/kernel/cpu/mce/built-in.a
  CC      arch/x86/kernel/cpu/topology.o
  AR      fs/notify/built-in.a
  AS      arch/x86/entry/entry_64_compat.o
  CC      fs/iomap/trace.o
  CC      arch/x86/entry/syscall_32.o
  CC      drivers/acpi/acpica/dswload2.o
  CC      drivers/pci/pcie/err.o
  CC      io_uring/openclose.o
  CC      net/sched/sch_api.o
  CC      fs/iomap/iter.o
  CC [M]  sound/pci/hda/hda_controller.o
  CC      crypto/echainiv.o
  CC      arch/x86/kernel/cpu/common.o
  AR      net/bpf/built-in.a
  CC      arch/x86/mm/mmap.o
  CC      arch/x86/kernel/cpu/rdrand.o
  CC      block/blk-core.o
  CC      drivers/acpi/apei/ghes.o
  AR      drivers/pnp/pnpacpi/built-in.a
  AR      drivers/pci/controller/built-in.a
  CC      drivers/pnp/card.o
  CC      net/ethtool/ioctl.o
  CC      drivers/pci/hotplug/acpiphp_glue.o
  CC      net/core/stream.o
  AR      fs/quota/built-in.a
  CC [M]  net/netfilter/ipvs/ip_vs_conn.o
  CC [M]  net/netfilter/ipvs/ip_vs_core.o
  CC      arch/x86/kernel/cpu/match.o
  CC [M]  net/netfilter/ipvs/ip_vs_ctl.o
  CC      net/netfilter/core.o
  CC      sound/core/misc.o
  CC      drivers/acpi/acpica/dswscope.o
  CC      drivers/pinctrl/pinctrl-utils.o
  CC      block/blk-sysfs.o
  AR      arch/x86/entry/built-in.a
  AR      sound/pci/korg1212/built-in.a
  CC      net/netfilter/nf_log.o
  AR      sound/pci/mixart/built-in.a
  CC      arch/x86/kernel/apic/x2apic_phys.o
  CC      lib/zlib_deflate/deftree.o
  CC      drivers/pci/pcie/aer_inject.o
  CC      arch/x86/events/intel/lbr.o
  CC      arch/x86/events/intel/p4.o
  AR      drivers/clk/actions/built-in.a
  CC      kernel/power/console.o
  AR      drivers/clk/analogbits/built-in.a
  AR      drivers/clk/bcm/built-in.a
  AR      drivers/clk/imgtec/built-in.a
  CC      crypto/ahash.o
  AR      drivers/clk/imx/built-in.a
  CC      drivers/dma/dw/core.o
  CC      crypto/shash.o
  AR      drivers/clk/ingenic/built-in.a
  AR      drivers/clk/mediatek/built-in.a
  CC      arch/x86/mm/pgtable.o
  AR      drivers/clk/microchip/built-in.a
  CC      lib/crypto/sha1.o
  CC      block/blk-flush.o
  AR      drivers/clk/mstar/built-in.a
  AR      drivers/clk/mvebu/built-in.a
  CC      net/netlink/genetlink.o
  AR      drivers/clk/ralink/built-in.a
  CC      drivers/dma/dw/dw.o
  AR      drivers/clk/renesas/built-in.a
  AR      drivers/clk/socfpga/built-in.a
  CC      arch/x86/pci/common.o
  CC      fs/iomap/buffered-io.o
  AR      drivers/clk/sprd/built-in.a
  AR      drivers/clk/sunxi-ng/built-in.a
  CC      drivers/acpi/acpica/dswstate.o
  AR      drivers/clk/ti/built-in.a
  AR      drivers/clk/versatile/built-in.a
  CC      drivers/acpi/acpica/evevent.o
  CC      drivers/clk/x86/clk-lpss-atom.o
  CC      drivers/pnp/driver.o
  CC      net/sched/sch_blackhole.o
  CC      drivers/pinctrl/pinmux.o
  CC [M]  drivers/video/fbdev/core/fbcmap.o
  CC      io_uring/uring_cmd.o
  CC      mm/folio-compat.o
  CC      sound/core/device.o
  CC      arch/x86/kernel/apic/x2apic_cluster.o
  CC      lib/crypto/sha256.o
  CC      arch/x86/events/intel/p6.o
  CC      lib/zlib_deflate/deflate_syms.o
  AR      drivers/pci/hotplug/built-in.a
  CC [M]  arch/x86/kvm/irq.o
  CC      net/netlink/policy.o
  CC [M]  arch/x86/kvm/lapic.o
  CC      drivers/clk/x86/clk-pmc-atom.o
  CC      kernel/power/process.o
  CC      net/netfilter/nf_queue.o
  AR      drivers/acpi/apei/built-in.a
  CC      arch/x86/events/intel/pt.o
  CC      drivers/acpi/acpica/evgpe.o
  CC      drivers/pci/pcie/pme.o
  CC      sound/core/info.o
  CC      drivers/pnp/resource.o
  CC [M]  sound/pci/hda/hda_proc.o
  CC [M]  drivers/video/fbdev/core/fbsysfs.o
  CC      arch/x86/kernel/cpu/bugs.o
  LDS     arch/x86/kernel/vmlinux.lds
  CC      sound/core/isadma.o
  CC      sound/core/vmaster.o
  CC      arch/x86/pci/early.o
  AR      drivers/soc/apple/built-in.a
  AR      lib/zlib_deflate/built-in.a
  AR      drivers/soc/aspeed/built-in.a
  AR      sound/pci/nm256/built-in.a
  CC      lib/lzo/lzo1x_compress.o
  CC      kernel/locking/semaphore.o
  AR      drivers/soc/fsl/built-in.a
  AR      drivers/soc/bcm/bcm63xx/built-in.a
  CC      crypto/akcipher.o
  AR      drivers/soc/bcm/built-in.a
  CC      crypto/kpp.o
  CC      arch/x86/mm/physaddr.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      sound/synth/emux/built-in.a
  AR      drivers/soc/mediatek/built-in.a
  AR      sound/synth/built-in.a
  AR      drivers/soc/microchip/built-in.a
  AR      sound/pci/oxygen/built-in.a
  CC      crypto/acompress.o
  CC      arch/x86/kernel/apic/apic_flat_64.o
  AR      drivers/soc/nuvoton/built-in.a
  CC      crypto/scompress.o
  AR      drivers/soc/pxa/built-in.a
  AR      drivers/soc/amlogic/built-in.a
  AR      drivers/soc/qcom/built-in.a
  CC [M]  lib/crypto/arc4.o
  CC      drivers/pinctrl/pinconf.o
  AR      drivers/soc/renesas/built-in.a
  AR      drivers/soc/rockchip/built-in.a
  AR      drivers/soc/sifive/built-in.a
  AR      drivers/soc/sunxi/built-in.a
  CC      drivers/video/nomodeset.o
  CC [M]  arch/x86/kvm/i8254.o
  AR      drivers/soc/ti/built-in.a
  CC      mm/readahead.o
  AR      drivers/soc/xilinx/built-in.a
  AR      drivers/soc/built-in.a
  AR      sound/pci/pcxhr/built-in.a
  CC      drivers/dma/hsu/hsu.o
  AR      drivers/clk/x86/built-in.a
  AR      drivers/dma/idxd/built-in.a
  AR      drivers/clk/xilinx/built-in.a
  CC      drivers/clk/clk-devres.o
  CC      drivers/virtio/virtio.o
  CC      drivers/acpi/acpica/evgpeblk.o
  CC      drivers/tty/vt/vt_ioctl.o
  CC      drivers/dma/dw/idma32.o
  CC      io_uring/epoll.o
  CC      arch/x86/events/intel/uncore.o
  CC      arch/x86/events/intel/uncore_nhmex.o
  CC      sound/core/ctljack.o
  CC      drivers/acpi/acpica/evgpeinit.o
  CC      drivers/pci/pcie/dpc.o
  CC      lib/lzo/lzo1x_decompress_safe.o
  AR      lib/crypto/built-in.a
  LD [M]  lib/crypto/libarc4.o
  CC      io_uring/statx.o
  CC      net/core/scm.o
  CC      arch/x86/pci/bus_numa.o
  CC      arch/x86/mm/tlb.o
  CC      arch/x86/pci/amd_bus.o
  CC      net/sched/sch_fifo.o
  CC      kernel/power/suspend.o
  CC      arch/x86/kernel/apic/probe_64.o
  CC      drivers/dma/dw/acpi.o
  CC      kernel/locking/rwsem.o
  CC      block/blk-settings.o
  CC      crypto/algboss.o
  CC      drivers/clk/clk-bulk.o
  CC      drivers/char/hw_random/core.o
  CC      drivers/pinctrl/pinconf-generic.o
  CC      drivers/char/agp/backend.o
  CC [M]  drivers/video/fbdev/core/modedb.o
  CC      sound/core/jack.o
  CC      net/netlink/diag.o
  CC [M]  drivers/video/fbdev/core/fbcvt.o
  CC      drivers/virtio/virtio_ring.o
  CC      drivers/pnp/manager.o
  CC      drivers/virtio/virtio_anchor.o
  CC [M]  sound/pci/hda/hda_hwdep.o
  AR      arch/x86/kernel/apic/built-in.a
  CC      drivers/acpi/acpica/evgpeutil.o
  CC      block/blk-ioc.o
  CC      net/ethtool/common.o
  CC      drivers/pnp/support.o
  CC      drivers/char/hw_random/intel-rng.o
  CC      io_uring/net.o
  AR      lib/lzo/built-in.a
  CC      drivers/acpi/acpica/evglock.o
  CC      lib/lz4/lz4_compress.o
  AR      drivers/dma/hsu/built-in.a
  CC      lib/lz4/lz4hc_compress.o
  CC      io_uring/msg_ring.o
  CC      fs/iomap/direct-io.o
  CC      net/netfilter/nf_sockopt.o
  AS      arch/x86/kernel/head_64.o
  CC      drivers/acpi/acpica/evhandler.o
  CC      mm/swap.o
  CC      arch/x86/kernel/head64.o
  AR      drivers/pci/pcie/built-in.a
  CC      drivers/clk/clkdev.o
  AR      drivers/pci/switch/built-in.a
  CC      arch/x86/kernel/ebda.o
  CC      drivers/pci/access.o
  CC      arch/x86/kernel/cpu/aperfmperf.o
  AR      arch/x86/pci/built-in.a
  CC      arch/x86/events/intel/uncore_snb.o
  CC      drivers/dma/dw/pci.o
  CC      drivers/tty/vt/vc_screen.o
  AR      drivers/pinctrl/built-in.a
  CC [M]  net/netfilter/ipvs/ip_vs_sched.o
  CC      kernel/printk/printk.o
  CC [M]  net/netfilter/ipvs/ip_vs_xmit.o
  CC      kernel/power/hibernate.o
  CC      drivers/pnp/interface.o
  CC      kernel/printk/printk_safe.o
  CC      sound/core/timer.o
  CC      drivers/char/agp/generic.o
  CC      kernel/locking/percpu-rwsem.o
  CC [M]  sound/pci/hda/hda_generic.o
  CC      drivers/acpi/acpica/evmisc.o
  AR      net/sched/built-in.a
  CC      drivers/tty/vt/selection.o
  CC      crypto/testmgr.o
  CC      kernel/irq/irqdesc.o
  CC      arch/x86/mm/cpu_entry_area.o
  CC      arch/x86/mm/maccess.o
  AR      drivers/char/hw_random/built-in.a
  CC      arch/x86/mm/pgprot.o
  AR      sound/usb/misc/built-in.a
  AR      sound/usb/usx2y/built-in.a
  AR      sound/usb/caiaq/built-in.a
  CC [M]  drivers/video/fbdev/core/fb_cmdline.o
  AR      sound/usb/6fire/built-in.a
  CC      net/core/gen_stats.o
  AR      sound/usb/hiface/built-in.a
  AR      sound/usb/bcd2000/built-in.a
  AR      sound/usb/built-in.a
  CC      arch/x86/mm/hugetlbpage.o
  CC [M]  net/netfilter/ipvs/ip_vs_app.o
  CC      arch/x86/kernel/platform-quirks.o
  AR      net/netlink/built-in.a
  CC [M]  net/netfilter/ipvs/ip_vs_sync.o
  CC      block/blk-map.o
  CC      drivers/tty/hvc/hvc_console.o
  CC      drivers/clk/clk.o
  CC      net/ethtool/netlink.o
  CC      arch/x86/kernel/cpu/cpuid-deps.o
  CC      net/ethtool/bitset.o
  CC      kernel/irq/handle.o
  CC      drivers/char/tpm/tpm-chip.o
  CC      drivers/acpi/acpica/evregion.o
  AR      drivers/dma/dw/built-in.a
  AR      drivers/dma/mediatek/built-in.a
  CC      drivers/acpi/acpica/evrgnini.o
  CC      drivers/char/mem.o
  AR      drivers/dma/qcom/built-in.a
  CC      drivers/char/random.o
  AR      drivers/dma/ti/built-in.a
  AR      drivers/dma/xilinx/built-in.a
  CC      drivers/pnp/quirks.o
  CC [M]  drivers/dma/ioat/init.o
  CC      drivers/char/misc.o
  CC      kernel/locking/irqflag-debug.o
  CC      crypto/cmac.o
  CC      drivers/pci/bus.o
  CC      drivers/dma/dmaengine.o
  CC      arch/x86/mm/kasan_init_64.o
  CC      io_uring/timeout.o
  CC      drivers/acpi/acpica/evsci.o
  CC      fs/iomap/fiemap.o
  CC      kernel/locking/mutex-debug.o
  CC      arch/x86/events/intel/uncore_snbep.o
  CC      kernel/locking/lockdep.o
  CC      arch/x86/kernel/cpu/umwait.o
  CC      drivers/tty/vt/keyboard.o
  CC      lib/lz4/lz4_decompress.o
  CC [M]  drivers/video/fbdev/core/fb_defio.o
  CC      drivers/char/virtio_console.o
  CC      drivers/virtio/virtio_pci_modern_dev.o
  CC      lib/zstd/zstd_compress_module.o
  CC      arch/x86/mm/pkeys.o
  CC      lib/zstd/compress/fse_compress.o
  CC [M]  net/netfilter/ipvs/ip_vs_est.o
  CC      kernel/irq/manage.o
  CC      kernel/power/snapshot.o
  CC      drivers/acpi/acpica/evxface.o
  CC      drivers/char/agp/isoch.o
  CC      kernel/power/swap.o
  CC      net/core/gen_estimator.o
  CC      arch/x86/mm/pti.o
  CC      kernel/rcu/update.o
  AR      kernel/livepatch/built-in.a
  AR      drivers/tty/hvc/built-in.a
  CC      kernel/rcu/sync.o
  CC      drivers/char/tpm/tpm-dev-common.o
  CC      drivers/char/agp/intel-agp.o
  CC      block/blk-merge.o
  CC      kernel/rcu/srcutree.o
  CC      drivers/pnp/system.o
  CC      kernel/rcu/tree.o
  CC      fs/iomap/seek.o
  CC      drivers/tty/serial/8250/8250_core.o
  CC      kernel/irq/spurious.o
  CC      drivers/pci/probe.o
  CC      drivers/char/hpet.o
  CC      lib/zstd/compress/hist.o
  CC      arch/x86/kernel/cpu/proc.o
  CC      net/netfilter/utils.o
  CC      net/ethtool/strset.o
  CC      lib/zstd/compress/huf_compress.o
  CC      lib/zstd/compress/zstd_compress.o
  AR      drivers/tty/ipwireless/built-in.a
  CC      sound/core/hrtimer.o
  CC      arch/x86/kernel/process_64.o
  CC      drivers/char/nvram.o
  AR      kernel/sched/built-in.a
  CC      kernel/locking/lockdep_proc.o
  CC      mm/truncate.o
  CC      block/blk-timeout.o
  CC [M]  drivers/dma/ioat/dma.o
  CC      drivers/virtio/virtio_pci_legacy_dev.o
  CC      drivers/acpi/acpica/evxfevnt.o
  CC      io_uring/sqpoll.o
  CC [M]  drivers/video/fbdev/core/fbcon.o
  AR      drivers/pnp/built-in.a
  AR      drivers/iommu/amd/built-in.a
  CC      drivers/iommu/intel/dmar.o
  CC      drivers/char/agp/intel-gtt.o
  AR      arch/x86/mm/built-in.a
  CC      kernel/printk/printk_ringbuffer.o
  CC      io_uring/fdinfo.o
  AR      lib/lz4/built-in.a
  CC      arch/x86/kernel/signal.o
  CC      fs/iomap/swapfile.o
  CC      drivers/char/tpm/tpm-dev.o
  AR      sound/firewire/built-in.a
  CC      drivers/virtio/virtio_mmio.o
  CC      arch/x86/kernel/signal_64.o
  CC      lib/xz/xz_dec_syms.o
  CC      sound/core/seq_device.o
  CC      lib/raid6/algos.o
  CC      lib/raid6/recov.o
  CC      net/core/net_namespace.o
  MKCAP   arch/x86/kernel/cpu/capflags.c
  CC      drivers/acpi/acpica/evxfgpe.o
  HOSTCC  lib/raid6/mktables
  CC      arch/x86/kernel/cpu/powerflags.o
  CC      arch/x86/kernel/cpu/feat_ctl.o
  CC      drivers/virtio/virtio_pci_modern.o
  CC      crypto/hmac.o
  CC      drivers/tty/vt/consolemap.o
  CC      crypto/vmac.o
  CC      kernel/rcu/rcu_segcblist.o
  CC      drivers/virtio/virtio_pci_common.o
  CC      kernel/power/user.o
  CC      kernel/irq/resend.o
  UNROLL  lib/raid6/int1.c
  CC      lib/xz/xz_dec_stream.o
  CC      lib/xz/xz_dec_lzma2.o
  CC      drivers/tty/serial/8250/8250_pnp.o
  CC      kernel/locking/spinlock.o
  CC      drivers/tty/serial/8250/8250_port.o
  CC [M]  net/netfilter/ipvs/ip_vs_proto.o
  CC      kernel/printk/sysctl.o
  CC      drivers/char/tpm/tpm-interface.o
  CC [M]  sound/core/control_led.o
  CC      net/ethtool/linkinfo.o
  CC      lib/zstd/compress/zstd_compress_literals.o
  CC      mm/vmscan.o
  AR      fs/iomap/built-in.a
  AR      net/ipv4/netfilter/built-in.a
  CC [M]  net/ipv4/netfilter/nf_defrag_ipv4.o
  CC      net/xfrm/xfrm_policy.o
  UNROLL  lib/raid6/int2.c
  CC      net/unix/af_unix.o
  UNROLL  lib/raid6/int4.c
  CC      block/blk-lib.o
  UNROLL  lib/raid6/int8.c
  UNROLL  lib/raid6/int16.c
  CC      drivers/acpi/acpica/evxfregn.o
  UNROLL  lib/raid6/int32.c
  CC      kernel/power/poweroff.o
  CC      lib/raid6/recov_ssse3.o
  CC      lib/zstd/compress/zstd_compress_sequences.o
  CC      mm/shmem.o
  CC      lib/xz/xz_dec_bcj.o
  CC      arch/x86/kernel/cpu/intel.o
  CC [M]  drivers/video/fbdev/core/bitblit.o
  CC      fs/proc/task_mmu.o
  AR      kernel/printk/built-in.a
  CC      net/core/secure_seq.o
  CC [M]  drivers/dma/ioat/prep.o
  AR      drivers/char/agp/built-in.a
  CC [M]  drivers/video/fbdev/core/softcursor.o
  CC      net/ipv4/route.o
  CC      arch/x86/events/intel/uncore_discovery.o
  CC      kernel/irq/chip.o
  CC [M]  drivers/dma/ioat/dca.o
  CC      block/blk-mq.o
  CC      net/xfrm/xfrm_state.o
  CC      arch/x86/events/intel/cstate.o
  AR      sound/pci/riptide/built-in.a
  CC      io_uring/tctx.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
  CC      arch/x86/kernel/traps.o
  CC [M]  net/ipv4/netfilter/nf_reject_ipv4.o
  CC      drivers/pci/host-bridge.o
  CC      kernel/locking/osq_lock.o
  CC      drivers/acpi/acpica/exconcat.o
  AR      kernel/power/built-in.a
  CC      kernel/locking/qspinlock.o
  CC      drivers/tty/serial/8250/8250_dma.o
  CC      arch/x86/kernel/idt.o
  CC      crypto/xcbc.o
  HOSTCC  drivers/tty/vt/conmakehash
  AR      lib/xz/built-in.a
  CC      mm/util.o
  CC      drivers/virtio/virtio_pci_legacy.o
  CC      lib/raid6/recov_avx2.o
  CC [M]  sound/core/hwdep.o
  CC      drivers/char/tpm/tpm1-cmd.o
  CC      drivers/tty/vt/vt.o
  CC      drivers/char/tpm/tpm2-cmd.o
  CC      fs/kernfs/mount.o
  CC      net/ethtool/linkmodes.o
  CC      drivers/clk/clk-divider.o
  CC      drivers/clk/clk-fixed-factor.o
  CC      drivers/iommu/intel/iommu.o
  CC      drivers/acpi/acpica/exconfig.o
  CC      fs/proc/inode.o
  CC      drivers/tty/serial/8250/8250_dwlib.o
  CC      kernel/locking/rtmutex_api.o
  CC [M]  drivers/video/fbdev/core/tileblit.o
  CC [M]  sound/pci/hda/patch_realtek.o
  CC      crypto/crypto_null.o
  CC      drivers/tty/serial/8250/8250_pcilib.o
  AR      sound/sparc/built-in.a
  CC      drivers/pci/remove.o
  CC      block/blk-mq-tag.o
  CC      lib/zstd/compress/zstd_compress_superblock.o
  CC [M]  net/netfilter/ipvs/ip_vs_pe.o
  AR      arch/x86/events/intel/built-in.a
  CC      arch/x86/events/utils.o
  CC      lib/zstd/compress/zstd_double_fast.o
  CC      arch/x86/events/rapl.o
  CC [M]  drivers/dma/ioat/sysfs.o
  CC      io_uring/poll.o
  CC      net/core/flow_dissector.o
  AR      drivers/gpu/host1x/built-in.a
  CC      kernel/irq/dummychip.o
  AR      drivers/gpu/drm/tests/built-in.a
  CC [M]  drivers/gpu/drm/tests/drm_kunit_helpers.o
  CC [M]  drivers/virtio/virtio_mem.o
  CC      lib/raid6/mmx.o
  CC      lib/raid6/sse1.o
  CC      lib/raid6/sse2.o
  CC      lib/raid6/avx2.o
  CC      drivers/acpi/acpica/exconvrt.o
  CC      drivers/acpi/acpica/excreate.o
  CC      kernel/irq/devres.o
  CC [M]  sound/core/pcm.o
  CC      fs/kernfs/inode.o
  CC      lib/raid6/avx512.o
  CC      net/xfrm/xfrm_hash.o
  CC      crypto/md5.o
  CC      drivers/clk/clk-fixed-rate.o
  CC      block/blk-stat.o
  CC      fs/kernfs/dir.o
  CC      drivers/tty/serial/8250/8250_pci.o
  CC      drivers/pci/pci.o
  CC [M]  net/ipv4/netfilter/ip_tables.o
  CC      drivers/char/tpm/tpmrm-dev.o
  CC [M]  drivers/video/fbdev/core/cfbfillrect.o
  CC      mm/mmzone.o
  CC [M]  sound/core/pcm_native.o
  CC [M]  drivers/gpu/drm/tests/drm_buddy_test.o
  CC      fs/proc/root.o
  CC [M]  sound/core/pcm_lib.o
  CC [M]  sound/core/pcm_misc.o
  CC      net/ethtool/rss.o
  LD [M]  drivers/dma/ioat/ioatdma.o
  CC      drivers/acpi/acpica/exdebug.o
  CC      crypto/sha1_generic.o
  CC      drivers/dma/virt-dma.o
  CC      kernel/irq/autoprobe.o
  CC      lib/raid6/recov_avx512.o
  CC      arch/x86/events/msr.o
  CC      mm/vmstat.o
  CC      kernel/locking/spinlock_debug.o
  CC      drivers/clk/clk-gate.o
  CC [M]  drivers/gpu/drm/tests/drm_cmdline_parser_test.o
  CC [M]  drivers/video/fbdev/core/cfbcopyarea.o
  CC      io_uring/cancel.o
  CC      drivers/connector/cn_queue.o
  CC [M]  net/netfilter/ipvs/ip_vs_proto_tcp.o
  CC [M]  sound/core/pcm_memory.o
  CC      crypto/sha256_generic.o
  CC [M]  sound/core/memalloc.o
  CC      drivers/acpi/acpica/exdump.o
  CC      io_uring/kbuf.o
  CC      drivers/char/tpm/tpm2-space.o
  CC      fs/kernfs/file.o
  CC      kernel/irq/irqdomain.o
  CC      lib/fonts/fonts.o
  CC [M]  arch/x86/kvm/ioapic.o
  CC      fs/proc/base.o
  CC      lib/fonts/font_8x8.o
  CC      kernel/locking/qrwlock.o
  CC      fs/kernfs/symlink.o
  AR      drivers/gpu/drm/arm/built-in.a
  TABLE   lib/raid6/tables.c
  CC      drivers/base/power/sysfs.o
  CC      drivers/dma/acpi-dma.o
  CC      arch/x86/kernel/cpu/intel_pconfig.o
  CC      lib/raid6/int1.o
  CC      drivers/base/firmware_loader/builtin/main.o
  CC      drivers/clk/clk-multiplier.o
  CC      net/unix/garbage.o
  CC      drivers/acpi/acpica/exfield.o
  AR      arch/x86/events/built-in.a
  CC      drivers/base/regmap/regmap.o
  CC      arch/x86/kernel/cpu/tsx.o
  CC      net/ipv4/inetpeer.o
  CC      net/ethtool/linkstate.o
  CC      drivers/acpi/acpica/exfldio.o
  CC      crypto/sha512_generic.o
  CC      lib/fonts/font_8x16.o
  AR      drivers/gpu/vga/built-in.a
  CC      fs/proc/generic.o
  AR      drivers/base/firmware_loader/builtin/built-in.a
  CC      drivers/base/firmware_loader/main.o
  CC      drivers/pci/pci-driver.o
  CC      drivers/tty/serial/8250/8250_exar.o
  CC [M]  drivers/video/fbdev/core/cfbimgblt.o
  CC [M]  sound/core/pcm_timer.o
  AR      kernel/locking/built-in.a
  AR      drivers/virtio/built-in.a
  CC      net/unix/sysctl_net_unix.o
  CC      drivers/base/regmap/regcache.o
  CC      drivers/clk/clk-mux.o
  CC      drivers/clk/clk-composite.o
  CC      drivers/connector/connector.o
  CC      net/core/sysctl_net_core.o
  CC      drivers/base/power/generic_ops.o
  CC      arch/x86/kernel/cpu/intel_epb.o
  AR      lib/fonts/built-in.a
  CC [M]  arch/x86/kvm/irq_comm.o
  CC      drivers/pci/search.o
  AR      kernel/rcu/built-in.a
  CC      net/core/dev.o
  CC      lib/raid6/int2.o
  CC      drivers/char/tpm/tpm-sysfs.o
  CC      drivers/tty/serial/8250/8250_early.o
  AR      drivers/dma/built-in.a
  CC      drivers/video/hdmi.o
  CC      drivers/acpi/acpica/exmisc.o
  AR      fs/kernfs/built-in.a
  CC      io_uring/rsrc.o
  CC      fs/proc/array.o
  COPY    drivers/tty/vt/defkeymap.c
  CONMK   drivers/tty/vt/consolemap_deftbl.c
  CC      drivers/tty/vt/defkeymap.o
  CC      net/ipv4/protocol.o
  CC [M]  net/ipv4/netfilter/iptable_filter.o
  CC      mm/backing-dev.o
  CC [M]  net/netfilter/ipvs/ip_vs_proto_udp.o
  CC      drivers/char/tpm/eventlog/common.o
  CC      kernel/irq/proc.o
  CC      drivers/tty/vt/consolemap_deftbl.o
  CC      kernel/irq/migration.o
  CC      crypto/blake2b_generic.o
  CC      kernel/irq/cpuhotplug.o
  AR      drivers/tty/vt/built-in.a
  CC      drivers/acpi/dptf/int340x_thermal.o
  CC      drivers/clk/clk-fractional-divider.o
  CC      kernel/irq/pm.o
  CC      arch/x86/kernel/cpu/amd.o
  CC [M]  sound/pci/hda/patch_analog.o
  CC      drivers/base/power/common.o
  CC [M]  drivers/gpu/drm/tests/drm_connector_test.o
  LD [M]  sound/core/snd-ctl-led.o
  CC      kernel/dma/mapping.o
  CC      kernel/entry/common.o
  CC      net/ethtool/debug.o
  CC      drivers/acpi/acpica/exmutex.o
  CC      net/ethtool/wol.o
  CC      drivers/tty/serial/8250/8250_dw.o
  CC      drivers/iommu/intel/pasid.o
  CC [M]  drivers/video/fbdev/core/sysfillrect.o
  CC      drivers/tty/serial/8250/8250_lpss.o
  AR      drivers/gpu/drm/display/built-in.a
  CC [M]  drivers/gpu/drm/display/drm_display_helper_mod.o
  CC      fs/sysfs/file.o
  CC      lib/raid6/int4.o
  CC      net/unix/diag.o
  CC      fs/configfs/inode.o
  AR      drivers/base/firmware_loader/built-in.a
  CC      fs/devpts/inode.o
  CC      block/blk-mq-sysfs.o
  CC      drivers/connector/cn_proc.o
  CC      drivers/char/tpm/eventlog/tpm1.o
  CC      net/ethtool/features.o
  CC      lib/raid6/int8.o
  AR      drivers/acpi/dptf/built-in.a
  CC      arch/x86/kernel/cpu/hygon.o
  CC      fs/configfs/file.o
  CC [M]  drivers/gpu/drm/tests/drm_damage_helper_test.o
  CC      net/xfrm/xfrm_input.o
  CC      drivers/base/power/qos.o
  CC      net/xfrm/xfrm_output.o
  CC [M]  drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
  AR      drivers/base/test/built-in.a
  CC [M]  arch/x86/kvm/cpuid.o
  CC      drivers/clk/clk-gpio.o
  CC      lib/raid6/int16.o
  CC      lib/raid6/int32.o
  CC      drivers/acpi/acpica/exnames.o
  CC      drivers/base/component.o
  CC      fs/configfs/dir.o
  CC      net/xfrm/xfrm_sysctl.o
  CC      kernel/irq/msi.o
  CC [M]  net/ipv4/netfilter/iptable_mangle.o
  CC [M]  sound/pci/hda/patch_hdmi.o
  CC      kernel/irq/affinity.o
  CC      drivers/pci/pci-sysfs.o
  CC      fs/configfs/symlink.o
  CC      crypto/ecb.o
  CC      crypto/cbc.o
  AR      drivers/iommu/iommufd/built-in.a
  CC      net/core/dev_addr_lists.o
  LD [M]  sound/core/snd-hwdep.o
  CC      drivers/char/tpm/eventlog/tpm2.o
  CC      arch/x86/kernel/cpu/centaur.o
  CC      fs/sysfs/dir.o
  CC      crypto/pcbc.o
  CC [M]  drivers/video/fbdev/core/syscopyarea.o
  AR      sound/core/built-in.a
  LD [M]  sound/core/snd-pcm.o
  CC [M]  net/netfilter/ipvs/ip_vs_nfct.o
  CC      block/blk-mq-cpumap.o
  AR      fs/devpts/built-in.a
  CC [M]  net/netfilter/ipvs/ip_vs_rr.o
  CC      drivers/tty/serial/8250/8250_mid.o
  CC      drivers/acpi/acpica/exoparg1.o
  CC      kernel/entry/syscall_user_dispatch.o
  AR      sound/spi/built-in.a
  CC      kernel/entry/kvm.o
  CC [M]  net/netfilter/nfnetlink.o
  CC      kernel/dma/direct.o
  AR      drivers/video/fbdev/omap/built-in.a
  AR      drivers/clk/built-in.a
  CC      crypto/cts.o
  CC      drivers/acpi/acpica/exoparg2.o
  CC      fs/proc/fd.o
  CC [M]  drivers/video/fbdev/core/sysimgblt.o
  CC      drivers/iommu/intel/trace.o
  CC      drivers/iommu/intel/cap_audit.o
  CC      lib/raid6/tables.o
  CC      drivers/iommu/intel/irq_remapping.o
  CC      mm/mm_init.o
  CC      net/unix/scm.o
  CC      kernel/irq/matrix.o
  CC      crypto/lrw.o
  CC [M]  drivers/gpu/drm/display/drm_dp_helper.o
  CC      drivers/block/loop.o
  AR      drivers/misc/eeprom/built-in.a
  CC      drivers/mfd/mfd-core.o
  AR      drivers/misc/cb710/built-in.a
  CC      net/ethtool/privflags.o
  AR      drivers/misc/ti-st/built-in.a
  AR      drivers/misc/lis3lv02d/built-in.a
  AR      drivers/misc/cardreader/built-in.a
  CC      fs/proc/proc_tty.o
  CC      drivers/mfd/intel-lpss.o
  AR      drivers/connector/built-in.a
  CC [M]  drivers/misc/mei/hdcp/mei_hdcp.o
  CC [M]  drivers/misc/mei/pxp/mei_pxp.o
  CC      fs/sysfs/symlink.o
  CC      arch/x86/kernel/cpu/zhaoxin.o
  CC      io_uring/rw.o
  CC      drivers/base/power/runtime.o
  CC [M]  drivers/gpu/drm/tests/drm_dp_mst_helper_test.o
  CC      net/xfrm/xfrm_replay.o
  CC      lib/zstd/compress/zstd_fast.o
  CC      drivers/acpi/acpica/exoparg3.o
  CC      drivers/char/tpm/tpm_ppi.o
  CC      drivers/mfd/intel-lpss-pci.o
  CC      block/blk-mq-sched.o
  CC [M]  net/ipv4/netfilter/iptable_nat.o
  CC      drivers/tty/serial/8250/8250_pericom.o
  CC      crypto/xts.o
  AR      lib/raid6/built-in.a
  CC      lib/argv_split.o
  CC      drivers/base/regmap/regcache-rbtree.o
  CC      fs/configfs/mount.o
  CC      fs/configfs/item.o
  AR      kernel/entry/built-in.a
  CC      block/ioctl.o
  CC      net/xfrm/xfrm_device.o
  CC      mm/percpu.o
  CC      mm/slab_common.o
  CC      arch/x86/kernel/cpu/perfctr-watchdog.o
  CC      arch/x86/kernel/cpu/vmware.o
  CC      kernel/dma/ops_helpers.o
  CC [M]  drivers/video/fbdev/core/fb_sys_fops.o
  CC      fs/sysfs/mount.o
  CC      drivers/acpi/acpica/exoparg6.o
  CC      fs/proc/cmdline.o
  CC      block/genhd.o
  CC      fs/proc/consoles.o
  AR      sound/parisc/built-in.a
  CC      drivers/pci/rom.o
  CC      net/xfrm/xfrm_algo.o
  CC      drivers/pci/setup-res.o
  LD [M]  net/netfilter/ipvs/ip_vs.o
  CC      crypto/ctr.o
  CC      drivers/pci/irq.o
  AR      net/unix/built-in.a
  CC      drivers/iommu/iommu.o
  CC      drivers/iommu/intel/perfmon.o
  CC      fs/proc/cpuinfo.o
  CC      drivers/pci/vpd.o
  CC      drivers/base/power/wakeirq.o
  CC      drivers/mfd/intel-lpss-acpi.o
  AR      drivers/gpu/drm/rcar-du/built-in.a
  CC [M]  drivers/gpu/drm/display/drm_dp_mst_topology.o
  CC      drivers/char/tpm/eventlog/acpi.o
  CC [M]  drivers/misc/mei/init.o
  CC [M]  drivers/gpu/drm/display/drm_dsc_helper.o
  CC [M]  drivers/gpu/drm/tests/drm_format_helper_test.o
  CC [M]  net/netfilter/nf_conntrack_core.o
  CC      net/ethtool/rings.o
  AR      fs/configfs/built-in.a
  CC      drivers/char/tpm/eventlog/efi.o
  CC      drivers/tty/serial/serial_core.o
  AR      drivers/tty/serial/8250/built-in.a
  CC      net/ethtool/channels.o
  CC      drivers/acpi/acpica/exprep.o
  CC      fs/ext4/balloc.o
  CC      fs/jbd2/transaction.o
  AR      kernel/irq/built-in.a
  CC      fs/ramfs/inode.o
  CC      fs/ext4/bitmap.o
  CC      drivers/base/regmap/regcache-flat.o
  CC      arch/x86/kernel/cpu/hypervisor.o
  CC      kernel/dma/dummy.o
  CC      fs/ramfs/file-mmu.o
  CC [M]  arch/x86/kvm/pmu.o
  CC      crypto/gcm.o
  CC [M]  net/ipv4/netfilter/ipt_REJECT.o
  CC      drivers/pci/setup-bus.o
  CC      fs/jbd2/commit.o
  CC      fs/proc/devices.o
  CC      drivers/pci/vc.o
  CC      net/xfrm/xfrm_user.o
  CC      fs/sysfs/group.o
  LD [M]  drivers/video/fbdev/core/fb.o
  CC      drivers/mfd/intel_soc_pmic_crc.o
  CC      drivers/base/power/main.o
  CC      drivers/base/power/wakeup.o
  AR      drivers/video/fbdev/core/built-in.a
  CC      drivers/base/power/wakeup_stats.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/kernel/cpu/mshyperv.o
  CC [M]  sound/pci/hda/hda_eld.o
  CC      arch/x86/kernel/irq.o
  CC      drivers/acpi/acpica/exregion.o
  CC      drivers/char/tpm/tpm_crb.o
  CC      drivers/pci/mmap.o
  CC [M]  drivers/misc/mei/hbm.o
  CC      drivers/base/regmap/regmap-debugfs.o
  CC      drivers/block/virtio_blk.o
  CC      kernel/dma/contiguous.o
  CC [M]  drivers/misc/mei/interrupt.o
  CC      drivers/tty/tty_io.o
  CC      io_uring/opdef.o
  CC [M]  drivers/video/fbdev/simplefb.o
  CC      drivers/acpi/tables.o
  CC      drivers/acpi/acpica/exresnte.o
  CC [M]  drivers/block/nbd.o
  AR      fs/ramfs/built-in.a
  CC [M]  arch/x86/kvm/mtrr.o
  CC      fs/ext4/block_validity.o
  CC      fs/proc/interrupts.o
  CC      block/ioprio.o
  CC      net/core/dst.o
  AR      fs/sysfs/built-in.a
  CC      kernel/dma/swiotlb.o
  CC      kernel/dma/remap.o
  AR      drivers/iommu/intel/built-in.a
  CC [M]  drivers/gpu/drm/tests/drm_format_test.o
  CC      block/badblocks.o
  CC      fs/jbd2/recovery.o
  CC      io_uring/notif.o
  CC      net/ethtool/coalesce.o
  CC [M]  drivers/mfd/lpc_sch.o
  CC      mm/compaction.o
  CC      drivers/acpi/acpica/exresolv.o
  CC [M]  sound/pci/hda/hda_intel.o
  CC      arch/x86/kernel/cpu/capflags.o
  CC      net/ipv4/ip_input.o
  AR      arch/x86/kernel/cpu/built-in.a
  CC      crypto/pcrypt.o
  CC      arch/x86/kernel/irq_64.o
  AR      drivers/nfc/built-in.a
  CC      drivers/acpi/acpica/exresop.o
  CC      crypto/cryptd.o
  CC      drivers/pci/setup-irq.o
  CC      fs/proc/loadavg.o
  AR      drivers/char/tpm/built-in.a
  AR      drivers/char/built-in.a
  CC      mm/interval_tree.o
  CC      drivers/base/regmap/regmap-i2c.o
  AR      drivers/video/fbdev/built-in.a
  CC      drivers/base/regmap/regmap-irq.o
  CC      mm/list_lru.o
  CC      kernel/module/main.o
  CC      drivers/acpi/blacklist.o
  CC      drivers/pci/proc.o
  CC [M]  drivers/misc/mei/client.o
  CC      mm/workingset.o
  CC [M]  drivers/gpu/drm/display/drm_hdcp_helper.o
  CC      drivers/acpi/osi.o
  CC      io_uring/io-wq.o
  CC [M]  net/netfilter/nf_conntrack_standalone.o
  CC      drivers/iommu/iommu-traces.o
  CC      fs/ext4/dir.o
  CC [M]  drivers/mfd/lpc_ich.o
  CC      block/blk-rq-qos.o
  CC      kernel/module/strict_rwx.o
  CC [M]  arch/x86/kvm/hyperv.o
  CC      drivers/acpi/acpica/exserial.o
  CC      fs/jbd2/checkpoint.o
  CC [M]  drivers/gpu/drm/tests/drm_framebuffer_test.o
  CC      drivers/base/core.o
  CC      fs/proc/meminfo.o
  AR      drivers/block/built-in.a
  CC      fs/proc/stat.o
  AR      drivers/gpu/drm/omapdrm/built-in.a
  AR      drivers/gpu/drm/tilcdc/built-in.a
  CC      drivers/pci/slot.o
  AR      drivers/gpu/drm/imx/built-in.a
  CC      fs/jbd2/revoke.o
  CC      arch/x86/kernel/dumpstack_64.o
  CC      fs/jbd2/journal.o
  CC      mm/debug.o
  CC      drivers/acpi/osl.o
  CC      net/ethtool/pause.o
  CC      net/ethtool/eee.o
  AR      drivers/video/built-in.a
  CC      fs/proc/uptime.o
  CC      drivers/tty/serial/earlycon.o
  CC      drivers/iommu/iommu-sysfs.o
  CC      drivers/base/power/domain.o
  AR      kernel/dma/built-in.a
  CC      drivers/iommu/dma-iommu.o
  CC      drivers/acpi/acpica/exstore.o
  CC      kernel/module/tree_lookup.o
  CC      drivers/acpi/utils.o
  CC      mm/gup.o
  CC      fs/hugetlbfs/inode.o
  CC      crypto/des_generic.o
  CC [M]  drivers/gpu/drm/display/drm_hdmi_helper.o
  CC [M]  drivers/gpu/drm/display/drm_scdc_helper.o
  CC [M]  drivers/gpu/drm/tests/drm_managed_test.o
  CC      block/disk-events.o
  CC      fs/ext4/ext4_jbd2.o
  AR      drivers/mfd/built-in.a
  CC      fs/ext4/extents.o
  CC      net/core/netevent.o
  CC      net/core/neighbour.o
  AR      drivers/dax/hmem/built-in.a
  CC      drivers/dax/super.o
  CC      fs/proc/util.o
  CC      arch/x86/kernel/time.o
  CC      fs/proc/version.o
  CC      fs/proc/softirqs.o
  CC      drivers/dma-buf/dma-buf.o
  CC      lib/zstd/compress/zstd_lazy.o
  CC      drivers/acpi/acpica/exstoren.o
  CC      arch/x86/kernel/ioport.o
  CC      drivers/pci/pci-acpi.o
  CC      net/ipv4/ip_fragment.o
  AR      drivers/base/regmap/built-in.a
  CC      drivers/iommu/ioasid.o
  CC      drivers/tty/serial/serial_mctrl_gpio.o
  CC      crypto/aes_generic.o
  LD [M]  sound/pci/hda/snd-hda-codec.o
  CC      drivers/base/bus.o
  CC      drivers/tty/n_tty.o
  CC      drivers/tty/tty_ioctl.o
  AR      net/xfrm/built-in.a
  CC      net/ipv4/ip_forward.o
  CC      drivers/iommu/iova.o
  LD [M]  sound/pci/hda/snd-hda-codec-generic.o
  LD [M]  sound/pci/hda/snd-hda-codec-realtek.o
  AR      net/ipv6/netfilter/built-in.a
  CC [M]  net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
  CC [M]  drivers/gpu/drm/tests/drm_mm_test.o
  LD [M]  sound/pci/hda/snd-hda-codec-analog.o
  LD [M]  sound/pci/hda/snd-hda-codec-hdmi.o
  CC      net/packet/af_packet.o
  LD [M]  sound/pci/hda/snd-hda-intel.o
  AR      sound/pci/rme9652/built-in.a
  CC [M]  drivers/misc/mei/main.o
  AR      sound/pci/trident/built-in.a
  CC [M]  net/netfilter/nf_conntrack_expect.o
  AR      sound/pci/ymfpci/built-in.a
  CC      drivers/pci/quirks.o
  AR      sound/pci/vx222/built-in.a
  CC      net/ethtool/tsinfo.o
  CC [M]  drivers/gpu/drm/display/drm_dp_aux_dev.o
  AR      sound/pci/built-in.a
  CC      drivers/pci/ats.o
  CC      net/key/af_key.o
  CC      lib/zstd/compress/zstd_ldm.o
  CC      fs/proc/namespaces.o
  AR      sound/pcmcia/vx/built-in.a
  AR      sound/pcmcia/pdaudiocf/built-in.a
  AR      sound/pcmcia/built-in.a
  CC      drivers/acpi/acpica/exstorob.o
  AR      sound/mips/built-in.a
  AR      sound/soc/built-in.a
  CC      lib/zstd/compress/zstd_opt.o
  AR      sound/atmel/built-in.a
  AR      sound/hda/built-in.a
  CC      fs/proc/self.o
  CC [M]  sound/hda/hda_bus_type.o
  AR      io_uring/built-in.a
  CC [M]  sound/hda/hdac_bus.o
  CC      block/blk-ia-ranges.o
  CC      net/core/rtnetlink.o
  CC      drivers/base/power/domain_governor.o
  CC      drivers/dax/bus.o
  CC      drivers/pci/iov.o
  CC [M]  drivers/misc/mei/dma-ring.o
  CC      arch/x86/kernel/dumpstack.o
  AR      drivers/tty/serial/built-in.a
  CC      drivers/tty/tty_ldisc.o
  CC      drivers/iommu/irq_remapping.o
  CC      drivers/acpi/acpica/exsystem.o
  CC      kernel/module/debug_kmemleak.o
  AR      drivers/misc/built-in.a
  CC      fs/ext4/extents_status.o
  CC [M]  net/ipv6/netfilter/nf_conntrack_reasm.o
  AR      fs/hugetlbfs/built-in.a
  CC      fs/proc/thread_self.o
  CC      drivers/acpi/acpica/extrace.o
  CC      fs/fat/cache.o
  CC      drivers/dma-buf/dma-fence.o
  CC      fs/fat/dir.o
  CC      fs/fat/fatent.o
  CC      drivers/dma-buf/dma-fence-array.o
  CC      drivers/acpi/acpica/exutils.o
  CC      fs/proc/proc_sysctl.o
  CC      fs/fat/file.o
  CC      drivers/base/power/clock_ops.o
  CC      fs/nfs/client.o
  CC      crypto/deflate.o
  CC      net/ethtool/cabletest.o
  LD [M]  drivers/gpu/drm/display/drm_display_helper.o
  CC      block/bsg.o
  CC [M]  sound/hda/hdac_device.o
  CC      fs/nfs/dir.o
  CC      fs/proc/proc_net.o
  CC      arch/x86/kernel/nmi.o
  CC      block/bsg-lib.o
  CC [M]  drivers/misc/mei/bus.o
  CC      fs/nfs/file.o
  CC      net/ipv4/ip_options.o
  CC      fs/nfs/getroot.o
  CC [M]  arch/x86/kvm/debugfs.o
  CC      kernel/module/kallsyms.o
  CC      block/blk-cgroup.o
  AR      drivers/iommu/built-in.a
  CC      block/blk-cgroup-rwstat.o
  CC      lib/zstd/zstd_decompress_module.o
  CC      drivers/acpi/acpica/hwacpi.o
  CC      drivers/acpi/acpica/hwesleep.o
  CC      fs/nfs/inode.o
  CC      net/core/utils.o
  CC      drivers/dma-buf/dma-fence-chain.o
  CC      fs/ext4/file.o
  CC      drivers/tty/tty_buffer.o
  CC      fs/fat/inode.o
  CC [M]  net/netfilter/nf_conntrack_helper.o
  AR      drivers/base/power/built-in.a
  CC      drivers/acpi/acpica/hwgpe.o
  AR      drivers/dax/built-in.a
  CC      fs/nfs/super.o
  CC      drivers/base/dd.o
  CC      crypto/crc32c_generic.o
  CC      lib/zstd/decompress/huf_decompress.o
  CC      fs/fat/misc.o
  CC      mm/mmap_lock.o
  CC      block/blk-throttle.o
  CC [M]  net/netfilter/nf_conntrack_proto.o
  AR      fs/jbd2/built-in.a
  CC      fs/nfs/io.o
  AR      drivers/gpu/drm/i2c/built-in.a
  AR      drivers/gpu/drm/panel/built-in.a
  CC      block/mq-deadline.o
  CC      lib/zstd/decompress/zstd_ddict.o
  CC [M]  drivers/gpu/drm/tests/drm_modes_test.o
  CC [M]  net/netfilter/nf_conntrack_proto_generic.o
  CC      arch/x86/kernel/ldt.o
  CC      fs/exportfs/expfs.o
  CC [M]  sound/hda/hdac_sysfs.o
  CC      fs/lockd/clntlock.o
  CC      fs/nls/nls_base.o
  CC      drivers/dma-buf/dma-fence-unwrap.o
  CC      block/kyber-iosched.o
  CC      crypto/crct10dif_common.o
  CC [M]  arch/x86/kvm/mmu/mmu.o
  CC      net/ethtool/tunnels.o
  CC      kernel/module/procfs.o
  CC      drivers/acpi/acpica/hwregs.o
  LD [M]  net/ipv6/netfilter/nf_defrag_ipv6.o
  CC      net/ipv6/af_inet6.o
  CC [M]  drivers/misc/mei/bus-fixup.o
  CC      drivers/tty/tty_port.o
  CC      fs/lockd/clntproc.o
  CC      drivers/pci/pci-label.o
  CC      fs/nls/nls_cp437.o
  CC      net/core/link_watch.o
  CC      net/ipv6/anycast.o
  CC      fs/nls/nls_ascii.o
  CC      crypto/crct10dif_generic.o
  CC      net/ipv4/ip_output.o
  CC      net/ipv4/ip_sockglue.o
  CC      fs/proc/kcore.o
  CC      drivers/dma-buf/dma-resv.o
  CC [M]  drivers/gpu/drm/tests/drm_plane_helper_test.o
  CC [M]  net/netfilter/nf_conntrack_proto_tcp.o
  CC      drivers/base/syscore.o
  AR      fs/exportfs/built-in.a
  CC [M]  net/netfilter/nf_conntrack_proto_udp.o
  CC      block/bfq-iosched.o
  CC      kernel/module/sysfs.o
  AR      net/key/built-in.a
  CC      drivers/acpi/acpica/hwsleep.o
  AR      net/bridge/netfilter/built-in.a
  CC      net/bridge/br.o
  CC      net/bridge/br_device.o
  AR      fs/unicode/built-in.a
  CC      drivers/acpi/acpica/hwvalid.o
  CC [M]  sound/hda/hdac_regmap.o
  CC      mm/highmem.o
  CC      fs/nls/nls_iso8859-1.o
  CC      net/core/filter.o
  CC      fs/lockd/clntxdr.o
  CC      arch/x86/kernel/setup.o
  CC      crypto/authenc.o
  CC      fs/lockd/host.o
  CC [M]  drivers/misc/mei/debugfs.o
  CC      fs/lockd/svc.o
  CC      fs/fat/nfs.o
  CC      drivers/pci/pci-stub.o
  CC      drivers/tty/tty_mutex.o
  CC      fs/lockd/svclock.o
  CC      fs/nfs/direct.o
  CC      arch/x86/kernel/x86_init.o
  CC      fs/ext4/fsmap.o
  CC      fs/ext4/fsync.o
  CC      net/core/sock_diag.o
  CC      drivers/acpi/acpica/hwxface.o
  CC      fs/nls/nls_utf8.o
  CC      net/core/dev_ioctl.o
  CC      net/ethtool/fec.o
  CC [M]  drivers/gpu/drm/tests/drm_probe_helper_test.o
  CC      net/packet/diag.o
  AR      kernel/module/built-in.a
  CC      kernel/time/time.o
  CC      fs/proc/kmsg.o
  CC      mm/memory.o
  CC      drivers/base/driver.o
  CC      drivers/base/class.o
  CC      kernel/time/timer.o
  CC [M]  drivers/misc/mei/mei-trace.o
  CC      drivers/dma-buf/sync_file.o
  CC [M]  sound/hda/hdac_controller.o
  CC      kernel/time/hrtimer.o
  CC      net/ethtool/eeprom.o
  CC      drivers/dma-buf/sw_sync.o
  AR      fs/nls/built-in.a
  CC      net/ethtool/stats.o
  CC      drivers/tty/tty_ldsem.o
  CC      drivers/pci/vgaarb.o
  CC      fs/fat/namei_vfat.o
  CC      drivers/acpi/acpica/hwxfsleep.o
  CC      drivers/acpi/acpica/hwpci.o
  CC [M]  net/sunrpc/auth_gss/auth_gss.o
  CC      net/sunrpc/clnt.o
  CC [M]  net/sunrpc/auth_gss/gss_generic_token.o
  CC      net/ipv6/ip6_output.o
  CC      crypto/authencesn.o
  CC [M]  drivers/gpu/drm/tests/drm_rect_test.o
  CC      fs/proc/page.o
  CC      arch/x86/kernel/i8259.o
  AR      drivers/gpu/drm/bridge/analogix/built-in.a
  AR      drivers/gpu/drm/bridge/cadence/built-in.a
  AR      drivers/gpu/drm/bridge/imx/built-in.a
  AR      drivers/gpu/drm/bridge/synopsys/built-in.a
  CC      mm/mincore.o
  AR      drivers/gpu/drm/bridge/built-in.a
  CC      net/bridge/br_fdb.o
  CC [M]  net/sunrpc/auth_gss/gss_mech_switch.o
  CC      net/sunrpc/xprt.o
  CC      net/bridge/br_forward.o
  CC      drivers/acpi/acpica/nsaccess.o
  CC      drivers/acpi/acpica/nsalloc.o
  CC      arch/x86/kernel/irqinit.o
  CC      arch/x86/kernel/jump_label.o
  CC      net/sunrpc/socklib.o
  CC      net/bridge/br_if.o
  CC      drivers/base/platform.o
  CC [M]  arch/x86/kvm/mmu/page_track.o
  CC [M]  drivers/misc/mei/pci-me.o
  CC [M]  net/sunrpc/auth_gss/svcauth_gss.o
  CC      net/core/tso.o
  AR      net/packet/built-in.a
  CC      fs/lockd/svcshare.o
  CC      kernel/futex/core.o
  CC [M]  net/netfilter/nf_conntrack_proto_icmp.o
  CC      drivers/tty/tty_baudrate.o
  CC      kernel/futex/syscalls.o
  CC [M]  sound/hda/hdac_stream.o
  CC [M]  net/netfilter/nf_conntrack_extend.o
  CC      drivers/dma-buf/sync_debug.o
  CC      fs/lockd/svcproc.o
  CC      net/bridge/br_input.o
  CC      net/ethtool/phc_vclocks.o
  CC      net/8021q/vlan_core.o
  AR      drivers/gpu/drm/hisilicon/built-in.a
  AR      drivers/gpu/drm/mxsfb/built-in.a
  AR      drivers/gpu/drm/tiny/built-in.a
  AR      drivers/gpu/drm/xlnx/built-in.a
  CC      drivers/acpi/acpica/nsarguments.o
  AR      drivers/gpu/drm/gud/built-in.a
  AR      drivers/gpu/drm/solomon/built-in.a
  CC [M]  net/sunrpc/auth_gss/gss_rpc_upcall.o
  CC [M]  drivers/gpu/drm/ttm/ttm_tt.o
  CC      fs/ext4/hash.o
  AR      drivers/pci/built-in.a
  CC [M]  drivers/gpu/drm/ttm/ttm_bo.o
  CC      net/ipv6/ip6_input.o
  AR      sound/x86/built-in.a
  CC      fs/fat/namei_msdos.o
  AR      sound/xen/built-in.a
  AR      sound/virtio/built-in.a
  AR      fs/proc/built-in.a
  CC      sound/sound_core.o
  CC      crypto/lzo.o
  CC      fs/ntfs/aops.o
  AR      drivers/cxl/core/built-in.a
  AR      drivers/cxl/built-in.a
  AR      drivers/macintosh/built-in.a
  CC      lib/zstd/decompress/zstd_decompress.o
  CC      arch/x86/kernel/irq_work.o
  CC      fs/nfs/pagelist.o
  CC      fs/ntfs/attrib.o
  CC      drivers/tty/tty_jobctrl.o
  CC      fs/autofs/init.o
  CC [M]  drivers/misc/mei/hw-me.o
  CC [M]  drivers/dma-buf/selftest.o
  CC      net/ipv4/inet_hashtables.o
  CC      drivers/acpi/acpica/nsconvert.o
  CC      fs/autofs/inode.o
  CC      crypto/lzo-rle.o
  CC      mm/mlock.o
  CC      net/ipv4/inet_timewait_sock.o
  CC [M]  net/netfilter/nf_conntrack_acct.o
  CC [M]  drivers/misc/mei/gsc-me.o
  CC      drivers/base/cpu.o
  CC [M]  sound/hda/array.o
  CC      net/sunrpc/xprtsock.o
  CC      crypto/lz4.o
  CC      kernel/futex/pi.o
  CC      mm/mmap.o
  CC      net/ethtool/mm.o
  CC [M]  net/sunrpc/auth_gss/gss_rpc_xdr.o
  CC      drivers/base/firmware.o
  CC      sound/last.o
  LD [M]  drivers/misc/mei/mei.o
  CC      kernel/time/timekeeping.o
  CC [M]  drivers/dma-buf/st-dma-fence.o
  CC      fs/ext4/ialloc.o
  CC      fs/ntfs/collate.o
  CC      drivers/acpi/acpica/nsdump.o
  CC      fs/lockd/svcsubs.o
  CC [M]  drivers/dma-buf/st-dma-fence-chain.o
  AR      fs/fat/built-in.a
  CC      drivers/acpi/reboot.o
  CC      arch/x86/kernel/probe_roms.o
  CC      arch/x86/kernel/sys_ia32.o
  CC      net/sunrpc/sched.o
  CC      fs/ntfs/compress.o
  CC      block/bfq-wf2q.o
  CC      drivers/tty/n_null.o
  CC      crypto/lz4hc.o
  CC [M]  net/8021q/vlan.o
  CC [M]  drivers/gpu/drm/ttm/ttm_bo_util.o
  CC      arch/x86/kernel/signal_32.o
  CC      fs/autofs/root.o
  CC      fs/ntfs/debug.o
  CC      net/bridge/br_ioctl.o
  CC      arch/x86/kernel/sys_x86_64.o
  CC [M]  sound/hda/hdmi_chmap.o
  CC      block/bfq-cgroup.o
  CC      drivers/base/init.o
  CC      drivers/acpi/acpica/nseval.o
  CC      drivers/tty/pty.o
  CC      kernel/futex/requeue.o
  CC      lib/bug.o
  CC      fs/ntfs/dir.o
  CC      fs/ntfs/file.o
  CC [M]  net/netfilter/nf_conntrack_seqadj.o
  CC [M]  net/8021q/vlan_dev.o
  CC      crypto/xxhash_generic.o
  LD [M]  drivers/misc/mei/mei-gsc.o
  CC      drivers/acpi/nvs.o
  CC      arch/x86/kernel/espfix_64.o
  CC      kernel/futex/waitwake.o
  CC      net/bridge/br_stp.o
  CC      net/bridge/br_stp_bpdu.o
  CC      net/ethtool/module.o
  CC      drivers/acpi/acpica/nsinit.o
  CC [M]  arch/x86/kvm/mmu/spte.o
  CC      kernel/time/ntp.o
  CC [M]  net/sunrpc/auth_gss/trace.o
  CC      drivers/base/map.o
  CC      drivers/base/devres.o
  CC [M]  drivers/dma-buf/st-dma-fence-unwrap.o
  CC      drivers/base/attribute_container.o
  CC      arch/x86/kernel/ksysfs.o
  CC      net/ipv6/addrconf.o
  CC      arch/x86/kernel/bootflag.o
  CC      kernel/time/clocksource.o
  CC      fs/lockd/mon.o
  CC      crypto/rng.o
  CC      fs/autofs/symlink.o
  CC [M]  drivers/gpu/drm/ttm/ttm_bo_vm.o
  LD [M]  drivers/misc/mei/mei-me.o
  CC      fs/nfs/read.o
  CC      drivers/scsi/scsi.o
  CC      drivers/nvme/host/core.o
  CC      drivers/tty/sysrq.o
  CC [M]  sound/hda/trace.o
  CC      net/dcb/dcbnl.o
  CC      net/dcb/dcbevent.o
  AR      drivers/nvme/target/built-in.a
  CC      net/l3mdev/l3mdev.o
  CC      drivers/acpi/acpica/nsload.o
  CC      block/blk-mq-pci.o
  AR      kernel/futex/built-in.a
  CC      drivers/acpi/wakeup.o
  CC      kernel/cgroup/cgroup.o
  CC      drivers/acpi/sleep.o
  CC      kernel/time/jiffies.o
  CC      arch/x86/kernel/e820.o
  CC [M]  net/netfilter/nf_conntrack_proto_icmpv6.o
  CC      lib/buildid.o
  CC      mm/mmu_gather.o
  CC      kernel/time/timer_list.o
  CC      fs/autofs/waitq.o
  CC [M]  drivers/dma-buf/st-dma-resv.o
  CC [M]  drivers/gpu/drm/scheduler/sched_main.o
  CC      net/ipv4/inet_connection_sock.o
  CC      fs/ntfs/index.o
  CC      net/ipv4/tcp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o
  CC      drivers/acpi/acpica/nsnames.o
  CC      net/ipv4/tcp_input.o
  CC      net/ethtool/pse-pd.o
  CC [M]  net/netfilter/nf_conntrack_proto_dccp.o
  CC      crypto/drbg.o
  CC      crypto/jitterentropy.o
  CC [M]  net/8021q/vlan_netlink.o
  CC      drivers/base/transport_class.o
  CC [M]  net/netfilter/nf_conntrack_proto_sctp.o
  CC [M]  drivers/gpu/drm/ttm/ttm_module.o
  CC      fs/lockd/xdr.o
  CC      drivers/acpi/device_sysfs.o
  CC      net/ethtool/plca.o
  CC      block/blk-mq-virtio.o
  CC [M]  sound/hda/hdac_component.o
  CC      kernel/cgroup/rstat.o
  CC      net/bridge/br_stp_if.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_mech.o
  AR      drivers/dma-buf/built-in.a
  LD [M]  drivers/dma-buf/dmabuf_selftests.o
  CC      drivers/base/topology.o
  CC      drivers/ata/libata-core.o
  AR      net/l3mdev/built-in.a
  CC      drivers/base/container.o
  CC      drivers/spi/spi.o
  CC      kernel/time/timeconv.o
  AR      drivers/tty/built-in.a
  CC      net/sunrpc/auth.o
  CC      drivers/acpi/acpica/nsobject.o
  CC      fs/autofs/expire.o
  CC      fs/autofs/dev-ioctl.o
  CC      kernel/cgroup/namespace.o
  CC      fs/ext4/indirect.o
  CC [M]  drivers/gpu/drm/ttm/ttm_execbuf_util.o
  CC      drivers/scsi/hosts.o
  CC      fs/ext4/inline.o
  CC      fs/ntfs/inode.o
  CC [M]  sound/hda/hdac_i915.o
  CC      mm/mprotect.o
  CC      arch/x86/kernel/pci-dma.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_device.o
  CC      drivers/acpi/device_pm.o
  CC      kernel/time/timecounter.o
  CC      block/blk-mq-debugfs.o
  CC      drivers/scsi/scsi_ioctl.o
  CC      fs/ext4/inode.o
  CC      drivers/acpi/proc.o
  CC      kernel/time/alarmtimer.o
  CC      drivers/acpi/acpica/nsparse.o
  CC [M]  net/8021q/vlanproc.o
  CC      net/sunrpc/auth_null.o
  CC      drivers/base/property.o
  CC      fs/nfs/symlink.o
  AR      net/ethtool/built-in.a
  CC      kernel/cgroup/cgroup-v1.o
  CC [M]  net/bluetooth/af_bluetooth.o
  CC      kernel/cgroup/freezer.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.o
  CC      kernel/cgroup/legacy_freezer.o
  CC      kernel/cgroup/pids.o
  CC [M]  drivers/gpu/drm/scheduler/sched_fence.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.o
  AR      fs/autofs/built-in.a
  CC      fs/lockd/clnt4xdr.o
  CC      fs/lockd/xdr4.o
  CC [M]  drivers/gpu/drm/ttm/ttm_range_manager.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_seal.o
  CC [M]  sound/hda/intel-dsp-config.o
  CC [M]  net/netfilter/nf_conntrack_netlink.o
  CC      drivers/acpi/acpica/nspredef.o
  CC [M]  arch/x86/kvm/mmu/tdp_iter.o
  AR      net/dcb/built-in.a
  CC      net/bridge/br_stp_timer.o
  CC      drivers/scsi/scsicam.o
  CC      arch/x86/kernel/quirks.o
  CC      crypto/jitterentropy-kcapi.o
  CC      drivers/acpi/bus.o
  CC      drivers/acpi/glue.o
  CC [M]  drivers/gpu/drm/scheduler/sched_entity.o
  CC      kernel/cgroup/cpuset.o
  CC      block/blk-pm.o
  CC      drivers/scsi/scsi_error.o
  AR      net/8021q/built-in.a
  CC      drivers/acpi/acpica/nsprepkg.o
  LD [M]  net/8021q/8021q.o
  CC      net/sunrpc/auth_unix.o
  CC      crypto/ghash-generic.o
  CC [M]  net/bluetooth/hci_core.o
  CC [M]  drivers/gpu/drm/ttm/ttm_resource.o
  CC      fs/ntfs/mft.o
  CC      drivers/scsi/scsi_lib.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_unseal.o
  CC [M]  sound/hda/intel-nhlt.o
  CC [M]  net/bluetooth/hci_conn.o
  CC      kernel/time/posix-timers.o
  CC      fs/nfs/unlink.o
  CC      crypto/af_alg.o
  CC      fs/nfs/write.o
  CC      drivers/base/cacheinfo.o
  CC      drivers/net/phy/mdio-boardinfo.o
  CC      mm/mremap.o
  CC      arch/x86/kernel/topology.o
  CC [M]  arch/x86/kvm/mmu/tdp_mmu.o
  CC      drivers/net/phy/mdio_devres.o
  CC      net/sunrpc/svc.o
  CC      fs/nfs/namespace.o
  CC      fs/lockd/svc4proc.o
  CC      net/ipv4/tcp_output.o
  CC      drivers/acpi/acpica/nsrepair.o
  CC      drivers/acpi/scan.o
  CC      block/holder.o
  CC [M]  arch/x86/kvm/smm.o
  CC      net/bridge/br_netlink.o
  CC      arch/x86/kernel/kdebugfs.o
  CC      drivers/acpi/resource.o
  LD [M]  drivers/gpu/drm/scheduler/gpu-sched.o
  CC      drivers/nvme/host/ioctl.o
  CC      drivers/ata/libata-scsi.o
  CC [M]  sound/hda/intel-sdw-acpi.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_seqnum.o
  CC      fs/ntfs/mst.o
  CC      fs/ntfs/namei.o
  CC      drivers/net/phy/phy.o
  CC      fs/ext4/ioctl.o
  CC      drivers/acpi/acpica/nsrepair2.o
  CC      fs/ext4/mballoc.o
  CC      net/sunrpc/svcsock.o
  CC [M]  drivers/gpu/drm/ttm/ttm_pool.o
  CC      drivers/base/swnode.o
  CC      fs/lockd/procfs.o
  CC      net/core/sock_reuseport.o
  CC [M]  drivers/gpu/drm/i915/i915_driver.o
  CC      arch/x86/kernel/alternative.o
  AR      block/built-in.a
  CC [M]  drivers/gpu/drm/i915/i915_drm_client.o
  LD [M]  sound/hda/snd-hda-core.o
  LD [M]  sound/hda/snd-intel-dspcfg.o
  LD [M]  sound/hda/snd-intel-sdw-acpi.o
  AR      sound/built-in.a
  CC      drivers/acpi/acpi_processor.o
  CC      drivers/acpi/acpica/nssearch.o
  CC      fs/ntfs/runlist.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_wrap.o
  CC      drivers/base/auxiliary.o
  CC [M]  drivers/gpu/drm/ttm/ttm_device.o
  CC      drivers/scsi/scsi_lib_dma.o
  CC      fs/nfs/mount_clnt.o
  CC      mm/msync.o
  CC      kernel/time/posix-cpu-timers.o
  CC      mm/page_vma_mapped.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/atombios_crtc.o
  CC      net/sunrpc/svcauth.o
  AR      fs/lockd/built-in.a
  CC      net/bridge/br_netlink_tunnel.o
  AR      drivers/spi/built-in.a
  AR      drivers/firewire/built-in.a
  AR      drivers/cdrom/built-in.a
  CC      drivers/nvme/host/trace.o
  AR      drivers/auxdisplay/built-in.a
  CC      crypto/algif_hash.o
  CC      crypto/algif_skcipher.o
  CC      drivers/acpi/acpica/nsutils.o
  CC      drivers/usb/common/common.o
  CC      drivers/usb/core/usb.o
  CC      drivers/input/serio/serio.o
  CC      drivers/base/devtmpfs.o
  CC [M]  net/netfilter/nf_nat_core.o
  CC      drivers/base/memory.o
  CC      net/ipv6/addrlabel.o
  CC      drivers/scsi/scsi_scan.o
  CC      drivers/acpi/processor_core.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_crypto.o
  CC [M]  drivers/gpu/drm/ttm/ttm_sys_manager.o
  CC      fs/ext4/migrate.o
  AR      drivers/usb/phy/built-in.a
  CC      drivers/usb/host/pci-quirks.o
  CC      drivers/usb/storage/scsiglue.o
  CC      drivers/usb/host/ehci-hcd.o
  CC      drivers/usb/storage/protocol.o
  CC      drivers/net/phy/phy-c45.o
  CC      drivers/acpi/acpica/nswalk.o
  CC      fs/ntfs/super.o
  CC      drivers/base/module.o
  CC [M]  arch/x86/kvm/vmx/vmx.o
  CC      net/core/fib_notifier.o
  CC      net/core/xdp.o
  CC      fs/ntfs/sysctl.o
  CC      mm/pagewalk.o
  CC      arch/x86/kernel/i8253.o
  CC      drivers/usb/common/debug.o
  CC      drivers/base/pinctrl.o
  CC      drivers/acpi/acpica/nsxfeval.o
  CC      drivers/nvme/host/pci.o
  AR      kernel/cgroup/built-in.a
  CC      drivers/acpi/acpica/nsxfname.o
  CC      drivers/input/serio/i8042.o
  AR      drivers/usb/common/built-in.a
  CC [M]  net/netfilter/nf_nat_proto.o
  CC      net/core/flow_offload.o
  CC      drivers/base/devcoredump.o
  CC [M]  drivers/gpu/drm/ttm/ttm_agp_backend.o
  CC      fs/nfs/nfstrace.o
  CC      drivers/acpi/processor_pdc.o
  CC      kernel/time/posix-clock.o
  CC      drivers/base/platform-msi.o
  CC      kernel/trace/trace_clock.o
  CC      drivers/usb/core/hub.o
  CC      drivers/base/physical_location.o
  CC [M]  drivers/gpu/drm/i915/i915_config.o
  CC      drivers/ata/libata-eh.o
  CC      net/sunrpc/svcauth_unix.o
  CC [M]  drivers/gpu/drm/i915/i915_getparam.o
  CC      net/bridge/br_arp_nd_proxy.o
  CC      net/ipv4/tcp_timer.o
  CC      crypto/xor.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.o
  CC      arch/x86/kernel/hw_breakpoint.o
  CC      drivers/usb/storage/transport.o
  CC      kernel/trace/ftrace.o
  CC      fs/ext4/mmp.o
  CC [M]  drivers/gpu/drm/i915/i915_ioctl.o
  CC      drivers/usb/serial/usb-serial.o
  CC [M]  drivers/gpu/drm/i915/i915_irq.o
  CC      net/ipv4/tcp_ipv4.o
  CC      drivers/acpi/acpica/nsxfobj.o
  CC      net/ipv4/tcp_minisocks.o
  CC      drivers/acpi/acpica/psargs.o
  CC      net/ipv4/tcp_cong.o
  CC      net/ipv6/route.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_keys.o
  CC [M]  net/bluetooth/hci_event.o
  LD [M]  net/sunrpc/auth_gss/auth_rpcgss.o
  GEN     drivers/scsi/scsi_devinfo_tbl.c
  CC      drivers/scsi/scsi_devinfo.o
  LD [M]  drivers/gpu/drm/ttm/ttm.o
  AR      drivers/usb/misc/built-in.a
  CC      drivers/base/trace.o
  CC      mm/pgtable-generic.o
  CC [M]  drivers/usb/misc/ftdi-elan.o
  CC      drivers/acpi/acpica/psloop.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/atom.o
  CC [M]  net/bluetooth/mgmt.o
  CC      crypto/hash_info.o
  CC      drivers/acpi/acpica/psobject.o
  CC      drivers/scsi/scsi_sysctl.o
  CC      crypto/simd.o
  CC      net/ipv4/tcp_metrics.o
  CC      kernel/time/itimer.o
  CC      drivers/net/phy/phy-core.o
  CC      net/ipv4/tcp_fastopen.o
  CC      fs/ntfs/unistr.o
  CC      drivers/acpi/acpica/psopcode.o
  CC [M]  net/netfilter/nf_nat_helper.o
  CC      arch/x86/kernel/tsc.o
  CC [M]  net/netfilter/nf_nat_redirect.o
  CC      drivers/usb/storage/usb.o
  CC      drivers/input/serio/libps2.o
  CC      fs/ext4/move_extent.o
  CC      drivers/acpi/acpica/psopinfo.o
  CC      drivers/usb/gadget/udc/core.o
  CC [M]  drivers/usb/class/usbtmc.o
  CC      lib/zstd/decompress/zstd_decompress_block.o
  CC      net/core/gro.o
  CC      drivers/usb/gadget/udc/trace.o
  CC [M]  drivers/gpu/drm/i915/i915_mitigations.o
  CC      drivers/scsi/scsi_debugfs.o
  AR      drivers/base/built-in.a
  LD [M]  net/sunrpc/auth_gss/rpcsec_gss_krb5.o
  CC      net/bridge/br_sysfs_if.o
  CC      fs/debugfs/inode.o
  CC      fs/tracefs/inode.o
  CC      mm/rmap.o
  CC [M]  crypto/md4.o
  CC      net/bridge/br_sysfs_br.o
  CC      fs/debugfs/file.o
  CC      mm/vmalloc.o
  CC      drivers/acpi/acpica/psparse.o
  CC      net/sunrpc/addr.o
  CC      net/ipv4/tcp_rate.o
  CC      fs/ntfs/upcase.o
  CC      kernel/time/clockevents.o
  CC      drivers/net/phy/phy_device.o
  CC      drivers/usb/serial/generic.o
  CC      net/ipv4/tcp_recovery.o
  AR      drivers/input/serio/built-in.a
  CC      net/ipv4/tcp_ulp.o
  CC      drivers/input/keyboard/atkbd.o
  CC [M]  crypto/ccm.o
  AR      drivers/input/mouse/built-in.a
  CC      drivers/scsi/scsi_trace.o
  CC      mm/page_alloc.o
  CC      arch/x86/kernel/tsc_msr.o
  CC      drivers/acpi/acpica/psscope.o
  CC      drivers/usb/storage/initializers.o
  AR      fs/tracefs/built-in.a
  CC      drivers/scsi/scsi_logging.o
  CC      arch/x86/kernel/io_delay.o
  CC [M]  net/netfilter/nf_nat_masquerade.o
  CC      arch/x86/kernel/rtc.o
  CC [M]  crypto/arc4.o
  CC      mm/init-mm.o
  AR      fs/ntfs/built-in.a
  CC      drivers/net/phy/linkmode.o
  CC      fs/ext4/namei.o
  AR      drivers/nvme/host/built-in.a
  AR      drivers/nvme/built-in.a
  CC      mm/memblock.o
  AR      drivers/usb/gadget/function/built-in.a
  AR      fs/debugfs/built-in.a
  AR      drivers/usb/gadget/legacy/built-in.a
  CC      drivers/usb/gadget/usbstring.o
  CC      kernel/time/tick-common.o
  CC      net/ipv4/tcp_offload.o
  CC      drivers/net/phy/mdio_bus.o
  CC      kernel/bpf/core.o
  CC [M]  crypto/ecc.o
  CC      drivers/acpi/acpica/pstree.o
  CC      fs/btrfs/super.o
  CC      net/sunrpc/rpcb_clnt.o
  CC [M]  net/bluetooth/hci_sock.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_fence.o
  AR      drivers/usb/gadget/udc/built-in.a
  CC      lib/zstd/zstd_common_module.o
  CC      drivers/usb/serial/bus.o
  CC      net/bridge/br_nf_core.o
  CC      drivers/rtc/lib.o
  CC      drivers/scsi/scsi_pm.o
  CC [M]  arch/x86/kvm/kvm-asm-offsets.s
  CC      mm/memory_hotplug.o
  CC      drivers/usb/storage/sierra_ms.o
  CC      drivers/rtc/class.o
  CC      drivers/ata/libata-transport.o
  CC      arch/x86/kernel/resource.o
  CC      net/core/netdev-genl.o
  CC      drivers/usb/core/hcd.o
  CC      drivers/usb/serial/console.o
  CC      drivers/acpi/acpica/psutils.o
  CC      drivers/scsi/scsi_bsg.o
  CC      drivers/usb/gadget/config.o
  AS      arch/x86/kernel/irqflags.o
  CC [M]  crypto/essiv.o
  CC      drivers/usb/core/urb.o
  CC      net/ipv4/tcp_plb.o
  CC [M]  drivers/gpu/drm/i915/i915_module.o
  AR      drivers/input/keyboard/built-in.a
  CC      drivers/input/input.o
  CC      arch/x86/kernel/static_call.o
  CC      fs/ext4/page-io.o
  CC      drivers/acpi/acpica/pswalk.o
  CC      net/ipv4/datagram.o
  CC      net/bridge/br_multicast.o
  CC      drivers/net/phy/mdio_device.o
  CC      kernel/time/tick-broadcast.o
  CC      drivers/acpi/acpica/psxface.o
  CC [M]  net/netfilter/x_tables.o
  CC [M]  net/netfilter/xt_tcpudp.o
  CC      drivers/usb/storage/option_ms.o
  CC      drivers/rtc/interface.o
  CC      arch/x86/kernel/process.o
  CC      drivers/scsi/scsi_common.o
  CC      drivers/usb/storage/usual-tables.o
  CC      drivers/usb/host/ehci-pci.o
  CC [M]  net/bluetooth/hci_sysfs.o
  CC      drivers/usb/serial/ftdi_sio.o
  CC [M]  net/bluetooth/l2cap_core.o
  CC [M]  net/netfilter/xt_mark.o
  CC      drivers/rtc/nvmem.o
  CC      net/ipv4/raw.o
  CC      net/ipv4/udp.o
  CC      drivers/usb/gadget/epautoconf.o
  CC      fs/ext4/readpage.o
  CC      drivers/ata/libata-trace.o
  CC      net/core/netdev-genl-gen.o
  CC      drivers/acpi/acpica/rsaddr.o
  CC      fs/ext4/resize.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.o
  CC      drivers/scsi/sd.o
  CC      kernel/trace/ring_buffer.o
  CC      kernel/time/tick-broadcast-hrtimer.o
  CC [M]  drivers/gpu/drm/i915/i915_params.o
  CC      drivers/net/phy/swphy.o
  CC      kernel/trace/trace.o
  CC      net/ipv4/udplite.o
  AR      drivers/usb/storage/built-in.a
  CC [M]  drivers/gpu/drm/xe/tests/xe_bo_test.o
  CC      drivers/scsi/sg.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.o
  CC [M]  net/bluetooth/l2cap_sock.o
  CC      net/sunrpc/timer.o
  CC      drivers/scsi/scsi_sysfs.o
  CC      kernel/trace/trace_output.o
  CC      fs/nfs/export.o
  CC      drivers/usb/host/ohci-hcd.o
  CC      drivers/acpi/acpica/rscalc.o
  CC [M]  crypto/ecdh.o
  CC      drivers/usb/gadget/composite.o
  CC      net/ipv4/udp_offload.o
  CC      net/sunrpc/xdr.o
  CC      kernel/time/tick-oneshot.o
  CC      lib/zstd/common/debug.o
  CC [M]  net/bluetooth/smp.o
  CC      lib/zstd/common/entropy_common.o
  CC      net/core/net-sysfs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_object.o
  CC [M]  crypto/ecdh_helper.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.o
  CC      drivers/usb/core/message.o
  CC      drivers/ata/libata-sata.o
  CC      fs/nfs/sysfs.o
  CC      drivers/input/input-compat.o
  CC      kernel/trace/trace_seq.o
  CC      drivers/net/phy/fixed_phy.o
  CC      drivers/acpi/acpica/rscreate.o
  CC      lib/zstd/common/error_private.o
  CC      lib/zstd/common/fse_decompress.o
  CC      drivers/acpi/acpica/rsdumpinfo.o
  CC      arch/x86/kernel/ptrace.o
  CC      drivers/usb/serial/pl2303.o
  CC      kernel/time/tick-sched.o
  CC      drivers/rtc/dev.o
  LD [M]  crypto/ecdh_generic.o
  AR      crypto/built-in.a
  CC [M]  drivers/gpu/drm/i915/i915_pci.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_pci_test.o
  CC [M]  drivers/net/phy/phylink.o
  AR      kernel/bpf/built-in.a
  CC      drivers/ata/libata-sff.o
  CC      drivers/ata/libata-pmp.o
  CC      drivers/usb/host/ohci-pci.o
  CC      drivers/input/input-mt.o
  CC      drivers/acpi/ec.o
  CC      drivers/acpi/acpica/rsinfo.o
  CC      kernel/trace/trace_stat.o
  CC      net/ipv4/arp.o
  CC      fs/ext4/super.o
  CC [M]  net/netfilter/xt_nat.o
  CC      kernel/trace/trace_printk.o
  CC      fs/nfs/fs_context.o
  CC      drivers/rtc/proc.o
  CC      kernel/events/core.o
  CC [M]  arch/x86/kvm/vmx/pmu_intel.o
  CC      kernel/fork.o
  CC      drivers/acpi/dock.o
  CC      drivers/acpi/acpica/rsio.o
  CC      lib/zstd/common/zstd_common.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_rtp_test.o
  CC      drivers/acpi/acpica/rsirq.o
  CC      fs/nfs/sysctl.o
  CC [M]  net/netfilter/xt_REDIRECT.o
  CC      drivers/ata/libata-acpi.o
  AR      lib/zstd/built-in.a
  CC      net/ipv6/ip6_fib.o
  CC      drivers/ata/libata-pata-timings.o
  CC      lib/cmdline.o
  CC      drivers/rtc/sysfs.o
  AR      drivers/usb/serial/built-in.a
  CC      drivers/usb/core/driver.o
  CC      arch/x86/kernel/tls.o
  CC      kernel/time/vsyscall.o
  CC      lib/cpumask.o
  CC      lib/ctype.o
  CC      arch/x86/kernel/step.o
  CC      drivers/input/input-poller.o
  CC [M]  drivers/gpu/drm/i915/i915_scatterlist.o
  CC      drivers/usb/host/uhci-hcd.o
  CC      drivers/usb/gadget/functions.o
  CC      drivers/ata/ahci.o
  CC [M]  drivers/net/phy/aquantia_main.o
  CC      drivers/acpi/acpica/rslist.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_gart.o
  CC      fs/ext4/symlink.o
  CC      kernel/trace/pid_list.o
  CC      drivers/usb/host/xhci.o
  CC      net/core/net-procfs.o
  AR      drivers/scsi/built-in.a
  AR      drivers/i2c/algos/built-in.a
  CC [M]  drivers/i2c/algos/i2c-algo-bit.o
  CC      drivers/ata/libahci.o
  AR      drivers/i3c/built-in.a
  CC      lib/dec_and_lock.o
  CC      kernel/time/timekeeping_debug.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_wa_test.o
  CC      drivers/rtc/rtc-mc146818-lib.o
  CC [M]  net/bluetooth/lib.o
  CC      drivers/acpi/pci_root.o
  CC      lib/decompress.o
  CC      drivers/acpi/pci_link.o
  CC      drivers/input/ff-core.o
  CC      drivers/acpi/acpica/rsmemory.o
  CC      drivers/acpi/acpica/rsmisc.o
  CC      drivers/input/touchscreen.o
  CC      lib/decompress_bunzip2.o
  CC      kernel/time/namespace.o
  CC      drivers/usb/gadget/configfs.o
  CC      net/core/netpoll.o
  CC      net/ipv4/icmp.o
  CC      net/sunrpc/sunrpc_syms.o
  CC      arch/x86/kernel/i8237.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_encoders.o
  CC      net/bridge/br_mdb.o
  CC [M]  net/bluetooth/ecdh_helper.o
  CC [M]  net/netfilter/xt_MASQUERADE.o
  CC      mm/madvise.o
  CC [M]  arch/x86/kvm/vmx/vmcs12.o
  CC      kernel/exec_domain.o
  CC      kernel/trace/trace_sched_switch.o
  CC      net/sunrpc/cache.o
  CC      kernel/trace/trace_functions.o
  CC [M]  drivers/gpu/drm/i915/i915_suspend.o
  CC [M]  drivers/gpu/drm/i915/i915_switcheroo.o
  CC      drivers/usb/core/config.o
  CC [M]  net/bluetooth/hci_request.o
  CC [M]  net/bluetooth/mgmt_util.o
  CC [M]  drivers/gpu/drm/i915/i915_sysfs.o
  CC      drivers/rtc/rtc-cmos.o
  CC      arch/x86/kernel/stacktrace.o
  CC [M]  arch/x86/kvm/vmx/hyperv.o
  CC      drivers/acpi/acpica/rsserial.o
  CC [M]  net/netfilter/xt_addrtype.o
  CC [M]  drivers/gpu/drm/xe/xe_bb.o
  CC      drivers/input/ff-memless.o
  CC [M]  net/netfilter/xt_conntrack.o
  CC [M]  drivers/net/phy/aquantia_hwmon.o
  CC      drivers/i2c/busses/i2c-designware-common.o
  CC [M]  drivers/net/phy/ax88796b.o
  CC [M]  net/bluetooth/mgmt_config.o
  CC      lib/decompress_inflate.o
  CC      fs/nfs/nfs2super.o
  AR      kernel/time/built-in.a
  CC      drivers/acpi/pci_irq.o
  CC      arch/x86/kernel/reboot.o
  CC      net/core/fib_rules.o
  CC      drivers/usb/core/file.o
  CC      drivers/acpi/acpica/rsutils.o
  CC      kernel/panic.o
  CC [M]  drivers/net/phy/bcm7xxx.o
  CC [M]  drivers/net/phy/bcm87xx.o
  CC [M]  drivers/gpu/drm/i915/i915_utils.o
  AR      drivers/i2c/muxes/built-in.a
  CC [M]  drivers/i2c/muxes/i2c-mux-gpio.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_display.o
  CC      net/sunrpc/rpc_pipe.o
  CC      lib/decompress_unlz4.o
  CC [M]  drivers/gpu/drm/xe/xe_bo.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 [M]  drivers/ptp/ptp_chardev.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
  AR      drivers/media/common/siano/built-in.a
  CC      drivers/input/vivaldi-fmap.o
  CC [M]  drivers/ptp/ptp_sysfs.o
  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      lib/decompress_unlzma.o
  CC      kernel/trace/trace_preemptirq.o
  AR      drivers/media/platform/allegro-dvt/built-in.a
  CC      drivers/acpi/acpica/rsxface.o
  CC      drivers/usb/gadget/u_f.o
  CC      drivers/i2c/busses/i2c-designware-master.o
  CC      net/ipv6/ipv6_sockglue.o
  AR      drivers/media/platform/amlogic/meson-ge2d/built-in.a
  CC      drivers/i2c/busses/i2c-designware-platdrv.o
  AR      drivers/media/platform/amlogic/built-in.a
  AR      drivers/media/platform/amphion/built-in.a
  AR      drivers/rtc/built-in.a
  CC      drivers/i2c/busses/i2c-designware-baytrail.o
  CC [M]  drivers/i2c/busses/i2c-scmi.o
  AR      drivers/media/platform/aspeed/built-in.a
  AR      drivers/media/platform/atmel/built-in.a
  CC      fs/btrfs/ctree.o
  AR      drivers/media/platform/cadence/built-in.a
  AR      drivers/media/platform/chips-media/built-in.a
  CC      fs/btrfs/extent-tree.o
  CC      drivers/ata/ata_piix.o
  AR      drivers/media/platform/intel/built-in.a
  CC      drivers/acpi/acpica/tbdata.o
  AR      drivers/media/platform/marvell/built-in.a
  AR      drivers/media/platform/mediatek/jpeg/built-in.a
  CC [M]  arch/x86/kvm/vmx/nested.o
  CC      net/ipv6/ndisc.o
  AR      drivers/media/platform/mediatek/mdp/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/built-in.a
  CC      drivers/usb/core/buffer.o
  CC      net/core/net-traces.o
  AR      drivers/media/platform/mediatek/vpu/built-in.a
  AR      drivers/media/platform/mediatek/mdp3/built-in.a
  AR      drivers/media/platform/mediatek/built-in.a
  AR      drivers/media/platform/microchip/built-in.a
  CC [M]  net/netfilter/xt_ipvs.o
  AR      drivers/power/reset/built-in.a
  AR      drivers/media/platform/nvidia/tegra-vde/built-in.a
  CC      drivers/power/supply/power_supply_core.o
  AR      drivers/media/platform/nvidia/built-in.a
  AR      drivers/media/platform/nxp/dw100/built-in.a
  AR      drivers/media/platform/nxp/imx-jpeg/built-in.a
  CC      drivers/power/supply/power_supply_sysfs.o
  CC      arch/x86/kernel/msr.o
  AR      drivers/media/platform/nxp/built-in.a
  CC      fs/nfs/proc.o
  AR      drivers/media/platform/qcom/camss/built-in.a
  CC      drivers/input/input-leds.o
  AR      drivers/media/platform/qcom/venus/built-in.a
  AR      drivers/media/platform/qcom/built-in.a
  AR      drivers/media/platform/renesas/rcar-vin/built-in.a
  CC      arch/x86/kernel/cpuid.o
  CC [M]  drivers/gpu/drm/xe/xe_bo_evict.o
  CC      arch/x86/kernel/early-quirks.o
  CC [M]  drivers/net/phy/bcm-phy-lib.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/hwmon/hwmon.o
  CC      mm/page_io.o
  AR      drivers/media/platform/rockchip/rga/built-in.a
  CC      arch/x86/kernel/smp.o
  AR      drivers/media/platform/rockchip/rkisp1/built-in.a
  AR      drivers/media/platform/rockchip/built-in.a
  AR      drivers/media/platform/samsung/exynos-gsc/built-in.a
  AR      drivers/media/platform/samsung/exynos4-is/built-in.a
  AR      drivers/media/platform/samsung/s3c-camif/built-in.a
  AR      drivers/media/platform/samsung/s5p-g2d/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_debugfs.o
  CC      mm/swap_state.o
  CC      net/ipv4/devinet.o
  AR      drivers/media/platform/samsung/s5p-jpeg/built-in.a
  AR      drivers/media/platform/samsung/s5p-mfc/built-in.a
  CC      mm/swapfile.o
  AR      drivers/media/platform/samsung/built-in.a
  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/usb/gadget/built-in.a
  CC      net/bridge/br_multicast_eht.o
  AR      drivers/media/platform/st/sti/hva/built-in.a
  AR      drivers/media/platform/st/stm32/built-in.a
  CC      kernel/events/ring_buffer.o
  AR      drivers/media/platform/st/built-in.a
  AR      drivers/media/platform/sunxi/sun4i-csi/built-in.a
  CC [M]  drivers/gpu/drm/i915/intel_clock_gating.o
  AR      drivers/media/platform/sunxi/sun6i-csi/built-in.a
  AR      drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
  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/ti/cal/built-in.a
  CC [M]  drivers/net/phy/broadcom.o
  AR      drivers/media/platform/ti/vpe/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_devcoredump.o
  CC      drivers/acpi/acpica/tbfadt.o
  CC      lib/decompress_unlzo.o
  CC      kernel/trace/trace_nop.o
  AR      drivers/media/platform/ti/davinci/built-in.a
  CC [M]  net/bluetooth/hci_codec.o
  AR      drivers/media/platform/ti/omap/built-in.a
  AR      drivers/media/platform/ti/omap3isp/built-in.a
  CC      lib/decompress_unxz.o
  CC [M]  drivers/ptp/ptp_vclock.o
  AR      drivers/media/platform/ti/built-in.a
  AR      drivers/media/platform/verisilicon/built-in.a
  AR      drivers/media/platform/via/built-in.a
  AR      drivers/media/platform/xilinx/built-in.a
  CC      drivers/usb/core/sysfs.o
  AR      drivers/media/platform/built-in.a
  CC      mm/swap_slots.o
  CC      kernel/trace/trace_functions_graph.o
  CC      net/ipv4/af_inet.o
  AR      drivers/media/pci/ttpci/built-in.a
  AR      drivers/media/pci/b2c2/built-in.a
  CC      drivers/input/mousedev.o
  AR      drivers/media/usb/b2c2/built-in.a
  AR      drivers/media/pci/pluto2/built-in.a
  AR      drivers/media/pci/dm1105/built-in.a
  CC      net/ipv4/igmp.o
  AR      drivers/media/usb/dvb-usb/built-in.a
  AR      drivers/media/pci/pt1/built-in.a
  AR      drivers/media/usb/dvb-usb-v2/built-in.a
  AR      drivers/media/pci/pt3/built-in.a
  AR      drivers/media/usb/s2255/built-in.a
  AR      drivers/media/pci/mantis/built-in.a
  AR      drivers/media/usb/siano/built-in.a
  AR      drivers/media/pci/ngene/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/usb/built-in.a
  AR      drivers/media/pci/saa7146/built-in.a
  CC      kernel/trace/fgraph.o
  AR      drivers/media/pci/smipcie/built-in.a
  AR      drivers/media/pci/netup_unidvb/built-in.a
  AR      drivers/media/pci/intel/ipu3/built-in.a
  AR      drivers/media/pci/intel/built-in.a
  AR      drivers/media/pci/built-in.a
  AR      drivers/media/mmc/siano/built-in.a
  AR      drivers/media/mmc/built-in.a
  AR      drivers/media/firewire/built-in.a
  AR      drivers/media/spi/built-in.a
  CC [M]  drivers/gpu/drm/vgem/vgem_drv.o
  AR      drivers/media/test-drivers/built-in.a
  CC [M]  drivers/i2c/busses/i2c-ccgx-ucsi.o
  AR      drivers/media/built-in.a
  CC [M]  drivers/gpu/drm/vgem/vgem_fence.o
  CC      arch/x86/kernel/smpboot.o
  CC      drivers/power/supply/power_supply_leds.o
  CC      arch/x86/kernel/tsc_sync.o
  AR      drivers/ata/built-in.a
  CC      drivers/acpi/acpica/tbfind.o
  AR      drivers/thermal/broadcom/built-in.a
  AR      drivers/thermal/samsung/built-in.a
  CC      drivers/thermal/intel/intel_tcc.o
  CC      drivers/acpi/acpica/tbinstal.o
  CC      arch/x86/kernel/setup_percpu.o
  CC      lib/decompress_unzstd.o
  LD [M]  net/netfilter/nf_conntrack.o
  CC      net/sunrpc/sysfs.o
  CC      kernel/trace/blktrace.o
  LD [M]  net/netfilter/nf_nat.o
  CC      drivers/watchdog/watchdog_core.o
  CC      drivers/usb/host/xhci-mem.o
  CC      kernel/trace/trace_events.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.o
  CC [M]  drivers/net/phy/lxt.o
  CC      drivers/thermal/intel/therm_throt.o
  AR      net/netfilter/built-in.a
  CC      drivers/usb/host/xhci-ext-caps.o
  CC [M]  net/bluetooth/eir.o
  CC      arch/x86/kernel/ftrace.o
  CC [M]  drivers/hwmon/acpi_power_meter.o
  CC      fs/nfs/nfs2xdr.o
  CC [M]  drivers/ptp/ptp_kvm_x86.o
  CC      drivers/watchdog/watchdog_dev.o
  CC      drivers/usb/core/endpoint.o
  CC      net/sunrpc/svc_xprt.o
  CC      net/sunrpc/xprtmultipath.o
  CC      drivers/power/supply/power_supply_hwmon.o
  CC      net/sunrpc/stats.o
  CC      mm/dmapool.o
  CC      drivers/acpi/acpica/tbprint.o
  AS      arch/x86/kernel/ftrace_64.o
  CC [M]  drivers/i2c/busses/i2c-i801.o
  CC      lib/dump_stack.o
  CC      drivers/input/evdev.o
  CC      drivers/usb/core/devio.o
  AR      drivers/thermal/st/built-in.a
  CC      drivers/watchdog/softdog.o
  CC      net/bridge/br_vlan.o
  CC      arch/x86/kernel/trace_clock.o
  LD [M]  drivers/gpu/drm/vgem/vgem.o
  CC [M]  drivers/gpu/drm/xe/xe_device.o
  CC [M]  drivers/net/phy/realtek.o
  CC [M]  net/dns_resolver/dns_key.o
  CC      arch/x86/kernel/trace.o
  CC [M]  net/dns_resolver/dns_query.o
  CC      net/ipv6/udp.o
  CC      arch/x86/kernel/rethook.o
  CC      drivers/usb/host/xhci-ring.o
  CC [M]  drivers/ptp/ptp_kvm_common.o
  CC      drivers/usb/host/xhci-hub.o
  CC      drivers/acpi/acpica/tbutils.o
  AR      drivers/power/supply/built-in.a
  AR      drivers/power/built-in.a
  CC [M]  drivers/gpu/drm/i915/intel_device_info.o
  CC      drivers/usb/host/xhci-dbg.o
  LD [M]  drivers/ptp/ptp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_gem.o
  CC      net/ipv6/udplite.o
  CC [M]  drivers/hwmon/coretemp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ring.o
  CC      net/core/selftests.o
  CC      net/sunrpc/sysctl.o
  CC      lib/earlycpio.o
  CC      drivers/acpi/acpica/tbxface.o
  CC [M]  drivers/thermal/intel/x86_pkg_temp_thermal.o
  CC      drivers/usb/core/notify.o
  CC [M]  net/bluetooth/hci_sync.o
  CC [M]  drivers/net/phy/smsc.o
  CC      lib/extable.o
  CC      drivers/usb/core/generic.o
  CC      net/core/ptp_classifier.o
  CC      arch/x86/kernel/crash_core_64.o
  AR      drivers/watchdog/built-in.a
  CC [M]  arch/x86/kvm/vmx/posted_intr.o
  CC      lib/flex_proportions.o
  CC      kernel/trace/trace_export.o
  LD [M]  net/dns_resolver/dns_resolver.o
  CC      net/devres.o
  LD [M]  drivers/net/phy/aquantia.o
  CC      net/ipv6/raw.o
  CC [M]  drivers/gpu/drm/xe/xe_dma_buf.o
  AR      drivers/net/phy/built-in.a
  CC      net/ipv6/icmp.o
  CC      drivers/usb/host/xhci-trace.o
  LD [M]  drivers/ptp/ptp_kvm.o
  CC      drivers/usb/host/xhci-debugfs.o
  CC      drivers/md/md.o
  CC      drivers/acpi/acpica/tbxfload.o
  CC [M]  drivers/md/persistent-data/dm-array.o
  CC      drivers/opp/core.o
  CC      drivers/cpufreq/cpufreq.o
  CC      net/ipv4/fib_frontend.o
  AR      drivers/input/built-in.a
  CC      lib/idr.o
  CC      drivers/cpufreq/freq_table.o
  CC      drivers/acpi/acpica/tbxfroot.o
  CC      arch/x86/kernel/module.o
  CC      fs/nfs/nfs3super.o
  CC [M]  drivers/thermal/intel/intel_menlow.o
  CC      mm/hugetlb.o
  CC      net/ipv4/fib_semantics.o
  AR      drivers/thermal/intel/built-in.a
  AR      drivers/hwmon/built-in.a
  CC      mm/hugetlb_vmemmap.o
  CC [M]  drivers/i2c/busses/i2c-isch.o
  CC      drivers/cpuidle/governors/menu.o
  CC      drivers/cpuidle/cpuidle.o
  CC      drivers/cpuidle/driver.o
  CC      kernel/trace/trace_event_perf.o
  CC      drivers/usb/host/xhci-pci.o
  CC      net/ipv4/fib_trie.o
  CC [M]  drivers/gpu/drm/i915/intel_memory_region.o
  AR      drivers/net/pse-pd/built-in.a
  CC      drivers/net/mdio/acpi_mdio.o
  CC      drivers/acpi/acpica/utaddress.o
  AR      drivers/net/pcs/built-in.a
  CC      net/ipv4/fib_notifier.o
  CC      net/ipv4/inet_fragment.o
  CC      kernel/events/callchain.o
  CC      drivers/net/mdio/fwnode_mdio.o
  CC      drivers/cpuidle/governors/haltpoll.o
  CC      lib/irq_regs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_cs.o
  CC [M]  drivers/gpu/drm/xe/xe_engine.o
  CC      arch/x86/kernel/early_printk.o
  CC      arch/x86/kernel/hpet.o
  CC      net/core/netprio_cgroup.o
  CC      net/ipv4/ping.o
  CC      drivers/cpuidle/governor.o
  CC      lib/is_single_threaded.o
  CC [M]  drivers/md/persistent-data/dm-bitset.o
  CC      lib/klist.o
  AR      drivers/thermal/qcom/built-in.a
  AR      drivers/thermal/tegra/built-in.a
  CC      drivers/acpi/acpica/utalloc.o
  CC      fs/btrfs/print-tree.o
  AR      drivers/thermal/mediatek/built-in.a
  CC      drivers/thermal/thermal_core.o
  CC      drivers/usb/core/quirks.o
  AR      net/sunrpc/built-in.a
  CC      net/socket.o
  CC      fs/nfs/nfs3client.o
  CC [M]  drivers/i2c/busses/i2c-ismt.o
  CC      kernel/trace/trace_events_filter.o
  CC      drivers/cpuidle/sysfs.o
  CC      drivers/acpi/acpi_lpss.o
  CC      drivers/acpi/acpi_apd.o
  CC      fs/nfs/nfs3proc.o
  CC      net/compat.o
  CC      drivers/cpuidle/poll_state.o
  CC      lib/kobject.o
  CC      lib/kobject_uevent.o
  CC      lib/logic_pio.o
  CC      kernel/events/hw_breakpoint.o
  AR      drivers/net/mdio/built-in.a
  AR      drivers/net/ethernet/adi/built-in.a
  AR      drivers/net/ethernet/alacritech/built-in.a
  CC      drivers/acpi/acpica/utascii.o
  AR      drivers/net/ethernet/amazon/built-in.a
  AR      drivers/net/ethernet/aquantia/built-in.a
  AR      drivers/net/ethernet/asix/built-in.a
  CC      fs/btrfs/root-tree.o
  AR      drivers/net/ethernet/cadence/built-in.a
  AR      drivers/cpuidle/governors/built-in.a
  AR      drivers/net/ethernet/broadcom/built-in.a
  CC      arch/x86/kernel/amd_nb.o
  CC [M]  drivers/net/ethernet/broadcom/b44.o
  AR      drivers/net/ethernet/cavium/common/built-in.a
  AR      drivers/net/ethernet/cavium/thunder/built-in.a
  CC      drivers/opp/cpu.o
  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 [M]  drivers/net/ethernet/broadcom/bnx2.o
  CC      mm/sparse.o
  CC [M]  drivers/net/ethernet/broadcom/cnic.o
  CC      mm/sparse-vmemmap.o
  CC      net/bridge/br_vlan_tunnel.o
  CC [M]  drivers/md/persistent-data/dm-block-manager.o
  CC      drivers/usb/core/devices.o
  CC [M]  net/bluetooth/sco.o
  CC      fs/pstore/inode.o
  CC      drivers/cpuidle/cpuidle-haltpoll.o
  CC      fs/pstore/platform.o
  CC      fs/pstore/pmsg.o
  CC      net/ipv6/mcast.o
  CC      net/core/dst_cache.o
  CC      drivers/acpi/acpica/utbuffer.o
  CC      lib/maple_tree.o
  CC [M]  net/bluetooth/iso.o
  CC      drivers/cpufreq/cpufreq_performance.o
  CC      fs/nfs/nfs3xdr.o
  CC      drivers/opp/debugfs.o
  AR      drivers/net/ethernet/cortina/built-in.a
  CC      drivers/usb/core/phy.o
  CC [M]  drivers/gpu/drm/xe/xe_exec.o
  CC      drivers/usb/core/port.o
  CC [M]  drivers/i2c/busses/i2c-piix4.o
  CC      mm/mmu_notifier.o
  CC      arch/x86/kernel/kvm.o
  AR      drivers/cpuidle/built-in.a
  CC      net/sysctl_net.o
  CC      net/ipv6/reassembly.o
  CC [M]  drivers/md/persistent-data/dm-space-map-common.o
  CC      drivers/acpi/acpica/utcksum.o
  CC      drivers/acpi/acpica/utcopy.o
  CC      net/ipv6/tcp_ipv6.o
  CC      drivers/usb/core/hcd-pci.o
  CC      drivers/cpufreq/cpufreq_ondemand.o
  CC      net/ipv4/ip_tunnel_core.o
  AR      drivers/usb/host/built-in.a
  CC      net/ipv4/gre_offload.o
  CC      drivers/mmc/core/core.o
  CC      drivers/mmc/host/sdhci.o
  AR      drivers/ufs/built-in.a
  CC      drivers/usb/core/usb-acpi.o
  AR      fs/pstore/built-in.a
  CC      net/ipv4/metrics.o
  CC      lib/memcat_p.o
  AR      drivers/leds/trigger/built-in.a
  CC [M]  drivers/leds/trigger/ledtrig-audio.o
  CC      drivers/mmc/core/bus.o
  CC [M]  drivers/gpu/drm/i915/intel_pcode.o
  CC      drivers/thermal/thermal_sysfs.o
  CC      mm/ksm.o
  LD [M]  arch/x86/kvm/kvm.o
  CC      kernel/trace/trace_events_trigger.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_bios.o
  AR      drivers/opp/built-in.a
  CC      fs/btrfs/dir-item.o
  CC      net/bridge/br_vlan_options.o
  CC      kernel/events/uprobes.o
  CC      net/bridge/br_mst.o
  CC      fs/btrfs/file-item.o
  CC      net/core/gro_cells.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.o
  CC      drivers/acpi/acpica/utexcep.o
  AR      drivers/leds/blink/built-in.a
  AR      drivers/leds/simple/built-in.a
  CC      drivers/leds/led-core.o
  UPD     arch/x86/kvm/kvm-asm-offsets.h
  AS [M]  arch/x86/kvm/vmx/vmenter.o
  CC [M]  drivers/gpu/drm/xe/xe_execlist.o
  CC      drivers/acpi/acpi_platform.o
  LD [M]  arch/x86/kvm/kvm-intel.o
  CC      drivers/acpi/acpi_pnp.o
  CC      drivers/cpufreq/cpufreq_governor.o
  CC [M]  drivers/md/persistent-data/dm-space-map-disk.o
  CC [M]  drivers/gpu/drm/i915/intel_region_ttm.o
  CC [M]  drivers/gpu/drm/i915/intel_runtime_pm.o
  CC      lib/nmi_backtrace.o
  CC      drivers/leds/led-class.o
  AR      drivers/usb/core/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_force_wake.o
  AR      drivers/usb/built-in.a
  CC [M]  drivers/i2c/busses/i2c-designware-pcidrv.o
  CC [M]  net/bluetooth/a2mp.o
  CC [M]  net/bluetooth/amp.o
  CC      drivers/acpi/acpica/utdebug.o
  CC      drivers/thermal/thermal_trip.o
  CC      drivers/leds/led-triggers.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/atombios_dp.o
  CC      fs/ext4/sysfs.o
  CC [M]  drivers/net/ethernet/broadcom/tg3.o
  CC      arch/x86/kernel/kvmclock.o
  CC [M]  drivers/gpu/drm/i915/intel_sbi.o
  CC      fs/ext4/xattr.o
  CC [M]  drivers/gpu/drm/i915/intel_step.o
  CC [M]  net/bluetooth/hci_debugfs.o
  CC      drivers/mmc/core/host.o
  CC      drivers/mmc/core/mmc.o
  CC      drivers/mmc/host/sdhci-pci-core.o
  CC      drivers/acpi/acpica/utdecode.o
  CC      drivers/acpi/acpica/utdelete.o
  CC      drivers/acpi/power.o
  CC      net/core/failover.o
  CC      drivers/acpi/acpica/uterror.o
  CC      drivers/thermal/thermal_helpers.o
  CC [M]  drivers/md/persistent-data/dm-space-map-metadata.o
  CC [M]  drivers/md/persistent-data/dm-transaction-manager.o
  CC      net/ipv4/netlink.o
  CC      kernel/trace/trace_eprobe.o
  CC      drivers/mmc/host/sdhci-pci-o2micro.o
  CC      drivers/cpufreq/cpufreq_governor_attr_set.o
  CC      drivers/i2c/i2c-boardinfo.o
  CC      arch/x86/kernel/paravirt.o
  CC      drivers/mmc/core/mmc_ops.o
  AR      fs/nfs/built-in.a
  CC      kernel/trace/trace_kprobe.o
  CC      drivers/acpi/acpica/uteval.o
  CC [M]  drivers/gpu/drm/xe/xe_ggtt.o
  CC [M]  net/bridge/br_netfilter_hooks.o
  LD [M]  drivers/i2c/busses/i2c-designware-pci.o
  AR      drivers/leds/built-in.a
  AR      drivers/i2c/busses/built-in.a
  CC      drivers/i2c/i2c-core-base.o
  AR      drivers/firmware/arm_ffa/built-in.a
  CC      drivers/acpi/acpica/utglobal.o
  CC [M]  drivers/gpu/drm/i915/intel_uncore.o
  AR      drivers/firmware/arm_scmi/built-in.a
  AR      drivers/firmware/broadcom/built-in.a
  AR      drivers/firmware/cirrus/built-in.a
  AR      drivers/firmware/meson/built-in.a
  AR      drivers/crypto/stm32/built-in.a
  AR      drivers/crypto/xilinx/built-in.a
  CC      arch/x86/kernel/pvclock.o
  CC      drivers/i2c/i2c-core-smbus.o
  AR      drivers/crypto/hisilicon/built-in.a
  AR      drivers/crypto/keembay/built-in.a
  CC      arch/x86/kernel/pcspeaker.o
  AR      drivers/crypto/built-in.a
  AR      drivers/firmware/imx/built-in.a
  CC      drivers/i2c/i2c-core-acpi.o
  CC      drivers/firmware/efi/libstub/efi-stub-helper.o
  CC      drivers/thermal/thermal_hwmon.o
  CC      drivers/cpufreq/acpi-cpufreq.o
  CC [M]  drivers/gpu/drm/i915/intel_wakeref.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_afmt.o
  CC      drivers/clocksource/acpi_pm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_trace_points.o
  CC      lib/plist.o
  CC      lib/radix-tree.o
  CC      drivers/mmc/core/sd.o
  CC      drivers/acpi/acpica/uthex.o
  AR      kernel/events/built-in.a
  CC      fs/btrfs/inode-item.o
  CC      drivers/md/md-bitmap.o
  CC [M]  drivers/md/persistent-data/dm-btree.o
  CC      drivers/i2c/i2c-core-slave.o
  CC [M]  drivers/gpu/drm/i915/vlv_sideband.o
  CC      arch/x86/kernel/check.o
  AR      net/core/built-in.a
  CC      kernel/cpu.o
  CC      arch/x86/kernel/uprobes.o
  CC [M]  drivers/md/persistent-data/dm-btree-remove.o
  CC      arch/x86/kernel/perf_regs.o
  CC [M]  drivers/md/persistent-data/dm-btree-spine.o
  CC      drivers/md/md-autodetect.o
  CC      net/ipv4/nexthop.o
  CC      drivers/i2c/i2c-dev.o
  CC      arch/x86/kernel/tracepoint.o
  CC [M]  drivers/gpu/drm/xe/xe_gt.o
  CC      kernel/exit.o
  CC      lib/ratelimit.o
  CC      mm/slub.o
  CC      drivers/thermal/gov_fair_share.o
  CC      drivers/hid/usbhid/hid-core.o
  CC      drivers/acpi/acpica/utids.o
  CC      drivers/hid/usbhid/hiddev.o
  CC      drivers/firmware/efi/libstub/gop.o
  CC      drivers/clocksource/i8253.o
  CC      drivers/mmc/host/sdhci-pci-arasan.o
  CC      kernel/softirq.o
  AR      drivers/staging/media/built-in.a
  CC      drivers/acpi/acpica/utinit.o
  AR      drivers/staging/built-in.a
  CC      drivers/mmc/core/sd_ops.o
  CC      drivers/thermal/gov_step_wise.o
  LD [M]  net/bluetooth/bluetooth.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/object.o
  CC      net/ipv6/ping.o
  CC      drivers/cpufreq/intel_pstate.o
  CC      drivers/thermal/gov_user_space.o
  CC [M]  drivers/i2c/i2c-smbus.o
  CC      net/ipv4/udp_tunnel_stub.o
  CC [M]  drivers/i2c/i2c-mux.o
  CC      drivers/hid/hid-core.o
  CC      lib/rbtree.o
  CC      drivers/mmc/host/sdhci-pci-dwc-mshc.o
  CC      mm/migrate.o
  CC      arch/x86/kernel/itmt.o
  AR      drivers/clocksource/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_gt_clock.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/atombios_encoders.o
  CC      drivers/md/dm-uevent.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/client.o
  CC      arch/x86/kernel/umip.o
  CC      arch/x86/kernel/unwind_orc.o
  CC      drivers/acpi/acpica/utlock.o
  CC [M]  drivers/gpu/drm/i915/vlv_suspend.o
  CC      fs/ext4/xattr_hurd.o
  CC      drivers/firmware/efi/libstub/secureboot.o
  AR      drivers/thermal/built-in.a
  CC [M]  drivers/gpu/drm/i915/soc/intel_dram.o
  CC [M]  drivers/gpu/drm/i915/soc/intel_gmch.o
  CC      drivers/mmc/host/sdhci-pci-gli.o
  LD [M]  drivers/md/persistent-data/dm-persistent-data.o
  CC      drivers/md/dm.o
  CC      drivers/acpi/acpica/utmath.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/conn.o
  CC      mm/migrate_device.o
  CC      drivers/mmc/core/sdio.o
  CC      kernel/trace/error_report-traces.o
  CC      lib/seq_buf.o
  CC      fs/btrfs/disk-io.o
  CC      lib/show_mem.o
  CC      drivers/acpi/acpica/utmisc.o
  CC      net/ipv4/sysctl_net_ipv4.o
  AR      drivers/i2c/built-in.a
  CC      drivers/mmc/host/sdhci-acpi.o
  CC      drivers/acpi/acpica/utmutex.o
  CC      arch/x86/kernel/callthunks.o
  CC      lib/siphash.o
  CC [M]  drivers/gpu/drm/ast/ast_drv.o
  CC [M]  net/bridge/br_netfilter_ipv6.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_debugfs.o
  AR      drivers/firmware/psci/built-in.a
  CC      drivers/mmc/host/cqhci-core.o
  CC      drivers/acpi/acpica/utnonansi.o
  CC      drivers/mmc/core/sdio_ops.o
  CC [M]  drivers/mmc/host/sdhci-pltfm.o
  CC      arch/x86/kernel/mmconf-fam10h_64.o
  CC      arch/x86/kernel/vsmp_64.o
  CC      kernel/resource.o
  CC      net/ipv6/exthdrs.o
  CC      drivers/acpi/acpica/utobject.o
  CC      drivers/firmware/efi/libstub/tpm.o
  CC      fs/ext4/xattr_trusted.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_sa.o
  AR      drivers/hid/usbhid/built-in.a
  CC      drivers/acpi/event.o
  AR      drivers/net/usb/built-in.a
  CC [M]  drivers/net/usb/pegasus.o
  CC [M]  drivers/net/usb/rtl8150.o
  CC      drivers/acpi/evged.o
  CC      drivers/acpi/sysfs.o
  CC      net/ipv4/proc.o
  CC      kernel/trace/power-traces.o
  CC [M]  drivers/net/usb/r8152.o
  CC      drivers/hid/hid-input.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/device.o
  CC      drivers/acpi/acpica/utosi.o
  CC      drivers/firmware/efi/libstub/file.o
  CC      net/ipv6/datagram.o
  CC      net/ipv6/ip6_flowlabel.o
  CC      net/ipv6/inet6_connection_sock.o
  CC [M]  drivers/gpu/drm/i915/soc/intel_pch.o
  CC      lib/string.o
  CC      drivers/md/dm-table.o
  CC      drivers/mmc/core/sdio_bus.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_mcr.o
  AR      arch/x86/kernel/built-in.a
  CC [M]  drivers/gpu/drm/ast/ast_i2c.o
  AR      arch/x86/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvif/disp.o
  AR      drivers/firmware/smccc/built-in.a
  CC      drivers/acpi/acpica/utownerid.o
  CC [M]  drivers/gpu/drm/ast/ast_main.o
  CC      drivers/firmware/efi/libstub/mem.o
  CC [M]  drivers/gpu/drm/i915/i915_memcpy.o
  CC      fs/ext4/xattr_user.o
  AR      drivers/firmware/tegra/built-in.a
  CC      drivers/md/dm-target.o
  CC      drivers/firmware/efi/libstub/random.o
  CC      drivers/mmc/core/sdio_cis.o
  CC [M]  drivers/gpu/drm/ast/ast_mm.o
  CC      net/ipv6/udp_offload.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/driver.o
  CC      drivers/md/dm-linear.o
  CC      drivers/mmc/core/sdio_io.o
  CC [M]  drivers/gpu/drm/i915/i915_mm.o
  AR      drivers/cpufreq/built-in.a
  AR      drivers/platform/x86/amd/built-in.a
  CC      drivers/mailbox/mailbox.o
  CC      drivers/platform/x86/p2sb.o
  CC      drivers/acpi/property.o
  CC      drivers/platform/x86/intel/pmc/core.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/atombios_i2c.o
  CC [M]  drivers/platform/x86/intel/pmt/class.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.o
  CC      drivers/acpi/acpica/utpredef.o
  CC      drivers/platform/x86/intel/pmc/spt.o
  AR      net/bridge/built-in.a
  LD [M]  net/bridge/br_netfilter.o
  CC      net/ipv4/syncookies.o
  CC      kernel/sysctl.o
  CC      drivers/platform/x86/pmc_atom.o
  AR      drivers/platform/surface/built-in.a
  CC      kernel/capability.o
  CC      lib/timerqueue.o
  CC      drivers/md/dm-stripe.o
  AR      drivers/mmc/host/built-in.a
  CC      drivers/acpi/acpica/utresdecode.o
  CC      fs/ext4/fast_commit.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/event.o
  CC      drivers/firmware/efi/libstub/randomalloc.o
  CC      drivers/platform/x86/intel/turbo_max_3.o
  AR      drivers/net/ethernet/engleder/built-in.a
  CC [M]  drivers/platform/x86/wmi.o
  CC      drivers/platform/x86/intel/pmc/cnp.o
  CC      drivers/md/dm-ioctl.o
  CC      drivers/firmware/efi/libstub/pci.o
  CC      lib/vsprintf.o
  CC      lib/win_minmax.o
  CC      drivers/firmware/efi/libstub/skip_spaces.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_pagefault.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.o
  CC      lib/xarray.o
  CC      fs/ext4/orphan.o
  CC      drivers/md/dm-io.o
  CC      drivers/mmc/core/sdio_irq.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/fifo.o
  CC [M]  drivers/gpu/drm/ast/ast_mode.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sysfs.o
  CC      kernel/trace/rpm-traces.o
  CC      kernel/trace/trace_dynevent.o
  CC      drivers/mailbox/pcc.o
  CC      kernel/ptrace.o
  CC [M]  drivers/net/usb/asix_devices.o
  CC      drivers/acpi/acpica/utresrc.o
  CC      mm/huge_memory.o
  CC [M]  drivers/platform/x86/intel/pmt/telemetry.o
  CC      net/ipv6/seg6.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
  CC [M]  drivers/platform/x86/wmi-bmof.o
  CC [M]  drivers/gpu/drm/i915/i915_sw_fence.o
  CC [M]  drivers/net/usb/asix_common.o
  CC      mm/khugepaged.o
  CC      mm/page_counter.o
  CC      drivers/platform/x86/intel/pmc/icl.o
  CC      net/ipv6/fib6_notifier.o
  CC      kernel/trace/trace_probe.o
  CC      drivers/firmware/efi/libstub/lib-cmdline.o
  CC      drivers/firmware/efi/libstub/lib-ctype.o
  CC      drivers/gpu/drm/drm_mipi_dsi.o
  CC [M]  drivers/platform/x86/intel/vsec.o
  CC      drivers/firmware/efi/libstub/alignedmem.o
  CC [M]  drivers/gpu/drm/i915/i915_sw_fence_work.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.o
  CC      lib/lockref.o
  CC [M]  drivers/gpu/drm/i915/i915_syncmap.o
  CC      drivers/acpi/acpica/utstate.o
  CC      drivers/acpi/acpica/utstring.o
  CC      mm/memcontrol.o
  CC [M]  drivers/gpu/drm/drm_aperture.o
  CC [M]  drivers/gpu/drm/i915/i915_user_extensions.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  AR      drivers/mailbox/built-in.a
  CC      drivers/firmware/efi/libstub/relocate.o
  CC      drivers/mmc/core/slot-gpio.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/head.o
  CC      drivers/acpi/acpica/utstrsuppt.o
  CC [M]  drivers/platform/x86/intel/pmt/crashlog.o
  CC      drivers/platform/x86/intel/pmc/tgl.o
  CC      kernel/trace/trace_uprobe.o
  CC      drivers/platform/x86/intel/pmc/adl.o
  CC [M]  drivers/platform/x86/mxm-wmi.o
  CC [M]  drivers/net/ipvlan/ipvlan_core.o
  CC [M]  drivers/platform/x86/intel_ips.o
  CC      net/ipv4/esp4.o
  CC      drivers/firmware/efi/efi-bgrt.o
  CC [M]  drivers/gpu/drm/i915/i915_ioc32.o
  CC      drivers/firmware/efi/libstub/printk.o
  CC      drivers/devfreq/devfreq.o
  CC      drivers/firmware/efi/libstub/vsprintf.o
  CC [M]  drivers/net/vxlan/vxlan_core.o
  CC      drivers/net/loopback.o
  CC      kernel/trace/rethook.o
  CC      drivers/hid/hid-quirks.o
  CC      drivers/hid/hid-debug.o
  CC      drivers/acpi/acpica/utstrtoul64.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  CC      drivers/firmware/efi/libstub/x86-stub.o
  CC [M]  drivers/gpu/drm/drm_atomic.o
  CC      kernel/user.o
  STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
  CC [M]  drivers/devfreq/governor_simpleondemand.o
  CC      drivers/powercap/powercap_sys.o
  CC      net/ipv6/rpl.o
  CC      net/ipv6/ioam6.o
  CC      drivers/powercap/intel_rapl_common.o
  CC      drivers/mmc/core/regulator.o
  STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
  CC [M]  drivers/platform/x86/intel/rst.o
  CC      drivers/platform/x86/intel/pmc/mtl.o
  AR      drivers/perf/built-in.a
  CC [M]  drivers/gpu/drm/i915/i915_debugfs.o
  LD [M]  drivers/platform/x86/intel/intel_vsec.o
  CC      drivers/acpi/acpica/utxface.o
  CC      drivers/md/dm-kcopyd.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ads.o
  CC      net/ipv4/esp4_offload.o
  CC [M]  drivers/gpu/drm/ast/ast_post.o
  CC [M]  drivers/gpu/drm/i915/i915_debugfs_params.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_debugfs.o
  LD [M]  drivers/platform/x86/intel/pmt/pmt_class.o
  LD [M]  drivers/platform/x86/intel/pmt/pmt_telemetry.o
  LD [M]  drivers/platform/x86/intel/pmt/pmt_crashlog.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/mem.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ct.o
  CC      drivers/md/dm-sysfs.o
  CC      drivers/mmc/core/debugfs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ib.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_pll.o
  CC      drivers/mmc/core/block.o
  CC      fs/btrfs/transaction.o
  CC      drivers/ras/ras.o
  CC      fs/btrfs/inode.o
  CC      drivers/ras/debugfs.o
  CC [M]  drivers/net/vxlan/vxlan_multicast.o
  CC      drivers/acpi/acpica/utxfinit.o
  CC [M]  drivers/gpu/drm/i915/display/intel_pipe_crc.o
  CC      drivers/platform/x86/intel/pmc/pltdrv.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.o
  AR      drivers/firmware/xilinx/built-in.a
  CC      drivers/powercap/intel_rapl_msr.o
  CC [M]  drivers/devfreq/governor_performance.o
  CC      drivers/mmc/core/queue.o
  CC      drivers/acpi/acpica/utxferror.o
  AR      fs/ext4/built-in.a
  STUBCPY drivers/firmware/efi/libstub/file.stub.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
  STUBCPY drivers/firmware/efi/libstub/random.stub.o
  CC [M]  drivers/gpu/drm/ast/ast_dp501.o
  STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
  STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
  STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
  CC      fs/efivarfs/inode.o
  STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
  AR      drivers/hwtracing/intel_th/built-in.a
  STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
  CC      drivers/net/netconsole.o
  STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
  STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
  AR      drivers/firmware/efi/libstub/lib.a
  CC      drivers/firmware/efi/efi.o
  CC      drivers/hid/hidraw.o
  CC      fs/efivarfs/file.o
  CC [M]  drivers/net/vxlan/vxlan_vnifilter.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/mmu.o
  CC      drivers/firmware/efi/vars.o
  CC      drivers/android/binderfs.o
  CC      drivers/nvmem/core.o
  CC [M]  drivers/net/ipvlan/ipvlan_main.o
  CC      drivers/acpi/acpica/utxfmutex.o
  AR      drivers/platform/x86/intel/pmc/built-in.a
  LD [M]  drivers/platform/x86/intel/intel-rst.o
  AR      drivers/platform/x86/intel/built-in.a
  AR      drivers/platform/x86/built-in.a
  AR      drivers/platform/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_debugfs.o
  CC [M]  drivers/net/usb/ax88172a.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.o
  CC      net/ipv4/netfilter.o
  CC      drivers/md/dm-stats.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_hwconfig.o
  CC      lib/bcd.o
  CC      lib/sort.o
  AR      drivers/devfreq/built-in.a
  CC [M]  drivers/net/ipvlan/ipvlan_l3s.o
  CC [M]  drivers/mtd/chips/chipreg.o
  CC [M]  drivers/uio/uio.o
  AR      drivers/powercap/built-in.a
  CC [M]  drivers/vfio/pci/vfio_pci_core.o
  CC      lib/parser.o
  CC      lib/debug_locks.o
  CC [M]  drivers/net/usb/ax88179_178a.o
  AR      kernel/trace/built-in.a
  AR      drivers/ras/built-in.a
  CC [M]  drivers/vfio/pci/vfio_pci_intrs.o
  CC      kernel/signal.o
  CC [M]  drivers/vfio/pci/vfio_pci_rdwr.o
  CC      kernel/sys.o
  CC      drivers/android/binder.o
  AR      drivers/acpi/acpica/built-in.a
  CC      fs/efivarfs/super.o
  CC      lib/random32.o
  CC      lib/bust_spinlocks.o
  CC      drivers/acpi/acpi_cmos_rtc.o
  CC      drivers/android/binder_alloc.o
  CC [M]  drivers/net/usb/cdc_ether.o
  CC      mm/vmpressure.o
  CC [M]  drivers/gpu/drm/ast/ast_dp.o
  CC      drivers/firmware/efi/reboot.o
  CC      drivers/firmware/efi/memattr.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/outp.o
  CC [M]  drivers/vfio/pci/vfio_pci_config.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/timer.o
  CC      drivers/hid/hid-generic.o
  CC [M]  drivers/mtd/mtdcore.o
  CC [M]  drivers/pps/pps.o
  CC [M]  drivers/mtd/mtdsuper.o
  CC      net/ipv6/sysctl_net_ipv6.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_log.o
  CC [M]  drivers/bluetooth/btusb.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_pc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_submit.o
  CC [M]  drivers/dca/dca-core.o
  CC      lib/kasprintf.o
  CC [M]  drivers/gpu/drm/i915/i915_pmu.o
  CC [M]  drivers/dca/dca-sysfs.o
  CC      drivers/acpi/x86/apple.o
  CC      net/ipv4/inet_diag.o
  AR      drivers/nvmem/built-in.a
  CC [M]  drivers/ssb/main.o
  CC      fs/efivarfs/vars.o
  CC      drivers/md/dm-rq.o
  CC      drivers/firmware/efi/tpm.o
  AR      drivers/mmc/core/built-in.a
  CC      net/ipv4/tcp_diag.o
  AR      drivers/mmc/built-in.a
  CC [M]  drivers/bluetooth/btintel.o
  CC      drivers/acpi/x86/utils.o
  CC [M]  drivers/net/usb/cdc_eem.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_sync.o
  CC [M]  drivers/vhost/net.o
  CC      drivers/acpi/x86/s2idle.o
  CC [M]  drivers/vfio/pci/vfio_pci.o
  CC      lib/bitmap.o
  LD [M]  drivers/gpu/drm/ast/ast.o
  CC      drivers/hid/hid-a4tech.o
  LD [M]  drivers/net/ipvlan/ipvlan.o
  CC [M]  drivers/gpu/drm/drm_atomic_uapi.o
  CC [M]  drivers/net/usb/smsc75xx.o
  CC      kernel/umh.o
  CC      drivers/firmware/efi/memmap.o
  CC      kernel/workqueue.o
  CC      kernel/pid.o
  CC [M]  drivers/pps/kapi.o
  CC [M]  drivers/gpu/drm/drm_auth.o
  CC      drivers/net/virtio_net.o
  CC      net/ipv6/xfrm6_policy.o
  CC      net/ipv6/xfrm6_state.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/vmm.o
  LD [M]  drivers/dca/dca.o
  CC      mm/swap_cgroup.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.o
  CC      drivers/acpi/debugfs.o
  CC [M]  drivers/gpu/drm/drm_blend.o
  CC      drivers/net/net_failover.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine.o
  CC      kernel/task_work.o
  AR      fs/efivarfs/built-in.a
  CC      fs/btrfs/file.o
  CC      kernel/extable.o
  CC [M]  fs/netfs/buffered_read.o
  CC [M]  drivers/net/dummy.o
  CC      drivers/acpi/acpi_lpat.o
  CC      drivers/md/dm-io-rewind.o
  LD [M]  drivers/vfio/pci/vfio-pci.o
  LD [M]  drivers/vfio/pci/vfio-pci-core.o
  CC [M]  drivers/pps/sysfs.o
  CC [M]  drivers/net/usb/smsc95xx.o
  CC [M]  drivers/vfio/vfio_main.o
  CC [M]  drivers/ssb/scan.o
  CC      drivers/hid/hid-apple.o
  CC      drivers/firmware/efi/esrt.o
  AR      drivers/net/ethernet/ezchip/built-in.a
  AR      drivers/net/ethernet/fungible/built-in.a
  AR      drivers/net/ethernet/huawei/built-in.a
  CC [M]  drivers/net/ethernet/intel/e1000/e1000_main.o
  CC [M]  drivers/net/ethernet/intel/e1000e/82571.o
  CC [M]  drivers/net/ethernet/intel/igb/igb_main.o
  CC [M]  drivers/net/ethernet/intel/e1000e/ich8lan.o
  AR      drivers/net/ethernet/i825xx/built-in.a
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_preempt_mgr.o
  CC [M]  drivers/gpu/drm/i915/gt/gen2_engine_cs.o
  CC [M]  drivers/mtd/mtdconcat.o
  CC      lib/scatterlist.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.o
  CC [M]  drivers/net/ethernet/intel/igb/igb_ethtool.o
  LD [M]  drivers/pps/pps_core.o
  CC [M]  drivers/net/usb/mcs7830.o
  CC [M]  drivers/ssb/sprom.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/user.o
  CC      lib/list_sort.o
  CC      drivers/acpi/acpi_lpit.o
  CC      lib/uuid.o
  CC [M]  drivers/net/ethernet/intel/e1000/e1000_hw.o
  CC      lib/iov_iter.o
  CC      drivers/acpi/prmt.o
  CC      net/ipv6/xfrm6_input.o
  CC      net/ipv4/udp_diag.o
  CC      lib/clz_ctz.o
  AR      drivers/net/ethernet/microsoft/built-in.a
  CC      drivers/md/dm-builtin.o
  CC [M]  drivers/net/ethernet/intel/e1000/e1000_ethtool.o
  CC [M]  drivers/ssb/pci.o
  CC      kernel/params.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_82575.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_mac.o
  CC      drivers/acpi/acpi_pcc.o
  AR      drivers/net/ethernet/litex/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_hw_fence.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_virt.o
  CC      drivers/firmware/efi/efi-pstore.o
  CC [M]  fs/netfs/io.o
  LD [M]  drivers/net/vxlan/vxlan.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_nvm.o
  CC [M]  drivers/net/macvlan.o
  CC [M]  drivers/vhost/vhost.o
  CC      lib/bsearch.o
  CC [M]  drivers/net/mii.o
  AR      drivers/net/ethernet/microchip/built-in.a
  CC      mm/hugetlb_cgroup.o
  CC [M]  drivers/net/mdio.o
  CC      drivers/hid/hid-belkin.o
  CC [M]  drivers/bluetooth/btbcm.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/userc361.o
  CC      kernel/kthread.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/client.o
  CC      drivers/acpi/ac.o
  CC [M]  drivers/vfio/group.o
  CC [M]  drivers/gpu/drm/xe/xe_huc.o
  CC [M]  drivers/md/dm-bufio.o
  CC [M]  drivers/mtd/mtdpart.o
  CC [M]  drivers/net/usb/usbnet.o
  CC [M]  drivers/ssb/pcihost_wrapper.o
  CC      drivers/firmware/efi/cper.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/engine.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.o
  CC [M]  drivers/vfio/iova_bitmap.o
  CC [M]  drivers/gpu/drm/i915/gt/gen6_engine_cs.o
  CC [M]  drivers/net/ethernet/intel/e1000/e1000_param.o
  CC [M]  drivers/net/ethernet/intel/e1000e/80003es2lan.o
  CC      lib/find_bit.o
  CC      net/ipv4/tcp_cubic.o
  CC [M]  drivers/mtd/mtdchar.o
  CC      mm/kmemleak.o
  CC      drivers/hid/hid-cherry.o
  CC [M]  drivers/gpu/drm/xe/xe_huc_debugfs.o
  CC      drivers/acpi/button.o
  CC      net/ipv6/xfrm6_output.o
  CC [M]  drivers/vhost/iotlb.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/enum.o
  CC [M]  fs/netfs/iterator.o
  CC      kernel/sys_ni.o
  CC [M]  drivers/net/usb/cdc_ncm.o
  CC [M]  drivers/vfio/container.o
  CC [M]  drivers/gpu/drm/drm_bridge.o
  CC [M]  drivers/net/tun.o
  CC [M]  drivers/net/veth.o
  CC [M]  drivers/gpu/drm/drm_cache.o
  CC [M]  drivers/gpu/drm/xe/xe_irq.o
  CC [M]  drivers/ssb/driver_chipcommon.o
  CC [M]  drivers/net/ethernet/intel/e1000e/mac.o
  CC [M]  drivers/net/ethernet/intel/e1000e/manage.o
  CC [M]  drivers/gpu/drm/drm_client.o
  CC [M]  drivers/bluetooth/btrtl.o
  CC [M]  drivers/gpu/drm/i915/gt/gen6_ppgtt.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/event.o
  CC      drivers/hid/hid-chicony.o
  CC      drivers/firmware/efi/cper_cxl.o
  CC [M]  drivers/gpu/drm/xe/xe_lrc.o
  CC      kernel/nsproxy.o
  CC [M]  drivers/vfio/virqfd.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vf_error.o
  CC [M]  drivers/ssb/driver_chipcommon_pmu.o
  CC      drivers/acpi/fan_core.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/firmware.o
  CC      mm/page_isolation.o
  CC      lib/llist.o
  CC      fs/btrfs/defrag.o
  CC      drivers/acpi/fan_attr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/gpuobj.o
  CC [M]  drivers/gpu/drm/drm_client_modeset.o
  CC      mm/early_ioremap.o
  CC [M]  drivers/md/dm-bio-prison-v1.o
  CC      mm/cma.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/intr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/ioctl.o
  CC [M]  fs/netfs/main.o
  LD [M]  drivers/mtd/mtd.o
  CC      net/ipv4/xfrm4_policy.o
  LD [M]  drivers/vhost/vhost_net.o
  LD [M]  drivers/vhost/vhost_iotlb.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_sched.o
  CC [M]  drivers/md/dm-bio-prison-v2.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_main.o
  CC [M]  drivers/gpu/drm/drm_color_mgmt.o
  CC [M]  drivers/md/dm-crypt.o
  CC      drivers/acpi/processor_driver.o
  CC      drivers/firmware/efi/runtime-wrappers.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_mac.o
  CC [M]  drivers/net/ethernet/intel/e1000e/nvm.o
  CC      net/ipv4/xfrm4_state.o
  CC [M]  drivers/gpu/drm/i915/gt/gen7_renderclear.o
  AR      drivers/android/built-in.a
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.o
  CC      lib/memweight.o
  CC      net/ipv6/xfrm6_protocol.o
  CC [M]  drivers/net/usb/r8153_ecm.o
  CC [M]  drivers/vfio/vfio_iommu_type1.o
  CC      fs/btrfs/extent_map.o
  CC      drivers/acpi/processor_thermal.o
  CC      lib/kfifo.o
  CC      drivers/hid/hid-cypress.o
  CC [M]  drivers/net/ethernet/intel/e1000e/phy.o
  CC      drivers/acpi/processor_idle.o
  CC [M]  drivers/net/ethernet/intel/e1000e/param.o
  CC      drivers/acpi/processor_throttling.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ids.o
  CC [M]  drivers/ssb/driver_pcicore.o
  CC [M]  drivers/gpu/drm/i915/gt/gen8_engine_cs.o
  CC [M]  drivers/gpu/drm/xe/xe_migrate.o
  CC      mm/secretmem.o
  CC      kernel/notifier.o
  LD [M]  drivers/net/ethernet/intel/e1000/e1000.o
  CC [M]  drivers/net/ethernet/intel/e1000e/ethtool.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_i225.o
  CC [M]  fs/netfs/objects.o
  CC      drivers/firmware/efi/dev-path-parser.o
  CC      drivers/firmware/efi/apple-properties.o
  CC      drivers/firmware/dmi_scan.o
  CC      drivers/firmware/efi/earlycon.o
  AR      drivers/net/ethernet/mscc/built-in.a
  CC      net/ipv4/xfrm4_input.o
  CC [M]  drivers/net/ethernet/intel/e1000e/netdev.o
  AR      drivers/net/ethernet/neterion/built-in.a
  CC      mm/userfaultfd.o
  CC [M]  drivers/md/dm-thin.o
  CC [M]  drivers/gpu/drm/drm_connector.o
  CC [M]  drivers/net/ethernet/intel/e1000e/ptp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/memory.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.o
  CC      net/ipv4/xfrm4_output.o
  CC      drivers/firmware/dmi-sysfs.o
  CC      net/ipv4/xfrm4_protocol.o
  CC      drivers/hid/hid-ezkey.o
  CC [M]  net/ipv4/ip_tunnel.o
  CC [M]  drivers/md/dm-thin-metadata.o
  CC      mm/memremap.o
  CC      drivers/acpi/processor_perflib.o
  LD [M]  drivers/net/usb/asix.o
  CC      lib/percpu-refcount.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.o
  LD [M]  drivers/ssb/ssb.o
  CC      kernel/ksysfs.o
  CC      drivers/firmware/efi/cper-x86.o
  CC [M]  drivers/gpu/drm/drm_crtc.o
  CC      drivers/acpi/container.o
  CC      drivers/acpi/thermal.o
  CC      net/ipv6/netfilter.o
  CC      drivers/hid/hid-kensington.o
  CC      kernel/cred.o
  LD [M]  fs/netfs/netfs.o
  CC [M]  drivers/gpu/drm/i915/gt/gen8_ppgtt.o
  CC      mm/hmm.o
  CC      net/ipv6/fib6_rules.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_phy.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_base.o
  CC [M]  drivers/gpu/drm/xe/xe_mmio.o
  CC      drivers/firmware/dmi-id.o
  CC      fs/btrfs/sysfs.o
  CC      drivers/firmware/memmap.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/mm.o
  CC      fs/btrfs/accessors.o
  CC      fs/btrfs/xattr.o
  CC      lib/rhashtable.o
  CC [M]  drivers/net/ethernet/intel/igbvf/vf.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_csa.o
  CC      drivers/hid/hid-lg.o
  CC [M]  drivers/gpu/drm/drm_displayid.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_main.o
  CC      drivers/hid/hid-lg-g15.o
  CC      lib/base64.o
  CC [M]  drivers/gpu/drm/xe/xe_mocs.o
  CC [M]  net/ipv4/udp_tunnel_core.o
  AR      drivers/firmware/efi/built-in.a
  CC [M]  drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
  CC [M]  drivers/gpu/drm/drm_drv.o
  CC [M]  drivers/net/ethernet/intel/igbvf/mbx.o
  CC      lib/once.o
  CC [M]  drivers/gpu/drm/xe/xe_module.o
  CC      mm/memfd.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_common.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/object.o
  LD [M]  drivers/vfio/vfio.o
  CC [M]  drivers/gpu/drm/drm_dumb_buffers.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ras.o
  CC      mm/bootmem_info.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.o
  CC      drivers/acpi/acpi_memhotplug.o
  AR      drivers/firmware/built-in.a
  CC [M]  fs/fscache/cache.o
  CC [M]  drivers/net/ethernet/intel/igbvf/ethtool.o
  CC      fs/btrfs/ordered-data.o
  CC      kernel/reboot.o
  CC [M]  drivers/gpu/drm/drm_edid.o
  CC [M]  drivers/net/ethernet/intel/igbvf/netdev.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_nvm.o
  CC [M]  net/ipv4/udp_tunnel_nic.o
  CC      net/ipv6/proc.o
  CC      lib/refcount.o
  CC      lib/usercopy.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.o
  CC      fs/btrfs/extent_io.o
  CC      kernel/async.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/oproxy.o
  CC      net/ipv6/syncookies.o
  CC [M]  fs/fscache/cookie.o
  LD [M]  drivers/md/dm-bio-prison.o
  CC      lib/errseq.o
  CC      drivers/acpi/ioapic.o
  CC [M]  drivers/gpu/drm/xe/xe_pat.o
  CC [M]  drivers/gpu/drm/drm_encoder.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_context.o
  CC [M]  drivers/gpu/drm/xe/xe_pci.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_mbx.o
  CC [M]  fs/fscache/io.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_phy.o
  CC      drivers/acpi/battery.o
  CC      net/ipv6/mip6.o
  CC      drivers/hid/hid-microsoft.o
  CC [M]  drivers/gpu/drm/drm_file.o
  CC [M]  fs/fscache/main.o
  CC [M]  drivers/gpu/drm/xe/xe_pcode.o
  CC      lib/bucket_locks.o
  CC      net/ipv6/addrconf_core.o
  CC [M]  fs/fscache/volume.o
  AR      mm/built-in.a
  CC [M]  drivers/net/ethernet/intel/igc/igc_diag.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.o
  CC      drivers/acpi/hed.o
  CC      drivers/acpi/bgrt.o
  AR      drivers/md/built-in.a
  CC      kernel/range.o
  LD [M]  drivers/md/dm-thin-pool.o
  CC      fs/btrfs/volumes.o
  CC [M]  fs/fscache/proc.o
  CC [M]  drivers/gpu/drm/xe/xe_pm.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_82599.o
  CC [M]  drivers/net/ethernet/intel/ixgbevf/vf.o
  CC [M]  drivers/net/ethernet/intel/ixgb/ixgb_main.o
  AR      drivers/net/ethernet/intel/built-in.a
  CC      kernel/smpboot.o
  CC [M]  drivers/net/ethernet/intel/ixgb/ixgb_hw.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_context_sseu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/option.o
  CC [M]  drivers/gpu/drm/drm_fourcc.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_ethtool.o
  CC [M]  drivers/net/ethernet/intel/e100.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_82598.o
  CC      lib/generic-radix-tree.o
  CC      fs/btrfs/async-thread.o
  CC      drivers/acpi/cppc_acpi.o
  CC      drivers/acpi/spcr.o
  CC [M]  drivers/net/ethernet/intel/ixgb/ixgb_ee.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_engine_cs.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_i210.o
  CC      kernel/ucount.o
  CC [M]  drivers/gpu/drm/xe/xe_preempt_fence.o
  CC      drivers/hid/hid-monterey.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_ptp.o
  CC [M]  drivers/net/ethernet/intel/ixgbevf/mbx.o
  CC      net/ipv6/exthdrs_core.o
  CC [M]  drivers/net/ethernet/intel/ixgbevf/ethtool.o
  CC [M]  drivers/net/ethernet/intel/igb/igb_ptp.o
  CC      fs/btrfs/ioctl.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_dump.o
  CC      lib/string_helpers.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_tsn.o
  LD [M]  net/ipv4/udp_tunnel.o
  CC      drivers/acpi/acpi_pad.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/ramht.o
  AR      net/ipv4/built-in.a
  CC [M]  drivers/gpu/drm/drm_framebuffer.o
  CC [M]  drivers/net/ethernet/intel/igb/igb_hwmon.o
  CC      fs/btrfs/locking.o
  CC [M]  drivers/net/ethernet/intel/ixgb/ixgb_ethtool.o
  CC [M]  drivers/gpu/drm/xe/xe_pt.o
  CC      fs/btrfs/orphan.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_xdp.o
  LD [M]  fs/fscache/fscache.o
  CC [M]  fs/smbfs_common/cifs_arc4.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/subdev.o
  CC [M]  fs/smbfs_common/cifs_md4.o
  CC      kernel/regset.o
  CC [M]  fs/cifs/trace.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_phy.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.o
  CC [M]  fs/cifs/cifsfs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.o
  CC      fs/btrfs/export.o
  AR      drivers/hid/built-in.a
  CC [M]  drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
  LD [M]  drivers/net/ethernet/intel/igbvf/igbvf.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_engine_pm.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_umc.o
  AR      drivers/net/ethernet/netronome/built-in.a
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_x540.o
  CC      kernel/kmod.o
  CC [M]  fs/cifs/cifs_debug.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/uevent.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_x550.o
  CC [M]  fs/fuse/dev.o
  CC      kernel/groups.o
  CC      lib/hexdump.o
  CC      fs/btrfs/tree-log.o
  CC [M]  fs/overlayfs/super.o
  CC [M]  drivers/acpi/acpi_video.o
  CC [M]  fs/overlayfs/namei.o
  CC      fs/open.o
  CC      net/ipv6/ip6_checksum.o
  CC [M]  drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.o
  CC [M]  fs/cifs/connect.o
  CC      lib/kstrtox.o
  CC [M]  fs/cifs/dir.o
  CC [M]  drivers/net/ethernet/intel/ixgbevf/ipsec.o
  CC      fs/btrfs/free-space-cache.o
  CC [M]  fs/cifs/file.o
  LD [M]  drivers/net/ethernet/intel/igc/igc.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_lib.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/nvfw/fw.o
  CC [M]  fs/overlayfs/util.o
  CC      lib/debug_info.o
  CC [M]  drivers/gpu/drm/xe/xe_pt_walk.o
  LD [M]  drivers/net/ethernet/intel/e1000e/e1000e.o
  CC      lib/iomap.o
  CC [M]  drivers/net/ethernet/intel/ixgb/ixgb_param.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/smu_v11_0_i2c.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_rap.o
  LD [M]  drivers/net/ethernet/intel/igb/igb.o
  CC [M]  drivers/gpu/drm/drm_gem.o
  CC [M]  drivers/gpu/drm/drm_ioctl.o
  CC [M]  drivers/gpu/drm/xe/xe_query.o
  CC      net/ipv6/ip6_icmp.o
  CC      net/ipv6/output_core.o
  CC      fs/btrfs/zlib.o
  CC      kernel/kcmp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_fw_attestation.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_engine_user.o
  CC      fs/btrfs/lzo.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_sr.o
  CC [M]  fs/overlayfs/inode.o
  CC      net/ipv6/protocol.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/nvfw/hs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/nvfw/ls.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.o
  CC      fs/read_write.o
  CC      lib/pci_iomap.o
  CC      fs/btrfs/zstd.o
  CC [M]  drivers/gpu/drm/drm_lease.o
  CC [M]  fs/cifs/inode.o
  CC [M]  fs/overlayfs/file.o
  CC [M]  drivers/acpi/video_detect.o
  CC      kernel/freezer.o
  CC      kernel/stacktrace.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_whitelist.o
  AR      drivers/acpi/built-in.a
  CC      kernel/dma.o
  LD [M]  drivers/net/ethernet/intel/ixgb/ixgb.o
  CC      kernel/smp.o
  CC [M]  fs/overlayfs/dir.o
  CC [M]  drivers/gpu/drm/drm_managed.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/nvfw/acr.o
  CC      kernel/uid16.o
  CC [M]  drivers/gpu/drm/drm_mm.o
  CC [M]  fs/overlayfs/readdir.o
  CC [M]  fs/overlayfs/copy_up.o
  CC [M]  drivers/gpu/drm/xe/xe_rtp.o
  CC [M]  fs/cifs/link.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_execlists_submission.o
  CC      net/ipv6/ip6_offload.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_securedisplay.o
  CC      net/ipv6/tcpv6_offload.o
  GEN     xe_wa_oob.c xe_wa_oob.h
  GEN     xe_wa_oob.c xe_wa_oob.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_eeprom.o
  CC [M]  fs/fuse/dir.o
  CC      lib/iomap_copy.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ggtt.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt.o
  AR      drivers/net/ethernet/ni/built-in.a
  AR      drivers/net/ethernet/packetengines/built-in.a
  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      kernel/kallsyms.o
  AR      drivers/net/ethernet/sfc/built-in.a
  CC [M]  drivers/net/ethernet/realtek/8139too.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_mca.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/nvfw/flcn.o
  CC      lib/devres.o
  CC [M]  fs/cifs/misc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.o
  CC      net/ipv6/exthdrs_offload.o
  CC      kernel/acct.o
  CC      kernel/crash_core.o
  CC [M]  fs/overlayfs/export.o
  CC      fs/btrfs/compression.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_lsdma.o
  LD [M]  drivers/acpi/video.o
../drivers/gpu/drm/i915/gt/intel_engine_cs.c:1525: warning: expecting prototype for intel_engines_cleanup_common(). Prototype was for intel_engine_cleanup_common() instead
  CC [M]  drivers/gpu/drm/xe/xe_sa.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
  CC      fs/file_table.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.o
  CC      fs/super.o
  CC      kernel/compat.o
  CC [M]  drivers/gpu/drm/xe/xe_sched_job.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/base.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.o
  CC [M]  drivers/gpu/drm/drm_mode_config.o
  CC      net/ipv6/inet6_hashtables.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
  CC [M]  drivers/net/ethernet/realtek/r8169_main.o
  CC [M]  drivers/gpu/drm/xe/xe_step.o
  AR      drivers/net/ethernet/smsc/built-in.a
  CC [M]  drivers/net/ethernet/smsc/smsc9420.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ring_mux.o
  CC      lib/check_signature.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.o
  CC      kernel/utsname.o
  CC      net/ipv6/mcast_snoop.o
  CC      kernel/user_namespace.o
  CC [M]  net/ipv6/ip6_udp_tunnel.o
  CC      lib/interval_tree.o
  CC [M]  drivers/gpu/drm/drm_mode_object.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.o
  LD [M]  fs/overlayfs/overlay.o
  AR      drivers/net/ethernet/socionext/built-in.a
  CC      fs/char_dev.o
  CC      lib/assoc_array.o
  CC      fs/stat.o
  CC      lib/list_debug.o
  CC [M]  fs/cifs/netmisc.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_sysfs.o
  CC      fs/exec.o
  CC [M]  drivers/net/ethernet/realtek/r8169_firmware.o
  CC      fs/pipe.o
  AR      drivers/net/ethernet/vertexcom/built-in.a
  CC      fs/btrfs/delayed-ref.o
  CC      fs/btrfs/relocation.o
  CC      kernel/pid_namespace.o
  CC [M]  fs/fuse/file.o
  UPD     kernel/config_data
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.o
  CC      kernel/stop_machine.o
  CC [M]  drivers/net/ethernet/realtek/r8169_phy_config.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/cik.o
  LD [M]  drivers/net/ethernet/intel/ixgbevf/ixgbevf.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/cik_ih.o
  CC [M]  drivers/gpu/drm/xe/xe_sync.o
  CC      fs/namei.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
  CC [M]  fs/fuse/inode.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_irq.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/cmdq.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/fw.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_mcr.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_pm.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
  CC      fs/fcntl.o
  CC      fs/ioctl.o
  CC [M]  fs/cifs/smbencrypt.o
  CC      kernel/kprobes.o
  CC      lib/debugobjects.o
  CC      kernel/hung_task.o
  CC      fs/btrfs/delayed-inode.o
  CC [M]  drivers/gpu/drm/drm_modes.o
  CC [M]  fs/cifs/transport.o
  CC [M]  fs/fuse/control.o
  CC      fs/btrfs/scrub.o
  CC      lib/bitrev.o
  CC      fs/readdir.o
  CC      lib/crc16.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/dce_v8_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/msgq.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v7_0.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.o
  AR      net/ipv6/built-in.a
  AR      net/built-in.a
  CC      kernel/watchdog.o
  CC      fs/select.o
  CC      kernel/watchdog_hld.o
  CC [M]  drivers/gpu/drm/drm_modeset_lock.o
  CC [M]  drivers/gpu/drm/xe/xe_tile.o
  CC [M]  drivers/gpu/drm/drm_plane.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
  CC      fs/btrfs/backref.o
  CC      lib/crc-t10dif.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/cik_sdma.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_requests.o
  CC [M]  drivers/gpu/drm/drm_prime.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/uvd_v4_2.o
  CC [M]  drivers/gpu/drm/drm_print.o
  CC [M]  fs/cifs/cached_dir.o
  CC      kernel/seccomp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/qmgr.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
  CC      fs/btrfs/ulist.o
  CC [M]  fs/fuse/xattr.o
  CC      fs/dcache.o
  HOSTCC  lib/gen_crc32table
  CC      lib/libcrc32c.o
  CC      kernel/relay.o
  CC      lib/xxhash.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
  CC [M]  fs/cifs/cifs_unicode.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.o
  CC [M]  fs/cifs/nterr.o
  CC [M]  drivers/gpu/drm/xe/xe_trace.o
  CC [M]  drivers/gpu/drm/drm_property.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vce_v2_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/si.o
  CC [M]  drivers/gpu/drm/drm_syncobj.o
  CC [M]  fs/fuse/acl.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gtt.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_llc.o
  CC      fs/btrfs/qgroup.o
  CC      fs/inode.o
  CC [M]  drivers/gpu/drm/drm_sysfs.o
  AR      drivers/net/ethernet/pensando/built-in.a
  CC [M]  drivers/gpu/drm/i915/gt/intel_lrc.o
  CC [M]  drivers/gpu/drm/drm_trace_points.o
  CC      lib/genalloc.o
  CC [M]  drivers/gpu/drm/drm_vblank.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/v1.o
  CC [M]  drivers/gpu/drm/drm_vblank_work.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gmc_v6_0.o
  CC [M]  fs/fuse/readdir.o
  CC [M]  fs/fuse/ioctl.o
  CC      kernel/utsname_sysctl.o
  CC [M]  drivers/gpu/drm/drm_vma_manager.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_migrate.o
  LD [M]  drivers/net/ethernet/realtek/r8169.o
  CC      kernel/delayacct.o
  CC      fs/btrfs/send.o
  CC      fs/btrfs/dev-replace.o
  CC      fs/btrfs/raid56.o
  CC      kernel/taskstats.o
  CC      fs/btrfs/uuid-tree.o
  CC [M]  fs/cifs/cifsencrypt.o
  CC [M]  fs/cifs/readdir.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_sys_mgr.o
  CC [M]  drivers/gpu/drm/drm_writeback.o
  CC      fs/attr.o
  CC      kernel/tsacct.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v6_0.o
  CC [M]  fs/cifs/ioctl.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/si_ih.o
  CC [M]  drivers/gpu/drm/lib/drm_random.o
  CC      fs/bad_inode.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/gm200.o
  CC      kernel/tracepoint.o
  CC [M]  drivers/gpu/drm/drm_ioc32.o
  CC      lib/percpu_counter.o
  CC [M]  drivers/gpu/drm/drm_panel.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_mocs.o
  CC      kernel/latencytop.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/gp102.o
  CC      kernel/irq_work.o
  CC      fs/btrfs/props.o
  CC [M]  fs/cifs/sess.o
  CC      lib/fault-inject.o
  CC      kernel/static_call.o
  CC [M]  drivers/gpu/drm/drm_pci.o
  LD [M]  fs/fuse/fuse.o
  CC      fs/file.o
  CC [M]  drivers/gpu/drm/drm_debugfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/ga100.o
  LD [M]  drivers/net/ethernet/intel/ixgbe/ixgbe.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/si_dma.o
  CC      fs/btrfs/free-space-tree.o
  CC      kernel/static_call_inline.o
  CC      lib/syscall.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_vram_mgr.o
  AR      drivers/net/ethernet/built-in.a
  CC [M]  drivers/gpu/drm/drm_debugfs_crc.o
  CC      kernel/user-return-notifier.o
  CC      kernel/padata.o
  CC      fs/filesystems.o
  CC      fs/btrfs/tree-checker.o
  AR      drivers/net/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_tuning.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/ga102.o
  CC      kernel/jump_label.o
  CC [M]  drivers/gpu/drm/drm_edid_load.o
  CC      fs/namespace.o
  CC      fs/btrfs/space-info.o
  CC      fs/seq_file.o
  CC [M]  fs/cifs/export.o
  CC      fs/btrfs/block-rsv.o
  CC      fs/xattr.o
  CC [M]  drivers/gpu/drm/drm_panel_orientation_quirks.o
  CC      kernel/context_tracking.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ppgtt.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/dce_v6_0.o
  CC      kernel/iomem.o
  CC [M]  fs/cifs/unc.o
  CC      fs/btrfs/delalloc-space.o
  CC [M]  drivers/gpu/drm/xe/xe_uc.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_debugfs.o
  CC      lib/dynamic_debug.o
  CC      kernel/rseq.o
  CC      fs/btrfs/block-group.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_fw.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.o
  CC [M]  drivers/gpu/drm/drm_buddy.o
  CC [M]  drivers/gpu/drm/xe/xe_vm.o
  CC [M]  drivers/gpu/drm/drm_gem_shmem_helper.o
  CC [M]  fs/cifs/winucase.o
  CC [M]  fs/cifs/smb2ops.o
  CC [M]  drivers/gpu/drm/drm_suballoc.o
  CC [M]  fs/cifs/smb2maperror.o
  CC      lib/errname.o
  CC [M]  fs/cifs/smb2transport.o
  CC [M]  drivers/gpu/drm/drm_gem_ttm_helper.o
  CC      fs/btrfs/discard.o
  CC [M]  drivers/gpu/drm/drm_atomic_helper.o
  CC      lib/nlattr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/uvd_v3_1.o
  CC      fs/libfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gm200.o
  GZIP    kernel/config_data.gz
  CC      fs/btrfs/reflink.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gm20b.o
  CC [M]  drivers/gpu/drm/xe/xe_vm_madvise.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gp102.o
  CC      lib/checksum.o
  CC      lib/cpu_rmap.o
  CC [M]  drivers/gpu/drm/xe/xe_wait_user_fence.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vi.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mxgpu_vi.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_rc6.o
  CC      fs/btrfs/subpage.o
  CC      lib/dynamic_queue_limits.o
  CC [M]  fs/cifs/smb2misc.o
  CC      fs/fs-writeback.o
  CC      kernel/configs.o
  CC [M]  drivers/gpu/drm/drm_atomic_state_helper.o
  CC      fs/pnode.o
  CC [M]  drivers/gpu/drm/xe/xe_wa.o
  CC      fs/btrfs/tree-mod-log.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_region_lmem.o
  CC      lib/glob.o
  CC [M]  drivers/gpu/drm/xe/xe_wopcm.o
  CC [M]  drivers/gpu/drm/drm_bridge_connector.o
  CC [M]  drivers/gpu/drm/xe/xe_display.o
  CC [M]  drivers/gpu/drm/xe/display/xe_fb_pin.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gp108.o
  CC      fs/splice.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gv100.o
  CC      fs/sync.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v6_1.o
  CC      fs/btrfs/extent-io-tree.o
  CC [M]  drivers/gpu/drm/drm_crtc_helper.o
  CC [M]  fs/cifs/smb2pdu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gp10b.o
  CC      fs/btrfs/fs.o
  CC      lib/strncpy_from_user.o
  CC [M]  drivers/gpu/drm/xe/display/xe_hdcp_gsc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/tu102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/soc15.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/emu_soc.o
  AR      kernel/built-in.a
  CC [M]  drivers/gpu/drm/amd/amdgpu/mxgpu_ai.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/ga100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v7_0.o
  CC [M]  fs/cifs/smb2inode.o
  CC      lib/strnlen_user.o
  CC      fs/btrfs/messages.o
  CC      fs/btrfs/bio.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vega10_reg_init.o
  CC      fs/utimes.o
  CC      fs/d_path.o
  CC [M]  drivers/gpu/drm/drm_damage_helper.o
  CC [M]  drivers/gpu/drm/drm_encoder_slave.o
  CC [M]  drivers/gpu/drm/xe/display/xe_plane_initial.o
  CC      fs/stack.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/ga102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/base.o
  CC      lib/net_utils.o
  CC [M]  drivers/gpu/drm/drm_flip_work.o
  CC      fs/btrfs/lru_cache.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vega20_reg_init.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/amd/amdgpu/nbio_v7_4.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_renderstate.o
  CC      fs/btrfs/acl.o
  CC      lib/sg_pool.o
  CC [M]  drivers/gpu/drm/xe/display/ext/intel_clock_gating.o
  CC [M]  fs/cifs/smb2file.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v2_3.o
  CC [M]  drivers/gpu/drm/drm_format_helper.o
  CC      fs/fs_struct.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/g84.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nv.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_reset.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ring.o
  CC [M]  fs/cifs/cifsacl.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ring_submission.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/arct_reg_init.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mxgpu_nv.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v7_2.o
  CC [M]  drivers/gpu/drm/xe/display/ext/intel_device_info.o
  CC [M]  drivers/gpu/drm/xe/display/ext/intel_dram.o
  CC [M]  drivers/gpu/drm/drm_gem_atomic_helper.o
  CC [M]  drivers/gpu/drm/drm_gem_framebuffer_helper.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/amd/amdgpu/hdp_v4_0.o
  CC      lib/stackdepot.o
  CC      lib/ucs2_string.o
  CC      lib/sbitmap.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/hdp_v5_0.o
  CC      fs/statfs.o
  CC [M]  drivers/gpu/drm/xe/display/ext/intel_pch.o
  CC [M]  drivers/gpu/drm/xe/i915-display/icl_dsi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/gm107.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/aldebaran_reg_init.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/gm20b.o
  CC      lib/group_cpus.o
  CC [M]  lib/asn1_decoder.o
  GEN     lib/oid_registry_data.c
  CC [M]  lib/oid_registry.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/tu102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/bit.o
  CC [M]  drivers/gpu/drm/drm_modeset_helper.o
  CC [M]  drivers/gpu/drm/drm_plane_helper.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
  CC      fs/fs_pin.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/aldebaran.o
  CC [M]  fs/cifs/fs_context.o
  AR      fs/btrfs/built-in.a
  CC      fs/nsfs.o
  CC [M]  drivers/gpu/drm/drm_probe_helper.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_audio.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_rps.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_sa_media.o
  AR      lib/lib.a
  GEN     lib/crc32table.h
  CC      lib/crc32.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/soc21.o
  CC      fs/fs_types.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sienna_cichlid.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_backlight.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_sseu.o
  CC [M]  drivers/gpu/drm/drm_rect.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.o
  CC [M]  drivers/gpu/drm/drm_self_refresh_helper.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bios.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/smu_v13_0_10.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v4_3.o
  CC      fs/fs_context.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bw.o
  CC      fs/fs_parser.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/hdp_v6_0.o
  CC      fs/fsopen.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/conn.o
  CC      fs/init.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v7_7.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
  CC      fs/kernel_read_file.o
  CC [M]  fs/cifs/dns_resolve.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cdclk.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/hdp_v5_2.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/cstep.o
  CC [M]  drivers/gpu/drm/drm_simple_kms_helper.o
  CC      fs/mnt_idmapping.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_color.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_timeline.o
  CC [M]  drivers/gpu/drm/bridge/panel.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/dcb.o
  AR      lib/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/disp.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_wopcm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/lsdma_v6_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v7_9.o
  CC [M]  drivers/gpu/drm/drm_fbdev_generic.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_workarounds.o
  CC [M]  drivers/gpu/drm/drm_fb_helper.o
  CC [M]  drivers/gpu/drm/i915/gt/shmem_utils.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/dp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/df_v1_7.o
  CC      fs/remap_range.o
  CC      fs/buffer.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/df_v3_6.o
  CC      fs/mpage.o
  CC      fs/proc_namespace.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/extdev.o
  CC      fs/direct-io.o
  CC      fs/eventpoll.o
  CC      fs/anon_inodes.o
  CC      fs/signalfd.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/df_v4_3.o
  CC      fs/timerfd.o
  CC      fs/eventfd.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_connector.o
  ASN.1   fs/cifs/cifs_spnego_negtokeninit.asn1.[ch]
  CC [M]  fs/cifs/smb1ops.o
  LD [M]  drivers/gpu/drm/drm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gmc_v7_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gmc_v8_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/fan.o
  CC [M]  drivers/gpu/drm/i915/gt/sysfs_engines.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
  CC      fs/userfaultfd.o
  CC [M]  drivers/gpu/drm/i915/gt/gen6_renderstate.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.o
  LD [M]  drivers/gpu/drm/drm_shmem_helper.o
  LD [M]  drivers/gpu/drm/drm_suballoc_helper.o
  CC [M]  fs/cifs/cifssmb.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/gpio.o
  CC [M]  drivers/gpu/drm/i915/gt/gen7_renderstate.o
  CC [M]  fs/cifs/cifs_spnego_negtokeninit.asn1.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.o
  CC      fs/aio.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/i2c.o
  CC      fs/locks.o
  CC [M]  fs/cifs/asn1.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc_state_dump.o
  CC [M]  drivers/gpu/drm/i915/gt/gen8_renderstate.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/iccsense.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gmc_v9_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v1_1.o
  LD [M]  drivers/gpu/drm/drm_ttm_helper.o
  CC      fs/binfmt_script.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/image.o
  AR      drivers/gpu/drm/built-in.a
  CC [M]  drivers/gpu/drm/i915/gt/gen9_renderstate.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_busy.o
  CC      fs/binfmt_elf.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_clflush.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cursor.o
  CC      fs/compat_binfmt_elf.o
  CC      fs/mbcache.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/i915/gem/i915_gem_context.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_create.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cx0_phy.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_domain.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
  CC      fs/posix_acl.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/mxm.o
  LD [M]  drivers/gpu/drm/drm_kms_helper.o
  CC      fs/coredump.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi_buf_trans.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/i915/gem/i915_gem_lmem.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/npde.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/pcir.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/perf.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gmc_v10_0.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_mman.o
  CC      fs/drop_caches.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_pages.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v2_1.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/xe/i915-display/intel_display_debugfs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_phys.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_pm.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_region.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_shmem.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.o
  CC      fs/fhandle.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/pmu.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/power_budget.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/ramcfg.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_stolen.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v3_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/rammap.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_throttle.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_tiling.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_ttm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_map.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_well.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v3_0.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_2.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_trace.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_userptr.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_wait.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gmc_v11_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowof.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gemfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowpci.o
  CC [M]  drivers/gpu/drm/i915/i915_active.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowramin.o
  CC [M]  drivers/gpu/drm/i915/i915_cmd_parser.o
  AR      fs/built-in.a
  CC [M]  drivers/gpu/drm/i915/i915_deps.o
  CC [M]  drivers/gpu/drm/i915/i915_gem_evict.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowrom.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_1.o
  CC [M]  drivers/gpu/drm/i915/i915_gem_gtt.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v3_0_3.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/timing.o
  CC [M]  drivers/gpu/drm/i915/i915_gem_ww.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/therm.o
  CC [M]  drivers/gpu/drm/i915/i915_gem.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp.o
  CC [M]  drivers/gpu/drm/i915/i915_query.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux.o
  CC [M]  drivers/gpu/drm/i915/i915_request.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v1_2.o
  CC [M]  drivers/gpu/drm/i915/i915_scheduler.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/vmap.o
  CC [M]  drivers/gpu/drm/i915/i915_trace_points.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/volt.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.o
  CC [M]  drivers/gpu/drm/i915/i915_ttm_buddy_manager.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/vpstate.o
  CC [M]  drivers/gpu/drm/i915/i915_vma.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/umc_v6_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/xpio.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/M0203.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/umc_v6_1.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/umc_v6_7.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/umc_v8_7.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/M0205.o
  CC [M]  drivers/gpu/drm/i915/i915_vma_resource.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/M0209.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/P0260.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_hdcp.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o
  LD [M]  fs/cifs/cifs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_link_training.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/gt/uc/intel_guc_debugfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv04.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/umc_v8_10.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_log.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_irq.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/nouveau/nvkm/subdev/bus/nv31.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ih.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_mst.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/iceland_ih.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/tonga_ih.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpt.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/cz_ih.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_huc.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vega10_ih.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv50.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vega20_ih.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_huc_fw.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/navi10_ih.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_uc.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.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_drrs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bus/g94.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bus/gf100.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsb.o
  CC [M]  drivers/gpu/drm/i915/i915_hwmon.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi.o
  CC [M]  drivers/gpu/drm/i915/display/hsw_ips.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.o
  CC [M]  drivers/gpu/drm/i915/display/intel_atomic.o
  CC [M]  drivers/gpu/drm/i915/display/intel_atomic_plane.o
  CC [M]  drivers/gpu/drm/i915/display/intel_audio.o
  CC [M]  drivers/gpu/drm/i915/display/intel_bios.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/ih_v6_0.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/amd/amdgpu/amdgpu_psp.o
  CC [M]  drivers/gpu/drm/i915/display/intel_combo_phy.o
  CC [M]  drivers/gpu/drm/i915/display/intel_connector.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv04.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi_dcs_backlight.o
  CC [M]  drivers/gpu/drm/i915/display/intel_crtc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v3_1.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi_vbt.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v10_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_crtc_state_dump.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v11_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_cursor.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v11_0_8.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv40.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v12_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_driver.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_power.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/i915/display/intel_display_power_map.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_power_well.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/dce_v10_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/dce_v11_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fb.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_reset.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fbc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fdi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_rps.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv50.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dmc.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dpio_phy.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/g84.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dpll.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_global_state.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dpll_mgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dpt.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/mcp77.o
  CC [M]  drivers/gpu/drm/i915/display/intel_drrs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v8_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v9_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dsb.o
  CC [M]  drivers/gpu/drm/i915/display/intel_fb.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/amd/amdgpu/gfx_v9_4.o
  CC [M]  drivers/gpu/drm/i915/display/intel_fdi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_gmbus.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v9_4_2.o
  CC [M]  drivers/gpu/drm/i915/display/intel_fifo_underrun.o
  CC [M]  drivers/gpu/drm/i915/display/intel_frontbuffer.o
  CC [M]  drivers/gpu/drm/i915/display/intel_global_state.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/gf100.o
  CC [M]  drivers/gpu/drm/i915/display/intel_hdcp.o
  CC [M]  drivers/gpu/drm/i915/display/intel_hdcp_gsc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp.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/i915/display/intel_hotplug.o
  CC [M]  drivers/gpu/drm/i915/display/intel_hotplug_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hti.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/gk104.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_lspcon.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v10_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/gk20a.o
  CC [M]  drivers/gpu/drm/i915/display/intel_hti.o
  CC [M]  drivers/gpu/drm/i915/display/intel_load_detect.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_setup.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/imu_v11_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_verify.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v11_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_lpe_audio.o
  CC [M]  drivers/gpu/drm/i915/display/intel_modeset_verify.o
  CC [M]  drivers/gpu/drm/i915/display/intel_modeset_setup.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v11_0_3.o
  CC [M]  drivers/gpu/drm/i915/display/intel_overlay.o
  CC [M]  drivers/gpu/drm/i915/display/intel_pch_display.o
  CC [M]  drivers/gpu/drm/i915/display/intel_pch_refclk.o
  CC [M]  drivers/gpu/drm/i915/display/intel_plane_initial.o
  CC [M]  drivers/gpu/drm/i915/display/intel_psr.o
  CC [M]  drivers/gpu/drm/i915/display/intel_quirks.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/imu_v11_0_3.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/gm20b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.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/i915/display/intel_tc.o
  CC [M]  drivers/gpu/drm/i915/display/intel_vblank.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_panel.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/pllnv04.o
  CC [M]  drivers/gpu/drm/i915/display/intel_vga.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v2_4.o
  CC [M]  drivers/gpu/drm/i915/display/intel_wm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/pllgt215.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/xe/i915-display/intel_pps.o
  CC [M]  drivers/gpu/drm/i915/display/skl_scaler.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v3_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_psr.o
  CC [M]  drivers/gpu/drm/i915/display/skl_universal_plane.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v4_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_qp_tables.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v4_4.o
  CC [M]  drivers/gpu/drm/i915/display/skl_watermark.o
  CC [M]  drivers/gpu/drm/i915/display/intel_acpi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_quirks.o
  CC [M]  drivers/gpu/drm/i915/display/intel_opregion.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_snps_phy.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v5_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_fbdev.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_ch7017.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_ch7xxx.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_tc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv04.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_ivch.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv05.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_ns2501.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv10.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_sil164.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vblank.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_tfp410.o
  CC [M]  drivers/gpu/drm/i915/display/g4x_dp.o
  CC [M]  drivers/gpu/drm/i915/display/g4x_hdmi.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/xe/i915-display/intel_vrr.o
  CC [M]  drivers/gpu/drm/i915/display/icl_dsi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_wm.o
  CC [M]  drivers/gpu/drm/i915/display/intel_backlight.o
  CC [M]  drivers/gpu/drm/i915/display/intel_crt.o
  CC [M]  drivers/gpu/drm/i915/display/intel_cx0_phy.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v5_2.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_scaler.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v6_0.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/i915/display/intel_ddi.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv1a.o
  CC [M]  drivers/gpu/drm/i915/display/intel_ddi_buf_trans.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_watermark.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_device.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv20.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mes_v11_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_trace.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dkl_phy.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/uvd_v5_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp_aux.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp_aux_backlight.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp_hdcp.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp_link_training.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp_mst.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dsi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_acpi.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/uvd_v6_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_opregion.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dsi_vbt.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/uvd_v7_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dvo.o
  CC [M]  drivers/gpu/drm/i915/display/intel_gmbus.o
  CC [M]  drivers/gpu/drm/i915/display/intel_hdmi.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/g84.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fbdev.o
  CC [M]  drivers/gpu/drm/i915/display/intel_lspcon.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vce.o
  CC [M]  drivers/gpu/drm/i915/display/intel_lvds.o
  CC [M]  drivers/gpu/drm/i915/display/intel_panel.o
  CC [M]  drivers/gpu/drm/i915/display/intel_pps.o
  CC [M]  drivers/gpu/drm/xe/xe_guc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vce_v3_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vce_v4_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.o
  CC [M]  drivers/gpu/drm/i915/display/intel_qp_tables.o
  CC [M]  drivers/gpu/drm/i915/display/intel_sdvo.o
  CC [M]  drivers/gpu/drm/i915/display/intel_snps_phy.o
  CC [M]  drivers/gpu/drm/xe/xe_ring_ops.o
  CC [M]  drivers/gpu/drm/i915/display/intel_tv.o
  CC [M]  drivers/gpu/drm/i915/display/intel_vdsc.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/nouveau/nvkm/subdev/devinit/g98.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gt215.o
  CC [M]  drivers/gpu/drm/i915/display/intel_vrr.o
  CC [M]  drivers/gpu/drm/i915/display/vlv_dsi.o
  CC [M]  drivers/gpu/drm/i915/display/vlv_dsi_pll.o
  CC [M]  drivers/gpu/drm/i915/i915_perf.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_klvs_abi.h
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_tee.o
  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
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_huc.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_cmd.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vcn_v2_0.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_abi.h
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_irq.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_ctb_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_messages_abi.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vma_types.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/vlv_sideband_reg.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/vcn_v2_5.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/vcn_v3_0.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/vcn_v4_0.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_pm.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_session.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_reg_defs.h
  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/i915/i915_gpu_error.o
  CC [M]  drivers/gpu/drm/i915/gem/selftests/i915_gem_client_blt.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_active_types.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_utils.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/mcp89.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_config.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.o
  CC [M]  drivers/gpu/drm/i915/gem/selftests/igt_gem_utils.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gf100.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
  CC [M]  drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/soc/intel_gmch.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vgpu.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_fixed.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_runtime_pm.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_pm_types.h
  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/intel_clock_gating.h
  CC [M]  drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.o
  CC [M]  drivers/gpu/drm/i915/selftests/i915_random.o
  HDRTEST drivers/gpu/drm/xe/display/ext/i915_irq.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.o
  HDRTEST drivers/gpu/drm/xe/display/ext/intel_pch.h
  CC [M]  drivers/gpu/drm/i915/selftests/i915_selftest.o
  CC [M]  drivers/gpu/drm/i915/selftests/igt_atomic.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.o
  HDRTEST drivers/gpu/drm/xe/display/ext/intel_dram.h
  HDRTEST drivers/gpu/drm/xe/display/ext/intel_device_info.h
  CC [M]  drivers/gpu/drm/i915/selftests/igt_flush_test.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_reg_defs.h
  CC [M]  drivers/gpu/drm/i915/selftests/igt_live_test.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_guc_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm107.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_gt_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_gpu_commands.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_lrc_layout.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/regs/xe_engine_regs.h
  CC [M]  drivers/gpu/drm/i915/selftests/igt_spinner.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm200.o
  CC [M]  drivers/gpu/drm/i915/selftests/librapl.o
  CC [M]  drivers/gpu/drm/i915/i915_vgpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gv100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dkl_phy_regs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_crtc_state_dump.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/tu102.o
  HDRTEST drivers/gpu/drm/i915/display/hsw_ips.h
  HDRTEST drivers/gpu/drm/i915/display/g4x_hdmi.h
  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
  HDRTEST drivers/gpu/drm/i915/display/skl_watermark_regs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dmc.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.o
  HDRTEST drivers/gpu/drm/i915/display/intel_vga.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_test.h
  HDRTEST drivers/gpu/drm/i915/display/intel_audio.h
  HDRTEST drivers/gpu/drm/i915/display/intel_lvds.h
  HDRTEST drivers/gpu/drm/i915/display/intel_modeset_setup.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_pci_test.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/athub_v1_0.o
  HDRTEST drivers/gpu/drm/i915/display/intel_cdclk.h
  HDRTEST drivers/gpu/drm/i915/display/intel_display_limits.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_migrate_test.h
  HDRTEST drivers/gpu/drm/i915/display/intel_hotplug.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_dma_buf_test.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/athub_v2_0.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dkl_phy.h
  HDRTEST drivers/gpu/drm/i915/display/intel_atomic.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/ga100.o
  HDRTEST drivers/gpu/drm/xe/tests/xe_bo_test.h
  HDRTEST drivers/gpu/drm/i915/display/intel_display_driver.h
  HDRTEST drivers/gpu/drm/xe/xe_bb.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/athub_v2_1.o
  HDRTEST drivers/gpu/drm/xe/xe_bb_types.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dpll.h
  HDRTEST drivers/gpu/drm/xe/xe_bo.h
  HDRTEST drivers/gpu/drm/i915/display/vlv_dsi_pll_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/base.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dp_mst.h
  HDRTEST drivers/gpu/drm/xe/xe_bo_doc.h
  HDRTEST drivers/gpu/drm/xe/xe_bo_evict.h
  HDRTEST drivers/gpu/drm/i915/display/intel_fdi_regs.h
  HDRTEST drivers/gpu/drm/xe/xe_bo_types.h
  HDRTEST drivers/gpu/drm/xe/xe_debugfs.h
  HDRTEST drivers/gpu/drm/i915/display/g4x_dp.h
  HDRTEST drivers/gpu/drm/xe/xe_devcoredump.h
  HDRTEST drivers/gpu/drm/i915/display/intel_tc.h
  HDRTEST drivers/gpu/drm/xe/xe_devcoredump_types.h
  HDRTEST drivers/gpu/drm/i915/display/intel_frontbuffer.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/athub_v3_0.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dsi_vbt.h
  HDRTEST drivers/gpu/drm/i915/display/intel_psr.h
  HDRTEST drivers/gpu/drm/i915/display/intel_crt.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/user.o
  HDRTEST drivers/gpu/drm/xe/xe_device.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
  HDRTEST drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h
  HDRTEST drivers/gpu/drm/xe/xe_device_types.h
  HDRTEST drivers/gpu/drm/i915/display/intel_global_state.h
  HDRTEST drivers/gpu/drm/i915/display/intel_lpe_audio.h
  HDRTEST drivers/gpu/drm/i915/display/intel_drrs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/gp100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_rps.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/gp10b.o
  HDRTEST drivers/gpu/drm/xe/xe_display.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/smuio_v9_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/smuio_v11_0.o
  HDRTEST drivers/gpu/drm/xe/xe_dma_buf.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/smuio_v11_0_6.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/gv100.o
  HDRTEST drivers/gpu/drm/xe/xe_drv.h
  HDRTEST drivers/gpu/drm/xe/xe_engine.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/smuio_v13_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/tu102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/smuio_v13_0_6.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.o
  HDRTEST drivers/gpu/drm/xe/xe_engine_types.h
  HDRTEST drivers/gpu/drm/xe/xe_exec.h
  HDRTEST drivers/gpu/drm/i915/display/intel_fbdev.h
  HDRTEST drivers/gpu/drm/xe/xe_execlist.h
  HDRTEST drivers/gpu/drm/i915/display/intel_pps_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_reset.o
  HDRTEST drivers/gpu/drm/xe/xe_execlist_types.h
  HDRTEST drivers/gpu/drm/xe/xe_force_wake.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv04.o
  HDRTEST drivers/gpu/drm/i915/display/intel_hdmi.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv10.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mca_v3_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv1a.o
  HDRTEST drivers/gpu/drm/xe/xe_force_wake_types.h
  HDRTEST drivers/gpu/drm/xe/xe_ggtt.h
  HDRTEST drivers/gpu/drm/i915/display/intel_fdi.h
  HDRTEST drivers/gpu/drm/xe/xe_ggtt_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv20.o
  HDRTEST drivers/gpu/drm/xe/xe_gt.h
  HDRTEST drivers/gpu/drm/i915/display/intel_fb.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_clock.h
  HDRTEST drivers/gpu/drm/i915/display/intel_qp_tables.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_debugfs.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
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv25.o
  HDRTEST drivers/gpu/drm/xe/xe_gt_sysfs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv30.o
  HDRTEST drivers/gpu/drm/xe/xe_gt_sysfs_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_module.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/amd/amdgpu/../amdkfd/kfd_device.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dsb_regs.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_topology.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_chardev.o
  HDRTEST drivers/gpu/drm/xe/xe_gt_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv35.o
  HDRTEST drivers/gpu/drm/xe/xe_guc.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv36.o
  HDRTEST drivers/gpu/drm/xe/xe_guc_ads.h
  HDRTEST drivers/gpu/drm/i915/display/intel_vdsc.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_ads_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_ct.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_ct_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv40.o
  HDRTEST drivers/gpu/drm/xe/xe_guc_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_engine_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv41.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv44.o
  HDRTEST drivers/gpu/drm/xe/xe_guc_fwif.h
  HDRTEST drivers/gpu/drm/i915/display/intel_snps_phy.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_hwconfig.h
  HDRTEST drivers/gpu/drm/i915/display/intel_display_core.h
  HDRTEST drivers/gpu/drm/i915/display/vlv_dsi_pll.h
  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
../drivers/gpu/drm/i915/i915_gpu_error.c:2174: warning: Function parameter or member 'dump_flags' not described in 'i915_capture_error_state'
  HDRTEST drivers/gpu/drm/i915/display/intel_dvo_dev.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_types.h
  HDRTEST drivers/gpu/drm/i915/display/intel_hdcp.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv46.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_topology.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_pasid.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv47.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_doorbell.o
  HDRTEST drivers/gpu/drm/xe/xe_huc.h
  HDRTEST drivers/gpu/drm/i915/display/intel_sdvo_regs.h
  HDRTEST drivers/gpu/drm/xe/xe_huc_debugfs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_pch_refclk.h
  HDRTEST drivers/gpu/drm/i915/display/intel_display_trace.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv49.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv4e.o
  HDRTEST drivers/gpu/drm/xe/xe_huc_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_flat_memory.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_power.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_process.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_queue.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dp_aux_regs.h
  HDRTEST drivers/gpu/drm/i915/display/i9xx_plane.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_engine.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_cik.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.o
  HDRTEST drivers/gpu/drm/xe/xe_hw_engine_types.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_fence.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_vi.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dp_aux_backlight.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/g84.o
  HDRTEST drivers/gpu/drm/xe/xe_hw_fence_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_v9.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dpll_mgr.h
  HDRTEST drivers/gpu/drm/i915/display/vlv_dsi.h
  HDRTEST drivers/gpu/drm/xe/xe_irq.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_v10.o
  HDRTEST drivers/gpu/drm/xe/xe_lrc.h
  HDRTEST drivers/gpu/drm/i915/display/intel_plane_initial.h
  HDRTEST drivers/gpu/drm/xe/xe_lrc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_macros.h
  HDRTEST drivers/gpu/drm/xe/xe_map.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_v11.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gt215.o
  HDRTEST drivers/gpu/drm/xe/xe_migrate.h
  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
  HDRTEST drivers/gpu/drm/xe/xe_migrate_doc.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf108.o
  HDRTEST drivers/gpu/drm/xe/xe_mmio.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_kernel_queue.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_packet_manager.o
  HDRTEST drivers/gpu/drm/xe/xe_mocs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_display_device.h
  HDRTEST drivers/gpu/drm/i915/display/intel_fifo_underrun.h
  HDRTEST drivers/gpu/drm/xe/xe_module.h
  HDRTEST drivers/gpu/drm/xe/xe_pat.h
  HDRTEST drivers/gpu/drm/i915/display/intel_cursor.h
  HDRTEST drivers/gpu/drm/xe/xe_pci.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gk110.o
  HDRTEST drivers/gpu/drm/xe/xe_pci_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gk20a.o
  HDRTEST drivers/gpu/drm/i915/display/vlv_dsi_regs.h
  HDRTEST drivers/gpu/drm/xe/xe_pcode.h
  HDRTEST drivers/gpu/drm/xe/xe_pcode_api.h
  HDRTEST drivers/gpu/drm/i915/display/intel_cx0_phy.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gm107.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gm200.o
  HDRTEST drivers/gpu/drm/xe/xe_platform_types.h
  HDRTEST drivers/gpu/drm/i915/display/skl_scaler.h
  HDRTEST drivers/gpu/drm/i915/display/intel_hti.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_packet_manager_vi.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gm20b.o
  HDRTEST drivers/gpu/drm/i915/display/icl_dsi_regs.h
../drivers/gpu/drm/i915/i915_perf.c:5307: warning: Function parameter or member 'i915' not described in 'i915_perf_ioctl_version'
  HDRTEST drivers/gpu/drm/i915/display/intel_atomic_plane.h
  HDRTEST drivers/gpu/drm/i915/display/skl_watermark.h
  HDRTEST drivers/gpu/drm/i915/display/intel_fbc.h
  HDRTEST drivers/gpu/drm/i915/display/intel_display_reg_defs.h
  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/subdev/fb/gp100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gp102.o
  HDRTEST drivers/gpu/drm/xe/xe_pm.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gp10b.o
  HDRTEST drivers/gpu/drm/i915/display/intel_quirks.h
  HDRTEST drivers/gpu/drm/xe/xe_preempt_fence.h
  HDRTEST drivers/gpu/drm/xe/xe_preempt_fence_types.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dp_link_training.h
  HDRTEST drivers/gpu/drm/i915/display/intel_color.h
  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
  HDRTEST drivers/gpu/drm/i915/display/intel_crtc.h
  HDRTEST drivers/gpu/drm/xe/xe_pt.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager.o
  HDRTEST drivers/gpu/drm/xe/xe_pt_types.h
  HDRTEST drivers/gpu/drm/i915/display/intel_display_debugfs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gv100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_cik.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/tu102.o
  HDRTEST drivers/gpu/drm/i915/display/intel_modeset_verify.h
  HDRTEST drivers/gpu/drm/xe/xe_pt_walk.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_vi.o
  HDRTEST drivers/gpu/drm/xe/xe_query.h
  HDRTEST drivers/gpu/drm/i915/display/intel_display_power_well.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ga100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_v9.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_v10.o
  HDRTEST drivers/gpu/drm/xe/xe_reg_sr.h
  HDRTEST drivers/gpu/drm/xe/xe_reg_sr_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_v11.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ga102.o
  HDRTEST drivers/gpu/drm/xe/xe_reg_whitelist.h
  HDRTEST drivers/gpu/drm/i915/display/intel_psr_regs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_wm.h
  HDRTEST drivers/gpu/drm/xe/xe_res_cursor.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_interrupt.o
  HDRTEST drivers/gpu/drm/xe/xe_ring_ops.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_events.o
  HDRTEST drivers/gpu/drm/xe/xe_ring_ops_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/cik_event_interrupt.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv04.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/subdev/fb/ramnv10.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/amd/amdgpu/../amdkfd/kfd_int_process_v9.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_int_process_v11.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_smi_events.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv41.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv44.o
  HDRTEST drivers/gpu/drm/xe/xe_rtp.h
  HDRTEST drivers/gpu/drm/i915/display/intel_panel.h
  HDRTEST drivers/gpu/drm/xe/xe_rtp_types.h
  HDRTEST drivers/gpu/drm/xe/xe_sa.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv49.o
  HDRTEST drivers/gpu/drm/xe/xe_sa_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_crat.o
  HDRTEST drivers/gpu/drm/xe/xe_sched_job.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv4e.o
  HDRTEST drivers/gpu/drm/i915/display/intel_sprite.h
  HDRTEST drivers/gpu/drm/xe/xe_sched_job_types.h
  HDRTEST drivers/gpu/drm/xe/xe_step.h
  HDRTEST drivers/gpu/drm/xe/xe_step_types.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_wm_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv50.o
  HDRTEST drivers/gpu/drm/i915/display/intel_tv.h
  HDRTEST drivers/gpu/drm/xe/xe_tile.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.o
  HDRTEST drivers/gpu/drm/i915/display/intel_hti_regs.h
  HDRTEST drivers/gpu/drm/xe/xe_trace.h
  HDRTEST drivers/gpu/drm/i915/display/intel_vrr.h
  HDRTEST drivers/gpu/drm/i915/display/intel_load_detect.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_stolen_mgr.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_sys_mgr.h
  HDRTEST drivers/gpu/drm/i915/display/skl_universal_plane.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
  HDRTEST drivers/gpu/drm/i915/display/intel_mg_phy_regs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_bw.h
  HDRTEST drivers/gpu/drm/i915/display/intel_de.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
  HDRTEST drivers/gpu/drm/i915/display/intel_lvds_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/rammcp77.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_gmbus_regs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf108.o
  HDRTEST drivers/gpu/drm/xe/xe_tuning.h
  HDRTEST drivers/gpu/drm/xe/xe_uc.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_debugfs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dvo.h
  HDRTEST drivers/gpu/drm/i915/display/intel_sdvo.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_debugfs.o
  HDRTEST drivers/gpu/drm/xe/xe_uc_fw.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_fw_abi.h
  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/xe/xe_vm_doc.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dp_aux.h
  HDRTEST drivers/gpu/drm/xe/xe_vm_madvise.h
  HDRTEST drivers/gpu/drm/i915/display/intel_vdsc_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_migrate.o
  HDRTEST drivers/gpu/drm/i915/display/intel_combo_phy.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dvo_regs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_gmbus.h
  HDRTEST drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgm107.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgm200.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgp100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dsi.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.o
  HDRTEST drivers/gpu/drm/xe/xe_vm_types.h
  HDRTEST drivers/gpu/drm/xe/xe_wa.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramga102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dmc_regs.h
  HDRTEST drivers/gpu/drm/xe/xe_wait_user_fence.h
  HDRTEST drivers/gpu/drm/i915/display/intel_ddi.h
  HDRTEST drivers/gpu/drm/i915/display/intel_hotplug_irq.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/sddr2.o
  HDRTEST drivers/gpu/drm/xe/xe_wopcm.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/sddr3.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gddr3.o
  HDRTEST drivers/gpu/drm/xe/xe_wopcm_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gddr5.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fuse/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fuse/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gf100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_tv_regs.h
  LD [M]  drivers/gpu/drm/xe/xe.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gm107.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dsb.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.o
  HDRTEST drivers/gpu/drm/i915/display/intel_bios.h
  HDRTEST drivers/gpu/drm/i915/display/intel_pch_display.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10_3.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v11.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_types.h
  HDRTEST drivers/gpu/drm/i915/display/intel_backlight.h
  HDRTEST drivers/gpu/drm/i915/display/intel_vblank.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dp.h
  HDRTEST drivers/gpu/drm/i915/display/intel_backlight_regs.h
  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
  HDRTEST drivers/gpu/drm/i915/display/intel_ddi_buf_trans.h
  HDRTEST drivers/gpu/drm/i915/display/icl_dsi.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/nv10.o
  HDRTEST drivers/gpu/drm/i915/display/intel_lspcon.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dpio_phy.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/nv50.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
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_ttm.h
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_region.h
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_context_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/g94.o
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_lmem.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.o
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_mman.h
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_object_types.h
../drivers/gpu/drm/i915/gem/i915_gem_region.h:25: warning: Incorrect use of kernel-doc format:          * process_obj - Process the current object
../drivers/gpu/drm/i915/gem/i915_gem_region.h:35: warning: Function parameter or member 'process_obj' not described in 'i915_gem_apply_to_region_ops'
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_context.h
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_clflush.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/gf119.o
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_tiling.h
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_stolen.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_job.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/ga102.o
drivers/gpu/drm/xe/xe.o: warning: objtool: intel_set_cpu_fifo_underrun_reporting+0x385: unreachable instruction
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.h
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_create.h
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_ttm_move.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_acp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gsp/gv100.o
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_ioctls.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/nv04.o
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_domain.h
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_internal.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../acp/acp_hw.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/nv4e.o
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_dmabuf.h
  HDRTEST drivers/gpu/drm/i915/gem/selftests/mock_context.h
  HDRTEST drivers/gpu/drm/i915/gem/selftests/huge_gem_object.h
  HDRTEST drivers/gpu/drm/i915/gem/selftests/mock_gem_object.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ioc32.o
  HDRTEST drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.h
  HDRTEST drivers/gpu/drm/i915/gem/selftests/igt_gem_utils.h
  HDRTEST drivers/gpu/drm/i915/gem/i915_gem_userptr.h
  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/subdev/i2c/nv50.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/amd/amdgpu/amdgpu_acpi.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_timeline_types.h
  HDRTEST drivers/gpu/drm/i915/gt/selftest_engine.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_breadcrumbs.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_engine_heartbeat.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_context_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/arcturus_ppt.o
  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/nouveau/nvkm/subdev/i2c/g94.o
../drivers/gpu/drm/i915/gem/i915_gem_ttm.h:50: warning: Function parameter or member 'bo' not described in 'i915_ttm_to_gem'
  HDRTEST drivers/gpu/drm/i915/gt/selftest_rc6.h
  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/../pm/swsmu/smu11/navi10_ppt.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_region_lmem.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gf117.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_requests.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_ggtt_gmch.h
  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
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_print.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gf119.o
  HDRTEST drivers/gpu/drm/i915/gt/gen8_ppgtt.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/cyan_skillfish_ppt.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_mcr.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/smu_v11_0.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_timeline.h
  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/nouveau/nvkm/subdev/i2c/pad.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu12/renoir_ppt.o
  HDRTEST drivers/gpu/drm/i915/gt/gen6_engine_cs.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padnv04.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu12/smu_v12_0.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_workarounds_types.h
  HDRTEST drivers/gpu/drm/i915/gt/selftest_rps.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_sa_media.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_debugfs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/aldebaran_ppt.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/yellow_carp_ppt.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_clock_utils.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_rps_types.h
  HDRTEST drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_0_ppt.o
  HDRTEST drivers/gpu/drm/i915/gt/sysfs_engines.h
  HDRTEST drivers/gpu/drm/i915/gt/gen7_renderclear.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_4_ppt.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/nvkm/subdev/i2c/padnv4e.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_mocs.h
../drivers/gpu/drm/i915/gem/i915_gem_object.h:94: warning: Function parameter or member 'file' not described in 'i915_gem_object_lookup_rcu'
../drivers/gpu/drm/i915/gem/i915_gem_object.h:94: warning: Excess function parameter 'filp' description in 'i915_gem_object_lookup_rcu'
  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/nouveau/nvkm/subdev/i2c/padnv50.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_rc6.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_5_ppt.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_ring_types.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_workarounds.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_7_ppt.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_engine_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padg94.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_pm_irq.h
  HDRTEST drivers/gpu/drm/i915/gt/shmem_utils.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padgf119.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_engine.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_reset_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padgm200.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_reset.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.h
  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/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_6_ppt.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_uc.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/busnv50.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_print.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_fw.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/busgf119.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/amdgpu_smu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu_cmn.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bit.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/abi/guc_klvs_abi.h
  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/nouveau/nvkm/subdev/i2c/aux.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxg94.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/abi/guc_actions_abi.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/abi/guc_communication_ctb_abi.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgf119.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/abi/guc_messages_abi.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
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.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/i915/gt/uc/intel_huc.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/anx9805.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_huc_fw.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/tonga_smumgr.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_capture.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/gf100.o
../drivers/gpu/drm/i915/gt/intel_context.h:108: warning: Function parameter or member 'ce' not described in 'intel_context_lock_pinned'
../drivers/gpu/drm/i915/gt/intel_context.h:123: warning: Function parameter or member 'ce' not described in 'intel_context_is_pinned'
../drivers/gpu/drm/i915/gt/intel_context.h:142: warning: Function parameter or member 'ce' not described in 'intel_context_unlock_pinned'
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/instmem/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv04.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_submission.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_slpc_types.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_log.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv40.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:27: warning: Function parameter or member 'size' not described in '__guc_capture_bufstate'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:27: warning: Function parameter or member 'data' not described in '__guc_capture_bufstate'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:27: warning: Function parameter or member 'rd' not described in '__guc_capture_bufstate'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:27: warning: Function parameter or member 'wr' not described in '__guc_capture_bufstate'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:59: warning: Function parameter or member 'link' not described in '__guc_capture_parsed_output'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:59: warning: Function parameter or member 'is_partial' not described in '__guc_capture_parsed_output'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:59: warning: Function parameter or member 'eng_class' not described in '__guc_capture_parsed_output'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:59: warning: Function parameter or member 'eng_inst' not described in '__guc_capture_parsed_output'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:59: warning: Function parameter or member 'guc_id' not described in '__guc_capture_parsed_output'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:59: warning: Function parameter or member 'lrca' not described in '__guc_capture_parsed_output'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:59: warning: Function parameter or member 'reginfo' not described in '__guc_capture_parsed_output'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:62: warning: wrong kernel-doc identifier on line:
 * struct guc_debug_capture_list_header / struct guc_debug_capture_list
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:80: warning: wrong kernel-doc identifier on line:
 * struct __guc_mmio_reg_descr / struct __guc_mmio_reg_descr_group
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:105: warning: wrong kernel-doc identifier on line:
 * struct guc_state_capture_header_t / struct guc_state_capture_t /
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:163: warning: Function parameter or member 'is_valid' not described in '__guc_capture_ads_cache'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:163: warning: Function parameter or member 'ptr' not described in '__guc_capture_ads_cache'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:163: warning: Function parameter or member 'size' not described in '__guc_capture_ads_cache'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:163: warning: Function parameter or member 'status' not described in '__guc_capture_ads_cache'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:216: warning: Function parameter or member 'ads_null_cache' not described in 'intel_guc_state_capture'
../drivers/gpu/drm/i915/gt/uc/guc_capture_fwif.h:216: warning: Function parameter or member 'max_mmio_per_node' not described in 'intel_guc_state_capture'
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_ads.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/fiji_smumgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/base.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/polaris10_smumgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/iceland_smumgr.o
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_guc_rc.h
  HDRTEST drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_hwconfig.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu7_smumgr.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_llc.h
  HDRTEST drivers/gpu/drm/i915/gt/gen8_engine_cs.h
  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/nvkm/subdev/ltc/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/vega10_smumgr.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_context_param.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_gpu_commands.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm107.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm200.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_engine_user.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_irq.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
../drivers/gpu/drm/i915/gt/uc/intel_guc.h:274: warning: Function parameter or member 'dbgfs_node' not described in 'intel_guc'
  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/../pm/powerplay/smumgr/vega12_smumgr.o
  HDRTEST drivers/gpu/drm/i915/gt/selftest_llc.h
../drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h:491: warning: Function parameter or member 'marker' not described in 'guc_log_buffer_state'
../drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h:491: warning: Function parameter or member 'read_ptr' not described in 'guc_log_buffer_state'
../drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h:491: warning: Function parameter or member 'write_ptr' not described in 'guc_log_buffer_state'
../drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h:491: warning: Function parameter or member 'size' not described in 'guc_log_buffer_state'
../drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h:491: warning: Function parameter or member 'sampled_write_ptr' not described in 'guc_log_buffer_state'
../drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h:491: warning: Function parameter or member 'wrap_offset' not described in 'guc_log_buffer_state'
../drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h:491: warning: Function parameter or member 'flush_to_file' not described in 'guc_log_buffer_state'
../drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h:491: warning: Function parameter or member 'buffer_full_cnt' not described in 'guc_log_buffer_state'
../drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h:491: warning: Function parameter or member 'reserved' not described in 'guc_log_buffer_state'
../drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h:491: warning: Function parameter or member 'flags' not described in 'guc_log_buffer_state'
../drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h:491: warning: Function parameter or member 'version' not described in 'guc_log_buffer_state'
  HDRTEST drivers/gpu/drm/i915/gt/gen6_ppgtt.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/vegam_smumgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gp100.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_migrate_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu9_smumgr.o
  HDRTEST drivers/gpu/drm/i915/gt/selftests/mock_timeline.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gp102.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_lrc.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/vega20_smumgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gp10b.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_lrc_reg.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/ga102.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_migrate.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/base.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.h
  HDRTEST drivers/gpu/drm/i915/gt/mock_engine.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv04.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_engine_stats.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_gtt.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_buffer_pool_types.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_ring.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_types.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_renderstate.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/hwmgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/processpptables.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv11.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_sseu.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv17.o
  HDRTEST drivers/gpu/drm/i915/gt/intel_engine_types.h
  HDRTEST drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv44.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/hardwaremanager.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv50.o
  HDRTEST drivers/gpu/drm/i915/gt/gen2_engine_cs.h
  HDRTEST drivers/gpu/drm/i915/gvt/gvt.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/g84.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/g98.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu8_hwmgr.o
  HDRTEST drivers/gpu/drm/i915/gvt/trace.h
  HDRTEST drivers/gpu/drm/i915/gvt/debug.h
  HDRTEST drivers/gpu/drm/i915/gvt/edid.h
  HDRTEST drivers/gpu/drm/i915/gvt/page_track.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gt215.o
  HDRTEST drivers/gpu/drm/i915/gvt/mmio.h
  HDRTEST drivers/gpu/drm/i915/gvt/sched_policy.h
  HDRTEST drivers/gpu/drm/i915/gvt/fb_decoder.h
  HDRTEST drivers/gpu/drm/i915/gvt/cmd_parser.h
  HDRTEST drivers/gpu/drm/i915/gvt/dmabuf.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/pppcielanes.o
  HDRTEST drivers/gpu/drm/i915/gvt/mmio_context.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.o
  HDRTEST drivers/gpu/drm/i915/gvt/display.h
  HDRTEST drivers/gpu/drm/i915/gvt/gtt.h
  HDRTEST drivers/gpu/drm/i915/gvt/scheduler.h
  HDRTEST drivers/gpu/drm/i915/gvt/reg.h
  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/gvt/execlist.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_hwmgr.o
  HDRTEST drivers/gpu/drm/i915/gvt/interrupt.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_powertune.o
  HDRTEST drivers/gpu/drm/i915/i915_active.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_thermal.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gf100.o
../drivers/gpu/drm/i915/gt/intel_gtt.h:515: warning: Function parameter or member 'vm' not described in 'i915_vm_resv_put'
../drivers/gpu/drm/i915/gt/intel_gtt.h:515: warning: Excess function parameter 'resv' description in 'i915_vm_resv_put'
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_clockpowergating.o
  HDRTEST drivers/gpu/drm/i915/i915_active_types.h
  HDRTEST drivers/gpu/drm/i915/i915_cmd_parser.h
  HDRTEST drivers/gpu/drm/i915/i915_config.h
  HDRTEST drivers/gpu/drm/i915/i915_debugfs.h
  HDRTEST drivers/gpu/drm/i915/i915_debugfs_params.h
  HDRTEST drivers/gpu/drm/i915/i915_deps.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gk104.o
  HDRTEST drivers/gpu/drm/i915/i915_driver.h
  HDRTEST drivers/gpu/drm/i915/i915_drm_client.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gk20a.o
  HDRTEST drivers/gpu/drm/i915/i915_drv.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_processpptables.o
../drivers/gpu/drm/i915/gt/intel_engine_types.h:293: warning: Function parameter or member 'preempt_hang' not described in 'intel_engine_execlists'
  HDRTEST drivers/gpu/drm/i915/i915_file_private.h
  HDRTEST drivers/gpu/drm/i915/i915_fixed.h
  HDRTEST drivers/gpu/drm/i915/i915_gem.h
  HDRTEST drivers/gpu/drm/i915/i915_gem_evict.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_hwmgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gp100.o
  HDRTEST drivers/gpu/drm/i915/i915_gem_gtt.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_powertune.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_thermal.o
  HDRTEST drivers/gpu/drm/i915/i915_gem_ww.h
  HDRTEST drivers/gpu/drm/i915/i915_getparam.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu10_hwmgr.o
  HDRTEST drivers/gpu/drm/i915/i915_gpu_error.h
  HDRTEST drivers/gpu/drm/i915/i915_hwmon.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/pp_psm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_processpptables.o
  HDRTEST drivers/gpu/drm/i915/i915_ioc32.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gp10b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_hwmgr.o
  HDRTEST drivers/gpu/drm/i915/i915_ioctl.h
  HDRTEST drivers/gpu/drm/i915/i915_iosf_mbi.h
  HDRTEST drivers/gpu/drm/i915/i915_irq.h
  HDRTEST drivers/gpu/drm/i915/i915_memcpy.h
  HDRTEST drivers/gpu/drm/i915/i915_mitigations.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_thermal.o
  HDRTEST drivers/gpu/drm/i915/i915_mm.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/ga100.o
  HDRTEST drivers/gpu/drm/i915/i915_params.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/pp_overdriver.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu_helper.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv04.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_processpptables.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv41.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_hwmgr.o
  HDRTEST drivers/gpu/drm/i915/i915_pci.h
  HDRTEST drivers/gpu/drm/i915/i915_perf.h
  HDRTEST drivers/gpu/drm/i915/i915_perf_oa_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_powertune.o
  HDRTEST drivers/gpu/drm/i915/i915_perf_types.h
  HDRTEST drivers/gpu/drm/i915/i915_pmu.h
  HDRTEST drivers/gpu/drm/i915/i915_priolist_types.h
../drivers/gpu/drm/i915/i915_active.h:66: warning: Function parameter or member 'active' not described in '__i915_active_fence_init'
../drivers/gpu/drm/i915/i915_active.h:66: warning: Function parameter or member 'fence' not described in '__i915_active_fence_init'
../drivers/gpu/drm/i915/i915_active.h:66: warning: Function parameter or member 'fn' not described in '__i915_active_fence_init'
../drivers/gpu/drm/i915/i915_active.h:89: warning: Function parameter or member 'active' not described in 'i915_active_fence_set'
../drivers/gpu/drm/i915/i915_active.h:89: warning: Function parameter or member 'rq' not described in 'i915_active_fence_set'
../drivers/gpu/drm/i915/i915_active.h:102: warning: Function parameter or member 'active' not described in 'i915_active_fence_get'
../drivers/gpu/drm/i915/i915_active.h:122: warning: Function parameter or member 'active' not described in 'i915_active_fence_isset'
  HDRTEST drivers/gpu/drm/i915/i915_pvinfo.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv44.o
  HDRTEST drivers/gpu/drm/i915/i915_query.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_thermal.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv50.o
  HDRTEST drivers/gpu/drm/i915/i915_reg.h
  HDRTEST drivers/gpu/drm/i915/i915_reg_defs.h
  HDRTEST drivers/gpu/drm/i915/i915_request.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/common_baco.o
  HDRTEST drivers/gpu/drm/i915/i915_scatterlist.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/g84.o
  HDRTEST drivers/gpu/drm/i915/i915_scheduler.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/mcp77.o
  HDRTEST drivers/gpu/drm/i915/i915_scheduler_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gf100.o
  HDRTEST drivers/gpu/drm/i915/i915_selftest.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gk20a.o
  HDRTEST drivers/gpu/drm/i915/i915_suspend.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gm200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu9_baco.o
  HDRTEST drivers/gpu/drm/i915/i915_sw_fence.h
  HDRTEST drivers/gpu/drm/i915/i915_sw_fence_work.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/polaris_baco.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/tonga_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gm20b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/fiji_baco.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/ci_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gp100.o
../drivers/gpu/drm/i915/i915_pmu.h:21: warning: cannot understand function prototype: 'enum i915_pmu_tracked_events '
../drivers/gpu/drm/i915/i915_pmu.h:32: warning: cannot understand function prototype: 'enum '
../drivers/gpu/drm/i915/i915_pmu.h:41: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
 * How many different events we track in the global PMU mask.
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_baco.o
  HDRTEST drivers/gpu/drm/i915/i915_switcheroo.h
  HDRTEST drivers/gpu/drm/i915/i915_syncmap.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gp10b.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gv100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/amd_powerplay.o
  HDRTEST drivers/gpu/drm/i915/i915_sysfs.h
  HDRTEST drivers/gpu/drm/i915/i915_tasklet.h
  HDRTEST drivers/gpu/drm/i915/i915_trace.h
  HDRTEST drivers/gpu/drm/i915/i915_ttm_buddy_manager.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/tu102.o
../drivers/gpu/drm/i915/i915_scatterlist.h:160: warning: Incorrect use of kernel-doc format:          * release() - Free the memory of the struct i915_refct_sgt
../drivers/gpu/drm/i915/i915_scatterlist.h:164: warning: Function parameter or member 'release' not described in 'i915_refct_sgt_ops'
../drivers/gpu/drm/i915/i915_scatterlist.h:187: warning: Function parameter or member 'rsgt' not described in 'i915_refct_sgt_put'
../drivers/gpu/drm/i915/i915_scatterlist.h:198: warning: Function parameter or member 'rsgt' not described in 'i915_refct_sgt_get'
../drivers/gpu/drm/i915/i915_scatterlist.h:214: warning: Function parameter or member 'rsgt' not described in '__i915_refct_sgt_init'
  HDRTEST drivers/gpu/drm/i915/i915_user_extensions.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/mem.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/legacy_dpm.o
../drivers/gpu/drm/i915/i915_request.h:176: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
 * Request queue structure.
../drivers/gpu/drm/i915/i915_request.h:477: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
 * Returns true if seq1 is later than seq2.
  HDRTEST drivers/gpu/drm/i915/i915_utils.h
  HDRTEST drivers/gpu/drm/i915/i915_vgpu.h
  HDRTEST drivers/gpu/drm/i915/i915_vma.h
  HDRTEST drivers/gpu/drm/i915/i915_vma_resource.h
  HDRTEST drivers/gpu/drm/i915/i915_vma_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/kv_dpm.o
  HDRTEST drivers/gpu/drm/i915/intel_clock_gating.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/kv_smc.o
  HDRTEST drivers/gpu/drm/i915/intel_device_info.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/si_dpm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/si_smc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/memnv04.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/amdgpu_dpm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/amdgpu_pm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/memnv50.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/amdgpu_dpm_internal.o
  HDRTEST drivers/gpu/drm/i915/intel_gvt.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/memgf100.o
  HDRTEST drivers/gpu/drm/i915/intel_mchbar_regs.h
  HDRTEST drivers/gpu/drm/i915/intel_memory_region.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_plane.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_crtc.o
../drivers/gpu/drm/i915/i915_utils.h:284: warning: Function parameter or member 'OP' not described in '__wait_for'
../drivers/gpu/drm/i915/i915_utils.h:284: warning: Function parameter or member 'COND' not described in '__wait_for'
../drivers/gpu/drm/i915/i915_utils.h:284: warning: Function parameter or member 'US' not described in '__wait_for'
../drivers/gpu/drm/i915/i915_utils.h:284: warning: Function parameter or member 'Wmin' not described in '__wait_for'
../drivers/gpu/drm/i915/i915_utils.h:284: warning: Function parameter or member 'Wmax' not described in '__wait_for'
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_irq.o
  HDRTEST drivers/gpu/drm/i915/intel_pci_config.h
  HDRTEST drivers/gpu/drm/i915/intel_pcode.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_mst_types.o
  HDRTEST drivers/gpu/drm/i915/intel_region_ttm.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv04.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_color.o
  HDRTEST drivers/gpu/drm/i915/intel_runtime_pm.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv41.o
  HDRTEST drivers/gpu/drm/i915/intel_sbi.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv44.o
  HDRTEST drivers/gpu/drm/i915/intel_step.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_services.o
  HDRTEST drivers/gpu/drm/i915/intel_uncore.h
  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/subdev/mmu/vmmnv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmmcp77.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_psr.o
../drivers/gpu/drm/i915/i915_vma_resource.h:91: warning: Incorrect use of kernel-doc format:          * struct i915_vma_bindinfo - Information needed for async bind
../drivers/gpu/drm/i915/i915_vma_resource.h:129: warning: Function parameter or member 'wakeref' not described in 'i915_vma_resource'
../drivers/gpu/drm/i915/i915_vma_resource.h:129: warning: Function parameter or member 'bi' not described in 'i915_vma_resource'
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_hdcp.o
  HDRTEST drivers/gpu/drm/i915/intel_wakeref.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_crc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgk104.o
../drivers/gpu/drm/i915/i915_vma.h:145: warning: expecting prototype for i915_vma_offset(). Prototype was for i915_vma_size() instead
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp_tee.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_debugfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgk20a.o
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp_irq.h
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp_session.h
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_43.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgm200.o
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp_cmd.h
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/basics/conversion.o
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/basics/fixpt31_32.o
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_cmn.h
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgm20b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/basics/vector.o
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp_huc.h
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp_pm.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.o
  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
  HDRTEST drivers/gpu/drm/i915/pxp/intel_pxp_cmd_interface_42.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp10b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser_interface.o
  HDRTEST drivers/gpu/drm/i915/selftests/igt_live_test.h
  HDRTEST drivers/gpu/drm/i915/selftests/igt_atomic.h
  HDRTEST drivers/gpu/drm/i915/selftests/mock_gem_device.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser_helper.o
../drivers/gpu/drm/i915/pxp/intel_pxp_types.h:96: warning: Function parameter or member 'dev_link' not described in 'intel_pxp'
  HDRTEST drivers/gpu/drm/i915/selftests/mock_drm.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table.o
  HDRTEST drivers/gpu/drm/i915/selftests/igt_reset.h
  HDRTEST drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgv100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmtu102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table_helper.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/umem.o
  HDRTEST drivers/gpu/drm/i915/selftests/lib_sw_fence.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/ummu.o
  HDRTEST drivers/gpu/drm/i915/selftests/i915_perf_selftests.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/uvmm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mxm/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser_common.o
  HDRTEST drivers/gpu/drm/i915/selftests/mock_uncore.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mxm/mxms.o
  HDRTEST drivers/gpu/drm/i915/selftests/mock_gtt.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mxm/nv50.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table2.o
  HDRTEST drivers/gpu/drm/i915/selftests/i915_mock_selftests.h
  HDRTEST drivers/gpu/drm/i915/selftests/mock_request.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.o
  HDRTEST drivers/gpu/drm/i915/selftests/i915_random.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table_helper2.o
  HDRTEST drivers/gpu/drm/i915/selftests/igt_spinner.h
  HDRTEST drivers/gpu/drm/i915/selftests/librapl.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser2.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/pcie.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv04.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce60/command_table_helper_dce60.o
  HDRTEST drivers/gpu/drm/i915/selftests/mock_region.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce80/command_table_helper_dce80.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv40.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce110/command_table_helper_dce110.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce112/command_table_helper_dce112.o
  HDRTEST drivers/gpu/drm/i915/selftests/i915_live_selftests.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce112/command_table_helper2_dce112.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/dce_calcs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv46.o
  HDRTEST drivers/gpu/drm/i915/selftests/igt_mmap.h
  HDRTEST drivers/gpu/drm/i915/selftests/igt_flush_test.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/custom_float.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/bw_fixed.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_mode_lib.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv4c.o
  HDRTEST drivers/gpu/drm/i915/soc/intel_pch.h
  HDRTEST drivers/gpu/drm/i915/soc/intel_dram.h
  HDRTEST drivers/gpu/drm/i915/soc/intel_gmch.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_rq_dlg_helpers.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/g84.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/g92.o
  HDRTEST drivers/gpu/drm/i915/vlv_sideband.h
  HDRTEST drivers/gpu/drm/i915/vlv_sideband_reg.h
  HDRTEST drivers/gpu/drm/i915/vlv_suspend.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dml1_display_rq_dlg_calc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn10/dcn10_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/g94.o
  LD [M]  drivers/gpu/drm/i915/i915.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/gf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/gf106.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/gp100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/dcn20_fpu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_mode_vba.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
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_rq_dlg_calc_20v2.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/base.o
  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/nouveau/nvkm/subdev/pmu/gf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gf119.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20v2.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk110.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk208.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm107.o
  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/nouveau/nvkm/subdev/pmu/gm200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_rq_dlg_calc_30.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.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/amd/amdgpu/../display/dc/dml/dcn314/display_rq_dlg_calc_314.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_rq_dlg_calc_32.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_util_32.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/dcn31_fpu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/dcn32_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gf117.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn321/dcn321_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gk20a.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn301/dcn301_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gm200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn302/dcn302_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gp10b.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/fan.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/fannil.o
  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/nouveau/nvkm/subdev/therm/ic.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/nv40.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/g84.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gt215.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gf119.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn303/dcn303_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gm107.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gm200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn314/dcn314_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gp100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.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
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/dcn_calc_math.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv04.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/dcn_calc_auto.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv40.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv41.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce60/dce60_clk_mgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce100/dce_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/timer/gk20a.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/top/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/top/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce110/dce110_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/top/ga100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce112/dce112_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/vfn/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce120/dce120_clk_mgr.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/nouveau/nvkm/subdev/vfn/uvfn.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/vfn/gv100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn10/rv2_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/vfn/tu102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/vfn/ga100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn201/dcn201_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn21/rn_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/gpio.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/nv40.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf117.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn30/dcn30_clk_mgr.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
  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
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/xtensa.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/bsp/g84.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn301/dcn301_smu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn31/dcn31_smu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gt215.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gm107.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn31/dcn31_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gm200.o
  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/amd/amdgpu/../display/dc/clk_mgr/dcn315/dcn315_smu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gp100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn315/dcn315_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gp102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn316/dcn316_smu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn316/dcn316_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gv100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/tu102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn32/dcn32_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/ga100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn32/dcn32_clk_mgr_smu_msg.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_audio.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/ga102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_stream_encoder.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
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_link_encoder.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_hwseq.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_mem_input.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/device/pci.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/device/user.o
  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
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_clock_source.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_scl_filters.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_transform.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_opp.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/nouveau/nvkm/engine/disp/ior.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_dmcu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/vga.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_abm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_ipp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_aux.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/nv04.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c_hw.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/g84.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c_sw.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dmub_psr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dmub_abm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_panel_cntl.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dmub_hw_lock_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/g94.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/gt200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dmub_outbox.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/dr



^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Intel-xe] ✗ CI.Hooks: failure for drm/xe: Add engine scheduler control interface
  2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
                   ` (9 preceding siblings ...)
  2023-06-15 14:22 ` [Intel-xe] ✓ CI.Build: success for drm/xe: Add engine scheduler control interface Patchwork
@ 2023-06-15 14:22 ` Patchwork
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2023-06-15 14:22 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Add engine scheduler control interface
URL   : https://patchwork.freedesktop.org/series/119392/
State : failure

== Summary ==

run-parts: executing /workspace/ci/hooks/00-showenv
/workspace
+ pwd
+ ls -la
total 528
drwxrwxr-x 10 1003 1003   4096 Jun 15 14:22 .
drwxr-xr-x  1 root root   4096 Jun 15 14:22 ..
-rw-rw-r--  1 1003 1003 397078 Jun 15 14:21 build.log
-rw-rw-r--  1 1003 1003   4977 Jun 15 14:16 checkpatch.log
drwxrwxr-x  5 1003 1003   4096 Jun 15 14:15 ci
drwxrwxr-x 10 1003 1003   4096 Jun 15 14:15 docker
drwxrwxr-x  8 1003 1003   4096 Jun 15 14:15 .git
-rw-rw-r--  1 1003 1003    685 Jun 15 14:16 git_apply.log
drwxrwxr-x  3 1003 1003   4096 Jun 15 14:15 .github
-rw-rw-r--  1 1003 1003    233 Jun 15 14:15 .groovylintrc.json
-rw-rw-r--  1 1003 1003     78 Jun 15 14:22 hooks.log
drwxrwxr-x 31 1003 1003   4096 Jun 15 14:21 kernel
-rw-rw-r--  1 1003 1003  45488 Jun 15 14:16 kernel.mbox
-rw-rw-r--  1 1003 1003  25980 Jun 15 14:18 kunit.log
drwxrwxr-x 40 1003 1003   4096 Jun 15 14:15 pipelines
-rw-rw-r--  1 1003 1003    793 Jun 15 14:15 README.adoc
drwxrwxr-x  3 1003 1003   4096 Jun 15 14:15 scripts
drwxrwxr-x  2 1003 1003   4096 Jun 15 14:15 .vscode
+ uname -a
Linux d55a39662963 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
e966556bb drm/xe: Add min/max cap for engine scheduler properties
7b81a3a37 drm/xe: Add sysfs for preempt reset timeout
c2685e795 drm/xe: Add timeslice duration engine property to sysfs
bd6f915bc drm/xe: Add job timeout engine property to sysfs
3fb11cb89 drm/xe: Add sysfs for default engine scheduler properties
3938e4f64 drm/xe: Add sysfs entries for engines under its GT
6d2981d42 drm/xe/mtl: Add some initial MTL workarounds
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
+ RESTORE_DISPLAY_CONFIG=1
+ trap cleanup EXIT
+ ./scripts/config --file /workspace/kernel/build64/.config --disable CONFIG_DRM_XE_DISPLAY
++ nproc
+ make -j48 O=/workspace/kernel/build64 modules_prepare
make[1]: Entering directory '/workspace/kernel/build64'
  SYNC    include/config/auto.conf.cmd
  GEN     Makefile
  GEN     Makefile
  UPD     include/generated/compile.h
  UPD     include/config/kernel.release
  UPD     include/generated/utsrelease.h
  DESCEND objtool
  CALL    ../scripts/checksyscalls.sh
  HOSTCC  /workspace/kernel/build64/tools/objtool/fixdep.o
  HOSTLD  /workspace/kernel/build64/tools/objtool/fixdep-in.o
  LINK    /workspace/kernel/build64/tools/objtool/fixdep
  INSTALL libsubcmd_headers
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/exec-cmd.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/help.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/pager.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/parse-options.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/run-command.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/sigchain.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/subcmd-config.o
  LD      /workspace/kernel/build64/tools/objtool/libsubcmd/libsubcmd-in.o
  AR      /workspace/kernel/build64/tools/objtool/libsubcmd/libsubcmd.a
  CC      /workspace/kernel/build64/tools/objtool/weak.o
  CC      /workspace/kernel/build64/tools/objtool/check.o
  CC      /workspace/kernel/build64/tools/objtool/special.o
  CC      /workspace/kernel/build64/tools/objtool/builtin-check.o
  CC      /workspace/kernel/build64/tools/objtool/elf.o
  CC      /workspace/kernel/build64/tools/objtool/objtool.o
  CC      /workspace/kernel/build64/tools/objtool/orc_gen.o
  CC      /workspace/kernel/build64/tools/objtool/orc_dump.o
  CC      /workspace/kernel/build64/tools/objtool/libstring.o
  CC      /workspace/kernel/build64/tools/objtool/libctype.o
  CC      /workspace/kernel/build64/tools/objtool/str_error_r.o
  CC      /workspace/kernel/build64/tools/objtool/librbtree.o
  CC      /workspace/kernel/build64/tools/objtool/arch/x86/special.o
  CC      /workspace/kernel/build64/tools/objtool/arch/x86/decode.o
  LD      /workspace/kernel/build64/tools/objtool/arch/x86/objtool-in.o
  LD      /workspace/kernel/build64/tools/objtool/objtool-in.o
  LINK    /workspace/kernel/build64/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64'
++ nproc
+ make -j48 O=/workspace/kernel/build64 M=drivers/gpu/drm/xe W=1
make[1]: Entering directory '/workspace/kernel/build64'
  CC [M]  drivers/gpu/drm/xe/xe_bb.o
  CC [M]  drivers/gpu/drm/xe/xe_bo.o
  CC [M]  drivers/gpu/drm/xe/xe_bo_evict.o
  CC [M]  drivers/gpu/drm/xe/xe_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_devcoredump.o
  CC [M]  drivers/gpu/drm/xe/xe_device.o
  CC [M]  drivers/gpu/drm/xe/xe_dma_buf.o
  CC [M]  drivers/gpu/drm/xe/xe_engine.o
  CC [M]  drivers/gpu/drm/xe/xe_exec.o
  CC [M]  drivers/gpu/drm/xe/xe_execlist.o
  CC [M]  drivers/gpu/drm/xe/xe_force_wake.o
  CC [M]  drivers/gpu/drm/xe/xe_ggtt.o
  CC [M]  drivers/gpu/drm/xe/xe_gt.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_clock.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_mcr.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_pagefault.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  CC [M]  drivers/gpu/drm/xe/xe_guc_ads.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ct.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_hwconfig.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_log.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_pc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_submit.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_huc.o
  CC [M]  drivers/gpu/drm/xe/xe_huc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_irq.o
  CC [M]  drivers/gpu/drm/xe/xe_lrc.o
  CC [M]  drivers/gpu/drm/xe/xe_migrate.o
  CC [M]  drivers/gpu/drm/xe/xe_mmio.o
  CC [M]  drivers/gpu/drm/xe/xe_mocs.o
  CC [M]  drivers/gpu/drm/xe/xe_module.o
  CC [M]  drivers/gpu/drm/xe/xe_pat.o
  CC [M]  drivers/gpu/drm/xe/xe_pci.o
  CC [M]  drivers/gpu/drm/xe/xe_pcode.o
  CC [M]  drivers/gpu/drm/xe/xe_pm.o
  CC [M]  drivers/gpu/drm/xe/xe_preempt_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_pt.o
  CC [M]  drivers/gpu/drm/xe/xe_pt_walk.o
  CC [M]  drivers/gpu/drm/xe/xe_query.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_sr.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_whitelist.o
  CC [M]  drivers/gpu/drm/xe/xe_rtp.o
  CC [M]  drivers/gpu/drm/xe/xe_sa.o
../drivers/gpu/drm/xe/xe_gt_sysfs.c:510:5: error: no previous prototype for ‘xe_add_engine_defaults’ [-Werror=missing-prototypes]
  510 | int xe_add_engine_defaults(struct kobject *parent)
      |     ^~~~~~~~~~~~~~~~~~~~~~
  CC [M]  drivers/gpu/drm/xe/xe_sched_job.o
  CC [M]  drivers/gpu/drm/xe/xe_step.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_trace.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/xe/xe_ttm_vram_mgr.o
cc1: all warnings being treated as errors
  CC [M]  drivers/gpu/drm/xe/xe_tuning.o
  CC [M]  drivers/gpu/drm/xe/xe_uc.o
make[2]: *** [../scripts/Makefile.build:252: drivers/gpu/drm/xe/xe_gt_sysfs.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [/workspace/kernel/Makefile:2025: drivers/gpu/drm/xe] Error 2
make[1]: Leaving directory '/workspace/kernel/build64'
make: *** [Makefile:226: __sub-make] Error 2
+ cleanup
+ '[' 1 -eq 1 ']'
+ ./scripts/config --file /workspace/kernel/build64/.config --enable CONFIG_DRM_XE_DISPLAY
run-parts: /workspace/ci/hooks/10-build-W1 exited with return code 2



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Intel-xe] [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler properties
  2023-06-15 14:19 ` [Intel-xe] [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler properties Tejas Upadhyay
@ 2023-06-16 20:39   ` Niranjana Vishwanathapura
  2023-06-19  5:01     ` Upadhyay, Tejas
  0 siblings, 1 reply; 23+ messages in thread
From: Niranjana Vishwanathapura @ 2023-06-16 20:39 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

On Thu, Jun 15, 2023 at 07:49:29PM +0530, Tejas Upadhyay wrote:
>For each HW engine under GT we are adding defaults sysfs
>entry to list all engine scheduler properties and its
>default values. So that it will be easier for user to
>fetch default values of these properties anytime to go
>back to default.
>
>For example,
>DUT# cat /sys/class/drm/card1/device/gt0/engines/bcs/.defaults/
>job_timeout_ms         preempt_timeout_us     timeslice_duration_us
>
>where,
>@job_timeout_ms: The time after which a job is removed from the scheduler.
>@preempt_timeout_us: How long to wait (in microseconds) for a preemption
>                     event to occur when submitting a new context.
>@timeslice_duration_us: Each context is scheduled for execution for the
>                        timeslice duration, before switching to the next
>                        context.
>
>Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
>---
> drivers/gpu/drm/xe/xe_engine.c          |  4 +-
> drivers/gpu/drm/xe/xe_gt_sysfs.c        | 94 +++++++++++++++++++++++--
> drivers/gpu/drm/xe/xe_gt_sysfs.h        |  5 ++
> drivers/gpu/drm/xe/xe_gt_sysfs_types.h  | 13 ++++
> drivers/gpu/drm/xe/xe_guc_submit.c      |  5 +-
> drivers/gpu/drm/xe/xe_hw_engine.c       |  5 ++
> drivers/gpu/drm/xe/xe_hw_engine_types.h | 11 +++
> 7 files changed, 128 insertions(+), 9 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_engine.c b/drivers/gpu/drm/xe/xe_engine.c
>index b3036c4a8ec3..e72423bc398a 100644
>--- a/drivers/gpu/drm/xe/xe_engine.c
>+++ b/drivers/gpu/drm/xe/xe_engine.c
>@@ -53,8 +53,8 @@ static struct xe_engine *__xe_engine_create(struct xe_device *xe,
> 	INIT_LIST_HEAD(&e->multi_gt_link);
>
> 	/* FIXME: Wire up to configurable default value */
>-	e->sched_props.timeslice_us = 1 * 1000;
>-	e->sched_props.preempt_timeout_us = 640 * 1000;
>+	e->sched_props.timeslice_us = hwe->sched_props.timeslice_us;
>+	e->sched_props.preempt_timeout_us = hwe->sched_props.preempt_timeout_us;
>
> 	if (xe_engine_is_parallel(e)) {
> 		e->parallel.composite_fence_ctx = dma_fence_context_alloc(1);
>diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
>index 7528cc723699..72809078bd83 100644
>--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
>+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
>@@ -32,22 +32,92 @@ static struct kobj_type kobj_xe_engine_type = {
> 	.sysfs_ops = &kobj_sysfs_ops
> };
>
>-static struct kobject *
>-kobj_xe_engine(struct kobject *parent, char *name)
>+static ssize_t job_timeout_default(struct kobject *kobj,
>+				 struct kobj_attribute *attr, char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>+
>+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_ms);
>+}
>+
>+static struct kobj_attribute job_timeout_def =
>+__ATTR(job_timeout_ms, 0444, job_timeout_default, NULL);
>+
>+static ssize_t timeslice_default(struct kobject *kobj,
>+				 struct kobj_attribute *attr, char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>+
>+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_us);
>+}
>+
>+static struct kobj_attribute timeslice_duration_def =
>+__ATTR(timeslice_duration_us, 0444, timeslice_default, NULL);
>+
>+static ssize_t preempt_timeout_default(struct kobject *kobj,
>+				       struct kobj_attribute *attr,
>+				       char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>+
>+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_us);
>+}
>+
>+static struct kobj_attribute preempt_timeout_def =
>+__ATTR(preempt_timeout_us, 0444, preempt_timeout_default, NULL);
>+
>+int xe_add_engine_defaults(struct kobject *parent)
> {
> 	struct kobject *kobj;
>+	int err = 0;
>
> 	kobj = kzalloc(sizeof(*kobj), GFP_KERNEL);
> 	if (!kobj)
>-		return NULL;
>+		return -ENOMEM;
>
> 	kobject_init(kobj, &kobj_xe_engine_type);
>-	if (kobject_add(kobj, parent, "%s", name)) {
>+
>+	err = kobject_add(kobj, parent, "%s", ".defaults");
>+	if (err)
>+		goto err_object;
>+
>+	err = sysfs_create_file(kobj, &job_timeout_def.attr);
>+	if (err)
>+		goto err_object;
>+
>+	err = sysfs_create_file(kobj, &timeslice_duration_def.attr);
>+	if (err)
>+		goto err_object;
>+
>+	err = sysfs_create_file(kobj, &preempt_timeout_def.attr);
>+	if (err)
>+		goto err_object;
>+
>+	if (0) {
>+err_object:
> 		kobject_put(kobj);
>+		return err;
>+	}
>+
>+	return err;
>+}
>+
>+static struct kobj_hwe *
>+kobj_xe_engine(struct kobject *parent, char *name)
>+{
>+	struct kobj_hwe *khwe;
>+
>+	khwe = kzalloc(sizeof(*khwe), GFP_KERNEL);
>+	if (!khwe)
>+		return NULL;
>+
>+	kobject_init(&khwe->base, &kobj_xe_engine_type);
>+	if (kobject_add(&khwe->base, parent, "%s", name)) {
>+		kobject_put(&khwe->base);
> 		return NULL;
> 	}
>
>-	return kobj;
>+	return khwe;
> }
>
> int xe_gt_sysfs_engines(struct xe_gt *gt)
>@@ -72,7 +142,7 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
>
> 	for_each_hw_engine(hwe, gt, id) {
> 		char name[MAX_ENGINE_NAME_LEN];
>-		struct kobject *khwe;
>+		struct kobj_hwe *khwe;
>
> 		if ((hwe->class == XE_ENGINE_CLASS_OTHER) ||
> 		    (hwe->class == XE_ENGINE_CLASS_MAX))
>@@ -109,6 +179,18 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
> 			kobject_put(kobj);
> 			return -EINVAL;
> 		}
>+
>+		khwe->hwe = hwe;
>+		hwe->sysfs_hwe = &khwe->base;
>+
>+		err = xe_add_engine_defaults(&khwe->base);
>+		if (err) {
>+			kobject_put(kobj);
>+			drm_warn(&gt_to_xe(gt)->drm,
>+				 "Warning: adding .defaults to engines failed!, err: %d\n",
>+				 err);
>+			return err;
>+		}
> 	}
>
> 	return err;
>diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h b/drivers/gpu/drm/xe/xe_gt_sysfs.h
>index a531aebd10d6..a539cf031c7d 100644
>--- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
>+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
>@@ -19,4 +19,9 @@ kobj_to_gt(struct kobject *kobj)
> 	return container_of(kobj, struct kobj_gt, base)->gt;
> }
>
>+static inline struct xe_hw_engine *kobj_to_hwe(struct kobject *kobj)
>+{
>+	return container_of(kobj, struct kobj_hwe, base)->hwe;
>+}
>+
> #endif /* _XE_GT_SYSFS_H_ */
>diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs_types.h b/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
>index d3bc6b83360f..d0a5eae1bbb4 100644
>--- a/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
>+++ b/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
>@@ -23,4 +23,17 @@ struct kobj_gt {
> 	struct xe_gt *gt;
> };
>
>+/**
>+ * struct kobj_hwe - A hwe's kobject struct that connects the kobject and the
>+ * hwe.
>+ *
>+ * When dealing with multiple hwe, this struct helps to understand which hwe
>+ * needs to be addressed on a given sysfs call.
>+ */
>+struct kobj_hwe {
>+	/** @base: The actual kobject */
>+	struct kobject base;
>+	/** @hwe: A pointer to the hwe itself */
>+	struct xe_hw_engine *hwe;
>+};

More on this below.

> #endif	/* _XE_GT_SYSFS_TYPES_H_ */
>diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
>index b209e4c2a3a9..bc0ffcf9fb1c 100644
>--- a/drivers/gpu/drm/xe/xe_guc_submit.c
>+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
>@@ -1063,13 +1063,16 @@ static int guc_engine_init(struct xe_engine *e)
> 	ge->engine = e;
> 	init_waitqueue_head(&ge->suspend_wait);
>
>-	timeout = xe_vm_no_dma_fences(e->vm) ? MAX_SCHEDULE_TIMEOUT : HZ * 5;
>+	timeout = xe_vm_no_dma_fences(e->vm) ? MAX_SCHEDULE_TIMEOUT :
>+		  e->hwe->sched_props.job_timeout_ms;
> 	err = drm_sched_init(&ge->sched, &drm_sched_ops,
> 			     e->lrc[0].ring.size / MAX_JOB_SIZE_BYTES,
> 			     64, timeout, guc_to_gt(guc)->ordered_wq, NULL,
> 			     e->name, gt_to_xe(e->gt)->drm.dev);
> 	if (err)
> 		goto err_free;
>+	/* Record timeout value, in order to show current set timeout */
>+	e->hwe->sched_props.job_timeout_ms = timeout;

But, timeout can be MAX_SCHEDULE_TIMEOUT which can be more than the max defined
in the patch#6 right?

>
> 	sched = &ge->sched;
> 	err = drm_sched_entity_init(&ge->entity, DRM_SCHED_PRIORITY_NORMAL,
>diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c
>index 68cd793cdfb5..8314429cfa90 100644
>--- a/drivers/gpu/drm/xe/xe_hw_engine.c
>+++ b/drivers/gpu/drm/xe/xe_hw_engine.c
>@@ -361,6 +361,11 @@ static void hw_engine_init_early(struct xe_gt *gt, struct xe_hw_engine *hwe,
> 	hwe->name = info->name;
> 	hwe->fence_irq = &gt->fence_irq[info->class];
> 	hwe->engine_id = id;
>+	/* FIXME: Wire up to configurable default value */
>+	hwe->sched_props.job_timeout_ms = HZ * 5;
>+	hwe->sched_props.timeslice_us = 1 * 1000;
>+	hwe->sched_props.preempt_timeout_us = 640 * 1000;
>+	hwe->defaults = hwe->sched_props; /* Record default props */
>
> 	xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt));
> 	xe_wa_process_engine(hwe);
>diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h b/drivers/gpu/drm/xe/xe_hw_engine_types.h
>index d788e67312b9..406a1e33a05e 100644
>--- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
>+++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
>@@ -107,6 +107,17 @@ struct xe_hw_engine {
> 	void (*irq_handler)(struct xe_hw_engine *, u16);
> 	/** @engine_id: id  for this hw engine */
> 	enum xe_hw_engine_id engine_id;
>+	/** @sched_props: scheduling properties */
>+	struct {
>+		/** @set_job_timeout: Set job timeout in ms for engine */
>+		u32 job_timeout_ms;
>+		/** @timeslice_us: timeslice period in micro-seconds */
>+		u32 timeslice_us;
>+		/** @preempt_timeout_us: preemption timeout in micro-seconds */
>+		u32 preempt_timeout_us;
>+	} sched_props, defaults;
>+	/** @sysfs: sysfs kobject pointing to this hwe */
>+	struct kobject *sysfs_hwe;

Whwere is this sysfs_hwe used?
I wonder whether we really need 'struct kobj_hwe'.
Why can't we just have kobject defined here in the xe_hw_engine sturcture
instead of having a pointer to one. That way we don't need to kzalloc it.

Niranjana

> };
>
> /**
>-- 
>2.25.1
>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties
  2023-06-15 14:19 ` [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties Tejas Upadhyay
@ 2023-06-16 20:56   ` Niranjana Vishwanathapura
  2023-06-19  4:43     ` Upadhyay, Tejas
  2023-06-22 12:56     ` Upadhyay, Tejas
  2023-06-22  9:40   ` Ghimiray, Himal Prasad
  1 sibling, 2 replies; 23+ messages in thread
From: Niranjana Vishwanathapura @ 2023-06-16 20:56 UTC (permalink / raw)
  To: Tejas Upadhyay; +Cc: intel-xe

On Thu, Jun 15, 2023 at 07:49:33PM +0530, Tejas Upadhyay wrote:
>Add sysfs entries for the min, max, and defaults for each of
>engine scheduler controls for every hardware engine class.
>
>Non-elevated user IOCTLs to set these controls must be within
>the min-max ranges of the sysfs entries, elevated user can set
>these controls to any value.
>
>Introducing compile time CONFIG min-max values which restricts elevated
>user to be in compile time min-max range if at all sysfs min/max
>are violated.
>
>Sysfs entries examples are,
>DUT# cat /sys/class/drm/cardX/device/gtN/engines/ccs/.defaults/
>job_timeout_max         job_timeout_ms          preempt_timeout_min     timeslice_duration_max  timeslice_duration_us
>job_timeout_min         preempt_timeout_max     preempt_timeout_us      timeslice_duration_min
>
>DUT# cat /sys/class/drm/card1/device/gt1/engines/ccs/
>.defaults/              job_timeout_min         preempt_timeout_max     preempt_timeout_us      timeslice_duration_min
>job_timeout_max         job_timeout_ms          preempt_timeout_min     timeslice_duration_max  timeslice_duration_us
>
>Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
>---
> drivers/gpu/drm/xe/Kconfig              |   7 +
> drivers/gpu/drm/xe/Kconfig.profile      |  39 +++
> drivers/gpu/drm/xe/xe_engine.c          |  40 ++-
> drivers/gpu/drm/xe/xe_gt_sysfs.c        | 373 ++++++++++++++++++++++--
> drivers/gpu/drm/xe/xe_gt_sysfs.h        |   1 +
> drivers/gpu/drm/xe/xe_hw_engine.c       |   6 +
> drivers/gpu/drm/xe/xe_hw_engine.h       |  31 ++
> drivers/gpu/drm/xe/xe_hw_engine_types.h |  12 +
> 8 files changed, 485 insertions(+), 24 deletions(-)
> create mode 100644 drivers/gpu/drm/xe/Kconfig.profile
>
>diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
>index d44794f99338..964c440a1135 100644
>--- a/drivers/gpu/drm/xe/Kconfig
>+++ b/drivers/gpu/drm/xe/Kconfig
>@@ -83,3 +83,10 @@ depends on DRM_XE
> depends on EXPERT
> source "drivers/gpu/drm/xe/Kconfig.debug"
> endmenu
>+
>+menu "drm/xe Profile Guided Optimisation"
>+        visible if EXPERT
>+        depends on DRM_XE
>+        source "drivers/gpu/drm/xe/Kconfig.profile"
>+endmenu
>+
>diff --git a/drivers/gpu/drm/xe/Kconfig.profile b/drivers/gpu/drm/xe/Kconfig.profile
>new file mode 100644
>index 000000000000..cffd73e44ca9
>--- /dev/null
>+++ b/drivers/gpu/drm/xe/Kconfig.profile
>@@ -0,0 +1,39 @@
>+config DRM_XE_JOB_TIMEOUT_MAX
>+	int "Default max job timeout (ms)"
>+	default 10000 # milliseconds
>+	help
>+	  Configures the default max job timeout after which job will
>+	  be forcefully taken away from scheduler.
>+config DRM_XE_JOB_TIMEOUT_MIN
>+	int "Default max job timeout (ms)"
>+	default 1 # milliseconds
>+	help
>+	  Configures the default min job timeout after which job will
>+	  be forcefully taken away from scheduler.
>+config DRM_XE_TIMESLICE_MAX
>+	int "Default max timeslice duration (us)"
>+	default 10000000 # microseconds
>+	help
>+	  Configures the default max timeslice duration between multiple
>+	  contexts by guc scheduling.
>+config DRM_XE_TIMESLICE_MIN
>+	int "Default min timeslice duration (us)"
>+	default 1 # microseconds
>+	help
>+	  Configures the default min timeslice duration between multiple
>+	  contexts by guc scheduling.
>+config DRM_XE_PREEMPT_TIMEOUT_MAX
>+	int "Default max  preempt timeout (us)"
>+	default 10000000 # microseconds
>+	help
>+	  Configures the default max preempt timeout after which context
>+	  will be forcefully taken away and higher priority context will
>+	  run.
>+config DRM_XE_PREEMPT_TIMEOUT_MIN
>+	int "Default min  preempt timeout (us)"
>+	default 1 # microseconds

I think a value of 0 means preempt timeout is diabled. GuC allows it.
So, probably we should allow minimum of 0?

>+	help
>+	  Configures the default min preempt timeout after which context
>+	  will be forcefully taken away and higher priority context will
>+	  run.
>+
>diff --git a/drivers/gpu/drm/xe/xe_engine.c b/drivers/gpu/drm/xe/xe_engine.c
>index e72423bc398a..c368ffd5e461 100644
>--- a/drivers/gpu/drm/xe/xe_engine.c
>+++ b/drivers/gpu/drm/xe/xe_engine.c
>@@ -13,6 +13,7 @@
>
> #include "xe_device.h"
> #include "xe_gt.h"
>+#include "xe_gt_sysfs.h"
> #include "xe_hw_fence.h"
> #include "xe_lrc.h"
> #include "xe_macros.h"
>@@ -191,9 +192,20 @@ static int engine_set_priority(struct xe_device *xe, struct xe_engine *e,
> static int engine_set_timeslice(struct xe_device *xe, struct xe_engine *e,
> 				u64 value, bool create)
> {
>-	if (!capable(CAP_SYS_NICE))
>+	if (!capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(value,
>+				     e->hwe->sched_props.timeslice_min,
>+				     e->hwe->sched_props.timeslice_max))
> 		return -EPERM;
>
>+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) && defined(CONFIG_DRM_XE_TIMESLICE_MAX)
>+	if (capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(value,
>+				     CONFIG_DRM_XE_TIMESLICE_MIN,
>+				     CONFIG_DRM_XE_TIMESLICE_MAX))
>+		return -EPERM;
>+#endif

Do we really need this second boundary check given the in the first check above,
the e->hwe->sched_props.timeslice_min/max values are already subjected to these
boundaries?
Applies for other below parameters also.

>+
> 	return e->ops->set_timeslice(e, value);
> }
>
>@@ -201,8 +213,19 @@ static int engine_set_preemption_timeout(struct xe_device *xe,
> 					 struct xe_engine *e, u64 value,
> 					 bool create)
> {
>-	if (!capable(CAP_SYS_NICE))
>+	if (!capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(value,
>+				     e->hwe->sched_props.preempt_timeout_min,
>+				     e->hwe->sched_props.preempt_timeout_max))
>+		return -EPERM;
>+
>+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
>+	if (capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(value,
>+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
>+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> 		return -EPERM;
>+#endif
>
> 	return e->ops->set_preempt_timeout(e, value);
> }
>@@ -269,8 +292,19 @@ static int engine_set_job_timeout(struct xe_device *xe, struct xe_engine *e,
> 	if (XE_IOCTL_ERR(xe, !create))
> 		return -EINVAL;
>
>-	if (!capable(CAP_SYS_NICE))
>+	if (!capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(value,
>+				     e->hwe->sched_props.job_timeout_min,
>+				     e->hwe->sched_props.job_timeout_max))
>+		return -EPERM;
>+
>+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
>+	if (capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(value,
>+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
>+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> 		return -EPERM;
>+#endif
>
> 	return e->ops->set_job_timeout(e, value);
> }
>diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
>index f88f8f7dfc7b..415b60845eef 100644
>--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
>+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
>@@ -32,6 +32,11 @@ static struct kobj_type kobj_xe_engine_type = {
> 	.sysfs_ops = &kobj_sysfs_ops
> };
>
>+bool engine_timeout_in_range(u64 timeout, u64 min, u64 max)
>+{
>+	return timeout >= min && timeout <= max;
>+}
>+
> static ssize_t preempt_timeout_store(struct kobject *kobj,
> 				     struct kobj_attribute *attr,
> 				     const char *buf, size_t count)
>@@ -44,9 +49,20 @@ static ssize_t preempt_timeout_store(struct kobject *kobj,
> 	if (err)
> 		return err;
>
>-	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
>+	if (!capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(timeout,
>+				     hwe->sched_props.preempt_timeout_min,
>+				     hwe->sched_props.preempt_timeout_max))
> 		return -EINVAL;
>
>+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
>+	if (capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(timeout,
>+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
>+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
>+		return -EINVAL;
>+#endif
>+
> 	WRITE_ONCE(hwe->sched_props.preempt_timeout_us, timeout);
>
> 	return count;
>@@ -63,6 +79,78 @@ static ssize_t preempt_timeout_show(struct kobject *kobj,
> static struct kobj_attribute preempt_timeout_attr =
> __ATTR(preempt_timeout_us, 0644, preempt_timeout_show, preempt_timeout_store);
>
>+static ssize_t preempt_timeout_max_store(struct kobject *kobj,
>+					 struct kobj_attribute *attr,
>+					 const char *buf, size_t count)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+	u32 timeout;
>+	int err;
>+
>+	err = kstrtou32(buf, 0, &timeout);
>+	if (err)
>+		return err;
>+
>+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
>+	if (!engine_timeout_in_range(timeout,
>+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
>+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
>+		return -EINVAL;
>+#endif
>+
>+	WRITE_ONCE(hwe->sched_props.preempt_timeout_max, timeout);
>+
>+	return count;
>+}
>+
>+static ssize_t preempt_timeout_max_show(struct kobject *kobj,
>+					struct kobj_attribute *attr, char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+
>+	return sprintf(buf, "%u\n", hwe->sched_props.preempt_timeout_max);
>+}
>+
>+static struct kobj_attribute preempt_timeout_max_attr =
>+	__ATTR(preempt_timeout_max, 0644, preempt_timeout_max_show,
>+	       preempt_timeout_max_store);
>+
>+static ssize_t preempt_timeout_min_store(struct kobject *kobj,
>+					 struct kobj_attribute *attr,
>+					 const char *buf, size_t count)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+	u32 timeout;
>+	int err;
>+
>+	err = kstrtou32(buf, 0, &timeout);
>+	if (err)
>+		return err;
>+
>+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
>+	if (!engine_timeout_in_range(timeout,
>+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
>+				     CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
>+		return -EINVAL;
>+#endif
>+
>+	WRITE_ONCE(hwe->sched_props.preempt_timeout_min, timeout);
>+
>+	return count;
>+}
>+
>+static ssize_t preempt_timeout_min_show(struct kobject *kobj,
>+					struct kobj_attribute *attr, char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+
>+	return sprintf(buf, "%u\n", hwe->sched_props.preempt_timeout_min);
>+}
>+
>+static struct kobj_attribute preempt_timeout_min_attr =
>+	__ATTR(preempt_timeout_min, 0644, preempt_timeout_min_show,
>+	       preempt_timeout_min_store);
>+
> static ssize_t timeslice_duration_store(struct kobject *kobj,
> 		struct kobj_attribute *attr,
> 		const char *buf, size_t count)
>@@ -75,8 +163,19 @@ static ssize_t timeslice_duration_store(struct kobject *kobj,
> 	if (err)
> 		return err;
>
>-	if (duration > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
>+	if (!capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(duration,
>+				     hwe->sched_props.timeslice_min,
>+				     hwe->sched_props.timeslice_max))
>+		return -EINVAL;
>+
>+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) && defined(CONFIG_DRM_XE_TIMESLICE_MAX)
>+	if (capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(duration,
>+				     CONFIG_DRM_XE_TIMESLICE_MIN,
>+				     CONFIG_DRM_XE_TIMESLICE_MAX))
> 		return -EINVAL;
>+#endif
>
> 	WRITE_ONCE(hwe->sched_props.timeslice_us, duration);
>
>@@ -95,6 +194,79 @@ static struct kobj_attribute timeslice_duration_attr =
> __ATTR(timeslice_duration_us, 0644, timeslice_duration_show,
> timeslice_duration_store);
>
>+static ssize_t timeslice_duration_max_store(struct kobject *kobj,
>+					    struct kobj_attribute *attr,
>+					    const char *buf, size_t count)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+	u32 duration;
>+	int err;
>+
>+	err = kstrtou32(buf, 0, &duration);
>+	if (err)
>+		return err;
>+
>+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) && defined(CONFIG_DRM_XE_TIMESLICE_MAX)
>+	if (!engine_timeout_in_range(duration,
>+				     CONFIG_DRM_XE_TIMESLICE_MIN,
>+				     CONFIG_DRM_XE_TIMESLICE_MAX))
>+		return -EINVAL;
>+#endif
>+
>+	WRITE_ONCE(hwe->sched_props.timeslice_max, duration);
>+
>+	return count;
>+}
>+
>+static ssize_t timeslice_duration_max_show(struct kobject *kobj,
>+					   struct kobj_attribute *attr,
>+					   char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+
>+	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_max);
>+}
>+
>+static struct kobj_attribute timeslice_duration_max_attr =
>+	__ATTR(timeslice_duration_max, 0644, timeslice_duration_max_show,
>+	       timeslice_duration_max_store);
>+
>+static ssize_t timeslice_duration_min_store(struct kobject *kobj,
>+					    struct kobj_attribute *attr,
>+					    const char *buf, size_t count)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+	u32 duration;
>+	int err;
>+
>+	err = kstrtou32(buf, 0, &duration);
>+	if (err)
>+		return err;
>+
>+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) && defined(CONFIG_DRM_XE_TIMESLICE_MAX)
>+	if (!engine_timeout_in_range(duration,
>+				     CONFIG_DRM_XE_TIMESLICE_MIN,
>+				     CONFIG_DRM_XE_TIMESLICE_MAX))
>+		return -EINVAL;
>+#endif
>+
>+	WRITE_ONCE(hwe->sched_props.timeslice_min, duration);
>+
>+	return count;
>+}
>+
>+static ssize_t timeslice_duration_min_show(struct kobject *kobj,
>+					   struct kobj_attribute *attr, char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+
>+	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_min);
>+}
>+
>+static struct kobj_attribute timeslice_duration_min_attr =
>+	__ATTR(timeslice_duration_min, 0644, timeslice_duration_min_show,
>+	       timeslice_duration_min_store);
>+
> static ssize_t job_timeout_store(struct kobject *kobj,
> 		struct kobj_attribute *attr,
> 		const char *buf, size_t count)
>@@ -107,8 +279,19 @@ static ssize_t job_timeout_store(struct kobject *kobj,
> 	if (err)
> 		return err;
>
>-	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
>+	if (!capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(timeout,
>+				     hwe->sched_props.job_timeout_min,
>+				     hwe->sched_props.job_timeout_max))
>+		return -EINVAL;
>+
>+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
>+	if (capable(CAP_SYS_NICE) &&
>+	    !engine_timeout_in_range(timeout,
>+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
>+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> 		return -EINVAL;
>+#endif
>
> 	WRITE_ONCE(hwe->sched_props.job_timeout_ms, timeout);
>
>@@ -126,6 +309,89 @@ static ssize_t job_timeout_show(struct kobject *kobj,
> static struct kobj_attribute job_timeout_attr =
> __ATTR(job_timeout_ms, 0644, job_timeout_show, job_timeout_store);
>
>+static ssize_t job_timeout_max_store(struct kobject *kobj,
>+				     struct kobj_attribute *attr,
>+				     const char *buf, size_t count)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+	u32 timeout;
>+	int err;
>+
>+	err = kstrtou32(buf, 0, &timeout);
>+	if (err)
>+		return err;
>+
>+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
>+	if (!engine_timeout_in_range(timeout,
>+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
>+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
>+		return -EINVAL;
>+#endif
>+
>+	WRITE_ONCE(hwe->sched_props.job_timeout_max, timeout);
>+
>+	return count;
>+}
>+
>+static ssize_t job_timeout_max_show(struct kobject *kobj,
>+				    struct kobj_attribute *attr, char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+
>+	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_max);
>+}
>+
>+static struct kobj_attribute job_timeout_max_attr =
>+__ATTR(job_timeout_max, 0644, job_timeout_max_show, job_timeout_max_store);
>+
>+static ssize_t job_timeout_min_store(struct kobject *kobj,
>+				     struct kobj_attribute *attr,
>+				     const char *buf, size_t count)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+	u32 timeout;
>+	int err;
>+
>+	err = kstrtou32(buf, 0, &timeout);
>+	if (err)
>+		return err;
>+
>+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) && defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
>+	if (!engine_timeout_in_range(timeout,
>+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
>+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
>+		return -EINVAL;
>+#endif
>+
>+	WRITE_ONCE(hwe->sched_props.job_timeout_min, timeout);
>+
>+	return count;
>+}
>+
>+static ssize_t job_timeout_min_show(struct kobject *kobj,
>+				    struct kobj_attribute *attr, char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
>+
>+	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_min);
>+}
>+
>+static struct kobj_attribute job_timeout_min_attr =
>+__ATTR(job_timeout_min, 0644, job_timeout_min_show, job_timeout_min_store);
>+
>+static const struct attribute *files[] = {
>+	&job_timeout_attr.attr,
>+	&job_timeout_min_attr.attr,
>+	&job_timeout_max_attr.attr,
>+	&timeslice_duration_attr.attr,
>+	&timeslice_duration_min_attr.attr,
>+	&timeslice_duration_max_attr.attr,
>+	&preempt_timeout_attr.attr,
>+	&preempt_timeout_min_attr.attr,
>+	&preempt_timeout_max_attr.attr,
>+	NULL
>+};
>+
> static ssize_t job_timeout_default(struct kobject *kobj,
> 				 struct kobj_attribute *attr, char *buf)
> {
>@@ -137,6 +403,28 @@ static ssize_t job_timeout_default(struct kobject *kobj,
> static struct kobj_attribute job_timeout_def =
> __ATTR(job_timeout_ms, 0444, job_timeout_default, NULL);
>
>+static ssize_t job_timeout_min_default(struct kobject *kobj,
>+				       struct kobj_attribute *attr, char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>+
>+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_min);
>+}
>+
>+static struct kobj_attribute job_timeout_min_def =
>+__ATTR(job_timeout_min, 0444, job_timeout_min_default, NULL);
>+
>+static ssize_t job_timeout_max_default(struct kobject *kobj,
>+				       struct kobj_attribute *attr, char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>+
>+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_max);
>+}
>+
>+static struct kobj_attribute job_timeout_max_def =
>+__ATTR(job_timeout_max, 0444, job_timeout_max_default, NULL);
>+
> static ssize_t timeslice_default(struct kobject *kobj,
> 				 struct kobj_attribute *attr, char *buf)
> {
>@@ -148,6 +436,28 @@ static ssize_t timeslice_default(struct kobject *kobj,
> static struct kobj_attribute timeslice_duration_def =
> __ATTR(timeslice_duration_us, 0444, timeslice_default, NULL);
>
>+static ssize_t timeslice_min_default(struct kobject *kobj,
>+				     struct kobj_attribute *attr, char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>+
>+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_min);
>+}
>+
>+static struct kobj_attribute timeslice_duration_min_def =
>+__ATTR(timeslice_duration_min, 0444, timeslice_min_default, NULL);
>+
>+static ssize_t timeslice_max_default(struct kobject *kobj,
>+				     struct kobj_attribute *attr, char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>+
>+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_max);
>+}
>+
>+static struct kobj_attribute timeslice_duration_max_def =
>+__ATTR(timeslice_duration_max, 0444, timeslice_max_default, NULL);
>+
> static ssize_t preempt_timeout_default(struct kobject *kobj,
> 				       struct kobj_attribute *attr,
> 				       char *buf)
>@@ -160,6 +470,43 @@ static ssize_t preempt_timeout_default(struct kobject *kobj,
> static struct kobj_attribute preempt_timeout_def =
> __ATTR(preempt_timeout_us, 0444, preempt_timeout_default, NULL);
>
>+static ssize_t preempt_timeout_min_default(struct kobject *kobj,
>+					   struct kobj_attribute *attr,
>+					   char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>+
>+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_min);
>+}
>+
>+static struct kobj_attribute preempt_timeout_min_def =
>+__ATTR(preempt_timeout_min, 0444, preempt_timeout_min_default, NULL);
>+
>+static ssize_t preempt_timeout_max_default(struct kobject *kobj,
>+					   struct kobj_attribute *attr,
>+					   char *buf)
>+{
>+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>+
>+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_max);
>+}
>+
>+static struct kobj_attribute preempt_timeout_max_def =
>+__ATTR(preempt_timeout_max, 0444, preempt_timeout_max_default, NULL);
>+
>+static const struct attribute *defaults[] = {
>+	&job_timeout_def.attr,
>+	&job_timeout_min_def.attr,
>+	&job_timeout_max_def.attr,
>+	&timeslice_duration_def.attr,
>+	&timeslice_duration_min_def.attr,
>+	&timeslice_duration_max_def.attr,
>+	&preempt_timeout_def.attr,
>+	&preempt_timeout_min_def.attr,
>+	&preempt_timeout_max_def.attr,
>+	NULL
>+};
>+
> int xe_add_engine_defaults(struct kobject *parent)
> {
> 	struct kobject *kobj;
>@@ -175,15 +522,7 @@ int xe_add_engine_defaults(struct kobject *parent)
> 	if (err)
> 		goto err_object;
>
>-	err = sysfs_create_file(kobj, &job_timeout_def.attr);
>-	if (err)
>-		goto err_object;
>-
>-	err = sysfs_create_file(kobj, &timeslice_duration_def.attr);
>-	if (err)
>-		goto err_object;
>-
>-	err = sysfs_create_file(kobj, &preempt_timeout_def.attr);
>+	err = sysfs_create_files(kobj, defaults);

Why add code in previous patch and remove it here when we can
can have previous patch use sysfs_create_files() to begin with?
Applies to other below parameters also.

> 	if (err)
> 		goto err_object;
>
>@@ -286,15 +625,7 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
> 			return err;
> 		}
>
>-		err = sysfs_create_file(&khwe->base, &job_timeout_attr.attr);
>-		if (err)
>-			goto err_object;
>-
>-		err = sysfs_create_file(&khwe->base, &timeslice_duration_attr.attr);
>-		if (err)
>-			goto err_object;
>-
>-		err = sysfs_create_file(&khwe->base, &preempt_timeout_attr.attr);
>+		err = sysfs_create_files(&khwe->base, files);
> 		if (err)
> 			goto err_object;
> 	}
>diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h b/drivers/gpu/drm/xe/xe_gt_sysfs.h
>index a539cf031c7d..a7ac7b9a9768 100644
>--- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
>+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
>@@ -12,6 +12,7 @@
>
> int xe_gt_sysfs_init(struct xe_gt *gt);
> int xe_gt_sysfs_engines(struct xe_gt *gt);
>+bool engine_timeout_in_range(u64 timeout, u64 min, u64 max);
>
> static inline struct xe_gt *
> kobj_to_gt(struct kobject *kobj)
>diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c
>index 8314429cfa90..e52324eb1efa 100644
>--- a/drivers/gpu/drm/xe/xe_hw_engine.c
>+++ b/drivers/gpu/drm/xe/xe_hw_engine.c
>@@ -363,8 +363,14 @@ static void hw_engine_init_early(struct xe_gt *gt, struct xe_hw_engine *hwe,
> 	hwe->engine_id = id;
> 	/* FIXME: Wire up to configurable default value */
> 	hwe->sched_props.job_timeout_ms = HZ * 5;
>+	hwe->sched_props.job_timeout_min = XE_HW_ENGINE_JOB_TIMEOUT_MIN;
>+	hwe->sched_props.job_timeout_max = XE_HW_ENGINE_JOB_TIMEOUT_MAX;
> 	hwe->sched_props.timeslice_us = 1 * 1000;
>+	hwe->sched_props.timeslice_min = XE_HW_ENGINE_TIMESLICE_MIN;
>+	hwe->sched_props.timeslice_max = XE_HW_ENGINE_TIMESLICE_MAX;
> 	hwe->sched_props.preempt_timeout_us = 640 * 1000;
>+	hwe->sched_props.preempt_timeout_min = XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN;
>+	hwe->sched_props.preempt_timeout_max = XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX;

Can we define a config option for preempt_timeout_us also?
My below patch series tries to do it.
https://patchwork.freedesktop.org/series/119165/

May be you can include it here in your patch series or I can push a patch
series after this series gets merged. Thoughts?

> 	hwe->defaults = hwe->sched_props; /* Record default props */
>
> 	xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt));
>diff --git a/drivers/gpu/drm/xe/xe_hw_engine.h b/drivers/gpu/drm/xe/xe_hw_engine.h
>index 7eca9d53c7b1..3d37d6d44261 100644
>--- a/drivers/gpu/drm/xe/xe_hw_engine.h
>+++ b/drivers/gpu/drm/xe/xe_hw_engine.h
>@@ -10,6 +10,37 @@
>
> struct drm_printer;
>
>+#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN
>+#define XE_HW_ENGINE_JOB_TIMEOUT_MIN CONFIG_DRM_XE_JOB_TIMEOUT_MIN
>+#else
>+#define XE_HW_ENGINE_JOB_TIMEOUT_MIN 1
>+#endif
>+#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MAX
>+#define XE_HW_ENGINE_JOB_TIMEOUT_MAX CONFIG_DRM_XE_JOB_TIMEOUT_MAX
>+#else
>+#define XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000)
>+#endif
>+#ifdef CONFIG_DRM_XE_TIMESLICE_MIN
>+#define XE_HW_ENGINE_TIMESLICE_MIN CONFIG_DRM_XE_TIMESLICE_MIN
>+#else
>+#define XE_HW_ENGINE_TIMESLICE_MIN 1
>+#endif
>+#ifdef CONFIG_DRM_XE_TIMESLICE_MAX
>+#define XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX
>+#else
>+#define XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000)
>+#endif
>+#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
>+#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
>+#else
>+#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 1

As mentioned above, a minimum should be 0?

Niranjana

>+#endif
>+#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
>+#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
>+#else
>+#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 * 1000)
>+#endif
>+
> int xe_hw_engines_init_early(struct xe_gt *gt);
> int xe_hw_engines_init(struct xe_gt *gt);
> void xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec);
>diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h b/drivers/gpu/drm/xe/xe_hw_engine_types.h
>index 406a1e33a05e..8582193b4947 100644
>--- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
>+++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
>@@ -111,10 +111,22 @@ struct xe_hw_engine {
> 	struct {
> 		/** @set_job_timeout: Set job timeout in ms for engine */
> 		u32 job_timeout_ms;
>+		/** @job_timeout_min: Min job timeout in ms for engine */
>+		u32 job_timeout_min;
>+		/** @job_timeout_max: Max job timeout in ms for engine */
>+		u32 job_timeout_max;
> 		/** @timeslice_us: timeslice period in micro-seconds */
> 		u32 timeslice_us;
>+		/** @timeslice_min: min timeslice period in micro-seconds */
>+		u32 timeslice_min;
>+		/** @timeslice_max: max timeslice period in micro-seconds */
>+		u32 timeslice_max;
> 		/** @preempt_timeout_us: preemption timeout in micro-seconds */
> 		u32 preempt_timeout_us;
>+		/** @preempt_timeout_min: min preemption timeout in micro-seconds */
>+		u32 preempt_timeout_min;
>+		/** @preempt_timeout_max: max preemption timeout in micro-seconds */
>+		u32 preempt_timeout_max;
> 	} sched_props, defaults;
> 	/** @sysfs: sysfs kobject pointing to this hwe */
> 	struct kobject *sysfs_hwe;
>-- 
>2.25.1
>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties
  2023-06-16 20:56   ` Niranjana Vishwanathapura
@ 2023-06-19  4:43     ` Upadhyay, Tejas
  2023-06-21  3:55       ` Niranjana Vishwanathapura
  2023-06-22 12:56     ` Upadhyay, Tejas
  1 sibling, 1 reply; 23+ messages in thread
From: Upadhyay, Tejas @ 2023-06-19  4:43 UTC (permalink / raw)
  To: Vishwanathapura, Niranjana, Brost, Matthew; +Cc: intel-xe



> -----Original Message-----
> From: Vishwanathapura, Niranjana <niranjana.vishwanathapura@intel.com>
> Sent: Saturday, June 17, 2023 2:26 AM
> To: Upadhyay, Tejas <tejas.upadhyay@intel.com>
> Cc: intel-xe@lists.freedesktop.org; Iddamsetty, Aravind
> <aravind.iddamsetty@intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray@intel.com>; Brost, Matthew
> <matthew.brost@intel.com>
> Subject: Re: [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler
> properties
> 
> On Thu, Jun 15, 2023 at 07:49:33PM +0530, Tejas Upadhyay wrote:
> >Add sysfs entries for the min, max, and defaults for each of engine
> >scheduler controls for every hardware engine class.
> >
> >Non-elevated user IOCTLs to set these controls must be within the
> >min-max ranges of the sysfs entries, elevated user can set these
> >controls to any value.
> >
> >Introducing compile time CONFIG min-max values which restricts elevated
> >user to be in compile time min-max range if at all sysfs min/max are
> >violated.
> >
> >Sysfs entries examples are,
> >DUT# cat /sys/class/drm/cardX/device/gtN/engines/ccs/.defaults/
> >job_timeout_max         job_timeout_ms          preempt_timeout_min
> timeslice_duration_max  timeslice_duration_us
> >job_timeout_min         preempt_timeout_max     preempt_timeout_us
> timeslice_duration_min
> >
> >DUT# cat /sys/class/drm/card1/device/gt1/engines/ccs/
> >.defaults/              job_timeout_min         preempt_timeout_max
> preempt_timeout_us      timeslice_duration_min
> >job_timeout_max         job_timeout_ms          preempt_timeout_min
> timeslice_duration_max  timeslice_duration_us
> >
> >Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
> >---
> > drivers/gpu/drm/xe/Kconfig              |   7 +
> > drivers/gpu/drm/xe/Kconfig.profile      |  39 +++
> > drivers/gpu/drm/xe/xe_engine.c          |  40 ++-
> > drivers/gpu/drm/xe/xe_gt_sysfs.c        | 373 ++++++++++++++++++++++--
> > drivers/gpu/drm/xe/xe_gt_sysfs.h        |   1 +
> > drivers/gpu/drm/xe/xe_hw_engine.c       |   6 +
> > drivers/gpu/drm/xe/xe_hw_engine.h       |  31 ++
> > drivers/gpu/drm/xe/xe_hw_engine_types.h |  12 +
> > 8 files changed, 485 insertions(+), 24 deletions(-)  create mode
> >100644 drivers/gpu/drm/xe/Kconfig.profile
> >
> >diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
> >index d44794f99338..964c440a1135 100644
> >--- a/drivers/gpu/drm/xe/Kconfig
> >+++ b/drivers/gpu/drm/xe/Kconfig
> >@@ -83,3 +83,10 @@ depends on DRM_XE
> > depends on EXPERT
> > source "drivers/gpu/drm/xe/Kconfig.debug"
> > endmenu
> >+
> >+menu "drm/xe Profile Guided Optimisation"
> >+        visible if EXPERT
> >+        depends on DRM_XE
> >+        source "drivers/gpu/drm/xe/Kconfig.profile"
> >+endmenu
> >+
> >diff --git a/drivers/gpu/drm/xe/Kconfig.profile
> >b/drivers/gpu/drm/xe/Kconfig.profile
> >new file mode 100644
> >index 000000000000..cffd73e44ca9
> >--- /dev/null
> >+++ b/drivers/gpu/drm/xe/Kconfig.profile
> >@@ -0,0 +1,39 @@
> >+config DRM_XE_JOB_TIMEOUT_MAX
> >+	int "Default max job timeout (ms)"
> >+	default 10000 # milliseconds
> >+	help
> >+	  Configures the default max job timeout after which job will
> >+	  be forcefully taken away from scheduler.
> >+config DRM_XE_JOB_TIMEOUT_MIN
> >+	int "Default max job timeout (ms)"
> >+	default 1 # milliseconds
> >+	help
> >+	  Configures the default min job timeout after which job will
> >+	  be forcefully taken away from scheduler.
> >+config DRM_XE_TIMESLICE_MAX
> >+	int "Default max timeslice duration (us)"
> >+	default 10000000 # microseconds
> >+	help
> >+	  Configures the default max timeslice duration between multiple
> >+	  contexts by guc scheduling.
> >+config DRM_XE_TIMESLICE_MIN
> >+	int "Default min timeslice duration (us)"
> >+	default 1 # microseconds
> >+	help
> >+	  Configures the default min timeslice duration between multiple
> >+	  contexts by guc scheduling.
> >+config DRM_XE_PREEMPT_TIMEOUT_MAX
> >+	int "Default max  preempt timeout (us)"
> >+	default 10000000 # microseconds
> >+	help
> >+	  Configures the default max preempt timeout after which context
> >+	  will be forcefully taken away and higher priority context will
> >+	  run.
> >+config DRM_XE_PREEMPT_TIMEOUT_MIN
> >+	int "Default min  preempt timeout (us)"
> >+	default 1 # microseconds
> 
> I think a value of 0 means preempt timeout is diabled. GuC allows it.
> So, probably we should allow minimum of 0?

I had discussion with @Brost, Matthew , and suggestion was to use 1 as default min. But yes by default we can keep this disabled with having 0. I will let other comment.

> 
> >+	help
> >+	  Configures the default min preempt timeout after which context
> >+	  will be forcefully taken away and higher priority context will
> >+	  run.
> >+
> >diff --git a/drivers/gpu/drm/xe/xe_engine.c
> >b/drivers/gpu/drm/xe/xe_engine.c index e72423bc398a..c368ffd5e461
> >100644
> >--- a/drivers/gpu/drm/xe/xe_engine.c
> >+++ b/drivers/gpu/drm/xe/xe_engine.c
> >@@ -13,6 +13,7 @@
> >
> > #include "xe_device.h"
> > #include "xe_gt.h"
> >+#include "xe_gt_sysfs.h"
> > #include "xe_hw_fence.h"
> > #include "xe_lrc.h"
> > #include "xe_macros.h"
> >@@ -191,9 +192,20 @@ static int engine_set_priority(struct xe_device
> >*xe, struct xe_engine *e,  static int engine_set_timeslice(struct xe_device
> *xe, struct xe_engine *e,
> > 				u64 value, bool create)
> > {
> >-	if (!capable(CAP_SYS_NICE))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+				     e->hwe->sched_props.timeslice_min,
> >+				     e->hwe->sched_props.timeslice_max))
> > 		return -EPERM;
> >
> >+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+				     CONFIG_DRM_XE_TIMESLICE_MIN,
> >+				     CONFIG_DRM_XE_TIMESLICE_MAX))
> >+		return -EPERM;
> >+#endif
> 
> Do we really need this second boundary check given the in the first check
> above, the e->hwe->sched_props.timeslice_min/max values are already
> subjected to these boundaries?
> Applies for other below parameters also.

Yes we need because,
If elevated user exceeds configured sysfs min/max (he is allowed to do so), which number could be below or above compile config min max.
As user can try any value through IOCTL/sysfs being elevated user, we need to check with second check.

> 
> >+
> > 	return e->ops->set_timeslice(e, value); }
> >
> >@@ -201,8 +213,19 @@ static int engine_set_preemption_timeout(struct
> xe_device *xe,
> > 					 struct xe_engine *e, u64 value,
> > 					 bool create)
> > {
> >-	if (!capable(CAP_SYS_NICE))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+				     e->hwe-
> >sched_props.preempt_timeout_min,
> >+				     e->hwe-
> >sched_props.preempt_timeout_max))
> >+		return -EPERM;
> >+
> >+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> > 		return -EPERM;
> >+#endif
> >
> > 	return e->ops->set_preempt_timeout(e, value);  } @@ -269,8
> +292,19 @@
> >static int engine_set_job_timeout(struct xe_device *xe, struct xe_engine *e,
> > 	if (XE_IOCTL_ERR(xe, !create))
> > 		return -EINVAL;
> >
> >-	if (!capable(CAP_SYS_NICE))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+				     e->hwe->sched_props.job_timeout_min,
> >+				     e->hwe->sched_props.job_timeout_max))
> >+		return -EPERM;
> >+
> >+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> > 		return -EPERM;
> >+#endif
> >
> > 	return e->ops->set_job_timeout(e, value);  } diff --git
> >a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >index f88f8f7dfc7b..415b60845eef 100644
> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >@@ -32,6 +32,11 @@ static struct kobj_type kobj_xe_engine_type = {
> > 	.sysfs_ops = &kobj_sysfs_ops
> > };
> >
> >+bool engine_timeout_in_range(u64 timeout, u64 min, u64 max) {
> >+	return timeout >= min && timeout <= max; }
> >+
> > static ssize_t preempt_timeout_store(struct kobject *kobj,
> > 				     struct kobj_attribute *attr,
> > 				     const char *buf, size_t count) @@ -44,9
> +49,20 @@ static
> >ssize_t preempt_timeout_store(struct kobject *kobj,
> > 	if (err)
> > 		return err;
> >
> >-	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(timeout,
> >+				     hwe-
> >sched_props.preempt_timeout_min,
> >+				     hwe-
> >sched_props.preempt_timeout_max))
> > 		return -EINVAL;
> >
> >+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(timeout,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> > 	WRITE_ONCE(hwe->sched_props.preempt_timeout_us, timeout);
> >
> > 	return count;
> >@@ -63,6 +79,78 @@ static ssize_t preempt_timeout_show(struct kobject
> >*kobj,  static struct kobj_attribute preempt_timeout_attr =
> >__ATTR(preempt_timeout_us, 0644, preempt_timeout_show,
> >preempt_timeout_store);
> >
> >+static ssize_t preempt_timeout_max_store(struct kobject *kobj,
> >+					 struct kobj_attribute *attr,
> >+					 const char *buf, size_t count)
> >+{
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 timeout;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &timeout);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> >+	if (!engine_timeout_in_range(timeout,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.preempt_timeout_max, timeout);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t preempt_timeout_max_show(struct kobject *kobj,
> >+					struct kobj_attribute *attr, char *buf)
> {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe-
> >sched_props.preempt_timeout_max);
> >+}
> >+
> >+static struct kobj_attribute preempt_timeout_max_attr =
> >+	__ATTR(preempt_timeout_max, 0644, preempt_timeout_max_show,
> >+	       preempt_timeout_max_store);
> >+
> >+static ssize_t preempt_timeout_min_store(struct kobject *kobj,
> >+					 struct kobj_attribute *attr,
> >+					 const char *buf, size_t count)
> >+{
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 timeout;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &timeout);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> >+	if (!engine_timeout_in_range(timeout,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.preempt_timeout_min, timeout);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t preempt_timeout_min_show(struct kobject *kobj,
> >+					struct kobj_attribute *attr, char *buf)
> {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe-
> >sched_props.preempt_timeout_min);
> >+}
> >+
> >+static struct kobj_attribute preempt_timeout_min_attr =
> >+	__ATTR(preempt_timeout_min, 0644, preempt_timeout_min_show,
> >+	       preempt_timeout_min_store);
> >+
> > static ssize_t timeslice_duration_store(struct kobject *kobj,
> > 		struct kobj_attribute *attr,
> > 		const char *buf, size_t count)
> >@@ -75,8 +163,19 @@ static ssize_t timeslice_duration_store(struct
> kobject *kobj,
> > 	if (err)
> > 		return err;
> >
> >-	if (duration > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(duration,
> >+				     hwe->sched_props.timeslice_min,
> >+				     hwe->sched_props.timeslice_max))
> >+		return -EINVAL;
> >+
> >+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(duration,
> >+				     CONFIG_DRM_XE_TIMESLICE_MIN,
> >+				     CONFIG_DRM_XE_TIMESLICE_MAX))
> > 		return -EINVAL;
> >+#endif
> >
> > 	WRITE_ONCE(hwe->sched_props.timeslice_us, duration);
> >
> >@@ -95,6 +194,79 @@ static struct kobj_attribute
> >timeslice_duration_attr =  __ATTR(timeslice_duration_us, 0644,
> >timeslice_duration_show,  timeslice_duration_store);
> >
> >+static ssize_t timeslice_duration_max_store(struct kobject *kobj,
> >+					    struct kobj_attribute *attr,
> >+					    const char *buf, size_t count) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 duration;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &duration);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> >+	if (!engine_timeout_in_range(duration,
> >+				     CONFIG_DRM_XE_TIMESLICE_MIN,
> >+				     CONFIG_DRM_XE_TIMESLICE_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.timeslice_max, duration);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t timeslice_duration_max_show(struct kobject *kobj,
> >+					   struct kobj_attribute *attr,
> >+					   char *buf)
> >+{
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_max); }
> >+
> >+static struct kobj_attribute timeslice_duration_max_attr =
> >+	__ATTR(timeslice_duration_max, 0644,
> timeslice_duration_max_show,
> >+	       timeslice_duration_max_store);
> >+
> >+static ssize_t timeslice_duration_min_store(struct kobject *kobj,
> >+					    struct kobj_attribute *attr,
> >+					    const char *buf, size_t count) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 duration;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &duration);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> >+	if (!engine_timeout_in_range(duration,
> >+				     CONFIG_DRM_XE_TIMESLICE_MIN,
> >+				     CONFIG_DRM_XE_TIMESLICE_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.timeslice_min, duration);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t timeslice_duration_min_show(struct kobject *kobj,
> >+					   struct kobj_attribute *attr, char
> *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_min); }
> >+
> >+static struct kobj_attribute timeslice_duration_min_attr =
> >+	__ATTR(timeslice_duration_min, 0644,
> timeslice_duration_min_show,
> >+	       timeslice_duration_min_store);
> >+
> > static ssize_t job_timeout_store(struct kobject *kobj,
> > 		struct kobj_attribute *attr,
> > 		const char *buf, size_t count)
> >@@ -107,8 +279,19 @@ static ssize_t job_timeout_store(struct kobject
> *kobj,
> > 	if (err)
> > 		return err;
> >
> >-	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(timeout,
> >+				     hwe->sched_props.job_timeout_min,
> >+				     hwe->sched_props.job_timeout_max))
> >+		return -EINVAL;
> >+
> >+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(timeout,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> > 		return -EINVAL;
> >+#endif
> >
> > 	WRITE_ONCE(hwe->sched_props.job_timeout_ms, timeout);
> >
> >@@ -126,6 +309,89 @@ static ssize_t job_timeout_show(struct kobject
> >*kobj,  static struct kobj_attribute job_timeout_attr =
> >__ATTR(job_timeout_ms, 0644, job_timeout_show, job_timeout_store);
> >
> >+static ssize_t job_timeout_max_store(struct kobject *kobj,
> >+				     struct kobj_attribute *attr,
> >+				     const char *buf, size_t count) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 timeout;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &timeout);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> >+	if (!engine_timeout_in_range(timeout,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.job_timeout_max, timeout);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t job_timeout_max_show(struct kobject *kobj,
> >+				    struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_max);
> >+}
> >+
> >+static struct kobj_attribute job_timeout_max_attr =
> >+__ATTR(job_timeout_max, 0644, job_timeout_max_show,
> >+job_timeout_max_store);
> >+
> >+static ssize_t job_timeout_min_store(struct kobject *kobj,
> >+				     struct kobj_attribute *attr,
> >+				     const char *buf, size_t count) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 timeout;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &timeout);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> >+	if (!engine_timeout_in_range(timeout,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.job_timeout_min, timeout);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t job_timeout_min_show(struct kobject *kobj,
> >+				    struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_min);
> >+}
> >+
> >+static struct kobj_attribute job_timeout_min_attr =
> >+__ATTR(job_timeout_min, 0644, job_timeout_min_show,
> >+job_timeout_min_store);
> >+
> >+static const struct attribute *files[] = {
> >+	&job_timeout_attr.attr,
> >+	&job_timeout_min_attr.attr,
> >+	&job_timeout_max_attr.attr,
> >+	&timeslice_duration_attr.attr,
> >+	&timeslice_duration_min_attr.attr,
> >+	&timeslice_duration_max_attr.attr,
> >+	&preempt_timeout_attr.attr,
> >+	&preempt_timeout_min_attr.attr,
> >+	&preempt_timeout_max_attr.attr,
> >+	NULL
> >+};
> >+
> > static ssize_t job_timeout_default(struct kobject *kobj,
> > 				 struct kobj_attribute *attr, char *buf)  { @@
> -137,6 +403,28 @@
> >static ssize_t job_timeout_default(struct kobject *kobj,  static struct
> >kobj_attribute job_timeout_def =  __ATTR(job_timeout_ms, 0444,
> >job_timeout_default, NULL);
> >
> >+static ssize_t job_timeout_min_default(struct kobject *kobj,
> >+				       struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_min); }
> >+
> >+static struct kobj_attribute job_timeout_min_def =
> >+__ATTR(job_timeout_min, 0444, job_timeout_min_default, NULL);
> >+
> >+static ssize_t job_timeout_max_default(struct kobject *kobj,
> >+				       struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_max); }
> >+
> >+static struct kobj_attribute job_timeout_max_def =
> >+__ATTR(job_timeout_max, 0444, job_timeout_max_default, NULL);
> >+
> > static ssize_t timeslice_default(struct kobject *kobj,
> > 				 struct kobj_attribute *attr, char *buf)  { @@
> -148,6 +436,28 @@
> >static ssize_t timeslice_default(struct kobject *kobj,  static struct
> >kobj_attribute timeslice_duration_def =  __ATTR(timeslice_duration_us,
> >0444, timeslice_default, NULL);
> >
> >+static ssize_t timeslice_min_default(struct kobject *kobj,
> >+				     struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_min); }
> >+
> >+static struct kobj_attribute timeslice_duration_min_def =
> >+__ATTR(timeslice_duration_min, 0444, timeslice_min_default, NULL);
> >+
> >+static ssize_t timeslice_max_default(struct kobject *kobj,
> >+				     struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_max); }
> >+
> >+static struct kobj_attribute timeslice_duration_max_def =
> >+__ATTR(timeslice_duration_max, 0444, timeslice_max_default, NULL);
> >+
> > static ssize_t preempt_timeout_default(struct kobject *kobj,
> > 				       struct kobj_attribute *attr,
> > 				       char *buf)
> >@@ -160,6 +470,43 @@ static ssize_t preempt_timeout_default(struct
> >kobject *kobj,  static struct kobj_attribute preempt_timeout_def =
> >__ATTR(preempt_timeout_us, 0444, preempt_timeout_default, NULL);
> >
> >+static ssize_t preempt_timeout_min_default(struct kobject *kobj,
> >+					   struct kobj_attribute *attr,
> >+					   char *buf)
> >+{
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_min);
> >+}
> >+
> >+static struct kobj_attribute preempt_timeout_min_def =
> >+__ATTR(preempt_timeout_min, 0444, preempt_timeout_min_default,
> NULL);
> >+
> >+static ssize_t preempt_timeout_max_default(struct kobject *kobj,
> >+					   struct kobj_attribute *attr,
> >+					   char *buf)
> >+{
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_max);
> >+}
> >+
> >+static struct kobj_attribute preempt_timeout_max_def =
> >+__ATTR(preempt_timeout_max, 0444, preempt_timeout_max_default,
> NULL);
> >+
> >+static const struct attribute *defaults[] = {
> >+	&job_timeout_def.attr,
> >+	&job_timeout_min_def.attr,
> >+	&job_timeout_max_def.attr,
> >+	&timeslice_duration_def.attr,
> >+	&timeslice_duration_min_def.attr,
> >+	&timeslice_duration_max_def.attr,
> >+	&preempt_timeout_def.attr,
> >+	&preempt_timeout_min_def.attr,
> >+	&preempt_timeout_max_def.attr,
> >+	NULL
> >+};
> >+
> > int xe_add_engine_defaults(struct kobject *parent)  {
> > 	struct kobject *kobj;
> >@@ -175,15 +522,7 @@ int xe_add_engine_defaults(struct kobject
> *parent)
> > 	if (err)
> > 		goto err_object;
> >
> >-	err = sysfs_create_file(kobj, &job_timeout_def.attr);
> >-	if (err)
> >-		goto err_object;
> >-
> >-	err = sysfs_create_file(kobj, &timeslice_duration_def.attr);
> >-	if (err)
> >-		goto err_object;
> >-
> >-	err = sysfs_create_file(kobj, &preempt_timeout_def.attr);
> >+	err = sysfs_create_files(kobj, defaults);
> 
> Why add code in previous patch and remove it here when we can can have
> previous patch use sysfs_create_files() to begin with?
> Applies to other below parameters also.

I initially had fewer sysfs files to add, then after min/max introduction I thought too many files lets go with create_files(). I will take a look at it.

> 
> > 	if (err)
> > 		goto err_object;
> >
> >@@ -286,15 +625,7 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
> > 			return err;
> > 		}
> >
> >-		err = sysfs_create_file(&khwe->base,
> &job_timeout_attr.attr);
> >-		if (err)
> >-			goto err_object;
> >-
> >-		err = sysfs_create_file(&khwe->base,
> &timeslice_duration_attr.attr);
> >-		if (err)
> >-			goto err_object;
> >-
> >-		err = sysfs_create_file(&khwe->base,
> &preempt_timeout_attr.attr);
> >+		err = sysfs_create_files(&khwe->base, files);
> > 		if (err)
> > 			goto err_object;
> > 	}
> >diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >index a539cf031c7d..a7ac7b9a9768 100644
> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >@@ -12,6 +12,7 @@
> >
> > int xe_gt_sysfs_init(struct xe_gt *gt); int xe_gt_sysfs_engines(struct
> > xe_gt *gt);
> >+bool engine_timeout_in_range(u64 timeout, u64 min, u64 max);
> >
> > static inline struct xe_gt *
> > kobj_to_gt(struct kobject *kobj)
> >diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c
> >b/drivers/gpu/drm/xe/xe_hw_engine.c
> >index 8314429cfa90..e52324eb1efa 100644
> >--- a/drivers/gpu/drm/xe/xe_hw_engine.c
> >+++ b/drivers/gpu/drm/xe/xe_hw_engine.c
> >@@ -363,8 +363,14 @@ static void hw_engine_init_early(struct xe_gt *gt,
> struct xe_hw_engine *hwe,
> > 	hwe->engine_id = id;
> > 	/* FIXME: Wire up to configurable default value */
> > 	hwe->sched_props.job_timeout_ms = HZ * 5;
> >+	hwe->sched_props.job_timeout_min =
> XE_HW_ENGINE_JOB_TIMEOUT_MIN;
> >+	hwe->sched_props.job_timeout_max =
> XE_HW_ENGINE_JOB_TIMEOUT_MAX;
> > 	hwe->sched_props.timeslice_us = 1 * 1000;
> >+	hwe->sched_props.timeslice_min =
> XE_HW_ENGINE_TIMESLICE_MIN;
> >+	hwe->sched_props.timeslice_max =
> XE_HW_ENGINE_TIMESLICE_MAX;
> > 	hwe->sched_props.preempt_timeout_us = 640 * 1000;
> >+	hwe->sched_props.preempt_timeout_min =
> XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN;
> >+	hwe->sched_props.preempt_timeout_max =
> >+XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX;
> 
> Can we define a config option for preempt_timeout_us also?
> My below patch series tries to do it.
> https://patchwork.freedesktop.org/series/119165/
> 
> May be you can include it here in your patch series or I can push a patch
> series after this series gets merged. Thoughts?

I will try to put it on top of my patch. If see any problems, I will let you merge later. Mostly it should not create any.

Thanks,
Tejas
> 
> > 	hwe->defaults = hwe->sched_props; /* Record default props */
> >
> > 	xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt)); diff --git
> >a/drivers/gpu/drm/xe/xe_hw_engine.h
> b/drivers/gpu/drm/xe/xe_hw_engine.h
> >index 7eca9d53c7b1..3d37d6d44261 100644
> >--- a/drivers/gpu/drm/xe/xe_hw_engine.h
> >+++ b/drivers/gpu/drm/xe/xe_hw_engine.h
> >@@ -10,6 +10,37 @@
> >
> > struct drm_printer;
> >
> >+#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN
> >+#define XE_HW_ENGINE_JOB_TIMEOUT_MIN
> CONFIG_DRM_XE_JOB_TIMEOUT_MIN
> >+#else #define XE_HW_ENGINE_JOB_TIMEOUT_MIN 1 #endif #ifdef
> >+CONFIG_DRM_XE_JOB_TIMEOUT_MAX #define
> XE_HW_ENGINE_JOB_TIMEOUT_MAX
> >+CONFIG_DRM_XE_JOB_TIMEOUT_MAX #else #define
> >+XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000) #endif #ifdef
> >+CONFIG_DRM_XE_TIMESLICE_MIN #define
> XE_HW_ENGINE_TIMESLICE_MIN
> >+CONFIG_DRM_XE_TIMESLICE_MIN #else #define
> XE_HW_ENGINE_TIMESLICE_MIN 1
> >+#endif #ifdef CONFIG_DRM_XE_TIMESLICE_MAX #define
> >+XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX
> #else #define
> >+XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000) #endif #ifdef
> >+CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
> >+#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN
> >+CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN #else #define
> >+XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 1
> 
> As mentioned above, a minimum should be 0?
> 
> Niranjana
> 
> >+#endif
> >+#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX #define
> >+XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
> >+#else #define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 *
> 1000)
> >+#endif
> >+
> > int xe_hw_engines_init_early(struct xe_gt *gt);  int
> >xe_hw_engines_init(struct xe_gt *gt);  void
> >xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec); diff
> >--git a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >index 406a1e33a05e..8582193b4947 100644
> >--- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >+++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >@@ -111,10 +111,22 @@ struct xe_hw_engine {
> > 	struct {
> > 		/** @set_job_timeout: Set job timeout in ms for engine */
> > 		u32 job_timeout_ms;
> >+		/** @job_timeout_min: Min job timeout in ms for engine */
> >+		u32 job_timeout_min;
> >+		/** @job_timeout_max: Max job timeout in ms for engine */
> >+		u32 job_timeout_max;
> > 		/** @timeslice_us: timeslice period in micro-seconds */
> > 		u32 timeslice_us;
> >+		/** @timeslice_min: min timeslice period in micro-seconds
> */
> >+		u32 timeslice_min;
> >+		/** @timeslice_max: max timeslice period in micro-seconds
> */
> >+		u32 timeslice_max;
> > 		/** @preempt_timeout_us: preemption timeout in micro-
> seconds */
> > 		u32 preempt_timeout_us;
> >+		/** @preempt_timeout_min: min preemption timeout in
> micro-seconds */
> >+		u32 preempt_timeout_min;
> >+		/** @preempt_timeout_max: max preemption timeout in
> micro-seconds */
> >+		u32 preempt_timeout_max;
> > 	} sched_props, defaults;
> > 	/** @sysfs: sysfs kobject pointing to this hwe */
> > 	struct kobject *sysfs_hwe;
> >--
> >2.25.1
> >

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Intel-xe] [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler properties
  2023-06-16 20:39   ` Niranjana Vishwanathapura
@ 2023-06-19  5:01     ` Upadhyay, Tejas
  2023-06-21  4:29       ` Niranjana Vishwanathapura
  0 siblings, 1 reply; 23+ messages in thread
From: Upadhyay, Tejas @ 2023-06-19  5:01 UTC (permalink / raw)
  To: Vishwanathapura, Niranjana; +Cc: intel-xe



> -----Original Message-----
> From: Vishwanathapura, Niranjana <niranjana.vishwanathapura@intel.com>
> Sent: Saturday, June 17, 2023 2:10 AM
> To: Upadhyay, Tejas <tejas.upadhyay@intel.com>
> Cc: intel-xe@lists.freedesktop.org; Iddamsetty, Aravind
> <aravind.iddamsetty@intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray@intel.com>; Brost, Matthew
> <matthew.brost@intel.com>
> Subject: Re: [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler
> properties
> 
> On Thu, Jun 15, 2023 at 07:49:29PM +0530, Tejas Upadhyay wrote:
> >For each HW engine under GT we are adding defaults sysfs entry to list
> >all engine scheduler properties and its default values. So that it will
> >be easier for user to fetch default values of these properties anytime
> >to go back to default.
> >
> >For example,
> >DUT# cat /sys/class/drm/card1/device/gt0/engines/bcs/.defaults/
> >job_timeout_ms         preempt_timeout_us     timeslice_duration_us
> >
> >where,
> >@job_timeout_ms: The time after which a job is removed from the
> scheduler.
> >@preempt_timeout_us: How long to wait (in microseconds) for a
> preemption
> >                     event to occur when submitting a new context.
> >@timeslice_duration_us: Each context is scheduled for execution for the
> >                        timeslice duration, before switching to the next
> >                        context.
> >
> >Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
> >---
> > drivers/gpu/drm/xe/xe_engine.c          |  4 +-
> > drivers/gpu/drm/xe/xe_gt_sysfs.c        | 94 +++++++++++++++++++++++--
> > drivers/gpu/drm/xe/xe_gt_sysfs.h        |  5 ++
> > drivers/gpu/drm/xe/xe_gt_sysfs_types.h  | 13 ++++
> > drivers/gpu/drm/xe/xe_guc_submit.c      |  5 +-
> > drivers/gpu/drm/xe/xe_hw_engine.c       |  5 ++
> > drivers/gpu/drm/xe/xe_hw_engine_types.h | 11 +++
> > 7 files changed, 128 insertions(+), 9 deletions(-)
> >
> >diff --git a/drivers/gpu/drm/xe/xe_engine.c
> >b/drivers/gpu/drm/xe/xe_engine.c index b3036c4a8ec3..e72423bc398a
> >100644
> >--- a/drivers/gpu/drm/xe/xe_engine.c
> >+++ b/drivers/gpu/drm/xe/xe_engine.c
> >@@ -53,8 +53,8 @@ static struct xe_engine *__xe_engine_create(struct
> xe_device *xe,
> > 	INIT_LIST_HEAD(&e->multi_gt_link);
> >
> > 	/* FIXME: Wire up to configurable default value */
> >-	e->sched_props.timeslice_us = 1 * 1000;
> >-	e->sched_props.preempt_timeout_us = 640 * 1000;
> >+	e->sched_props.timeslice_us = hwe->sched_props.timeslice_us;
> >+	e->sched_props.preempt_timeout_us =
> >+hwe->sched_props.preempt_timeout_us;
> >
> > 	if (xe_engine_is_parallel(e)) {
> > 		e->parallel.composite_fence_ctx =
> dma_fence_context_alloc(1); diff
> >--git a/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >index 7528cc723699..72809078bd83 100644
> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >@@ -32,22 +32,92 @@ static struct kobj_type kobj_xe_engine_type = {
> > 	.sysfs_ops = &kobj_sysfs_ops
> > };
> >
> >-static struct kobject *
> >-kobj_xe_engine(struct kobject *parent, char *name)
> >+static ssize_t job_timeout_default(struct kobject *kobj,
> >+				 struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_ms); }
> >+
> >+static struct kobj_attribute job_timeout_def = __ATTR(job_timeout_ms,
> >+0444, job_timeout_default, NULL);
> >+
> >+static ssize_t timeslice_default(struct kobject *kobj,
> >+				 struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_us); }
> >+
> >+static struct kobj_attribute timeslice_duration_def =
> >+__ATTR(timeslice_duration_us, 0444, timeslice_default, NULL);
> >+
> >+static ssize_t preempt_timeout_default(struct kobject *kobj,
> >+				       struct kobj_attribute *attr,
> >+				       char *buf)
> >+{
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_us);
> >+}
> >+
> >+static struct kobj_attribute preempt_timeout_def =
> >+__ATTR(preempt_timeout_us, 0444, preempt_timeout_default, NULL);
> >+
> >+int xe_add_engine_defaults(struct kobject *parent)
> > {
> > 	struct kobject *kobj;
> >+	int err = 0;
> >
> > 	kobj = kzalloc(sizeof(*kobj), GFP_KERNEL);
> > 	if (!kobj)
> >-		return NULL;
> >+		return -ENOMEM;
> >
> > 	kobject_init(kobj, &kobj_xe_engine_type);
> >-	if (kobject_add(kobj, parent, "%s", name)) {
> >+
> >+	err = kobject_add(kobj, parent, "%s", ".defaults");
> >+	if (err)
> >+		goto err_object;
> >+
> >+	err = sysfs_create_file(kobj, &job_timeout_def.attr);
> >+	if (err)
> >+		goto err_object;
> >+
> >+	err = sysfs_create_file(kobj, &timeslice_duration_def.attr);
> >+	if (err)
> >+		goto err_object;
> >+
> >+	err = sysfs_create_file(kobj, &preempt_timeout_def.attr);
> >+	if (err)
> >+		goto err_object;
> >+
> >+	if (0) {
> >+err_object:
> > 		kobject_put(kobj);
> >+		return err;
> >+	}
> >+
> >+	return err;
> >+}
> >+
> >+static struct kobj_hwe *
> >+kobj_xe_engine(struct kobject *parent, char *name) {
> >+	struct kobj_hwe *khwe;
> >+
> >+	khwe = kzalloc(sizeof(*khwe), GFP_KERNEL);
> >+	if (!khwe)
> >+		return NULL;
> >+
> >+	kobject_init(&khwe->base, &kobj_xe_engine_type);
> >+	if (kobject_add(&khwe->base, parent, "%s", name)) {
> >+		kobject_put(&khwe->base);
> > 		return NULL;
> > 	}
> >
> >-	return kobj;
> >+	return khwe;
> > }
> >
> > int xe_gt_sysfs_engines(struct xe_gt *gt) @@ -72,7 +142,7 @@ int
> >xe_gt_sysfs_engines(struct xe_gt *gt)
> >
> > 	for_each_hw_engine(hwe, gt, id) {
> > 		char name[MAX_ENGINE_NAME_LEN];
> >-		struct kobject *khwe;
> >+		struct kobj_hwe *khwe;
> >
> > 		if ((hwe->class == XE_ENGINE_CLASS_OTHER) ||
> > 		    (hwe->class == XE_ENGINE_CLASS_MAX)) @@ -109,6
> +179,18 @@ int
> >xe_gt_sysfs_engines(struct xe_gt *gt)
> > 			kobject_put(kobj);
> > 			return -EINVAL;
> > 		}
> >+
> >+		khwe->hwe = hwe;
> >+		hwe->sysfs_hwe = &khwe->base;
> >+
> >+		err = xe_add_engine_defaults(&khwe->base);
> >+		if (err) {
> >+			kobject_put(kobj);
> >+			drm_warn(&gt_to_xe(gt)->drm,
> >+				 "Warning: adding .defaults to engines
> failed!, err: %d\n",
> >+				 err);
> >+			return err;
> >+		}
> > 	}
> >
> > 	return err;
> >diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >index a531aebd10d6..a539cf031c7d 100644
> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >@@ -19,4 +19,9 @@ kobj_to_gt(struct kobject *kobj)
> > 	return container_of(kobj, struct kobj_gt, base)->gt;  }
> >
> >+static inline struct xe_hw_engine *kobj_to_hwe(struct kobject *kobj) {
> >+	return container_of(kobj, struct kobj_hwe, base)->hwe; }
> >+
> > #endif /* _XE_GT_SYSFS_H_ */
> >diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
> >b/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
> >index d3bc6b83360f..d0a5eae1bbb4 100644
> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
> >@@ -23,4 +23,17 @@ struct kobj_gt {
> > 	struct xe_gt *gt;
> > };
> >
> >+/**
> >+ * struct kobj_hwe - A hwe's kobject struct that connects the kobject
> >+and the
> >+ * hwe.
> >+ *
> >+ * When dealing with multiple hwe, this struct helps to understand
> >+which hwe
> >+ * needs to be addressed on a given sysfs call.
> >+ */
> >+struct kobj_hwe {
> >+	/** @base: The actual kobject */
> >+	struct kobject base;
> >+	/** @hwe: A pointer to the hwe itself */
> >+	struct xe_hw_engine *hwe;
> >+};
> 
> More on this below.
> 
> > #endif	/* _XE_GT_SYSFS_TYPES_H_ */
> >diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c
> >b/drivers/gpu/drm/xe/xe_guc_submit.c
> >index b209e4c2a3a9..bc0ffcf9fb1c 100644
> >--- a/drivers/gpu/drm/xe/xe_guc_submit.c
> >+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> >@@ -1063,13 +1063,16 @@ static int guc_engine_init(struct xe_engine *e)
> > 	ge->engine = e;
> > 	init_waitqueue_head(&ge->suspend_wait);
> >
> >-	timeout = xe_vm_no_dma_fences(e->vm) ?
> MAX_SCHEDULE_TIMEOUT : HZ * 5;
> >+	timeout = xe_vm_no_dma_fences(e->vm) ?
> MAX_SCHEDULE_TIMEOUT :
> >+		  e->hwe->sched_props.job_timeout_ms;
> > 	err = drm_sched_init(&ge->sched, &drm_sched_ops,
> > 			     e->lrc[0].ring.size / MAX_JOB_SIZE_BYTES,
> > 			     64, timeout, guc_to_gt(guc)->ordered_wq, NULL,
> > 			     e->name, gt_to_xe(e->gt)->drm.dev);
> > 	if (err)
> > 		goto err_free;
> >+	/* Record timeout value, in order to show current set timeout */
> >+	e->hwe->sched_props.job_timeout_ms = timeout;
> 
> But, timeout can be MAX_SCHEDULE_TIMEOUT which can be more than the
> max defined in the patch#6 right?

Yes, how should we handle this, any thoughts? Thanks for pointing this out. I think we need to change default max timeout in that case to match our config?

> 
> >
> > 	sched = &ge->sched;
> > 	err = drm_sched_entity_init(&ge->entity,
> DRM_SCHED_PRIORITY_NORMAL,
> >diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c
> >b/drivers/gpu/drm/xe/xe_hw_engine.c
> >index 68cd793cdfb5..8314429cfa90 100644
> >--- a/drivers/gpu/drm/xe/xe_hw_engine.c
> >+++ b/drivers/gpu/drm/xe/xe_hw_engine.c
> >@@ -361,6 +361,11 @@ static void hw_engine_init_early(struct xe_gt *gt,
> struct xe_hw_engine *hwe,
> > 	hwe->name = info->name;
> > 	hwe->fence_irq = &gt->fence_irq[info->class];
> > 	hwe->engine_id = id;
> >+	/* FIXME: Wire up to configurable default value */
> >+	hwe->sched_props.job_timeout_ms = HZ * 5;
> >+	hwe->sched_props.timeslice_us = 1 * 1000;
> >+	hwe->sched_props.preempt_timeout_us = 640 * 1000;
> >+	hwe->defaults = hwe->sched_props; /* Record default props */
> >
> > 	xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt));
> > 	xe_wa_process_engine(hwe);
> >diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >index d788e67312b9..406a1e33a05e 100644
> >--- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >+++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >@@ -107,6 +107,17 @@ struct xe_hw_engine {
> > 	void (*irq_handler)(struct xe_hw_engine *, u16);
> > 	/** @engine_id: id  for this hw engine */
> > 	enum xe_hw_engine_id engine_id;
> >+	/** @sched_props: scheduling properties */
> >+	struct {
> >+		/** @set_job_timeout: Set job timeout in ms for engine */
> >+		u32 job_timeout_ms;
> >+		/** @timeslice_us: timeslice period in micro-seconds */
> >+		u32 timeslice_us;
> >+		/** @preempt_timeout_us: preemption timeout in micro-
> seconds */
> >+		u32 preempt_timeout_us;
> >+	} sched_props, defaults;
> >+	/** @sysfs: sysfs kobject pointing to this hwe */
> >+	struct kobject *sysfs_hwe;
> 
> Whwere is this sysfs_hwe used?
> I wonder whether we really need 'struct kobj_hwe'.
> Why can't we just have kobject defined here in the xe_hw_engine sturcture
> instead of having a pointer to one. That way we don't need to kzalloc it.

You are right, its miss. I initially thought same and added sysfs_hwe and ended up not using it. As container of does not work on pointers. 

If we add it as part of xe_hw_engine then also allocation will happen right! And other reason to keep this way was to maintain uniformity the same way GT sysfs is doing and same way its done in tile sysfs patch(which is on patchwork) as well.

Thanks,
Tejas
> 
> Niranjana
> 
> > };
> >
> > /**
> >--
> >2.25.1
> >

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties
  2023-06-19  4:43     ` Upadhyay, Tejas
@ 2023-06-21  3:55       ` Niranjana Vishwanathapura
  2023-06-21  5:19         ` Upadhyay, Tejas
  0 siblings, 1 reply; 23+ messages in thread
From: Niranjana Vishwanathapura @ 2023-06-21  3:55 UTC (permalink / raw)
  To: Upadhyay, Tejas; +Cc: intel-xe

On Sun, Jun 18, 2023 at 09:43:51PM -0700, Upadhyay, Tejas wrote:
>
>
>> -----Original Message-----
>> From: Vishwanathapura, Niranjana <niranjana.vishwanathapura@intel.com>
>> Sent: Saturday, June 17, 2023 2:26 AM
>> To: Upadhyay, Tejas <tejas.upadhyay@intel.com>
>> Cc: intel-xe@lists.freedesktop.org; Iddamsetty, Aravind
>> <aravind.iddamsetty@intel.com>; Ghimiray, Himal Prasad
>> <himal.prasad.ghimiray@intel.com>; Brost, Matthew
>> <matthew.brost@intel.com>
>> Subject: Re: [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler
>> properties
>>
>> On Thu, Jun 15, 2023 at 07:49:33PM +0530, Tejas Upadhyay wrote:
>> >Add sysfs entries for the min, max, and defaults for each of engine
>> >scheduler controls for every hardware engine class.
>> >
>> >Non-elevated user IOCTLs to set these controls must be within the
>> >min-max ranges of the sysfs entries, elevated user can set these
>> >controls to any value.
>> >
>> >Introducing compile time CONFIG min-max values which restricts elevated
>> >user to be in compile time min-max range if at all sysfs min/max are
>> >violated.
>> >
>> >Sysfs entries examples are,
>> >DUT# cat /sys/class/drm/cardX/device/gtN/engines/ccs/.defaults/
>> >job_timeout_max         job_timeout_ms          preempt_timeout_min
>> timeslice_duration_max  timeslice_duration_us
>> >job_timeout_min         preempt_timeout_max     preempt_timeout_us
>> timeslice_duration_min
>> >
>> >DUT# cat /sys/class/drm/card1/device/gt1/engines/ccs/
>> >.defaults/              job_timeout_min         preempt_timeout_max
>> preempt_timeout_us      timeslice_duration_min
>> >job_timeout_max         job_timeout_ms          preempt_timeout_min
>> timeslice_duration_max  timeslice_duration_us
>> >
>> >Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>

<snip>

>> >diff --git a/drivers/gpu/drm/xe/xe_engine.c
>> >b/drivers/gpu/drm/xe/xe_engine.c index e72423bc398a..c368ffd5e461
>> >100644
>> >--- a/drivers/gpu/drm/xe/xe_engine.c
>> >+++ b/drivers/gpu/drm/xe/xe_engine.c
>> >@@ -13,6 +13,7 @@
>> >
>> > #include "xe_device.h"
>> > #include "xe_gt.h"
>> >+#include "xe_gt_sysfs.h"
>> > #include "xe_hw_fence.h"
>> > #include "xe_lrc.h"
>> > #include "xe_macros.h"
>> >@@ -191,9 +192,20 @@ static int engine_set_priority(struct xe_device
>> >*xe, struct xe_engine *e,  static int engine_set_timeslice(struct xe_device
>> *xe, struct xe_engine *e,
>> > 				u64 value, bool create)
>> > {
>> >-	if (!capable(CAP_SYS_NICE))
>> >+	if (!capable(CAP_SYS_NICE) &&
>> >+	    !engine_timeout_in_range(value,
>> >+				     e->hwe->sched_props.timeslice_min,
>> >+				     e->hwe->sched_props.timeslice_max))
>> > 		return -EPERM;
>> >
>> >+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
>> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
>> >+	if (capable(CAP_SYS_NICE) &&
>> >+	    !engine_timeout_in_range(value,
>> >+				     CONFIG_DRM_XE_TIMESLICE_MIN,
>> >+				     CONFIG_DRM_XE_TIMESLICE_MAX))
>> >+		return -EPERM;
>> >+#endif
>>
>> Do we really need this second boundary check given the in the first check
>> above, the e->hwe->sched_props.timeslice_min/max values are already
>> subjected to these boundaries?
>> Applies for other below parameters also.
>
>Yes we need because,
>If elevated user exceeds configured sysfs min/max (he is allowed to do so), which number could be below or above compile config min max.
>As user can try any value through IOCTL/sysfs being elevated user, we need to check with second check.
>

I thought CONFIG_DRM_XE_TIMESLICE_MIN/MAX are the default values of hwe->sched_props.timeslice_min/max
which user can override. But looking at timeslice_duration_min/max_store(), looks like these configs
are not default min/max values but a boundary for min/max values. I am confused.

Niranjana

>>
>> >+
>> > 	return e->ops->set_timeslice(e, value); }
>> >

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Intel-xe] [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler properties
  2023-06-19  5:01     ` Upadhyay, Tejas
@ 2023-06-21  4:29       ` Niranjana Vishwanathapura
  2023-06-22 12:51         ` Upadhyay, Tejas
  0 siblings, 1 reply; 23+ messages in thread
From: Niranjana Vishwanathapura @ 2023-06-21  4:29 UTC (permalink / raw)
  To: Upadhyay, Tejas; +Cc: intel-xe

On Sun, Jun 18, 2023 at 10:01:45PM -0700, Upadhyay, Tejas wrote:
>
>
>> -----Original Message-----
>> From: Vishwanathapura, Niranjana <niranjana.vishwanathapura@intel.com>
>> Sent: Saturday, June 17, 2023 2:10 AM
>> To: Upadhyay, Tejas <tejas.upadhyay@intel.com>
>> Cc: intel-xe@lists.freedesktop.org; Iddamsetty, Aravind
>> <aravind.iddamsetty@intel.com>; Ghimiray, Himal Prasad
>> <himal.prasad.ghimiray@intel.com>; Brost, Matthew
>> <matthew.brost@intel.com>
>> Subject: Re: [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler
>> properties
>>
>> On Thu, Jun 15, 2023 at 07:49:29PM +0530, Tejas Upadhyay wrote:
>> >For each HW engine under GT we are adding defaults sysfs entry to list
>> >all engine scheduler properties and its default values. So that it will
>> >be easier for user to fetch default values of these properties anytime
>> >to go back to default.
>> >
>> >For example,
>> >DUT# cat /sys/class/drm/card1/device/gt0/engines/bcs/.defaults/
>> >job_timeout_ms         preempt_timeout_us     timeslice_duration_us
>> >
>> >where,
>> >@job_timeout_ms: The time after which a job is removed from the
>> scheduler.
>> >@preempt_timeout_us: How long to wait (in microseconds) for a
>> preemption
>> >                     event to occur when submitting a new context.
>> >@timeslice_duration_us: Each context is scheduled for execution for the
>> >                        timeslice duration, before switching to the next
>> >                        context.
>> >
>> >Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
>> >---
>> > drivers/gpu/drm/xe/xe_engine.c          |  4 +-
>> > drivers/gpu/drm/xe/xe_gt_sysfs.c        | 94 +++++++++++++++++++++++--
>> > drivers/gpu/drm/xe/xe_gt_sysfs.h        |  5 ++
>> > drivers/gpu/drm/xe/xe_gt_sysfs_types.h  | 13 ++++
>> > drivers/gpu/drm/xe/xe_guc_submit.c      |  5 +-
>> > drivers/gpu/drm/xe/xe_hw_engine.c       |  5 ++
>> > drivers/gpu/drm/xe/xe_hw_engine_types.h | 11 +++
>> > 7 files changed, 128 insertions(+), 9 deletions(-)
>> >
>> >diff --git a/drivers/gpu/drm/xe/xe_engine.c
>> >b/drivers/gpu/drm/xe/xe_engine.c index b3036c4a8ec3..e72423bc398a
>> >100644
>> >--- a/drivers/gpu/drm/xe/xe_engine.c
>> >+++ b/drivers/gpu/drm/xe/xe_engine.c
>> >@@ -53,8 +53,8 @@ static struct xe_engine *__xe_engine_create(struct
>> xe_device *xe,
>> > 	INIT_LIST_HEAD(&e->multi_gt_link);
>> >
>> > 	/* FIXME: Wire up to configurable default value */
>> >-	e->sched_props.timeslice_us = 1 * 1000;
>> >-	e->sched_props.preempt_timeout_us = 640 * 1000;
>> >+	e->sched_props.timeslice_us = hwe->sched_props.timeslice_us;
>> >+	e->sched_props.preempt_timeout_us =
>> >+hwe->sched_props.preempt_timeout_us;
>> >
>> > 	if (xe_engine_is_parallel(e)) {
>> > 		e->parallel.composite_fence_ctx =
>> dma_fence_context_alloc(1); diff
>> >--git a/drivers/gpu/drm/xe/xe_gt_sysfs.c
>> >b/drivers/gpu/drm/xe/xe_gt_sysfs.c
>> >index 7528cc723699..72809078bd83 100644
>> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
>> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
>> >@@ -32,22 +32,92 @@ static struct kobj_type kobj_xe_engine_type = {
>> > 	.sysfs_ops = &kobj_sysfs_ops
>> > };
>> >
>> >-static struct kobject *
>> >-kobj_xe_engine(struct kobject *parent, char *name)
>> >+static ssize_t job_timeout_default(struct kobject *kobj,
>> >+				 struct kobj_attribute *attr, char *buf) {
>> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>> >+
>> >+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_ms); }
>> >+
>> >+static struct kobj_attribute job_timeout_def = __ATTR(job_timeout_ms,
>> >+0444, job_timeout_default, NULL);
>> >+
>> >+static ssize_t timeslice_default(struct kobject *kobj,
>> >+				 struct kobj_attribute *attr, char *buf) {
>> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>> >+
>> >+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_us); }
>> >+
>> >+static struct kobj_attribute timeslice_duration_def =
>> >+__ATTR(timeslice_duration_us, 0444, timeslice_default, NULL);
>> >+
>> >+static ssize_t preempt_timeout_default(struct kobject *kobj,
>> >+				       struct kobj_attribute *attr,
>> >+				       char *buf)
>> >+{
>> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
>> >+
>> >+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_us);
>> >+}
>> >+
>> >+static struct kobj_attribute preempt_timeout_def =
>> >+__ATTR(preempt_timeout_us, 0444, preempt_timeout_default, NULL);
>> >+
>> >+int xe_add_engine_defaults(struct kobject *parent)
>> > {
>> > 	struct kobject *kobj;
>> >+	int err = 0;
>> >
>> > 	kobj = kzalloc(sizeof(*kobj), GFP_KERNEL);
>> > 	if (!kobj)
>> >-		return NULL;
>> >+		return -ENOMEM;
>> >
>> > 	kobject_init(kobj, &kobj_xe_engine_type);
>> >-	if (kobject_add(kobj, parent, "%s", name)) {
>> >+
>> >+	err = kobject_add(kobj, parent, "%s", ".defaults");
>> >+	if (err)
>> >+		goto err_object;
>> >+
>> >+	err = sysfs_create_file(kobj, &job_timeout_def.attr);
>> >+	if (err)
>> >+		goto err_object;
>> >+
>> >+	err = sysfs_create_file(kobj, &timeslice_duration_def.attr);
>> >+	if (err)
>> >+		goto err_object;
>> >+
>> >+	err = sysfs_create_file(kobj, &preempt_timeout_def.attr);
>> >+	if (err)
>> >+		goto err_object;
>> >+
>> >+	if (0) {
>> >+err_object:
>> > 		kobject_put(kobj);
>> >+		return err;
>> >+	}
>> >+
>> >+	return err;
>> >+}
>> >+
>> >+static struct kobj_hwe *
>> >+kobj_xe_engine(struct kobject *parent, char *name) {
>> >+	struct kobj_hwe *khwe;
>> >+
>> >+	khwe = kzalloc(sizeof(*khwe), GFP_KERNEL);
>> >+	if (!khwe)
>> >+		return NULL;
>> >+
>> >+	kobject_init(&khwe->base, &kobj_xe_engine_type);
>> >+	if (kobject_add(&khwe->base, parent, "%s", name)) {
>> >+		kobject_put(&khwe->base);
>> > 		return NULL;
>> > 	}
>> >
>> >-	return kobj;
>> >+	return khwe;
>> > }
>> >
>> > int xe_gt_sysfs_engines(struct xe_gt *gt) @@ -72,7 +142,7 @@ int
>> >xe_gt_sysfs_engines(struct xe_gt *gt)
>> >
>> > 	for_each_hw_engine(hwe, gt, id) {
>> > 		char name[MAX_ENGINE_NAME_LEN];
>> >-		struct kobject *khwe;
>> >+		struct kobj_hwe *khwe;
>> >
>> > 		if ((hwe->class == XE_ENGINE_CLASS_OTHER) ||
>> > 		    (hwe->class == XE_ENGINE_CLASS_MAX)) @@ -109,6
>> +179,18 @@ int
>> >xe_gt_sysfs_engines(struct xe_gt *gt)
>> > 			kobject_put(kobj);
>> > 			return -EINVAL;
>> > 		}
>> >+
>> >+		khwe->hwe = hwe;
>> >+		hwe->sysfs_hwe = &khwe->base;
>> >+
>> >+		err = xe_add_engine_defaults(&khwe->base);
>> >+		if (err) {
>> >+			kobject_put(kobj);
>> >+			drm_warn(&gt_to_xe(gt)->drm,
>> >+				 "Warning: adding .defaults to engines
>> failed!, err: %d\n",
>> >+				 err);
>> >+			return err;
>> >+		}
>> > 	}
>> >
>> > 	return err;
>> >diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h
>> >b/drivers/gpu/drm/xe/xe_gt_sysfs.h
>> >index a531aebd10d6..a539cf031c7d 100644
>> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
>> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
>> >@@ -19,4 +19,9 @@ kobj_to_gt(struct kobject *kobj)
>> > 	return container_of(kobj, struct kobj_gt, base)->gt;  }
>> >
>> >+static inline struct xe_hw_engine *kobj_to_hwe(struct kobject *kobj) {
>> >+	return container_of(kobj, struct kobj_hwe, base)->hwe; }
>> >+
>> > #endif /* _XE_GT_SYSFS_H_ */
>> >diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
>> >b/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
>> >index d3bc6b83360f..d0a5eae1bbb4 100644
>> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
>> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
>> >@@ -23,4 +23,17 @@ struct kobj_gt {
>> > 	struct xe_gt *gt;
>> > };
>> >
>> >+/**
>> >+ * struct kobj_hwe - A hwe's kobject struct that connects the kobject
>> >+and the
>> >+ * hwe.
>> >+ *
>> >+ * When dealing with multiple hwe, this struct helps to understand
>> >+which hwe
>> >+ * needs to be addressed on a given sysfs call.
>> >+ */
>> >+struct kobj_hwe {
>> >+	/** @base: The actual kobject */
>> >+	struct kobject base;
>> >+	/** @hwe: A pointer to the hwe itself */
>> >+	struct xe_hw_engine *hwe;
>> >+};
>>
>> More on this below.
>>
>> > #endif	/* _XE_GT_SYSFS_TYPES_H_ */
>> >diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c
>> >b/drivers/gpu/drm/xe/xe_guc_submit.c
>> >index b209e4c2a3a9..bc0ffcf9fb1c 100644
>> >--- a/drivers/gpu/drm/xe/xe_guc_submit.c
>> >+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
>> >@@ -1063,13 +1063,16 @@ static int guc_engine_init(struct xe_engine *e)
>> > 	ge->engine = e;
>> > 	init_waitqueue_head(&ge->suspend_wait);
>> >
>> >-	timeout = xe_vm_no_dma_fences(e->vm) ?
>> MAX_SCHEDULE_TIMEOUT : HZ * 5;
>> >+	timeout = xe_vm_no_dma_fences(e->vm) ?
>> MAX_SCHEDULE_TIMEOUT :
>> >+		  e->hwe->sched_props.job_timeout_ms;
>> > 	err = drm_sched_init(&ge->sched, &drm_sched_ops,
>> > 			     e->lrc[0].ring.size / MAX_JOB_SIZE_BYTES,
>> > 			     64, timeout, guc_to_gt(guc)->ordered_wq, NULL,
>> > 			     e->name, gt_to_xe(e->gt)->drm.dev);
>> > 	if (err)
>> > 		goto err_free;
>> >+	/* Record timeout value, in order to show current set timeout */
>> >+	e->hwe->sched_props.job_timeout_ms = timeout;
>>
>> But, timeout can be MAX_SCHEDULE_TIMEOUT which can be more than the
>> max defined in the patch#6 right?
>
>Yes, how should we handle this, any thoughts? Thanks for pointing this out. I think we need to change default max timeout in that case to match our config?
>

Yes, I think so, but will let others comment.

>>
>> >
>> > 	sched = &ge->sched;
>> > 	err = drm_sched_entity_init(&ge->entity,
>> DRM_SCHED_PRIORITY_NORMAL,
>> >diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c
>> >b/drivers/gpu/drm/xe/xe_hw_engine.c
>> >index 68cd793cdfb5..8314429cfa90 100644
>> >--- a/drivers/gpu/drm/xe/xe_hw_engine.c
>> >+++ b/drivers/gpu/drm/xe/xe_hw_engine.c
>> >@@ -361,6 +361,11 @@ static void hw_engine_init_early(struct xe_gt *gt,
>> struct xe_hw_engine *hwe,
>> > 	hwe->name = info->name;
>> > 	hwe->fence_irq = &gt->fence_irq[info->class];
>> > 	hwe->engine_id = id;
>> >+	/* FIXME: Wire up to configurable default value */
>> >+	hwe->sched_props.job_timeout_ms = HZ * 5;
>> >+	hwe->sched_props.timeslice_us = 1 * 1000;
>> >+	hwe->sched_props.preempt_timeout_us = 640 * 1000;
>> >+	hwe->defaults = hwe->sched_props; /* Record default props */
>> >
>> > 	xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt));
>> > 	xe_wa_process_engine(hwe);
>> >diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h
>> >b/drivers/gpu/drm/xe/xe_hw_engine_types.h
>> >index d788e67312b9..406a1e33a05e 100644
>> >--- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
>> >+++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
>> >@@ -107,6 +107,17 @@ struct xe_hw_engine {
>> > 	void (*irq_handler)(struct xe_hw_engine *, u16);
>> > 	/** @engine_id: id  for this hw engine */
>> > 	enum xe_hw_engine_id engine_id;
>> >+	/** @sched_props: scheduling properties */
>> >+	struct {
>> >+		/** @set_job_timeout: Set job timeout in ms for engine */
>> >+		u32 job_timeout_ms;
>> >+		/** @timeslice_us: timeslice period in micro-seconds */
>> >+		u32 timeslice_us;
>> >+		/** @preempt_timeout_us: preemption timeout in micro-
>> seconds */
>> >+		u32 preempt_timeout_us;
>> >+	} sched_props, defaults;
>> >+	/** @sysfs: sysfs kobject pointing to this hwe */
>> >+	struct kobject *sysfs_hwe;
>>
>> Whwere is this sysfs_hwe used?
>> I wonder whether we really need 'struct kobj_hwe'.
>> Why can't we just have kobject defined here in the xe_hw_engine sturcture
>> instead of having a pointer to one. That way we don't need to kzalloc it.
>
>You are right, its miss. I initially thought same and added sysfs_hwe and ended up not using it. As container of does not work on pointers.
>
>If we add it as part of xe_hw_engine then also allocation will happen right! And other reason to keep this way was to maintain uniformity the same way GT sysfs is doing and same way its done in tile sysfs patch(which is on patchwork) as well.
>
>Thanks,
>Tejas
>>
>> Niranjana
>>
>> > };
>> >
>> > /**
>> >--
>> >2.25.1
>> >

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties
  2023-06-21  3:55       ` Niranjana Vishwanathapura
@ 2023-06-21  5:19         ` Upadhyay, Tejas
  0 siblings, 0 replies; 23+ messages in thread
From: Upadhyay, Tejas @ 2023-06-21  5:19 UTC (permalink / raw)
  To: Vishwanathapura, Niranjana; +Cc: intel-xe



> -----Original Message-----
> From: Vishwanathapura, Niranjana <niranjana.vishwanathapura@intel.com>
> Sent: Wednesday, June 21, 2023 9:25 AM
> To: Upadhyay, Tejas <tejas.upadhyay@intel.com>
> Cc: Brost, Matthew <matthew.brost@intel.com>; intel-
> xe@lists.freedesktop.org; Iddamsetty, Aravind
> <aravind.iddamsetty@intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray@intel.com>
> Subject: Re: [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler
> properties
> 
> On Sun, Jun 18, 2023 at 09:43:51PM -0700, Upadhyay, Tejas wrote:
> >
> >
> >> -----Original Message-----
> >> From: Vishwanathapura, Niranjana
> >> <niranjana.vishwanathapura@intel.com>
> >> Sent: Saturday, June 17, 2023 2:26 AM
> >> To: Upadhyay, Tejas <tejas.upadhyay@intel.com>
> >> Cc: intel-xe@lists.freedesktop.org; Iddamsetty, Aravind
> >> <aravind.iddamsetty@intel.com>; Ghimiray, Himal Prasad
> >> <himal.prasad.ghimiray@intel.com>; Brost, Matthew
> >> <matthew.brost@intel.com>
> >> Subject: Re: [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler
> >> properties
> >>
> >> On Thu, Jun 15, 2023 at 07:49:33PM +0530, Tejas Upadhyay wrote:
> >> >Add sysfs entries for the min, max, and defaults for each of engine
> >> >scheduler controls for every hardware engine class.
> >> >
> >> >Non-elevated user IOCTLs to set these controls must be within the
> >> >min-max ranges of the sysfs entries, elevated user can set these
> >> >controls to any value.
> >> >
> >> >Introducing compile time CONFIG min-max values which restricts
> >> >elevated user to be in compile time min-max range if at all sysfs
> >> >min/max are violated.
> >> >
> >> >Sysfs entries examples are,
> >> >DUT# cat /sys/class/drm/cardX/device/gtN/engines/ccs/.defaults/
> >> >job_timeout_max         job_timeout_ms          preempt_timeout_min
> >> timeslice_duration_max  timeslice_duration_us
> >> >job_timeout_min         preempt_timeout_max     preempt_timeout_us
> >> timeslice_duration_min
> >> >
> >> >DUT# cat /sys/class/drm/card1/device/gt1/engines/ccs/
> >> >.defaults/              job_timeout_min         preempt_timeout_max
> >> preempt_timeout_us      timeslice_duration_min
> >> >job_timeout_max         job_timeout_ms          preempt_timeout_min
> >> timeslice_duration_max  timeslice_duration_us
> >> >
> >> >Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
> 
> <snip>
> 
> >> >diff --git a/drivers/gpu/drm/xe/xe_engine.c
> >> >b/drivers/gpu/drm/xe/xe_engine.c index e72423bc398a..c368ffd5e461
> >> >100644
> >> >--- a/drivers/gpu/drm/xe/xe_engine.c
> >> >+++ b/drivers/gpu/drm/xe/xe_engine.c
> >> >@@ -13,6 +13,7 @@
> >> >
> >> > #include "xe_device.h"
> >> > #include "xe_gt.h"
> >> >+#include "xe_gt_sysfs.h"
> >> > #include "xe_hw_fence.h"
> >> > #include "xe_lrc.h"
> >> > #include "xe_macros.h"
> >> >@@ -191,9 +192,20 @@ static int engine_set_priority(struct xe_device
> >> >*xe, struct xe_engine *e,  static int engine_set_timeslice(struct
> >> >xe_device
> >> *xe, struct xe_engine *e,
> >> > 				u64 value, bool create)
> >> > {
> >> >-	if (!capable(CAP_SYS_NICE))
> >> >+	if (!capable(CAP_SYS_NICE) &&
> >> >+	    !engine_timeout_in_range(value,
> >> >+				     e->hwe->sched_props.timeslice_min,
> >> >+				     e->hwe->sched_props.timeslice_max))
> >> > 		return -EPERM;
> >> >
> >> >+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> >> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> >> >+	if (capable(CAP_SYS_NICE) &&
> >> >+	    !engine_timeout_in_range(value,
> >> >+				     CONFIG_DRM_XE_TIMESLICE_MIN,
> >> >+				     CONFIG_DRM_XE_TIMESLICE_MAX))
> >> >+		return -EPERM;
> >> >+#endif
> >>
> >> Do we really need this second boundary check given the in the first
> >> check above, the e->hwe->sched_props.timeslice_min/max values are
> >> already subjected to these boundaries?
> >> Applies for other below parameters also.
> >
> >Yes we need because,
> >If elevated user exceeds configured sysfs min/max (he is allowed to do so),
> which number could be below or above compile config min max.
> >As user can try any value through IOCTL/sysfs being elevated user, we need
> to check with second check.
> >
> 
> I thought CONFIG_DRM_XE_TIMESLICE_MIN/MAX are the default values of
> hwe->sched_props.timeslice_min/max
> which user can override. But looking at timeslice_duration_min/max_store(),
> looks like these configs are not default min/max values but a boundary for
> min/max values. I am confused.

Yes it is boundary for elevated user to config min/max as well as default value if not configured by user.

Tejas
> 
> Niranjana
> 
> >>
> >> >+
> >> > 	return e->ops->set_timeslice(e, value); }
> >> >

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties
  2023-06-15 14:19 ` [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties Tejas Upadhyay
  2023-06-16 20:56   ` Niranjana Vishwanathapura
@ 2023-06-22  9:40   ` Ghimiray, Himal Prasad
  2023-06-22 10:05     ` Upadhyay, Tejas
  1 sibling, 1 reply; 23+ messages in thread
From: Ghimiray, Himal Prasad @ 2023-06-22  9:40 UTC (permalink / raw)
  To: Upadhyay, Tejas, intel-xe


Hi Tejas,

> -----Original Message-----
> From: Upadhyay, Tejas <tejas.upadhyay@intel.com>
> Sent: 15 June 2023 19:50
> To: intel-xe@lists.freedesktop.org
> Cc: Iddamsetty, Aravind <aravind.iddamsetty@intel.com>; Ghimiray, Himal
> Prasad <himal.prasad.ghimiray@intel.com>; Brost, Matthew
> <matthew.brost@intel.com>; Vishwanathapura, Niranjana
> <niranjana.vishwanathapura@intel.com>; Upadhyay, Tejas
> <tejas.upadhyay@intel.com>
> Subject: [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler
> properties
> 
> Add sysfs entries for the min, max, and defaults for each of engine scheduler
> controls for every hardware engine class.
> 
> Non-elevated user IOCTLs to set these controls must be within the min-max
> ranges of the sysfs entries, elevated user can set these controls to any value.
> 
> Introducing compile time CONFIG min-max values which restricts elevated
> user to be in compile time min-max range if at all sysfs min/max are violated.
> 
> Sysfs entries examples are,
> DUT# cat /sys/class/drm/cardX/device/gtN/engines/ccs/.defaults/
> job_timeout_max         job_timeout_ms          preempt_timeout_min
> timeslice_duration_max  timeslice_duration_us
> job_timeout_min         preempt_timeout_max     preempt_timeout_us
> timeslice_duration_min
> 
> DUT# cat /sys/class/drm/card1/device/gt1/engines/ccs/
> .defaults/              job_timeout_min         preempt_timeout_max
> preempt_timeout_us      timeslice_duration_min
> job_timeout_max         job_timeout_ms          preempt_timeout_min
> timeslice_duration_max  timeslice_duration_us
> 
> Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
> ---
>  drivers/gpu/drm/xe/Kconfig              |   7 +
>  drivers/gpu/drm/xe/Kconfig.profile      |  39 +++
>  drivers/gpu/drm/xe/xe_engine.c          |  40 ++-
>  drivers/gpu/drm/xe/xe_gt_sysfs.c        | 373 ++++++++++++++++++++++--
>  drivers/gpu/drm/xe/xe_gt_sysfs.h        |   1 +
>  drivers/gpu/drm/xe/xe_hw_engine.c       |   6 +
>  drivers/gpu/drm/xe/xe_hw_engine.h       |  31 ++
>  drivers/gpu/drm/xe/xe_hw_engine_types.h |  12 +
>  8 files changed, 485 insertions(+), 24 deletions(-)  create mode 100644
> drivers/gpu/drm/xe/Kconfig.profile
> 
> diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig index
> d44794f99338..964c440a1135 100644
> --- a/drivers/gpu/drm/xe/Kconfig
> +++ b/drivers/gpu/drm/xe/Kconfig
> @@ -83,3 +83,10 @@ depends on DRM_XE
>  depends on EXPERT
>  source "drivers/gpu/drm/xe/Kconfig.debug"
>  endmenu
> +
> +menu "drm/xe Profile Guided Optimisation"
> +        visible if EXPERT
> +        depends on DRM_XE
> +        source "drivers/gpu/drm/xe/Kconfig.profile"
> +endmenu
> +
> diff --git a/drivers/gpu/drm/xe/Kconfig.profile
> b/drivers/gpu/drm/xe/Kconfig.profile
> new file mode 100644
> index 000000000000..cffd73e44ca9
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/Kconfig.profile
> @@ -0,0 +1,39 @@
> +config DRM_XE_JOB_TIMEOUT_MAX
> +	int "Default max job timeout (ms)"
> +	default 10000 # milliseconds
> +	help
> +	  Configures the default max job timeout after which job will
> +	  be forcefully taken away from scheduler.
> +config DRM_XE_JOB_TIMEOUT_MIN
> +	int "Default max job timeout (ms)"
> +	default 1 # milliseconds
> +	help
> +	  Configures the default min job timeout after which job will
> +	  be forcefully taken away from scheduler.
> +config DRM_XE_TIMESLICE_MAX
> +	int "Default max timeslice duration (us)"
> +	default 10000000 # microseconds
> +	help
> +	  Configures the default max timeslice duration between multiple
> +	  contexts by guc scheduling.
> +config DRM_XE_TIMESLICE_MIN
> +	int "Default min timeslice duration (us)"
> +	default 1 # microseconds
> +	help
> +	  Configures the default min timeslice duration between multiple
> +	  contexts by guc scheduling.
> +config DRM_XE_PREEMPT_TIMEOUT_MAX
> +	int "Default max  preempt timeout (us)"
> +	default 10000000 # microseconds
> +	help
> +	  Configures the default max preempt timeout after which context
> +	  will be forcefully taken away and higher priority context will
> +	  run.
> +config DRM_XE_PREEMPT_TIMEOUT_MIN
> +	int "Default min  preempt timeout (us)"
> +	default 1 # microseconds
> +	help
> +	  Configures the default min preempt timeout after which context
> +	  will be forcefully taken away and higher priority context will
> +	  run.
> +
> diff --git a/drivers/gpu/drm/xe/xe_engine.c
> b/drivers/gpu/drm/xe/xe_engine.c index e72423bc398a..c368ffd5e461
> 100644
> --- a/drivers/gpu/drm/xe/xe_engine.c
> +++ b/drivers/gpu/drm/xe/xe_engine.c
> @@ -13,6 +13,7 @@
> 
>  #include "xe_device.h"
>  #include "xe_gt.h"
> +#include "xe_gt_sysfs.h"
>  #include "xe_hw_fence.h"
>  #include "xe_lrc.h"
>  #include "xe_macros.h"
> @@ -191,9 +192,20 @@ static int engine_set_priority(struct xe_device *xe,
> struct xe_engine *e,  static int engine_set_timeslice(struct xe_device *xe,
> struct xe_engine *e,
>  				u64 value, bool create)
>  {
> -	if (!capable(CAP_SYS_NICE))
> +	if (!capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(value,
> +				     e->hwe->sched_props.timeslice_min,
> +				     e->hwe->sched_props.timeslice_max))
>  		return -EPERM;
> 
> +#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> +	if (capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(value,
> +				     CONFIG_DRM_XE_TIMESLICE_MIN,
> +				     CONFIG_DRM_XE_TIMESLICE_MAX))
> +		return -EPERM;
> +#endif
> +
Incase of CONFIG being not defined, you are allowing privileged user to set any value which seems wrong.
If CONFIGS are not set,  for privileged user the limit should be same as unprivileged user. 
Same applies to other routines too. 

BR
Himal Ghimiray, 
>  	return e->ops->set_timeslice(e, value);  }
> 
> @@ -201,8 +213,19 @@ static int engine_set_preemption_timeout(struct
> xe_device *xe,
>  					 struct xe_engine *e, u64 value,
>  					 bool create)
>  {
> -	if (!capable(CAP_SYS_NICE))
> +	if (!capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(value,
> +				     e->hwe-
> >sched_props.preempt_timeout_min,
> +				     e->hwe-
> >sched_props.preempt_timeout_max))
> +		return -EPERM;
> +
> +#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> +	if (capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(value,
> +
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> +
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
>  		return -EPERM;
> +#endif
> 
>  	return e->ops->set_preempt_timeout(e, value);  } @@ -269,8
> +292,19 @@ static int engine_set_job_timeout(struct xe_device *xe, struct
> xe_engine *e,
>  	if (XE_IOCTL_ERR(xe, !create))
>  		return -EINVAL;
> 
> -	if (!capable(CAP_SYS_NICE))
> +	if (!capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(value,
> +				     e->hwe->sched_props.job_timeout_min,
> +				     e->hwe->sched_props.job_timeout_max))
> +		return -EPERM;
> +
> +#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> +	if (capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(value,
> +				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> +				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
>  		return -EPERM;
> +#endif
> 
>  	return e->ops->set_job_timeout(e, value);  } diff --git
> a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> index f88f8f7dfc7b..415b60845eef 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> @@ -32,6 +32,11 @@ static struct kobj_type kobj_xe_engine_type = {
>  	.sysfs_ops = &kobj_sysfs_ops
>  };
> 
> +bool engine_timeout_in_range(u64 timeout, u64 min, u64 max) {
> +	return timeout >= min && timeout <= max; }
> +
>  static ssize_t preempt_timeout_store(struct kobject *kobj,
>  				     struct kobj_attribute *attr,
>  				     const char *buf, size_t count) @@ -44,9
> +49,20 @@ static ssize_t preempt_timeout_store(struct kobject *kobj,
>  	if (err)
>  		return err;
> 
> -	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> +	if (!capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(timeout,
> +				     hwe-
> >sched_props.preempt_timeout_min,
> +				     hwe-
> >sched_props.preempt_timeout_max))
>  		return -EINVAL;
> 
> +#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> +	if (capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(timeout,
> +
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> +
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> +		return -EINVAL;
> +#endif
> +
>  	WRITE_ONCE(hwe->sched_props.preempt_timeout_us, timeout);
> 
>  	return count;
> @@ -63,6 +79,78 @@ static ssize_t preempt_timeout_show(struct kobject
> *kobj,  static struct kobj_attribute preempt_timeout_attr =
> __ATTR(preempt_timeout_us, 0644, preempt_timeout_show,
> preempt_timeout_store);
> 
> +static ssize_t preempt_timeout_max_store(struct kobject *kobj,
> +					 struct kobj_attribute *attr,
> +					 const char *buf, size_t count)
> +{
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +	u32 timeout;
> +	int err;
> +
> +	err = kstrtou32(buf, 0, &timeout);
> +	if (err)
> +		return err;
> +
> +#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> +	if (!engine_timeout_in_range(timeout,
> +
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> +
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> +		return -EINVAL;
> +#endif
> +
> +	WRITE_ONCE(hwe->sched_props.preempt_timeout_max, timeout);
> +
> +	return count;
> +}
> +
> +static ssize_t preempt_timeout_max_show(struct kobject *kobj,
> +					struct kobj_attribute *attr, char *buf)
> {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +
> +	return sprintf(buf, "%u\n", hwe-
> >sched_props.preempt_timeout_max);
> +}
> +
> +static struct kobj_attribute preempt_timeout_max_attr =
> +	__ATTR(preempt_timeout_max, 0644, preempt_timeout_max_show,
> +	       preempt_timeout_max_store);
> +
> +static ssize_t preempt_timeout_min_store(struct kobject *kobj,
> +					 struct kobj_attribute *attr,
> +					 const char *buf, size_t count)
> +{
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +	u32 timeout;
> +	int err;
> +
> +	err = kstrtou32(buf, 0, &timeout);
> +	if (err)
> +		return err;
> +
> +#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> +	if (!engine_timeout_in_range(timeout,
> +
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> +
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> +		return -EINVAL;
> +#endif
> +
> +	WRITE_ONCE(hwe->sched_props.preempt_timeout_min, timeout);
> +
> +	return count;
> +}
> +
> +static ssize_t preempt_timeout_min_show(struct kobject *kobj,
> +					struct kobj_attribute *attr, char *buf)
> {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +
> +	return sprintf(buf, "%u\n", hwe-
> >sched_props.preempt_timeout_min);
> +}
> +
> +static struct kobj_attribute preempt_timeout_min_attr =
> +	__ATTR(preempt_timeout_min, 0644, preempt_timeout_min_show,
> +	       preempt_timeout_min_store);
> +
>  static ssize_t timeslice_duration_store(struct kobject *kobj,
>  		struct kobj_attribute *attr,
>  		const char *buf, size_t count)
> @@ -75,8 +163,19 @@ static ssize_t timeslice_duration_store(struct kobject
> *kobj,
>  	if (err)
>  		return err;
> 
> -	if (duration > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> +	if (!capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(duration,
> +				     hwe->sched_props.timeslice_min,
> +				     hwe->sched_props.timeslice_max))
> +		return -EINVAL;
> +
> +#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> +	if (capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(duration,
> +				     CONFIG_DRM_XE_TIMESLICE_MIN,
> +				     CONFIG_DRM_XE_TIMESLICE_MAX))
>  		return -EINVAL;
> +#endif
> 
>  	WRITE_ONCE(hwe->sched_props.timeslice_us, duration);
> 
> @@ -95,6 +194,79 @@ static struct kobj_attribute timeslice_duration_attr =
> __ATTR(timeslice_duration_us, 0644, timeslice_duration_show,
> timeslice_duration_store);
> 
> +static ssize_t timeslice_duration_max_store(struct kobject *kobj,
> +					    struct kobj_attribute *attr,
> +					    const char *buf, size_t count) {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +	u32 duration;
> +	int err;
> +
> +	err = kstrtou32(buf, 0, &duration);
> +	if (err)
> +		return err;
> +
> +#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> +	if (!engine_timeout_in_range(duration,
> +				     CONFIG_DRM_XE_TIMESLICE_MIN,
> +				     CONFIG_DRM_XE_TIMESLICE_MAX))
> +		return -EINVAL;
> +#endif
> +
> +	WRITE_ONCE(hwe->sched_props.timeslice_max, duration);
> +
> +	return count;
> +}
> +
> +static ssize_t timeslice_duration_max_show(struct kobject *kobj,
> +					   struct kobj_attribute *attr,
> +					   char *buf)
> +{
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +
> +	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_max); }
> +
> +static struct kobj_attribute timeslice_duration_max_attr =
> +	__ATTR(timeslice_duration_max, 0644,
> timeslice_duration_max_show,
> +	       timeslice_duration_max_store);
> +
> +static ssize_t timeslice_duration_min_store(struct kobject *kobj,
> +					    struct kobj_attribute *attr,
> +					    const char *buf, size_t count) {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +	u32 duration;
> +	int err;
> +
> +	err = kstrtou32(buf, 0, &duration);
> +	if (err)
> +		return err;
> +
> +#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> +	if (!engine_timeout_in_range(duration,
> +				     CONFIG_DRM_XE_TIMESLICE_MIN,
> +				     CONFIG_DRM_XE_TIMESLICE_MAX))
> +		return -EINVAL;
> +#endif
> +
> +	WRITE_ONCE(hwe->sched_props.timeslice_min, duration);
> +
> +	return count;
> +}
> +
> +static ssize_t timeslice_duration_min_show(struct kobject *kobj,
> +					   struct kobj_attribute *attr, char
> *buf) {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +
> +	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_min); }
> +
> +static struct kobj_attribute timeslice_duration_min_attr =
> +	__ATTR(timeslice_duration_min, 0644,
> timeslice_duration_min_show,
> +	       timeslice_duration_min_store);
> +
>  static ssize_t job_timeout_store(struct kobject *kobj,
>  		struct kobj_attribute *attr,
>  		const char *buf, size_t count)
> @@ -107,8 +279,19 @@ static ssize_t job_timeout_store(struct kobject
> *kobj,
>  	if (err)
>  		return err;
> 
> -	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> +	if (!capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(timeout,
> +				     hwe->sched_props.job_timeout_min,
> +				     hwe->sched_props.job_timeout_max))
> +		return -EINVAL;
> +
> +#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> +	if (capable(CAP_SYS_NICE) &&
> +	    !engine_timeout_in_range(timeout,
> +				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> +				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
>  		return -EINVAL;
> +#endif
> 
>  	WRITE_ONCE(hwe->sched_props.job_timeout_ms, timeout);
> 
> @@ -126,6 +309,89 @@ static ssize_t job_timeout_show(struct kobject
> *kobj,  static struct kobj_attribute job_timeout_attr =
> __ATTR(job_timeout_ms, 0644, job_timeout_show, job_timeout_store);
> 
> +static ssize_t job_timeout_max_store(struct kobject *kobj,
> +				     struct kobj_attribute *attr,
> +				     const char *buf, size_t count) {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +	u32 timeout;
> +	int err;
> +
> +	err = kstrtou32(buf, 0, &timeout);
> +	if (err)
> +		return err;
> +
> +#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> +	if (!engine_timeout_in_range(timeout,
> +				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> +				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> +		return -EINVAL;
> +#endif
> +
> +	WRITE_ONCE(hwe->sched_props.job_timeout_max, timeout);
> +
> +	return count;
> +}
> +
> +static ssize_t job_timeout_max_show(struct kobject *kobj,
> +				    struct kobj_attribute *attr, char *buf) {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +
> +	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_max);
> +}
> +
> +static struct kobj_attribute job_timeout_max_attr =
> +__ATTR(job_timeout_max, 0644, job_timeout_max_show,
> +job_timeout_max_store);
> +
> +static ssize_t job_timeout_min_store(struct kobject *kobj,
> +				     struct kobj_attribute *attr,
> +				     const char *buf, size_t count) {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +	u32 timeout;
> +	int err;
> +
> +	err = kstrtou32(buf, 0, &timeout);
> +	if (err)
> +		return err;
> +
> +#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> +	if (!engine_timeout_in_range(timeout,
> +				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> +				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> +		return -EINVAL;
> +#endif
> +
> +	WRITE_ONCE(hwe->sched_props.job_timeout_min, timeout);
> +
> +	return count;
> +}
> +
> +static ssize_t job_timeout_min_show(struct kobject *kobj,
> +				    struct kobj_attribute *attr, char *buf) {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> +
> +	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_min);
> +}
> +
> +static struct kobj_attribute job_timeout_min_attr =
> +__ATTR(job_timeout_min, 0644, job_timeout_min_show,
> +job_timeout_min_store);
> +
> +static const struct attribute *files[] = {
> +	&job_timeout_attr.attr,
> +	&job_timeout_min_attr.attr,
> +	&job_timeout_max_attr.attr,
> +	&timeslice_duration_attr.attr,
> +	&timeslice_duration_min_attr.attr,
> +	&timeslice_duration_max_attr.attr,
> +	&preempt_timeout_attr.attr,
> +	&preempt_timeout_min_attr.attr,
> +	&preempt_timeout_max_attr.attr,
> +	NULL
> +};
> +
>  static ssize_t job_timeout_default(struct kobject *kobj,
>  				 struct kobj_attribute *attr, char *buf)  { @@
> -137,6 +403,28 @@ static ssize_t job_timeout_default(struct kobject *kobj,
> static struct kobj_attribute job_timeout_def =  __ATTR(job_timeout_ms,
> 0444, job_timeout_default, NULL);
> 
> +static ssize_t job_timeout_min_default(struct kobject *kobj,
> +				       struct kobj_attribute *attr, char *buf) {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> +
> +	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_min); }
> +
> +static struct kobj_attribute job_timeout_min_def =
> +__ATTR(job_timeout_min, 0444, job_timeout_min_default, NULL);
> +
> +static ssize_t job_timeout_max_default(struct kobject *kobj,
> +				       struct kobj_attribute *attr, char *buf) {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> +
> +	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_max); }
> +
> +static struct kobj_attribute job_timeout_max_def =
> +__ATTR(job_timeout_max, 0444, job_timeout_max_default, NULL);
> +
>  static ssize_t timeslice_default(struct kobject *kobj,
>  				 struct kobj_attribute *attr, char *buf)  { @@
> -148,6 +436,28 @@ static ssize_t timeslice_default(struct kobject *kobj,
> static struct kobj_attribute timeslice_duration_def =
> __ATTR(timeslice_duration_us, 0444, timeslice_default, NULL);
> 
> +static ssize_t timeslice_min_default(struct kobject *kobj,
> +				     struct kobj_attribute *attr, char *buf) {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> +
> +	return sprintf(buf, "%u\n", hwe->defaults.timeslice_min); }
> +
> +static struct kobj_attribute timeslice_duration_min_def =
> +__ATTR(timeslice_duration_min, 0444, timeslice_min_default, NULL);
> +
> +static ssize_t timeslice_max_default(struct kobject *kobj,
> +				     struct kobj_attribute *attr, char *buf) {
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> +
> +	return sprintf(buf, "%u\n", hwe->defaults.timeslice_max); }
> +
> +static struct kobj_attribute timeslice_duration_max_def =
> +__ATTR(timeslice_duration_max, 0444, timeslice_max_default, NULL);
> +
>  static ssize_t preempt_timeout_default(struct kobject *kobj,
>  				       struct kobj_attribute *attr,
>  				       char *buf)
> @@ -160,6 +470,43 @@ static ssize_t preempt_timeout_default(struct
> kobject *kobj,  static struct kobj_attribute preempt_timeout_def =
> __ATTR(preempt_timeout_us, 0444, preempt_timeout_default, NULL);
> 
> +static ssize_t preempt_timeout_min_default(struct kobject *kobj,
> +					   struct kobj_attribute *attr,
> +					   char *buf)
> +{
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> +
> +	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_min);
> +}
> +
> +static struct kobj_attribute preempt_timeout_min_def =
> +__ATTR(preempt_timeout_min, 0444, preempt_timeout_min_default,
> NULL);
> +
> +static ssize_t preempt_timeout_max_default(struct kobject *kobj,
> +					   struct kobj_attribute *attr,
> +					   char *buf)
> +{
> +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> +
> +	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_max);
> +}
> +
> +static struct kobj_attribute preempt_timeout_max_def =
> +__ATTR(preempt_timeout_max, 0444, preempt_timeout_max_default,
> NULL);
> +
> +static const struct attribute *defaults[] = {
> +	&job_timeout_def.attr,
> +	&job_timeout_min_def.attr,
> +	&job_timeout_max_def.attr,
> +	&timeslice_duration_def.attr,
> +	&timeslice_duration_min_def.attr,
> +	&timeslice_duration_max_def.attr,
> +	&preempt_timeout_def.attr,
> +	&preempt_timeout_min_def.attr,
> +	&preempt_timeout_max_def.attr,
> +	NULL
> +};
> +
>  int xe_add_engine_defaults(struct kobject *parent)  {
>  	struct kobject *kobj;
> @@ -175,15 +522,7 @@ int xe_add_engine_defaults(struct kobject *parent)
>  	if (err)
>  		goto err_object;
> 
> -	err = sysfs_create_file(kobj, &job_timeout_def.attr);
> -	if (err)
> -		goto err_object;
> -
> -	err = sysfs_create_file(kobj, &timeslice_duration_def.attr);
> -	if (err)
> -		goto err_object;
> -
> -	err = sysfs_create_file(kobj, &preempt_timeout_def.attr);
> +	err = sysfs_create_files(kobj, defaults);
>  	if (err)
>  		goto err_object;
> 
> @@ -286,15 +625,7 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
>  			return err;
>  		}
> 
> -		err = sysfs_create_file(&khwe->base,
> &job_timeout_attr.attr);
> -		if (err)
> -			goto err_object;
> -
> -		err = sysfs_create_file(&khwe->base,
> &timeslice_duration_attr.attr);
> -		if (err)
> -			goto err_object;
> -
> -		err = sysfs_create_file(&khwe->base,
> &preempt_timeout_attr.attr);
> +		err = sysfs_create_files(&khwe->base, files);
>  		if (err)
>  			goto err_object;
>  	}
> diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> index a539cf031c7d..a7ac7b9a9768 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> +++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> @@ -12,6 +12,7 @@
> 
>  int xe_gt_sysfs_init(struct xe_gt *gt);  int xe_gt_sysfs_engines(struct xe_gt
> *gt);
> +bool engine_timeout_in_range(u64 timeout, u64 min, u64 max);
> 
>  static inline struct xe_gt *
>  kobj_to_gt(struct kobject *kobj)
> diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c
> b/drivers/gpu/drm/xe/xe_hw_engine.c
> index 8314429cfa90..e52324eb1efa 100644
> --- a/drivers/gpu/drm/xe/xe_hw_engine.c
> +++ b/drivers/gpu/drm/xe/xe_hw_engine.c
> @@ -363,8 +363,14 @@ static void hw_engine_init_early(struct xe_gt *gt,
> struct xe_hw_engine *hwe,
>  	hwe->engine_id = id;
>  	/* FIXME: Wire up to configurable default value */
>  	hwe->sched_props.job_timeout_ms = HZ * 5;
> +	hwe->sched_props.job_timeout_min =
> XE_HW_ENGINE_JOB_TIMEOUT_MIN;
> +	hwe->sched_props.job_timeout_max =
> XE_HW_ENGINE_JOB_TIMEOUT_MAX;
>  	hwe->sched_props.timeslice_us = 1 * 1000;
> +	hwe->sched_props.timeslice_min =
> XE_HW_ENGINE_TIMESLICE_MIN;
> +	hwe->sched_props.timeslice_max =
> XE_HW_ENGINE_TIMESLICE_MAX;
>  	hwe->sched_props.preempt_timeout_us = 640 * 1000;
> +	hwe->sched_props.preempt_timeout_min =
> XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN;
> +	hwe->sched_props.preempt_timeout_max =
> +XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX;
>  	hwe->defaults = hwe->sched_props; /* Record default props */
> 
>  	xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt)); diff --git
> a/drivers/gpu/drm/xe/xe_hw_engine.h
> b/drivers/gpu/drm/xe/xe_hw_engine.h
> index 7eca9d53c7b1..3d37d6d44261 100644
> --- a/drivers/gpu/drm/xe/xe_hw_engine.h
> +++ b/drivers/gpu/drm/xe/xe_hw_engine.h
> @@ -10,6 +10,37 @@
> 
>  struct drm_printer;
> 
> +#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN
> +#define XE_HW_ENGINE_JOB_TIMEOUT_MIN
> CONFIG_DRM_XE_JOB_TIMEOUT_MIN
> +#else #define XE_HW_ENGINE_JOB_TIMEOUT_MIN 1 #endif #ifdef
> +CONFIG_DRM_XE_JOB_TIMEOUT_MAX #define
> XE_HW_ENGINE_JOB_TIMEOUT_MAX
> +CONFIG_DRM_XE_JOB_TIMEOUT_MAX #else #define
> +XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000) #endif #ifdef
> +CONFIG_DRM_XE_TIMESLICE_MIN #define
> XE_HW_ENGINE_TIMESLICE_MIN
> +CONFIG_DRM_XE_TIMESLICE_MIN #else #define
> XE_HW_ENGINE_TIMESLICE_MIN 1
> +#endif #ifdef CONFIG_DRM_XE_TIMESLICE_MAX #define
> +XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX #else
> #define
> +XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000) #endif #ifdef
> +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
> +#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN
> +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN #else #define
> +XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 1 #endif #ifdef
> +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
> +#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX
> +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX #else #define
> +XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 * 1000) #endif
> +
>  int xe_hw_engines_init_early(struct xe_gt *gt);  int
> xe_hw_engines_init(struct xe_gt *gt);  void xe_hw_engine_handle_irq(struct
> xe_hw_engine *hwe, u16 intr_vec); diff --git
> a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> index 406a1e33a05e..8582193b4947 100644
> --- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> +++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> @@ -111,10 +111,22 @@ struct xe_hw_engine {
>  	struct {
>  		/** @set_job_timeout: Set job timeout in ms for engine */
>  		u32 job_timeout_ms;
> +		/** @job_timeout_min: Min job timeout in ms for engine */
> +		u32 job_timeout_min;
> +		/** @job_timeout_max: Max job timeout in ms for engine */
> +		u32 job_timeout_max;
>  		/** @timeslice_us: timeslice period in micro-seconds */
>  		u32 timeslice_us;
> +		/** @timeslice_min: min timeslice period in micro-seconds
> */
> +		u32 timeslice_min;
> +		/** @timeslice_max: max timeslice period in micro-seconds
> */
> +		u32 timeslice_max;
>  		/** @preempt_timeout_us: preemption timeout in micro-
> seconds */
>  		u32 preempt_timeout_us;
> +		/** @preempt_timeout_min: min preemption timeout in
> micro-seconds */
> +		u32 preempt_timeout_min;
> +		/** @preempt_timeout_max: max preemption timeout in
> micro-seconds */
> +		u32 preempt_timeout_max;
>  	} sched_props, defaults;
>  	/** @sysfs: sysfs kobject pointing to this hwe */
>  	struct kobject *sysfs_hwe;
> --
> 2.25.1


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties
  2023-06-22  9:40   ` Ghimiray, Himal Prasad
@ 2023-06-22 10:05     ` Upadhyay, Tejas
  0 siblings, 0 replies; 23+ messages in thread
From: Upadhyay, Tejas @ 2023-06-22 10:05 UTC (permalink / raw)
  To: Ghimiray, Himal Prasad, intel-xe



> -----Original Message-----
> From: Ghimiray, Himal Prasad <himal.prasad.ghimiray@intel.com>
> Sent: Thursday, June 22, 2023 3:10 PM
> To: Upadhyay, Tejas <tejas.upadhyay@intel.com>; intel-
> xe@lists.freedesktop.org
> Cc: Iddamsetty, Aravind <aravind.iddamsetty@intel.com>; Brost, Matthew
> <matthew.brost@intel.com>; Vishwanathapura, Niranjana
> <niranjana.vishwanathapura@intel.com>
> Subject: RE: [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler
> properties
> 
> 
> Hi Tejas,
> 
> > -----Original Message-----
> > From: Upadhyay, Tejas <tejas.upadhyay@intel.com>
> > Sent: 15 June 2023 19:50
> > To: intel-xe@lists.freedesktop.org
> > Cc: Iddamsetty, Aravind <aravind.iddamsetty@intel.com>; Ghimiray,
> > Himal Prasad <himal.prasad.ghimiray@intel.com>; Brost, Matthew
> > <matthew.brost@intel.com>; Vishwanathapura, Niranjana
> > <niranjana.vishwanathapura@intel.com>; Upadhyay, Tejas
> > <tejas.upadhyay@intel.com>
> > Subject: [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler
> > properties
> >
> > Add sysfs entries for the min, max, and defaults for each of engine
> > scheduler controls for every hardware engine class.
> >
> > Non-elevated user IOCTLs to set these controls must be within the
> > min-max ranges of the sysfs entries, elevated user can set these controls to
> any value.
> >
> > Introducing compile time CONFIG min-max values which restricts
> > elevated user to be in compile time min-max range if at all sysfs min/max
> are violated.
> >
> > Sysfs entries examples are,
> > DUT# cat /sys/class/drm/cardX/device/gtN/engines/ccs/.defaults/
> > job_timeout_max         job_timeout_ms          preempt_timeout_min
> > timeslice_duration_max  timeslice_duration_us
> > job_timeout_min         preempt_timeout_max     preempt_timeout_us
> > timeslice_duration_min
> >
> > DUT# cat /sys/class/drm/card1/device/gt1/engines/ccs/
> > .defaults/              job_timeout_min         preempt_timeout_max
> > preempt_timeout_us      timeslice_duration_min
> > job_timeout_max         job_timeout_ms          preempt_timeout_min
> > timeslice_duration_max  timeslice_duration_us
> >
> > Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
> > ---
> >  drivers/gpu/drm/xe/Kconfig              |   7 +
> >  drivers/gpu/drm/xe/Kconfig.profile      |  39 +++
> >  drivers/gpu/drm/xe/xe_engine.c          |  40 ++-
> >  drivers/gpu/drm/xe/xe_gt_sysfs.c        | 373 ++++++++++++++++++++++--
> >  drivers/gpu/drm/xe/xe_gt_sysfs.h        |   1 +
> >  drivers/gpu/drm/xe/xe_hw_engine.c       |   6 +
> >  drivers/gpu/drm/xe/xe_hw_engine.h       |  31 ++
> >  drivers/gpu/drm/xe/xe_hw_engine_types.h |  12 +
> >  8 files changed, 485 insertions(+), 24 deletions(-)  create mode
> > 100644 drivers/gpu/drm/xe/Kconfig.profile
> >
> > diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
> > index
> > d44794f99338..964c440a1135 100644
> > --- a/drivers/gpu/drm/xe/Kconfig
> > +++ b/drivers/gpu/drm/xe/Kconfig
> > @@ -83,3 +83,10 @@ depends on DRM_XE
> >  depends on EXPERT
> >  source "drivers/gpu/drm/xe/Kconfig.debug"
> >  endmenu
> > +
> > +menu "drm/xe Profile Guided Optimisation"
> > +        visible if EXPERT
> > +        depends on DRM_XE
> > +        source "drivers/gpu/drm/xe/Kconfig.profile"
> > +endmenu
> > +
> > diff --git a/drivers/gpu/drm/xe/Kconfig.profile
> > b/drivers/gpu/drm/xe/Kconfig.profile
> > new file mode 100644
> > index 000000000000..cffd73e44ca9
> > --- /dev/null
> > +++ b/drivers/gpu/drm/xe/Kconfig.profile
> > @@ -0,0 +1,39 @@
> > +config DRM_XE_JOB_TIMEOUT_MAX
> > +	int "Default max job timeout (ms)"
> > +	default 10000 # milliseconds
> > +	help
> > +	  Configures the default max job timeout after which job will
> > +	  be forcefully taken away from scheduler.
> > +config DRM_XE_JOB_TIMEOUT_MIN
> > +	int "Default max job timeout (ms)"
> > +	default 1 # milliseconds
> > +	help
> > +	  Configures the default min job timeout after which job will
> > +	  be forcefully taken away from scheduler.
> > +config DRM_XE_TIMESLICE_MAX
> > +	int "Default max timeslice duration (us)"
> > +	default 10000000 # microseconds
> > +	help
> > +	  Configures the default max timeslice duration between multiple
> > +	  contexts by guc scheduling.
> > +config DRM_XE_TIMESLICE_MIN
> > +	int "Default min timeslice duration (us)"
> > +	default 1 # microseconds
> > +	help
> > +	  Configures the default min timeslice duration between multiple
> > +	  contexts by guc scheduling.
> > +config DRM_XE_PREEMPT_TIMEOUT_MAX
> > +	int "Default max  preempt timeout (us)"
> > +	default 10000000 # microseconds
> > +	help
> > +	  Configures the default max preempt timeout after which context
> > +	  will be forcefully taken away and higher priority context will
> > +	  run.
> > +config DRM_XE_PREEMPT_TIMEOUT_MIN
> > +	int "Default min  preempt timeout (us)"
> > +	default 1 # microseconds
> > +	help
> > +	  Configures the default min preempt timeout after which context
> > +	  will be forcefully taken away and higher priority context will
> > +	  run.
> > +
> > diff --git a/drivers/gpu/drm/xe/xe_engine.c
> > b/drivers/gpu/drm/xe/xe_engine.c index e72423bc398a..c368ffd5e461
> > 100644
> > --- a/drivers/gpu/drm/xe/xe_engine.c
> > +++ b/drivers/gpu/drm/xe/xe_engine.c
> > @@ -13,6 +13,7 @@
> >
> >  #include "xe_device.h"
> >  #include "xe_gt.h"
> > +#include "xe_gt_sysfs.h"
> >  #include "xe_hw_fence.h"
> >  #include "xe_lrc.h"
> >  #include "xe_macros.h"
> > @@ -191,9 +192,20 @@ static int engine_set_priority(struct xe_device
> > *xe, struct xe_engine *e,  static int engine_set_timeslice(struct
> > xe_device *xe, struct xe_engine *e,
> >  				u64 value, bool create)
> >  {
> > -	if (!capable(CAP_SYS_NICE))
> > +	if (!capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(value,
> > +				     e->hwe->sched_props.timeslice_min,
> > +				     e->hwe->sched_props.timeslice_max))
> >  		return -EPERM;
> >
> > +#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> > defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> > +	if (capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(value,
> > +				     CONFIG_DRM_XE_TIMESLICE_MIN,
> > +				     CONFIG_DRM_XE_TIMESLICE_MAX))
> > +		return -EPERM;
> > +#endif
> > +
> Incase of CONFIG being not defined, you are allowing privileged user to set
> any value which seems wrong.
> If CONFIGS are not set,  for privileged user the limit should be same as
> unprivileged user.
> Same applies to other routines too.
> 
> BR
> Himal Ghimiray,

Yes had two options in mind, either use configured min/max as cap or use defined (not compile config) defaults as limit factor. But wanted to discuss first, which option looks better.

Thanks,
Tejas 
> >  	return e->ops->set_timeslice(e, value);  }
> >
> > @@ -201,8 +213,19 @@ static int engine_set_preemption_timeout(struct
> > xe_device *xe,
> >  					 struct xe_engine *e, u64 value,
> >  					 bool create)
> >  {
> > -	if (!capable(CAP_SYS_NICE))
> > +	if (!capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(value,
> > +				     e->hwe-
> > >sched_props.preempt_timeout_min,
> > +				     e->hwe-
> > >sched_props.preempt_timeout_max))
> > +		return -EPERM;
> > +
> > +#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> > defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> > +	if (capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(value,
> > +
> > CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> > +
> > CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> >  		return -EPERM;
> > +#endif
> >
> >  	return e->ops->set_preempt_timeout(e, value);  } @@ -269,8
> > +292,19 @@ static int engine_set_job_timeout(struct xe_device *xe,
> > +struct
> > xe_engine *e,
> >  	if (XE_IOCTL_ERR(xe, !create))
> >  		return -EINVAL;
> >
> > -	if (!capable(CAP_SYS_NICE))
> > +	if (!capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(value,
> > +				     e->hwe->sched_props.job_timeout_min,
> > +				     e->hwe->sched_props.job_timeout_max))
> > +		return -EPERM;
> > +
> > +#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> > defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> > +	if (capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(value,
> > +				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> > +				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> >  		return -EPERM;
> > +#endif
> >
> >  	return e->ops->set_job_timeout(e, value);  } diff --git
> > a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> > index f88f8f7dfc7b..415b60845eef 100644
> > --- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
> > +++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> > @@ -32,6 +32,11 @@ static struct kobj_type kobj_xe_engine_type = {
> >  	.sysfs_ops = &kobj_sysfs_ops
> >  };
> >
> > +bool engine_timeout_in_range(u64 timeout, u64 min, u64 max) {
> > +	return timeout >= min && timeout <= max; }
> > +
> >  static ssize_t preempt_timeout_store(struct kobject *kobj,
> >  				     struct kobj_attribute *attr,
> >  				     const char *buf, size_t count) @@ -44,9
> > +49,20 @@ static ssize_t preempt_timeout_store(struct kobject *kobj,
> >  	if (err)
> >  		return err;
> >
> > -	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> > +	if (!capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(timeout,
> > +				     hwe-
> > >sched_props.preempt_timeout_min,
> > +				     hwe-
> > >sched_props.preempt_timeout_max))
> >  		return -EINVAL;
> >
> > +#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> > defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> > +	if (capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(timeout,
> > +
> > CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> > +
> > CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> > +		return -EINVAL;
> > +#endif
> > +
> >  	WRITE_ONCE(hwe->sched_props.preempt_timeout_us, timeout);
> >
> >  	return count;
> > @@ -63,6 +79,78 @@ static ssize_t preempt_timeout_show(struct kobject
> > *kobj,  static struct kobj_attribute preempt_timeout_attr =
> > __ATTR(preempt_timeout_us, 0644, preempt_timeout_show,
> > preempt_timeout_store);
> >
> > +static ssize_t preempt_timeout_max_store(struct kobject *kobj,
> > +					 struct kobj_attribute *attr,
> > +					 const char *buf, size_t count)
> > +{
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +	u32 timeout;
> > +	int err;
> > +
> > +	err = kstrtou32(buf, 0, &timeout);
> > +	if (err)
> > +		return err;
> > +
> > +#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> > defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> > +	if (!engine_timeout_in_range(timeout,
> > +
> > CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> > +
> > CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> > +		return -EINVAL;
> > +#endif
> > +
> > +	WRITE_ONCE(hwe->sched_props.preempt_timeout_max, timeout);
> > +
> > +	return count;
> > +}
> > +
> > +static ssize_t preempt_timeout_max_show(struct kobject *kobj,
> > +					struct kobj_attribute *attr, char *buf)
> > {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +
> > +	return sprintf(buf, "%u\n", hwe-
> > >sched_props.preempt_timeout_max);
> > +}
> > +
> > +static struct kobj_attribute preempt_timeout_max_attr =
> > +	__ATTR(preempt_timeout_max, 0644, preempt_timeout_max_show,
> > +	       preempt_timeout_max_store);
> > +
> > +static ssize_t preempt_timeout_min_store(struct kobject *kobj,
> > +					 struct kobj_attribute *attr,
> > +					 const char *buf, size_t count)
> > +{
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +	u32 timeout;
> > +	int err;
> > +
> > +	err = kstrtou32(buf, 0, &timeout);
> > +	if (err)
> > +		return err;
> > +
> > +#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> > defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> > +	if (!engine_timeout_in_range(timeout,
> > +
> > CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> > +
> > CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> > +		return -EINVAL;
> > +#endif
> > +
> > +	WRITE_ONCE(hwe->sched_props.preempt_timeout_min, timeout);
> > +
> > +	return count;
> > +}
> > +
> > +static ssize_t preempt_timeout_min_show(struct kobject *kobj,
> > +					struct kobj_attribute *attr, char *buf)
> > {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +
> > +	return sprintf(buf, "%u\n", hwe-
> > >sched_props.preempt_timeout_min);
> > +}
> > +
> > +static struct kobj_attribute preempt_timeout_min_attr =
> > +	__ATTR(preempt_timeout_min, 0644, preempt_timeout_min_show,
> > +	       preempt_timeout_min_store);
> > +
> >  static ssize_t timeslice_duration_store(struct kobject *kobj,
> >  		struct kobj_attribute *attr,
> >  		const char *buf, size_t count)
> > @@ -75,8 +163,19 @@ static ssize_t timeslice_duration_store(struct
> > kobject *kobj,
> >  	if (err)
> >  		return err;
> >
> > -	if (duration > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> > +	if (!capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(duration,
> > +				     hwe->sched_props.timeslice_min,
> > +				     hwe->sched_props.timeslice_max))
> > +		return -EINVAL;
> > +
> > +#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> > defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> > +	if (capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(duration,
> > +				     CONFIG_DRM_XE_TIMESLICE_MIN,
> > +				     CONFIG_DRM_XE_TIMESLICE_MAX))
> >  		return -EINVAL;
> > +#endif
> >
> >  	WRITE_ONCE(hwe->sched_props.timeslice_us, duration);
> >
> > @@ -95,6 +194,79 @@ static struct kobj_attribute
> > timeslice_duration_attr = __ATTR(timeslice_duration_us, 0644,
> > timeslice_duration_show, timeslice_duration_store);
> >
> > +static ssize_t timeslice_duration_max_store(struct kobject *kobj,
> > +					    struct kobj_attribute *attr,
> > +					    const char *buf, size_t count) {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +	u32 duration;
> > +	int err;
> > +
> > +	err = kstrtou32(buf, 0, &duration);
> > +	if (err)
> > +		return err;
> > +
> > +#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> > defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> > +	if (!engine_timeout_in_range(duration,
> > +				     CONFIG_DRM_XE_TIMESLICE_MIN,
> > +				     CONFIG_DRM_XE_TIMESLICE_MAX))
> > +		return -EINVAL;
> > +#endif
> > +
> > +	WRITE_ONCE(hwe->sched_props.timeslice_max, duration);
> > +
> > +	return count;
> > +}
> > +
> > +static ssize_t timeslice_duration_max_show(struct kobject *kobj,
> > +					   struct kobj_attribute *attr,
> > +					   char *buf)
> > +{
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +
> > +	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_max); }
> > +
> > +static struct kobj_attribute timeslice_duration_max_attr =
> > +	__ATTR(timeslice_duration_max, 0644,
> > timeslice_duration_max_show,
> > +	       timeslice_duration_max_store);
> > +
> > +static ssize_t timeslice_duration_min_store(struct kobject *kobj,
> > +					    struct kobj_attribute *attr,
> > +					    const char *buf, size_t count) {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +	u32 duration;
> > +	int err;
> > +
> > +	err = kstrtou32(buf, 0, &duration);
> > +	if (err)
> > +		return err;
> > +
> > +#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> > defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> > +	if (!engine_timeout_in_range(duration,
> > +				     CONFIG_DRM_XE_TIMESLICE_MIN,
> > +				     CONFIG_DRM_XE_TIMESLICE_MAX))
> > +		return -EINVAL;
> > +#endif
> > +
> > +	WRITE_ONCE(hwe->sched_props.timeslice_min, duration);
> > +
> > +	return count;
> > +}
> > +
> > +static ssize_t timeslice_duration_min_show(struct kobject *kobj,
> > +					   struct kobj_attribute *attr, char
> > *buf) {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +
> > +	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_min); }
> > +
> > +static struct kobj_attribute timeslice_duration_min_attr =
> > +	__ATTR(timeslice_duration_min, 0644,
> > timeslice_duration_min_show,
> > +	       timeslice_duration_min_store);
> > +
> >  static ssize_t job_timeout_store(struct kobject *kobj,
> >  		struct kobj_attribute *attr,
> >  		const char *buf, size_t count)
> > @@ -107,8 +279,19 @@ static ssize_t job_timeout_store(struct kobject
> > *kobj,
> >  	if (err)
> >  		return err;
> >
> > -	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> > +	if (!capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(timeout,
> > +				     hwe->sched_props.job_timeout_min,
> > +				     hwe->sched_props.job_timeout_max))
> > +		return -EINVAL;
> > +
> > +#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> > defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> > +	if (capable(CAP_SYS_NICE) &&
> > +	    !engine_timeout_in_range(timeout,
> > +				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> > +				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> >  		return -EINVAL;
> > +#endif
> >
> >  	WRITE_ONCE(hwe->sched_props.job_timeout_ms, timeout);
> >
> > @@ -126,6 +309,89 @@ static ssize_t job_timeout_show(struct kobject
> > *kobj,  static struct kobj_attribute job_timeout_attr =
> > __ATTR(job_timeout_ms, 0644, job_timeout_show, job_timeout_store);
> >
> > +static ssize_t job_timeout_max_store(struct kobject *kobj,
> > +				     struct kobj_attribute *attr,
> > +				     const char *buf, size_t count) {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +	u32 timeout;
> > +	int err;
> > +
> > +	err = kstrtou32(buf, 0, &timeout);
> > +	if (err)
> > +		return err;
> > +
> > +#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> > defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> > +	if (!engine_timeout_in_range(timeout,
> > +				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> > +				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> > +		return -EINVAL;
> > +#endif
> > +
> > +	WRITE_ONCE(hwe->sched_props.job_timeout_max, timeout);
> > +
> > +	return count;
> > +}
> > +
> > +static ssize_t job_timeout_max_show(struct kobject *kobj,
> > +				    struct kobj_attribute *attr, char *buf) {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +
> > +	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_max);
> > +}
> > +
> > +static struct kobj_attribute job_timeout_max_attr =
> > +__ATTR(job_timeout_max, 0644, job_timeout_max_show,
> > +job_timeout_max_store);
> > +
> > +static ssize_t job_timeout_min_store(struct kobject *kobj,
> > +				     struct kobj_attribute *attr,
> > +				     const char *buf, size_t count) {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +	u32 timeout;
> > +	int err;
> > +
> > +	err = kstrtou32(buf, 0, &timeout);
> > +	if (err)
> > +		return err;
> > +
> > +#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> > defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> > +	if (!engine_timeout_in_range(timeout,
> > +				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> > +				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> > +		return -EINVAL;
> > +#endif
> > +
> > +	WRITE_ONCE(hwe->sched_props.job_timeout_min, timeout);
> > +
> > +	return count;
> > +}
> > +
> > +static ssize_t job_timeout_min_show(struct kobject *kobj,
> > +				    struct kobj_attribute *attr, char *buf) {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> > +
> > +	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_min);
> > +}
> > +
> > +static struct kobj_attribute job_timeout_min_attr =
> > +__ATTR(job_timeout_min, 0644, job_timeout_min_show,
> > +job_timeout_min_store);
> > +
> > +static const struct attribute *files[] = {
> > +	&job_timeout_attr.attr,
> > +	&job_timeout_min_attr.attr,
> > +	&job_timeout_max_attr.attr,
> > +	&timeslice_duration_attr.attr,
> > +	&timeslice_duration_min_attr.attr,
> > +	&timeslice_duration_max_attr.attr,
> > +	&preempt_timeout_attr.attr,
> > +	&preempt_timeout_min_attr.attr,
> > +	&preempt_timeout_max_attr.attr,
> > +	NULL
> > +};
> > +
> >  static ssize_t job_timeout_default(struct kobject *kobj,
> >  				 struct kobj_attribute *attr, char *buf)  { @@
> > -137,6 +403,28 @@ static ssize_t job_timeout_default(struct kobject
> > *kobj, static struct kobj_attribute job_timeout_def =
> > __ATTR(job_timeout_ms, 0444, job_timeout_default, NULL);
> >
> > +static ssize_t job_timeout_min_default(struct kobject *kobj,
> > +				       struct kobj_attribute *attr, char *buf) {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> > +
> > +	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_min); }
> > +
> > +static struct kobj_attribute job_timeout_min_def =
> > +__ATTR(job_timeout_min, 0444, job_timeout_min_default, NULL);
> > +
> > +static ssize_t job_timeout_max_default(struct kobject *kobj,
> > +				       struct kobj_attribute *attr, char *buf) {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> > +
> > +	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_max); }
> > +
> > +static struct kobj_attribute job_timeout_max_def =
> > +__ATTR(job_timeout_max, 0444, job_timeout_max_default, NULL);
> > +
> >  static ssize_t timeslice_default(struct kobject *kobj,
> >  				 struct kobj_attribute *attr, char *buf)  { @@
> > -148,6 +436,28 @@ static ssize_t timeslice_default(struct kobject
> > *kobj, static struct kobj_attribute timeslice_duration_def =
> > __ATTR(timeslice_duration_us, 0444, timeslice_default, NULL);
> >
> > +static ssize_t timeslice_min_default(struct kobject *kobj,
> > +				     struct kobj_attribute *attr, char *buf) {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> > +
> > +	return sprintf(buf, "%u\n", hwe->defaults.timeslice_min); }
> > +
> > +static struct kobj_attribute timeslice_duration_min_def =
> > +__ATTR(timeslice_duration_min, 0444, timeslice_min_default, NULL);
> > +
> > +static ssize_t timeslice_max_default(struct kobject *kobj,
> > +				     struct kobj_attribute *attr, char *buf) {
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> > +
> > +	return sprintf(buf, "%u\n", hwe->defaults.timeslice_max); }
> > +
> > +static struct kobj_attribute timeslice_duration_max_def =
> > +__ATTR(timeslice_duration_max, 0444, timeslice_max_default, NULL);
> > +
> >  static ssize_t preempt_timeout_default(struct kobject *kobj,
> >  				       struct kobj_attribute *attr,
> >  				       char *buf)
> > @@ -160,6 +470,43 @@ static ssize_t preempt_timeout_default(struct
> > kobject *kobj,  static struct kobj_attribute preempt_timeout_def =
> > __ATTR(preempt_timeout_us, 0444, preempt_timeout_default, NULL);
> >
> > +static ssize_t preempt_timeout_min_default(struct kobject *kobj,
> > +					   struct kobj_attribute *attr,
> > +					   char *buf)
> > +{
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> > +
> > +	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_min);
> > +}
> > +
> > +static struct kobj_attribute preempt_timeout_min_def =
> > +__ATTR(preempt_timeout_min, 0444, preempt_timeout_min_default,
> > NULL);
> > +
> > +static ssize_t preempt_timeout_max_default(struct kobject *kobj,
> > +					   struct kobj_attribute *attr,
> > +					   char *buf)
> > +{
> > +	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> > +
> > +	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_max);
> > +}
> > +
> > +static struct kobj_attribute preempt_timeout_max_def =
> > +__ATTR(preempt_timeout_max, 0444, preempt_timeout_max_default,
> > NULL);
> > +
> > +static const struct attribute *defaults[] = {
> > +	&job_timeout_def.attr,
> > +	&job_timeout_min_def.attr,
> > +	&job_timeout_max_def.attr,
> > +	&timeslice_duration_def.attr,
> > +	&timeslice_duration_min_def.attr,
> > +	&timeslice_duration_max_def.attr,
> > +	&preempt_timeout_def.attr,
> > +	&preempt_timeout_min_def.attr,
> > +	&preempt_timeout_max_def.attr,
> > +	NULL
> > +};
> > +
> >  int xe_add_engine_defaults(struct kobject *parent)  {
> >  	struct kobject *kobj;
> > @@ -175,15 +522,7 @@ int xe_add_engine_defaults(struct kobject
> *parent)
> >  	if (err)
> >  		goto err_object;
> >
> > -	err = sysfs_create_file(kobj, &job_timeout_def.attr);
> > -	if (err)
> > -		goto err_object;
> > -
> > -	err = sysfs_create_file(kobj, &timeslice_duration_def.attr);
> > -	if (err)
> > -		goto err_object;
> > -
> > -	err = sysfs_create_file(kobj, &preempt_timeout_def.attr);
> > +	err = sysfs_create_files(kobj, defaults);
> >  	if (err)
> >  		goto err_object;
> >
> > @@ -286,15 +625,7 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
> >  			return err;
> >  		}
> >
> > -		err = sysfs_create_file(&khwe->base,
> > &job_timeout_attr.attr);
> > -		if (err)
> > -			goto err_object;
> > -
> > -		err = sysfs_create_file(&khwe->base,
> > &timeslice_duration_attr.attr);
> > -		if (err)
> > -			goto err_object;
> > -
> > -		err = sysfs_create_file(&khwe->base,
> > &preempt_timeout_attr.attr);
> > +		err = sysfs_create_files(&khwe->base, files);
> >  		if (err)
> >  			goto err_object;
> >  	}
> > diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> > b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> > index a539cf031c7d..a7ac7b9a9768 100644
> > --- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> > +++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> > @@ -12,6 +12,7 @@
> >
> >  int xe_gt_sysfs_init(struct xe_gt *gt);  int
> > xe_gt_sysfs_engines(struct xe_gt *gt);
> > +bool engine_timeout_in_range(u64 timeout, u64 min, u64 max);
> >
> >  static inline struct xe_gt *
> >  kobj_to_gt(struct kobject *kobj)
> > diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c
> > b/drivers/gpu/drm/xe/xe_hw_engine.c
> > index 8314429cfa90..e52324eb1efa 100644
> > --- a/drivers/gpu/drm/xe/xe_hw_engine.c
> > +++ b/drivers/gpu/drm/xe/xe_hw_engine.c
> > @@ -363,8 +363,14 @@ static void hw_engine_init_early(struct xe_gt
> > *gt, struct xe_hw_engine *hwe,
> >  	hwe->engine_id = id;
> >  	/* FIXME: Wire up to configurable default value */
> >  	hwe->sched_props.job_timeout_ms = HZ * 5;
> > +	hwe->sched_props.job_timeout_min =
> > XE_HW_ENGINE_JOB_TIMEOUT_MIN;
> > +	hwe->sched_props.job_timeout_max =
> > XE_HW_ENGINE_JOB_TIMEOUT_MAX;
> >  	hwe->sched_props.timeslice_us = 1 * 1000;
> > +	hwe->sched_props.timeslice_min =
> > XE_HW_ENGINE_TIMESLICE_MIN;
> > +	hwe->sched_props.timeslice_max =
> > XE_HW_ENGINE_TIMESLICE_MAX;
> >  	hwe->sched_props.preempt_timeout_us = 640 * 1000;
> > +	hwe->sched_props.preempt_timeout_min =
> > XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN;
> > +	hwe->sched_props.preempt_timeout_max =
> > +XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX;
> >  	hwe->defaults = hwe->sched_props; /* Record default props */
> >
> >  	xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt)); diff --git
> > a/drivers/gpu/drm/xe/xe_hw_engine.h
> > b/drivers/gpu/drm/xe/xe_hw_engine.h
> > index 7eca9d53c7b1..3d37d6d44261 100644
> > --- a/drivers/gpu/drm/xe/xe_hw_engine.h
> > +++ b/drivers/gpu/drm/xe/xe_hw_engine.h
> > @@ -10,6 +10,37 @@
> >
> >  struct drm_printer;
> >
> > +#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN
> > +#define XE_HW_ENGINE_JOB_TIMEOUT_MIN
> > CONFIG_DRM_XE_JOB_TIMEOUT_MIN
> > +#else #define XE_HW_ENGINE_JOB_TIMEOUT_MIN 1 #endif #ifdef
> > +CONFIG_DRM_XE_JOB_TIMEOUT_MAX #define
> > XE_HW_ENGINE_JOB_TIMEOUT_MAX
> > +CONFIG_DRM_XE_JOB_TIMEOUT_MAX #else #define
> > +XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000) #endif #ifdef
> > +CONFIG_DRM_XE_TIMESLICE_MIN #define
> > XE_HW_ENGINE_TIMESLICE_MIN
> > +CONFIG_DRM_XE_TIMESLICE_MIN #else #define
> > XE_HW_ENGINE_TIMESLICE_MIN 1
> > +#endif #ifdef CONFIG_DRM_XE_TIMESLICE_MAX #define
> > +XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX
> #else
> > #define
> > +XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000) #endif #ifdef
> > +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
> > +#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN
> > +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN #else #define
> > +XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 1 #endif #ifdef
> > +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
> > +#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX
> > +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX #else #define
> > +XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 * 1000) #endif
> > +
> >  int xe_hw_engines_init_early(struct xe_gt *gt);  int
> > xe_hw_engines_init(struct xe_gt *gt);  void
> > xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec); diff
> > --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> > b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> > index 406a1e33a05e..8582193b4947 100644
> > --- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> > +++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> > @@ -111,10 +111,22 @@ struct xe_hw_engine {
> >  	struct {
> >  		/** @set_job_timeout: Set job timeout in ms for engine */
> >  		u32 job_timeout_ms;
> > +		/** @job_timeout_min: Min job timeout in ms for engine */
> > +		u32 job_timeout_min;
> > +		/** @job_timeout_max: Max job timeout in ms for engine */
> > +		u32 job_timeout_max;
> >  		/** @timeslice_us: timeslice period in micro-seconds */
> >  		u32 timeslice_us;
> > +		/** @timeslice_min: min timeslice period in micro-seconds
> > */
> > +		u32 timeslice_min;
> > +		/** @timeslice_max: max timeslice period in micro-seconds
> > */
> > +		u32 timeslice_max;
> >  		/** @preempt_timeout_us: preemption timeout in micro-
> seconds */
> >  		u32 preempt_timeout_us;
> > +		/** @preempt_timeout_min: min preemption timeout in
> > micro-seconds */
> > +		u32 preempt_timeout_min;
> > +		/** @preempt_timeout_max: max preemption timeout in
> > micro-seconds */
> > +		u32 preempt_timeout_max;
> >  	} sched_props, defaults;
> >  	/** @sysfs: sysfs kobject pointing to this hwe */
> >  	struct kobject *sysfs_hwe;
> > --
> > 2.25.1


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Intel-xe] [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler properties
  2023-06-21  4:29       ` Niranjana Vishwanathapura
@ 2023-06-22 12:51         ` Upadhyay, Tejas
  0 siblings, 0 replies; 23+ messages in thread
From: Upadhyay, Tejas @ 2023-06-22 12:51 UTC (permalink / raw)
  To: Vishwanathapura, Niranjana; +Cc: intel-xe



> -----Original Message-----
> From: Vishwanathapura, Niranjana <niranjana.vishwanathapura@intel.com>
> Sent: Wednesday, June 21, 2023 10:00 AM
> To: Upadhyay, Tejas <tejas.upadhyay@intel.com>
> Cc: intel-xe@lists.freedesktop.org; Iddamsetty, Aravind
> <aravind.iddamsetty@intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray@intel.com>; Brost, Matthew
> <matthew.brost@intel.com>
> Subject: Re: [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler
> properties
> 
> On Sun, Jun 18, 2023 at 10:01:45PM -0700, Upadhyay, Tejas wrote:
> >
> >
> >> -----Original Message-----
> >> From: Vishwanathapura, Niranjana
> >> <niranjana.vishwanathapura@intel.com>
> >> Sent: Saturday, June 17, 2023 2:10 AM
> >> To: Upadhyay, Tejas <tejas.upadhyay@intel.com>
> >> Cc: intel-xe@lists.freedesktop.org; Iddamsetty, Aravind
> >> <aravind.iddamsetty@intel.com>; Ghimiray, Himal Prasad
> >> <himal.prasad.ghimiray@intel.com>; Brost, Matthew
> >> <matthew.brost@intel.com>
> >> Subject: Re: [PATCH 2/6] drm/xe: Add sysfs for default engine
> >> scheduler properties
> >>
> >> On Thu, Jun 15, 2023 at 07:49:29PM +0530, Tejas Upadhyay wrote:
> >> >For each HW engine under GT we are adding defaults sysfs entry to
> >> >list all engine scheduler properties and its default values. So that
> >> >it will be easier for user to fetch default values of these
> >> >properties anytime to go back to default.
> >> >
> >> >For example,
> >> >DUT# cat /sys/class/drm/card1/device/gt0/engines/bcs/.defaults/
> >> >job_timeout_ms         preempt_timeout_us     timeslice_duration_us
> >> >
> >> >where,
> >> >@job_timeout_ms: The time after which a job is removed from the
> >> scheduler.
> >> >@preempt_timeout_us: How long to wait (in microseconds) for a
> >> preemption
> >> >                     event to occur when submitting a new context.
> >> >@timeslice_duration_us: Each context is scheduled for execution for the
> >> >                        timeslice duration, before switching to the next
> >> >                        context.
> >> >
> >> >Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
> >> >---
> >> > drivers/gpu/drm/xe/xe_engine.c          |  4 +-
> >> > drivers/gpu/drm/xe/xe_gt_sysfs.c        | 94 +++++++++++++++++++++++--
> >> > drivers/gpu/drm/xe/xe_gt_sysfs.h        |  5 ++
> >> > drivers/gpu/drm/xe/xe_gt_sysfs_types.h  | 13 ++++
> >> > drivers/gpu/drm/xe/xe_guc_submit.c      |  5 +-
> >> > drivers/gpu/drm/xe/xe_hw_engine.c       |  5 ++
> >> > drivers/gpu/drm/xe/xe_hw_engine_types.h | 11 +++
> >> > 7 files changed, 128 insertions(+), 9 deletions(-)
> >> >
> >> >diff --git a/drivers/gpu/drm/xe/xe_engine.c
> >> >b/drivers/gpu/drm/xe/xe_engine.c index b3036c4a8ec3..e72423bc398a
> >> >100644
> >> >--- a/drivers/gpu/drm/xe/xe_engine.c
> >> >+++ b/drivers/gpu/drm/xe/xe_engine.c
> >> >@@ -53,8 +53,8 @@ static struct xe_engine *__xe_engine_create(struct
> >> xe_device *xe,
> >> > 	INIT_LIST_HEAD(&e->multi_gt_link);
> >> >
> >> > 	/* FIXME: Wire up to configurable default value */
> >> >-	e->sched_props.timeslice_us = 1 * 1000;
> >> >-	e->sched_props.preempt_timeout_us = 640 * 1000;
> >> >+	e->sched_props.timeslice_us = hwe->sched_props.timeslice_us;
> >> >+	e->sched_props.preempt_timeout_us =
> >> >+hwe->sched_props.preempt_timeout_us;
> >> >
> >> > 	if (xe_engine_is_parallel(e)) {
> >> > 		e->parallel.composite_fence_ctx =
> >> dma_fence_context_alloc(1); diff
> >> >--git a/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >> >b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >> >index 7528cc723699..72809078bd83 100644
> >> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >> >@@ -32,22 +32,92 @@ static struct kobj_type kobj_xe_engine_type = {
> >> > 	.sysfs_ops = &kobj_sysfs_ops
> >> > };
> >> >
> >> >-static struct kobject *
> >> >-kobj_xe_engine(struct kobject *parent, char *name)
> >> >+static ssize_t job_timeout_default(struct kobject *kobj,
> >> >+				 struct kobj_attribute *attr, char *buf) {
> >> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >> >+
> >> >+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_ms); }
> >> >+
> >> >+static struct kobj_attribute job_timeout_def =
> >> >+__ATTR(job_timeout_ms, 0444, job_timeout_default, NULL);
> >> >+
> >> >+static ssize_t timeslice_default(struct kobject *kobj,
> >> >+				 struct kobj_attribute *attr, char *buf) {
> >> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >> >+
> >> >+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_us); }
> >> >+
> >> >+static struct kobj_attribute timeslice_duration_def =
> >> >+__ATTR(timeslice_duration_us, 0444, timeslice_default, NULL);
> >> >+
> >> >+static ssize_t preempt_timeout_default(struct kobject *kobj,
> >> >+				       struct kobj_attribute *attr,
> >> >+				       char *buf)
> >> >+{
> >> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >> >+
> >> >+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_us);
> >> >+}
> >> >+
> >> >+static struct kobj_attribute preempt_timeout_def =
> >> >+__ATTR(preempt_timeout_us, 0444, preempt_timeout_default, NULL);
> >> >+
> >> >+int xe_add_engine_defaults(struct kobject *parent)
> >> > {
> >> > 	struct kobject *kobj;
> >> >+	int err = 0;
> >> >
> >> > 	kobj = kzalloc(sizeof(*kobj), GFP_KERNEL);
> >> > 	if (!kobj)
> >> >-		return NULL;
> >> >+		return -ENOMEM;
> >> >
> >> > 	kobject_init(kobj, &kobj_xe_engine_type);
> >> >-	if (kobject_add(kobj, parent, "%s", name)) {
> >> >+
> >> >+	err = kobject_add(kobj, parent, "%s", ".defaults");
> >> >+	if (err)
> >> >+		goto err_object;
> >> >+
> >> >+	err = sysfs_create_file(kobj, &job_timeout_def.attr);
> >> >+	if (err)
> >> >+		goto err_object;
> >> >+
> >> >+	err = sysfs_create_file(kobj, &timeslice_duration_def.attr);
> >> >+	if (err)
> >> >+		goto err_object;
> >> >+
> >> >+	err = sysfs_create_file(kobj, &preempt_timeout_def.attr);
> >> >+	if (err)
> >> >+		goto err_object;
> >> >+
> >> >+	if (0) {
> >> >+err_object:
> >> > 		kobject_put(kobj);
> >> >+		return err;
> >> >+	}
> >> >+
> >> >+	return err;
> >> >+}
> >> >+
> >> >+static struct kobj_hwe *
> >> >+kobj_xe_engine(struct kobject *parent, char *name) {
> >> >+	struct kobj_hwe *khwe;
> >> >+
> >> >+	khwe = kzalloc(sizeof(*khwe), GFP_KERNEL);
> >> >+	if (!khwe)
> >> >+		return NULL;
> >> >+
> >> >+	kobject_init(&khwe->base, &kobj_xe_engine_type);
> >> >+	if (kobject_add(&khwe->base, parent, "%s", name)) {
> >> >+		kobject_put(&khwe->base);
> >> > 		return NULL;
> >> > 	}
> >> >
> >> >-	return kobj;
> >> >+	return khwe;
> >> > }
> >> >
> >> > int xe_gt_sysfs_engines(struct xe_gt *gt) @@ -72,7 +142,7 @@ int
> >> >xe_gt_sysfs_engines(struct xe_gt *gt)
> >> >
> >> > 	for_each_hw_engine(hwe, gt, id) {
> >> > 		char name[MAX_ENGINE_NAME_LEN];
> >> >-		struct kobject *khwe;
> >> >+		struct kobj_hwe *khwe;
> >> >
> >> > 		if ((hwe->class == XE_ENGINE_CLASS_OTHER) ||
> >> > 		    (hwe->class == XE_ENGINE_CLASS_MAX)) @@ -109,6
> >> +179,18 @@ int
> >> >xe_gt_sysfs_engines(struct xe_gt *gt)
> >> > 			kobject_put(kobj);
> >> > 			return -EINVAL;
> >> > 		}
> >> >+
> >> >+		khwe->hwe = hwe;
> >> >+		hwe->sysfs_hwe = &khwe->base;
> >> >+
> >> >+		err = xe_add_engine_defaults(&khwe->base);
> >> >+		if (err) {
> >> >+			kobject_put(kobj);
> >> >+			drm_warn(&gt_to_xe(gt)->drm,
> >> >+				 "Warning: adding .defaults to engines
> >> failed!, err: %d\n",
> >> >+				 err);
> >> >+			return err;
> >> >+		}
> >> > 	}
> >> >
> >> > 	return err;
> >> >diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >> >b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >> >index a531aebd10d6..a539cf031c7d 100644
> >> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >> >@@ -19,4 +19,9 @@ kobj_to_gt(struct kobject *kobj)
> >> > 	return container_of(kobj, struct kobj_gt, base)->gt;  }
> >> >
> >> >+static inline struct xe_hw_engine *kobj_to_hwe(struct kobject *kobj) {
> >> >+	return container_of(kobj, struct kobj_hwe, base)->hwe; }
> >> >+
> >> > #endif /* _XE_GT_SYSFS_H_ */
> >> >diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
> >> >b/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
> >> >index d3bc6b83360f..d0a5eae1bbb4 100644
> >> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
> >> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs_types.h
> >> >@@ -23,4 +23,17 @@ struct kobj_gt {
> >> > 	struct xe_gt *gt;
> >> > };
> >> >
> >> >+/**
> >> >+ * struct kobj_hwe - A hwe's kobject struct that connects the
> >> >+kobject and the
> >> >+ * hwe.
> >> >+ *
> >> >+ * When dealing with multiple hwe, this struct helps to understand
> >> >+which hwe
> >> >+ * needs to be addressed on a given sysfs call.
> >> >+ */
> >> >+struct kobj_hwe {
> >> >+	/** @base: The actual kobject */
> >> >+	struct kobject base;
> >> >+	/** @hwe: A pointer to the hwe itself */
> >> >+	struct xe_hw_engine *hwe;
> >> >+};
> >>
> >> More on this below.
> >>
> >> > #endif	/* _XE_GT_SYSFS_TYPES_H_ */
> >> >diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c
> >> >b/drivers/gpu/drm/xe/xe_guc_submit.c
> >> >index b209e4c2a3a9..bc0ffcf9fb1c 100644
> >> >--- a/drivers/gpu/drm/xe/xe_guc_submit.c
> >> >+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> >> >@@ -1063,13 +1063,16 @@ static int guc_engine_init(struct xe_engine
> *e)
> >> > 	ge->engine = e;
> >> > 	init_waitqueue_head(&ge->suspend_wait);
> >> >
> >> >-	timeout = xe_vm_no_dma_fences(e->vm) ?
> >> MAX_SCHEDULE_TIMEOUT : HZ * 5;
> >> >+	timeout = xe_vm_no_dma_fences(e->vm) ?
> >> MAX_SCHEDULE_TIMEOUT :
> >> >+		  e->hwe->sched_props.job_timeout_ms;
> >> > 	err = drm_sched_init(&ge->sched, &drm_sched_ops,
> >> > 			     e->lrc[0].ring.size / MAX_JOB_SIZE_BYTES,
> >> > 			     64, timeout, guc_to_gt(guc)->ordered_wq, NULL,
> >> > 			     e->name, gt_to_xe(e->gt)->drm.dev);
> >> > 	if (err)
> >> > 		goto err_free;
> >> >+	/* Record timeout value, in order to show current set timeout */
> >> >+	e->hwe->sched_props.job_timeout_ms = timeout;
> >>
> >> But, timeout can be MAX_SCHEDULE_TIMEOUT which can be more than
> the
> >> max defined in the patch#6 right?
> >
> >Yes, how should we handle this, any thoughts? Thanks for pointing this out.
> I think we need to change default max timeout in that case to match our
> config?
> >
> 
> Yes, I think so, but will let others comment.

After looking more into it, this is passed base on VM_flags passed from user, so user explicitly wants no timeout. We should also let this set in our parameter like below I am doing. Right! Any new timeout settings will still be restricted regularly.

Thanks,
Tejas
> 
> >>
> >> >
> >> > 	sched = &ge->sched;
> >> > 	err = drm_sched_entity_init(&ge->entity,
> >> DRM_SCHED_PRIORITY_NORMAL,
> >> >diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c
> >> >b/drivers/gpu/drm/xe/xe_hw_engine.c
> >> >index 68cd793cdfb5..8314429cfa90 100644
> >> >--- a/drivers/gpu/drm/xe/xe_hw_engine.c
> >> >+++ b/drivers/gpu/drm/xe/xe_hw_engine.c
> >> >@@ -361,6 +361,11 @@ static void hw_engine_init_early(struct xe_gt
> >> >*gt,
> >> struct xe_hw_engine *hwe,
> >> > 	hwe->name = info->name;
> >> > 	hwe->fence_irq = &gt->fence_irq[info->class];
> >> > 	hwe->engine_id = id;
> >> >+	/* FIXME: Wire up to configurable default value */
> >> >+	hwe->sched_props.job_timeout_ms = HZ * 5;
> >> >+	hwe->sched_props.timeslice_us = 1 * 1000;
> >> >+	hwe->sched_props.preempt_timeout_us = 640 * 1000;
> >> >+	hwe->defaults = hwe->sched_props; /* Record default props */
> >> >
> >> > 	xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt));
> >> > 	xe_wa_process_engine(hwe);
> >> >diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >> >b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >> >index d788e67312b9..406a1e33a05e 100644
> >> >--- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >> >+++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >> >@@ -107,6 +107,17 @@ struct xe_hw_engine {
> >> > 	void (*irq_handler)(struct xe_hw_engine *, u16);
> >> > 	/** @engine_id: id  for this hw engine */
> >> > 	enum xe_hw_engine_id engine_id;
> >> >+	/** @sched_props: scheduling properties */
> >> >+	struct {
> >> >+		/** @set_job_timeout: Set job timeout in ms for engine */
> >> >+		u32 job_timeout_ms;
> >> >+		/** @timeslice_us: timeslice period in micro-seconds */
> >> >+		u32 timeslice_us;
> >> >+		/** @preempt_timeout_us: preemption timeout in micro-
> >> seconds */
> >> >+		u32 preempt_timeout_us;
> >> >+	} sched_props, defaults;
> >> >+	/** @sysfs: sysfs kobject pointing to this hwe */
> >> >+	struct kobject *sysfs_hwe;
> >>
> >> Whwere is this sysfs_hwe used?
> >> I wonder whether we really need 'struct kobj_hwe'.
> >> Why can't we just have kobject defined here in the xe_hw_engine
> >> sturcture instead of having a pointer to one. That way we don't need to
> kzalloc it.
> >
> >You are right, its miss. I initially thought same and added sysfs_hwe and
> ended up not using it. As container of does not work on pointers.
> >
> >If we add it as part of xe_hw_engine then also allocation will happen right!
> And other reason to keep this way was to maintain uniformity the same way
> GT sysfs is doing and same way its done in tile sysfs patch(which is on
> patchwork) as well.
> >
> >Thanks,
> >Tejas
> >>
> >> Niranjana
> >>
> >> > };
> >> >
> >> > /**
> >> >--
> >> >2.25.1
> >> >

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties
  2023-06-16 20:56   ` Niranjana Vishwanathapura
  2023-06-19  4:43     ` Upadhyay, Tejas
@ 2023-06-22 12:56     ` Upadhyay, Tejas
  1 sibling, 0 replies; 23+ messages in thread
From: Upadhyay, Tejas @ 2023-06-22 12:56 UTC (permalink / raw)
  To: Vishwanathapura, Niranjana, Brost, Matthew; +Cc: intel-xe



> -----Original Message-----
> From: Vishwanathapura, Niranjana <niranjana.vishwanathapura@intel.com>
> Sent: Saturday, June 17, 2023 2:26 AM
> To: Upadhyay, Tejas <tejas.upadhyay@intel.com>
> Cc: intel-xe@lists.freedesktop.org; Iddamsetty, Aravind
> <aravind.iddamsetty@intel.com>; Ghimiray, Himal Prasad
> <himal.prasad.ghimiray@intel.com>; Brost, Matthew
> <matthew.brost@intel.com>
> Subject: Re: [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler
> properties
> 
> On Thu, Jun 15, 2023 at 07:49:33PM +0530, Tejas Upadhyay wrote:
> >Add sysfs entries for the min, max, and defaults for each of engine
> >scheduler controls for every hardware engine class.
> >
> >Non-elevated user IOCTLs to set these controls must be within the
> >min-max ranges of the sysfs entries, elevated user can set these
> >controls to any value.
> >
> >Introducing compile time CONFIG min-max values which restricts elevated
> >user to be in compile time min-max range if at all sysfs min/max are
> >violated.
> >
> >Sysfs entries examples are,
> >DUT# cat /sys/class/drm/cardX/device/gtN/engines/ccs/.defaults/
> >job_timeout_max         job_timeout_ms          preempt_timeout_min
> timeslice_duration_max  timeslice_duration_us
> >job_timeout_min         preempt_timeout_max     preempt_timeout_us
> timeslice_duration_min
> >
> >DUT# cat /sys/class/drm/card1/device/gt1/engines/ccs/
> >.defaults/              job_timeout_min         preempt_timeout_max
> preempt_timeout_us      timeslice_duration_min
> >job_timeout_max         job_timeout_ms          preempt_timeout_min
> timeslice_duration_max  timeslice_duration_us
> >
> >Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
> >---
> > drivers/gpu/drm/xe/Kconfig              |   7 +
> > drivers/gpu/drm/xe/Kconfig.profile      |  39 +++
> > drivers/gpu/drm/xe/xe_engine.c          |  40 ++-
> > drivers/gpu/drm/xe/xe_gt_sysfs.c        | 373 ++++++++++++++++++++++--
> > drivers/gpu/drm/xe/xe_gt_sysfs.h        |   1 +
> > drivers/gpu/drm/xe/xe_hw_engine.c       |   6 +
> > drivers/gpu/drm/xe/xe_hw_engine.h       |  31 ++
> > drivers/gpu/drm/xe/xe_hw_engine_types.h |  12 +
> > 8 files changed, 485 insertions(+), 24 deletions(-)  create mode
> >100644 drivers/gpu/drm/xe/Kconfig.profile
> >
> >diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
> >index d44794f99338..964c440a1135 100644
> >--- a/drivers/gpu/drm/xe/Kconfig
> >+++ b/drivers/gpu/drm/xe/Kconfig
> >@@ -83,3 +83,10 @@ depends on DRM_XE
> > depends on EXPERT
> > source "drivers/gpu/drm/xe/Kconfig.debug"
> > endmenu
> >+
> >+menu "drm/xe Profile Guided Optimisation"
> >+        visible if EXPERT
> >+        depends on DRM_XE
> >+        source "drivers/gpu/drm/xe/Kconfig.profile"
> >+endmenu
> >+
> >diff --git a/drivers/gpu/drm/xe/Kconfig.profile
> >b/drivers/gpu/drm/xe/Kconfig.profile
> >new file mode 100644
> >index 000000000000..cffd73e44ca9
> >--- /dev/null
> >+++ b/drivers/gpu/drm/xe/Kconfig.profile
> >@@ -0,0 +1,39 @@
> >+config DRM_XE_JOB_TIMEOUT_MAX
> >+	int "Default max job timeout (ms)"
> >+	default 10000 # milliseconds
> >+	help
> >+	  Configures the default max job timeout after which job will
> >+	  be forcefully taken away from scheduler.
> >+config DRM_XE_JOB_TIMEOUT_MIN
> >+	int "Default max job timeout (ms)"
> >+	default 1 # milliseconds
> >+	help
> >+	  Configures the default min job timeout after which job will
> >+	  be forcefully taken away from scheduler.
> >+config DRM_XE_TIMESLICE_MAX
> >+	int "Default max timeslice duration (us)"
> >+	default 10000000 # microseconds
> >+	help
> >+	  Configures the default max timeslice duration between multiple
> >+	  contexts by guc scheduling.
> >+config DRM_XE_TIMESLICE_MIN
> >+	int "Default min timeslice duration (us)"
> >+	default 1 # microseconds
> >+	help
> >+	  Configures the default min timeslice duration between multiple
> >+	  contexts by guc scheduling.
> >+config DRM_XE_PREEMPT_TIMEOUT_MAX
> >+	int "Default max  preempt timeout (us)"
> >+	default 10000000 # microseconds
> >+	help
> >+	  Configures the default max preempt timeout after which context
> >+	  will be forcefully taken away and higher priority context will
> >+	  run.
> >+config DRM_XE_PREEMPT_TIMEOUT_MIN
> >+	int "Default min  preempt timeout (us)"
> >+	default 1 # microseconds
> 
> I think a value of 0 means preempt timeout is diabled. GuC allows it.
> So, probably we should allow minimum of 0?

I had discussion on min max default values with @Brost, Matthew, and 1 decided as default min. 

> 
> >+	help
> >+	  Configures the default min preempt timeout after which context
> >+	  will be forcefully taken away and higher priority context will
> >+	  run.
> >+
> >diff --git a/drivers/gpu/drm/xe/xe_engine.c
> >b/drivers/gpu/drm/xe/xe_engine.c index e72423bc398a..c368ffd5e461
> >100644
> >--- a/drivers/gpu/drm/xe/xe_engine.c
> >+++ b/drivers/gpu/drm/xe/xe_engine.c
> >@@ -13,6 +13,7 @@
> >
> > #include "xe_device.h"
> > #include "xe_gt.h"
> >+#include "xe_gt_sysfs.h"
> > #include "xe_hw_fence.h"
> > #include "xe_lrc.h"
> > #include "xe_macros.h"
> >@@ -191,9 +192,20 @@ static int engine_set_priority(struct xe_device
> >*xe, struct xe_engine *e,  static int engine_set_timeslice(struct xe_device
> *xe, struct xe_engine *e,
> > 				u64 value, bool create)
> > {
> >-	if (!capable(CAP_SYS_NICE))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+				     e->hwe->sched_props.timeslice_min,
> >+				     e->hwe->sched_props.timeslice_max))
> > 		return -EPERM;
> >
> >+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+				     CONFIG_DRM_XE_TIMESLICE_MIN,
> >+				     CONFIG_DRM_XE_TIMESLICE_MAX))
> >+		return -EPERM;
> >+#endif
> 
> Do we really need this second boundary check given the in the first check
> above, the e->hwe->sched_props.timeslice_min/max values are already
> subjected to these boundaries?
> Applies for other below parameters also.
> 
> >+
> > 	return e->ops->set_timeslice(e, value); }
> >
> >@@ -201,8 +213,19 @@ static int engine_set_preemption_timeout(struct
> xe_device *xe,
> > 					 struct xe_engine *e, u64 value,
> > 					 bool create)
> > {
> >-	if (!capable(CAP_SYS_NICE))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+				     e->hwe-
> >sched_props.preempt_timeout_min,
> >+				     e->hwe-
> >sched_props.preempt_timeout_max))
> >+		return -EPERM;
> >+
> >+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> > 		return -EPERM;
> >+#endif
> >
> > 	return e->ops->set_preempt_timeout(e, value);  } @@ -269,8
> +292,19 @@
> >static int engine_set_job_timeout(struct xe_device *xe, struct xe_engine *e,
> > 	if (XE_IOCTL_ERR(xe, !create))
> > 		return -EINVAL;
> >
> >-	if (!capable(CAP_SYS_NICE))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+				     e->hwe->sched_props.job_timeout_min,
> >+				     e->hwe->sched_props.job_timeout_max))
> >+		return -EPERM;
> >+
> >+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(value,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> > 		return -EPERM;
> >+#endif
> >
> > 	return e->ops->set_job_timeout(e, value);  } diff --git
> >a/drivers/gpu/drm/xe/xe_gt_sysfs.c b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >index f88f8f7dfc7b..415b60845eef 100644
> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.c
> >@@ -32,6 +32,11 @@ static struct kobj_type kobj_xe_engine_type = {
> > 	.sysfs_ops = &kobj_sysfs_ops
> > };
> >
> >+bool engine_timeout_in_range(u64 timeout, u64 min, u64 max) {
> >+	return timeout >= min && timeout <= max; }
> >+
> > static ssize_t preempt_timeout_store(struct kobject *kobj,
> > 				     struct kobj_attribute *attr,
> > 				     const char *buf, size_t count) @@ -44,9
> +49,20 @@ static
> >ssize_t preempt_timeout_store(struct kobject *kobj,
> > 	if (err)
> > 		return err;
> >
> >-	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(timeout,
> >+				     hwe-
> >sched_props.preempt_timeout_min,
> >+				     hwe-
> >sched_props.preempt_timeout_max))
> > 		return -EINVAL;
> >
> >+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(timeout,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> > 	WRITE_ONCE(hwe->sched_props.preempt_timeout_us, timeout);
> >
> > 	return count;
> >@@ -63,6 +79,78 @@ static ssize_t preempt_timeout_show(struct kobject
> >*kobj,  static struct kobj_attribute preempt_timeout_attr =
> >__ATTR(preempt_timeout_us, 0644, preempt_timeout_show,
> >preempt_timeout_store);
> >
> >+static ssize_t preempt_timeout_max_store(struct kobject *kobj,
> >+					 struct kobj_attribute *attr,
> >+					 const char *buf, size_t count)
> >+{
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 timeout;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &timeout);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> >+	if (!engine_timeout_in_range(timeout,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.preempt_timeout_max, timeout);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t preempt_timeout_max_show(struct kobject *kobj,
> >+					struct kobj_attribute *attr, char *buf)
> {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe-
> >sched_props.preempt_timeout_max);
> >+}
> >+
> >+static struct kobj_attribute preempt_timeout_max_attr =
> >+	__ATTR(preempt_timeout_max, 0644, preempt_timeout_max_show,
> >+	       preempt_timeout_max_store);
> >+
> >+static ssize_t preempt_timeout_min_store(struct kobject *kobj,
> >+					 struct kobj_attribute *attr,
> >+					 const char *buf, size_t count)
> >+{
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 timeout;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &timeout);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX)
> >+	if (!engine_timeout_in_range(timeout,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN,
> >+
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.preempt_timeout_min, timeout);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t preempt_timeout_min_show(struct kobject *kobj,
> >+					struct kobj_attribute *attr, char *buf)
> {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe-
> >sched_props.preempt_timeout_min);
> >+}
> >+
> >+static struct kobj_attribute preempt_timeout_min_attr =
> >+	__ATTR(preempt_timeout_min, 0644, preempt_timeout_min_show,
> >+	       preempt_timeout_min_store);
> >+
> > static ssize_t timeslice_duration_store(struct kobject *kobj,
> > 		struct kobj_attribute *attr,
> > 		const char *buf, size_t count)
> >@@ -75,8 +163,19 @@ static ssize_t timeslice_duration_store(struct
> kobject *kobj,
> > 	if (err)
> > 		return err;
> >
> >-	if (duration > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(duration,
> >+				     hwe->sched_props.timeslice_min,
> >+				     hwe->sched_props.timeslice_max))
> >+		return -EINVAL;
> >+
> >+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(duration,
> >+				     CONFIG_DRM_XE_TIMESLICE_MIN,
> >+				     CONFIG_DRM_XE_TIMESLICE_MAX))
> > 		return -EINVAL;
> >+#endif
> >
> > 	WRITE_ONCE(hwe->sched_props.timeslice_us, duration);
> >
> >@@ -95,6 +194,79 @@ static struct kobj_attribute
> >timeslice_duration_attr =  __ATTR(timeslice_duration_us, 0644,
> >timeslice_duration_show,  timeslice_duration_store);
> >
> >+static ssize_t timeslice_duration_max_store(struct kobject *kobj,
> >+					    struct kobj_attribute *attr,
> >+					    const char *buf, size_t count) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 duration;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &duration);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> >+	if (!engine_timeout_in_range(duration,
> >+				     CONFIG_DRM_XE_TIMESLICE_MIN,
> >+				     CONFIG_DRM_XE_TIMESLICE_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.timeslice_max, duration);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t timeslice_duration_max_show(struct kobject *kobj,
> >+					   struct kobj_attribute *attr,
> >+					   char *buf)
> >+{
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_max); }
> >+
> >+static struct kobj_attribute timeslice_duration_max_attr =
> >+	__ATTR(timeslice_duration_max, 0644,
> timeslice_duration_max_show,
> >+	       timeslice_duration_max_store);
> >+
> >+static ssize_t timeslice_duration_min_store(struct kobject *kobj,
> >+					    struct kobj_attribute *attr,
> >+					    const char *buf, size_t count) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 duration;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &duration);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_TIMESLICE_MIN) &&
> defined(CONFIG_DRM_XE_TIMESLICE_MAX)
> >+	if (!engine_timeout_in_range(duration,
> >+				     CONFIG_DRM_XE_TIMESLICE_MIN,
> >+				     CONFIG_DRM_XE_TIMESLICE_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.timeslice_min, duration);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t timeslice_duration_min_show(struct kobject *kobj,
> >+					   struct kobj_attribute *attr, char
> *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe->sched_props.timeslice_min); }
> >+
> >+static struct kobj_attribute timeslice_duration_min_attr =
> >+	__ATTR(timeslice_duration_min, 0644,
> timeslice_duration_min_show,
> >+	       timeslice_duration_min_store);
> >+
> > static ssize_t job_timeout_store(struct kobject *kobj,
> > 		struct kobj_attribute *attr,
> > 		const char *buf, size_t count)
> >@@ -107,8 +279,19 @@ static ssize_t job_timeout_store(struct kobject
> *kobj,
> > 	if (err)
> > 		return err;
> >
> >-	if (timeout > jiffies_to_usecs(MAX_SCHEDULE_TIMEOUT))
> >+	if (!capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(timeout,
> >+				     hwe->sched_props.job_timeout_min,
> >+				     hwe->sched_props.job_timeout_max))
> >+		return -EINVAL;
> >+
> >+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> >+	if (capable(CAP_SYS_NICE) &&
> >+	    !engine_timeout_in_range(timeout,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> > 		return -EINVAL;
> >+#endif
> >
> > 	WRITE_ONCE(hwe->sched_props.job_timeout_ms, timeout);
> >
> >@@ -126,6 +309,89 @@ static ssize_t job_timeout_show(struct kobject
> >*kobj,  static struct kobj_attribute job_timeout_attr =
> >__ATTR(job_timeout_ms, 0644, job_timeout_show, job_timeout_store);
> >
> >+static ssize_t job_timeout_max_store(struct kobject *kobj,
> >+				     struct kobj_attribute *attr,
> >+				     const char *buf, size_t count) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 timeout;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &timeout);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> >+	if (!engine_timeout_in_range(timeout,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.job_timeout_max, timeout);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t job_timeout_max_show(struct kobject *kobj,
> >+				    struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_max);
> >+}
> >+
> >+static struct kobj_attribute job_timeout_max_attr =
> >+__ATTR(job_timeout_max, 0644, job_timeout_max_show,
> >+job_timeout_max_store);
> >+
> >+static ssize_t job_timeout_min_store(struct kobject *kobj,
> >+				     struct kobj_attribute *attr,
> >+				     const char *buf, size_t count) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+	u32 timeout;
> >+	int err;
> >+
> >+	err = kstrtou32(buf, 0, &timeout);
> >+	if (err)
> >+		return err;
> >+
> >+#if defined(CONFIG_DRM_XE_JOB_TIMEOUT_MIN) &&
> defined(CONFIG_DRM_XE_JOB_TIMEOUT_MAX)
> >+	if (!engine_timeout_in_range(timeout,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MIN,
> >+				     CONFIG_DRM_XE_JOB_TIMEOUT_MAX))
> >+		return -EINVAL;
> >+#endif
> >+
> >+	WRITE_ONCE(hwe->sched_props.job_timeout_min, timeout);
> >+
> >+	return count;
> >+}
> >+
> >+static ssize_t job_timeout_min_show(struct kobject *kobj,
> >+				    struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj);
> >+
> >+	return sprintf(buf, "%u\n", hwe->sched_props.job_timeout_min);
> >+}
> >+
> >+static struct kobj_attribute job_timeout_min_attr =
> >+__ATTR(job_timeout_min, 0644, job_timeout_min_show,
> >+job_timeout_min_store);
> >+
> >+static const struct attribute *files[] = {
> >+	&job_timeout_attr.attr,
> >+	&job_timeout_min_attr.attr,
> >+	&job_timeout_max_attr.attr,
> >+	&timeslice_duration_attr.attr,
> >+	&timeslice_duration_min_attr.attr,
> >+	&timeslice_duration_max_attr.attr,
> >+	&preempt_timeout_attr.attr,
> >+	&preempt_timeout_min_attr.attr,
> >+	&preempt_timeout_max_attr.attr,
> >+	NULL
> >+};
> >+
> > static ssize_t job_timeout_default(struct kobject *kobj,
> > 				 struct kobj_attribute *attr, char *buf)  { @@
> -137,6 +403,28 @@
> >static ssize_t job_timeout_default(struct kobject *kobj,  static struct
> >kobj_attribute job_timeout_def =  __ATTR(job_timeout_ms, 0444,
> >job_timeout_default, NULL);
> >
> >+static ssize_t job_timeout_min_default(struct kobject *kobj,
> >+				       struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_min); }
> >+
> >+static struct kobj_attribute job_timeout_min_def =
> >+__ATTR(job_timeout_min, 0444, job_timeout_min_default, NULL);
> >+
> >+static ssize_t job_timeout_max_default(struct kobject *kobj,
> >+				       struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.job_timeout_max); }
> >+
> >+static struct kobj_attribute job_timeout_max_def =
> >+__ATTR(job_timeout_max, 0444, job_timeout_max_default, NULL);
> >+
> > static ssize_t timeslice_default(struct kobject *kobj,
> > 				 struct kobj_attribute *attr, char *buf)  { @@
> -148,6 +436,28 @@
> >static ssize_t timeslice_default(struct kobject *kobj,  static struct
> >kobj_attribute timeslice_duration_def =  __ATTR(timeslice_duration_us,
> >0444, timeslice_default, NULL);
> >
> >+static ssize_t timeslice_min_default(struct kobject *kobj,
> >+				     struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_min); }
> >+
> >+static struct kobj_attribute timeslice_duration_min_def =
> >+__ATTR(timeslice_duration_min, 0444, timeslice_min_default, NULL);
> >+
> >+static ssize_t timeslice_max_default(struct kobject *kobj,
> >+				     struct kobj_attribute *attr, char *buf) {
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.timeslice_max); }
> >+
> >+static struct kobj_attribute timeslice_duration_max_def =
> >+__ATTR(timeslice_duration_max, 0444, timeslice_max_default, NULL);
> >+
> > static ssize_t preempt_timeout_default(struct kobject *kobj,
> > 				       struct kobj_attribute *attr,
> > 				       char *buf)
> >@@ -160,6 +470,43 @@ static ssize_t preempt_timeout_default(struct
> >kobject *kobj,  static struct kobj_attribute preempt_timeout_def =
> >__ATTR(preempt_timeout_us, 0444, preempt_timeout_default, NULL);
> >
> >+static ssize_t preempt_timeout_min_default(struct kobject *kobj,
> >+					   struct kobj_attribute *attr,
> >+					   char *buf)
> >+{
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_min);
> >+}
> >+
> >+static struct kobj_attribute preempt_timeout_min_def =
> >+__ATTR(preempt_timeout_min, 0444, preempt_timeout_min_default,
> NULL);
> >+
> >+static ssize_t preempt_timeout_max_default(struct kobject *kobj,
> >+					   struct kobj_attribute *attr,
> >+					   char *buf)
> >+{
> >+	struct xe_hw_engine *hwe = kobj_to_hwe(kobj->parent);
> >+
> >+	return sprintf(buf, "%u\n", hwe->defaults.preempt_timeout_max);
> >+}
> >+
> >+static struct kobj_attribute preempt_timeout_max_def =
> >+__ATTR(preempt_timeout_max, 0444, preempt_timeout_max_default,
> NULL);
> >+
> >+static const struct attribute *defaults[] = {
> >+	&job_timeout_def.attr,
> >+	&job_timeout_min_def.attr,
> >+	&job_timeout_max_def.attr,
> >+	&timeslice_duration_def.attr,
> >+	&timeslice_duration_min_def.attr,
> >+	&timeslice_duration_max_def.attr,
> >+	&preempt_timeout_def.attr,
> >+	&preempt_timeout_min_def.attr,
> >+	&preempt_timeout_max_def.attr,
> >+	NULL
> >+};
> >+
> > int xe_add_engine_defaults(struct kobject *parent)  {
> > 	struct kobject *kobj;
> >@@ -175,15 +522,7 @@ int xe_add_engine_defaults(struct kobject
> *parent)
> > 	if (err)
> > 		goto err_object;
> >
> >-	err = sysfs_create_file(kobj, &job_timeout_def.attr);
> >-	if (err)
> >-		goto err_object;
> >-
> >-	err = sysfs_create_file(kobj, &timeslice_duration_def.attr);
> >-	if (err)
> >-		goto err_object;
> >-
> >-	err = sysfs_create_file(kobj, &preempt_timeout_def.attr);
> >+	err = sysfs_create_files(kobj, defaults);
> 
> Why add code in previous patch and remove it here when we can can have
> previous patch use sysfs_create_files() to begin with?
> Applies to other below parameters also.
> 
> > 	if (err)
> > 		goto err_object;
> >
> >@@ -286,15 +625,7 @@ int xe_gt_sysfs_engines(struct xe_gt *gt)
> > 			return err;
> > 		}
> >
> >-		err = sysfs_create_file(&khwe->base,
> &job_timeout_attr.attr);
> >-		if (err)
> >-			goto err_object;
> >-
> >-		err = sysfs_create_file(&khwe->base,
> &timeslice_duration_attr.attr);
> >-		if (err)
> >-			goto err_object;
> >-
> >-		err = sysfs_create_file(&khwe->base,
> &preempt_timeout_attr.attr);
> >+		err = sysfs_create_files(&khwe->base, files);
> > 		if (err)
> > 			goto err_object;
> > 	}
> >diff --git a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >index a539cf031c7d..a7ac7b9a9768 100644
> >--- a/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >+++ b/drivers/gpu/drm/xe/xe_gt_sysfs.h
> >@@ -12,6 +12,7 @@
> >
> > int xe_gt_sysfs_init(struct xe_gt *gt); int xe_gt_sysfs_engines(struct
> > xe_gt *gt);
> >+bool engine_timeout_in_range(u64 timeout, u64 min, u64 max);
> >
> > static inline struct xe_gt *
> > kobj_to_gt(struct kobject *kobj)
> >diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c
> >b/drivers/gpu/drm/xe/xe_hw_engine.c
> >index 8314429cfa90..e52324eb1efa 100644
> >--- a/drivers/gpu/drm/xe/xe_hw_engine.c
> >+++ b/drivers/gpu/drm/xe/xe_hw_engine.c
> >@@ -363,8 +363,14 @@ static void hw_engine_init_early(struct xe_gt *gt,
> struct xe_hw_engine *hwe,
> > 	hwe->engine_id = id;
> > 	/* FIXME: Wire up to configurable default value */
> > 	hwe->sched_props.job_timeout_ms = HZ * 5;
> >+	hwe->sched_props.job_timeout_min =
> XE_HW_ENGINE_JOB_TIMEOUT_MIN;
> >+	hwe->sched_props.job_timeout_max =
> XE_HW_ENGINE_JOB_TIMEOUT_MAX;
> > 	hwe->sched_props.timeslice_us = 1 * 1000;
> >+	hwe->sched_props.timeslice_min =
> XE_HW_ENGINE_TIMESLICE_MIN;
> >+	hwe->sched_props.timeslice_max =
> XE_HW_ENGINE_TIMESLICE_MAX;
> > 	hwe->sched_props.preempt_timeout_us = 640 * 1000;
> >+	hwe->sched_props.preempt_timeout_min =
> XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN;
> >+	hwe->sched_props.preempt_timeout_max =
> >+XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX;
> 
> Can we define a config option for preempt_timeout_us also?
> My below patch series tries to do it.
> https://patchwork.freedesktop.org/series/119165/
> 
> May be you can include it here in your patch series or I can push a patch
> series after this series gets merged. Thoughts?
> 
> > 	hwe->defaults = hwe->sched_props; /* Record default props */
> >
> > 	xe_reg_sr_init(&hwe->reg_sr, hwe->name, gt_to_xe(gt)); diff --git
> >a/drivers/gpu/drm/xe/xe_hw_engine.h
> b/drivers/gpu/drm/xe/xe_hw_engine.h
> >index 7eca9d53c7b1..3d37d6d44261 100644
> >--- a/drivers/gpu/drm/xe/xe_hw_engine.h
> >+++ b/drivers/gpu/drm/xe/xe_hw_engine.h
> >@@ -10,6 +10,37 @@
> >
> > struct drm_printer;
> >
> >+#ifdef CONFIG_DRM_XE_JOB_TIMEOUT_MIN
> >+#define XE_HW_ENGINE_JOB_TIMEOUT_MIN
> CONFIG_DRM_XE_JOB_TIMEOUT_MIN
> >+#else #define XE_HW_ENGINE_JOB_TIMEOUT_MIN 1 #endif #ifdef
> >+CONFIG_DRM_XE_JOB_TIMEOUT_MAX #define
> XE_HW_ENGINE_JOB_TIMEOUT_MAX
> >+CONFIG_DRM_XE_JOB_TIMEOUT_MAX #else #define
> >+XE_HW_ENGINE_JOB_TIMEOUT_MAX (10 * 1000) #endif #ifdef
> >+CONFIG_DRM_XE_TIMESLICE_MIN #define
> XE_HW_ENGINE_TIMESLICE_MIN
> >+CONFIG_DRM_XE_TIMESLICE_MIN #else #define
> XE_HW_ENGINE_TIMESLICE_MIN 1
> >+#endif #ifdef CONFIG_DRM_XE_TIMESLICE_MAX #define
> >+XE_HW_ENGINE_TIMESLICE_MAX CONFIG_DRM_XE_TIMESLICE_MAX
> #else #define
> >+XE_HW_ENGINE_TIMESLICE_MAX (10 * 1000 * 1000) #endif #ifdef
> >+CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN
> >+#define XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN
> >+CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN #else #define
> >+XE_HW_ENGINE_PREEMPT_TIMEOUT_MIN 1
> 
> As mentioned above, a minimum should be 0?

This answered above, though I have question should we set these defines and compile time config defaults as same value as I have done here? For example in this case if CONFIG is not defined then still we will get same default value through #define, that should be ok, right!

Thanks,
Tejas

> 
> Niranjana
> 
> >+#endif
> >+#ifdef CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX #define
> >+XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX
> CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX
> >+#else #define XE_HW_ENGINE_PREEMPT_TIMEOUT_MAX (10 * 1000 *
> 1000)
> >+#endif
> >+
> > int xe_hw_engines_init_early(struct xe_gt *gt);  int
> >xe_hw_engines_init(struct xe_gt *gt);  void
> >xe_hw_engine_handle_irq(struct xe_hw_engine *hwe, u16 intr_vec); diff
> >--git a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >index 406a1e33a05e..8582193b4947 100644
> >--- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >+++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> >@@ -111,10 +111,22 @@ struct xe_hw_engine {
> > 	struct {
> > 		/** @set_job_timeout: Set job timeout in ms for engine */
> > 		u32 job_timeout_ms;
> >+		/** @job_timeout_min: Min job timeout in ms for engine */
> >+		u32 job_timeout_min;
> >+		/** @job_timeout_max: Max job timeout in ms for engine */
> >+		u32 job_timeout_max;
> > 		/** @timeslice_us: timeslice period in micro-seconds */
> > 		u32 timeslice_us;
> >+		/** @timeslice_min: min timeslice period in micro-seconds
> */
> >+		u32 timeslice_min;
> >+		/** @timeslice_max: max timeslice period in micro-seconds
> */
> >+		u32 timeslice_max;
> > 		/** @preempt_timeout_us: preemption timeout in micro-
> seconds */
> > 		u32 preempt_timeout_us;
> >+		/** @preempt_timeout_min: min preemption timeout in
> micro-seconds */
> >+		u32 preempt_timeout_min;
> >+		/** @preempt_timeout_max: max preemption timeout in
> micro-seconds */
> >+		u32 preempt_timeout_max;
> > 	} sched_props, defaults;
> > 	/** @sysfs: sysfs kobject pointing to this hwe */
> > 	struct kobject *sysfs_hwe;
> >--
> >2.25.1
> >

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2023-06-22 12:57 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-15 14:19 [Intel-xe] [PATCH 0/6] drm/xe: Add engine scheduler control interface Tejas Upadhyay
2023-06-15 14:16 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
2023-06-15 14:17 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
2023-06-15 14:18 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
2023-06-15 14:19 ` [Intel-xe] [PATCH 1/6] drm/xe: Add sysfs entries for engines under its GT Tejas Upadhyay
2023-06-15 14:19 ` [Intel-xe] [PATCH 2/6] drm/xe: Add sysfs for default engine scheduler properties Tejas Upadhyay
2023-06-16 20:39   ` Niranjana Vishwanathapura
2023-06-19  5:01     ` Upadhyay, Tejas
2023-06-21  4:29       ` Niranjana Vishwanathapura
2023-06-22 12:51         ` Upadhyay, Tejas
2023-06-15 14:19 ` [Intel-xe] [PATCH 3/6] drm/xe: Add job timeout engine property to sysfs Tejas Upadhyay
2023-06-15 14:19 ` [Intel-xe] [PATCH 4/6] drm/xe: Add timeslice duration " Tejas Upadhyay
2023-06-15 14:19 ` [Intel-xe] [PATCH 5/6] drm/xe: Add sysfs for preempt reset timeout Tejas Upadhyay
2023-06-15 14:19 ` [Intel-xe] [PATCH 6/6] drm/xe: Add min/max cap for engine scheduler properties Tejas Upadhyay
2023-06-16 20:56   ` Niranjana Vishwanathapura
2023-06-19  4:43     ` Upadhyay, Tejas
2023-06-21  3:55       ` Niranjana Vishwanathapura
2023-06-21  5:19         ` Upadhyay, Tejas
2023-06-22 12:56     ` Upadhyay, Tejas
2023-06-22  9:40   ` Ghimiray, Himal Prasad
2023-06-22 10:05     ` Upadhyay, Tejas
2023-06-15 14:22 ` [Intel-xe] ✓ CI.Build: success for drm/xe: Add engine scheduler control interface Patchwork
2023-06-15 14:22 ` [Intel-xe] ✗ CI.Hooks: failure " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.