All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-xe] ✓ CI.Patch_applied: success for Add HWMON support for DGFX
  2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
@ 2023-06-06 12:48 ` Patchwork
  2023-06-06 12:49 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2023-06-06 12:48 UTC (permalink / raw)
  To: Badal Nilawar; +Cc: intel-xe

== Series Details ==

Series: Add HWMON support for DGFX
URL   : https://patchwork.freedesktop.org/series/118934/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-xe-next' with base: ===
Base commit: ee454cf40 drm/xe: Don't hardcode GuC's MOCS index in register header
=== git am output follows ===
.git/rebase-apply/patch:39: new blank line at EOF.
+
.git/rebase-apply/patch:92: new blank line at EOF.
+
warning: 2 lines add whitespace errors.
.git/rebase-apply/patch:40: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
.git/rebase-apply/patch:24: new blank line at EOF.
+
warning: 1 line adds whitespace errors.
Applying: drm/xe/hwmon: Add HWMON infrastructure
Applying: drm/xe/hwmon: Expose power attributes
Applying: drm/xe/hwmon: Expose card reactive critical power
Applying: drm/xe/hwmon: Expose input voltage attribute
Applying: drm/xe/hwmon: Expose hwmon energy attribute
Applying: drm/xe/hwmon: Expose power1_max_interval



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

* [Intel-xe] ✗ CI.checkpatch: warning for Add HWMON support for DGFX
  2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
  2023-06-06 12:48 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
@ 2023-06-06 12:49 ` Patchwork
  2023-06-06 12:50 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2023-06-06 12:49 UTC (permalink / raw)
  To: Badal Nilawar; +Cc: intel-xe

== Series Details ==

Series: Add HWMON support for DGFX
URL   : https://patchwork.freedesktop.org/series/118934/
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 fb7dcf451e513cf4449eb89bb92b1062f292b9de
Author: Badal Nilawar <badal.nilawar@intel.com>
Date:   Tue Jun 6 18:20:57 2023 +0530

    drm/xe/hwmon: Expose power1_max_interval
    
    Expose power1_max_interval, that is the tau corresponding to PL1, as a
    custom hwmon attribute. Some bit manipulation is needed because of the
    format of PKG_PWR_LIM_1_TIME in
    PACKAGE_RAPL_LIMIT register (1.x * power(2,y))
    
    Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
    Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
+ /mt/dim checkpatch ee454cf4046170833f005c9591fb80a67df81f07 drm-intel
db02f947a drm/xe/hwmon: Add HWMON infrastructure
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
-:70: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#70: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 181 lines checked
c38d6b366 drm/xe/hwmon: Expose power attributes
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
-:8: WARNING:BAD_SIGN_OFF: Co-developed-by and Signed-off-by: name/email do not match
#8: 
Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>

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

total: 0 errors, 2 warnings, 0 checks, 516 lines checked
07d18355b drm/xe/hwmon: Expose card reactive critical power
-:10: WARNING:BAD_SIGN_OFF: Co-developed-by and Signed-off-by: name/email do not match
#10: 
Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>

-:58: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#58: FILE: drivers/gpu/drm/xe/xe_hwmon.c:20:
+#define PCODE_MBOX(mbcmd, param1, param2)\
+	FIELD_PREP(PCODE_MB_COMMAND, mbcmd)\
+	| FIELD_PREP(PCODE_MB_PARAM1, param1)\
+	| FIELD_PREP(PCODE_MB_PARAM2, param2)

total: 1 errors, 1 warnings, 0 checks, 226 lines checked
9946cedfb drm/xe/hwmon: Expose input voltage attribute
-:8: WARNING:BAD_SIGN_OFF: Co-developed-by and Signed-off-by: name/email do not match
#8: 
Co-developed-by: Riana Tauro <riana.tauro@intel.com>
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>

total: 0 errors, 1 warnings, 0 checks, 158 lines checked
15472b85d drm/xe/hwmon: Expose hwmon energy attribute
-:9: WARNING:BAD_SIGN_OFF: Co-developed-by and Signed-off-by: name/email do not match
#9: 
Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>

total: 0 errors, 1 warnings, 0 checks, 344 lines checked
fb7dcf451 drm/xe/hwmon: Expose power1_max_interval
-:11: WARNING:BAD_SIGN_OFF: Co-developed-by and Signed-off-by: name/email do not match
#11: 
Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>

total: 0 errors, 1 warnings, 0 checks, 196 lines checked



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

* [Intel-xe] ✓ CI.KUnit: success for Add HWMON support for DGFX
  2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
  2023-06-06 12:48 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
  2023-06-06 12:49 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
@ 2023-06-06 12:50 ` Patchwork
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 1/6] drm/xe/hwmon: Add HWMON infrastructure Badal Nilawar
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2023-06-06 12:50 UTC (permalink / raw)
  To: Badal Nilawar; +Cc: intel-xe

== Series Details ==

Series: Add HWMON support for DGFX
URL   : https://patchwork.freedesktop.org/series/118934/
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
[12:49:04] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:49:08] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
[12:49:30] Starting KUnit Kernel (1/1)...
[12:49:30] ============================================================
[12:49:31] ==================== xe_bo (2 subtests) ====================
[12:49:31] [SKIPPED] xe_ccs_migrate_kunit
[12:49:31] [SKIPPED] xe_bo_evict_kunit
[12:49:31] ===================== [SKIPPED] xe_bo ======================
[12:49:31] ================== xe_dma_buf (1 subtest) ==================
[12:49:31] [SKIPPED] xe_dma_buf_kunit
[12:49:31] =================== [SKIPPED] xe_dma_buf ===================
[12:49:31] ================== xe_migrate (1 subtest) ==================
[12:49:31] [SKIPPED] xe_migrate_sanity_kunit
[12:49:31] =================== [SKIPPED] xe_migrate ===================
[12:49:31] =================== xe_pci (2 subtests) ====================
[12:49:31] [PASSED] xe_gmdid_graphics_ip
[12:49:31] [PASSED] xe_gmdid_media_ip
[12:49:31] ===================== [PASSED] xe_pci ======================
[12:49:31] ==================== xe_rtp (1 subtest) ====================
[12:49:31] ================== xe_rtp_process_tests  ===================
[12:49:31] [PASSED] coalesce-same-reg
[12:49:31] [PASSED] no-match-no-add
[12:49:31] [PASSED] no-match-no-add-multiple-rules
[12:49:31] [PASSED] two-regs-two-entries
[12:49:31] [PASSED] clr-one-set-other
[12:49:31] [PASSED] set-field
[12:49:31] [PASSED] conflict-duplicate
[12:49:31] [PASSED] conflict-not-disjoint
[12:49:31] [PASSED] conflict-reg-type
[12:49:31] ============== [PASSED] xe_rtp_process_tests ===============
[12:49:31] ===================== [PASSED] xe_rtp ======================
[12:49:31] ==================== xe_wa (1 subtest) =====================
[12:49:31] ======================== xe_wa_gt  =========================
[12:49:31] [PASSED] TIGERLAKE (B0)
[12:49:31] [PASSED] DG1 (A0)
[12:49:31] [PASSED] DG1 (B0)
[12:49:31] [PASSED] ALDERLAKE_S (A0)
[12:49:31] [PASSED] ALDERLAKE_S (B0)
[12:49:31] [PASSED] ALDERLAKE_S (C0)
[12:49:31] [PASSED] ALDERLAKE_S (D0)
[12:49:31] [PASSED] DG2_G10 (A0)
[12:49:31] [PASSED] DG2_G10 (A1)
[12:49:31] [PASSED] DG2_G10 (B0)
[12:49:31] [PASSED] DG2_G10 (C0)
[12:49:31] [PASSED] DG2_G11 (A0)
[12:49:31] [PASSED] DG2_G11 (B0)
[12:49:31] [PASSED] DG2_G11 (B1)
[12:49:31] [PASSED] DG2_G12 (A0)
[12:49:31] [PASSED] DG2_G12 (A1)
[12:49:31] [PASSED] PVC (B0)
[12:49:31] [PASSED] PVC (B1)
[12:49:31] [PASSED] PVC (C0)
[12:49:31] ==================== [PASSED] xe_wa_gt =====================
[12:49:31] ====================== [PASSED] xe_wa ======================
[12:49:31] ============================================================
[12:49:31] Testing complete. Ran 34 tests: passed: 30, skipped: 4
[12:49:31] Elapsed time: 26.392s total, 4.264s configuring, 21.959s building, 0.137s running

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

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



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

* [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX
@ 2023-06-06 12:50 Badal Nilawar
  2023-06-06 12:48 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
                   ` (10 more replies)
  0 siblings, 11 replies; 23+ messages in thread
From: Badal Nilawar @ 2023-06-06 12:50 UTC (permalink / raw)
  To: intel-xe; +Cc: jani.nikula

This series adds the hwmon support on xe driver for 
DGFX

Badal Nilawar (6):
  drm/xe/hwmon: Add HWMON infrastructure
  drm/xe/hwmon: Expose power attributes
  drm/xe/hwmon: Expose card reactive critical power
  drm/xe/hwmon: Expose input voltage attribute
  drm/xe/hwmon: Expose hwmon energy attribute
  drm/xe/hwmon: Expose power1_max_interval

 .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  77 ++
 drivers/gpu/drm/xe/Makefile                   |   3 +
 drivers/gpu/drm/xe/regs/xe_gt_regs.h          |   9 +
 drivers/gpu/drm/xe/regs/xe_mchbar_regs.h      |  45 +
 drivers/gpu/drm/xe/xe_device.c                |   5 +
 drivers/gpu/drm/xe/xe_device_types.h          |   2 +
 drivers/gpu/drm/xe/xe_hwmon.c                 | 950 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_hwmon.h                 |  26 +
 drivers/gpu/drm/xe/xe_pcode_api.h             |   7 +
 drivers/gpu/drm/xe/xe_uc.c                    |   6 +
 10 files changed, 1130 insertions(+)
 create mode 100644 Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
 create mode 100644 drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
 create mode 100644 drivers/gpu/drm/xe/xe_hwmon.c
 create mode 100644 drivers/gpu/drm/xe/xe_hwmon.h

-- 
2.25.1


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

* [Intel-xe] [RFC PATCH 1/6] drm/xe/hwmon: Add HWMON infrastructure
  2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
                   ` (2 preceding siblings ...)
  2023-06-06 12:50 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
@ 2023-06-06 12:50 ` Badal Nilawar
  2023-06-07  9:40   ` Riana Tauro
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 2/6] drm/xe/hwmon: Expose power attributes Badal Nilawar
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: Badal Nilawar @ 2023-06-06 12:50 UTC (permalink / raw)
  To: intel-xe; +Cc: jani.nikula

The xe HWMON module will be used to expose voltage, power and energy
values for dGfx. Here we set up xe hwmon infrastructure including xe
hwmon registration, basic data structures and functions.

Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
---
 drivers/gpu/drm/xe/Makefile          |   3 +
 drivers/gpu/drm/xe/xe_device.c       |   5 ++
 drivers/gpu/drm/xe/xe_device_types.h |   2 +
 drivers/gpu/drm/xe/xe_hwmon.c        | 119 +++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_hwmon.h        |  22 +++++
 5 files changed, 151 insertions(+)
 create mode 100644 drivers/gpu/drm/xe/xe_hwmon.c
 create mode 100644 drivers/gpu/drm/xe/xe_hwmon.h

diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index f34d4bdd510b..7ac4469b325b 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -112,6 +112,9 @@ xe-y += xe_bb.o \
 	xe_wa.o \
 	xe_wopcm.o
 
+# graphics hardware monitoring (HWMON) support
+xe-$(CONFIG_HWMON) += xe_hwmon.o
+
 # i915 Display compat #defines and #includes
 subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \
 	-I$(srctree)/$(src)/display/ext \
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index c7985af85a53..0fcd60037d66 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -34,6 +34,7 @@
 #include "xe_vm.h"
 #include "xe_vm_madvise.h"
 #include "xe_wait_user_fence.h"
+#include "xe_hwmon.h"
 
 static int xe_file_open(struct drm_device *dev, struct drm_file *file)
 {
@@ -328,6 +329,8 @@ int xe_device_probe(struct xe_device *xe)
 
 	xe_debugfs_register(xe);
 
+	xe_hwmon_register(xe);
+
 	err = drmm_add_action_or_reset(&xe->drm, xe_device_sanitize, xe);
 	if (err)
 		return err;
@@ -354,6 +357,8 @@ static void xe_device_remove_display(struct xe_device *xe)
 
 void xe_device_remove(struct xe_device *xe)
 {
+	xe_hwmon_unregister(xe);
+
 	xe_device_remove_display(xe);
 
 	xe_display_unlink(xe);
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 17b6b1cc5adb..6f511d359de8 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -378,6 +378,8 @@ struct xe_device {
 	/** @d3cold_allowed: Indicates if d3cold is a valid device state */
 	bool d3cold_allowed;
 
+	struct xe_hwmon *hwmon;
+
 	/* private: */
 
 #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
new file mode 100644
index 000000000000..65e5488dec82
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_hwmon.c
@@ -0,0 +1,119 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2023 Intel Corporation
+ */
+
+#include <linux/hwmon.h>
+#include <linux/hwmon-sysfs.h>
+#include <linux/types.h>
+
+#include "regs/xe_gt_regs.h"
+#include "xe_device.h"
+#include "xe_hwmon.h"
+#include "xe_mmio.h"
+#include "xe_gt.h"
+
+struct hwm_drvdata {
+	struct xe_hwmon *hwmon;
+	struct device *hwmon_dev;
+	char name[12];
+};
+
+struct xe_hwmon {
+	struct hwm_drvdata ddat;
+	struct mutex hwmon_lock;	/* counter overflow logic and rmw */
+};
+
+static const struct hwmon_channel_info *hwm_info[] = {
+	NULL
+};
+
+static umode_t
+hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
+	       u32 attr, int channel)
+{
+	switch (type) {
+	default:
+		return 0;
+	}
+}
+
+static int
+hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
+	 int channel, long *val)
+{
+	switch (type) {
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
+static int
+hwm_write(struct device *dev, enum hwmon_sensor_types type, u32 attr,
+	  int channel, long val)
+{
+	switch (type) {
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
+static const struct hwmon_ops hwm_ops = {
+	.is_visible = hwm_is_visible,
+	.read = hwm_read,
+	.write = hwm_write,
+};
+
+static const struct hwmon_chip_info hwm_chip_info = {
+	.ops = &hwm_ops,
+	.info = hwm_info,
+};
+
+static void
+hwm_get_preregistration_info(struct xe_device *xe)
+{
+}
+
+void xe_hwmon_register(struct xe_device *xe)
+{
+	struct device *dev = xe->drm.dev;
+	struct xe_hwmon *hwmon;
+	struct device *hwmon_dev;
+	struct hwm_drvdata *ddat;
+
+	/* hwmon is available only for dGfx */
+	if (!IS_DGFX(xe))
+		return;
+
+	hwmon = devm_kzalloc(dev, sizeof(*hwmon), GFP_KERNEL);
+	if (!hwmon)
+		return;
+
+	xe->hwmon = hwmon;
+	mutex_init(&hwmon->hwmon_lock);
+	ddat = &hwmon->ddat;
+
+	ddat->hwmon = hwmon;
+	snprintf(ddat->name, sizeof(ddat->name), "xe");
+
+	hwm_get_preregistration_info(xe);
+
+	drm_dbg(&xe->drm, "Register HWMON interface\n");
+
+	/*  hwmon_dev points to device hwmon<i> */
+	hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat->name,
+							 ddat,
+							 &hwm_chip_info,
+							 NULL);
+	if (IS_ERR(hwmon_dev)) {
+		xe->hwmon = NULL;
+		return;
+	}
+
+	ddat->hwmon_dev = hwmon_dev;
+}
+
+void xe_hwmon_unregister(struct xe_device *xe)
+{
+	xe->hwmon = NULL;
+}
diff --git a/drivers/gpu/drm/xe/xe_hwmon.h b/drivers/gpu/drm/xe/xe_hwmon.h
new file mode 100644
index 000000000000..a078eeb0a68b
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_hwmon.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: MIT */
+
+/*
+ * Copyright © 2023 Intel Corporation
+ */
+
+#ifndef __XE_HWMON_H__
+#define __XE_HWMON_H__
+
+#include <linux/types.h>
+
+struct xe_device;
+
+#if IS_REACHABLE(CONFIG_HWMON)
+void xe_hwmon_register(struct xe_device *xe);
+void xe_hwmon_unregister(struct xe_device *xe);
+#else
+static inline void xe_hwmon_register(struct xe_device *xe) { };
+static inline void xe_hwmon_unregister(struct xe_device *xe) { };
+#endif
+
+#endif /* __XE_HWMON_H__ */
-- 
2.25.1


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

* [Intel-xe] [RFC PATCH 2/6] drm/xe/hwmon: Expose power attributes
  2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
                   ` (3 preceding siblings ...)
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 1/6] drm/xe/hwmon: Add HWMON infrastructure Badal Nilawar
@ 2023-06-06 12:50 ` Badal Nilawar
  2023-06-08 14:04   ` Riana Tauro
  2023-06-14  5:16   ` Riana Tauro
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 3/6] drm/xe/hwmon: Expose card reactive critical power Badal Nilawar
                   ` (5 subsequent siblings)
  10 siblings, 2 replies; 23+ messages in thread
From: Badal Nilawar @ 2023-06-06 12:50 UTC (permalink / raw)
  To: intel-xe; +Cc: jani.nikula

Expose power_max (pl1) and power_rated_max (tdp) attributes

Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
---
 .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  22 ++
 drivers/gpu/drm/xe/regs/xe_gt_regs.h          |   4 +
 drivers/gpu/drm/xe/regs/xe_mchbar_regs.h      |  34 ++
 drivers/gpu/drm/xe/xe_hwmon.c                 | 342 +++++++++++++++++-
 drivers/gpu/drm/xe/xe_hwmon.h                 |   4 +
 drivers/gpu/drm/xe/xe_uc.c                    |   6 +
 6 files changed, 408 insertions(+), 4 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
 create mode 100644 drivers/gpu/drm/xe/regs/xe_mchbar_regs.h

diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
new file mode 100644
index 000000000000..54a7b668009e
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
@@ -0,0 +1,22 @@
+What:		/sys/devices/.../hwmon/hwmon<i>/power1_max
+Date:		June 2023
+KernelVersion:	6.3
+Contact:	intel-gfx@lists.freedesktop.org
+Description:	RW. Card reactive sustained  (PL1/Tau) power limit in microwatts.
+
+		The power controller will throttle the operating frequency
+		if the power averaged over a window (typically seconds)
+		exceeds this limit. A read value of 0 means that the PL1
+		power limit is disabled, writing 0 disables the
+		limit. Writing values > 0 will enable the power limit.
+
+		Only supported for particular Intel xe graphics platforms.
+
+What:		/sys/devices/.../hwmon/hwmon<i>/power1_rated_max
+Date:		June 2023
+KernelVersion:	6.3
+Contact:	intel-gfx@lists.freedesktop.org
+Description:	RO. Card default power limit (default TDP setting).
+
+		Only supported for particular Intel xe graphics platforms.
+
diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
index 0f920175526e..9d888aae907e 100644
--- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
+++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
@@ -382,4 +382,8 @@
 #define XEHPC_BCS5_BCS6_INTR_MASK		XE_REG(0x190118)
 #define XEHPC_BCS7_BCS8_INTR_MASK		XE_REG(0x19011c)
 
+#define PVC_GT0_PACKAGE_RAPL_LIMIT		XE_REG(0x281008)
+#define PVC_GT0_PACKAGE_POWER_SKU_UNIT		XE_REG(0x281068)
+#define PVC_GT0_PACKAGE_POWER_SKU		XE_REG(0x281080)
+
 #endif
diff --git a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
new file mode 100644
index 000000000000..4ad473e69e27
--- /dev/null
+++ b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
@@ -0,0 +1,34 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2023 Intel Corporation
+ */
+
+#ifndef _XE_MCHBAR_REGS_H__
+#define _XE_MCHBAR_REGS_H_
+
+#include "regs/xe_reg_defs.h"
+
+/*
+ * MCHBAR mirror.
+ *
+ * This mirrors the MCHBAR MMIO space whose location is determined by
+ * device 0 function 0's pci config register 0x44 or 0x48 and matches it in
+ * every way.
+ */
+
+#define MCHBAR_MIRROR_BASE_SNB			0x140000
+
+#define PCU_CR_PACKAGE_POWER_SKU		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5930)
+#define   PKG_PKG_TDP				GENMASK_ULL(14, 0)
+
+#define PCU_CR_PACKAGE_POWER_SKU_UNIT		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5938)
+#define   PKG_PWR_UNIT				REG_GENMASK(3, 0)
+#define   PKG_MIN_PWR				GENMASK_ULL(30, 16)
+#define   PKG_MAX_PWR				GENMASK_ULL(46, 32)
+
+#define PCU_CR_PACKAGE_RAPL_LIMIT		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x59a0)
+#define   PKG_PWR_LIM_1				REG_GENMASK(14, 0)
+#define   PKG_PWR_LIM_1_EN			REG_BIT(15)
+
+#endif
+
diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
index 65e5488dec82..8e248e806559 100644
--- a/drivers/gpu/drm/xe/xe_hwmon.c
+++ b/drivers/gpu/drm/xe/xe_hwmon.c
@@ -7,42 +7,358 @@
 #include <linux/hwmon-sysfs.h>
 #include <linux/types.h>
 
+#include "regs/xe_mchbar_regs.h"
 #include "regs/xe_gt_regs.h"
 #include "xe_device.h"
 #include "xe_hwmon.h"
 #include "xe_mmio.h"
 #include "xe_gt.h"
+#include "i915_drv.h"
+
+enum hwm_reg_name {
+	pkg_rapl_limit,
+	pkg_power_sku,
+	pkg_power_sku_unit,
+};
+
+enum hwm_reg_operation {
+	reg_read,
+	reg_write,
+	reg_rmw,
+};
+
+/*
+ * SF_* - scale factors for particular quantities according to hwmon spec.
+ * - voltage  - millivolts
+ * - power  - microwatts
+ */
+#define SF_VOLTAGE	1000
+#define SF_POWER	1000000
 
 struct hwm_drvdata {
 	struct xe_hwmon *hwmon;
 	struct device *hwmon_dev;
+	struct xe_gt *gt;
 	char name[12];
+	bool reset_in_progress;
+	wait_queue_head_t waitq;
 };
 
 struct xe_hwmon {
 	struct hwm_drvdata ddat;
 	struct mutex hwmon_lock;	/* counter overflow logic and rmw */
+	int scl_shift_power;
 };
 
+struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name)
+{
+	switch (reg_name) {
+	case pkg_rapl_limit:
+		if (IS_DG2(gt_to_xe(ddat->gt)))
+			return PCU_CR_PACKAGE_RAPL_LIMIT;
+		else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
+			return PVC_GT0_PACKAGE_RAPL_LIMIT;
+		else
+			return XE_REG(0);
+		break;
+	case pkg_power_sku:
+		if (IS_DG2(gt_to_xe(ddat->gt)))
+			return PCU_CR_PACKAGE_POWER_SKU;
+		else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
+			return PVC_GT0_PACKAGE_POWER_SKU;
+		else
+			return XE_REG(0);
+		break;
+	case pkg_power_sku_unit:
+		if (IS_DG2(gt_to_xe(ddat->gt)))
+			return PCU_CR_PACKAGE_POWER_SKU_UNIT;
+		else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
+			return PVC_GT0_PACKAGE_POWER_SKU_UNIT;
+		else
+			return XE_REG(0);
+		break;
+	default:
+		break;
+	}
+
+	return XE_REG(0);
+}
+
+int process_hwmon_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name,
+		      enum hwm_reg_operation operation, u32 *value,
+		      u32 clr, u32 set)
+{
+	struct xe_reg reg;
+	int ret = 0;
+
+	reg = hwm_get_reg(ddat, reg_name);
+
+	if (!reg.raw)
+		return -EOPNOTSUPP;
+
+	xe_device_mem_access_get(gt_to_xe(ddat->gt));
+
+	switch (operation) {
+	case reg_read:
+		*value = xe_mmio_read32(ddat->gt, reg);
+		break;
+	case reg_write:
+		xe_mmio_write32(ddat->gt, reg, *value);
+		break;
+	case reg_rmw:
+		*value = xe_mmio_rmw32(ddat->gt, reg, clr, set);
+		break;
+	default:
+		ret = -EOPNOTSUPP;
+	}
+
+	xe_device_mem_access_put(gt_to_xe(ddat->gt));
+
+	return ret;
+}
+
+int process_hwmon_reg_read64(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name, u64 *value)
+{
+	struct xe_reg reg;
+
+	reg = hwm_get_reg(ddat, reg_name);
+
+	if (!reg.raw)
+		return -EOPNOTSUPP;
+
+	xe_device_mem_access_get(gt_to_xe(ddat->gt));
+
+	*value = xe_mmio_read64(ddat->gt, reg);
+
+	xe_device_mem_access_put(gt_to_xe(ddat->gt));
+
+	return 0;
+}
+
+#define PL1_DISABLE 0
+
+/*
+ * HW allows arbitrary PL1 limits to be set but silently clamps these values to
+ * "typical but not guaranteed" min/max values in rg.pkg_power_sku. Follow the
+ * same pattern for sysfs, allow arbitrary PL1 limits to be set but display
+ * clamped values when read. Write/read I1 also follows the same pattern.
+ */
+static int hwm_power_max_read(struct hwm_drvdata *ddat, long *value)
+{
+	struct xe_hwmon *hwmon = ddat->hwmon;
+	u32 reg_val;
+	u64 r, min, max;
+
+	xe_device_mem_access_get(gt_to_xe(ddat->gt));
+
+	process_hwmon_reg(ddat, pkg_rapl_limit, reg_read, &reg_val, 0, 0);
+	/* Check if PL1 limit is disabled */
+	if (!(reg_val & PKG_PWR_LIM_1_EN)) {
+		*value = PL1_DISABLE;
+		xe_device_mem_access_put(gt_to_xe(ddat->gt));
+		return 0;
+	}
+
+	reg_val = REG_FIELD_GET(PKG_PWR_LIM_1, reg_val);
+	*value = mul_u64_u32_shr(reg_val, SF_POWER, hwmon->scl_shift_power);
+
+	process_hwmon_reg_read64(ddat, pkg_power_sku, &r);
+	min = REG_FIELD_GET(PKG_MIN_PWR, r);
+	min = mul_u64_u32_shr(min, SF_POWER, hwmon->scl_shift_power);
+	max = REG_FIELD_GET(PKG_MAX_PWR, r);
+	max = mul_u64_u32_shr(max, SF_POWER, hwmon->scl_shift_power);
+
+	if (min && max)
+		*value = clamp_t(u64, *value, min, max);
+
+	xe_device_mem_access_put(gt_to_xe(ddat->gt));
+	return 0;
+}
+
+static int hwm_power_max_write(struct hwm_drvdata *ddat, long value)
+{
+	struct xe_hwmon *hwmon = ddat->hwmon;
+	DEFINE_WAIT(wait);
+	int ret = 0;
+	u32 nval;
+
+	/* Block waiting for GuC reset to complete when needed */
+	for (;;) {
+		mutex_lock(&hwmon->hwmon_lock);
+
+		prepare_to_wait(&ddat->waitq, &wait, TASK_INTERRUPTIBLE);
+
+		if (!hwmon->ddat.reset_in_progress)
+			break;
+
+		if (signal_pending(current)) {
+			ret = -EINTR;
+			break;
+		}
+
+		mutex_unlock(&hwmon->hwmon_lock);
+
+		schedule();
+	}
+	finish_wait(&ddat->waitq, &wait);
+	if (ret)
+		goto unlock;
+
+	xe_device_mem_access_get(gt_to_xe(ddat->gt));
+
+	/* Disable PL1 limit and verify, as limit cannot be disabled on all platforms */
+	if (value == PL1_DISABLE) {
+		process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &nval,
+				  PKG_PWR_LIM_1_EN, 0);
+		process_hwmon_reg(ddat, pkg_rapl_limit, reg_read, &nval,
+				  PKG_PWR_LIM_1_EN, 0);
+
+		if (nval & PKG_PWR_LIM_1_EN)
+			ret = -ENODEV;
+		goto exit;
+	}
+
+	/* Computation in 64-bits to avoid overflow. Round to nearest. */
+	nval = DIV_ROUND_CLOSEST_ULL((u64)value << hwmon->scl_shift_power, SF_POWER);
+	nval = PKG_PWR_LIM_1_EN | REG_FIELD_PREP(PKG_PWR_LIM_1, nval);
+
+	process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &nval,
+			  PKG_PWR_LIM_1_EN | PKG_PWR_LIM_1, nval);
+exit:
+	xe_device_mem_access_put(gt_to_xe(ddat->gt));
+unlock:
+	mutex_unlock(&hwmon->hwmon_lock);
+
+	return 0;
+}
+
+static int hwm_power_rated_max_read(struct hwm_drvdata *ddat, long *value)
+{
+	struct xe_hwmon *hwmon = ddat->hwmon;
+	u32 reg_val;
+
+	process_hwmon_reg(ddat, pkg_power_sku, reg_read, &reg_val, 0, 0);
+	reg_val = REG_FIELD_GET(PKG_PKG_TDP, reg_val);
+	*value = mul_u64_u32_shr(reg_val, SF_POWER, hwmon->scl_shift_power);
+
+	return 0;
+}
+
 static const struct hwmon_channel_info *hwm_info[] = {
+	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX),
 	NULL
 };
 
+static umode_t
+hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
+{
+	u32 reg_val;
+
+	switch (attr) {
+	case hwmon_power_max:
+		return process_hwmon_reg(ddat, pkg_rapl_limit,
+					 reg_read, &reg_val, 0, 0) ? 0 : 0664;
+	case hwmon_power_rated_max:
+		return process_hwmon_reg(ddat, pkg_power_sku,
+					 reg_read, &reg_val, 0, 0) ? 0 : 0444;
+	default:
+		return 0;
+	}
+}
+
+static int
+hwm_power_read(struct hwm_drvdata *ddat, u32 attr, int chan, long *val)
+{
+	switch (attr) {
+	case hwmon_power_max:
+		return hwm_power_max_read(ddat, val);
+	case hwmon_power_rated_max:
+		return hwm_power_rated_max_read(ddat, val);
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
+static int
+hwm_power_write(struct hwm_drvdata *ddat, u32 attr, int chan, long val)
+{
+	switch (attr) {
+	case hwmon_power_max:
+		return hwm_power_max_write(ddat, val);
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
+void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old)
+{
+	struct xe_hwmon *hwmon = xe->hwmon;
+	struct hwm_drvdata *ddat = &hwmon->ddat;
+	u32 r;
+
+	if (!hwmon || process_hwmon_reg(ddat, pkg_rapl_limit,
+					reg_read, &r, 0, 0))
+		return;
+
+	mutex_lock(&hwmon->hwmon_lock);
+
+	hwmon->ddat.reset_in_progress = true;
+
+	process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &r,
+			  PKG_PWR_LIM_1_EN, 0);
+	*old = !!(r & PKG_PWR_LIM_1_EN);
+
+	mutex_unlock(&hwmon->hwmon_lock);
+}
+
+void xe_hwmon_power_max_restore(struct xe_device *xe, bool old)
+{
+	struct xe_hwmon *hwmon = xe->hwmon;
+	struct hwm_drvdata *ddat = &hwmon->ddat;
+	u32 r;
+
+	if (!hwmon || process_hwmon_reg(ddat, pkg_rapl_limit,
+					reg_read, &r, 0, 0))
+		return;
+
+	mutex_lock(&hwmon->hwmon_lock);
+
+	process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &r,
+			  PKG_PWR_LIM_1_EN, old ? PKG_PWR_LIM_1_EN : 0);
+
+	hwmon->ddat.reset_in_progress = false;
+	wake_up_all(&hwmon->ddat.waitq);
+
+	mutex_unlock(&hwmon->hwmon_lock);
+}
+
 static umode_t
 hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
 	       u32 attr, int channel)
 {
+	struct hwm_drvdata *ddat = (struct hwm_drvdata *)drvdata;
+	int ret;
+
 	switch (type) {
+	case hwmon_power:
+		ret = hwm_power_is_visible(ddat, attr, channel);
+		break;
 	default:
-		return 0;
+		ret = 0;
 	}
+
+	return ret;
 }
 
 static int
 hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
 	 int channel, long *val)
 {
+	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
+
 	switch (type) {
+	case hwmon_power:
+		return hwm_power_read(ddat, attr, channel, val);
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -52,7 +368,11 @@ static int
 hwm_write(struct device *dev, enum hwmon_sensor_types type, u32 attr,
 	  int channel, long val)
 {
+	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
+
 	switch (type) {
+	case hwmon_power:
+		return hwm_power_write(ddat, attr, channel, val);
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -70,8 +390,19 @@ static const struct hwmon_chip_info hwm_chip_info = {
 };
 
 static void
-hwm_get_preregistration_info(struct xe_device *xe)
+hwm_get_preregistration_info(struct hwm_drvdata *ddat)
 {
+	struct xe_hwmon *hwmon = ddat->hwmon;
+	u32 val_sku_unit = 0;
+	int ret;
+
+	ret = process_hwmon_reg(ddat, pkg_power_sku_unit, reg_read, &val_sku_unit, 0, 0);
+	/*
+	 * The contents of register pkg_power_sku_unit do not change,
+	 * so read it once and store the shift values.
+	 */
+	if (!ret)
+		hwmon->scl_shift_power = REG_FIELD_GET(PKG_PWR_UNIT, val_sku_unit);
 }
 
 void xe_hwmon_register(struct xe_device *xe)
@@ -96,15 +427,18 @@ void xe_hwmon_register(struct xe_device *xe)
 	ddat->hwmon = hwmon;
 	snprintf(ddat->name, sizeof(ddat->name), "xe");
 
-	hwm_get_preregistration_info(xe);
+	init_waitqueue_head(&ddat->waitq);
+
+	hwm_get_preregistration_info(ddat);
 
 	drm_dbg(&xe->drm, "Register HWMON interface\n");
 
-	/*  hwmon_dev points to device hwmon<i> */
+	/* hwmon_dev points to device hwmon<i> */
 	hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat->name,
 							 ddat,
 							 &hwm_chip_info,
 							 NULL);
+
 	if (IS_ERR(hwmon_dev)) {
 		xe->hwmon = NULL;
 		return;
diff --git a/drivers/gpu/drm/xe/xe_hwmon.h b/drivers/gpu/drm/xe/xe_hwmon.h
index a078eeb0a68b..a5dc693569c5 100644
--- a/drivers/gpu/drm/xe/xe_hwmon.h
+++ b/drivers/gpu/drm/xe/xe_hwmon.h
@@ -14,9 +14,13 @@ struct xe_device;
 #if IS_REACHABLE(CONFIG_HWMON)
 void xe_hwmon_register(struct xe_device *xe);
 void xe_hwmon_unregister(struct xe_device *xe);
+void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old);
+void xe_hwmon_power_max_restore(struct xe_device *xe, bool old);
 #else
 static inline void xe_hwmon_register(struct xe_device *xe) { };
 static inline void xe_hwmon_unregister(struct xe_device *xe) { };
+static inline void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old) { };
+static inline void xe_hwmon_power_max_restore(struct xe_device *xe, bool old) { };
 #endif
 
 #endif /* __XE_HWMON_H__ */
diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
index 70eabf567156..9df5a3a85dc3 100644
--- a/drivers/gpu/drm/xe/xe_uc.c
+++ b/drivers/gpu/drm/xe/xe_uc.c
@@ -13,6 +13,7 @@
 #include "xe_huc.h"
 #include "xe_uc_fw.h"
 #include "xe_wopcm.h"
+#include "xe_hwmon.h"
 
 static struct xe_gt *
 uc_to_gt(struct xe_uc *uc)
@@ -127,11 +128,15 @@ int xe_uc_init_hwconfig(struct xe_uc *uc)
 int xe_uc_init_hw(struct xe_uc *uc)
 {
 	int ret;
+	bool pl1en;
 
 	/* GuC submission not enabled, nothing to do */
 	if (!xe_device_guc_submission_enabled(uc_to_xe(uc)))
 		return 0;
 
+	/* Disable a potentially low PL1 power limit to allow freq to be raised */
+	xe_hwmon_power_max_disable(uc_to_xe(uc), &pl1en);
+
 	ret = xe_uc_sanitize_reset(uc);
 	if (ret)
 		return ret;
@@ -160,6 +165,7 @@ int xe_uc_init_hw(struct xe_uc *uc)
 	if (ret)
 		return ret;
 
+	xe_hwmon_power_max_restore(uc_to_xe(uc), pl1en);
 	/* We don't fail the driver load if HuC fails to auth, but let's warn */
 	ret = xe_huc_auth(&uc->huc);
 	XE_WARN_ON(ret);
-- 
2.25.1


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

* [Intel-xe] [RFC PATCH 3/6] drm/xe/hwmon: Expose card reactive critical power
  2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
                   ` (4 preceding siblings ...)
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 2/6] drm/xe/hwmon: Expose power attributes Badal Nilawar
@ 2023-06-06 12:50 ` Badal Nilawar
  2023-06-14  7:52   ` Riana Tauro
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 4/6] drm/xe/hwmon: Expose input voltage attribute Badal Nilawar
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: Badal Nilawar @ 2023-06-06 12:50 UTC (permalink / raw)
  To: intel-xe; +Cc: jani.nikula

Expose the card reactive critical (I1) power. I1 is exposed as
power1_crit in microwatts (typically for client products) or as
curr1_crit in milliamperes (typically for server).

Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
---
 .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  26 +++++
 drivers/gpu/drm/xe/xe_hwmon.c                 | 106 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_pcode_api.h             |   7 ++
 3 files changed, 139 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
index 54a7b668009e..fcc2aedb2aac 100644
--- a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
+++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
@@ -20,3 +20,29 @@ Description:	RO. Card default power limit (default TDP setting).
 
 		Only supported for particular Intel xe graphics platforms.
 
+What:		/sys/devices/.../hwmon/hwmon<i>/power1_crit
+Date:		June 2023
+KernelVersion:	6.3
+Contact:	intel-gfx@lists.freedesktop.org
+Description:	RW. Card reactive critical (I1) power limit in microwatts.
+
+		Card reactive critical (I1) power limit in microwatts is exposed
+		for client products. The power controller will throttle the
+		operating frequency if the power averaged over a window exceeds
+		this limit.
+
+		Only supported for particular Intel xe graphics platforms.
+
+What:		/sys/devices/.../hwmon/hwmon<i>/curr1_crit
+Date:		June 2023
+KernelVersion:	6.3
+Contact:	intel-gfx@lists.freedesktop.org
+Description:	RW. Card reactive critical (I1) power limit in milliamperes.
+
+		Card reactive critical (I1) power limit in milliamperes is
+		exposed for server products. The power controller will throttle
+		the operating frequency if the power averaged over a window
+		exceeds this limit.
+
+		Only supported for particular Intel xe graphics platforms.
+
diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
index 8e248e806559..b07ea53fdbc6 100644
--- a/drivers/gpu/drm/xe/xe_hwmon.c
+++ b/drivers/gpu/drm/xe/xe_hwmon.c
@@ -14,6 +14,13 @@
 #include "xe_mmio.h"
 #include "xe_gt.h"
 #include "i915_drv.h"
+#include "xe_pcode.h"
+#include "xe_pcode_api.h"
+
+#define PCODE_MBOX(mbcmd, param1, param2)\
+	FIELD_PREP(PCODE_MB_COMMAND, mbcmd)\
+	| FIELD_PREP(PCODE_MB_PARAM1, param1)\
+	| FIELD_PREP(PCODE_MB_PARAM2, param2)
 
 enum hwm_reg_name {
 	pkg_rapl_limit,
@@ -31,9 +38,11 @@ enum hwm_reg_operation {
  * SF_* - scale factors for particular quantities according to hwmon spec.
  * - voltage  - millivolts
  * - power  - microwatts
+ * - curr   - milliamperes
  */
 #define SF_VOLTAGE	1000
 #define SF_POWER	1000000
+#define SF_CURR		1000
 
 struct hwm_drvdata {
 	struct xe_hwmon *hwmon;
@@ -246,13 +255,35 @@ static int hwm_power_rated_max_read(struct hwm_drvdata *ddat, long *value)
 
 static const struct hwmon_channel_info *hwm_info[] = {
 	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX),
+	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX | HWMON_P_CRIT),
+	HWMON_CHANNEL_INFO(curr, HWMON_C_CRIT),
 	NULL
 };
 
+/* I1 is exposed as power_crit or as curr_crit depending on bit 31 */
+static int hwm_pcode_read_i1(struct xe_gt *gt, u32 *uval)
+{
+	/* Avoid ILLEGAL_SUBCOMMAND "mailbox access failed" warning in snb_pcode_read */
+	if (IS_DG2(gt_to_xe(gt)))
+		return -ENXIO;
+
+	return xe_pcode_read(gt, PCODE_MBOX(PCODE_POWER_SETUP,
+			     POWER_SETUP_SUBCOMMAND_READ_I1, 0),
+			     uval, 0);
+}
+
+static int hwm_pcode_write_i1(struct xe_gt *gt, u32 uval)
+{
+	return xe_pcode_write(gt, PCODE_MBOX(PCODE_POWER_SETUP,
+			      POWER_SETUP_SUBCOMMAND_WRITE_I1, 0),
+			      uval);
+}
+
 static umode_t
 hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
 {
 	u32 reg_val;
+	u32 uval;
 
 	switch (attr) {
 	case hwmon_power_max:
@@ -261,6 +292,9 @@ hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
 	case hwmon_power_rated_max:
 		return process_hwmon_reg(ddat, pkg_power_sku,
 					 reg_read, &reg_val, 0, 0) ? 0 : 0444;
+	case hwmon_power_crit:
+		return (hwm_pcode_read_i1(ddat->gt, &uval) ||
+			!(uval & POWER_SETUP_I1_WATTS)) ? 0 : 0644;
 	default:
 		return 0;
 	}
@@ -269,11 +303,23 @@ hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
 static int
 hwm_power_read(struct hwm_drvdata *ddat, u32 attr, int chan, long *val)
 {
+	int ret;
+	u32 uval;
+
 	switch (attr) {
 	case hwmon_power_max:
 		return hwm_power_max_read(ddat, val);
 	case hwmon_power_rated_max:
 		return hwm_power_rated_max_read(ddat, val);
+	case hwmon_power_crit:
+		ret = hwm_pcode_read_i1(ddat->gt, &uval);
+		if (ret)
+			return ret;
+		if (!(uval & POWER_SETUP_I1_WATTS))
+			return -ENODEV;
+		*val = mul_u64_u32_shr(REG_FIELD_GET(POWER_SETUP_I1_DATA_MASK, uval),
+				       SF_POWER, POWER_SETUP_I1_SHIFT);
+		return 0;
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -282,9 +328,14 @@ hwm_power_read(struct hwm_drvdata *ddat, u32 attr, int chan, long *val)
 static int
 hwm_power_write(struct hwm_drvdata *ddat, u32 attr, int chan, long val)
 {
+	u32 uval;
+
 	switch (attr) {
 	case hwmon_power_max:
 		return hwm_power_max_write(ddat, val);
+	case hwmon_power_crit:
+		uval = DIV_ROUND_CLOSEST_ULL(val << POWER_SETUP_I1_SHIFT, SF_POWER);
+		return hwm_pcode_write_i1(ddat->gt, uval);
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -332,6 +383,55 @@ void xe_hwmon_power_max_restore(struct xe_device *xe, bool old)
 	mutex_unlock(&hwmon->hwmon_lock);
 }
 
+static umode_t
+hwm_curr_is_visible(const struct hwm_drvdata *ddat, u32 attr)
+{
+	u32 uval;
+
+	switch (attr) {
+	case hwmon_curr_crit:
+		return (hwm_pcode_read_i1(ddat->gt, &uval) ||
+			(uval & POWER_SETUP_I1_WATTS)) ? 0 : 0644;
+	default:
+		return 0;
+	}
+}
+
+static int
+hwm_curr_read(struct hwm_drvdata *ddat, u32 attr, long *val)
+{
+	int ret;
+	u32 uval;
+
+	switch (attr) {
+	case hwmon_curr_crit:
+		ret = hwm_pcode_read_i1(ddat->gt, &uval);
+		if (ret)
+			return ret;
+		if (uval & POWER_SETUP_I1_WATTS)
+			return -ENODEV;
+		*val = mul_u64_u32_shr(REG_FIELD_GET(POWER_SETUP_I1_DATA_MASK, uval),
+				       SF_CURR, POWER_SETUP_I1_SHIFT);
+		return 0;
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
+static int
+hwm_curr_write(struct hwm_drvdata *ddat, u32 attr, long val)
+{
+	u32 uval;
+
+	switch (attr) {
+	case hwmon_curr_crit:
+		uval = DIV_ROUND_CLOSEST_ULL(val << POWER_SETUP_I1_SHIFT, SF_CURR);
+		return hwm_pcode_write_i1(ddat->gt, uval);
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
 static umode_t
 hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
 	       u32 attr, int channel)
@@ -343,6 +443,8 @@ hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
 	case hwmon_power:
 		ret = hwm_power_is_visible(ddat, attr, channel);
 		break;
+	case hwmon_curr:
+		return hwm_curr_is_visible(ddat, attr);
 	default:
 		ret = 0;
 	}
@@ -359,6 +461,8 @@ hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
 	switch (type) {
 	case hwmon_power:
 		return hwm_power_read(ddat, attr, channel, val);
+	case hwmon_curr:
+		return hwm_curr_read(ddat, attr, val);
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -373,6 +477,8 @@ hwm_write(struct device *dev, enum hwmon_sensor_types type, u32 attr,
 	switch (type) {
 	case hwmon_power:
 		return hwm_power_write(ddat, attr, channel, val);
+	case hwmon_curr:
+		return hwm_curr_write(ddat, attr, val);
 	default:
 		return -EOPNOTSUPP;
 	}
diff --git a/drivers/gpu/drm/xe/xe_pcode_api.h b/drivers/gpu/drm/xe/xe_pcode_api.h
index 837ff7c71280..5935cfe30204 100644
--- a/drivers/gpu/drm/xe/xe_pcode_api.h
+++ b/drivers/gpu/drm/xe/xe_pcode_api.h
@@ -35,6 +35,13 @@
 #define     DGFX_GET_INIT_STATUS	0x0
 #define     DGFX_INIT_STATUS_COMPLETE	0x1
 
+#define   PCODE_POWER_SETUP			0x7C
+#define     POWER_SETUP_SUBCOMMAND_READ_I1	0x4
+#define     POWER_SETUP_SUBCOMMAND_WRITE_I1	0x5
+#define	    POWER_SETUP_I1_WATTS		REG_BIT(31)
+#define	    POWER_SETUP_I1_SHIFT		6	/* 10.6 fixed point format */
+#define	    POWER_SETUP_I1_DATA_MASK		REG_GENMASK(15, 0)
+
 struct pcode_err_decode {
 	int errno;
 	const char *str;
-- 
2.25.1


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

* [Intel-xe] [RFC PATCH 4/6] drm/xe/hwmon: Expose input voltage attribute
  2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
                   ` (5 preceding siblings ...)
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 3/6] drm/xe/hwmon: Expose card reactive critical power Badal Nilawar
@ 2023-06-06 12:50 ` Badal Nilawar
  2023-06-14  8:08   ` Riana Tauro
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 5/6] drm/xe/hwmon: Expose hwmon energy attribute Badal Nilawar
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: Badal Nilawar @ 2023-06-06 12:50 UTC (permalink / raw)
  To: intel-xe; +Cc: jani.nikula

Use Xe HWMON subsystem to display the input voltage.

Co-developed-by: Riana Tauro <riana.tauro@intel.com>
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
---
 .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  6 ++
 drivers/gpu/drm/xe/regs/xe_gt_regs.h          |  3 +
 drivers/gpu/drm/xe/xe_hwmon.c                 | 70 +++++++++++++++++--
 3 files changed, 75 insertions(+), 4 deletions(-)

diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
index fcc2aedb2aac..aa064e0c5751 100644
--- a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
+++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
@@ -44,5 +44,11 @@ Description:	RW. Card reactive critical (I1) power limit in milliamperes.
 		the operating frequency if the power averaged over a window
 		exceeds this limit.
 
+What:		/sys/devices/.../hwmon/hwmon<i>/in0_input
+Date:		June 2023
+KernelVersion:	6.3
+Contact:	intel-gfx@lists.freedesktop.org
+Description:	RO. Current Voltage in millivolt.
+
 		Only supported for particular Intel xe graphics platforms.
 
diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
index 9d888aae907e..fe00c42ff29d 100644
--- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
+++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
@@ -349,6 +349,9 @@
 #define GT_GFX_RC6_LOCKED			XE_REG(0x138104)
 #define GT_GFX_RC6				XE_REG(0x138108)
 
+#define GT_PERF_STATUS				XE_REG(0x1381b4)
+#define   VOLTAGE_MASK				REG_GENMASK(10, 0)
+
 #define GT_INTR_DW(x)				XE_REG(0x190018 + ((x) * 4))
 
 #define GUC_SG_INTR_ENABLE			XE_REG(0x190038)
diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
index b07ea53fdbc6..a86d2d8218d5 100644
--- a/drivers/gpu/drm/xe/xe_hwmon.c
+++ b/drivers/gpu/drm/xe/xe_hwmon.c
@@ -3,8 +3,8 @@
  * Copyright © 2023 Intel Corporation
  */
 
-#include <linux/hwmon.h>
 #include <linux/hwmon-sysfs.h>
+#include <linux/hwmon.h>
 #include <linux/types.h>
 
 #include "regs/xe_mchbar_regs.h"
@@ -26,6 +26,7 @@ enum hwm_reg_name {
 	pkg_rapl_limit,
 	pkg_power_sku,
 	pkg_power_sku_unit,
+	gt_perf_status,
 };
 
 enum hwm_reg_operation {
@@ -36,13 +37,13 @@ enum hwm_reg_operation {
 
 /*
  * SF_* - scale factors for particular quantities according to hwmon spec.
- * - voltage  - millivolts
  * - power  - microwatts
  * - curr   - milliamperes
+ * - voltage  - millivolts
  */
-#define SF_VOLTAGE	1000
 #define SF_POWER	1000000
 #define SF_CURR		1000
+#define SF_VOLTAGE	1000
 
 struct hwm_drvdata {
 	struct xe_hwmon *hwmon;
@@ -86,6 +87,11 @@ struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name)
 		else
 			return XE_REG(0);
 		break;
+	case gt_perf_status:
+		if (IS_DG2(gt_to_xe(ddat->gt)))
+			return GT_PERF_STATUS;
+		else
+			return XE_REG(0);
 	default:
 		break;
 	}
@@ -254,9 +260,9 @@ static int hwm_power_rated_max_read(struct hwm_drvdata *ddat, long *value)
 }
 
 static const struct hwmon_channel_info *hwm_info[] = {
-	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX),
 	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX | HWMON_P_CRIT),
 	HWMON_CHANNEL_INFO(curr, HWMON_C_CRIT),
+	HWMON_CHANNEL_INFO(in, HWMON_I_INPUT),
 	NULL
 };
 
@@ -279,6 +285,22 @@ static int hwm_pcode_write_i1(struct xe_gt *gt, u32 uval)
 			      uval);
 }
 
+static int hwm_get_vltg(struct hwm_drvdata *ddat, long *value)
+{
+	u32 reg_val;
+
+	if (IS_DG2(gt_to_xe(ddat->gt))) {
+		process_hwmon_reg(ddat, gt_perf_status,
+				  reg_read, &reg_val, 0, 0);
+		/* HW register value in units of 2.5 millivolt */
+		*value = DIV_ROUND_CLOSEST(REG_FIELD_GET(VOLTAGE_MASK, reg_val) * 25, 10);
+
+		return 0;
+	}
+
+	return -EOPNOTSUPP;
+}
+
 static umode_t
 hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
 {
@@ -432,6 +454,39 @@ hwm_curr_write(struct hwm_drvdata *ddat, u32 attr, long val)
 	}
 }
 
+static umode_t
+hwm_in_is_visible(struct hwm_drvdata *ddat, u32 attr)
+{
+	long val;
+
+	switch (attr) {
+	case hwmon_in_input:
+		return hwm_get_vltg(ddat, &val) ? 0 : 0444;
+	default:
+		return 0;
+	}
+}
+
+static int
+hwm_in_read(struct hwm_drvdata *ddat, u32 attr, long *val)
+{
+	int ret;
+
+	xe_device_mem_access_get(gt_to_xe(ddat->gt));
+
+	switch (attr) {
+	case hwmon_in_input:
+		ret = hwm_get_vltg(ddat, val);
+		break;
+	default:
+		ret = -EOPNOTSUPP;
+	}
+
+	xe_device_mem_access_put(gt_to_xe(ddat->gt));
+
+	return ret;
+}
+
 static umode_t
 hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
 	       u32 attr, int channel)
@@ -445,6 +500,8 @@ hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
 		break;
 	case hwmon_curr:
 		return hwm_curr_is_visible(ddat, attr);
+	case hwmon_in:
+		return hwm_in_is_visible(ddat, attr);
 	default:
 		ret = 0;
 	}
@@ -463,6 +520,8 @@ hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
 		return hwm_power_read(ddat, attr, channel, val);
 	case hwmon_curr:
 		return hwm_curr_read(ddat, attr, val);
+	case hwmon_in:
+		return hwm_in_read(ddat, attr, val);
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -530,6 +589,9 @@ void xe_hwmon_register(struct xe_device *xe)
 	mutex_init(&hwmon->hwmon_lock);
 	ddat = &hwmon->ddat;
 
+	/* primary GT to access device level properties */
+	ddat->gt = xe->tiles[0].primary_gt;
+
 	ddat->hwmon = hwmon;
 	snprintf(ddat->name, sizeof(ddat->name), "xe");
 
-- 
2.25.1


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

* [Intel-xe] [RFC PATCH 5/6] drm/xe/hwmon: Expose hwmon energy attribute
  2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
                   ` (6 preceding siblings ...)
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 4/6] drm/xe/hwmon: Expose input voltage attribute Badal Nilawar
@ 2023-06-06 12:50 ` Badal Nilawar
  2023-06-14 10:46   ` Riana Tauro
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 6/6] drm/xe/hwmon: Expose power1_max_interval Badal Nilawar
                   ` (2 subsequent siblings)
  10 siblings, 1 reply; 23+ messages in thread
From: Badal Nilawar @ 2023-06-06 12:50 UTC (permalink / raw)
  To: intel-xe; +Cc: jani.nikula

Expose hwmon energy attribute to show device level and gt
level energy usage

Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
---
 .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  12 +
 drivers/gpu/drm/xe/regs/xe_gt_regs.h          |   2 +
 drivers/gpu/drm/xe/regs/xe_mchbar_regs.h      |   3 +
 drivers/gpu/drm/xe/xe_hwmon.c                 | 206 +++++++++++++++++-
 4 files changed, 222 insertions(+), 1 deletion(-)

diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
index aa064e0c5751..64c09aa0689d 100644
--- a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
+++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
@@ -52,3 +52,15 @@ Description:	RO. Current Voltage in millivolt.
 
 		Only supported for particular Intel xe graphics platforms.
 
+What:		/sys/devices/.../hwmon/hwmon<i>/energy1_input
+Date:		June 2023
+KernelVersion:	6.3
+Contact:	intel-gfx@lists.freedesktop.org
+Description:	RO. Energy input of device or gt in microjoules.
+
+		For xe device level hwmon devices (name "xe") this
+		reflects energy input for the entire device. For gt level
+		hwmon devices (name "xe_gtN") this reflects energy input
+		for the gt.
+
+		Only supported for particular Intel xe graphics platforms.
diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
index fe00c42ff29d..a80f6fecb4c9 100644
--- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
+++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
@@ -385,8 +385,10 @@
 #define XEHPC_BCS5_BCS6_INTR_MASK		XE_REG(0x190118)
 #define XEHPC_BCS7_BCS8_INTR_MASK		XE_REG(0x19011c)
 
+#define PVC_GT0_PACKAGE_ENERGY_STATUS		XE_REG(0x281004)
 #define PVC_GT0_PACKAGE_RAPL_LIMIT		XE_REG(0x281008)
 #define PVC_GT0_PACKAGE_POWER_SKU_UNIT		XE_REG(0x281068)
+#define PVC_GT0_PLATFORM_ENERGY_STATUS		XE_REG(0x28106c)
 #define PVC_GT0_PACKAGE_POWER_SKU		XE_REG(0x281080)
 
 #endif
diff --git a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
index 4ad473e69e27..093be7401a95 100644
--- a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
+++ b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
@@ -25,6 +25,9 @@
 #define   PKG_PWR_UNIT				REG_GENMASK(3, 0)
 #define   PKG_MIN_PWR				GENMASK_ULL(30, 16)
 #define   PKG_MAX_PWR				GENMASK_ULL(46, 32)
+#define   PKG_ENERGY_UNIT			REG_GENMASK(12, 8)
+
+#define PCU_CR_PACKAGE_ENERGY_STATUS		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x593c)
 
 #define PCU_CR_PACKAGE_RAPL_LIMIT		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x59a0)
 #define   PKG_PWR_LIM_1				REG_GENMASK(14, 0)
diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
index a86d2d8218d5..63721a27081c 100644
--- a/drivers/gpu/drm/xe/xe_hwmon.c
+++ b/drivers/gpu/drm/xe/xe_hwmon.c
@@ -27,6 +27,8 @@ enum hwm_reg_name {
 	pkg_power_sku,
 	pkg_power_sku_unit,
 	gt_perf_status,
+	energy_status_all,
+	energy_status_tile,
 };
 
 enum hwm_reg_operation {
@@ -40,10 +42,17 @@ enum hwm_reg_operation {
  * - power  - microwatts
  * - curr   - milliamperes
  * - voltage  - millivolts
+ * - energy - microjoules
  */
 #define SF_POWER	1000000
 #define SF_CURR		1000
 #define SF_VOLTAGE	1000
+#define SF_ENERGY	1000000
+
+struct hwm_energy_info {
+	u32 reg_val_prev;
+	long accum_energy;		/* Accumulated energy for energy1_input */
+};
 
 struct hwm_drvdata {
 	struct xe_hwmon *hwmon;
@@ -52,12 +61,16 @@ struct hwm_drvdata {
 	char name[12];
 	bool reset_in_progress;
 	wait_queue_head_t waitq;
+	struct hwm_energy_info ei;	/*  Energy info for energy1_input */
+	int gt_n;
 };
 
 struct xe_hwmon {
 	struct hwm_drvdata ddat;
+	struct hwm_drvdata ddat_tile[XE_MAX_TILES_PER_DEVICE];
 	struct mutex hwmon_lock;	/* counter overflow logic and rmw */
 	int scl_shift_power;
+	int scl_shift_energy;
 };
 
 struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name)
@@ -92,6 +105,18 @@ struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name)
 			return GT_PERF_STATUS;
 		else
 			return XE_REG(0);
+	case energy_status_all:
+		if (IS_DG2(gt_to_xe(ddat->gt)))
+			return PCU_CR_PACKAGE_ENERGY_STATUS;
+		else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
+			return PVC_GT0_PLATFORM_ENERGY_STATUS;
+		else
+			return XE_REG(0);
+	case energy_status_tile:
+		if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
+			return PVC_GT0_PACKAGE_ENERGY_STATUS;
+		else
+			return XE_REG(0);
 	default:
 		break;
 	}
@@ -259,10 +284,69 @@ static int hwm_power_rated_max_read(struct hwm_drvdata *ddat, long *value)
 	return 0;
 }
 
+/*
+ * hwm_energy - Obtain energy value
+ *
+ * The underlying energy hardware register is 32-bits and is subject to
+ * overflow. How long before overflow? For example, with an example
+ * scaling bit shift of 14 bits (see register *PACKAGE_POWER_SKU_UNIT) and
+ * a power draw of 1000 watts, the 32-bit counter will overflow in
+ * approximately 4.36 minutes.
+ *
+ * Examples:
+ *    1 watt:  (2^32 >> 14) /    1 W / (60 * 60 * 24) secs/day -> 3 days
+ * 1000 watts: (2^32 >> 14) / 1000 W / 60             secs/min -> 4.36 minutes
+ *
+ * The function significantly increases overflow duration (from 4.36
+ * minutes) by accumulating the energy register into a 'long' as allowed by
+ * the hwmon API. Using x86_64 128 bit arithmetic (see mul_u64_u32_shr()),
+ * a 'long' of 63 bits, SF_ENERGY of 1e6 (~20 bits) and
+ * hwmon->scl_shift_energy of 14 bits we have 57 (63 - 20 + 14) bits before
+ * energy1_input overflows. This at 1000 W is an overflow duration of 278 years.
+ */
+static void
+hwm_energy(struct hwm_drvdata *ddat, long *energy)
+{
+	struct xe_hwmon *hwmon = ddat->hwmon;
+	struct hwm_energy_info *ei = &ddat->ei;
+	u32 reg_val;
+
+	xe_device_mem_access_get(gt_to_xe(ddat->gt));
+
+	mutex_lock(&hwmon->hwmon_lock);
+
+	if (ddat->gt_n >= 0)
+		process_hwmon_reg(ddat, energy_status_tile, reg_read,
+				  &reg_val, 0, 0);
+	else
+		process_hwmon_reg(ddat, energy_status_all, reg_read,
+				  &reg_val, 0, 0);
+
+	if (reg_val >= ei->reg_val_prev)
+		ei->accum_energy += reg_val - ei->reg_val_prev;
+	else
+		ei->accum_energy += UINT_MAX - ei->reg_val_prev + reg_val;
+
+	ei->reg_val_prev = reg_val;
+
+	*energy = mul_u64_u32_shr(ei->accum_energy, SF_ENERGY,
+				  hwmon->scl_shift_energy);
+
+	mutex_unlock(&hwmon->hwmon_lock);
+
+	xe_device_mem_access_put(gt_to_xe(ddat->gt));
+}
+
 static const struct hwmon_channel_info *hwm_info[] = {
 	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX | HWMON_P_CRIT),
 	HWMON_CHANNEL_INFO(curr, HWMON_C_CRIT),
 	HWMON_CHANNEL_INFO(in, HWMON_I_INPUT),
+	HWMON_CHANNEL_INFO(energy, HWMON_E_INPUT),
+	NULL
+};
+
+static const struct hwmon_channel_info *hwm_gt_info[] = {
+	HWMON_CHANNEL_INFO(energy, HWMON_E_INPUT),
 	NULL
 };
 
@@ -487,6 +571,36 @@ hwm_in_read(struct hwm_drvdata *ddat, u32 attr, long *val)
 	return ret;
 }
 
+static umode_t
+hwm_energy_is_visible(struct hwm_drvdata *ddat, u32 attr)
+{
+	u32 reg_val;
+
+	switch (attr) {
+	case hwmon_energy_input:
+		if (ddat->gt_n >= 0)
+			return process_hwmon_reg(ddat, energy_status_tile, reg_read,
+						 &reg_val, 0, 0) ? 0 : 0444;
+		else
+			return process_hwmon_reg(ddat, energy_status_all, reg_read,
+						 &reg_val, 0, 0) ? 0 : 0444;
+	default:
+		return 0;
+	}
+}
+
+static int
+hwm_energy_read(struct hwm_drvdata *ddat, u32 attr, long *val)
+{
+	switch (attr) {
+	case hwmon_energy_input:
+		hwm_energy(ddat, val);
+		return 0;
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
 static umode_t
 hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
 	       u32 attr, int channel)
@@ -502,6 +616,8 @@ hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
 		return hwm_curr_is_visible(ddat, attr);
 	case hwmon_in:
 		return hwm_in_is_visible(ddat, attr);
+	case hwmon_energy:
+		return hwm_energy_is_visible(ddat, attr);
 	default:
 		ret = 0;
 	}
@@ -522,6 +638,8 @@ hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
 		return hwm_curr_read(ddat, attr, val);
 	case hwmon_in:
 		return hwm_in_read(ddat, attr, val);
+	case hwmon_energy:
+		return hwm_energy_read(ddat, attr, val);
 	default:
 		return -EOPNOTSUPP;
 	}
@@ -554,11 +672,53 @@ static const struct hwmon_chip_info hwm_chip_info = {
 	.info = hwm_info,
 };
 
+static umode_t
+hwm_gt_is_visible(const void *drvdata, enum hwmon_sensor_types type,
+		  u32 attr, int channel)
+{
+	struct hwm_drvdata *ddat = (struct hwm_drvdata *)drvdata;
+
+	switch (type) {
+	case hwmon_energy:
+		return hwm_energy_is_visible(ddat, attr);
+	default:
+		return 0;
+	}
+}
+
+static int
+hwm_gt_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
+	    int channel, long *val)
+{
+	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
+
+	switch (type) {
+	case hwmon_energy:
+		return hwm_energy_read(ddat, attr, val);
+	default:
+		return -EOPNOTSUPP;
+	}
+}
+
+static const struct hwmon_ops hwm_gt_ops = {
+	.is_visible = hwm_gt_is_visible,
+	.read = hwm_gt_read,
+};
+
+static const struct hwmon_chip_info hwm_gt_chip_info = {
+	.ops = &hwm_gt_ops,
+	.info = hwm_gt_info,
+};
+
 static void
 hwm_get_preregistration_info(struct hwm_drvdata *ddat)
 {
 	struct xe_hwmon *hwmon = ddat->hwmon;
+	struct xe_device *xe = gt_to_xe(ddat->gt);
+	struct xe_gt *gt;
+	long energy;
 	u32 val_sku_unit = 0;
+	u8 id;
 	int ret;
 
 	ret = process_hwmon_reg(ddat, pkg_power_sku_unit, reg_read, &val_sku_unit, 0, 0);
@@ -566,8 +726,22 @@ hwm_get_preregistration_info(struct hwm_drvdata *ddat)
 	 * The contents of register pkg_power_sku_unit do not change,
 	 * so read it once and store the shift values.
 	 */
-	if (!ret)
+	if (!ret) {
 		hwmon->scl_shift_power = REG_FIELD_GET(PKG_PWR_UNIT, val_sku_unit);
+		hwmon->scl_shift_energy = REG_FIELD_GET(PKG_ENERGY_UNIT, val_sku_unit);
+	}
+
+	/*
+	 * Initialize 'struct hwm_energy_info', i.e. set fields to the
+	 * first value of the energy register read
+	 */
+	if (hwm_is_visible(ddat, hwmon_energy, hwmon_energy_input, 0))
+		hwm_energy(ddat, &energy);
+
+	for_each_gt(gt, xe, id)
+		if (hwm_gt_is_visible(&hwmon->ddat_tile[id], hwmon_energy,
+				      hwmon_energy_input, 0))
+			hwm_energy(&hwmon->ddat_tile[id], &energy);
 }
 
 void xe_hwmon_register(struct xe_device *xe)
@@ -576,6 +750,9 @@ void xe_hwmon_register(struct xe_device *xe)
 	struct xe_hwmon *hwmon;
 	struct device *hwmon_dev;
 	struct hwm_drvdata *ddat;
+	struct hwm_drvdata *ddat_tile;
+	struct xe_gt *gt;
+	u8 id;
 
 	/* hwmon is available only for dGfx */
 	if (!IS_DGFX(xe))
@@ -591,12 +768,22 @@ void xe_hwmon_register(struct xe_device *xe)
 
 	/* primary GT to access device level properties */
 	ddat->gt = xe->tiles[0].primary_gt;
+//	ddat->gt = &xe->gt[0];
+	ddat->gt_n = -1;
 
 	ddat->hwmon = hwmon;
 	snprintf(ddat->name, sizeof(ddat->name), "xe");
 
 	init_waitqueue_head(&ddat->waitq);
 
+	for_each_gt(gt, xe, id) {
+		ddat_tile = hwmon->ddat_tile + id;
+		ddat_tile->hwmon = hwmon;
+		ddat_tile->gt = gt;
+		snprintf(ddat_tile->name, sizeof(ddat_tile->name), "xe_tile%u", id);
+		ddat_tile->gt_n = id;
+	}
+
 	hwm_get_preregistration_info(ddat);
 
 	drm_dbg(&xe->drm, "Register HWMON interface\n");
@@ -613,6 +800,23 @@ void xe_hwmon_register(struct xe_device *xe)
 	}
 
 	ddat->hwmon_dev = hwmon_dev;
+
+	for_each_gt(gt, xe, id) {
+		ddat_tile = hwmon->ddat_tile + id;
+		/*
+		 * Create per-gt directories only if a per-gt attribute is
+		 * visible. Currently this is only energy
+		 */
+		if (!hwm_gt_is_visible(ddat_tile, hwmon_energy, hwmon_energy_input, 0))
+			continue;
+
+		hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat_tile->name,
+								 ddat_tile,
+								 &hwm_gt_chip_info,
+								 NULL);
+		if (!IS_ERR(hwmon_dev))
+			ddat_tile->hwmon_dev = hwmon_dev;
+	}
 }
 
 void xe_hwmon_unregister(struct xe_device *xe)
-- 
2.25.1


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

* [Intel-xe] [RFC PATCH 6/6] drm/xe/hwmon: Expose power1_max_interval
  2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
                   ` (7 preceding siblings ...)
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 5/6] drm/xe/hwmon: Expose hwmon energy attribute Badal Nilawar
@ 2023-06-06 12:50 ` Badal Nilawar
  2023-06-12  7:18   ` Gupta, Anshuman
  2023-06-06 12:54 ` [Intel-xe] ✓ CI.Build: success for Add HWMON support for DGFX Patchwork
  2023-06-06 12:54 ` [Intel-xe] ✗ CI.Hooks: failure " Patchwork
  10 siblings, 1 reply; 23+ messages in thread
From: Badal Nilawar @ 2023-06-06 12:50 UTC (permalink / raw)
  To: intel-xe; +Cc: jani.nikula

Expose power1_max_interval, that is the tau corresponding to PL1, as a
custom hwmon attribute. Some bit manipulation is needed because of the
format of PKG_PWR_LIM_1_TIME in
PACKAGE_RAPL_LIMIT register (1.x * power(2,y))

Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
---
 .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  11 ++
 drivers/gpu/drm/xe/regs/xe_mchbar_regs.h      |   8 ++
 drivers/gpu/drm/xe/xe_hwmon.c                 | 127 +++++++++++++++++-
 3 files changed, 145 insertions(+), 1 deletion(-)

diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
index 64c09aa0689d..5e9542d4ece4 100644
--- a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
+++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
@@ -64,3 +64,14 @@ Description:	RO. Energy input of device or gt in microjoules.
 		for the gt.
 
 		Only supported for particular Intel xe graphics platforms.
+
+What:		/sys/devices/.../hwmon/hwmon<i>/power1_max_interval
+Date:		June 2023
+KernelVersion:	6.3
+Contact:	intel-gfx@lists.freedesktop.org
+Description:	RW. Sustained power limit interval (Tau in PL1/Tau) in
+		milliseconds over which sustained power is averaged.
+
+		Only supported for particular Intel i915 graphics platforms.
+
+
diff --git a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
index 093be7401a95..8e8e2a3eda49 100644
--- a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
+++ b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
@@ -20,11 +20,16 @@
 
 #define PCU_CR_PACKAGE_POWER_SKU		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5930)
 #define   PKG_PKG_TDP				GENMASK_ULL(14, 0)
+#define   PKG_MAX_WIN				GENMASK_ULL(54, 48)
+#define     PKG_MAX_WIN_X			GENMASK_ULL(54, 53)
+#define     PKG_MAX_WIN_Y			GENMASK_ULL(52, 48)
+
 
 #define PCU_CR_PACKAGE_POWER_SKU_UNIT		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5938)
 #define   PKG_PWR_UNIT				REG_GENMASK(3, 0)
 #define   PKG_MIN_PWR				GENMASK_ULL(30, 16)
 #define   PKG_MAX_PWR				GENMASK_ULL(46, 32)
+#define   PKG_TIME_UNIT				REG_GENMASK(19, 16)
 #define   PKG_ENERGY_UNIT			REG_GENMASK(12, 8)
 
 #define PCU_CR_PACKAGE_ENERGY_STATUS		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x593c)
@@ -32,6 +37,9 @@
 #define PCU_CR_PACKAGE_RAPL_LIMIT		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x59a0)
 #define   PKG_PWR_LIM_1				REG_GENMASK(14, 0)
 #define   PKG_PWR_LIM_1_EN			REG_BIT(15)
+#define   PKG_PWR_LIM_1_TIME			REG_GENMASK(23, 17)
+#define   PKG_PWR_LIM_1_TIME_X			REG_GENMASK(23, 22)
+#define   PKG_PWR_LIM_1_TIME_Y			REG_GENMASK(21, 17)
 
 #endif
 
diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
index 63721a27081c..0c8d58eeef56 100644
--- a/drivers/gpu/drm/xe/xe_hwmon.c
+++ b/drivers/gpu/drm/xe/xe_hwmon.c
@@ -48,6 +48,7 @@ enum hwm_reg_operation {
 #define SF_CURR		1000
 #define SF_VOLTAGE	1000
 #define SF_ENERGY	1000000
+#define SF_TIME		1000
 
 struct hwm_energy_info {
 	u32 reg_val_prev;
@@ -71,6 +72,7 @@ struct xe_hwmon {
 	struct mutex hwmon_lock;	/* counter overflow logic and rmw */
 	int scl_shift_power;
 	int scl_shift_energy;
+	int scl_shift_time;
 };
 
 struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name)
@@ -337,6 +339,128 @@ hwm_energy(struct hwm_drvdata *ddat, long *energy)
 	xe_device_mem_access_put(gt_to_xe(ddat->gt));
 }
 
+static ssize_t
+hwm_power1_max_interval_show(struct device *dev, struct device_attribute *attr,
+			     char *buf)
+{
+	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
+	struct xe_hwmon *hwmon = ddat->hwmon;
+	u32 r, x, y, x_w = 2; /* 2 bits */
+	u64 tau4, out;
+
+	process_hwmon_reg(ddat, pkg_rapl_limit,
+			  reg_read, &r, 0, 0);
+
+	x = REG_FIELD_GET(PKG_PWR_LIM_1_TIME_X, r);
+	y = REG_FIELD_GET(PKG_PWR_LIM_1_TIME_Y, r);
+	/*
+	 * tau = 1.x * power(2,y), x = bits(23:22), y = bits(21:17)
+	 *     = (4 | x) << (y - 2)
+	 * where (y - 2) ensures a 1.x fixed point representation of 1.x
+	 * However because y can be < 2, we compute
+	 *     tau4 = (4 | x) << y
+	 * but add 2 when doing the final right shift to account for units
+	 */
+	tau4 = ((1 << x_w) | x) << y;
+	/* val in hwmon interface units (millisec) */
+	out = mul_u64_u32_shr(tau4, SF_TIME, hwmon->scl_shift_time + x_w);
+
+	return sysfs_emit(buf, "%llu\n", out);
+}
+
+static ssize_t
+hwm_power1_max_interval_store(struct device *dev,
+			      struct device_attribute *attr,
+			      const char *buf, size_t count)
+{
+	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
+	struct xe_hwmon *hwmon = ddat->hwmon;
+	u32 x, y, rxy, x_w = 2; /* 2 bits */
+	u64 tau4, r, max_win;
+	unsigned long val;
+	int ret;
+
+	ret = kstrtoul(buf, 0, &val);
+	if (ret)
+		return ret;
+
+	/*
+	 * Max HW supported tau in '1.x * power(2,y)' format, x = 0, y = 0x12
+	 * The hwmon->scl_shift_time default of 0xa results in a max tau of 256 seconds
+	 */
+#define PKG_MAX_WIN_DEFAULT 0x12ull
+
+	/*
+	 * val must be < max in hwmon interface units. The steps below are
+	 * explained in hwm_power1_max_interval_show()
+	 */
+	r = FIELD_PREP(PKG_MAX_WIN, PKG_MAX_WIN_DEFAULT);
+	x = REG_FIELD_GET(PKG_MAX_WIN_X, r);
+	y = REG_FIELD_GET(PKG_MAX_WIN_Y, r);
+	tau4 = ((1 << x_w) | x) << y;
+	max_win = mul_u64_u32_shr(tau4, SF_TIME, hwmon->scl_shift_time + x_w);
+
+	if (val > max_win)
+		return -EINVAL;
+
+	/* val in hw units */
+	val = DIV_ROUND_CLOSEST_ULL((u64)val << hwmon->scl_shift_time, SF_TIME);
+	/* Convert to 1.x * power(2,y) */
+	if (!val) {
+		/* Avoid ilog2(0) */
+		y = 0;
+		x = 0;
+	} else {
+		y = ilog2(val);
+		/* x = (val - (1 << y)) >> (y - 2); */
+		x = (val - (1ul << y)) << x_w >> y;
+	}
+
+	rxy = REG_FIELD_PREP(PKG_PWR_LIM_1_TIME_X, x) | REG_FIELD_PREP(PKG_PWR_LIM_1_TIME_Y, y);
+
+	mutex_lock(&hwmon->hwmon_lock);
+
+	process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, (u32 *)&r,
+			  PKG_PWR_LIM_1_TIME, rxy);
+
+	mutex_unlock(&hwmon->hwmon_lock);
+
+	return count;
+}
+
+static SENSOR_DEVICE_ATTR(power1_max_interval, 0664,
+			  hwm_power1_max_interval_show,
+			  hwm_power1_max_interval_store, 0);
+
+static struct attribute *hwm_attributes[] = {
+	&sensor_dev_attr_power1_max_interval.dev_attr.attr,
+	NULL
+};
+
+static umode_t hwm_attributes_visible(struct kobject *kobj,
+				      struct attribute *attr, int index)
+{
+	struct device *dev = kobj_to_dev(kobj);
+	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
+	u32 reg_val;
+
+	if (attr == &sensor_dev_attr_power1_max_interval.dev_attr.attr)
+		return process_hwmon_reg(ddat, pkg_rapl_limit,
+					 reg_read, &reg_val, 0, 0) ? 0 : attr->mode;
+
+	return 0;
+}
+
+static const struct attribute_group hwm_attrgroup = {
+	.attrs = hwm_attributes,
+	.is_visible = hwm_attributes_visible,
+};
+
+static const struct attribute_group *hwm_groups[] = {
+	&hwm_attrgroup,
+	NULL
+};
+
 static const struct hwmon_channel_info *hwm_info[] = {
 	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX | HWMON_P_CRIT),
 	HWMON_CHANNEL_INFO(curr, HWMON_C_CRIT),
@@ -729,6 +853,7 @@ hwm_get_preregistration_info(struct hwm_drvdata *ddat)
 	if (!ret) {
 		hwmon->scl_shift_power = REG_FIELD_GET(PKG_PWR_UNIT, val_sku_unit);
 		hwmon->scl_shift_energy = REG_FIELD_GET(PKG_ENERGY_UNIT, val_sku_unit);
+		hwmon->scl_shift_time = REG_FIELD_GET(PKG_TIME_UNIT, val_sku_unit);
 	}
 
 	/*
@@ -792,7 +917,7 @@ void xe_hwmon_register(struct xe_device *xe)
 	hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat->name,
 							 ddat,
 							 &hwm_chip_info,
-							 NULL);
+							 hwm_groups);
 
 	if (IS_ERR(hwmon_dev)) {
 		xe->hwmon = NULL;
-- 
2.25.1


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

* [Intel-xe] ✓ CI.Build: success for Add HWMON support for DGFX
  2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
                   ` (8 preceding siblings ...)
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 6/6] drm/xe/hwmon: Expose power1_max_interval Badal Nilawar
@ 2023-06-06 12:54 ` Patchwork
  2023-06-06 12:54 ` [Intel-xe] ✗ CI.Hooks: failure " Patchwork
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2023-06-06 12:54 UTC (permalink / raw)
  To: Badal Nilawar; +Cc: intel-xe

== Series Details ==

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



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

* [Intel-xe] ✗ CI.Hooks: failure for Add HWMON support for DGFX
  2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
                   ` (9 preceding siblings ...)
  2023-06-06 12:54 ` [Intel-xe] ✓ CI.Build: success for Add HWMON support for DGFX Patchwork
@ 2023-06-06 12:54 ` Patchwork
  10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2023-06-06 12:54 UTC (permalink / raw)
  To: Badal Nilawar; +Cc: intel-xe

== Series Details ==

Series: Add HWMON support for DGFX
URL   : https://patchwork.freedesktop.org/series/118934/
State : failure

== Summary ==

run-parts: executing /workspace/ci/hooks/00-showenv
+ pwd
+ ls -la
/workspace
total 532
drwxrwxr-x 10 1003 1003   4096 Jun  6 12:54 .
drwxr-xr-x  1 root root   4096 Jun  6 12:54 ..
-rw-rw-r--  1 1003 1003 397020 Jun  6 12:53 build.log
-rw-rw-r--  1 1003 1003   3679 Jun  6 12:49 checkpatch.log
drwxrwxr-x  5 1003 1003   4096 Jun  6 12:47 ci
drwxrwxr-x 10 1003 1003   4096 Jun  6 12:47 docker
drwxrwxr-x  8 1003 1003   4096 Jun  6 12:47 .git
-rw-rw-r--  1 1003 1003    828 Jun  6 12:48 git_apply.log
drwxrwxr-x  3 1003 1003   4096 Jun  6 12:47 .github
-rw-rw-r--  1 1003 1003    233 Jun  6 12:47 .groovylintrc.json
-rw-rw-r--  1 1003 1003     78 Jun  6 12:54 hooks.log
drwxrwxr-x 31 1003 1003   4096 Jun  6 12:53 kernel
-rw-rw-r--  1 1003 1003  56559 Jun  6 12:48 kernel.mbox
-rw-rw-r--  1 1003 1003  25980 Jun  6 12:50 kunit.log
drwxrwxr-x 39 1003 1003   4096 Jun  6 12:47 pipelines
-rw-rw-r--  1 1003 1003    793 Jun  6 12:47 README.adoc
drwxrwxr-x  3 1003 1003   4096 Jun  6 12:47 scripts
drwxrwxr-x  2 1003 1003   4096 Jun  6 12:47 .vscode
+ uname -a
Linux feebc4e22b05 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
fb7dcf451 drm/xe/hwmon: Expose power1_max_interval
15472b85d drm/xe/hwmon: Expose hwmon energy attribute
9946cedfb drm/xe/hwmon: Expose input voltage attribute
07d18355b drm/xe/hwmon: Expose card reactive critical power
c38d6b366 drm/xe/hwmon: Expose power attributes
db02f947a drm/xe/hwmon: Add HWMON infrastructure
ee454cf40 drm/xe: Don't hardcode GuC's MOCS index in register header
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
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  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_ring_ops.o
  CC [M]  drivers/gpu/drm/xe/xe_sa.o
  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
  CC [M]  drivers/gpu/drm/xe/xe_tuning.o
  CC [M]  drivers/gpu/drm/xe/xe_uc.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_fw.o
  CC [M]  drivers/gpu/drm/xe/xe_vm.o
  CC [M]  drivers/gpu/drm/xe/xe_vm_madvise.o
  CC [M]  drivers/gpu/drm/xe/xe_wait_user_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_wopcm.o
  CC [M]  drivers/gpu/drm/xe/xe_hwmon.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_klvs_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_errors_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_bo_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_mmio_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_ctb_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_messages_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_reg_defs.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_pci_test.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_rtp_test.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_guc_regs.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_wa_test.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
  HDRTEST drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_engine_regs.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_pci_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_migrate_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_dma_buf_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_bo_test.h
  HDRTEST drivers/gpu/drm/xe/xe_bb.h
  HDRTEST drivers/gpu/drm/xe/xe_bb_types.h
  HDRTEST drivers/gpu/drm/xe/xe_bo.h
  HDRTEST drivers/gpu/drm/xe/xe_bo_doc.h
  HDRTEST drivers/gpu/drm/xe/xe_bo_evict.h
  HDRTEST drivers/gpu/drm/xe/xe_bo_types.h
  HDRTEST drivers/gpu/drm/xe/xe_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_devcoredump.h
  HDRTEST drivers/gpu/drm/xe/xe_devcoredump_types.h
  HDRTEST drivers/gpu/drm/xe/xe_device.h
  HDRTEST drivers/gpu/drm/xe/xe_device_types.h
  HDRTEST drivers/gpu/drm/xe/xe_dma_buf.h
  HDRTEST drivers/gpu/drm/xe/xe_drv.h
  HDRTEST drivers/gpu/drm/xe/xe_engine_types.h
  HDRTEST drivers/gpu/drm/xe/xe_engine.h
  HDRTEST drivers/gpu/drm/xe/xe_exec.h
  HDRTEST drivers/gpu/drm/xe/xe_execlist.h
  HDRTEST drivers/gpu/drm/xe/xe_execlist_types.h
  HDRTEST drivers/gpu/drm/xe/xe_force_wake.h
  HDRTEST drivers/gpu/drm/xe/xe_force_wake_types.h
  HDRTEST drivers/gpu/drm/xe/xe_ggtt.h
  HDRTEST drivers/gpu/drm/xe/xe_ggtt_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_clock.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
  HDRTEST drivers/gpu/drm/xe/xe_gt_sysfs.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sysfs_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_tlb_invalidation_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_topology.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc.h
../drivers/gpu/drm/xe/xe_hwmon.c:16:10: fatal error: i915_drv.h: No such file or directory
   16 | #include "i915_drv.h"
      |          ^~~~~~~~~~~~
compilation terminated.
  HDRTEST drivers/gpu/drm/xe/xe_guc_ads.h
make[2]: *** [../scripts/Makefile.build:252: drivers/gpu/drm/xe/xe_hwmon.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] [RFC PATCH 1/6] drm/xe/hwmon: Add HWMON infrastructure
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 1/6] drm/xe/hwmon: Add HWMON infrastructure Badal Nilawar
@ 2023-06-07  9:40   ` Riana Tauro
  2023-06-07 13:36     ` Nilawar, Badal
  0 siblings, 1 reply; 23+ messages in thread
From: Riana Tauro @ 2023-06-07  9:40 UTC (permalink / raw)
  To: Badal Nilawar, intel-xe; +Cc: jani.nikula


Hi Badal

On 6/6/2023 6:20 PM, Badal Nilawar wrote:
> The xe HWMON module will be used to expose voltage, power and energy
> values for dGfx. Here we set up xe hwmon infrastructure including xe
> hwmon registration, basic data structures and functions.
> 
> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
>   drivers/gpu/drm/xe/Makefile          |   3 +
>   drivers/gpu/drm/xe/xe_device.c       |   5 ++
>   drivers/gpu/drm/xe/xe_device_types.h |   2 +
>   drivers/gpu/drm/xe/xe_hwmon.c        | 119 +++++++++++++++++++++++++++
>   drivers/gpu/drm/xe/xe_hwmon.h        |  22 +++++
>   5 files changed, 151 insertions(+)
>   create mode 100644 drivers/gpu/drm/xe/xe_hwmon.c
>   create mode 100644 drivers/gpu/drm/xe/xe_hwmon.h
> 
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index f34d4bdd510b..7ac4469b325b 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -112,6 +112,9 @@ xe-y += xe_bb.o \
>   	xe_wa.o \
>   	xe_wopcm.o
>   
> +# graphics hardware monitoring (HWMON) support
> +xe-$(CONFIG_HWMON) += xe_hwmon.o
> +
>   # i915 Display compat #defines and #includes
>   subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \
>   	-I$(srctree)/$(src)/display/ext \
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index c7985af85a53..0fcd60037d66 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -34,6 +34,7 @@
>   #include "xe_vm.h"
>   #include "xe_vm_madvise.h"
>   #include "xe_wait_user_fence.h"
> +#include "xe_hwmon.h"
>   
>   static int xe_file_open(struct drm_device *dev, struct drm_file *file)
>   {
> @@ -328,6 +329,8 @@ int xe_device_probe(struct xe_device *xe)
>   
>   	xe_debugfs_register(xe);
>   
> +	xe_hwmon_register(xe);
Can we call this if config hwmon is enabled instead and remove empty 
inline function?
> +
>   	err = drmm_add_action_or_reset(&xe->drm, xe_device_sanitize, xe);
>   	if (err)
>   		return err;
> @@ -354,6 +357,8 @@ static void xe_device_remove_display(struct xe_device *xe)
>   
>   void xe_device_remove(struct xe_device *xe)
>   {
> +	xe_hwmon_unregister(xe);
> +
>   	xe_device_remove_display(xe);
>   
>   	xe_display_unlink(xe);
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index 17b6b1cc5adb..6f511d359de8 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -378,6 +378,8 @@ struct xe_device {
>   	/** @d3cold_allowed: Indicates if d3cold is a valid device state */
>   	bool d3cold_allowed;
>   
> +	struct xe_hwmon *hwmon;
> +
>   	/* private: */
>   
>   #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
> new file mode 100644
> index 000000000000..65e5488dec82
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
> @@ -0,0 +1,119 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2023 Intel Corporation
> + */
> +
> +#include <linux/hwmon.h>
> +#include <linux/hwmon-sysfs.h>
> +#include <linux/types.h>
> +
> +#include "regs/xe_gt_regs.h"
Above 3 are Unused include for this patch
> +#include "xe_device.h"
> +#include "xe_hwmon.h"
> +#include "xe_mmio.h"
Unused include
> +#include "xe_gt.h"
Unused include
> +
> +struct hwm_drvdata {
> +	struct xe_hwmon *hwmon;
> +	struct device *hwmon_dev;
> +	char name[12];
> +};
> +
> +struct xe_hwmon {
> +	struct hwm_drvdata ddat;
> +	struct mutex hwmon_lock;	/* counter overflow logic and rmw */
Comment can be removed for this patch and added with the overflow logic
> +};
> + > +static const struct hwmon_channel_info *hwm_info[] = {
> +	NULL
> +};
> +
> +static umode_t
> +hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
> +	       u32 attr, int channel)
> +{
> +	switch (type) {
> +	default:
> +		return 0;
> +	}
> +}
> +
> +static int
> +hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
> +	 int channel, long *val)
> +{
> +	switch (type) {
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +}
> +
> +static int
> +hwm_write(struct device *dev, enum hwmon_sensor_types type, u32 attr,
> +	  int channel, long val)
> +{
> +	switch (type) {
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +}
> +
> +static const struct hwmon_ops hwm_ops = {
> +	.is_visible = hwm_is_visible,
> +	.read = hwm_read,
> +	.write = hwm_write,
> +};
> +
> +static const struct hwmon_chip_info hwm_chip_info = {
> +	.ops = &hwm_ops,
> +	.info = hwm_info,
> +};
> +
> +static void
> +hwm_get_preregistration_info(struct xe_device *xe)
> +{
> +}
> +
> +void xe_hwmon_register(struct xe_device *xe)
> +{
> +	struct device *dev = xe->drm.dev;
> +	struct xe_hwmon *hwmon;
> +	struct device *hwmon_dev;
> +	struct hwm_drvdata *ddat;
> +
> +	/* hwmon is available only for dGfx */
> +	if (!IS_DGFX(xe))
> +		return;
> +
> +	hwmon = devm_kzalloc(dev, sizeof(*hwmon), GFP_KERNEL);
> +	if (!hwmon)
> +		return;
> +
> +	xe->hwmon = hwmon;
> +	mutex_init(&hwmon->hwmon_lock);
> +	ddat = &hwmon->ddat;
> +
> +	ddat->hwmon = hwmon;
> +	snprintf(ddat->name, sizeof(ddat->name), "xe");
> +
> +	hwm_get_preregistration_info(xe);
> +
> +	drm_dbg(&xe->drm, "Register HWMON interface\n");
> +
> +	/*  hwmon_dev points to device hwmon<i> */
> +	hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat->name,
> +							 ddat,
> +							 &hwm_chip_info,
> +							 NULL);
> +	if (IS_ERR(hwmon_dev)) {
> +		xe->hwmon = NULL;
dbg or error statement if registration fails?
mutex_destroy needs to be added?

Thanks
Riana
> +		return;
> +	}
> +
> +	ddat->hwmon_dev = hwmon_dev;
> +}
> +
> +void xe_hwmon_unregister(struct xe_device *xe)
> +{
> +	xe->hwmon = NULL;
> +}
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.h b/drivers/gpu/drm/xe/xe_hwmon.h
> new file mode 100644
> index 000000000000..a078eeb0a68b
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_hwmon.h
> @@ -0,0 +1,22 @@
> +/* SPDX-License-Identifier: MIT */
> +
> +/*
> + * Copyright © 2023 Intel Corporation
> + */
> +
> +#ifndef __XE_HWMON_H__
> +#define __XE_HWMON_H__
> +
> +#include <linux/types.h>
> +
> +struct xe_device;
> +
> +#if IS_REACHABLE(CONFIG_HWMON)
> +void xe_hwmon_register(struct xe_device *xe);
> +void xe_hwmon_unregister(struct xe_device *xe);
> +#else
> +static inline void xe_hwmon_register(struct xe_device *xe) { };
> +static inline void xe_hwmon_unregister(struct xe_device *xe) { };
> +#endif
> +
> +#endif /* __XE_HWMON_H__ */

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

* Re: [Intel-xe] [RFC PATCH 1/6] drm/xe/hwmon: Add HWMON infrastructure
  2023-06-07  9:40   ` Riana Tauro
@ 2023-06-07 13:36     ` Nilawar, Badal
  0 siblings, 0 replies; 23+ messages in thread
From: Nilawar, Badal @ 2023-06-07 13:36 UTC (permalink / raw)
  To: Riana Tauro, intel-xe; +Cc: jani.nikula



On 07-06-2023 15:10, Riana Tauro wrote:
> 
> Hi Badal
> 
> On 6/6/2023 6:20 PM, Badal Nilawar wrote:
>> The xe HWMON module will be used to expose voltage, power and energy
>> values for dGfx. Here we set up xe hwmon infrastructure including xe
>> hwmon registration, basic data structures and functions.
>>
>> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
>> ---
>>   drivers/gpu/drm/xe/Makefile          |   3 +
>>   drivers/gpu/drm/xe/xe_device.c       |   5 ++
>>   drivers/gpu/drm/xe/xe_device_types.h |   2 +
>>   drivers/gpu/drm/xe/xe_hwmon.c        | 119 +++++++++++++++++++++++++++
>>   drivers/gpu/drm/xe/xe_hwmon.h        |  22 +++++
>>   5 files changed, 151 insertions(+)
>>   create mode 100644 drivers/gpu/drm/xe/xe_hwmon.c
>>   create mode 100644 drivers/gpu/drm/xe/xe_hwmon.h
>>
>> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
>> index f34d4bdd510b..7ac4469b325b 100644
>> --- a/drivers/gpu/drm/xe/Makefile
>> +++ b/drivers/gpu/drm/xe/Makefile
>> @@ -112,6 +112,9 @@ xe-y += xe_bb.o \
>>       xe_wa.o \
>>       xe_wopcm.o
>> +# graphics hardware monitoring (HWMON) support
>> +xe-$(CONFIG_HWMON) += xe_hwmon.o
>> +
>>   # i915 Display compat #defines and #includes
>>   subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \
>>       -I$(srctree)/$(src)/display/ext \
>> diff --git a/drivers/gpu/drm/xe/xe_device.c 
>> b/drivers/gpu/drm/xe/xe_device.c
>> index c7985af85a53..0fcd60037d66 100644
>> --- a/drivers/gpu/drm/xe/xe_device.c
>> +++ b/drivers/gpu/drm/xe/xe_device.c
>> @@ -34,6 +34,7 @@
>>   #include "xe_vm.h"
>>   #include "xe_vm_madvise.h"
>>   #include "xe_wait_user_fence.h"
>> +#include "xe_hwmon.h"
>>   static int xe_file_open(struct drm_device *dev, struct drm_file *file)
>>   {
>> @@ -328,6 +329,8 @@ int xe_device_probe(struct xe_device *xe)
>>       xe_debugfs_register(xe);
>> +    xe_hwmon_register(xe);
> Can we call this if config hwmon is enabled instead and remove empty 
> inline function?
During i915_hwmon implementation there was suggestion but not mandatory 
to add dummy functions to avoid conditional code. So I decided to avoid 
conditional code.
>> +
>>       err = drmm_add_action_or_reset(&xe->drm, xe_device_sanitize, xe);
>>       if (err)
>>           return err;
>> @@ -354,6 +357,8 @@ static void xe_device_remove_display(struct 
>> xe_device *xe)
>>   void xe_device_remove(struct xe_device *xe)
>>   {
>> +    xe_hwmon_unregister(xe);
>> +
>>       xe_device_remove_display(xe);
>>       xe_display_unlink(xe);
>> diff --git a/drivers/gpu/drm/xe/xe_device_types.h 
>> b/drivers/gpu/drm/xe/xe_device_types.h
>> index 17b6b1cc5adb..6f511d359de8 100644
>> --- a/drivers/gpu/drm/xe/xe_device_types.h
>> +++ b/drivers/gpu/drm/xe/xe_device_types.h
>> @@ -378,6 +378,8 @@ struct xe_device {
>>       /** @d3cold_allowed: Indicates if d3cold is a valid device state */
>>       bool d3cold_allowed;
>> +    struct xe_hwmon *hwmon;
>> +
>>       /* private: */
>>   #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
>> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c 
>> b/drivers/gpu/drm/xe/xe_hwmon.c
>> new file mode 100644
>> index 000000000000..65e5488dec82
>> --- /dev/null
>> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
>> @@ -0,0 +1,119 @@
>> +// SPDX-License-Identifier: MIT
>> +/*
>> + * Copyright © 2023 Intel Corporation
>> + */
>> +
>> +#include <linux/hwmon.h>
>> +#include <linux/hwmon-sysfs.h>
>> +#include <linux/types.h>
>> +
>> +#include "regs/xe_gt_regs.h"
> Above 3 are Unused include for this patch
>> +#include "xe_device.h"
>> +#include "xe_hwmon.h"
>> +#include "xe_mmio.h"
> Unused include
>> +#include "xe_gt.h"
> Unused include
Sure, I will remove unused includes.
>> +
>> +struct hwm_drvdata {
>> +    struct xe_hwmon *hwmon;
>> +    struct device *hwmon_dev;
>> +    char name[12];
>> +};
>> +
>> +struct xe_hwmon {
>> +    struct hwm_drvdata ddat;
>> +    struct mutex hwmon_lock;    /* counter overflow logic and rmw */
> Comment can be removed for this patch and added with the overflow logic
Will remove this comment.
>> +};
>> + > +static const struct hwmon_channel_info *hwm_info[] = {
>> +    NULL
>> +};
>> +
>> +static umode_t
>> +hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>> +           u32 attr, int channel)
>> +{
>> +    switch (type) {
>> +    default:
>> +        return 0;
>> +    }
>> +}
>> +
>> +static int
>> +hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>> +     int channel, long *val)
>> +{
>> +    switch (type) {
>> +    default:
>> +        return -EOPNOTSUPP;
>> +    }
>> +}
>> +
>> +static int
>> +hwm_write(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>> +      int channel, long val)
>> +{
>> +    switch (type) {
>> +    default:
>> +        return -EOPNOTSUPP;
>> +    }
>> +}
>> +
>> +static const struct hwmon_ops hwm_ops = {
>> +    .is_visible = hwm_is_visible,
>> +    .read = hwm_read,
>> +    .write = hwm_write,
>> +};
>> +
>> +static const struct hwmon_chip_info hwm_chip_info = {
>> +    .ops = &hwm_ops,
>> +    .info = hwm_info,
>> +};
>> +
>> +static void
>> +hwm_get_preregistration_info(struct xe_device *xe)
>> +{
>> +}
>> +
>> +void xe_hwmon_register(struct xe_device *xe)
>> +{
>> +    struct device *dev = xe->drm.dev;
>> +    struct xe_hwmon *hwmon;
>> +    struct device *hwmon_dev;
>> +    struct hwm_drvdata *ddat;
>> +
>> +    /* hwmon is available only for dGfx */
>> +    if (!IS_DGFX(xe))
>> +        return;
>> +
>> +    hwmon = devm_kzalloc(dev, sizeof(*hwmon), GFP_KERNEL);
>> +    if (!hwmon)
>> +        return;
>> +
>> +    xe->hwmon = hwmon;
>> +    mutex_init(&hwmon->hwmon_lock);
>> +    ddat = &hwmon->ddat;
>> +
>> +    ddat->hwmon = hwmon;
>> +    snprintf(ddat->name, sizeof(ddat->name), "xe");
>> +
>> +    hwm_get_preregistration_info(xe);
>> +
>> +    drm_dbg(&xe->drm, "Register HWMON interface\n");
>> +
>> +    /*  hwmon_dev points to device hwmon<i> */
>> +    hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat->name,
>> +                             ddat,
>> +                             &hwm_chip_info,
>> +                             NULL);
>> +    if (IS_ERR(hwmon_dev)) {
>> +        xe->hwmon = NULL;
> dbg or error statement if registration fails?
Sure will add dbg/error statement.
> mutex_destroy needs to be added?
As xe->hwmon is allocated throuh devm_kzalloc think just xe->hwmon = 
NULL is enough here.

Regards,
Badal
> 
> Thanks
> Riana
>> +        return;
>> +    }
>> +
>> +    ddat->hwmon_dev = hwmon_dev;
>> +}
>> +
>> +void xe_hwmon_unregister(struct xe_device *xe)
>> +{
>> +    xe->hwmon = NULL;
>> +}
>> diff --git a/drivers/gpu/drm/xe/xe_hwmon.h 
>> b/drivers/gpu/drm/xe/xe_hwmon.h
>> new file mode 100644
>> index 000000000000..a078eeb0a68b
>> --- /dev/null
>> +++ b/drivers/gpu/drm/xe/xe_hwmon.h
>> @@ -0,0 +1,22 @@
>> +/* SPDX-License-Identifier: MIT */
>> +
>> +/*
>> + * Copyright © 2023 Intel Corporation
>> + */
>> +
>> +#ifndef __XE_HWMON_H__
>> +#define __XE_HWMON_H__
>> +
>> +#include <linux/types.h>
>> +
>> +struct xe_device;
>> +
>> +#if IS_REACHABLE(CONFIG_HWMON)
>> +void xe_hwmon_register(struct xe_device *xe);
>> +void xe_hwmon_unregister(struct xe_device *xe);
>> +#else
>> +static inline void xe_hwmon_register(struct xe_device *xe) { };
>> +static inline void xe_hwmon_unregister(struct xe_device *xe) { };
>> +#endif
>> +
>> +#endif /* __XE_HWMON_H__ */

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

* Re: [Intel-xe] [RFC PATCH 2/6] drm/xe/hwmon: Expose power attributes
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 2/6] drm/xe/hwmon: Expose power attributes Badal Nilawar
@ 2023-06-08 14:04   ` Riana Tauro
  2023-06-26 12:50     ` Nilawar, Badal
  2023-06-14  5:16   ` Riana Tauro
  1 sibling, 1 reply; 23+ messages in thread
From: Riana Tauro @ 2023-06-08 14:04 UTC (permalink / raw)
  To: Badal Nilawar, intel-xe

Hi Badal

On 6/6/2023 6:20 PM, Badal Nilawar wrote:
> Expose power_max (pl1) and power_rated_max (tdp) attributes
> 
> Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
>   .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  22 ++
>   drivers/gpu/drm/xe/regs/xe_gt_regs.h          |   4 +
>   drivers/gpu/drm/xe/regs/xe_mchbar_regs.h      |  34 ++
>   drivers/gpu/drm/xe/xe_hwmon.c                 | 342 +++++++++++++++++-
>   drivers/gpu/drm/xe/xe_hwmon.h                 |   4 +
>   drivers/gpu/drm/xe/xe_uc.c                    |   6 +
>   6 files changed, 408 insertions(+), 4 deletions(-)
>   create mode 100644 Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
>   create mode 100644 drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> 
> diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> new file mode 100644
> index 000000000000..54a7b668009e
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> @@ -0,0 +1,22 @@
> +What:		/sys/devices/.../hwmon/hwmon<i>/power1_max
> +Date:		June 2023
> +KernelVersion:	6.3
> +Contact:	intel-gfx@lists.freedesktop.org
> +Description:	RW. Card reactive sustained  (PL1/Tau) power limit in microwatts.
> +
> +		The power controller will throttle the operating frequency
> +		if the power averaged over a window (typically seconds)
> +		exceeds this limit. A read value of 0 means that the PL1
> +		power limit is disabled, writing 0 disables the
> +		limit. Writing values > 0 will enable the power limit.
> +
> +		Only supported for particular Intel xe graphics platforms.
> +
> +What:		/sys/devices/.../hwmon/hwmon<i>/power1_rated_max
> +Date:		June 2023
> +KernelVersion:	6.3
> +Contact:	intel-gfx@lists.freedesktop.org
> +Description:	RO. Card default power limit (default TDP setting).
> +
> +		Only supported for particular Intel xe graphics platforms.
> +
> diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> index 0f920175526e..9d888aae907e 100644
> --- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> +++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> @@ -382,4 +382,8 @@
>   #define XEHPC_BCS5_BCS6_INTR_MASK		XE_REG(0x190118)
>   #define XEHPC_BCS7_BCS8_INTR_MASK		XE_REG(0x19011c)
>   
> +#define PVC_GT0_PACKAGE_RAPL_LIMIT		XE_REG(0x281008)
> +#define PVC_GT0_PACKAGE_POWER_SKU_UNIT		XE_REG(0x281068)
> +#define PVC_GT0_PACKAGE_POWER_SKU		XE_REG(0x281080)
> +
>   #endif
> diff --git a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> new file mode 100644
> index 000000000000..4ad473e69e27
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> @@ -0,0 +1,34 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2023 Intel Corporation
> + */
> +
> +#ifndef _XE_MCHBAR_REGS_H__
> +#define _XE_MCHBAR_REGS_H_
> +
> +#include "regs/xe_reg_defs.h"
> +
> +/*
> + * MCHBAR mirror.
> + *
> + * This mirrors the MCHBAR MMIO space whose location is determined by
> + * device 0 function 0's pci config register 0x44 or 0x48 and matches it in
> + * every way.
> + */
> +
> +#define MCHBAR_MIRROR_BASE_SNB			0x140000
> +
> +#define PCU_CR_PACKAGE_POWER_SKU		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5930)
> +#define   PKG_PKG_TDP				GENMASK_ULL(14, 0)
> +
> +#define PCU_CR_PACKAGE_POWER_SKU_UNIT		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5938)
> +#define   PKG_PWR_UNIT				REG_GENMASK(3, 0)
> +#define   PKG_MIN_PWR				GENMASK_ULL(30, 16)
> +#define   PKG_MAX_PWR				GENMASK_ULL(46, 32)
> +
> +#define PCU_CR_PACKAGE_RAPL_LIMIT		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x59a0)
> +#define   PKG_PWR_LIM_1				REG_GENMASK(14, 0)
> +#define   PKG_PWR_LIM_1_EN			REG_BIT(15)
> +
> +#endif
> +
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
> index 65e5488dec82..8e248e806559 100644
> --- a/drivers/gpu/drm/xe/xe_hwmon.c
> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
> @@ -7,42 +7,358 @@
>   #include <linux/hwmon-sysfs.h>
>   #include <linux/types.h>
>   
> +#include "regs/xe_mchbar_regs.h"
>   #include "regs/xe_gt_regs.h"
>   #include "xe_device.h"
>   #include "xe_hwmon.h"
>   #include "xe_mmio.h"
>   #include "xe_gt.h"
> +#include "i915_drv.h" > +
> +enum hwm_reg_name {
> +	pkg_rapl_limit,
> +	pkg_power_sku,
> +	pkg_power_sku_unit,
> +};
> +
> +enum hwm_reg_operation {
> +	reg_read,
> +	reg_write,
> +	reg_rmw,
> +};
> +
> +/*
> + * SF_* - scale factors for particular quantities according to hwmon spec.
> + * - voltage  - millivolts
> + * - power  - microwatts
> + */
> +#define SF_VOLTAGE	1000
> +#define SF_POWER	1000000
>   
>   struct hwm_drvdata {
>   	struct xe_hwmon *hwmon;
>   	struct device *hwmon_dev;
> +	struct xe_gt *gt;
>   	char name[12];
> +	bool reset_in_progress;
> +	wait_queue_head_t waitq;
>   };
>   
>   struct xe_hwmon {
>   	struct hwm_drvdata ddat;
>   	struct mutex hwmon_lock;	/* counter overflow logic and rmw */
> +	int scl_shift_power;
>   };
>   
> +struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name)
> +{
> +	switch (reg_name) {
> +	case pkg_rapl_limit:
> +		if (IS_DG2(gt_to_xe(ddat->gt)))
This is from i915 header. Should xe->info.platform be used?
> +			return PCU_CR_PACKAGE_RAPL_LIMIT;
> +		else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
> +			return PVC_GT0_PACKAGE_RAPL_LIMIT;
> +		else
> +			return XE_REG(0);
> +		break;
> +	case pkg_power_sku:
> +		if (IS_DG2(gt_to_xe(ddat->gt)))
> +			return PCU_CR_PACKAGE_POWER_SKU;
> +		else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
> +			return PVC_GT0_PACKAGE_POWER_SKU;
> +		else
> +			return XE_REG(0);
> +		break;
> +	case pkg_power_sku_unit:
> +		if (IS_DG2(gt_to_xe(ddat->gt)))
> +			return PCU_CR_PACKAGE_POWER_SKU_UNIT;
> +		else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
> +			return PVC_GT0_PACKAGE_POWER_SKU_UNIT;
> +		else
> +			return XE_REG(0);
> +		break;
> +	default:
> +		break;
> +	}
> +
> +	return XE_REG(0);
> +}
> +
> +int process_hwmon_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name,
> +		      enum hwm_reg_operation operation, u32 *value,
> +		      u32 clr, u32 set)
> +{
> +	struct xe_reg reg;
> +	int ret = 0;
> +
> +	reg = hwm_get_reg(ddat, reg_name);
> +
> +	if (!reg.raw)
> +		return -EOPNOTSUPP;
> +
> +	xe_device_mem_access_get(gt_to_xe(ddat->gt));
> +
> +	switch (operation) {
> +	case reg_read:
> +		*value = xe_mmio_read32(ddat->gt, reg);
> +		break;
> +	case reg_write:
> +		xe_mmio_write32(ddat->gt, reg, *value);
> +		break;
> +	case reg_rmw:
> +		*value = xe_mmio_rmw32(ddat->gt, reg, clr, set);
> +		break;
> +	default:
> +		ret = -EOPNOTSUPP;
> +	}
> +
> +	xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +
> +	return ret;
> +}
> +
> +int process_hwmon_reg_read64(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name, u64 *value)
> +{
> +	struct xe_reg reg;
> +
> +	reg = hwm_get_reg(ddat, reg_name);
> +
> +	if (!reg.raw)
> +		return -EOPNOTSUPP;
> +
> +	xe_device_mem_access_get(gt_to_xe(ddat->gt));
> +
> +	*value = xe_mmio_read64(ddat->gt, reg);
> +
> +	xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +
> +	return 0;
> +}
> +
> +#define PL1_DISABLE 0
> +
> +/*
> + * HW allows arbitrary PL1 limits to be set but silently clamps these values to
> + * "typical but not guaranteed" min/max values in rg.pkg_power_sku. Follow the
> + * same pattern for sysfs, allow arbitrary PL1 limits to be set but display
> + * clamped values when read. Write/read I1 also follows the same pattern.
> + */
> +static int hwm_power_max_read(struct hwm_drvdata *ddat, long *value)
> +{
> +	struct xe_hwmon *hwmon = ddat->hwmon;
> +	u32 reg_val;
> +	u64 r, min, max;
> +
> +	xe_device_mem_access_get(gt_to_xe(ddat->gt));
> +
> +	process_hwmon_reg(ddat, pkg_rapl_limit, reg_read, &reg_val, 0, 0);
> +	/* Check if PL1 limit is disabled */
> +	if (!(reg_val & PKG_PWR_LIM_1_EN)) {
> +		*value = PL1_DISABLE;
> +		xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +		return 0;
> +	}
> +
> +	reg_val = REG_FIELD_GET(PKG_PWR_LIM_1, reg_val);
> +	*value = mul_u64_u32_shr(reg_val, SF_POWER, hwmon->scl_shift_power);
> +
> +	process_hwmon_reg_read64(ddat, pkg_power_sku, &r);
> +	min = REG_FIELD_GET(PKG_MIN_PWR, r);
> +	min = mul_u64_u32_shr(min, SF_POWER, hwmon->scl_shift_power);
> +	max = REG_FIELD_GET(PKG_MAX_PWR, r);
> +	max = mul_u64_u32_shr(max, SF_POWER, hwmon->scl_shift_power);
> +
> +	if (min && max)
> +		*value = clamp_t(u64, *value, min, max);
> +
> +	xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +	return 0;
> +}
> +
> +static int hwm_power_max_write(struct hwm_drvdata *ddat, long value)
> +{
> +	struct xe_hwmon *hwmon = ddat->hwmon;
> +	DEFINE_WAIT(wait);
> +	int ret = 0;
> +	u32 nval;
> +
> +	/* Block waiting for GuC reset to complete when needed */
> +	for (;;) {
> +		mutex_lock(&hwmon->hwmon_lock);
> +
> +		prepare_to_wait(&ddat->waitq, &wait, TASK_INTERRUPTIBLE);
> +
> +		if (!hwmon->ddat.reset_in_progress)
> +			break;
> +
> +		if (signal_pending(current)) {
> +			ret = -EINTR;
> +			break;
> +		}
> +
> +		mutex_unlock(&hwmon->hwmon_lock);
> +
> +		schedule();
> +	}
> +	finish_wait(&ddat->waitq, &wait);
> +	if (ret)
> +		goto unlock;
> +
> +	xe_device_mem_access_get(gt_to_xe(ddat->gt));
> +
> +	/* Disable PL1 limit and verify, as limit cannot be disabled on all platforms */
> +	if (value == PL1_DISABLE) {
> +		process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &nval,
> +				  PKG_PWR_LIM_1_EN, 0);
> +		process_hwmon_reg(ddat, pkg_rapl_limit, reg_read, &nval,
> +				  PKG_PWR_LIM_1_EN, 0);
> +
> +		if (nval & PKG_PWR_LIM_1_EN)
> +			ret = -ENODEV;
> +		goto exit;
> +	}
> +
> +	/* Computation in 64-bits to avoid overflow. Round to nearest. */
> +	nval = DIV_ROUND_CLOSEST_ULL((u64)value << hwmon->scl_shift_power, SF_POWER);
> +	nval = PKG_PWR_LIM_1_EN | REG_FIELD_PREP(PKG_PWR_LIM_1, nval);
> +
> +	process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &nval,
> +			  PKG_PWR_LIM_1_EN | PKG_PWR_LIM_1, nval);
> +exit:
> +	xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +unlock:
> +	mutex_unlock(&hwmon->hwmon_lock);
> +
> +	return 0;
> +}
> +
> +static int hwm_power_rated_max_read(struct hwm_drvdata *ddat, long *value)
> +{
> +	struct xe_hwmon *hwmon = ddat->hwmon;
> +	u32 reg_val;
> +
> +	process_hwmon_reg(ddat, pkg_power_sku, reg_read, &reg_val, 0, 0);
> +	reg_val = REG_FIELD_GET(PKG_PKG_TDP, reg_val);
> +	*value = mul_u64_u32_shr(reg_val, SF_POWER, hwmon->scl_shift_power);
> +
> +	return 0;
> +}
> +
>   static const struct hwmon_channel_info *hwm_info[] = {
> +	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX),
>   	NULL
>   };
>   
> +static umode_t
> +hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
> +{
> +	u32 reg_val;
> +
> +	switch (attr) {
> +	case hwmon_power_max:
> +		return process_hwmon_reg(ddat, pkg_rapl_limit,
> +					 reg_read, &reg_val, 0, 0) ? 0 : 0664;
> +	case hwmon_power_rated_max:
> +		return process_hwmon_reg(ddat, pkg_power_sku,
> +					 reg_read, &reg_val, 0, 0) ? 0 : 0444;
> +	default:
> +		return 0;
> +	}
Does is_visible require an extra read operation? reg.raw check should be 
enough
> +}
> +
> +static int
> +hwm_power_read(struct hwm_drvdata *ddat, u32 attr, int chan, long *val)
> +{
> +	switch (attr) {
> +	case hwmon_power_max:
> +		return hwm_power_max_read(ddat, val);
> +	case hwmon_power_rated_max:
> +		return hwm_power_rated_max_read(ddat, val);
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +}
> +
> +static int
> +hwm_power_write(struct hwm_drvdata *ddat, u32 attr, int chan, long val)
> +{
> +	switch (attr) {
> +	case hwmon_power_max:
> +		return hwm_power_max_write(ddat, val);
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +}
> +
> +void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old)
> +{
> +	struct xe_hwmon *hwmon = xe->hwmon;
> +	struct hwm_drvdata *ddat = &hwmon->ddat;
> +	u32 r;
> +
> +	if (!hwmon || process_hwmon_reg(ddat, pkg_rapl_limit,
> +					reg_read, &r, 0, 0))
> +		return;
> +
> +	mutex_lock(&hwmon->hwmon_lock);
> +
> +	hwmon->ddat.reset_in_progress = true;
> +
> +	process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &r,
> +			  PKG_PWR_LIM_1_EN, 0);
> +	*old = !!(r & PKG_PWR_LIM_1_EN);
> +
> +	mutex_unlock(&hwmon->hwmon_lock);
> +}
> +
> +void xe_hwmon_power_max_restore(struct xe_device *xe, bool old)
> +{
> +	struct xe_hwmon *hwmon = xe->hwmon;
> +	struct hwm_drvdata *ddat = &hwmon->ddat;
> +	u32 r;
> +
> +	if (!hwmon || process_hwmon_reg(ddat, pkg_rapl_limit,
> +					reg_read, &r, 0, 0))
> +		return;
> +
> +	mutex_lock(&hwmon->hwmon_lock);
> +
> +	process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &r,
> +			  PKG_PWR_LIM_1_EN, old ? PKG_PWR_LIM_1_EN : 0);
> +
> +	hwmon->ddat.reset_in_progress = false;
> +	wake_up_all(&hwmon->ddat.waitq);
> +
> +	mutex_unlock(&hwmon->hwmon_lock);
> +}
> +
>   static umode_t
>   hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>   	       u32 attr, int channel)
>   {
> +	struct hwm_drvdata *ddat = (struct hwm_drvdata *)drvdata;
> +	int ret;
> +
>   	switch (type) {
> +	case hwmon_power:
> +		ret = hwm_power_is_visible(ddat, attr, channel);
> +		break;
>   	default:
> -		return 0;
> +		ret = 0;
>   	}
> +
> +	return ret;
>   }
>   
>   static int
>   hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>   	 int channel, long *val)
>   {
> +	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
> +
>   	switch (type) {
> +	case hwmon_power:
> +		return hwm_power_read(ddat, attr, channel, val);
>   	default:
>   		return -EOPNOTSUPP;
>   	}
> @@ -52,7 +368,11 @@ static int
>   hwm_write(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>   	  int channel, long val)
>   {
> +	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
> +
>   	switch (type) {
> +	case hwmon_power:
> +		return hwm_power_write(ddat, attr, channel, val);
>   	default:
>   		return -EOPNOTSUPP;
>   	}
> @@ -70,8 +390,19 @@ static const struct hwmon_chip_info hwm_chip_info = {
>   };
>   
>   static void
> -hwm_get_preregistration_info(struct xe_device *xe)
> +hwm_get_preregistration_info(struct hwm_drvdata *ddat)
>   {
> +	struct xe_hwmon *hwmon = ddat->hwmon;
> +	u32 val_sku_unit = 0;
> +	int ret;
> +
> +	ret = process_hwmon_reg(ddat, pkg_power_sku_unit, reg_read, &val_sku_unit, 0, 0);
> +	/*
> +	 * The contents of register pkg_power_sku_unit do not change,
> +	 * so read it once and store the shift values.
> +	 */
> +	if (!ret)
> +		hwmon->scl_shift_power = REG_FIELD_GET(PKG_PWR_UNIT, val_sku_unit);
>   }
>   
>   void xe_hwmon_register(struct xe_device *xe)
> @@ -96,15 +427,18 @@ void xe_hwmon_register(struct xe_device *xe)
>   	ddat->hwmon = hwmon;
>   	snprintf(ddat->name, sizeof(ddat->name), "xe");
>   
> -	hwm_get_preregistration_info(xe);
> +	init_waitqueue_head(&ddat->waitq);
> +
ddat->gt must be initialized before calling hwm_get_preregistration_info

Thanks
Riana
> +	hwm_get_preregistration_info(ddat);
>   
>   	drm_dbg(&xe->drm, "Register HWMON interface\n");
>   
> -	/*  hwmon_dev points to device hwmon<i> */
> +	/* hwmon_dev points to device hwmon<i> */
>   	hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat->name,
>   							 ddat,
>   							 &hwm_chip_info,
>   							 NULL);
> +
>   	if (IS_ERR(hwmon_dev)) {
>   		xe->hwmon = NULL;
>   		return;
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.h b/drivers/gpu/drm/xe/xe_hwmon.h
> index a078eeb0a68b..a5dc693569c5 100644
> --- a/drivers/gpu/drm/xe/xe_hwmon.h
> +++ b/drivers/gpu/drm/xe/xe_hwmon.h
> @@ -14,9 +14,13 @@ struct xe_device;
>   #if IS_REACHABLE(CONFIG_HWMON)
>   void xe_hwmon_register(struct xe_device *xe);
>   void xe_hwmon_unregister(struct xe_device *xe);
> +void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old);
> +void xe_hwmon_power_max_restore(struct xe_device *xe, bool old);
>   #else
>   static inline void xe_hwmon_register(struct xe_device *xe) { };
>   static inline void xe_hwmon_unregister(struct xe_device *xe) { };
> +static inline void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old) { };
> +static inline void xe_hwmon_power_max_restore(struct xe_device *xe, bool old) { };
>   #endif
>   
>   #endif /* __XE_HWMON_H__ */
> diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
> index 70eabf567156..9df5a3a85dc3 100644
> --- a/drivers/gpu/drm/xe/xe_uc.c
> +++ b/drivers/gpu/drm/xe/xe_uc.c
> @@ -13,6 +13,7 @@
>   #include "xe_huc.h"
>   #include "xe_uc_fw.h"
>   #include "xe_wopcm.h"
> +#include "xe_hwmon.h"
>   
>   static struct xe_gt *
>   uc_to_gt(struct xe_uc *uc)
> @@ -127,11 +128,15 @@ int xe_uc_init_hwconfig(struct xe_uc *uc)
>   int xe_uc_init_hw(struct xe_uc *uc)
>   {
>   	int ret;
> +	bool pl1en;
>   
>   	/* GuC submission not enabled, nothing to do */
>   	if (!xe_device_guc_submission_enabled(uc_to_xe(uc)))
>   		return 0;
>   
> +	/* Disable a potentially low PL1 power limit to allow freq to be raised */
> +	xe_hwmon_power_max_disable(uc_to_xe(uc), &pl1en);
> +
>   	ret = xe_uc_sanitize_reset(uc);
>   	if (ret)
>   		return ret;
> @@ -160,6 +165,7 @@ int xe_uc_init_hw(struct xe_uc *uc)
>   	if (ret)
>   		return ret;
>   
> +	xe_hwmon_power_max_restore(uc_to_xe(uc), pl1en);
>   	/* We don't fail the driver load if HuC fails to auth, but let's warn */
>   	ret = xe_huc_auth(&uc->huc);
>   	XE_WARN_ON(ret);

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

* Re: [Intel-xe] [RFC PATCH 6/6] drm/xe/hwmon: Expose power1_max_interval
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 6/6] drm/xe/hwmon: Expose power1_max_interval Badal Nilawar
@ 2023-06-12  7:18   ` Gupta, Anshuman
  0 siblings, 0 replies; 23+ messages in thread
From: Gupta, Anshuman @ 2023-06-12  7:18 UTC (permalink / raw)
  To: Nilawar, Badal, intel-xe, Joonas Lahtinen; +Cc: Nikula, Jani



> -----Original Message-----
> From: Nilawar, Badal <badal.nilawar@intel.com>
> Sent: Tuesday, June 6, 2023 6:21 PM
> To: intel-xe@lists.freedesktop.org
> Cc: Dixit, Ashutosh <ashutosh.dixit@intel.com>; Tauro, Riana
> <riana.tauro@intel.com>; Gupta, Anshuman <anshuman.gupta@intel.com>;
> Nikula, Jani <jani.nikula@intel.com>
> Subject: [RFC PATCH 6/6] drm/xe/hwmon: Expose power1_max_interval
> 
> Expose power1_max_interval, that is the tau corresponding to PL1, as a
> custom hwmon attribute. Some bit manipulation is needed because of the
> format of PKG_PWR_LIM_1_TIME in PACKAGE_RAPL_LIMIT register (1.x *
> power(2,y))
> 
> Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
>  .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  11 ++
>  drivers/gpu/drm/xe/regs/xe_mchbar_regs.h      |   8 ++
>  drivers/gpu/drm/xe/xe_hwmon.c                 | 127 +++++++++++++++++-
>  3 files changed, 145 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> index 64c09aa0689d..5e9542d4ece4 100644
> --- a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> +++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> @@ -64,3 +64,14 @@ Description:	RO. Energy input of device or gt in
> microjoules.
>  		for the gt.
> 
>  		Only supported for particular Intel xe graphics platforms.
> +
> +What:		/sys/devices/.../hwmon/hwmon<i>/power1_max_interval
> +Date:		June 2023
> +KernelVersion:	6.3
> +Contact:	intel-gfx@lists.freedesktop.org
> +Description:	RW. Sustained power limit interval (Tau in PL1/Tau) in
> +		milliseconds over which sustained power is averaged.
> +
> +		Only supported for particular Intel i915 graphics platforms.
> +
> +
> diff --git a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> index 093be7401a95..8e8e2a3eda49 100644
> --- a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> +++ b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> @@ -20,11 +20,16 @@
> 
>  #define PCU_CR_PACKAGE_POWER_SKU
> 	XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5930)
>  #define   PKG_PKG_TDP				GENMASK_ULL(14, 0)
> +#define   PKG_MAX_WIN				GENMASK_ULL(54,
> 48)
> +#define     PKG_MAX_WIN_X			GENMASK_ULL(54, 53)
> +#define     PKG_MAX_WIN_Y			GENMASK_ULL(52, 48)
> +
> 
>  #define PCU_CR_PACKAGE_POWER_SKU_UNIT
> 	XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5938)
>  #define   PKG_PWR_UNIT				REG_GENMASK(3, 0)
>  #define   PKG_MIN_PWR				GENMASK_ULL(30,
> 16)
>  #define   PKG_MAX_PWR				GENMASK_ULL(46,
> 32)
> +#define   PKG_TIME_UNIT				REG_GENMASK(19,
> 16)
>  #define   PKG_ENERGY_UNIT			REG_GENMASK(12, 8)
> 
>  #define PCU_CR_PACKAGE_ENERGY_STATUS
> 	XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x593c)
> @@ -32,6 +37,9 @@
>  #define PCU_CR_PACKAGE_RAPL_LIMIT
> 	XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x59a0)
>  #define   PKG_PWR_LIM_1				REG_GENMASK(14,
> 0)
>  #define   PKG_PWR_LIM_1_EN			REG_BIT(15)
> +#define   PKG_PWR_LIM_1_TIME			REG_GENMASK(23,
> 17)
> +#define   PKG_PWR_LIM_1_TIME_X			REG_GENMASK(23,
> 22)
> +#define   PKG_PWR_LIM_1_TIME_Y			REG_GENMASK(21,
> 17)
> 
>  #endif
> 
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c
> b/drivers/gpu/drm/xe/xe_hwmon.c index 63721a27081c..0c8d58eeef56
> 100644
> --- a/drivers/gpu/drm/xe/xe_hwmon.c
> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
> @@ -48,6 +48,7 @@ enum hwm_reg_operation {
>  #define SF_CURR		1000
>  #define SF_VOLTAGE	1000
>  #define SF_ENERGY	1000000
> +#define SF_TIME		1000
> 
>  struct hwm_energy_info {
>  	u32 reg_val_prev;
> @@ -71,6 +72,7 @@ struct xe_hwmon {
>  	struct mutex hwmon_lock;	/* counter overflow logic and rmw */
>  	int scl_shift_power;
>  	int scl_shift_energy;
> +	int scl_shift_time;
>  };
> 
>  struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum
> hwm_reg_name reg_name) @@ -337,6 +339,128 @@ hwm_energy(struct
> hwm_drvdata *ddat, long *energy)
>  	xe_device_mem_access_put(gt_to_xe(ddat->gt));
>  }
> 
> +static ssize_t
> +hwm_power1_max_interval_show(struct device *dev, struct
> device_attribute *attr,
> +			     char *buf)
> +{
> +	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
> +	struct xe_hwmon *hwmon = ddat->hwmon;
> +	u32 r, x, y, x_w = 2; /* 2 bits */
> +	u64 tau4, out;
> +
> +	process_hwmon_reg(ddat, pkg_rapl_limit,
> +			  reg_read, &r, 0, 0);
> +
> +	x = REG_FIELD_GET(PKG_PWR_LIM_1_TIME_X, r);
> +	y = REG_FIELD_GET(PKG_PWR_LIM_1_TIME_Y, r);
> +	/*
> +	 * tau = 1.x * power(2,y), x = bits(23:22), y = bits(21:17)
> +	 *     = (4 | x) << (y - 2)
> +	 * where (y - 2) ensures a 1.x fixed point representation of 1.x
> +	 * However because y can be < 2, we compute
> +	 *     tau4 = (4 | x) << y
> +	 * but add 2 when doing the final right shift to account for units
> +	 */
> +	tau4 = ((1 << x_w) | x) << y;
> +	/* val in hwmon interface units (millisec) */
> +	out = mul_u64_u32_shr(tau4, SF_TIME, hwmon->scl_shift_time +
> x_w);
> +
> +	return sysfs_emit(buf, "%llu\n", out); }
> +
> +static ssize_t
> +hwm_power1_max_interval_store(struct device *dev,
> +			      struct device_attribute *attr,
> +			      const char *buf, size_t count) {
> +	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
> +	struct xe_hwmon *hwmon = ddat->hwmon;
> +	u32 x, y, rxy, x_w = 2; /* 2 bits */
> +	u64 tau4, r, max_win;
> +	unsigned long val;
> +	int ret;
> +
> +	ret = kstrtoul(buf, 0, &val);
> +	if (ret)
> +		return ret;
> +
> +	/*
> +	 * Max HW supported tau in '1.x * power(2,y)' format, x = 0, y = 0x12
> +	 * The hwmon->scl_shift_time default of 0xa results in a max tau of
> 256 seconds
> +	 */
> +#define PKG_MAX_WIN_DEFAULT 0x12ull
> +
> +	/*
> +	 * val must be < max in hwmon interface units. The steps below are
> +	 * explained in hwm_power1_max_interval_show()
> +	 */
> +	r = FIELD_PREP(PKG_MAX_WIN, PKG_MAX_WIN_DEFAULT);
> +	x = REG_FIELD_GET(PKG_MAX_WIN_X, r);
> +	y = REG_FIELD_GET(PKG_MAX_WIN_Y, r);
> +	tau4 = ((1 << x_w) | x) << y;
> +	max_win = mul_u64_u32_shr(tau4, SF_TIME, hwmon-
> >scl_shift_time + x_w);
> +
> +	if (val > max_win)
> +		return -EINVAL;
> +
> +	/* val in hw units */
> +	val = DIV_ROUND_CLOSEST_ULL((u64)val << hwmon-
> >scl_shift_time, SF_TIME);
> +	/* Convert to 1.x * power(2,y) */
> +	if (!val) {
> +		/* Avoid ilog2(0) */
> +		y = 0;
> +		x = 0;
> +	} else {
> +		y = ilog2(val);
> +		/* x = (val - (1 << y)) >> (y - 2); */
> +		x = (val - (1ul << y)) << x_w >> y;
> +	}
> +
> +	rxy = REG_FIELD_PREP(PKG_PWR_LIM_1_TIME_X, x) |
> +REG_FIELD_PREP(PKG_PWR_LIM_1_TIME_Y, y);
> +
> +	mutex_lock(&hwmon->hwmon_lock);
> +
> +	process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, (u32 *)&r,
> +			  PKG_PWR_LIM_1_TIME, rxy);
> +
> +	mutex_unlock(&hwmon->hwmon_lock);
> +
> +	return count;
> +}
> +
> +static SENSOR_DEVICE_ATTR(power1_max_interval, 0664,
> +			  hwm_power1_max_interval_show,
> +			  hwm_power1_max_interval_store, 0);
> +
This adds a custom attribute to HWMON, how does it qualify for "DRM subsystem "Open Source Userspace Requirements" 
@Joonas Lahtinen what are your inputs on above ? This is very specific to Intel GPU. 
Br,
Anshuman.
> +static struct attribute *hwm_attributes[] = {
> +	&sensor_dev_attr_power1_max_interval.dev_attr.attr,
> +	NULL
> +};
> +
> +static umode_t hwm_attributes_visible(struct kobject *kobj,
> +				      struct attribute *attr, int index) {
> +	struct device *dev = kobj_to_dev(kobj);
> +	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
> +	u32 reg_val;
> +
> +	if (attr == &sensor_dev_attr_power1_max_interval.dev_attr.attr)
> +		return process_hwmon_reg(ddat, pkg_rapl_limit,
> +					 reg_read, &reg_val, 0, 0) ? 0 : attr-
> >mode;
> +
> +	return 0;
> +}
> +
> +static const struct attribute_group hwm_attrgroup = {
> +	.attrs = hwm_attributes,
> +	.is_visible = hwm_attributes_visible,
> +};
> +
> +static const struct attribute_group *hwm_groups[] = {
> +	&hwm_attrgroup,
> +	NULL
> +};
> +
>  static const struct hwmon_channel_info *hwm_info[] = {
>  	HWMON_CHANNEL_INFO(power, HWMON_P_MAX |
> HWMON_P_RATED_MAX | HWMON_P_CRIT),
>  	HWMON_CHANNEL_INFO(curr, HWMON_C_CRIT), @@ -729,6
> +853,7 @@ hwm_get_preregistration_info(struct hwm_drvdata *ddat)
>  	if (!ret) {
>  		hwmon->scl_shift_power =
> REG_FIELD_GET(PKG_PWR_UNIT, val_sku_unit);
>  		hwmon->scl_shift_energy =
> REG_FIELD_GET(PKG_ENERGY_UNIT, val_sku_unit);
> +		hwmon->scl_shift_time = REG_FIELD_GET(PKG_TIME_UNIT,
> val_sku_unit);
>  	}
> 
>  	/*
> @@ -792,7 +917,7 @@ void xe_hwmon_register(struct xe_device *xe)
>  	hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat-
> >name,
>  							 ddat,
>  							 &hwm_chip_info,
> -							 NULL);
> +							 hwm_groups);
> 
>  	if (IS_ERR(hwmon_dev)) {
>  		xe->hwmon = NULL;
> --
> 2.25.1


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

* Re: [Intel-xe] [RFC PATCH 2/6] drm/xe/hwmon: Expose power attributes
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 2/6] drm/xe/hwmon: Expose power attributes Badal Nilawar
  2023-06-08 14:04   ` Riana Tauro
@ 2023-06-14  5:16   ` Riana Tauro
  2023-06-26 13:01     ` Nilawar, Badal
  1 sibling, 1 reply; 23+ messages in thread
From: Riana Tauro @ 2023-06-14  5:16 UTC (permalink / raw)
  To: Badal Nilawar, intel-xe; +Cc: jani.nikula


Hi Badal

On 6/6/2023 6:20 PM, Badal Nilawar wrote:
> Expose power_max (pl1) and power_rated_max (tdp) attributes
> 
> Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
>   .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  22 ++
>   drivers/gpu/drm/xe/regs/xe_gt_regs.h          |   4 +
>   drivers/gpu/drm/xe/regs/xe_mchbar_regs.h      |  34 ++
>   drivers/gpu/drm/xe/xe_hwmon.c                 | 342 +++++++++++++++++-
>   drivers/gpu/drm/xe/xe_hwmon.h                 |   4 +
>   drivers/gpu/drm/xe/xe_uc.c                    |   6 +
>   6 files changed, 408 insertions(+), 4 deletions(-)
>   create mode 100644 Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
>   create mode 100644 drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> 
> diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> new file mode 100644
> index 000000000000..54a7b668009e
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> @@ -0,0 +1,22 @@
> +What:		/sys/devices/.../hwmon/hwmon<i>/power1_max
> +Date:		June 2023
> +KernelVersion:	6.3
> +Contact:	intel-gfx@lists.freedesktop.org
> +Description:	RW. Card reactive sustained  (PL1/Tau) power limit in microwatts.
> +
> +		The power controller will throttle the operating frequency
> +		if the power averaged over a window (typically seconds)
> +		exceeds this limit. A read value of 0 means that the PL1
> +		power limit is disabled, writing 0 disables the
> +		limit. Writing values > 0 will enable the power limit.
> +
> +		Only supported for particular Intel xe graphics platforms.
> +
> +What:		/sys/devices/.../hwmon/hwmon<i>/power1_rated_max
> +Date:		June 2023
> +KernelVersion:	6.3
> +Contact:	intel-gfx@lists.freedesktop.org
> +Description:	RO. Card default power limit (default TDP setting).
> +
> +		Only supported for particular Intel xe graphics platforms.
> +
> diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> index 0f920175526e..9d888aae907e 100644
> --- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> +++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> @@ -382,4 +382,8 @@
>   #define XEHPC_BCS5_BCS6_INTR_MASK		XE_REG(0x190118)
>   #define XEHPC_BCS7_BCS8_INTR_MASK		XE_REG(0x19011c)
>   
> +#define PVC_GT0_PACKAGE_RAPL_LIMIT		XE_REG(0x281008)
> +#define PVC_GT0_PACKAGE_POWER_SKU_UNIT		XE_REG(0x281068)
> +#define PVC_GT0_PACKAGE_POWER_SKU		XE_REG(0x281080)
> +
>   #endif
> diff --git a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> new file mode 100644
> index 000000000000..4ad473e69e27
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> @@ -0,0 +1,34 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2023 Intel Corporation
> + */
> +
> +#ifndef _XE_MCHBAR_REGS_H__
> +#define _XE_MCHBAR_REGS_H_
> +
> +#include "regs/xe_reg_defs.h"
> +
> +/*
> + * MCHBAR mirror.
> + *
> + * This mirrors the MCHBAR MMIO space whose location is determined by
> + * device 0 function 0's pci config register 0x44 or 0x48 and matches it in
> + * every way.
> + */
> +
> +#define MCHBAR_MIRROR_BASE_SNB			0x140000
> +
> +#define PCU_CR_PACKAGE_POWER_SKU		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5930)
> +#define   PKG_PKG_TDP				GENMASK_ULL(14, 0)
> +
> +#define PCU_CR_PACKAGE_POWER_SKU_UNIT		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5938)
> +#define   PKG_PWR_UNIT				REG_GENMASK(3, 0)
> +#define   PKG_MIN_PWR				GENMASK_ULL(30, 16)
> +#define   PKG_MAX_PWR				GENMASK_ULL(46, 32)
PKG_MIN_PWR & PKG_MAX_PWR are under PCU_CR_PACKAGE_POWER_SKU
Should be moved above
> +
> +#define PCU_CR_PACKAGE_RAPL_LIMIT		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x59a0)
> +#define   PKG_PWR_LIM_1				REG_GENMASK(14, 0)
> +#define   PKG_PWR_LIM_1_EN			REG_BIT(15)
> +
> +#endif
> +
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
> index 65e5488dec82..8e248e806559 100644
> --- a/drivers/gpu/drm/xe/xe_hwmon.c
> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
> @@ -7,42 +7,358 @@
>   #include <linux/hwmon-sysfs.h>
>   #include <linux/types.h>
>   
> +#include "regs/xe_mchbar_regs.h"
>   #include "regs/xe_gt_regs.h"
>   #include "xe_device.h"
>   #include "xe_hwmon.h"
>   #include "xe_mmio.h"
>   #include "xe_gt.h"
> +#include "i915_drv.h"
> +
> +enum hwm_reg_name {
> +	pkg_rapl_limit,
> +	pkg_power_sku,
> +	pkg_power_sku_unit,
> +};
> +
> +enum hwm_reg_operation {
> +	reg_read,
> +	reg_write,
> +	reg_rmw,
> +};
> +
> +/*
> + * SF_* - scale factors for particular quantities according to hwmon spec.
> + * - voltage  - millivolts
> + * - power  - microwatts
> + */
> +#define SF_VOLTAGE	1000
> +#define SF_POWER	1000000
>   
>   struct hwm_drvdata {
>   	struct xe_hwmon *hwmon;
>   	struct device *hwmon_dev;
> +	struct xe_gt *gt;
>   	char name[12];
> +	bool reset_in_progress;
> +	wait_queue_head_t waitq;
>   };
>   
>   struct xe_hwmon {
>   	struct hwm_drvdata ddat;
>   	struct mutex hwmon_lock;	/* counter overflow logic and rmw */
> +	int scl_shift_power;
>   };
>   
> +struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name)
> +{
> +	switch (reg_name) {
> +	case pkg_rapl_limit:
> +		if (IS_DG2(gt_to_xe(ddat->gt)))
> +			return PCU_CR_PACKAGE_RAPL_LIMIT;
> +		else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
> +			return PVC_GT0_PACKAGE_RAPL_LIMIT;
> +		else
> +			return XE_REG(0);
returns XE_REG(0) at the end. Can be removed
> +		break;
> +	case pkg_power_sku:
> +		if (IS_DG2(gt_to_xe(ddat->gt)))
> +			return PCU_CR_PACKAGE_POWER_SKU;
> +		else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
> +			return PVC_GT0_PACKAGE_POWER_SKU;
> +		else
> +			return XE_REG(0);
> +		break;
> +	case pkg_power_sku_unit:
> +		if (IS_DG2(gt_to_xe(ddat->gt)))
> +			return PCU_CR_PACKAGE_POWER_SKU_UNIT;
> +		else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
> +			return PVC_GT0_PACKAGE_POWER_SKU_UNIT;
> +		else
> +			return XE_REG(0);
> +		break;
> +	default:
> +		break;
> +	}
> +
> +	return XE_REG(0);
> +}
> +
> +int process_hwmon_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name,
> +		      enum hwm_reg_operation operation, u32 *value,
> +		      u32 clr, u32 set)
> +{
> +	struct xe_reg reg;
> +	int ret = 0;
> +
> +	reg = hwm_get_reg(ddat, reg_name);
> +
> +	if (!reg.raw)
> +		return -EOPNOTSUPP;
> +
> +	xe_device_mem_access_get(gt_to_xe(ddat->gt));
> +
> +	switch (operation) {
> +	case reg_read:
> +		*value = xe_mmio_read32(ddat->gt, reg);
> +		break;
> +	case reg_write:
> +		xe_mmio_write32(ddat->gt, reg, *value);
> +		break;
> +	case reg_rmw:
> +		*value = xe_mmio_rmw32(ddat->gt, reg, clr, set);
> +		break;
> +	default:
> +		ret = -EOPNOTSUPP;
> +	}
> +
> +	xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +
> +	return ret;
Return 0 instead of extra variable
> +}
> +
> +int process_hwmon_reg_read64(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name, u64 *value)
> +{
> +	struct xe_reg reg;
> +
> +	reg = hwm_get_reg(ddat, reg_name);
> +
> +	if (!reg.raw)
> +		return -EOPNOTSUPP;
> +
> +	xe_device_mem_access_get(gt_to_xe(ddat->gt));
> +
> +	*value = xe_mmio_read64(ddat->gt, reg);
> +
> +	xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +
> +	return 0;
> +}
> +
> +#define PL1_DISABLE 0
> +
> +/*
> + * HW allows arbitrary PL1 limits to be set but silently clamps these values to
> + * "typical but not guaranteed" min/max values in rg.pkg_power_sku. Follow the
> + * same pattern for sysfs, allow arbitrary PL1 limits to be set but display
> + * clamped values when read. Write/read I1 also follows the same pattern.
> + */
Last line about I1 should be added in the next patch
> +static int hwm_power_max_read(struct hwm_drvdata *ddat, long *value)
> +{
> +	struct xe_hwmon *hwmon = ddat->hwmon;
> +	u32 reg_val;
> +	u64 r, min, max;
> +
> +	xe_device_mem_access_get(gt_to_xe(ddat->gt));
> +
> +	process_hwmon_reg(ddat, pkg_rapl_limit, reg_read, &reg_val, 0, 0);
> +	/* Check if PL1 limit is disabled */
> +	if (!(reg_val & PKG_PWR_LIM_1_EN)) {
> +		*value = PL1_DISABLE;
> +		xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +		return 0;
> +	}
> +
> +	reg_val = REG_FIELD_GET(PKG_PWR_LIM_1, reg_val);
> +	*value = mul_u64_u32_shr(reg_val, SF_POWER, hwmon->scl_shift_power);
> +
> +	process_hwmon_reg_read64(ddat, pkg_power_sku, &r);
> +	min = REG_FIELD_GET(PKG_MIN_PWR, r);
> +	min = mul_u64_u32_shr(min, SF_POWER, hwmon->scl_shift_power);
> +	max = REG_FIELD_GET(PKG_MAX_PWR, r);
> +	max = mul_u64_u32_shr(max, SF_POWER, hwmon->scl_shift_power);
> +
> +	if (min && max)
> +		*value = clamp_t(u64, *value, min, max);
> +
> +	xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +	return 0;
> +}
> +
> +static int hwm_power_max_write(struct hwm_drvdata *ddat, long value)
> +{
> +	struct xe_hwmon *hwmon = ddat->hwmon;
> +	DEFINE_WAIT(wait);
> +	int ret = 0;
> +	u32 nval;
> +
> +	/* Block waiting for GuC reset to complete when needed */
> +	for (;;) {
> +		mutex_lock(&hwmon->hwmon_lock);
> +
> +		prepare_to_wait(&ddat->waitq, &wait, TASK_INTERRUPTIBLE);
> +
> +		if (!hwmon->ddat.reset_in_progress)
> +			break;
> +
> +		if (signal_pending(current)) {
> +			ret = -EINTR;
> +			break;
> +		}
> +
> +		mutex_unlock(&hwmon->hwmon_lock);
> +
> +		schedule();
> +	}
> +	finish_wait(&ddat->waitq, &wait);
> +	if (ret)
> +		goto unlock;
> +
> +	xe_device_mem_access_get(gt_to_xe(ddat->gt));
> +
> +	/* Disable PL1 limit and verify, as limit cannot be disabled on all platforms */
> +	if (value == PL1_DISABLE) {
> +		process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &nval,
> +				  PKG_PWR_LIM_1_EN, 0);
> +		process_hwmon_reg(ddat, pkg_rapl_limit, reg_read, &nval,
> +				  PKG_PWR_LIM_1_EN, 0);
> +
> +		if (nval & PKG_PWR_LIM_1_EN)
> +			ret = -ENODEV;
> +		goto exit;
> +	}
> +
> +	/* Computation in 64-bits to avoid overflow. Round to nearest. */
> +	nval = DIV_ROUND_CLOSEST_ULL((u64)value << hwmon->scl_shift_power, SF_POWER);
> +	nval = PKG_PWR_LIM_1_EN | REG_FIELD_PREP(PKG_PWR_LIM_1, nval);
> +
> +	process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &nval,
> +			  PKG_PWR_LIM_1_EN | PKG_PWR_LIM_1, nval);
> +exit:
> +	xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +unlock:
> +	mutex_unlock(&hwmon->hwmon_lock);
> +
> +	return 0;
> +}
> +
> +static int hwm_power_rated_max_read(struct hwm_drvdata *ddat, long *value)
> +{
> +	struct xe_hwmon *hwmon = ddat->hwmon;
> +	u32 reg_val;
xe_device_mem_access_get needs to be added?

Thanks
Riana
> +
> +	process_hwmon_reg(ddat, pkg_power_sku, reg_read, &reg_val, 0, 0);
> +	reg_val = REG_FIELD_GET(PKG_PKG_TDP, reg_val);
> +	*value = mul_u64_u32_shr(reg_val, SF_POWER, hwmon->scl_shift_power);
> +
> +	return 0;
> +}
> +
>   static const struct hwmon_channel_info *hwm_info[] = {
> +	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX),
>   	NULL
>   };
>   
> +static umode_t
> +hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
> +{
> +	u32 reg_val;
> +
> +	switch (attr) {
> +	case hwmon_power_max:
> +		return process_hwmon_reg(ddat, pkg_rapl_limit,
> +					 reg_read, &reg_val, 0, 0) ? 0 : 0664;
> +	case hwmon_power_rated_max:
> +		return process_hwmon_reg(ddat, pkg_power_sku,
> +					 reg_read, &reg_val, 0, 0) ? 0 : 0444;
> +	default:
> +		return 0;
> +	}
> +}
> +
> +static int
> +hwm_power_read(struct hwm_drvdata *ddat, u32 attr, int chan, long *val)
> +{
> +	switch (attr) {
> +	case hwmon_power_max:
> +		return hwm_power_max_read(ddat, val);
> +	case hwmon_power_rated_max:
> +		return hwm_power_rated_max_read(ddat, val);
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +}
> +
> +static int
> +hwm_power_write(struct hwm_drvdata *ddat, u32 attr, int chan, long val)
> +{
> +	switch (attr) {
> +	case hwmon_power_max:
> +		return hwm_power_max_write(ddat, val);
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +}
> +
> +void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old)
> +{
> +	struct xe_hwmon *hwmon = xe->hwmon;
> +	struct hwm_drvdata *ddat = &hwmon->ddat;
> +	u32 r;
> +
> +	if (!hwmon || process_hwmon_reg(ddat, pkg_rapl_limit,
> +					reg_read, &r, 0, 0))
> +		return;
> +
> +	mutex_lock(&hwmon->hwmon_lock);
> +
> +	hwmon->ddat.reset_in_progress = true;
> +
> +	process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &r,
> +			  PKG_PWR_LIM_1_EN, 0);
> +	*old = !!(r & PKG_PWR_LIM_1_EN);
> +
> +	mutex_unlock(&hwmon->hwmon_lock);
> +}
> +
> +void xe_hwmon_power_max_restore(struct xe_device *xe, bool old)
> +{
> +	struct xe_hwmon *hwmon = xe->hwmon;
> +	struct hwm_drvdata *ddat = &hwmon->ddat;
> +	u32 r;
> +
> +	if (!hwmon || process_hwmon_reg(ddat, pkg_rapl_limit,
> +					reg_read, &r, 0, 0))
> +		return;
> +
> +	mutex_lock(&hwmon->hwmon_lock);
> +
> +	process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &r,
> +			  PKG_PWR_LIM_1_EN, old ? PKG_PWR_LIM_1_EN : 0);
> +
> +	hwmon->ddat.reset_in_progress = false;
> +	wake_up_all(&hwmon->ddat.waitq);
> +
> +	mutex_unlock(&hwmon->hwmon_lock);
> +}
> +
>   static umode_t
>   hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>   	       u32 attr, int channel)
>   {
> +	struct hwm_drvdata *ddat = (struct hwm_drvdata *)drvdata;
> +	int ret;
> +
>   	switch (type) {
> +	case hwmon_power:
> +		ret = hwm_power_is_visible(ddat, attr, channel);
> +		break;
>   	default:
> -		return 0;
> +		ret = 0;
>   	}
> +
> +	return ret;
>   }
>   
>   static int
>   hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>   	 int channel, long *val)
>   {
> +	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
> +
>   	switch (type) {
> +	case hwmon_power:
> +		return hwm_power_read(ddat, attr, channel, val);
>   	default:
>   		return -EOPNOTSUPP;
>   	}
> @@ -52,7 +368,11 @@ static int
>   hwm_write(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>   	  int channel, long val)
>   {
> +	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
> +
>   	switch (type) {
> +	case hwmon_power:
> +		return hwm_power_write(ddat, attr, channel, val);
>   	default:
>   		return -EOPNOTSUPP;
>   	}
> @@ -70,8 +390,19 @@ static const struct hwmon_chip_info hwm_chip_info = {
>   };
>   
>   static void
> -hwm_get_preregistration_info(struct xe_device *xe)
> +hwm_get_preregistration_info(struct hwm_drvdata *ddat)
>   {
> +	struct xe_hwmon *hwmon = ddat->hwmon;
> +	u32 val_sku_unit = 0;
> +	int ret;
> +
> +	ret = process_hwmon_reg(ddat, pkg_power_sku_unit, reg_read, &val_sku_unit, 0, 0);
> +	/*
> +	 * The contents of register pkg_power_sku_unit do not change,
> +	 * so read it once and store the shift values.
> +	 */
> +	if (!ret)
> +		hwmon->scl_shift_power = REG_FIELD_GET(PKG_PWR_UNIT, val_sku_unit);
>   }
>   
>   void xe_hwmon_register(struct xe_device *xe)
> @@ -96,15 +427,18 @@ void xe_hwmon_register(struct xe_device *xe)
>   	ddat->hwmon = hwmon;
>   	snprintf(ddat->name, sizeof(ddat->name), "xe");
>   
> -	hwm_get_preregistration_info(xe);
> +	init_waitqueue_head(&ddat->waitq);
> +
> +	hwm_get_preregistration_info(ddat);
>   
>   	drm_dbg(&xe->drm, "Register HWMON interface\n");
>   
> -	/*  hwmon_dev points to device hwmon<i> */
> +	/* hwmon_dev points to device hwmon<i> */
>   	hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat->name,
>   							 ddat,
>   							 &hwm_chip_info,
>   							 NULL);
> +
>   	if (IS_ERR(hwmon_dev)) {
>   		xe->hwmon = NULL;
>   		return;
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.h b/drivers/gpu/drm/xe/xe_hwmon.h
> index a078eeb0a68b..a5dc693569c5 100644
> --- a/drivers/gpu/drm/xe/xe_hwmon.h
> +++ b/drivers/gpu/drm/xe/xe_hwmon.h
> @@ -14,9 +14,13 @@ struct xe_device;
>   #if IS_REACHABLE(CONFIG_HWMON)
>   void xe_hwmon_register(struct xe_device *xe);
>   void xe_hwmon_unregister(struct xe_device *xe);
> +void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old);
> +void xe_hwmon_power_max_restore(struct xe_device *xe, bool old);
>   #else
>   static inline void xe_hwmon_register(struct xe_device *xe) { };
>   static inline void xe_hwmon_unregister(struct xe_device *xe) { };
> +static inline void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old) { };
> +static inline void xe_hwmon_power_max_restore(struct xe_device *xe, bool old) { };
>   #endif
>   
>   #endif /* __XE_HWMON_H__ */
> diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
> index 70eabf567156..9df5a3a85dc3 100644
> --- a/drivers/gpu/drm/xe/xe_uc.c
> +++ b/drivers/gpu/drm/xe/xe_uc.c
> @@ -13,6 +13,7 @@
>   #include "xe_huc.h"
>   #include "xe_uc_fw.h"
>   #include "xe_wopcm.h"
> +#include "xe_hwmon.h"
>   
>   static struct xe_gt *
>   uc_to_gt(struct xe_uc *uc)
> @@ -127,11 +128,15 @@ int xe_uc_init_hwconfig(struct xe_uc *uc)
>   int xe_uc_init_hw(struct xe_uc *uc)
>   {
>   	int ret;
> +	bool pl1en;
>   
>   	/* GuC submission not enabled, nothing to do */
>   	if (!xe_device_guc_submission_enabled(uc_to_xe(uc)))
>   		return 0;
>   
> +	/* Disable a potentially low PL1 power limit to allow freq to be raised */
> +	xe_hwmon_power_max_disable(uc_to_xe(uc), &pl1en);
> +
>   	ret = xe_uc_sanitize_reset(uc);
>   	if (ret)
>   		return ret;
> @@ -160,6 +165,7 @@ int xe_uc_init_hw(struct xe_uc *uc)
>   	if (ret)
>   		return ret;
>   
> +	xe_hwmon_power_max_restore(uc_to_xe(uc), pl1en);
>   	/* We don't fail the driver load if HuC fails to auth, but let's warn */
>   	ret = xe_huc_auth(&uc->huc);
>   	XE_WARN_ON(ret);

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

* Re: [Intel-xe] [RFC PATCH 3/6] drm/xe/hwmon: Expose card reactive critical power
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 3/6] drm/xe/hwmon: Expose card reactive critical power Badal Nilawar
@ 2023-06-14  7:52   ` Riana Tauro
  2023-06-26 13:27     ` Nilawar, Badal
  0 siblings, 1 reply; 23+ messages in thread
From: Riana Tauro @ 2023-06-14  7:52 UTC (permalink / raw)
  To: Badal Nilawar, intel-xe; +Cc: jani.nikula

Hi Badal

On 6/6/2023 6:20 PM, Badal Nilawar wrote:
> Expose the card reactive critical (I1) power. I1 is exposed as
> power1_crit in microwatts (typically for client products) or as
> curr1_crit in milliamperes (typically for server).
> 
> Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
>   .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  26 +++++
>   drivers/gpu/drm/xe/xe_hwmon.c                 | 106 ++++++++++++++++++
>   drivers/gpu/drm/xe/xe_pcode_api.h             |   7 ++
>   3 files changed, 139 insertions(+)
> 
> diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> index 54a7b668009e..fcc2aedb2aac 100644
> --- a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> +++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> @@ -20,3 +20,29 @@ Description:	RO. Card default power limit (default TDP setting).
>   
>   		Only supported for particular Intel xe graphics platforms.
>   
> +What:		/sys/devices/.../hwmon/hwmon<i>/power1_crit
> +Date:		June 2023
> +KernelVersion:	6.3
> +Contact:	intel-gfx@lists.freedesktop.org
> +Description:	RW. Card reactive critical (I1) power limit in microwatts.
> +
> +		Card reactive critical (I1) power limit in microwatts is exposed
> +		for client products. The power controller will throttle the
> +		operating frequency if the power averaged over a window exceeds
> +		this limit.
> +
> +		Only supported for particular Intel xe graphics platforms.
> +
> +What:		/sys/devices/.../hwmon/hwmon<i>/curr1_crit
> +Date:		June 2023
> +KernelVersion:	6.3
> +Contact:	intel-gfx@lists.freedesktop.org
> +Description:	RW. Card reactive critical (I1) power limit in milliamperes.
> +
> +		Card reactive critical (I1) power limit in milliamperes is
> +		exposed for server products. The power controller will throttle
> +		the operating frequency if the power averaged over a window
> +		exceeds this limit.
> +
> +		Only supported for particular Intel xe graphics platforms.
> +
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
> index 8e248e806559..b07ea53fdbc6 100644
> --- a/drivers/gpu/drm/xe/xe_hwmon.c
> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
> @@ -14,6 +14,13 @@
>   #include "xe_mmio.h"
>   #include "xe_gt.h"
>   #include "i915_drv.h"
> +#include "xe_pcode.h"
> +#include "xe_pcode_api.h"
> +
> +#define PCODE_MBOX(mbcmd, param1, param2)\
> +	FIELD_PREP(PCODE_MB_COMMAND, mbcmd)\
> +	| FIELD_PREP(PCODE_MB_PARAM1, param1)\
> +	| FIELD_PREP(PCODE_MB_PARAM2, param2)
Should this be moved to pcode file?
>   
>   enum hwm_reg_name {
>   	pkg_rapl_limit,
> @@ -31,9 +38,11 @@ enum hwm_reg_operation {
>    * SF_* - scale factors for particular quantities according to hwmon spec.
>    * - voltage  - millivolts
>    * - power  - microwatts
> + * - curr   - milliamperes
>    */
>   #define SF_VOLTAGE	1000
>   #define SF_POWER	1000000
> +#define SF_CURR		1000
>   
>   struct hwm_drvdata {
>   	struct xe_hwmon *hwmon;
> @@ -246,13 +255,35 @@ static int hwm_power_rated_max_read(struct hwm_drvdata *ddat, long *value)
>   
>   static const struct hwmon_channel_info *hwm_info[] = {
>   	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX),
> +	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX | HWMON_P_CRIT),
Remove duplicate line. HWMON_P_CRIT needs to be added above.

Thanks
Riana
> +	HWMON_CHANNEL_INFO(curr, HWMON_C_CRIT),
>   	NULL
>   };
>   
> +/* I1 is exposed as power_crit or as curr_crit depending on bit 31 */
> +static int hwm_pcode_read_i1(struct xe_gt *gt, u32 *uval)
> +{
> +	/* Avoid ILLEGAL_SUBCOMMAND "mailbox access failed" warning in snb_pcode_read */
> +	if (IS_DG2(gt_to_xe(gt)))
> +		return -ENXIO;
> +
> +	return xe_pcode_read(gt, PCODE_MBOX(PCODE_POWER_SETUP,
> +			     POWER_SETUP_SUBCOMMAND_READ_I1, 0),
> +			     uval, 0);
> +}
> +
> +static int hwm_pcode_write_i1(struct xe_gt *gt, u32 uval)
> +{
> +	return xe_pcode_write(gt, PCODE_MBOX(PCODE_POWER_SETUP,
> +			      POWER_SETUP_SUBCOMMAND_WRITE_I1, 0),
> +			      uval);
> +}
> +
>   static umode_t
>   hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
>   {
>   	u32 reg_val;
> +	u32 uval;
>   
>   	switch (attr) {
>   	case hwmon_power_max:
> @@ -261,6 +292,9 @@ hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
>   	case hwmon_power_rated_max:
>   		return process_hwmon_reg(ddat, pkg_power_sku,
>   					 reg_read, &reg_val, 0, 0) ? 0 : 0444;
> +	case hwmon_power_crit:
> +		return (hwm_pcode_read_i1(ddat->gt, &uval) ||
> +			!(uval & POWER_SETUP_I1_WATTS)) ? 0 : 0644;
>   	default:
>   		return 0;
>   	}
> @@ -269,11 +303,23 @@ hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
>   static int
>   hwm_power_read(struct hwm_drvdata *ddat, u32 attr, int chan, long *val)
>   {
> +	int ret;
> +	u32 uval;
> +
>   	switch (attr) {
>   	case hwmon_power_max:
>   		return hwm_power_max_read(ddat, val);
>   	case hwmon_power_rated_max:
>   		return hwm_power_rated_max_read(ddat, val);
> +	case hwmon_power_crit:
> +		ret = hwm_pcode_read_i1(ddat->gt, &uval);
> +		if (ret)
> +			return ret;
> +		if (!(uval & POWER_SETUP_I1_WATTS))
> +			return -ENODEV;
> +		*val = mul_u64_u32_shr(REG_FIELD_GET(POWER_SETUP_I1_DATA_MASK, uval),
> +				       SF_POWER, POWER_SETUP_I1_SHIFT);
> +		return 0;
>   	default:
>   		return -EOPNOTSUPP;
>   	}
> @@ -282,9 +328,14 @@ hwm_power_read(struct hwm_drvdata *ddat, u32 attr, int chan, long *val)
>   static int
>   hwm_power_write(struct hwm_drvdata *ddat, u32 attr, int chan, long val)
>   {
> +	u32 uval;
> +
>   	switch (attr) {
>   	case hwmon_power_max:
>   		return hwm_power_max_write(ddat, val);
> +	case hwmon_power_crit:
> +		uval = DIV_ROUND_CLOSEST_ULL(val << POWER_SETUP_I1_SHIFT, SF_POWER);
> +		return hwm_pcode_write_i1(ddat->gt, uval);
>   	default:
>   		return -EOPNOTSUPP;
>   	}
> @@ -332,6 +383,55 @@ void xe_hwmon_power_max_restore(struct xe_device *xe, bool old)
>   	mutex_unlock(&hwmon->hwmon_lock);
>   }
>   
> +static umode_t
> +hwm_curr_is_visible(const struct hwm_drvdata *ddat, u32 attr)
> +{
> +	u32 uval;
> +
> +	switch (attr) {
> +	case hwmon_curr_crit:
> +		return (hwm_pcode_read_i1(ddat->gt, &uval) ||
> +			(uval & POWER_SETUP_I1_WATTS)) ? 0 : 0644;
> +	default:
> +		return 0;
> +	}
> +}
> +
> +static int
> +hwm_curr_read(struct hwm_drvdata *ddat, u32 attr, long *val)
> +{
> +	int ret;
> +	u32 uval;
> +
> +	switch (attr) {
> +	case hwmon_curr_crit:
> +		ret = hwm_pcode_read_i1(ddat->gt, &uval);
> +		if (ret)
> +			return ret;
> +		if (uval & POWER_SETUP_I1_WATTS)
> +			return -ENODEV;
> +		*val = mul_u64_u32_shr(REG_FIELD_GET(POWER_SETUP_I1_DATA_MASK, uval),
> +				       SF_CURR, POWER_SETUP_I1_SHIFT);
> +		return 0;
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +}
> +
> +static int
> +hwm_curr_write(struct hwm_drvdata *ddat, u32 attr, long val)
> +{
> +	u32 uval;
> +
> +	switch (attr) {
> +	case hwmon_curr_crit:
> +		uval = DIV_ROUND_CLOSEST_ULL(val << POWER_SETUP_I1_SHIFT, SF_CURR);
> +		return hwm_pcode_write_i1(ddat->gt, uval);
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +}
> +
>   static umode_t
>   hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>   	       u32 attr, int channel)
> @@ -343,6 +443,8 @@ hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>   	case hwmon_power:
>   		ret = hwm_power_is_visible(ddat, attr, channel);
>   		break;
> +	case hwmon_curr:
> +		return hwm_curr_is_visible(ddat, attr);
>   	default:
>   		ret = 0;
>   	}
> @@ -359,6 +461,8 @@ hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>   	switch (type) {
>   	case hwmon_power:
>   		return hwm_power_read(ddat, attr, channel, val);
> +	case hwmon_curr:
> +		return hwm_curr_read(ddat, attr, val);
>   	default:
>   		return -EOPNOTSUPP;
>   	}
> @@ -373,6 +477,8 @@ hwm_write(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>   	switch (type) {
>   	case hwmon_power:
>   		return hwm_power_write(ddat, attr, channel, val);
> +	case hwmon_curr:
> +		return hwm_curr_write(ddat, attr, val);
>   	default:
>   		return -EOPNOTSUPP;
>   	}
> diff --git a/drivers/gpu/drm/xe/xe_pcode_api.h b/drivers/gpu/drm/xe/xe_pcode_api.h
> index 837ff7c71280..5935cfe30204 100644
> --- a/drivers/gpu/drm/xe/xe_pcode_api.h
> +++ b/drivers/gpu/drm/xe/xe_pcode_api.h
> @@ -35,6 +35,13 @@
>   #define     DGFX_GET_INIT_STATUS	0x0
>   #define     DGFX_INIT_STATUS_COMPLETE	0x1
>   
> +#define   PCODE_POWER_SETUP			0x7C
> +#define     POWER_SETUP_SUBCOMMAND_READ_I1	0x4
> +#define     POWER_SETUP_SUBCOMMAND_WRITE_I1	0x5
> +#define	    POWER_SETUP_I1_WATTS		REG_BIT(31)
> +#define	    POWER_SETUP_I1_SHIFT		6	/* 10.6 fixed point format */
> +#define	    POWER_SETUP_I1_DATA_MASK		REG_GENMASK(15, 0)
> +
>   struct pcode_err_decode {
>   	int errno;
>   	const char *str;

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

* Re: [Intel-xe] [RFC PATCH 4/6] drm/xe/hwmon: Expose input voltage attribute
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 4/6] drm/xe/hwmon: Expose input voltage attribute Badal Nilawar
@ 2023-06-14  8:08   ` Riana Tauro
  0 siblings, 0 replies; 23+ messages in thread
From: Riana Tauro @ 2023-06-14  8:08 UTC (permalink / raw)
  To: Badal Nilawar, intel-xe


Hi Badal

On 6/6/2023 6:20 PM, Badal Nilawar wrote:
> Use Xe HWMON subsystem to display the input voltage.
> 
> Co-developed-by: Riana Tauro <riana.tauro@intel.com>
> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
>   .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  6 ++
>   drivers/gpu/drm/xe/regs/xe_gt_regs.h          |  3 +
>   drivers/gpu/drm/xe/xe_hwmon.c                 | 70 +++++++++++++++++--
>   3 files changed, 75 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> index fcc2aedb2aac..aa064e0c5751 100644
> --- a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> +++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> @@ -44,5 +44,11 @@ Description:	RW. Card reactive critical (I1) power limit in milliamperes.
>   		the operating frequency if the power averaged over a window
>   		exceeds this limit.
>   
> +What:		/sys/devices/.../hwmon/hwmon<i>/in0_input
> +Date:		June 2023
> +KernelVersion:	6.3
> +Contact:	intel-gfx@lists.freedesktop.org
> +Description:	RO. Current Voltage in millivolt.
> +
>   		Only supported for particular Intel xe graphics platforms.
>   
> diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> index 9d888aae907e..fe00c42ff29d 100644
> --- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> +++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> @@ -349,6 +349,9 @@
>   #define GT_GFX_RC6_LOCKED			XE_REG(0x138104)
>   #define GT_GFX_RC6				XE_REG(0x138108)
>   
> +#define GT_PERF_STATUS				XE_REG(0x1381b4)
> +#define   VOLTAGE_MASK				REG_GENMASK(10, 0)
> +
>   #define GT_INTR_DW(x)				XE_REG(0x190018 + ((x) * 4))
>   
>   #define GUC_SG_INTR_ENABLE			XE_REG(0x190038)
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
> index b07ea53fdbc6..a86d2d8218d5 100644
> --- a/drivers/gpu/drm/xe/xe_hwmon.c
> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
> @@ -3,8 +3,8 @@
>    * Copyright © 2023 Intel Corporation
>    */
>   
> -#include <linux/hwmon.h>
>   #include <linux/hwmon-sysfs.h>
> +#include <linux/hwmon.h>
>   #include <linux/types.h>
>   
>   #include "regs/xe_mchbar_regs.h"
> @@ -26,6 +26,7 @@ enum hwm_reg_name {
>   	pkg_rapl_limit,
>   	pkg_power_sku,
>   	pkg_power_sku_unit,
> +	gt_perf_status,
>   };
>   
>   enum hwm_reg_operation {
> @@ -36,13 +37,13 @@ enum hwm_reg_operation {
>   
>   /*
>    * SF_* - scale factors for particular quantities according to hwmon spec.
> - * - voltage  - millivolts
>    * - power  - microwatts
>    * - curr   - milliamperes
> + * - voltage  - millivolts
>    */
> -#define SF_VOLTAGE	1000
>   #define SF_POWER	1000000
>   #define SF_CURR		1000
> +#define SF_VOLTAGE	1000
>   
>   struct hwm_drvdata {
>   	struct xe_hwmon *hwmon;
> @@ -86,6 +87,11 @@ struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name)
>   		else
>   			return XE_REG(0);
>   		break;
> +	case gt_perf_status:
> +		if (IS_DG2(gt_to_xe(ddat->gt)))
> +			return GT_PERF_STATUS;
> +		else
> +			return XE_REG(0);
>   	default:
>   		break;
>   	}
> @@ -254,9 +260,9 @@ static int hwm_power_rated_max_read(struct hwm_drvdata *ddat, long *value)
>   }
>   
>   static const struct hwmon_channel_info *hwm_info[] = {
> -	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX),
>   	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX | HWMON_P_CRIT),
>   	HWMON_CHANNEL_INFO(curr, HWMON_C_CRIT),
> +	HWMON_CHANNEL_INFO(in, HWMON_I_INPUT),
>   	NULL
>   };
>   
> @@ -279,6 +285,22 @@ static int hwm_pcode_write_i1(struct xe_gt *gt, u32 uval)
>   			      uval);
>   }
>   
> +static int hwm_get_vltg(struct hwm_drvdata *ddat, long *value)
hwm_get_voltage?
> +{
> +	u32 reg_val;
> +
> +	if (IS_DG2(gt_to_xe(ddat->gt))) {
This check is not required here if is_visible  checks if reg  raw is valid
> +		process_hwmon_reg(ddat, gt_perf_status,
> +				  reg_read, &reg_val, 0, 0);
> +		/* HW register value in units of 2.5 millivolt */
> +		*value = DIV_ROUND_CLOSEST(REG_FIELD_GET(VOLTAGE_MASK, reg_val) * 25, 10);
Since we are adding a scale factor to this patch. We need to use it here

> +
> +		return 0;
> +	}
> +
> +	return -EOPNOTSUPP;
> +}
> +
>   static umode_t
>   hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
>   {
> @@ -432,6 +454,39 @@ hwm_curr_write(struct hwm_drvdata *ddat, u32 attr, long val)
>   	}
>   }
>   
> +static umode_t
> +hwm_in_is_visible(struct hwm_drvdata *ddat, u32 attr)
> +{
> +	long val;
> +
> +	switch (attr) {
> +	case hwmon_in_input:
> +		return hwm_get_vltg(ddat, &val) ? 0 : 0444;
> +	default:
> +		return 0;
> +	}
> +}
> +
> +static int
> +hwm_in_read(struct hwm_drvdata *ddat, u32 attr, long *val)
> +{
> +	int ret;
> +
> +	xe_device_mem_access_get(gt_to_xe(ddat->gt));
> +
> +	switch (attr) {
> +	case hwmon_in_input:
> +		ret = hwm_get_vltg(ddat, val);
> +		break;
> +	default:
> +		ret = -EOPNOTSUPP;
> +	}
> +
> +	xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +
> +	return ret;
> +}
> +
>   static umode_t
>   hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>   	       u32 attr, int channel)
> @@ -445,6 +500,8 @@ hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>   		break;
>   	case hwmon_curr:
>   		return hwm_curr_is_visible(ddat, attr);
> +	case hwmon_in:
> +		return hwm_in_is_visible(ddat, attr);
>   	default:
>   		ret = 0;
>   	}
> @@ -463,6 +520,8 @@ hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>   		return hwm_power_read(ddat, attr, channel, val);
>   	case hwmon_curr:
>   		return hwm_curr_read(ddat, attr, val);
> +	case hwmon_in:
> +		return hwm_in_read(ddat, attr, val);
>   	default:
>   		return -EOPNOTSUPP;
>   	}
> @@ -530,6 +589,9 @@ void xe_hwmon_register(struct xe_device *xe)
>   	mutex_init(&hwmon->hwmon_lock);
>   	ddat = &hwmon->ddat;
>   
> +	/* primary GT to access device level properties */
> +	ddat->gt = xe->tiles[0].primary_gt;
This had to be added in second patch

Thanks
Riana
> +
>   	ddat->hwmon = hwmon;
>   	snprintf(ddat->name, sizeof(ddat->name), "xe");
>   

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

* Re: [Intel-xe] [RFC PATCH 5/6] drm/xe/hwmon: Expose hwmon energy attribute
  2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 5/6] drm/xe/hwmon: Expose hwmon energy attribute Badal Nilawar
@ 2023-06-14 10:46   ` Riana Tauro
  0 siblings, 0 replies; 23+ messages in thread
From: Riana Tauro @ 2023-06-14 10:46 UTC (permalink / raw)
  To: Badal Nilawar, intel-xe; +Cc: jani.nikula

Hi Badal

On 6/6/2023 6:20 PM, Badal Nilawar wrote:
> Expose hwmon energy attribute to show device level and gt
> level energy usage
Below entries have the name xe_tile. All gt names have to be replaced 
with tile
> 
> Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
>   .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  12 +
>   drivers/gpu/drm/xe/regs/xe_gt_regs.h          |   2 +
>   drivers/gpu/drm/xe/regs/xe_mchbar_regs.h      |   3 +
>   drivers/gpu/drm/xe/xe_hwmon.c                 | 206 +++++++++++++++++-
>   4 files changed, 222 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> index aa064e0c5751..64c09aa0689d 100644
> --- a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> +++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
> @@ -52,3 +52,15 @@ Description:	RO. Current Voltage in millivolt.
>   
>   		Only supported for particular Intel xe graphics platforms.
>   
> +What:		/sys/devices/.../hwmon/hwmon<i>/energy1_input
> +Date:		June 2023
> +KernelVersion:	6.3
> +Contact:	intel-gfx@lists.freedesktop.org
> +Description:	RO. Energy input of device or gt in microjoules.
> +
> +		For xe device level hwmon devices (name "xe") this
> +		reflects energy input for the entire device. For gt level
> +		hwmon devices (name "xe_gtN") this reflects energy input
> +		for the gt.
Same here
> +
> +		Only supported for particular Intel xe graphics platforms.
> diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> index fe00c42ff29d..a80f6fecb4c9 100644
> --- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> +++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
> @@ -385,8 +385,10 @@
>   #define XEHPC_BCS5_BCS6_INTR_MASK		XE_REG(0x190118)
>   #define XEHPC_BCS7_BCS8_INTR_MASK		XE_REG(0x19011c)
>   
> +#define PVC_GT0_PACKAGE_ENERGY_STATUS		XE_REG(0x281004)
>   #define PVC_GT0_PACKAGE_RAPL_LIMIT		XE_REG(0x281008)
>   #define PVC_GT0_PACKAGE_POWER_SKU_UNIT		XE_REG(0x281068)
> +#define PVC_GT0_PLATFORM_ENERGY_STATUS		XE_REG(0x28106c)
>   #define PVC_GT0_PACKAGE_POWER_SKU		XE_REG(0x281080)
>   
>   #endif
> diff --git a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> index 4ad473e69e27..093be7401a95 100644
> --- a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> +++ b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
> @@ -25,6 +25,9 @@
>   #define   PKG_PWR_UNIT				REG_GENMASK(3, 0)
>   #define   PKG_MIN_PWR				GENMASK_ULL(30, 16)
>   #define   PKG_MAX_PWR				GENMASK_ULL(46, 32)
> +#define   PKG_ENERGY_UNIT			REG_GENMASK(12, 8)
> +
> +#define PCU_CR_PACKAGE_ENERGY_STATUS		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x593c)
>   
>   #define PCU_CR_PACKAGE_RAPL_LIMIT		XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x59a0)
>   #define   PKG_PWR_LIM_1				REG_GENMASK(14, 0)
> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
> index a86d2d8218d5..63721a27081c 100644
> --- a/drivers/gpu/drm/xe/xe_hwmon.c
> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
> @@ -27,6 +27,8 @@ enum hwm_reg_name {
>   	pkg_power_sku,
>   	pkg_power_sku_unit,
>   	gt_perf_status,
> +	energy_status_all,
> +	energy_status_tile >   };
>   
>   enum hwm_reg_operation {
> @@ -40,10 +42,17 @@ enum hwm_reg_operation {
>    * - power  - microwatts
>    * - curr   - milliamperes
>    * - voltage  - millivolts
> + * - energy - microjoules
>    */
>   #define SF_POWER	1000000
>   #define SF_CURR		1000
>   #define SF_VOLTAGE	1000
> +#define SF_ENERGY	1000000
> +
> +struct hwm_energy_info {
> +	u32 reg_val_prev;
> +	long accum_energy;		/* Accumulated energy for energy1_input */
> +};
>   
>   struct hwm_drvdata {
>   	struct xe_hwmon *hwmon;
> @@ -52,12 +61,16 @@ struct hwm_drvdata {
>   	char name[12];
>   	bool reset_in_progress;
>   	wait_queue_head_t waitq;
> +	struct hwm_energy_info ei;	/*  Energy info for energy1_input */
> +	int gt_n;
tile ?
>   };
>   
>   struct xe_hwmon {
>   	struct hwm_drvdata ddat;
> +	struct hwm_drvdata ddat_tile[XE_MAX_TILES_PER_DEVICE];
>   	struct mutex hwmon_lock;	/* counter overflow logic and rmw */
>   	int scl_shift_power;
> +	int scl_shift_energy;
>   };
>   
>   struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name)
> @@ -92,6 +105,18 @@ struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name reg_name)
>   			return GT_PERF_STATUS;
>   		else
>   			return XE_REG(0);
> +	case energy_status_all:
> +		if (IS_DG2(gt_to_xe(ddat->gt)))
> +			return PCU_CR_PACKAGE_ENERGY_STATUS;
> +		else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
> +			return PVC_GT0_PLATFORM_ENERGY_STATUS;
> +		else
> +			return XE_REG(0);
> +	case energy_status_tile:
> +		if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
> +			return PVC_GT0_PACKAGE_ENERGY_STATUS;
> +		else
> +			return XE_REG(0);
>   	default:
>   		break;
>   	}
> @@ -259,10 +284,69 @@ static int hwm_power_rated_max_read(struct hwm_drvdata *ddat, long *value)
>   	return 0;
>   }
>   
> +/*
> + * hwm_energy - Obtain energy value
> + *
> + * The underlying energy hardware register is 32-bits and is subject to
> + * overflow. How long before overflow? For example, with an example
> + * scaling bit shift of 14 bits (see register *PACKAGE_POWER_SKU_UNIT) and
> + * a power draw of 1000 watts, the 32-bit counter will overflow in
> + * approximately 4.36 minutes.
> + *
> + * Examples:
> + *    1 watt:  (2^32 >> 14) /    1 W / (60 * 60 * 24) secs/day -> 3 days
> + * 1000 watts: (2^32 >> 14) / 1000 W / 60             secs/min -> 4.36 minutes
> + *
> + * The function significantly increases overflow duration (from 4.36
> + * minutes) by accumulating the energy register into a 'long' as allowed by
> + * the hwmon API. Using x86_64 128 bit arithmetic (see mul_u64_u32_shr()),
> + * a 'long' of 63 bits, SF_ENERGY of 1e6 (~20 bits) and
> + * hwmon->scl_shift_energy of 14 bits we have 57 (63 - 20 + 14) bits before
> + * energy1_input overflows. This at 1000 W is an overflow duration of 278 years.
> + */
> +static void
> +hwm_energy(struct hwm_drvdata *ddat, long *energy)
> +{
> +	struct xe_hwmon *hwmon = ddat->hwmon;
> +	struct hwm_energy_info *ei = &ddat->ei;
> +	u32 reg_val;
> +
> +	xe_device_mem_access_get(gt_to_xe(ddat->gt));
> +
> +	mutex_lock(&hwmon->hwmon_lock);
> +
> +	if (ddat->gt_n >= 0)
> +		process_hwmon_reg(ddat, energy_status_tile, reg_read,
> +				  &reg_val, 0, 0);
> +	else
> +		process_hwmon_reg(ddat, energy_status_all, reg_read,
> +				  &reg_val, 0, 0);
> +
> +	if (reg_val >= ei->reg_val_prev)
> +		ei->accum_energy += reg_val - ei->reg_val_prev;
> +	else
> +		ei->accum_energy += UINT_MAX - ei->reg_val_prev + reg_val;
> +
> +	ei->reg_val_prev = reg_val;
> +
> +	*energy = mul_u64_u32_shr(ei->accum_energy, SF_ENERGY,
> +				  hwmon->scl_shift_energy);
> +
> +	mutex_unlock(&hwmon->hwmon_lock);
> +
> +	xe_device_mem_access_put(gt_to_xe(ddat->gt));
> +}
> +
>   static const struct hwmon_channel_info *hwm_info[] = {
>   	HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX | HWMON_P_CRIT),
>   	HWMON_CHANNEL_INFO(curr, HWMON_C_CRIT),
>   	HWMON_CHANNEL_INFO(in, HWMON_I_INPUT),
> +	HWMON_CHANNEL_INFO(energy, HWMON_E_INPUT),
> +	NULL
> +};
> +
> +static const struct hwmon_channel_info *hwm_gt_info[] = {
> +	HWMON_CHANNEL_INFO(energy, HWMON_E_INPUT),
>   	NULL
>   };
>   
> @@ -487,6 +571,36 @@ hwm_in_read(struct hwm_drvdata *ddat, u32 attr, long *val)
>   	return ret;
>   }
>   
> +static umode_t
> +hwm_energy_is_visible(struct hwm_drvdata *ddat, u32 attr)
> +{
> +	u32 reg_val;
> +
> +	switch (attr) {
> +	case hwmon_energy_input:
> +		if (ddat->gt_n >= 0)
> +			return process_hwmon_reg(ddat, energy_status_tile, reg_read,
> +						 &reg_val, 0, 0) ? 0 : 0444;
> +		else
> +			return process_hwmon_reg(ddat, energy_status_all, reg_read,
> +						 &reg_val, 0, 0) ? 0 : 0444;
> +	default:
> +		return 0;
> +	}
> +}
> +
> +static int
> +hwm_energy_read(struct hwm_drvdata *ddat, u32 attr, long *val)
> +{
> +	switch (attr) {
> +	case hwmon_energy_input:
> +		hwm_energy(ddat, val);
> +		return 0;
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +}
> +
>   static umode_t
>   hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>   	       u32 attr, int channel)
> @@ -502,6 +616,8 @@ hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>   		return hwm_curr_is_visible(ddat, attr);
>   	case hwmon_in:
>   		return hwm_in_is_visible(ddat, attr);
> +	case hwmon_energy:
> +		return hwm_energy_is_visible(ddat, attr);
>   	default:
>   		ret = 0;
>   	}
> @@ -522,6 +638,8 @@ hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>   		return hwm_curr_read(ddat, attr, val);
>   	case hwmon_in:
>   		return hwm_in_read(ddat, attr, val);
> +	case hwmon_energy:
> +		return hwm_energy_read(ddat, attr, val);
>   	default:
>   		return -EOPNOTSUPP;
>   	}
> @@ -554,11 +672,53 @@ static const struct hwmon_chip_info hwm_chip_info = {
>   	.info = hwm_info,
>   };
>   
> +static umode_t
> +hwm_gt_is_visible(const void *drvdata, enum hwmon_sensor_types type,
hwm_tile_is_visible
> +		  u32 attr, int channel)
> +{
> +	struct hwm_drvdata *ddat = (struct hwm_drvdata *)drvdata;
> +
> +	switch (type) {
> +	case hwmon_energy:
> +		return hwm_energy_is_visible(ddat, attr);
> +	default:
> +		return 0;
> +	}
> +}
> +
> +static int
> +hwm_gt_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
> +	    int channel, long *val)
> +{
> +	struct hwm_drvdata *ddat = dev_get_drvdata(dev);
> +
> +	switch (type) {
> +	case hwmon_energy:
> +		return hwm_energy_read(ddat, attr, val);
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +}
> +
> +static const struct hwmon_ops hwm_gt_ops = {
> +	.is_visible = hwm_gt_is_visible,
> +	.read = hwm_gt_read,
> +} > +
> +static const struct hwmon_chip_info hwm_gt_chip_info = {
> +	.ops = &hwm_gt_ops,
> +	.info = hwm_gt_info,
> +};
> +
>   static void
>   hwm_get_preregistration_info(struct hwm_drvdata *ddat)
>   {
>   	struct xe_hwmon *hwmon = ddat->hwmon;
> +	struct xe_device *xe = gt_to_xe(ddat->gt);
> +	struct xe_gt *gt;
> +	long energy;
>   	u32 val_sku_unit = 0;
> +	u8 id;
>   	int ret;
>   
>   	ret = process_hwmon_reg(ddat, pkg_power_sku_unit, reg_read, &val_sku_unit, 0, 0);
> @@ -566,8 +726,22 @@ hwm_get_preregistration_info(struct hwm_drvdata *ddat)
>   	 * The contents of register pkg_power_sku_unit do not change,
>   	 * so read it once and store the shift values.
>   	 */
> -	if (!ret)
> +	if (!ret) {
>   		hwmon->scl_shift_power = REG_FIELD_GET(PKG_PWR_UNIT, val_sku_unit);
> +		hwmon->scl_shift_energy = REG_FIELD_GET(PKG_ENERGY_UNIT, val_sku_unit);
> +	}
> +
> +	/*
> +	 * Initialize 'struct hwm_energy_info', i.e. set fields to the
> +	 * first value of the energy register read
> +	 */
> +	if (hwm_is_visible(ddat, hwmon_energy, hwmon_energy_input, 0))
> +		hwm_energy(ddat, &energy);
> +
> +	for_each_gt(gt, xe, id)
> +		if (hwm_gt_is_visible(&hwmon->ddat_tile[id], hwmon_energy,
> +				      hwmon_energy_input, 0))
> +			hwm_energy(&hwmon->ddat_tile[id], &energy);
>   }
>   
>   void xe_hwmon_register(struct xe_device *xe)
> @@ -576,6 +750,9 @@ void xe_hwmon_register(struct xe_device *xe)
>   	struct xe_hwmon *hwmon;
>   	struct device *hwmon_dev;
>   	struct hwm_drvdata *ddat;
> +	struct hwm_drvdata *ddat_tile;
> +	struct xe_gt *gt;
> +	u8 id;
>   
>   	/* hwmon is available only for dGfx */
>   	if (!IS_DGFX(xe))
> @@ -591,12 +768,22 @@ void xe_hwmon_register(struct xe_device *xe)
>   
>   	/* primary GT to access device level properties */
>   	ddat->gt = xe->tiles[0].primary_gt;
> +//	ddat->gt = &xe->gt[0];
Remove comment
> +	ddat->gt_n = -1;
>   
>   	ddat->hwmon = hwmon;
>   	snprintf(ddat->name, sizeof(ddat->name), "xe");
>   
>   	init_waitqueue_head(&ddat->waitq);
>   
> +	for_each_gt(gt, xe, id) {
should be replaced by for_each_tile
> +		ddat_tile = hwmon->ddat_tile + id;
> +		ddat_tile->hwmon = hwmon;
> +		ddat_tile->gt = gt;
> +		snprintf(ddat_tile->name, sizeof(ddat_tile->name), "xe_tile%u", id);
> +		ddat_tile->gt_n = id;
> +	}
> +
>   	hwm_get_preregistration_info(ddat);
>   
>   	drm_dbg(&xe->drm, "Register HWMON interface\n");
> @@ -613,6 +800,23 @@ void xe_hwmon_register(struct xe_device *xe)
>   	}
>   
>   	ddat->hwmon_dev = hwmon_dev;
> +
> +	for_each_gt(gt, xe, id) {
Thanks
Riana
> +		ddat_tile = hwmon->ddat_tile + id;
> +		/*
> +		 * Create per-gt directories only if a per-gt attribute is
> +		 * visible. Currently this is only energy
> +		 */
> +		if (!hwm_gt_is_visible(ddat_tile, hwmon_energy, hwmon_energy_input, 0))
> +			continue;
> +
> +		hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat_tile->name,
> +								 ddat_tile,
> +								 &hwm_gt_chip_info,
> +								 NULL);
> +		if (!IS_ERR(hwmon_dev))
> +			ddat_tile->hwmon_dev = hwmon_dev;
> +	}
>   }
>   
>   void xe_hwmon_unregister(struct xe_device *xe)

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

* Re: [Intel-xe] [RFC PATCH 2/6] drm/xe/hwmon: Expose power attributes
  2023-06-08 14:04   ` Riana Tauro
@ 2023-06-26 12:50     ` Nilawar, Badal
  0 siblings, 0 replies; 23+ messages in thread
From: Nilawar, Badal @ 2023-06-26 12:50 UTC (permalink / raw)
  To: Riana Tauro, intel-xe



On 08-06-2023 19:34, Riana Tauro wrote:
> Hi Badal
> 
> On 6/6/2023 6:20 PM, Badal Nilawar wrote:
>> Expose power_max (pl1) and power_rated_max (tdp) attributes
>>
>> Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
>> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
>> ---
>>   .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  22 ++
>>   drivers/gpu/drm/xe/regs/xe_gt_regs.h          |   4 +
>>   drivers/gpu/drm/xe/regs/xe_mchbar_regs.h      |  34 ++
>>   drivers/gpu/drm/xe/xe_hwmon.c                 | 342 +++++++++++++++++-
>>   drivers/gpu/drm/xe/xe_hwmon.h                 |   4 +
>>   drivers/gpu/drm/xe/xe_uc.c                    |   6 +
>>   6 files changed, 408 insertions(+), 4 deletions(-)
>>   create mode 100644 
>> Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
>>   create mode 100644 drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
>>
>> diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon 
>> b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
>> new file mode 100644
>> index 000000000000..54a7b668009e
>> --- /dev/null
>> +++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
>> @@ -0,0 +1,22 @@
>> +What:        /sys/devices/.../hwmon/hwmon<i>/power1_max
>> +Date:        June 2023
>> +KernelVersion:    6.3
>> +Contact:    intel-gfx@lists.freedesktop.org
>> +Description:    RW. Card reactive sustained  (PL1/Tau) power limit in 
>> microwatts.
>> +
>> +        The power controller will throttle the operating frequency
>> +        if the power averaged over a window (typically seconds)
>> +        exceeds this limit. A read value of 0 means that the PL1
>> +        power limit is disabled, writing 0 disables the
>> +        limit. Writing values > 0 will enable the power limit.
>> +
>> +        Only supported for particular Intel xe graphics platforms.
>> +
>> +What:        /sys/devices/.../hwmon/hwmon<i>/power1_rated_max
>> +Date:        June 2023
>> +KernelVersion:    6.3
>> +Contact:    intel-gfx@lists.freedesktop.org
>> +Description:    RO. Card default power limit (default TDP setting).
>> +
>> +        Only supported for particular Intel xe graphics platforms.
>> +
>> diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h 
>> b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
>> index 0f920175526e..9d888aae907e 100644
>> --- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
>> +++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
>> @@ -382,4 +382,8 @@
>>   #define XEHPC_BCS5_BCS6_INTR_MASK        XE_REG(0x190118)
>>   #define XEHPC_BCS7_BCS8_INTR_MASK        XE_REG(0x19011c)
>> +#define PVC_GT0_PACKAGE_RAPL_LIMIT        XE_REG(0x281008)
>> +#define PVC_GT0_PACKAGE_POWER_SKU_UNIT        XE_REG(0x281068)
>> +#define PVC_GT0_PACKAGE_POWER_SKU        XE_REG(0x281080)
>> +
>>   #endif
>> diff --git a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h 
>> b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
>> new file mode 100644
>> index 000000000000..4ad473e69e27
>> --- /dev/null
>> +++ b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
>> @@ -0,0 +1,34 @@
>> +/* SPDX-License-Identifier: MIT */
>> +/*
>> + * Copyright © 2023 Intel Corporation
>> + */
>> +
>> +#ifndef _XE_MCHBAR_REGS_H__
>> +#define _XE_MCHBAR_REGS_H_
>> +
>> +#include "regs/xe_reg_defs.h"
>> +
>> +/*
>> + * MCHBAR mirror.
>> + *
>> + * This mirrors the MCHBAR MMIO space whose location is determined by
>> + * device 0 function 0's pci config register 0x44 or 0x48 and matches 
>> it in
>> + * every way.
>> + */
>> +
>> +#define MCHBAR_MIRROR_BASE_SNB            0x140000
>> +
>> +#define PCU_CR_PACKAGE_POWER_SKU        XE_REG(MCHBAR_MIRROR_BASE_SNB 
>> + 0x5930)
>> +#define   PKG_PKG_TDP                GENMASK_ULL(14, 0)
>> +
>> +#define PCU_CR_PACKAGE_POWER_SKU_UNIT        
>> XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5938)
>> +#define   PKG_PWR_UNIT                REG_GENMASK(3, 0)
>> +#define   PKG_MIN_PWR                GENMASK_ULL(30, 16)
>> +#define   PKG_MAX_PWR                GENMASK_ULL(46, 32)
>> +
>> +#define PCU_CR_PACKAGE_RAPL_LIMIT        
>> XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x59a0)
>> +#define   PKG_PWR_LIM_1                REG_GENMASK(14, 0)
>> +#define   PKG_PWR_LIM_1_EN            REG_BIT(15)
>> +
>> +#endif
>> +
>> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c 
>> b/drivers/gpu/drm/xe/xe_hwmon.c
>> index 65e5488dec82..8e248e806559 100644
>> --- a/drivers/gpu/drm/xe/xe_hwmon.c
>> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
>> @@ -7,42 +7,358 @@
>>   #include <linux/hwmon-sysfs.h>
>>   #include <linux/types.h>
>> +#include "regs/xe_mchbar_regs.h"
>>   #include "regs/xe_gt_regs.h"
>>   #include "xe_device.h"
>>   #include "xe_hwmon.h"
>>   #include "xe_mmio.h"
>>   #include "xe_gt.h"
>> +#include "i915_drv.h" > +
>> +enum hwm_reg_name {
>> +    pkg_rapl_limit,
>> +    pkg_power_sku,
>> +    pkg_power_sku_unit,
>> +};
>> +
>> +enum hwm_reg_operation {
>> +    reg_read,
>> +    reg_write,
>> +    reg_rmw,
>> +};
>> +
>> +/*
>> + * SF_* - scale factors for particular quantities according to hwmon 
>> spec.
>> + * - voltage  - millivolts
>> + * - power  - microwatts
>> + */
>> +#define SF_VOLTAGE    1000
>> +#define SF_POWER    1000000
>>   struct hwm_drvdata {
>>       struct xe_hwmon *hwmon;
>>       struct device *hwmon_dev;
>> +    struct xe_gt *gt;
>>       char name[12];
>> +    bool reset_in_progress;
>> +    wait_queue_head_t waitq;
>>   };
>>   struct xe_hwmon {
>>       struct hwm_drvdata ddat;
>>       struct mutex hwmon_lock;    /* counter overflow logic and rmw */
>> +    int scl_shift_power;
>>   };
>> +struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name 
>> reg_name)
>> +{
>> +    switch (reg_name) {
>> +    case pkg_rapl_limit:
>> +        if (IS_DG2(gt_to_xe(ddat->gt)))
> This is from i915 header. Should xe->info.platform be used?
>> +            return PCU_CR_PACKAGE_RAPL_LIMIT;
>> +        else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
>> +            return PVC_GT0_PACKAGE_RAPL_LIMIT;
>> +        else
>> +            return XE_REG(0);
>> +        break;
>> +    case pkg_power_sku:
>> +        if (IS_DG2(gt_to_xe(ddat->gt)))
>> +            return PCU_CR_PACKAGE_POWER_SKU;
>> +        else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
>> +            return PVC_GT0_PACKAGE_POWER_SKU;
>> +        else
>> +            return XE_REG(0);
>> +        break;
>> +    case pkg_power_sku_unit:
>> +        if (IS_DG2(gt_to_xe(ddat->gt)))
>> +            return PCU_CR_PACKAGE_POWER_SKU_UNIT;
>> +        else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
>> +            return PVC_GT0_PACKAGE_POWER_SKU_UNIT;
>> +        else
>> +            return XE_REG(0);
>> +        break;
>> +    default:
>> +        break;
>> +    }
>> +
>> +    return XE_REG(0);
>> +}
>> +
>> +int process_hwmon_reg(struct hwm_drvdata *ddat, enum hwm_reg_name 
>> reg_name,
>> +              enum hwm_reg_operation operation, u32 *value,
>> +              u32 clr, u32 set)
>> +{
>> +    struct xe_reg reg;
>> +    int ret = 0;
>> +
>> +    reg = hwm_get_reg(ddat, reg_name);
>> +
>> +    if (!reg.raw)
>> +        return -EOPNOTSUPP;
>> +
>> +    xe_device_mem_access_get(gt_to_xe(ddat->gt));
>> +
>> +    switch (operation) {
>> +    case reg_read:
>> +        *value = xe_mmio_read32(ddat->gt, reg);
>> +        break;
>> +    case reg_write:
>> +        xe_mmio_write32(ddat->gt, reg, *value);
>> +        break;
>> +    case reg_rmw:
>> +        *value = xe_mmio_rmw32(ddat->gt, reg, clr, set);
>> +        break;
>> +    default:
>> +        ret = -EOPNOTSUPP;
>> +    }
>> +
>> +    xe_device_mem_access_put(gt_to_xe(ddat->gt));
>> +
>> +    return ret;
>> +}
>> +
>> +int process_hwmon_reg_read64(struct hwm_drvdata *ddat, enum 
>> hwm_reg_name reg_name, u64 *value)
>> +{
>> +    struct xe_reg reg;
>> +
>> +    reg = hwm_get_reg(ddat, reg_name);
>> +
>> +    if (!reg.raw)
>> +        return -EOPNOTSUPP;
>> +
>> +    xe_device_mem_access_get(gt_to_xe(ddat->gt));
>> +
>> +    *value = xe_mmio_read64(ddat->gt, reg);
>> +
>> +    xe_device_mem_access_put(gt_to_xe(ddat->gt));
>> +
>> +    return 0;
>> +}
>> +
>> +#define PL1_DISABLE 0
>> +
>> +/*
>> + * HW allows arbitrary PL1 limits to be set but silently clamps these 
>> values to
>> + * "typical but not guaranteed" min/max values in rg.pkg_power_sku. 
>> Follow the
>> + * same pattern for sysfs, allow arbitrary PL1 limits to be set but 
>> display
>> + * clamped values when read. Write/read I1 also follows the same 
>> pattern.
>> + */
>> +static int hwm_power_max_read(struct hwm_drvdata *ddat, long *value)
>> +{
>> +    struct xe_hwmon *hwmon = ddat->hwmon;
>> +    u32 reg_val;
>> +    u64 r, min, max;
>> +
>> +    xe_device_mem_access_get(gt_to_xe(ddat->gt));
>> +
>> +    process_hwmon_reg(ddat, pkg_rapl_limit, reg_read, &reg_val, 0, 0);
>> +    /* Check if PL1 limit is disabled */
>> +    if (!(reg_val & PKG_PWR_LIM_1_EN)) {
>> +        *value = PL1_DISABLE;
>> +        xe_device_mem_access_put(gt_to_xe(ddat->gt));
>> +        return 0;
>> +    }
>> +
>> +    reg_val = REG_FIELD_GET(PKG_PWR_LIM_1, reg_val);
>> +    *value = mul_u64_u32_shr(reg_val, SF_POWER, hwmon->scl_shift_power);
>> +
>> +    process_hwmon_reg_read64(ddat, pkg_power_sku, &r);
>> +    min = REG_FIELD_GET(PKG_MIN_PWR, r);
>> +    min = mul_u64_u32_shr(min, SF_POWER, hwmon->scl_shift_power);
>> +    max = REG_FIELD_GET(PKG_MAX_PWR, r);
>> +    max = mul_u64_u32_shr(max, SF_POWER, hwmon->scl_shift_power);
>> +
>> +    if (min && max)
>> +        *value = clamp_t(u64, *value, min, max);
>> +
>> +    xe_device_mem_access_put(gt_to_xe(ddat->gt));
>> +    return 0;
>> +}
>> +
>> +static int hwm_power_max_write(struct hwm_drvdata *ddat, long value)
>> +{
>> +    struct xe_hwmon *hwmon = ddat->hwmon;
>> +    DEFINE_WAIT(wait);
>> +    int ret = 0;
>> +    u32 nval;
>> +
>> +    /* Block waiting for GuC reset to complete when needed */
>> +    for (;;) {
>> +        mutex_lock(&hwmon->hwmon_lock);
>> +
>> +        prepare_to_wait(&ddat->waitq, &wait, TASK_INTERRUPTIBLE);
>> +
>> +        if (!hwmon->ddat.reset_in_progress)
>> +            break;
>> +
>> +        if (signal_pending(current)) {
>> +            ret = -EINTR;
>> +            break;
>> +        }
>> +
>> +        mutex_unlock(&hwmon->hwmon_lock);
>> +
>> +        schedule();
>> +    }
>> +    finish_wait(&ddat->waitq, &wait);
>> +    if (ret)
>> +        goto unlock;
>> +
>> +    xe_device_mem_access_get(gt_to_xe(ddat->gt));
>> +
>> +    /* Disable PL1 limit and verify, as limit cannot be disabled on 
>> all platforms */
>> +    if (value == PL1_DISABLE) {
>> +        process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &nval,
>> +                  PKG_PWR_LIM_1_EN, 0);
>> +        process_hwmon_reg(ddat, pkg_rapl_limit, reg_read, &nval,
>> +                  PKG_PWR_LIM_1_EN, 0);
>> +
>> +        if (nval & PKG_PWR_LIM_1_EN)
>> +            ret = -ENODEV;
>> +        goto exit;
>> +    }
>> +
>> +    /* Computation in 64-bits to avoid overflow. Round to nearest. */
>> +    nval = DIV_ROUND_CLOSEST_ULL((u64)value << 
>> hwmon->scl_shift_power, SF_POWER);
>> +    nval = PKG_PWR_LIM_1_EN | REG_FIELD_PREP(PKG_PWR_LIM_1, nval);
>> +
>> +    process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &nval,
>> +              PKG_PWR_LIM_1_EN | PKG_PWR_LIM_1, nval);
>> +exit:
>> +    xe_device_mem_access_put(gt_to_xe(ddat->gt));
>> +unlock:
>> +    mutex_unlock(&hwmon->hwmon_lock);
>> +
>> +    return 0;
>> +}
>> +
>> +static int hwm_power_rated_max_read(struct hwm_drvdata *ddat, long 
>> *value)
>> +{
>> +    struct xe_hwmon *hwmon = ddat->hwmon;
>> +    u32 reg_val;
>> +
>> +    process_hwmon_reg(ddat, pkg_power_sku, reg_read, &reg_val, 0, 0);
>> +    reg_val = REG_FIELD_GET(PKG_PKG_TDP, reg_val);
>> +    *value = mul_u64_u32_shr(reg_val, SF_POWER, hwmon->scl_shift_power);
>> +
>> +    return 0;
>> +}
>> +
>>   static const struct hwmon_channel_info *hwm_info[] = {
>> +    HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX),
>>       NULL
>>   };
>> +static umode_t
>> +hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
>> +{
>> +    u32 reg_val;
>> +
>> +    switch (attr) {
>> +    case hwmon_power_max:
>> +        return process_hwmon_reg(ddat, pkg_rapl_limit,
>> +                     reg_read, &reg_val, 0, 0) ? 0 : 0664;
>> +    case hwmon_power_rated_max:
>> +        return process_hwmon_reg(ddat, pkg_power_sku,
>> +                     reg_read, &reg_val, 0, 0) ? 0 : 0444;
>> +    default:
>> +        return 0;
>> +    }
> Does is_visible require an extra read operation? reg.raw check should be 
> enough
Read will happen here only if reg is valid. Otherwise hwm_get_reg can be 
used here.
>> +}
>> +
>> +static int
>> +hwm_power_read(struct hwm_drvdata *ddat, u32 attr, int chan, long *val)
>> +{
>> +    switch (attr) {
>> +    case hwmon_power_max:
>> +        return hwm_power_max_read(ddat, val);
>> +    case hwmon_power_rated_max:
>> +        return hwm_power_rated_max_read(ddat, val);
>> +    default:
>> +        return -EOPNOTSUPP;
>> +    }
>> +}
>> +
>> +static int
>> +hwm_power_write(struct hwm_drvdata *ddat, u32 attr, int chan, long val)
>> +{
>> +    switch (attr) {
>> +    case hwmon_power_max:
>> +        return hwm_power_max_write(ddat, val);
>> +    default:
>> +        return -EOPNOTSUPP;
>> +    }
>> +}
>> +
>> +void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old)
>> +{
>> +    struct xe_hwmon *hwmon = xe->hwmon;
>> +    struct hwm_drvdata *ddat = &hwmon->ddat;
>> +    u32 r;
>> +
>> +    if (!hwmon || process_hwmon_reg(ddat, pkg_rapl_limit,
>> +                    reg_read, &r, 0, 0))
>> +        return;
>> +
>> +    mutex_lock(&hwmon->hwmon_lock);
>> +
>> +    hwmon->ddat.reset_in_progress = true;
>> +
>> +    process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &r,
>> +              PKG_PWR_LIM_1_EN, 0);
>> +    *old = !!(r & PKG_PWR_LIM_1_EN);
>> +
>> +    mutex_unlock(&hwmon->hwmon_lock);
>> +}
>> +
>> +void xe_hwmon_power_max_restore(struct xe_device *xe, bool old)
>> +{
>> +    struct xe_hwmon *hwmon = xe->hwmon;
>> +    struct hwm_drvdata *ddat = &hwmon->ddat;
>> +    u32 r;
>> +
>> +    if (!hwmon || process_hwmon_reg(ddat, pkg_rapl_limit,
>> +                    reg_read, &r, 0, 0))
>> +        return;
>> +
>> +    mutex_lock(&hwmon->hwmon_lock);
>> +
>> +    process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &r,
>> +              PKG_PWR_LIM_1_EN, old ? PKG_PWR_LIM_1_EN : 0);
>> +
>> +    hwmon->ddat.reset_in_progress = false;
>> +    wake_up_all(&hwmon->ddat.waitq);
>> +
>> +    mutex_unlock(&hwmon->hwmon_lock);
>> +}
>> +
>>   static umode_t
>>   hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>>              u32 attr, int channel)
>>   {
>> +    struct hwm_drvdata *ddat = (struct hwm_drvdata *)drvdata;
>> +    int ret;
>> +
>>       switch (type) {
>> +    case hwmon_power:
>> +        ret = hwm_power_is_visible(ddat, attr, channel);
>> +        break;
>>       default:
>> -        return 0;
>> +        ret = 0;
>>       }
>> +
>> +    return ret;
>>   }
>>   static int
>>   hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>>        int channel, long *val)
>>   {
>> +    struct hwm_drvdata *ddat = dev_get_drvdata(dev);
>> +
>>       switch (type) {
>> +    case hwmon_power:
>> +        return hwm_power_read(ddat, attr, channel, val);
>>       default:
>>           return -EOPNOTSUPP;
>>       }
>> @@ -52,7 +368,11 @@ static int
>>   hwm_write(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>>         int channel, long val)
>>   {
>> +    struct hwm_drvdata *ddat = dev_get_drvdata(dev);
>> +
>>       switch (type) {
>> +    case hwmon_power:
>> +        return hwm_power_write(ddat, attr, channel, val);
>>       default:
>>           return -EOPNOTSUPP;
>>       }
>> @@ -70,8 +390,19 @@ static const struct hwmon_chip_info hwm_chip_info = {
>>   };
>>   static void
>> -hwm_get_preregistration_info(struct xe_device *xe)
>> +hwm_get_preregistration_info(struct hwm_drvdata *ddat)
>>   {
>> +    struct xe_hwmon *hwmon = ddat->hwmon;
>> +    u32 val_sku_unit = 0;
>> +    int ret;
>> +
>> +    ret = process_hwmon_reg(ddat, pkg_power_sku_unit, reg_read, 
>> &val_sku_unit, 0, 0);
>> +    /*
>> +     * The contents of register pkg_power_sku_unit do not change,
>> +     * so read it once and store the shift values.
>> +     */
>> +    if (!ret)
>> +        hwmon->scl_shift_power = REG_FIELD_GET(PKG_PWR_UNIT, 
>> val_sku_unit);
>>   }
>>   void xe_hwmon_register(struct xe_device *xe)
>> @@ -96,15 +427,18 @@ void xe_hwmon_register(struct xe_device *xe)
>>       ddat->hwmon = hwmon;
>>       snprintf(ddat->name, sizeof(ddat->name), "xe");
>> -    hwm_get_preregistration_info(xe);
>> +    init_waitqueue_head(&ddat->waitq);
>> +
> ddat->gt must be initialized before calling hwm_get_preregistration_info
missed it during reordering of patches, its being initialised in next 
patch. Will fix this.

Thanks,
Badal
> 
> Thanks
> Riana
>> +    hwm_get_preregistration_info(ddat);
>>       drm_dbg(&xe->drm, "Register HWMON interface\n");
>> -    /*  hwmon_dev points to device hwmon<i> */
>> +    /* hwmon_dev points to device hwmon<i> */
>>       hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat->name,
>>                                ddat,
>>                                &hwm_chip_info,
>>                                NULL);
>> +
>>       if (IS_ERR(hwmon_dev)) {
>>           xe->hwmon = NULL;
>>           return;
>> diff --git a/drivers/gpu/drm/xe/xe_hwmon.h 
>> b/drivers/gpu/drm/xe/xe_hwmon.h
>> index a078eeb0a68b..a5dc693569c5 100644
>> --- a/drivers/gpu/drm/xe/xe_hwmon.h
>> +++ b/drivers/gpu/drm/xe/xe_hwmon.h
>> @@ -14,9 +14,13 @@ struct xe_device;
>>   #if IS_REACHABLE(CONFIG_HWMON)
>>   void xe_hwmon_register(struct xe_device *xe);
>>   void xe_hwmon_unregister(struct xe_device *xe);
>> +void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old);
>> +void xe_hwmon_power_max_restore(struct xe_device *xe, bool old);
>>   #else
>>   static inline void xe_hwmon_register(struct xe_device *xe) { };
>>   static inline void xe_hwmon_unregister(struct xe_device *xe) { };
>> +static inline void xe_hwmon_power_max_disable(struct xe_device *xe, 
>> bool *old) { };
>> +static inline void xe_hwmon_power_max_restore(struct xe_device *xe, 
>> bool old) { };
>>   #endif
>>   #endif /* __XE_HWMON_H__ */
>> diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
>> index 70eabf567156..9df5a3a85dc3 100644
>> --- a/drivers/gpu/drm/xe/xe_uc.c
>> +++ b/drivers/gpu/drm/xe/xe_uc.c
>> @@ -13,6 +13,7 @@
>>   #include "xe_huc.h"
>>   #include "xe_uc_fw.h"
>>   #include "xe_wopcm.h"
>> +#include "xe_hwmon.h"
>>   static struct xe_gt *
>>   uc_to_gt(struct xe_uc *uc)
>> @@ -127,11 +128,15 @@ int xe_uc_init_hwconfig(struct xe_uc *uc)
>>   int xe_uc_init_hw(struct xe_uc *uc)
>>   {
>>       int ret;
>> +    bool pl1en;
>>       /* GuC submission not enabled, nothing to do */
>>       if (!xe_device_guc_submission_enabled(uc_to_xe(uc)))
>>           return 0;
>> +    /* Disable a potentially low PL1 power limit to allow freq to be 
>> raised */
>> +    xe_hwmon_power_max_disable(uc_to_xe(uc), &pl1en);
>> +
>>       ret = xe_uc_sanitize_reset(uc);
>>       if (ret)
>>           return ret;
>> @@ -160,6 +165,7 @@ int xe_uc_init_hw(struct xe_uc *uc)
>>       if (ret)
>>           return ret;
>> +    xe_hwmon_power_max_restore(uc_to_xe(uc), pl1en);
>>       /* We don't fail the driver load if HuC fails to auth, but let's 
>> warn */
>>       ret = xe_huc_auth(&uc->huc);
>>       XE_WARN_ON(ret);

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

* Re: [Intel-xe] [RFC PATCH 2/6] drm/xe/hwmon: Expose power attributes
  2023-06-14  5:16   ` Riana Tauro
@ 2023-06-26 13:01     ` Nilawar, Badal
  0 siblings, 0 replies; 23+ messages in thread
From: Nilawar, Badal @ 2023-06-26 13:01 UTC (permalink / raw)
  To: Riana Tauro, intel-xe; +Cc: jani.nikula



On 14-06-2023 10:46, Riana Tauro wrote:
> 
> Hi Badal
> 
> On 6/6/2023 6:20 PM, Badal Nilawar wrote:
>> Expose power_max (pl1) and power_rated_max (tdp) attributes
>>
>> Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
>> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
>> ---
>>   .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  22 ++
>>   drivers/gpu/drm/xe/regs/xe_gt_regs.h          |   4 +
>>   drivers/gpu/drm/xe/regs/xe_mchbar_regs.h      |  34 ++
>>   drivers/gpu/drm/xe/xe_hwmon.c                 | 342 +++++++++++++++++-
>>   drivers/gpu/drm/xe/xe_hwmon.h                 |   4 +
>>   drivers/gpu/drm/xe/xe_uc.c                    |   6 +
>>   6 files changed, 408 insertions(+), 4 deletions(-)
>>   create mode 100644 
>> Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
>>   create mode 100644 drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
>>
>> diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon 
>> b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
>> new file mode 100644
>> index 000000000000..54a7b668009e
>> --- /dev/null
>> +++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
>> @@ -0,0 +1,22 @@
>> +What:        /sys/devices/.../hwmon/hwmon<i>/power1_max
>> +Date:        June 2023
>> +KernelVersion:    6.3
>> +Contact:    intel-gfx@lists.freedesktop.org
>> +Description:    RW. Card reactive sustained  (PL1/Tau) power limit in 
>> microwatts.
>> +
>> +        The power controller will throttle the operating frequency
>> +        if the power averaged over a window (typically seconds)
>> +        exceeds this limit. A read value of 0 means that the PL1
>> +        power limit is disabled, writing 0 disables the
>> +        limit. Writing values > 0 will enable the power limit.
>> +
>> +        Only supported for particular Intel xe graphics platforms.
>> +
>> +What:        /sys/devices/.../hwmon/hwmon<i>/power1_rated_max
>> +Date:        June 2023
>> +KernelVersion:    6.3
>> +Contact:    intel-gfx@lists.freedesktop.org
>> +Description:    RO. Card default power limit (default TDP setting).
>> +
>> +        Only supported for particular Intel xe graphics platforms.
>> +
>> diff --git a/drivers/gpu/drm/xe/regs/xe_gt_regs.h 
>> b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
>> index 0f920175526e..9d888aae907e 100644
>> --- a/drivers/gpu/drm/xe/regs/xe_gt_regs.h
>> +++ b/drivers/gpu/drm/xe/regs/xe_gt_regs.h
>> @@ -382,4 +382,8 @@
>>   #define XEHPC_BCS5_BCS6_INTR_MASK        XE_REG(0x190118)
>>   #define XEHPC_BCS7_BCS8_INTR_MASK        XE_REG(0x19011c)
>> +#define PVC_GT0_PACKAGE_RAPL_LIMIT        XE_REG(0x281008)
>> +#define PVC_GT0_PACKAGE_POWER_SKU_UNIT        XE_REG(0x281068)
>> +#define PVC_GT0_PACKAGE_POWER_SKU        XE_REG(0x281080)
>> +
>>   #endif
>> diff --git a/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h 
>> b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
>> new file mode 100644
>> index 000000000000..4ad473e69e27
>> --- /dev/null
>> +++ b/drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
>> @@ -0,0 +1,34 @@
>> +/* SPDX-License-Identifier: MIT */
>> +/*
>> + * Copyright © 2023 Intel Corporation
>> + */
>> +
>> +#ifndef _XE_MCHBAR_REGS_H__
>> +#define _XE_MCHBAR_REGS_H_
>> +
>> +#include "regs/xe_reg_defs.h"
>> +
>> +/*
>> + * MCHBAR mirror.
>> + *
>> + * This mirrors the MCHBAR MMIO space whose location is determined by
>> + * device 0 function 0's pci config register 0x44 or 0x48 and matches 
>> it in
>> + * every way.
>> + */
>> +
>> +#define MCHBAR_MIRROR_BASE_SNB            0x140000
>> +
>> +#define PCU_CR_PACKAGE_POWER_SKU        XE_REG(MCHBAR_MIRROR_BASE_SNB 
>> + 0x5930)
>> +#define   PKG_PKG_TDP                GENMASK_ULL(14, 0)
>> +
>> +#define PCU_CR_PACKAGE_POWER_SKU_UNIT        
>> XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x5938)
>> +#define   PKG_PWR_UNIT                REG_GENMASK(3, 0)
>> +#define   PKG_MIN_PWR                GENMASK_ULL(30, 16)
>> +#define   PKG_MAX_PWR                GENMASK_ULL(46, 32)
> PKG_MIN_PWR & PKG_MAX_PWR are under PCU_CR_PACKAGE_POWER_SKU
> Should be moved above
Sure
>> +
>> +#define PCU_CR_PACKAGE_RAPL_LIMIT        
>> XE_REG(MCHBAR_MIRROR_BASE_SNB + 0x59a0)
>> +#define   PKG_PWR_LIM_1                REG_GENMASK(14, 0)
>> +#define   PKG_PWR_LIM_1_EN            REG_BIT(15)
>> +
>> +#endif
>> +
>> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c 
>> b/drivers/gpu/drm/xe/xe_hwmon.c
>> index 65e5488dec82..8e248e806559 100644
>> --- a/drivers/gpu/drm/xe/xe_hwmon.c
>> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
>> @@ -7,42 +7,358 @@
>>   #include <linux/hwmon-sysfs.h>
>>   #include <linux/types.h>
>> +#include "regs/xe_mchbar_regs.h"
>>   #include "regs/xe_gt_regs.h"
>>   #include "xe_device.h"
>>   #include "xe_hwmon.h"
>>   #include "xe_mmio.h"
>>   #include "xe_gt.h"
>> +#include "i915_drv.h"
>> +
>> +enum hwm_reg_name {
>> +    pkg_rapl_limit,
>> +    pkg_power_sku,
>> +    pkg_power_sku_unit,
>> +};
>> +
>> +enum hwm_reg_operation {
>> +    reg_read,
>> +    reg_write,
>> +    reg_rmw,
>> +};
>> +
>> +/*
>> + * SF_* - scale factors for particular quantities according to hwmon 
>> spec.
>> + * - voltage  - millivolts
>> + * - power  - microwatts
>> + */
>> +#define SF_VOLTAGE    1000
>> +#define SF_POWER    1000000
>>   struct hwm_drvdata {
>>       struct xe_hwmon *hwmon;
>>       struct device *hwmon_dev;
>> +    struct xe_gt *gt;
>>       char name[12];
>> +    bool reset_in_progress;
>> +    wait_queue_head_t waitq;
>>   };
>>   struct xe_hwmon {
>>       struct hwm_drvdata ddat;
>>       struct mutex hwmon_lock;    /* counter overflow logic and rmw */
>> +    int scl_shift_power;
>>   };
>> +struct xe_reg hwm_get_reg(struct hwm_drvdata *ddat, enum hwm_reg_name 
>> reg_name)
>> +{
>> +    switch (reg_name) {
>> +    case pkg_rapl_limit:
>> +        if (IS_DG2(gt_to_xe(ddat->gt)))
>> +            return PCU_CR_PACKAGE_RAPL_LIMIT;
>> +        else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
>> +            return PVC_GT0_PACKAGE_RAPL_LIMIT;
>> +        else
>> +            return XE_REG(0);
> returns XE_REG(0) at the end. Can be removed
Sure
>> +        break;
>> +    case pkg_power_sku:
>> +        if (IS_DG2(gt_to_xe(ddat->gt)))
>> +            return PCU_CR_PACKAGE_POWER_SKU;
>> +        else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
>> +            return PVC_GT0_PACKAGE_POWER_SKU;
>> +        else
>> +            return XE_REG(0);
>> +        break;
>> +    case pkg_power_sku_unit:
>> +        if (IS_DG2(gt_to_xe(ddat->gt)))
>> +            return PCU_CR_PACKAGE_POWER_SKU_UNIT;
>> +        else if (IS_PONTEVECCHIO(gt_to_xe(ddat->gt)))
>> +            return PVC_GT0_PACKAGE_POWER_SKU_UNIT;
>> +        else
>> +            return XE_REG(0);
>> +        break;
>> +    default:
>> +        break;
>> +    }
>> +
>> +    return XE_REG(0);
>> +}
>> +
>> +int process_hwmon_reg(struct hwm_drvdata *ddat, enum hwm_reg_name 
>> reg_name,
>> +              enum hwm_reg_operation operation, u32 *value,
>> +              u32 clr, u32 set)
>> +{
>> +    struct xe_reg reg;
>> +    int ret = 0;
>> +
>> +    reg = hwm_get_reg(ddat, reg_name);
>> +
>> +    if (!reg.raw)
>> +        return -EOPNOTSUPP;
>> +
>> +    xe_device_mem_access_get(gt_to_xe(ddat->gt));
>> +
>> +    switch (operation) {
>> +    case reg_read:
>> +        *value = xe_mmio_read32(ddat->gt, reg);
>> +        break;
>> +    case reg_write:
>> +        xe_mmio_write32(ddat->gt, reg, *value);
>> +        break;
>> +    case reg_rmw:
>> +        *value = xe_mmio_rmw32(ddat->gt, reg, clr, set);
>> +        break;
>> +    default:
>> +        ret = -EOPNOTSUPP;
>> +    }
>> +
>> +    xe_device_mem_access_put(gt_to_xe(ddat->gt));
>> +
>> +    return ret;
> Return 0 instead of extra variable
Variable ret is needed to handle default case but this will be taken 
care once I fix place for rpm calls. Actually during suspend resume flow 
I am observing locking issues so to fix it I am planning to add rpm 
calls at higher level in the function instead of adding at reg access 
level. There this will be taken care.
>> +}
>> +
>> +int process_hwmon_reg_read64(struct hwm_drvdata *ddat, enum 
>> hwm_reg_name reg_name, u64 *value)
>> +{
>> +    struct xe_reg reg;
>> +
>> +    reg = hwm_get_reg(ddat, reg_name);
>> +
>> +    if (!reg.raw)
>> +        return -EOPNOTSUPP;
>> +
>> +    xe_device_mem_access_get(gt_to_xe(ddat->gt));
>> +
>> +    *value = xe_mmio_read64(ddat->gt, reg);
>> +
>> +    xe_device_mem_access_put(gt_to_xe(ddat->gt));
>> +
>> +    return 0;
>> +}
>> +
>> +#define PL1_DISABLE 0
>> +
>> +/*
>> + * HW allows arbitrary PL1 limits to be set but silently clamps these 
>> values to
>> + * "typical but not guaranteed" min/max values in rg.pkg_power_sku. 
>> Follow the
>> + * same pattern for sysfs, allow arbitrary PL1 limits to be set but 
>> display
>> + * clamped values when read. Write/read I1 also follows the same 
>> pattern.
>> + */
> Last line about I1 should be added in the next patch
Sure
>> +static int hwm_power_max_read(struct hwm_drvdata *ddat, long *value)
>> +{
>> +    struct xe_hwmon *hwmon = ddat->hwmon;
>> +    u32 reg_val;
>> +    u64 r, min, max;
>> +
>> +    xe_device_mem_access_get(gt_to_xe(ddat->gt));
>> +
>> +    process_hwmon_reg(ddat, pkg_rapl_limit, reg_read, &reg_val, 0, 0);
>> +    /* Check if PL1 limit is disabled */
>> +    if (!(reg_val & PKG_PWR_LIM_1_EN)) {
>> +        *value = PL1_DISABLE;
>> +        xe_device_mem_access_put(gt_to_xe(ddat->gt));
>> +        return 0;
>> +    }
>> +
>> +    reg_val = REG_FIELD_GET(PKG_PWR_LIM_1, reg_val);
>> +    *value = mul_u64_u32_shr(reg_val, SF_POWER, hwmon->scl_shift_power);
>> +
>> +    process_hwmon_reg_read64(ddat, pkg_power_sku, &r);
>> +    min = REG_FIELD_GET(PKG_MIN_PWR, r);
>> +    min = mul_u64_u32_shr(min, SF_POWER, hwmon->scl_shift_power);
>> +    max = REG_FIELD_GET(PKG_MAX_PWR, r);
>> +    max = mul_u64_u32_shr(max, SF_POWER, hwmon->scl_shift_power);
>> +
>> +    if (min && max)
>> +        *value = clamp_t(u64, *value, min, max);
>> +
>> +    xe_device_mem_access_put(gt_to_xe(ddat->gt));
>> +    return 0;
>> +}
>> +
>> +static int hwm_power_max_write(struct hwm_drvdata *ddat, long value)
>> +{
>> +    struct xe_hwmon *hwmon = ddat->hwmon;
>> +    DEFINE_WAIT(wait);
>> +    int ret = 0;
>> +    u32 nval;
>> +
>> +    /* Block waiting for GuC reset to complete when needed */
>> +    for (;;) {
>> +        mutex_lock(&hwmon->hwmon_lock);
>> +
>> +        prepare_to_wait(&ddat->waitq, &wait, TASK_INTERRUPTIBLE);
>> +
>> +        if (!hwmon->ddat.reset_in_progress)
>> +            break;
>> +
>> +        if (signal_pending(current)) {
>> +            ret = -EINTR;
>> +            break;
>> +        }
>> +
>> +        mutex_unlock(&hwmon->hwmon_lock);
>> +
>> +        schedule();
>> +    }
>> +    finish_wait(&ddat->waitq, &wait);
>> +    if (ret)
>> +        goto unlock;
>> +
>> +    xe_device_mem_access_get(gt_to_xe(ddat->gt));
>> +
>> +    /* Disable PL1 limit and verify, as limit cannot be disabled on 
>> all platforms */
>> +    if (value == PL1_DISABLE) {
>> +        process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &nval,
>> +                  PKG_PWR_LIM_1_EN, 0);
>> +        process_hwmon_reg(ddat, pkg_rapl_limit, reg_read, &nval,
>> +                  PKG_PWR_LIM_1_EN, 0);
>> +
>> +        if (nval & PKG_PWR_LIM_1_EN)
>> +            ret = -ENODEV;
>> +        goto exit;
>> +    }
>> +
>> +    /* Computation in 64-bits to avoid overflow. Round to nearest. */
>> +    nval = DIV_ROUND_CLOSEST_ULL((u64)value << 
>> hwmon->scl_shift_power, SF_POWER);
>> +    nval = PKG_PWR_LIM_1_EN | REG_FIELD_PREP(PKG_PWR_LIM_1, nval);
>> +
>> +    process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &nval,
>> +              PKG_PWR_LIM_1_EN | PKG_PWR_LIM_1, nval);
>> +exit:
>> +    xe_device_mem_access_put(gt_to_xe(ddat->gt));
>> +unlock:
>> +    mutex_unlock(&hwmon->hwmon_lock);
>> +
>> +    return 0;
>> +}
>> +
>> +static int hwm_power_rated_max_read(struct hwm_drvdata *ddat, long 
>> *value)
>> +{
>> +    struct xe_hwmon *hwmon = ddat->hwmon;
>> +    u32 reg_val;
> xe_device_mem_access_get needs to be added?
Actually its added in process_hwmon_reg so didn't add here.
> 
> Thanks
> Riana
>> +
>> +    process_hwmon_reg(ddat, pkg_power_sku, reg_read, &reg_val, 0, 0);
>> +    reg_val = REG_FIELD_GET(PKG_PKG_TDP, reg_val);
>> +    *value = mul_u64_u32_shr(reg_val, SF_POWER, hwmon->scl_shift_power);
>> +
>> +    return 0;
>> +}
>> +
>>   static const struct hwmon_channel_info *hwm_info[] = {
>> +    HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX),
>>       NULL
>>   };
>> +static umode_t
>> +hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
>> +{
>> +    u32 reg_val;
>> +
>> +    switch (attr) {
>> +    case hwmon_power_max:
>> +        return process_hwmon_reg(ddat, pkg_rapl_limit,
>> +                     reg_read, &reg_val, 0, 0) ? 0 : 0664;
>> +    case hwmon_power_rated_max:
>> +        return process_hwmon_reg(ddat, pkg_power_sku,
>> +                     reg_read, &reg_val, 0, 0) ? 0 : 0444;
>> +    default:
>> +        return 0;
>> +    }
>> +}
>> +
>> +static int
>> +hwm_power_read(struct hwm_drvdata *ddat, u32 attr, int chan, long *val)
>> +{
>> +    switch (attr) {
>> +    case hwmon_power_max:
>> +        return hwm_power_max_read(ddat, val);
>> +    case hwmon_power_rated_max:
>> +        return hwm_power_rated_max_read(ddat, val);
>> +    default:
>> +        return -EOPNOTSUPP;
>> +    }
>> +}
>> +
>> +static int
>> +hwm_power_write(struct hwm_drvdata *ddat, u32 attr, int chan, long val)
>> +{
>> +    switch (attr) {
>> +    case hwmon_power_max:
>> +        return hwm_power_max_write(ddat, val);
>> +    default:
>> +        return -EOPNOTSUPP;
>> +    }
>> +}
>> +
>> +void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old)
>> +{
>> +    struct xe_hwmon *hwmon = xe->hwmon;
>> +    struct hwm_drvdata *ddat = &hwmon->ddat;
>> +    u32 r;
>> +
>> +    if (!hwmon || process_hwmon_reg(ddat, pkg_rapl_limit,
>> +                    reg_read, &r, 0, 0))
>> +        return;
>> +
>> +    mutex_lock(&hwmon->hwmon_lock);
>> +
>> +    hwmon->ddat.reset_in_progress = true;
>> +
>> +    process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &r,
>> +              PKG_PWR_LIM_1_EN, 0);
>> +    *old = !!(r & PKG_PWR_LIM_1_EN);
>> +
>> +    mutex_unlock(&hwmon->hwmon_lock);
>> +}
>> +
>> +void xe_hwmon_power_max_restore(struct xe_device *xe, bool old)
>> +{
>> +    struct xe_hwmon *hwmon = xe->hwmon;
>> +    struct hwm_drvdata *ddat = &hwmon->ddat;
>> +    u32 r;
>> +
>> +    if (!hwmon || process_hwmon_reg(ddat, pkg_rapl_limit,
>> +                    reg_read, &r, 0, 0))
>> +        return;
>> +
>> +    mutex_lock(&hwmon->hwmon_lock);
>> +
>> +    process_hwmon_reg(ddat, pkg_rapl_limit, reg_rmw, &r,
>> +              PKG_PWR_LIM_1_EN, old ? PKG_PWR_LIM_1_EN : 0);
>> +
>> +    hwmon->ddat.reset_in_progress = false;
>> +    wake_up_all(&hwmon->ddat.waitq);
>> +
>> +    mutex_unlock(&hwmon->hwmon_lock);
>> +}
>> +
>>   static umode_t
>>   hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>>              u32 attr, int channel)
>>   {
>> +    struct hwm_drvdata *ddat = (struct hwm_drvdata *)drvdata;
>> +    int ret;
>> +
>>       switch (type) {
>> +    case hwmon_power:
>> +        ret = hwm_power_is_visible(ddat, attr, channel);
>> +        break;
>>       default:
>> -        return 0;
>> +        ret = 0;
>>       }
>> +
>> +    return ret;
>>   }
>>   static int
>>   hwm_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>>        int channel, long *val)
>>   {
>> +    struct hwm_drvdata *ddat = dev_get_drvdata(dev);
>> +
>>       switch (type) {
>> +    case hwmon_power:
>> +        return hwm_power_read(ddat, attr, channel, val);
>>       default:
>>           return -EOPNOTSUPP;
>>       }
>> @@ -52,7 +368,11 @@ static int
>>   hwm_write(struct device *dev, enum hwmon_sensor_types type, u32 attr,
>>         int channel, long val)
>>   {
>> +    struct hwm_drvdata *ddat = dev_get_drvdata(dev);
>> +
>>       switch (type) {
>> +    case hwmon_power:
>> +        return hwm_power_write(ddat, attr, channel, val);
>>       default:
>>           return -EOPNOTSUPP;
>>       }
>> @@ -70,8 +390,19 @@ static const struct hwmon_chip_info hwm_chip_info = {
>>   };
>>   static void
>> -hwm_get_preregistration_info(struct xe_device *xe)
>> +hwm_get_preregistration_info(struct hwm_drvdata *ddat)
>>   {
>> +    struct xe_hwmon *hwmon = ddat->hwmon;
>> +    u32 val_sku_unit = 0;
>> +    int ret;
>> +
>> +    ret = process_hwmon_reg(ddat, pkg_power_sku_unit, reg_read, 
>> &val_sku_unit, 0, 0);
>> +    /*
>> +     * The contents of register pkg_power_sku_unit do not change,
>> +     * so read it once and store the shift values.
>> +     */
>> +    if (!ret)
>> +        hwmon->scl_shift_power = REG_FIELD_GET(PKG_PWR_UNIT, 
>> val_sku_unit);
>>   }
>>   void xe_hwmon_register(struct xe_device *xe)
>> @@ -96,15 +427,18 @@ void xe_hwmon_register(struct xe_device *xe)
>>       ddat->hwmon = hwmon;
>>       snprintf(ddat->name, sizeof(ddat->name), "xe");
>> -    hwm_get_preregistration_info(xe);
>> +    init_waitqueue_head(&ddat->waitq);
>> +
>> +    hwm_get_preregistration_info(ddat);
>>       drm_dbg(&xe->drm, "Register HWMON interface\n");
>> -    /*  hwmon_dev points to device hwmon<i> */
>> +    /* hwmon_dev points to device hwmon<i> */
>>       hwmon_dev = devm_hwmon_device_register_with_info(dev, ddat->name,
>>                                ddat,
>>                                &hwm_chip_info,
>>                                NULL);
>> +
>>       if (IS_ERR(hwmon_dev)) {
>>           xe->hwmon = NULL;
>>           return;
>> diff --git a/drivers/gpu/drm/xe/xe_hwmon.h 
>> b/drivers/gpu/drm/xe/xe_hwmon.h
>> index a078eeb0a68b..a5dc693569c5 100644
>> --- a/drivers/gpu/drm/xe/xe_hwmon.h
>> +++ b/drivers/gpu/drm/xe/xe_hwmon.h
>> @@ -14,9 +14,13 @@ struct xe_device;
>>   #if IS_REACHABLE(CONFIG_HWMON)
>>   void xe_hwmon_register(struct xe_device *xe);
>>   void xe_hwmon_unregister(struct xe_device *xe);
>> +void xe_hwmon_power_max_disable(struct xe_device *xe, bool *old);
>> +void xe_hwmon_power_max_restore(struct xe_device *xe, bool old);
>>   #else
>>   static inline void xe_hwmon_register(struct xe_device *xe) { };
>>   static inline void xe_hwmon_unregister(struct xe_device *xe) { };
>> +static inline void xe_hwmon_power_max_disable(struct xe_device *xe, 
>> bool *old) { };
>> +static inline void xe_hwmon_power_max_restore(struct xe_device *xe, 
>> bool old) { };
>>   #endif
>>   #endif /* __XE_HWMON_H__ */
>> diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
>> index 70eabf567156..9df5a3a85dc3 100644
>> --- a/drivers/gpu/drm/xe/xe_uc.c
>> +++ b/drivers/gpu/drm/xe/xe_uc.c
>> @@ -13,6 +13,7 @@
>>   #include "xe_huc.h"
>>   #include "xe_uc_fw.h"
>>   #include "xe_wopcm.h"
>> +#include "xe_hwmon.h"
>>   static struct xe_gt *
>>   uc_to_gt(struct xe_uc *uc)
>> @@ -127,11 +128,15 @@ int xe_uc_init_hwconfig(struct xe_uc *uc)
>>   int xe_uc_init_hw(struct xe_uc *uc)
>>   {
>>       int ret;
>> +    bool pl1en;
>>       /* GuC submission not enabled, nothing to do */
>>       if (!xe_device_guc_submission_enabled(uc_to_xe(uc)))
>>           return 0;
>> +    /* Disable a potentially low PL1 power limit to allow freq to be 
>> raised */
>> +    xe_hwmon_power_max_disable(uc_to_xe(uc), &pl1en);
>> +
>>       ret = xe_uc_sanitize_reset(uc);
>>       if (ret)
>>           return ret;
>> @@ -160,6 +165,7 @@ int xe_uc_init_hw(struct xe_uc *uc)
>>       if (ret)
>>           return ret;
>> +    xe_hwmon_power_max_restore(uc_to_xe(uc), pl1en);
>>       /* We don't fail the driver load if HuC fails to auth, but let's 
>> warn */
>>       ret = xe_huc_auth(&uc->huc);
>>       XE_WARN_ON(ret);

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

* Re: [Intel-xe] [RFC PATCH 3/6] drm/xe/hwmon: Expose card reactive critical power
  2023-06-14  7:52   ` Riana Tauro
@ 2023-06-26 13:27     ` Nilawar, Badal
  0 siblings, 0 replies; 23+ messages in thread
From: Nilawar, Badal @ 2023-06-26 13:27 UTC (permalink / raw)
  To: Riana Tauro, intel-xe; +Cc: jani.nikula



On 14-06-2023 13:22, Riana Tauro wrote:
> Hi Badal
> 
> On 6/6/2023 6:20 PM, Badal Nilawar wrote:
>> Expose the card reactive critical (I1) power. I1 is exposed as
>> power1_crit in microwatts (typically for client products) or as
>> curr1_crit in milliamperes (typically for server).
>>
>> Co-developed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
>> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
>> ---
>>   .../ABI/testing/sysfs-driver-intel-xe-hwmon   |  26 +++++
>>   drivers/gpu/drm/xe/xe_hwmon.c                 | 106 ++++++++++++++++++
>>   drivers/gpu/drm/xe/xe_pcode_api.h             |   7 ++
>>   3 files changed, 139 insertions(+)
>>
>> diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon 
>> b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
>> index 54a7b668009e..fcc2aedb2aac 100644
>> --- a/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
>> +++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon
>> @@ -20,3 +20,29 @@ Description:    RO. Card default power limit 
>> (default TDP setting).
>>           Only supported for particular Intel xe graphics platforms.
>> +What:        /sys/devices/.../hwmon/hwmon<i>/power1_crit
>> +Date:        June 2023
>> +KernelVersion:    6.3
>> +Contact:    intel-gfx@lists.freedesktop.org
>> +Description:    RW. Card reactive critical (I1) power limit in 
>> microwatts.
>> +
>> +        Card reactive critical (I1) power limit in microwatts is exposed
>> +        for client products. The power controller will throttle the
>> +        operating frequency if the power averaged over a window exceeds
>> +        this limit.
>> +
>> +        Only supported for particular Intel xe graphics platforms.
>> +
>> +What:        /sys/devices/.../hwmon/hwmon<i>/curr1_crit
>> +Date:        June 2023
>> +KernelVersion:    6.3
>> +Contact:    intel-gfx@lists.freedesktop.org
>> +Description:    RW. Card reactive critical (I1) power limit in 
>> milliamperes.
>> +
>> +        Card reactive critical (I1) power limit in milliamperes is
>> +        exposed for server products. The power controller will throttle
>> +        the operating frequency if the power averaged over a window
>> +        exceeds this limit.
>> +
>> +        Only supported for particular Intel xe graphics platforms.
>> +
>> diff --git a/drivers/gpu/drm/xe/xe_hwmon.c 
>> b/drivers/gpu/drm/xe/xe_hwmon.c
>> index 8e248e806559..b07ea53fdbc6 100644
>> --- a/drivers/gpu/drm/xe/xe_hwmon.c
>> +++ b/drivers/gpu/drm/xe/xe_hwmon.c
>> @@ -14,6 +14,13 @@
>>   #include "xe_mmio.h"
>>   #include "xe_gt.h"
>>   #include "i915_drv.h"
>> +#include "xe_pcode.h"
>> +#include "xe_pcode_api.h"
>> +
>> +#define PCODE_MBOX(mbcmd, param1, param2)\
>> +    FIELD_PREP(PCODE_MB_COMMAND, mbcmd)\
>> +    | FIELD_PREP(PCODE_MB_PARAM1, param1)\
>> +    | FIELD_PREP(PCODE_MB_PARAM2, param2)
> Should this be moved to pcode file?
Sure, will move this to pcode file.
>>   enum hwm_reg_name {
>>       pkg_rapl_limit,
>> @@ -31,9 +38,11 @@ enum hwm_reg_operation {
>>    * SF_* - scale factors for particular quantities according to hwmon 
>> spec.
>>    * - voltage  - millivolts
>>    * - power  - microwatts
>> + * - curr   - milliamperes
>>    */
>>   #define SF_VOLTAGE    1000
>>   #define SF_POWER    1000000
>> +#define SF_CURR        1000
>>   struct hwm_drvdata {
>>       struct xe_hwmon *hwmon;
>> @@ -246,13 +255,35 @@ static int hwm_power_rated_max_read(struct 
>> hwm_drvdata *ddat, long *value)
>>   static const struct hwmon_channel_info *hwm_info[] = {
>>       HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX),
>> +    HWMON_CHANNEL_INFO(power, HWMON_P_MAX | HWMON_P_RATED_MAX | 
>> HWMON_P_CRIT),
> Remove duplicate line. HWMON_P_CRIT needs to be added above.
Sure

Regards,
Badal
> 
> Thanks
> Riana
>> +    HWMON_CHANNEL_INFO(curr, HWMON_C_CRIT),
>>       NULL
>>   };
>> +/* I1 is exposed as power_crit or as curr_crit depending on bit 31 */
>> +static int hwm_pcode_read_i1(struct xe_gt *gt, u32 *uval)
>> +{
>> +    /* Avoid ILLEGAL_SUBCOMMAND "mailbox access failed" warning in 
>> snb_pcode_read */
>> +    if (IS_DG2(gt_to_xe(gt)))
>> +        return -ENXIO;
>> +
>> +    return xe_pcode_read(gt, PCODE_MBOX(PCODE_POWER_SETUP,
>> +                 POWER_SETUP_SUBCOMMAND_READ_I1, 0),
>> +                 uval, 0);
>> +}
>> +
>> +static int hwm_pcode_write_i1(struct xe_gt *gt, u32 uval)
>> +{
>> +    return xe_pcode_write(gt, PCODE_MBOX(PCODE_POWER_SETUP,
>> +                  POWER_SETUP_SUBCOMMAND_WRITE_I1, 0),
>> +                  uval);
>> +}
>> +
>>   static umode_t
>>   hwm_power_is_visible(struct hwm_drvdata *ddat, u32 attr, int chan)
>>   {
>>       u32 reg_val;
>> +    u32 uval;
>>       switch (attr) {
>>       case hwmon_power_max:
>> @@ -261,6 +292,9 @@ hwm_power_is_visible(struct hwm_drvdata *ddat, u32 
>> attr, int chan)
>>       case hwmon_power_rated_max:
>>           return process_hwmon_reg(ddat, pkg_power_sku,
>>                        reg_read, &reg_val, 0, 0) ? 0 : 0444;
>> +    case hwmon_power_crit:
>> +        return (hwm_pcode_read_i1(ddat->gt, &uval) ||
>> +            !(uval & POWER_SETUP_I1_WATTS)) ? 0 : 0644;
>>       default:
>>           return 0;
>>       }
>> @@ -269,11 +303,23 @@ hwm_power_is_visible(struct hwm_drvdata *ddat, 
>> u32 attr, int chan)
>>   static int
>>   hwm_power_read(struct hwm_drvdata *ddat, u32 attr, int chan, long *val)
>>   {
>> +    int ret;
>> +    u32 uval;
>> +
>>       switch (attr) {
>>       case hwmon_power_max:
>>           return hwm_power_max_read(ddat, val);
>>       case hwmon_power_rated_max:
>>           return hwm_power_rated_max_read(ddat, val);
>> +    case hwmon_power_crit:
>> +        ret = hwm_pcode_read_i1(ddat->gt, &uval);
>> +        if (ret)
>> +            return ret;
>> +        if (!(uval & POWER_SETUP_I1_WATTS))
>> +            return -ENODEV;
>> +        *val = 
>> mul_u64_u32_shr(REG_FIELD_GET(POWER_SETUP_I1_DATA_MASK, uval),
>> +                       SF_POWER, POWER_SETUP_I1_SHIFT);
>> +        return 0;
>>       default:
>>           return -EOPNOTSUPP;
>>       }
>> @@ -282,9 +328,14 @@ hwm_power_read(struct hwm_drvdata *ddat, u32 
>> attr, int chan, long *val)
>>   static int
>>   hwm_power_write(struct hwm_drvdata *ddat, u32 attr, int chan, long val)
>>   {
>> +    u32 uval;
>> +
>>       switch (attr) {
>>       case hwmon_power_max:
>>           return hwm_power_max_write(ddat, val);
>> +    case hwmon_power_crit:
>> +        uval = DIV_ROUND_CLOSEST_ULL(val << POWER_SETUP_I1_SHIFT, 
>> SF_POWER);
>> +        return hwm_pcode_write_i1(ddat->gt, uval);
>>       default:
>>           return -EOPNOTSUPP;
>>       }
>> @@ -332,6 +383,55 @@ void xe_hwmon_power_max_restore(struct xe_device 
>> *xe, bool old)
>>       mutex_unlock(&hwmon->hwmon_lock);
>>   }
>> +static umode_t
>> +hwm_curr_is_visible(const struct hwm_drvdata *ddat, u32 attr)
>> +{
>> +    u32 uval;
>> +
>> +    switch (attr) {
>> +    case hwmon_curr_crit:
>> +        return (hwm_pcode_read_i1(ddat->gt, &uval) ||
>> +            (uval & POWER_SETUP_I1_WATTS)) ? 0 : 0644;
>> +    default:
>> +        return 0;
>> +    }
>> +}
>> +
>> +static int
>> +hwm_curr_read(struct hwm_drvdata *ddat, u32 attr, long *val)
>> +{
>> +    int ret;
>> +    u32 uval;
>> +
>> +    switch (attr) {
>> +    case hwmon_curr_crit:
>> +        ret = hwm_pcode_read_i1(ddat->gt, &uval);
>> +        if (ret)
>> +            return ret;
>> +        if (uval & POWER_SETUP_I1_WATTS)
>> +            return -ENODEV;
>> +        *val = 
>> mul_u64_u32_shr(REG_FIELD_GET(POWER_SETUP_I1_DATA_MASK, uval),
>> +                       SF_CURR, POWER_SETUP_I1_SHIFT);
>> +        return 0;
>> +    default:
>> +        return -EOPNOTSUPP;
>> +    }
>> +}
>> +
>> +static int
>> +hwm_curr_write(struct hwm_drvdata *ddat, u32 attr, long val)
>> +{
>> +    u32 uval;
>> +
>> +    switch (attr) {
>> +    case hwmon_curr_crit:
>> +        uval = DIV_ROUND_CLOSEST_ULL(val << POWER_SETUP_I1_SHIFT, 
>> SF_CURR);
>> +        return hwm_pcode_write_i1(ddat->gt, uval);
>> +    default:
>> +        return -EOPNOTSUPP;
>> +    }
>> +}
>> +
>>   static umode_t
>>   hwm_is_visible(const void *drvdata, enum hwmon_sensor_types type,
>>              u32 attr, int channel)
>> @@ -343,6 +443,8 @@ hwm_is_visible(const void *drvdata, enum 
>> hwmon_sensor_types type,
>>       case hwmon_power:
>>           ret = hwm_power_is_visible(ddat, attr, channel);
>>           break;
>> +    case hwmon_curr:
>> +        return hwm_curr_is_visible(ddat, attr);
>>       default:
>>           ret = 0;
>>       }
>> @@ -359,6 +461,8 @@ hwm_read(struct device *dev, enum 
>> hwmon_sensor_types type, u32 attr,
>>       switch (type) {
>>       case hwmon_power:
>>           return hwm_power_read(ddat, attr, channel, val);
>> +    case hwmon_curr:
>> +        return hwm_curr_read(ddat, attr, val);
>>       default:
>>           return -EOPNOTSUPP;
>>       }
>> @@ -373,6 +477,8 @@ hwm_write(struct device *dev, enum 
>> hwmon_sensor_types type, u32 attr,
>>       switch (type) {
>>       case hwmon_power:
>>           return hwm_power_write(ddat, attr, channel, val);
>> +    case hwmon_curr:
>> +        return hwm_curr_write(ddat, attr, val);
>>       default:
>>           return -EOPNOTSUPP;
>>       }
>> diff --git a/drivers/gpu/drm/xe/xe_pcode_api.h 
>> b/drivers/gpu/drm/xe/xe_pcode_api.h
>> index 837ff7c71280..5935cfe30204 100644
>> --- a/drivers/gpu/drm/xe/xe_pcode_api.h
>> +++ b/drivers/gpu/drm/xe/xe_pcode_api.h
>> @@ -35,6 +35,13 @@
>>   #define     DGFX_GET_INIT_STATUS    0x0
>>   #define     DGFX_INIT_STATUS_COMPLETE    0x1
>> +#define   PCODE_POWER_SETUP            0x7C
>> +#define     POWER_SETUP_SUBCOMMAND_READ_I1    0x4
>> +#define     POWER_SETUP_SUBCOMMAND_WRITE_I1    0x5
>> +#define        POWER_SETUP_I1_WATTS        REG_BIT(31)
>> +#define        POWER_SETUP_I1_SHIFT        6    /* 10.6 fixed point 
>> format */
>> +#define        POWER_SETUP_I1_DATA_MASK        REG_GENMASK(15, 0)
>> +
>>   struct pcode_err_decode {
>>       int errno;
>>       const char *str;

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

end of thread, other threads:[~2023-06-26 13:28 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-06 12:50 [Intel-xe] [RFC PATCH 0/6] Add HWMON support for DGFX Badal Nilawar
2023-06-06 12:48 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
2023-06-06 12:49 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
2023-06-06 12:50 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 1/6] drm/xe/hwmon: Add HWMON infrastructure Badal Nilawar
2023-06-07  9:40   ` Riana Tauro
2023-06-07 13:36     ` Nilawar, Badal
2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 2/6] drm/xe/hwmon: Expose power attributes Badal Nilawar
2023-06-08 14:04   ` Riana Tauro
2023-06-26 12:50     ` Nilawar, Badal
2023-06-14  5:16   ` Riana Tauro
2023-06-26 13:01     ` Nilawar, Badal
2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 3/6] drm/xe/hwmon: Expose card reactive critical power Badal Nilawar
2023-06-14  7:52   ` Riana Tauro
2023-06-26 13:27     ` Nilawar, Badal
2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 4/6] drm/xe/hwmon: Expose input voltage attribute Badal Nilawar
2023-06-14  8:08   ` Riana Tauro
2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 5/6] drm/xe/hwmon: Expose hwmon energy attribute Badal Nilawar
2023-06-14 10:46   ` Riana Tauro
2023-06-06 12:50 ` [Intel-xe] [RFC PATCH 6/6] drm/xe/hwmon: Expose power1_max_interval Badal Nilawar
2023-06-12  7:18   ` Gupta, Anshuman
2023-06-06 12:54 ` [Intel-xe] ✓ CI.Build: success for Add HWMON support for DGFX Patchwork
2023-06-06 12:54 ` [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.