All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-xe] [RFC PATCH 0/1] drm/xe: Introduce function pointers for MMIO functions
@ 2023-06-02 14:25 Francois Dugast
  2023-06-02 14:25 ` [Intel-xe] [RFC PATCH 1/1] " Francois Dugast
                   ` (8 more replies)
  0 siblings, 9 replies; 25+ messages in thread
From: Francois Dugast @ 2023-06-02 14:25 UTC (permalink / raw)
  To: intel-xe; +Cc: ofir1.bitton, ohadshar

This explores a possible code split between generic and device specific
functions. The minimal hardware abstraction layer is implemented with a
structure of function pointers, similarly to what is done in accel/habanalabs
and in drm/amd/amdgpu.

The objective is to ease the addition of new platforms by limiting the need to
modify the common code and centralizing specific code in separate functions.

It is a new look at the series below but focused on the particular case of some
MMIO functions required by Hanaba for simulation:
https://patchwork.freedesktop.org/series/114630

The inline xe_mmio_*() functions in xe_mmio.h are left for convenience and also
to avoid a massive search and replace with xe->mmio_funcs->*() while this RFC is
being discussed. This is the reason why struct xe_mmio_funcs is exposed in
xe_mmio.h for now.

A posssible improvement suggested by Ohad Sharabi is to replace the switch with
a table lookup after device probe, using an index carried by xe_device_desc.

Francois Dugast (1):
  drm/xe: Introduce function pointers for MMIO functions

 drivers/gpu/drm/xe/xe_device_types.h |  3 ++
 drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
 3 files changed, 99 insertions(+), 20 deletions(-)

-- 
2.34.1


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

* [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 [Intel-xe] [RFC PATCH 0/1] drm/xe: Introduce function pointers for MMIO functions Francois Dugast
@ 2023-06-02 14:25 ` Francois Dugast
  2023-06-06  8:03   ` [Intel-xe] [RFC, " Ohad Sharabi
                     ` (2 more replies)
  2023-06-02 14:27 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
                   ` (7 subsequent siblings)
  8 siblings, 3 replies; 25+ messages in thread
From: Francois Dugast @ 2023-06-02 14:25 UTC (permalink / raw)
  To: intel-xe; +Cc: ofir1.bitton, ohadshar

A local structure of function pointers is used as a minimal hardware
abstraction layer to prepare for platform independent MMIO calls.

Cc: Oded Gabbay <ogabbay@kernel.org>
Cc: Ofir Bitton <ofir1.bitton@intel.com>
Cc: Ohad Sharabi <ohadshar@intel.com>
Signed-off-by: Francois Dugast <francois.dugast@intel.com>
---
 drivers/gpu/drm/xe/xe_device_types.h |  3 ++
 drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
 3 files changed, 99 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 17b6b1cc5adb..3f8fd0d8129b 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -378,6 +378,9 @@ struct xe_device {
 	/** @d3cold_allowed: Indicates if d3cold is a valid device state */
 	bool d3cold_allowed;
 
+	/** @mmio_funcs: function pointers for MMIO related functions */
+	const struct xe_mmio_funcs *mmio_funcs;
+
 	/* private: */
 
 #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
index 475b14fe4356..f3d08676a77a 100644
--- a/drivers/gpu/drm/xe/xe_mmio.c
+++ b/drivers/gpu/drm/xe/xe_mmio.c
@@ -25,6 +25,62 @@
 
 #define BAR_SIZE_SHIFT 20
 
+static void xe_mmio_write32_device(struct xe_gt *gt,
+				   struct xe_reg reg, u32 val);
+static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
+static void xe_mmio_write64_device(struct xe_gt *gt,
+				   struct xe_reg reg, u64 val);
+static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
+
+static const struct xe_mmio_funcs xe_mmio_funcs_device = {
+	.write32 = xe_mmio_write32_device,
+	.read32 = xe_mmio_read32_device,
+	.write64 = xe_mmio_write64_device,
+	.read64 = xe_mmio_read64_device,
+};
+
+static inline void xe_mmio_write32_device(struct xe_gt *gt,
+				   struct xe_reg reg, u32 val)
+{
+	struct xe_tile *tile = gt_to_tile(gt);
+
+	if (reg.addr < gt->mmio.adj_limit)
+		reg.addr += gt->mmio.adj_offset;
+
+	writel(val, tile->mmio.regs + reg.addr);
+}
+
+static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
+{
+	struct xe_tile *tile = gt_to_tile(gt);
+
+	if (reg.addr < gt->mmio.adj_limit)
+		reg.addr += gt->mmio.adj_offset;
+
+	return readl(tile->mmio.regs + reg.addr);
+}
+
+static inline void xe_mmio_write64_device(struct xe_gt *gt,
+				   struct xe_reg reg, u64 val)
+{
+	struct xe_tile *tile = gt_to_tile(gt);
+
+	if (reg.addr < gt->mmio.adj_limit)
+		reg.addr += gt->mmio.adj_offset;
+
+	writeq(val, tile->mmio.regs + reg.addr);
+}
+
+static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
+{
+	struct xe_tile *tile = gt_to_tile(gt);
+
+	if (reg.addr < gt->mmio.adj_limit)
+		reg.addr += gt->mmio.adj_offset;
+
+	return readq(tile->mmio.regs + reg.addr);
+}
+
 static int xe_set_dma_info(struct xe_device *xe)
 {
 	unsigned int mask_size = xe->info.dma_mask_size;
@@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
 		iounmap(xe->mem.vram.mapping);
 }
 
+static void xe_mmio_set_funcs(struct xe_device *xe)
+{
+	/* For now all platforms use the set of MMIO functions for a
+	 * physical device.
+	 */
+	switch (xe->info.platform) {
+	case XE_TIGERLAKE:
+	case XE_ROCKETLAKE:
+	case XE_ALDERLAKE_S:
+	case XE_ALDERLAKE_P:
+	case XE_ALDERLAKE_N:
+	case XE_DG1:
+	case XE_DG2:
+	case XE_PVC:
+	case XE_METEORLAKE:
+		xe->mmio_funcs = &xe_mmio_funcs_device;
+		break;
+	default:
+		DRM_ERROR("Unsupported platform\n");
+		break;
+	}
+}
+
 int xe_mmio_init(struct xe_device *xe)
 {
 	struct xe_tile *root_tile = xe_device_get_root_tile(xe);
@@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
 	const int mmio_bar = 0;
 	int err;
 
+	xe_mmio_set_funcs(xe);
+
 	/*
 	 * Map the first 16MB of th BAR, which includes the registers (0-4MB),
 	 * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
index 3c547d78afba..80ce9de7aac4 100644
--- a/drivers/gpu/drm/xe/xe_mmio.h
+++ b/drivers/gpu/drm/xe/xe_mmio.h
@@ -19,6 +19,13 @@ struct xe_device;
 
 #define GEN12_LMEM_BAR		2
 
+struct xe_mmio_funcs {
+	u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
+	u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
+	void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
+	void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
+};
+
 int xe_mmio_init(struct xe_device *xe);
 
 static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
@@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
 static inline void xe_mmio_write32(struct xe_gt *gt,
 				   struct xe_reg reg, u32 val)
 {
-	struct xe_tile *tile = gt_to_tile(gt);
-
-	if (reg.addr < gt->mmio.adj_limit)
-		reg.addr += gt->mmio.adj_offset;
+	struct xe_device *xe = gt_to_xe(gt);
 
-	writel(val, tile->mmio.regs + reg.addr);
+	xe->mmio_funcs->write32(gt, reg, val);
 }
 
 static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
 {
-	struct xe_tile *tile = gt_to_tile(gt);
-
-	if (reg.addr < gt->mmio.adj_limit)
-		reg.addr += gt->mmio.adj_offset;
+	struct xe_device *xe = gt_to_xe(gt);
 
-	return readl(tile->mmio.regs + reg.addr);
+	return xe->mmio_funcs->read32(gt, reg);
 }
 
 static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
@@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
 static inline void xe_mmio_write64(struct xe_gt *gt,
 				   struct xe_reg reg, u64 val)
 {
-	struct xe_tile *tile = gt_to_tile(gt);
-
-	if (reg.addr < gt->mmio.adj_limit)
-		reg.addr += gt->mmio.adj_offset;
+	struct xe_device *xe = gt_to_xe(gt);
 
-	writeq(val, tile->mmio.regs + reg.addr);
+	xe->mmio_funcs->write64(gt, reg, val);
 }
 
 static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
 {
-	struct xe_tile *tile = gt_to_tile(gt);
-
-	if (reg.addr < gt->mmio.adj_limit)
-		reg.addr += gt->mmio.adj_offset;
+	struct xe_device *xe = gt_to_xe(gt);
 
-	return readq(tile->mmio.regs + reg.addr);
+	return xe->mmio_funcs->read64(gt, reg);
 }
 
 static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
-- 
2.34.1


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

* [Intel-xe] ✓ CI.Patch_applied: success for drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 [Intel-xe] [RFC PATCH 0/1] drm/xe: Introduce function pointers for MMIO functions Francois Dugast
  2023-06-02 14:25 ` [Intel-xe] [RFC PATCH 1/1] " Francois Dugast
@ 2023-06-02 14:27 ` Patchwork
  2023-06-02 14:27 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2023-06-02 14:27 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Introduce function pointers for MMIO functions
URL   : https://patchwork.freedesktop.org/series/118783/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-xe-next' with base: ===
Base commit: 9f49c413b drm/xe: Add kerneldoc description of multi-tile devices
=== git am output follows ===
Applying: drm/xe: Introduce function pointers for MMIO functions



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

* [Intel-xe] ✗ CI.checkpatch: warning for drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 [Intel-xe] [RFC PATCH 0/1] drm/xe: Introduce function pointers for MMIO functions Francois Dugast
  2023-06-02 14:25 ` [Intel-xe] [RFC PATCH 1/1] " Francois Dugast
  2023-06-02 14:27 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
@ 2023-06-02 14:27 ` Patchwork
  2023-06-02 14:29 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2023-06-02 14:27 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Introduce function pointers for MMIO functions
URL   : https://patchwork.freedesktop.org/series/118783/
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 ed3d084d45e2ea0d406c3bb09c1e10e450afc816
Author: Francois Dugast <francois.dugast@intel.com>
Date:   Fri Jun 2 14:25:01 2023 +0000

    drm/xe: Introduce function pointers for MMIO functions
    
    A local structure of function pointers is used as a minimal hardware
    abstraction layer to prepare for platform independent MMIO calls.
    
    Cc: Oded Gabbay <ogabbay@kernel.org>
    Cc: Ofir Bitton <ofir1.bitton@intel.com>
    Cc: Ohad Sharabi <ohadshar@intel.com>
    Signed-off-by: Francois Dugast <francois.dugast@intel.com>
+ /mt/dim checkpatch 9f49c413b187c00f223eaf1e8dbe2c1a97c9954b drm-intel
ed3d084d4 drm/xe: Introduce function pointers for MMIO functions
-:51: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#51: FILE: drivers/gpu/drm/xe/xe_mmio.c:43:
+static inline void xe_mmio_write32_device(struct xe_gt *gt,
+				   struct xe_reg reg, u32 val)

-:72: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#72: FILE: drivers/gpu/drm/xe/xe_mmio.c:64:
+static inline void xe_mmio_write64_device(struct xe_gt *gt,
+				   struct xe_reg reg, u64 val)

total: 0 errors, 0 warnings, 2 checks, 173 lines checked



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

* [Intel-xe] ✓ CI.KUnit: success for drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 [Intel-xe] [RFC PATCH 0/1] drm/xe: Introduce function pointers for MMIO functions Francois Dugast
                   ` (2 preceding siblings ...)
  2023-06-02 14:27 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
@ 2023-06-02 14:29 ` Patchwork
  2023-06-02 14:32 ` [Intel-xe] ✓ CI.Build: " Patchwork
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2023-06-02 14:29 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Introduce function pointers for MMIO functions
URL   : https://patchwork.freedesktop.org/series/118783/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
stty: 'standard input': Inappropriate ioctl for device
[14:27:56] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:28:00] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
[14:28:22] Starting KUnit Kernel (1/1)...
[14:28:22] ============================================================
[14:28:22] ==================== xe_bo (2 subtests) ====================
[14:28:22] [SKIPPED] xe_ccs_migrate_kunit
[14:28:22] [SKIPPED] xe_bo_evict_kunit
[14:28:22] ===================== [SKIPPED] xe_bo ======================
[14:28:22] ================== xe_dma_buf (1 subtest) ==================
[14:28:22] [SKIPPED] xe_dma_buf_kunit
[14:28:22] =================== [SKIPPED] xe_dma_buf ===================
[14:28:22] ================== xe_migrate (1 subtest) ==================
[14:28:22] [SKIPPED] xe_migrate_sanity_kunit
[14:28:22] =================== [SKIPPED] xe_migrate ===================
[14:28:22] =================== xe_pci (2 subtests) ====================
[14:28:22] [PASSED] xe_gmdid_graphics_ip
[14:28:22] [PASSED] xe_gmdid_media_ip
[14:28:22] ===================== [PASSED] xe_pci ======================
[14:28:22] ==================== xe_rtp (1 subtest) ====================
[14:28:22] ================== xe_rtp_process_tests  ===================
[14:28:22] [PASSED] coalesce-same-reg
[14:28:22] [PASSED] no-match-no-add
[14:28:22] [PASSED] no-match-no-add-multiple-rules
[14:28:22] [PASSED] two-regs-two-entries
[14:28:22] [PASSED] clr-one-set-other
[14:28:22] [PASSED] set-field
[14:28:22] [PASSED] conflict-duplicate
[14:28:22] [PASSED] conflict-not-disjoint
[14:28:22] [PASSED] conflict-reg-type
[14:28:22] ============== [PASSED] xe_rtp_process_tests ===============
[14:28:22] ===================== [PASSED] xe_rtp ======================
[14:28:22] ==================== xe_wa (1 subtest) =====================
[14:28:22] ======================== xe_wa_gt  =========================
[14:28:22] [PASSED] TIGERLAKE (B0)
[14:28:22] [PASSED] DG1 (A0)
[14:28:22] [PASSED] DG1 (B0)
[14:28:22] [PASSED] ALDERLAKE_S (A0)
[14:28:22] [PASSED] ALDERLAKE_S (B0)
[14:28:22] [PASSED] ALDERLAKE_S (C0)
[14:28:22] [PASSED] ALDERLAKE_S (D0)
[14:28:22] [PASSED] DG2_G10 (A0)
[14:28:22] [PASSED] DG2_G10 (A1)
[14:28:22] [PASSED] DG2_G10 (B0)
[14:28:22] [PASSED] DG2_G10 (C0)
[14:28:22] [PASSED] DG2_G11 (A0)
[14:28:22] [PASSED] DG2_G11 (B0)
[14:28:22] [PASSED] DG2_G11 (B1)
[14:28:22] [PASSED] DG2_G12 (A0)
[14:28:22] [PASSED] DG2_G12 (A1)
[14:28:22] [PASSED] PVC (B0)
[14:28:22] [PASSED] PVC (B1)
[14:28:22] [PASSED] PVC (C0)
[14:28:22] ==================== [PASSED] xe_wa_gt =====================
[14:28:22] ====================== [PASSED] xe_wa ======================
[14:28:22] ============================================================
[14:28:22] Testing complete. Ran 34 tests: passed: 30, skipped: 4
[14:28:22] Elapsed time: 26.079s total, 4.171s configuring, 21.789s building, 0.098s running

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

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



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

* [Intel-xe] ✓ CI.Build: success for drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 [Intel-xe] [RFC PATCH 0/1] drm/xe: Introduce function pointers for MMIO functions Francois Dugast
                   ` (3 preceding siblings ...)
  2023-06-02 14:29 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
@ 2023-06-02 14:32 ` Patchwork
  2023-06-02 14:33 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2023-06-02 14:32 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

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



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

* [Intel-xe] ✓ CI.Hooks: success for drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 [Intel-xe] [RFC PATCH 0/1] drm/xe: Introduce function pointers for MMIO functions Francois Dugast
                   ` (4 preceding siblings ...)
  2023-06-02 14:32 ` [Intel-xe] ✓ CI.Build: " Patchwork
@ 2023-06-02 14:33 ` Patchwork
  2023-06-02 14:34 ` [Intel-xe] ✓ CI.checksparse: " Patchwork
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2023-06-02 14:33 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Introduce function pointers for MMIO functions
URL   : https://patchwork.freedesktop.org/series/118783/
State : success

== Summary ==

run-parts: executing /workspace/ci/hooks/00-showenv
/workspace
+ pwd
+ ls -la
+ uname -a
total 484
drwxrwxr-x 10 1003 1003   4096 Jun  2 14:33 .
drwxr-xr-x  1 root root   4096 Jun  2 14:33 ..
-rw-rw-r--  1 1003 1003 396889 Jun  2 14:32 build.log
-rw-rw-r--  1 1003 1003   1514 Jun  2 14:27 checkpatch.log
drwxrwxr-x  5 1003 1003   4096 Jun  2 14:26 ci
drwxrwxr-x 10 1003 1003   4096 Jun  2 14:26 docker
drwxrwxr-x  8 1003 1003   4096 Jun  2 14:26 .git
-rw-rw-r--  1 1003 1003    241 Jun  2 14:27 git_apply.log
drwxrwxr-x  3 1003 1003   4096 Jun  2 14:26 .github
-rw-rw-r--  1 1003 1003    233 Jun  2 14:26 .groovylintrc.json
-rw-rw-r--  1 1003 1003     78 Jun  2 14:33 hooks.log
drwxrwxr-x 31 1003 1003   4096 Jun  2 14:32 kernel
-rw-rw-r--  1 1003 1003   6676 Jun  2 14:27 kernel.mbox
-rw-rw-r--  1 1003 1003  25980 Jun  2 14:29 kunit.log
drwxrwxr-x 39 1003 1003   4096 Jun  2 14:26 pipelines
-rw-rw-r--  1 1003 1003    793 Jun  2 14:26 README.adoc
drwxrwxr-x  3 1003 1003   4096 Jun  2 14:26 scripts
drwxrwxr-x  2 1003 1003   4096 Jun  2 14:26 .vscode
Linux ef88fd0c0476 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
ed3d084d4 drm/xe: Introduce function pointers for MMIO functions
9f49c413b drm/xe: Add kerneldoc description of multi-tile devices
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/orc_gen.o
  CC      /workspace/kernel/build64/tools/objtool/objtool.o
  CC      /workspace/kernel/build64/tools/objtool/orc_dump.o
  CC      /workspace/kernel/build64/tools/objtool/libstring.o
  CC      /workspace/kernel/build64/tools/objtool/libctype.o
  CC      /workspace/kernel/build64/tools/objtool/str_error_r.o
  CC      /workspace/kernel/build64/tools/objtool/librbtree.o
  CC      /workspace/kernel/build64/tools/objtool/arch/x86/special.o
  CC      /workspace/kernel/build64/tools/objtool/arch/x86/decode.o
  LD      /workspace/kernel/build64/tools/objtool/arch/x86/objtool-in.o
  LD      /workspace/kernel/build64/tools/objtool/objtool-in.o
  LINK    /workspace/kernel/build64/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64'
++ nproc
+ make -j48 O=/workspace/kernel/build64 M=drivers/gpu/drm/xe W=1
make[1]: Entering directory '/workspace/kernel/build64'
  CC [M]  drivers/gpu/drm/xe/xe_bb.o
  CC [M]  drivers/gpu/drm/xe/xe_bo.o
  CC [M]  drivers/gpu/drm/xe/xe_bo_evict.o
  CC [M]  drivers/gpu/drm/xe/xe_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_devcoredump.o
  CC [M]  drivers/gpu/drm/xe/xe_device.o
  CC [M]  drivers/gpu/drm/xe/xe_dma_buf.o
  CC [M]  drivers/gpu/drm/xe/xe_engine.o
  CC [M]  drivers/gpu/drm/xe/xe_exec.o
  CC [M]  drivers/gpu/drm/xe/xe_execlist.o
  CC [M]  drivers/gpu/drm/xe/xe_force_wake.o
  CC [M]  drivers/gpu/drm/xe/xe_ggtt.o
  CC [M]  drivers/gpu/drm/xe/xe_gt.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_clock.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_mcr.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_pagefault.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  CC [M]  drivers/gpu/drm/xe/xe_guc_ads.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ct.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_hwconfig.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_log.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_pc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_submit.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_huc.o
  CC [M]  drivers/gpu/drm/xe/xe_huc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_irq.o
  CC [M]  drivers/gpu/drm/xe/xe_lrc.o
  CC [M]  drivers/gpu/drm/xe/xe_migrate.o
  CC [M]  drivers/gpu/drm/xe/xe_mmio.o
  CC [M]  drivers/gpu/drm/xe/xe_mocs.o
  CC [M]  drivers/gpu/drm/xe/xe_module.o
  CC [M]  drivers/gpu/drm/xe/xe_pat.o
  CC [M]  drivers/gpu/drm/xe/xe_pci.o
  CC [M]  drivers/gpu/drm/xe/xe_pcode.o
  CC [M]  drivers/gpu/drm/xe/xe_pm.o
  CC [M]  drivers/gpu/drm/xe/xe_preempt_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_pt.o
  CC [M]  drivers/gpu/drm/xe/xe_pt_walk.o
  CC [M]  drivers/gpu/drm/xe/xe_query.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_sr.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_whitelist.o
  CC [M]  drivers/gpu/drm/xe/xe_rtp.o
  CC [M]  drivers/gpu/drm/xe/xe_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
  HDRTEST drivers/gpu/drm/xe/abi/guc_klvs_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_errors_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_mmio_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_bo_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_ctb_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_messages_abi.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_reg_defs.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_guc_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_gt_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_regs.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_gpu_commands.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_pci_test.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_lrc_layout.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
  CC [M]  drivers/gpu/drm/xe/tests/xe_rtp_test.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_wa_test.o
  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.h
  HDRTEST drivers/gpu/drm/xe/xe_engine_types.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
  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/xe/xe_guc_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_engine_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_fwif.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/xe/xe_guc_pc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_submit.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_submit_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_huc.h
  HDRTEST drivers/gpu/drm/xe/xe_huc_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_huc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_engine.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_engine_types.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_fence.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_fence_types.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/xe/xe_map.h
  HDRTEST drivers/gpu/drm/xe/xe_migrate.h
  HDRTEST drivers/gpu/drm/xe/xe_migrate_doc.h
  HDRTEST drivers/gpu/drm/xe/xe_mmio.h
  HDRTEST drivers/gpu/drm/xe/xe_mocs.h
  HDRTEST drivers/gpu/drm/xe/xe_module.h
  HDRTEST drivers/gpu/drm/xe/xe_pat.h
  HDRTEST drivers/gpu/drm/xe/xe_pci.h
  HDRTEST drivers/gpu/drm/xe/xe_pci_types.h
  HDRTEST drivers/gpu/drm/xe/xe_pcode.h
  HDRTEST drivers/gpu/drm/xe/xe_pcode_api.h
  HDRTEST drivers/gpu/drm/xe/xe_platform_types.h
  HDRTEST drivers/gpu/drm/xe/xe_pm.h
  HDRTEST drivers/gpu/drm/xe/xe_preempt_fence.h
  HDRTEST drivers/gpu/drm/xe/xe_preempt_fence_types.h
  HDRTEST drivers/gpu/drm/xe/xe_pt.h
  HDRTEST drivers/gpu/drm/xe/xe_pt_types.h
  HDRTEST drivers/gpu/drm/xe/xe_pt_walk.h
  HDRTEST drivers/gpu/drm/xe/xe_query.h
  HDRTEST drivers/gpu/drm/xe/xe_reg_sr.h
  HDRTEST drivers/gpu/drm/xe/xe_reg_sr_types.h
  HDRTEST drivers/gpu/drm/xe/xe_reg_whitelist.h
  HDRTEST drivers/gpu/drm/xe/xe_res_cursor.h
  HDRTEST drivers/gpu/drm/xe/xe_ring_ops.h
  HDRTEST drivers/gpu/drm/xe/xe_ring_ops_types.h
  HDRTEST drivers/gpu/drm/xe/xe_rtp.h
  HDRTEST drivers/gpu/drm/xe/xe_rtp_types.h
  HDRTEST drivers/gpu/drm/xe/xe_sa.h
  HDRTEST drivers/gpu/drm/xe/xe_sa_types.h
  HDRTEST drivers/gpu/drm/xe/xe_sched_job.h
  HDRTEST drivers/gpu/drm/xe/xe_sched_job_types.h
  HDRTEST drivers/gpu/drm/xe/xe_step.h
  HDRTEST drivers/gpu/drm/xe/xe_step_types.h
  HDRTEST drivers/gpu/drm/xe/xe_sync.h
  HDRTEST drivers/gpu/drm/xe/xe_sync_types.h
  HDRTEST drivers/gpu/drm/xe/xe_tile.h
  HDRTEST drivers/gpu/drm/xe/xe_trace.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_stolen_mgr.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_sys_mgr.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
  HDRTEST drivers/gpu/drm/xe/xe_tuning.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_uc.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_fw.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_fw_abi.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_fw_types.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_vm.h
  HDRTEST drivers/gpu/drm/xe/xe_vm_doc.h
  HDRTEST drivers/gpu/drm/xe/xe_vm_madvise.h
  HDRTEST drivers/gpu/drm/xe/xe_vm_types.h
  HDRTEST drivers/gpu/drm/xe/xe_wa.h
  HDRTEST drivers/gpu/drm/xe/xe_wait_user_fence.h
  HDRTEST drivers/gpu/drm/xe/xe_wopcm.h
  HDRTEST drivers/gpu/drm/xe/xe_wopcm_types.h
  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_guc.o
  CC [M]  drivers/gpu/drm/xe/xe_wa.o
  LD [M]  drivers/gpu/drm/xe/xe.o
  MODPOST drivers/gpu/drm/xe/Module.symvers
  CC [M]  drivers/gpu/drm/xe/xe.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_bo_test.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_pci_test.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_rtp_test.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_wa_test.mod.o
  LD [M]  drivers/gpu/drm/xe/tests/xe_rtp_test.ko
  LD [M]  drivers/gpu/drm/xe/xe.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_bo_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_pci_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_wa_test.ko
make[1]: Leaving directory '/workspace/kernel/build64'
+ cleanup
+ '[' 1 -eq 1 ']'
+ ./scripts/config --file /workspace/kernel/build64/.config --enable CONFIG_DRM_XE_DISPLAY
run-parts: executing /workspace/ci/hooks/20-kernel-doc
+ SRC_DIR=/workspace/kernel
+ cd /workspace/kernel
+ find drivers/gpu/drm/xe/ -name '*.[ch]' -not -path 'drivers/gpu/drm/xe/display/*'
+ xargs ./scripts/kernel-doc -Werror -none
All hooks done



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

* [Intel-xe] ✓ CI.checksparse: success for drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 [Intel-xe] [RFC PATCH 0/1] drm/xe: Introduce function pointers for MMIO functions Francois Dugast
                   ` (5 preceding siblings ...)
  2023-06-02 14:33 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
@ 2023-06-02 14:34 ` Patchwork
  2023-06-02 15:00 ` [Intel-xe] ✗ CI.BAT: failure " Patchwork
  2023-06-06  9:48 ` [Intel-xe] ○ CI.BAT: info " Patchwork
  8 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2023-06-02 14:34 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Introduce function pointers for MMIO functions
URL   : https://patchwork.freedesktop.org/series/118783/
State : success

== Summary ==

+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 9f49c413b187c00f223eaf1e8dbe2c1a97c9954b
Sparse version: 0.6.1 (Ubuntu: 0.6.1-2build1)
Fast mode used, each commit won't be checked separately.
Okay!

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



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

* [Intel-xe] ✗ CI.BAT: failure for drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 [Intel-xe] [RFC PATCH 0/1] drm/xe: Introduce function pointers for MMIO functions Francois Dugast
                   ` (6 preceding siblings ...)
  2023-06-02 14:34 ` [Intel-xe] ✓ CI.checksparse: " Patchwork
@ 2023-06-02 15:00 ` Patchwork
  2023-06-06  9:48 ` [Intel-xe] ○ CI.BAT: info " Patchwork
  8 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2023-06-02 15:00 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

[-- Attachment #1: Type: text/plain, Size: 258 bytes --]

== Series Details ==

Series: drm/xe: Introduce function pointers for MMIO functions
URL   : https://patchwork.freedesktop.org/series/118783/
State : failure

== Summary ==

Participating hosts:
bat-atsm-2
bat-dg2-oem2
bat-adlp-7
Missing hosts results[0]:



[-- Attachment #2: Type: text/html, Size: 751 bytes --]

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

* Re: [Intel-xe] [RFC, 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 ` [Intel-xe] [RFC PATCH 1/1] " Francois Dugast
@ 2023-06-06  8:03   ` Ohad Sharabi
  2023-06-06 10:09   ` Ohad Sharabi
  2023-06-08 17:35   ` [Intel-xe] [RFC PATCH " Lucas De Marchi
  2 siblings, 0 replies; 25+ messages in thread
From: Ohad Sharabi @ 2023-06-06  8:03 UTC (permalink / raw)
  To: Francois Dugast, intel-xe; +Cc: Bitton, Ofir1, ohadshar

On 02/06/2023 17:25, Francois Dugast wrote:
> A local structure of function pointers is used as a minimal hardware
> abstraction layer to prepare for platform independent MMIO calls.
>
> Cc: Oded Gabbay <ogabbay@kernel.org>
> Cc: Ofir Bitton <ofir1.bitton@intel.com>
> Cc: Ohad Sharabi <ohadshar@intel.com>
> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> ---
>   drivers/gpu/drm/xe/xe_device_types.h |  3 ++
>   drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
>   drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
>   3 files changed, 99 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index 17b6b1cc5adb..3f8fd0d8129b 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -378,6 +378,9 @@ struct xe_device {
>   	/** @d3cold_allowed: Indicates if d3cold is a valid device state */
>   	bool d3cold_allowed;
>   
> +	/** @mmio_funcs: function pointers for MMIO related functions */
> +	const struct xe_mmio_funcs *mmio_funcs;
Do we really want to divide the FP structs to such fine-grained resolution?

Can't the MMIO be grouped as part of GT functions which can later host 
other FPs as well?

Or do we think that all other GT funcs will, probably, be "common to 
more components" and so define a special struct for it?

> +
>   	/* private: */
>   
>   #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> index 475b14fe4356..f3d08676a77a 100644
> --- a/drivers/gpu/drm/xe/xe_mmio.c
> +++ b/drivers/gpu/drm/xe/xe_mmio.c
> @@ -25,6 +25,62 @@
>   
>   #define BAR_SIZE_SHIFT 20
>   
> +static void xe_mmio_write32_device(struct xe_gt *gt,
> +				   struct xe_reg reg, u32 val);
> +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> +static void xe_mmio_write64_device(struct xe_gt *gt,
> +				   struct xe_reg reg, u64 val);
> +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> +
> +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> +	.write32 = xe_mmio_write32_device,
> +	.read32 = xe_mmio_read32_device,
> +	.write64 = xe_mmio_write64_device,
> +	.read64 = xe_mmio_read64_device,
> +};
> +
> +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> +				   struct xe_reg reg, u32 val)
> +{
> +	struct xe_tile *tile = gt_to_tile(gt);
> +
> +	if (reg.addr < gt->mmio.adj_limit)
> +		reg.addr += gt->mmio.adj_offset;
> +
> +	writel(val, tile->mmio.regs + reg.addr);
> +}
> +
> +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> +{
> +	struct xe_tile *tile = gt_to_tile(gt);
> +
> +	if (reg.addr < gt->mmio.adj_limit)
> +		reg.addr += gt->mmio.adj_offset;
> +
> +	return readl(tile->mmio.regs + reg.addr);
> +}
> +
> +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> +				   struct xe_reg reg, u64 val)
> +{
> +	struct xe_tile *tile = gt_to_tile(gt);
> +
> +	if (reg.addr < gt->mmio.adj_limit)
> +		reg.addr += gt->mmio.adj_offset;
> +
> +	writeq(val, tile->mmio.regs + reg.addr);
> +}
> +
> +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> +{
> +	struct xe_tile *tile = gt_to_tile(gt);
> +
> +	if (reg.addr < gt->mmio.adj_limit)
> +		reg.addr += gt->mmio.adj_offset;
> +
> +	return readq(tile->mmio.regs + reg.addr);
> +}
> +
>   static int xe_set_dma_info(struct xe_device *xe)
>   {
>   	unsigned int mask_size = xe->info.dma_mask_size;
> @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
>   		iounmap(xe->mem.vram.mapping);
>   }
>   
> +static void xe_mmio_set_funcs(struct xe_device *xe)
Wouldn't we like to fail the MMIO init on an unsupported platform?
> +{
> +	/* For now all platforms use the set of MMIO functions for a
> +	 * physical device.
> +	 */
> +	switch (xe->info.platform) {
> +	case XE_TIGERLAKE:
> +	case XE_ROCKETLAKE:
> +	case XE_ALDERLAKE_S:
> +	case XE_ALDERLAKE_P:
> +	case XE_ALDERLAKE_N:
> +	case XE_DG1:
> +	case XE_DG2:
> +	case XE_PVC:
> +	case XE_METEORLAKE:
> +		xe->mmio_funcs = &xe_mmio_funcs_device;
> +		break;
> +	default:
> +		DRM_ERROR("Unsupported platform\n");
> +		break;
> +	}
> +}
> +
>   int xe_mmio_init(struct xe_device *xe)
>   {
>   	struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
>   	const int mmio_bar = 0;
>   	int err;
>   
> +	xe_mmio_set_funcs(xe);
> +
>   	/*
>   	 * Map the first 16MB of th BAR, which includes the registers (0-4MB),
>   	 * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> index 3c547d78afba..80ce9de7aac4 100644
> --- a/drivers/gpu/drm/xe/xe_mmio.h
> +++ b/drivers/gpu/drm/xe/xe_mmio.h
> @@ -19,6 +19,13 @@ struct xe_device;
>   
>   #define GEN12_LMEM_BAR		2
>   
> +struct xe_mmio_funcs {
> +	u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> +	u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> +	void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> +	void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> +};
> +
>   int xe_mmio_init(struct xe_device *xe);
>   
>   static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
>   static inline void xe_mmio_write32(struct xe_gt *gt,
>   				   struct xe_reg reg, u32 val)
>   {
> -	struct xe_tile *tile = gt_to_tile(gt);
> -
> -	if (reg.addr < gt->mmio.adj_limit)
> -		reg.addr += gt->mmio.adj_offset;
> +	struct xe_device *xe = gt_to_xe(gt);
>   
> -	writel(val, tile->mmio.regs + reg.addr);
> +	xe->mmio_funcs->write32(gt, reg, val);
>   }
>   
>   static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
>   {
> -	struct xe_tile *tile = gt_to_tile(gt);
> -
> -	if (reg.addr < gt->mmio.adj_limit)
> -		reg.addr += gt->mmio.adj_offset;
> +	struct xe_device *xe = gt_to_xe(gt);
>   
> -	return readl(tile->mmio.regs + reg.addr);
> +	return xe->mmio_funcs->read32(gt, reg);
>   }
>   
>   static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
>   static inline void xe_mmio_write64(struct xe_gt *gt,
>   				   struct xe_reg reg, u64 val)
>   {
> -	struct xe_tile *tile = gt_to_tile(gt);
> -
> -	if (reg.addr < gt->mmio.adj_limit)
> -		reg.addr += gt->mmio.adj_offset;
> +	struct xe_device *xe = gt_to_xe(gt);
>   
> -	writeq(val, tile->mmio.regs + reg.addr);
> +	xe->mmio_funcs->write64(gt, reg, val);
>   }
>   
>   static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
>   {
> -	struct xe_tile *tile = gt_to_tile(gt);
> -
> -	if (reg.addr < gt->mmio.adj_limit)
> -		reg.addr += gt->mmio.adj_offset;
> +	struct xe_device *xe = gt_to_xe(gt);
>   
> -	return readq(tile->mmio.regs + reg.addr);
> +	return xe->mmio_funcs->read64(gt, reg);
>   }
>   
>   static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
>
>
This approach should work for us- thanks for the effort.

I do think that if loading this data from the descriptor is acceptable 
let's do it soon to avoid collection of all "switch-cases" from the code 
while other FPs are being added (really not necessary at this phase- we 
want this patch merged soon).

Thanks,

Ohad


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

* [Intel-xe] ○ CI.BAT: info for drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 [Intel-xe] [RFC PATCH 0/1] drm/xe: Introduce function pointers for MMIO functions Francois Dugast
                   ` (7 preceding siblings ...)
  2023-06-02 15:00 ` [Intel-xe] ✗ CI.BAT: failure " Patchwork
@ 2023-06-06  9:48 ` Patchwork
  8 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2023-06-06  9:48 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

[-- Attachment #1: Type: text/plain, Size: 339 bytes --]

== Series Details ==

Series: drm/xe: Introduce function pointers for MMIO functions
URL   : https://patchwork.freedesktop.org/series/118783/
State : info

== Summary ==

Participating hosts:
bat-atsm-2
bat-dg2-oem2
Missing hosts results[0]:
Results: [xe-pw-118783v1](https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-118783v1/index.html)



[-- Attachment #2: Type: text/html, Size: 843 bytes --]

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

* Re: [Intel-xe] [RFC, 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 ` [Intel-xe] [RFC PATCH 1/1] " Francois Dugast
  2023-06-06  8:03   ` [Intel-xe] [RFC, " Ohad Sharabi
@ 2023-06-06 10:09   ` Ohad Sharabi
  2023-06-06 13:24     ` Francois Dugast
  2023-06-08 17:35   ` [Intel-xe] [RFC PATCH " Lucas De Marchi
  2 siblings, 1 reply; 25+ messages in thread
From: Ohad Sharabi @ 2023-06-06 10:09 UTC (permalink / raw)
  To: Francois Dugast, intel-xe; +Cc: Bitton, Ofir1, ohadshar

On 02/06/2023 17:25, Francois Dugast wrote:
> A local structure of function pointers is used as a minimal hardware
> abstraction layer to prepare for platform independent MMIO calls.
>
> Cc: Oded Gabbay <ogabbay@kernel.org>
> Cc: Ofir Bitton <ofir1.bitton@intel.com>
> Cc: Ohad Sharabi <ohadshar@intel.com>
> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> ---
>   drivers/gpu/drm/xe/xe_device_types.h |  3 ++
>   drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
>   drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
>   3 files changed, 99 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index 17b6b1cc5adb..3f8fd0d8129b 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -378,6 +378,9 @@ struct xe_device {
>   	/** @d3cold_allowed: Indicates if d3cold is a valid device state */
>   	bool d3cold_allowed;
>   
> +	/** @mmio_funcs: function pointers for MMIO related functions */
> +	const struct xe_mmio_funcs *mmio_funcs;
Do we really want to divide the FP structs to such fine-grained resolution?

Can't the MMIO be grouped as part of GT functions which can later host 
other FPs as well?

Or do we think that all other GT funcs will, probably, be "common to 
more components" and so define a special struct for it?

> +
>   	/* private: */
>   
>   #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> index 475b14fe4356..f3d08676a77a 100644
> --- a/drivers/gpu/drm/xe/xe_mmio.c
> +++ b/drivers/gpu/drm/xe/xe_mmio.c
> @@ -25,6 +25,62 @@
>   
>   #define BAR_SIZE_SHIFT 20
>   
> +static void xe_mmio_write32_device(struct xe_gt *gt,
> +				   struct xe_reg reg, u32 val);
> +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> +static void xe_mmio_write64_device(struct xe_gt *gt,
> +				   struct xe_reg reg, u64 val);
> +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> +
> +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> +	.write32 = xe_mmio_write32_device,
> +	.read32 = xe_mmio_read32_device,
> +	.write64 = xe_mmio_write64_device,
> +	.read64 = xe_mmio_read64_device,
> +};
> +
> +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> +				   struct xe_reg reg, u32 val)
> +{
> +	struct xe_tile *tile = gt_to_tile(gt);
> +
> +	if (reg.addr < gt->mmio.adj_limit)
> +		reg.addr += gt->mmio.adj_offset;
> +
> +	writel(val, tile->mmio.regs + reg.addr);
> +}
> +
> +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> +{
> +	struct xe_tile *tile = gt_to_tile(gt);
> +
> +	if (reg.addr < gt->mmio.adj_limit)
> +		reg.addr += gt->mmio.adj_offset;
> +
> +	return readl(tile->mmio.regs + reg.addr);
> +}
> +
> +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> +				   struct xe_reg reg, u64 val)
> +{
> +	struct xe_tile *tile = gt_to_tile(gt);
> +
> +	if (reg.addr < gt->mmio.adj_limit)
> +		reg.addr += gt->mmio.adj_offset;
> +
> +	writeq(val, tile->mmio.regs + reg.addr);
> +}
> +
> +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> +{
> +	struct xe_tile *tile = gt_to_tile(gt);
> +
> +	if (reg.addr < gt->mmio.adj_limit)
> +		reg.addr += gt->mmio.adj_offset;
> +
> +	return readq(tile->mmio.regs + reg.addr);
> +}
> +
>   static int xe_set_dma_info(struct xe_device *xe)
>   {
>   	unsigned int mask_size = xe->info.dma_mask_size;
> @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
>   		iounmap(xe->mem.vram.mapping);
>   }
>   
> +static void xe_mmio_set_funcs(struct xe_device *xe)
Wouldn't we like to fail the MMIO init on an unsupported platform?
> +{
> +	/* For now all platforms use the set of MMIO functions for a
> +	 * physical device.
> +	 */
> +	switch (xe->info.platform) {
> +	case XE_TIGERLAKE:
> +	case XE_ROCKETLAKE:
> +	case XE_ALDERLAKE_S:
> +	case XE_ALDERLAKE_P:
> +	case XE_ALDERLAKE_N:
> +	case XE_DG1:
> +	case XE_DG2:
> +	case XE_PVC:
> +	case XE_METEORLAKE:
> +		xe->mmio_funcs = &xe_mmio_funcs_device;
> +		break;
> +	default:
> +		DRM_ERROR("Unsupported platform\n");
> +		break;
> +	}
> +}
> +
>   int xe_mmio_init(struct xe_device *xe)
>   {
>   	struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
>   	const int mmio_bar = 0;
>   	int err;
>   
> +	xe_mmio_set_funcs(xe);
> +
>   	/*
>   	 * Map the first 16MB of th BAR, which includes the registers (0-4MB),
>   	 * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> index 3c547d78afba..80ce9de7aac4 100644
> --- a/drivers/gpu/drm/xe/xe_mmio.h
> +++ b/drivers/gpu/drm/xe/xe_mmio.h
> @@ -19,6 +19,13 @@ struct xe_device;
>   
>   #define GEN12_LMEM_BAR		2
>   
> +struct xe_mmio_funcs {
> +	u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> +	u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> +	void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> +	void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> +};
> +
>   int xe_mmio_init(struct xe_device *xe);
>   
>   static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
>   static inline void xe_mmio_write32(struct xe_gt *gt,
>   				   struct xe_reg reg, u32 val)
>   {
> -	struct xe_tile *tile = gt_to_tile(gt);
> -
> -	if (reg.addr < gt->mmio.adj_limit)
> -		reg.addr += gt->mmio.adj_offset;
> +	struct xe_device *xe = gt_to_xe(gt);
>   
> -	writel(val, tile->mmio.regs + reg.addr);
> +	xe->mmio_funcs->write32(gt, reg, val);
>   }
>   
>   static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
>   {
> -	struct xe_tile *tile = gt_to_tile(gt);
> -
> -	if (reg.addr < gt->mmio.adj_limit)
> -		reg.addr += gt->mmio.adj_offset;
> +	struct xe_device *xe = gt_to_xe(gt);
>   
> -	return readl(tile->mmio.regs + reg.addr);
> +	return xe->mmio_funcs->read32(gt, reg);
>   }
>   
>   static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
>   static inline void xe_mmio_write64(struct xe_gt *gt,
>   				   struct xe_reg reg, u64 val)
>   {
> -	struct xe_tile *tile = gt_to_tile(gt);
> -
> -	if (reg.addr < gt->mmio.adj_limit)
> -		reg.addr += gt->mmio.adj_offset;
> +	struct xe_device *xe = gt_to_xe(gt);
>   
> -	writeq(val, tile->mmio.regs + reg.addr);
> +	xe->mmio_funcs->write64(gt, reg, val);
>   }
>   
>   static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
>   {
> -	struct xe_tile *tile = gt_to_tile(gt);
> -
> -	if (reg.addr < gt->mmio.adj_limit)
> -		reg.addr += gt->mmio.adj_offset;
> +	struct xe_device *xe = gt_to_xe(gt);
>   
> -	return readq(tile->mmio.regs + reg.addr);
> +	return xe->mmio_funcs->read64(gt, reg);
>   }
>   
>   static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
>
>
This approach should work for us- thanks for the effort.

I do think that if loading this data from the descriptor is acceptable 
let's do it soon to avoid collection of all "switch-cases" from the code 
while other FPs are being added (really not necessary at this phase- we 
want this patch merged soon).

Thanks,

Ohad


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

* Re: [Intel-xe] [RFC, 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-06 10:09   ` Ohad Sharabi
@ 2023-06-06 13:24     ` Francois Dugast
  2023-06-08  6:54       ` Ohad Sharabi
  0 siblings, 1 reply; 25+ messages in thread
From: Francois Dugast @ 2023-06-06 13:24 UTC (permalink / raw)
  To: Ohad Sharabi; +Cc: Bitton, Ofir1, Sharabi, Ohad (Habana), intel-xe

Hi,

On Tue, Jun 06, 2023 at 12:09:34PM +0200, Ohad Sharabi wrote:
> On 02/06/2023 17:25, Francois Dugast wrote:
> > A local structure of function pointers is used as a minimal hardware
> > abstraction layer to prepare for platform independent MMIO calls.
> >
> > Cc: Oded Gabbay <ogabbay@kernel.org>
> > Cc: Ofir Bitton <ofir1.bitton@intel.com>
> > Cc: Ohad Sharabi <ohadshar@intel.com>
> > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > ---
> >   drivers/gpu/drm/xe/xe_device_types.h |  3 ++
> >   drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
> >   drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
> >   3 files changed, 99 insertions(+), 20 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> > index 17b6b1cc5adb..3f8fd0d8129b 100644
> > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > @@ -378,6 +378,9 @@ struct xe_device {
> >       /** @d3cold_allowed: Indicates if d3cold is a valid device state */
> >       bool d3cold_allowed;
> >
> > +     /** @mmio_funcs: function pointers for MMIO related functions */
> > +     const struct xe_mmio_funcs *mmio_funcs;
> Do we really want to divide the FP structs to such fine-grained resolution?
> 
> Can't the MMIO be grouped as part of GT functions which can later host
> other FPs as well?
> 
> Or do we think that all other GT funcs will, probably, be "common to
> more components" and so define a special struct for it?

Sure, it is possible to use broader FP structs which would contain more
functions. Actually, it was explored in the first revision of the original
series: https://patchwork.freedesktop.org/series/114630/#rev1

The concern is that we might not be able to correctly predict where future
platforms would require specific code, which means we could end up having
very large FP structs with dozens or hundreds of functions.

This is why in earlier discussions we leaned towards having multiple FP structs,
each local to a domain or to a .c file, like in this patch for MMIO.

> 
> > +
> >       /* private: */
> >
> >   #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> > diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> > index 475b14fe4356..f3d08676a77a 100644
> > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > @@ -25,6 +25,62 @@
> >
> >   #define BAR_SIZE_SHIFT 20
> >
> > +static void xe_mmio_write32_device(struct xe_gt *gt,
> > +                                struct xe_reg reg, u32 val);
> > +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> > +static void xe_mmio_write64_device(struct xe_gt *gt,
> > +                                struct xe_reg reg, u64 val);
> > +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> > +
> > +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> > +     .write32 = xe_mmio_write32_device,
> > +     .read32 = xe_mmio_read32_device,
> > +     .write64 = xe_mmio_write64_device,
> > +     .read64 = xe_mmio_read64_device,
> > +};
> > +
> > +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> > +                                struct xe_reg reg, u32 val)
> > +{
> > +     struct xe_tile *tile = gt_to_tile(gt);
> > +
> > +     if (reg.addr < gt->mmio.adj_limit)
> > +             reg.addr += gt->mmio.adj_offset;
> > +
> > +     writel(val, tile->mmio.regs + reg.addr);
> > +}
> > +
> > +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> > +{
> > +     struct xe_tile *tile = gt_to_tile(gt);
> > +
> > +     if (reg.addr < gt->mmio.adj_limit)
> > +             reg.addr += gt->mmio.adj_offset;
> > +
> > +     return readl(tile->mmio.regs + reg.addr);
> > +}
> > +
> > +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> > +                                struct xe_reg reg, u64 val)
> > +{
> > +     struct xe_tile *tile = gt_to_tile(gt);
> > +
> > +     if (reg.addr < gt->mmio.adj_limit)
> > +             reg.addr += gt->mmio.adj_offset;
> > +
> > +     writeq(val, tile->mmio.regs + reg.addr);
> > +}
> > +
> > +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> > +{
> > +     struct xe_tile *tile = gt_to_tile(gt);
> > +
> > +     if (reg.addr < gt->mmio.adj_limit)
> > +             reg.addr += gt->mmio.adj_offset;
> > +
> > +     return readq(tile->mmio.regs + reg.addr);
> > +}
> > +
> >   static int xe_set_dma_info(struct xe_device *xe)
> >   {
> >       unsigned int mask_size = xe->info.dma_mask_size;
> > @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
> >               iounmap(xe->mem.vram.mapping);
> >   }
> >
> > +static void xe_mmio_set_funcs(struct xe_device *xe)
> Wouldn't we like to fail the MMIO init on an unsupported platform?

Yes I will fix that.

> > +{
> > +     /* For now all platforms use the set of MMIO functions for a
> > +      * physical device.
> > +      */
> > +     switch (xe->info.platform) {
> > +     case XE_TIGERLAKE:
> > +     case XE_ROCKETLAKE:
> > +     case XE_ALDERLAKE_S:
> > +     case XE_ALDERLAKE_P:
> > +     case XE_ALDERLAKE_N:
> > +     case XE_DG1:
> > +     case XE_DG2:
> > +     case XE_PVC:
> > +     case XE_METEORLAKE:
> > +             xe->mmio_funcs = &xe_mmio_funcs_device;
> > +             break;
> > +     default:
> > +             DRM_ERROR("Unsupported platform\n");
> > +             break;
> > +     }
> > +}
> > +
> >   int xe_mmio_init(struct xe_device *xe)
> >   {
> >       struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> > @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
> >       const int mmio_bar = 0;
> >       int err;
> >
> > +     xe_mmio_set_funcs(xe);
> > +
> >       /*
> >        * Map the first 16MB of th BAR, which includes the registers (0-4MB),
> >        * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> > diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> > index 3c547d78afba..80ce9de7aac4 100644
> > --- a/drivers/gpu/drm/xe/xe_mmio.h
> > +++ b/drivers/gpu/drm/xe/xe_mmio.h
> > @@ -19,6 +19,13 @@ struct xe_device;
> >
> >   #define GEN12_LMEM_BAR              2
> >
> > +struct xe_mmio_funcs {
> > +     u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> > +     u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> > +     void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> > +     void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> > +};
> > +
> >   int xe_mmio_init(struct xe_device *xe);
> >
> >   static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> >   static inline void xe_mmio_write32(struct xe_gt *gt,
> >                                  struct xe_reg reg, u32 val)
> >   {
> > -     struct xe_tile *tile = gt_to_tile(gt);
> > -
> > -     if (reg.addr < gt->mmio.adj_limit)
> > -             reg.addr += gt->mmio.adj_offset;
> > +     struct xe_device *xe = gt_to_xe(gt);
> >
> > -     writel(val, tile->mmio.regs + reg.addr);
> > +     xe->mmio_funcs->write32(gt, reg, val);
> >   }
> >
> >   static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> >   {
> > -     struct xe_tile *tile = gt_to_tile(gt);
> > -
> > -     if (reg.addr < gt->mmio.adj_limit)
> > -             reg.addr += gt->mmio.adj_offset;
> > +     struct xe_device *xe = gt_to_xe(gt);
> >
> > -     return readl(tile->mmio.regs + reg.addr);
> > +     return xe->mmio_funcs->read32(gt, reg);
> >   }
> >
> >   static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> >   static inline void xe_mmio_write64(struct xe_gt *gt,
> >                                  struct xe_reg reg, u64 val)
> >   {
> > -     struct xe_tile *tile = gt_to_tile(gt);
> > -
> > -     if (reg.addr < gt->mmio.adj_limit)
> > -             reg.addr += gt->mmio.adj_offset;
> > +     struct xe_device *xe = gt_to_xe(gt);
> >
> > -     writeq(val, tile->mmio.regs + reg.addr);
> > +     xe->mmio_funcs->write64(gt, reg, val);
> >   }
> >
> >   static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
> >   {
> > -     struct xe_tile *tile = gt_to_tile(gt);
> > -
> > -     if (reg.addr < gt->mmio.adj_limit)
> > -             reg.addr += gt->mmio.adj_offset;
> > +     struct xe_device *xe = gt_to_xe(gt);
> >
> > -     return readq(tile->mmio.regs + reg.addr);
> > +     return xe->mmio_funcs->read64(gt, reg);
> >   }
> >
> >   static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
> >
> >
> This approach should work for us- thanks for the effort.
> 
> I do think that if loading this data from the descriptor is acceptable
> let's do it soon to avoid collection of all "switch-cases" from the code
> while other FPs are being added (really not necessary at this phase- we
> want this patch merged soon).
> 
> Thanks,
> 
> Ohad
> 

I think we should be able to add this in the same series, but first I would like
to get more feedback on this RFC before moving forward.

Thanks,
Francois

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

* Re: [Intel-xe] [RFC, 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-06 13:24     ` Francois Dugast
@ 2023-06-08  6:54       ` Ohad Sharabi
  0 siblings, 0 replies; 25+ messages in thread
From: Ohad Sharabi @ 2023-06-08  6:54 UTC (permalink / raw)
  To: Francois Dugast; +Cc: Bitton, Ofir1, Sharabi, Ohad (Habana), intel-xe

On 06/06/2023 16:24, Francois Dugast wrote:
> Hi,
>
> On Tue, Jun 06, 2023 at 12:09:34PM +0200, Ohad Sharabi wrote:
>> On 02/06/2023 17:25, Francois Dugast wrote:
>>> A local structure of function pointers is used as a minimal hardware
>>> abstraction layer to prepare for platform independent MMIO calls.
>>>
>>> Cc: Oded Gabbay <ogabbay@kernel.org>
>>> Cc: Ofir Bitton <ofir1.bitton@intel.com>
>>> Cc: Ohad Sharabi <ohadshar@intel.com>
>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>>> ---
>>>    drivers/gpu/drm/xe/xe_device_types.h |  3 ++
>>>    drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
>>>    drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
>>>    3 files changed, 99 insertions(+), 20 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
>>> index 17b6b1cc5adb..3f8fd0d8129b 100644
>>> --- a/drivers/gpu/drm/xe/xe_device_types.h
>>> +++ b/drivers/gpu/drm/xe/xe_device_types.h
>>> @@ -378,6 +378,9 @@ struct xe_device {
>>>        /** @d3cold_allowed: Indicates if d3cold is a valid device state */
>>>        bool d3cold_allowed;
>>>
>>> +     /** @mmio_funcs: function pointers for MMIO related functions */
>>> +     const struct xe_mmio_funcs *mmio_funcs;
>> Do we really want to divide the FP structs to such fine-grained resolution?
>>
>> Can't the MMIO be grouped as part of GT functions which can later host
>> other FPs as well?
>>
>> Or do we think that all other GT funcs will, probably, be "common to
>> more components" and so define a special struct for it?
> Sure, it is possible to use broader FP structs which would contain more
> functions. Actually, it was explored in the first revision of the original
> series: https://patchwork.freedesktop.org/series/114630/#rev1
>
> The concern is that we might not be able to correctly predict where future
> platforms would require specific code, which means we could end up having
> very large FP structs with dozens or hundreds of functions.
>
> This is why in earlier discussions we leaned towards having multiple FP structs,
> each local to a domain or to a .c file, like in this patch for MMIO.
Sure, I can see your point.
>
>>> +
>>>        /* private: */
>>>
>>>    #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
>>> diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
>>> index 475b14fe4356..f3d08676a77a 100644
>>> --- a/drivers/gpu/drm/xe/xe_mmio.c
>>> +++ b/drivers/gpu/drm/xe/xe_mmio.c
>>> @@ -25,6 +25,62 @@
>>>
>>>    #define BAR_SIZE_SHIFT 20
>>>
>>> +static void xe_mmio_write32_device(struct xe_gt *gt,
>>> +                                struct xe_reg reg, u32 val);
>>> +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
>>> +static void xe_mmio_write64_device(struct xe_gt *gt,
>>> +                                struct xe_reg reg, u64 val);
>>> +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
>>> +
>>> +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
>>> +     .write32 = xe_mmio_write32_device,
>>> +     .read32 = xe_mmio_read32_device,
>>> +     .write64 = xe_mmio_write64_device,
>>> +     .read64 = xe_mmio_read64_device,
>>> +};
>>> +
>>> +static inline void xe_mmio_write32_device(struct xe_gt *gt,
>>> +                                struct xe_reg reg, u32 val)
>>> +{
>>> +     struct xe_tile *tile = gt_to_tile(gt);
>>> +
>>> +     if (reg.addr < gt->mmio.adj_limit)
>>> +             reg.addr += gt->mmio.adj_offset;
>>> +
>>> +     writel(val, tile->mmio.regs + reg.addr);
>>> +}

Can't the offset adjustment be done from the common caller (i.e.
xe_mmio_write[32/64])?

If so, can we pass the xe_tile instead of xe_gt to the function?

One can argue that we can also pass the complete iomem address but I
think we may need the xe_tile struct for other setups/platform (to be
implemented in other set of MMIO funcs FPs)

>>> +
>>> +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
>>> +{
>>> +     struct xe_tile *tile = gt_to_tile(gt);
>>> +
>>> +     if (reg.addr < gt->mmio.adj_limit)
>>> +             reg.addr += gt->mmio.adj_offset;
>>> +
>>> +     return readl(tile->mmio.regs + reg.addr);
>>> +}
>>> +
>>> +static inline void xe_mmio_write64_device(struct xe_gt *gt,
>>> +                                struct xe_reg reg, u64 val)
>>> +{
>>> +     struct xe_tile *tile = gt_to_tile(gt);
>>> +
>>> +     if (reg.addr < gt->mmio.adj_limit)
>>> +             reg.addr += gt->mmio.adj_offset;
>>> +
>>> +     writeq(val, tile->mmio.regs + reg.addr);
>>> +}
>>> +
>>> +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
>>> +{
>>> +     struct xe_tile *tile = gt_to_tile(gt);
>>> +
>>> +     if (reg.addr < gt->mmio.adj_limit)
>>> +             reg.addr += gt->mmio.adj_offset;
>>> +
>>> +     return readq(tile->mmio.regs + reg.addr);
>>> +}
>>> +
>>>    static int xe_set_dma_info(struct xe_device *xe)
>>>    {
>>>        unsigned int mask_size = xe->info.dma_mask_size;
>>> @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
>>>                iounmap(xe->mem.vram.mapping);
>>>    }
>>>
>>> +static void xe_mmio_set_funcs(struct xe_device *xe)
>> Wouldn't we like to fail the MMIO init on an unsupported platform?
> Yes I will fix that.
>
>>> +{
>>> +     /* For now all platforms use the set of MMIO functions for a
>>> +      * physical device.
>>> +      */
>>> +     switch (xe->info.platform) {
>>> +     case XE_TIGERLAKE:
>>> +     case XE_ROCKETLAKE:
>>> +     case XE_ALDERLAKE_S:
>>> +     case XE_ALDERLAKE_P:
>>> +     case XE_ALDERLAKE_N:
>>> +     case XE_DG1:
>>> +     case XE_DG2:
>>> +     case XE_PVC:
>>> +     case XE_METEORLAKE:
>>> +             xe->mmio_funcs = &xe_mmio_funcs_device;
>>> +             break;
>>> +     default:
>>> +             DRM_ERROR("Unsupported platform\n");
Maybe drm_err should be used instead?
>>> +             break;
>>> +     }
>>> +}
>>> +
>>>    int xe_mmio_init(struct xe_device *xe)
>>>    {
>>>        struct xe_tile *root_tile = xe_device_get_root_tile(xe);
>>> @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
>>>        const int mmio_bar = 0;
>>>        int err;
>>>
>>> +     xe_mmio_set_funcs(xe);
>>> +
>>>        /*
>>>         * Map the first 16MB of th BAR, which includes the registers (0-4MB),
>>>         * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
>>> diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
>>> index 3c547d78afba..80ce9de7aac4 100644
>>> --- a/drivers/gpu/drm/xe/xe_mmio.h
>>> +++ b/drivers/gpu/drm/xe/xe_mmio.h
>>> @@ -19,6 +19,13 @@ struct xe_device;
>>>
>>>    #define GEN12_LMEM_BAR              2
>>>
>>> +struct xe_mmio_funcs {
Shouldn't we add read8 as well?
>>> +     u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
>>> +     u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
>>> +     void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
>>> +     void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
>>> +};
>>> +
>>>    int xe_mmio_init(struct xe_device *xe);
>>>
>>>    static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
>>> @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
>>>    static inline void xe_mmio_write32(struct xe_gt *gt,
>>>                                   struct xe_reg reg, u32 val)
>>>    {
>>> -     struct xe_tile *tile = gt_to_tile(gt);
>>> -
>>> -     if (reg.addr < gt->mmio.adj_limit)
>>> -             reg.addr += gt->mmio.adj_offset;
>>> +     struct xe_device *xe = gt_to_xe(gt);
>>>
>>> -     writel(val, tile->mmio.regs + reg.addr);
>>> +     xe->mmio_funcs->write32(gt, reg, val);
>>>    }
>>>
>>>    static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
>>>    {
>>> -     struct xe_tile *tile = gt_to_tile(gt);
>>> -
>>> -     if (reg.addr < gt->mmio.adj_limit)
>>> -             reg.addr += gt->mmio.adj_offset;
>>> +     struct xe_device *xe = gt_to_xe(gt);
>>>
>>> -     return readl(tile->mmio.regs + reg.addr);
>>> +     return xe->mmio_funcs->read32(gt, reg);
>>>    }
>>>
>>>    static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
>>> @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
>>>    static inline void xe_mmio_write64(struct xe_gt *gt,
>>>                                   struct xe_reg reg, u64 val)
>>>    {
>>> -     struct xe_tile *tile = gt_to_tile(gt);
>>> -
>>> -     if (reg.addr < gt->mmio.adj_limit)
>>> -             reg.addr += gt->mmio.adj_offset;
>>> +     struct xe_device *xe = gt_to_xe(gt);
>>>
>>> -     writeq(val, tile->mmio.regs + reg.addr);
>>> +     xe->mmio_funcs->write64(gt, reg, val);
>>>    }
>>>
>>>    static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
>>>    {
>>> -     struct xe_tile *tile = gt_to_tile(gt);
>>> -
>>> -     if (reg.addr < gt->mmio.adj_limit)
>>> -             reg.addr += gt->mmio.adj_offset;
>>> +     struct xe_device *xe = gt_to_xe(gt);
>>>
>>> -     return readq(tile->mmio.regs + reg.addr);
>>> +     return xe->mmio_funcs->read64(gt, reg);
>>>    }
>>>
>>>    static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
>>>
>>>
>> This approach should work for us- thanks for the effort.
>>
>> I do think that if loading this data from the descriptor is acceptable
>> let's do it soon to avoid collection of all "switch-cases" from the code
>> while other FPs are being added (really not necessary at this phase- we
>> want this patch merged soon).
>>
>> Thanks,
>>
>> Ohad
>>
> I think we should be able to add this in the same series, but first I would like
> to get more feedback on this RFC before moving forward.
>
> Thanks,
> Francois

Francois, some other issues I was wondering about- please tell me what
you think,

Thanks,

Ohad



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

* Re: [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-02 14:25 ` [Intel-xe] [RFC PATCH 1/1] " Francois Dugast
  2023-06-06  8:03   ` [Intel-xe] [RFC, " Ohad Sharabi
  2023-06-06 10:09   ` Ohad Sharabi
@ 2023-06-08 17:35   ` Lucas De Marchi
  2023-06-12 16:31     ` Francois Dugast
  2 siblings, 1 reply; 25+ messages in thread
From: Lucas De Marchi @ 2023-06-08 17:35 UTC (permalink / raw)
  To: Francois Dugast; +Cc: ofir1.bitton, ohadshar, Matt Roper, intel-xe

On Fri, Jun 02, 2023 at 02:25:01PM +0000, Francois Dugast wrote:
>A local structure of function pointers is used as a minimal hardware
>abstraction layer to prepare for platform independent MMIO calls.
>
>Cc: Oded Gabbay <ogabbay@kernel.org>
>Cc: Ofir Bitton <ofir1.bitton@intel.com>
>Cc: Ohad Sharabi <ohadshar@intel.com>
>Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>---
> drivers/gpu/drm/xe/xe_device_types.h |  3 ++
> drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
> 3 files changed, 99 insertions(+), 20 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
>index 17b6b1cc5adb..3f8fd0d8129b 100644
>--- a/drivers/gpu/drm/xe/xe_device_types.h
>+++ b/drivers/gpu/drm/xe/xe_device_types.h
>@@ -378,6 +378,9 @@ struct xe_device {
> 	/** @d3cold_allowed: Indicates if d3cold is a valid device state */
> 	bool d3cold_allowed;
>
>+	/** @mmio_funcs: function pointers for MMIO related functions */
>+	const struct xe_mmio_funcs *mmio_funcs;
>+
> 	/* private: */
>
> #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
>diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
>index 475b14fe4356..f3d08676a77a 100644
>--- a/drivers/gpu/drm/xe/xe_mmio.c
>+++ b/drivers/gpu/drm/xe/xe_mmio.c
>@@ -25,6 +25,62 @@
>
> #define BAR_SIZE_SHIFT 20
>
>+static void xe_mmio_write32_device(struct xe_gt *gt,
>+				   struct xe_reg reg, u32 val);
>+static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
>+static void xe_mmio_write64_device(struct xe_gt *gt,
>+				   struct xe_reg reg, u64 val);
>+static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
>+
>+static const struct xe_mmio_funcs xe_mmio_funcs_device = {
>+	.write32 = xe_mmio_write32_device,
>+	.read32 = xe_mmio_read32_device,
>+	.write64 = xe_mmio_write64_device,
>+	.read64 = xe_mmio_read64_device,
>+};
>+
>+static inline void xe_mmio_write32_device(struct xe_gt *gt,
>+				   struct xe_reg reg, u32 val)
>+{
>+	struct xe_tile *tile = gt_to_tile(gt);
>+
>+	if (reg.addr < gt->mmio.adj_limit)
>+		reg.addr += gt->mmio.adj_offset;
>+
>+	writel(val, tile->mmio.regs + reg.addr);
>+}
>+
>+static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
>+{
>+	struct xe_tile *tile = gt_to_tile(gt);
>+
>+	if (reg.addr < gt->mmio.adj_limit)
>+		reg.addr += gt->mmio.adj_offset;
>+
>+	return readl(tile->mmio.regs + reg.addr);
>+}
>+
>+static inline void xe_mmio_write64_device(struct xe_gt *gt,
>+				   struct xe_reg reg, u64 val)
>+{
>+	struct xe_tile *tile = gt_to_tile(gt);
>+
>+	if (reg.addr < gt->mmio.adj_limit)
>+		reg.addr += gt->mmio.adj_offset;
>+
>+	writeq(val, tile->mmio.regs + reg.addr);
>+}
>+
>+static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
>+{
>+	struct xe_tile *tile = gt_to_tile(gt);
>+
>+	if (reg.addr < gt->mmio.adj_limit)
>+		reg.addr += gt->mmio.adj_offset;
>+
>+	return readq(tile->mmio.regs + reg.addr);
>+}
>+
> static int xe_set_dma_info(struct xe_device *xe)
> {
> 	unsigned int mask_size = xe->info.dma_mask_size;
>@@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
> 		iounmap(xe->mem.vram.mapping);
> }
>
>+static void xe_mmio_set_funcs(struct xe_device *xe)
>+{
>+	/* For now all platforms use the set of MMIO functions for a
>+	 * physical device.
>+	 */


what is "device" in this context? that seems confusing as we always ever
just support reading/writing to a real device (physical here may also
add to the confusion when thinking about SR-IOV and VFs).
We shouldn't add abstractions that are then never used and all platforms
end up using the same. Unless it's a preparation for a follow up series
adding the different handling.

+Matt as there is still (at least) one refactor planned in this area,
since gt is not always the proper target for the MMIOs. He was saying in
his earlier series about having a mmio_view or such to abstract the
offset and other differences between each IO range. Not sure if this
series would go the rigth direction, maybe we need to think in both
cases together.


Lucas De Marchi

>+	switch (xe->info.platform) {
>+	case XE_TIGERLAKE:
>+	case XE_ROCKETLAKE:
>+	case XE_ALDERLAKE_S:
>+	case XE_ALDERLAKE_P:
>+	case XE_ALDERLAKE_N:
>+	case XE_DG1:
>+	case XE_DG2:
>+	case XE_PVC:
>+	case XE_METEORLAKE:
>+		xe->mmio_funcs = &xe_mmio_funcs_device;
>+		break;
>+	default:
>+		DRM_ERROR("Unsupported platform\n");
>+		break;
>+	}
>+}
>+
> int xe_mmio_init(struct xe_device *xe)
> {
> 	struct xe_tile *root_tile = xe_device_get_root_tile(xe);
>@@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
> 	const int mmio_bar = 0;
> 	int err;
>
>+	xe_mmio_set_funcs(xe);
>+
> 	/*
> 	 * Map the first 16MB of th BAR, which includes the registers (0-4MB),
> 	 * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
>diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
>index 3c547d78afba..80ce9de7aac4 100644
>--- a/drivers/gpu/drm/xe/xe_mmio.h
>+++ b/drivers/gpu/drm/xe/xe_mmio.h
>@@ -19,6 +19,13 @@ struct xe_device;
>
> #define GEN12_LMEM_BAR		2
>
>+struct xe_mmio_funcs {
>+	u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
>+	u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
>+	void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
>+	void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
>+};
>+
> int xe_mmio_init(struct xe_device *xe);
>
> static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
>@@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> static inline void xe_mmio_write32(struct xe_gt *gt,
> 				   struct xe_reg reg, u32 val)
> {
>-	struct xe_tile *tile = gt_to_tile(gt);
>-
>-	if (reg.addr < gt->mmio.adj_limit)
>-		reg.addr += gt->mmio.adj_offset;
>+	struct xe_device *xe = gt_to_xe(gt);
>
>-	writel(val, tile->mmio.regs + reg.addr);
>+	xe->mmio_funcs->write32(gt, reg, val);
> }
>
> static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> {
>-	struct xe_tile *tile = gt_to_tile(gt);
>-
>-	if (reg.addr < gt->mmio.adj_limit)
>-		reg.addr += gt->mmio.adj_offset;
>+	struct xe_device *xe = gt_to_xe(gt);
>
>-	return readl(tile->mmio.regs + reg.addr);
>+	return xe->mmio_funcs->read32(gt, reg);
> }
>
> static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
>@@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> static inline void xe_mmio_write64(struct xe_gt *gt,
> 				   struct xe_reg reg, u64 val)
> {
>-	struct xe_tile *tile = gt_to_tile(gt);
>-
>-	if (reg.addr < gt->mmio.adj_limit)
>-		reg.addr += gt->mmio.adj_offset;
>+	struct xe_device *xe = gt_to_xe(gt);
>
>-	writeq(val, tile->mmio.regs + reg.addr);
>+	xe->mmio_funcs->write64(gt, reg, val);
> }
>
> static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
> {
>-	struct xe_tile *tile = gt_to_tile(gt);
>-
>-	if (reg.addr < gt->mmio.adj_limit)
>-		reg.addr += gt->mmio.adj_offset;
>+	struct xe_device *xe = gt_to_xe(gt);
>
>-	return readq(tile->mmio.regs + reg.addr);
>+	return xe->mmio_funcs->read64(gt, reg);
> }
>
> static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
>-- 
>2.34.1
>

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

* Re: [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-08 17:35   ` [Intel-xe] [RFC PATCH " Lucas De Marchi
@ 2023-06-12 16:31     ` Francois Dugast
  2023-06-15  0:01       ` Matt Roper
  0 siblings, 1 reply; 25+ messages in thread
From: Francois Dugast @ 2023-06-12 16:31 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: ofir1.bitton, ohadshar, Matt Roper, intel-xe

On Thu, Jun 08, 2023 at 10:35:29AM -0700, Lucas De Marchi wrote:
> On Fri, Jun 02, 2023 at 02:25:01PM +0000, Francois Dugast wrote:
> > A local structure of function pointers is used as a minimal hardware
> > abstraction layer to prepare for platform independent MMIO calls.
> > 
> > Cc: Oded Gabbay <ogabbay@kernel.org>
> > Cc: Ofir Bitton <ofir1.bitton@intel.com>
> > Cc: Ohad Sharabi <ohadshar@intel.com>
> > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > ---
> > drivers/gpu/drm/xe/xe_device_types.h |  3 ++
> > drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
> > drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
> > 3 files changed, 99 insertions(+), 20 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> > index 17b6b1cc5adb..3f8fd0d8129b 100644
> > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > @@ -378,6 +378,9 @@ struct xe_device {
> > 	/** @d3cold_allowed: Indicates if d3cold is a valid device state */
> > 	bool d3cold_allowed;
> > 
> > +	/** @mmio_funcs: function pointers for MMIO related functions */
> > +	const struct xe_mmio_funcs *mmio_funcs;
> > +
> > 	/* private: */
> > 
> > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> > diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> > index 475b14fe4356..f3d08676a77a 100644
> > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > @@ -25,6 +25,62 @@
> > 
> > #define BAR_SIZE_SHIFT 20
> > 
> > +static void xe_mmio_write32_device(struct xe_gt *gt,
> > +				   struct xe_reg reg, u32 val);
> > +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> > +static void xe_mmio_write64_device(struct xe_gt *gt,
> > +				   struct xe_reg reg, u64 val);
> > +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> > +
> > +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> > +	.write32 = xe_mmio_write32_device,
> > +	.read32 = xe_mmio_read32_device,
> > +	.write64 = xe_mmio_write64_device,
> > +	.read64 = xe_mmio_read64_device,
> > +};
> > +
> > +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> > +				   struct xe_reg reg, u32 val)
> > +{
> > +	struct xe_tile *tile = gt_to_tile(gt);
> > +
> > +	if (reg.addr < gt->mmio.adj_limit)
> > +		reg.addr += gt->mmio.adj_offset;
> > +
> > +	writel(val, tile->mmio.regs + reg.addr);
> > +}
> > +
> > +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> > +{
> > +	struct xe_tile *tile = gt_to_tile(gt);
> > +
> > +	if (reg.addr < gt->mmio.adj_limit)
> > +		reg.addr += gt->mmio.adj_offset;
> > +
> > +	return readl(tile->mmio.regs + reg.addr);
> > +}
> > +
> > +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> > +				   struct xe_reg reg, u64 val)
> > +{
> > +	struct xe_tile *tile = gt_to_tile(gt);
> > +
> > +	if (reg.addr < gt->mmio.adj_limit)
> > +		reg.addr += gt->mmio.adj_offset;
> > +
> > +	writeq(val, tile->mmio.regs + reg.addr);
> > +}
> > +
> > +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> > +{
> > +	struct xe_tile *tile = gt_to_tile(gt);
> > +
> > +	if (reg.addr < gt->mmio.adj_limit)
> > +		reg.addr += gt->mmio.adj_offset;
> > +
> > +	return readq(tile->mmio.regs + reg.addr);
> > +}
> > +
> > static int xe_set_dma_info(struct xe_device *xe)
> > {
> > 	unsigned int mask_size = xe->info.dma_mask_size;
> > @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
> > 		iounmap(xe->mem.vram.mapping);
> > }
> > 
> > +static void xe_mmio_set_funcs(struct xe_device *xe)
> > +{
> > +	/* For now all platforms use the set of MMIO functions for a
> > +	 * physical device.
> > +	 */
> 
> 
> what is "device" in this context? that seems confusing as we always ever
> just support reading/writing to a real device (physical here may also
> add to the confusion when thinking about SR-IOV and VFs).
> We shouldn't add abstractions that are then never used and all platforms
> end up using the same. Unless it's a preparation for a follow up series
> adding the different handling.

For now "device" is meant as "in opposition to simulator" but I agree
we can find a better name. Existing platforms all use the same
implementation but this is preparation for platforms that require a
different implementation.

> 
> +Matt as there is still (at least) one refactor planned in this area,
> since gt is not always the proper target for the MMIOs. He was saying in
> his earlier series about having a mmio_view or such to abstract the
> offset and other differences between each IO range. Not sure if this
> series would go the rigth direction, maybe we need to think in both
> cases together.

Matt, would this series block the refactor mentioned by Lucas?

In general, are there objections to introducing functions pointers for
MMIO functions (extended to all of them, as suggested by Ohad)?

Thanks,
Francois

> 
> 
> Lucas De Marchi
> 
> > +	switch (xe->info.platform) {
> > +	case XE_TIGERLAKE:
> > +	case XE_ROCKETLAKE:
> > +	case XE_ALDERLAKE_S:
> > +	case XE_ALDERLAKE_P:
> > +	case XE_ALDERLAKE_N:
> > +	case XE_DG1:
> > +	case XE_DG2:
> > +	case XE_PVC:
> > +	case XE_METEORLAKE:
> > +		xe->mmio_funcs = &xe_mmio_funcs_device;
> > +		break;
> > +	default:
> > +		DRM_ERROR("Unsupported platform\n");
> > +		break;
> > +	}
> > +}
> > +
> > int xe_mmio_init(struct xe_device *xe)
> > {
> > 	struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> > @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
> > 	const int mmio_bar = 0;
> > 	int err;
> > 
> > +	xe_mmio_set_funcs(xe);
> > +
> > 	/*
> > 	 * Map the first 16MB of th BAR, which includes the registers (0-4MB),
> > 	 * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> > diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> > index 3c547d78afba..80ce9de7aac4 100644
> > --- a/drivers/gpu/drm/xe/xe_mmio.h
> > +++ b/drivers/gpu/drm/xe/xe_mmio.h
> > @@ -19,6 +19,13 @@ struct xe_device;
> > 
> > #define GEN12_LMEM_BAR		2
> > 
> > +struct xe_mmio_funcs {
> > +	u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> > +	u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> > +	void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> > +	void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> > +};
> > +
> > int xe_mmio_init(struct xe_device *xe);
> > 
> > static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > static inline void xe_mmio_write32(struct xe_gt *gt,
> > 				   struct xe_reg reg, u32 val)
> > {
> > -	struct xe_tile *tile = gt_to_tile(gt);
> > -
> > -	if (reg.addr < gt->mmio.adj_limit)
> > -		reg.addr += gt->mmio.adj_offset;
> > +	struct xe_device *xe = gt_to_xe(gt);
> > 
> > -	writel(val, tile->mmio.regs + reg.addr);
> > +	xe->mmio_funcs->write32(gt, reg, val);
> > }
> > 
> > static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> > {
> > -	struct xe_tile *tile = gt_to_tile(gt);
> > -
> > -	if (reg.addr < gt->mmio.adj_limit)
> > -		reg.addr += gt->mmio.adj_offset;
> > +	struct xe_device *xe = gt_to_xe(gt);
> > 
> > -	return readl(tile->mmio.regs + reg.addr);
> > +	return xe->mmio_funcs->read32(gt, reg);
> > }
> > 
> > static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > static inline void xe_mmio_write64(struct xe_gt *gt,
> > 				   struct xe_reg reg, u64 val)
> > {
> > -	struct xe_tile *tile = gt_to_tile(gt);
> > -
> > -	if (reg.addr < gt->mmio.adj_limit)
> > -		reg.addr += gt->mmio.adj_offset;
> > +	struct xe_device *xe = gt_to_xe(gt);
> > 
> > -	writeq(val, tile->mmio.regs + reg.addr);
> > +	xe->mmio_funcs->write64(gt, reg, val);
> > }
> > 
> > static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
> > {
> > -	struct xe_tile *tile = gt_to_tile(gt);
> > -
> > -	if (reg.addr < gt->mmio.adj_limit)
> > -		reg.addr += gt->mmio.adj_offset;
> > +	struct xe_device *xe = gt_to_xe(gt);
> > 
> > -	return readq(tile->mmio.regs + reg.addr);
> > +	return xe->mmio_funcs->read64(gt, reg);
> > }
> > 
> > static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
> > -- 
> > 2.34.1
> > 

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

* Re: [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-12 16:31     ` Francois Dugast
@ 2023-06-15  0:01       ` Matt Roper
  2023-06-15 13:04         ` Oded Gabbay
  0 siblings, 1 reply; 25+ messages in thread
From: Matt Roper @ 2023-06-15  0:01 UTC (permalink / raw)
  To: Francois Dugast; +Cc: ofir1.bitton, ohadshar, Lucas De Marchi, intel-xe

On Mon, Jun 12, 2023 at 06:31:57PM +0200, Francois Dugast wrote:
> On Thu, Jun 08, 2023 at 10:35:29AM -0700, Lucas De Marchi wrote:
> > On Fri, Jun 02, 2023 at 02:25:01PM +0000, Francois Dugast wrote:
> > > A local structure of function pointers is used as a minimal hardware
> > > abstraction layer to prepare for platform independent MMIO calls.
> > > 
> > > Cc: Oded Gabbay <ogabbay@kernel.org>
> > > Cc: Ofir Bitton <ofir1.bitton@intel.com>
> > > Cc: Ohad Sharabi <ohadshar@intel.com>
> > > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > > ---
> > > drivers/gpu/drm/xe/xe_device_types.h |  3 ++
> > > drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
> > > drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
> > > 3 files changed, 99 insertions(+), 20 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> > > index 17b6b1cc5adb..3f8fd0d8129b 100644
> > > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > > @@ -378,6 +378,9 @@ struct xe_device {
> > > 	/** @d3cold_allowed: Indicates if d3cold is a valid device state */
> > > 	bool d3cold_allowed;
> > > 
> > > +	/** @mmio_funcs: function pointers for MMIO related functions */
> > > +	const struct xe_mmio_funcs *mmio_funcs;
> > > +
> > > 	/* private: */
> > > 
> > > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> > > diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> > > index 475b14fe4356..f3d08676a77a 100644
> > > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > > @@ -25,6 +25,62 @@
> > > 
> > > #define BAR_SIZE_SHIFT 20
> > > 
> > > +static void xe_mmio_write32_device(struct xe_gt *gt,
> > > +				   struct xe_reg reg, u32 val);
> > > +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> > > +static void xe_mmio_write64_device(struct xe_gt *gt,
> > > +				   struct xe_reg reg, u64 val);
> > > +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> > > +
> > > +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> > > +	.write32 = xe_mmio_write32_device,
> > > +	.read32 = xe_mmio_read32_device,
> > > +	.write64 = xe_mmio_write64_device,
> > > +	.read64 = xe_mmio_read64_device,
> > > +};
> > > +
> > > +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> > > +				   struct xe_reg reg, u32 val)
> > > +{
> > > +	struct xe_tile *tile = gt_to_tile(gt);
> > > +
> > > +	if (reg.addr < gt->mmio.adj_limit)
> > > +		reg.addr += gt->mmio.adj_offset;
> > > +
> > > +	writel(val, tile->mmio.regs + reg.addr);
> > > +}
> > > +
> > > +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> > > +{
> > > +	struct xe_tile *tile = gt_to_tile(gt);
> > > +
> > > +	if (reg.addr < gt->mmio.adj_limit)
> > > +		reg.addr += gt->mmio.adj_offset;
> > > +
> > > +	return readl(tile->mmio.regs + reg.addr);
> > > +}
> > > +
> > > +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> > > +				   struct xe_reg reg, u64 val)
> > > +{
> > > +	struct xe_tile *tile = gt_to_tile(gt);
> > > +
> > > +	if (reg.addr < gt->mmio.adj_limit)
> > > +		reg.addr += gt->mmio.adj_offset;
> > > +
> > > +	writeq(val, tile->mmio.regs + reg.addr);
> > > +}
> > > +
> > > +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> > > +{
> > > +	struct xe_tile *tile = gt_to_tile(gt);
> > > +
> > > +	if (reg.addr < gt->mmio.adj_limit)
> > > +		reg.addr += gt->mmio.adj_offset;
> > > +
> > > +	return readq(tile->mmio.regs + reg.addr);
> > > +}
> > > +
> > > static int xe_set_dma_info(struct xe_device *xe)
> > > {
> > > 	unsigned int mask_size = xe->info.dma_mask_size;
> > > @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
> > > 		iounmap(xe->mem.vram.mapping);
> > > }
> > > 
> > > +static void xe_mmio_set_funcs(struct xe_device *xe)
> > > +{
> > > +	/* For now all platforms use the set of MMIO functions for a
> > > +	 * physical device.
> > > +	 */
> > 
> > 
> > what is "device" in this context? that seems confusing as we always ever
> > just support reading/writing to a real device (physical here may also
> > add to the confusion when thinking about SR-IOV and VFs).
> > We shouldn't add abstractions that are then never used and all platforms
> > end up using the same. Unless it's a preparation for a follow up series
> > adding the different handling.
> 
> For now "device" is meant as "in opposition to simulator" but I agree
> we can find a better name. Existing platforms all use the same
> implementation but this is preparation for platforms that require a
> different implementation.

I agree with Lucas that this doesn't really seem to be a good candidate
for a vtable; every platform uses exactly the same logic and I can't
really envision how/why this would need to change for future platforms
either, so this seems to just be adding unnecessary complexity.
Registers being accessed at some offset into a PCI BAR isn't likely to
change going forward.  On future platforms it's more likely that we'd
need changes to the part of the code that maps the MMIO BAR rather than
the code that reads/writes an offset into a mapping that's already been
setup.

> 
> > 
> > +Matt as there is still (at least) one refactor planned in this area,
> > since gt is not always the proper target for the MMIOs. He was saying in
> > his earlier series about having a mmio_view or such to abstract the
> > offset and other differences between each IO range. Not sure if this
> > series would go the rigth direction, maybe we need to think in both
> > cases together.
> 
> Matt, would this series block the refactor mentioned by Lucas?
> 
> In general, are there objections to introducing functions pointers for
> MMIO functions (extended to all of them, as suggested by Ohad)?

It probably makes more sense to do vtable conversion on other parts of
the driver where we already have different implementations per platform
and where we already know that design makes sense.  We can always come
back and do this to the MMIO functions later once there are actually
multiple implementations, but it doesn't seem to serve any purpose right
now.


Matt

> 
> Thanks,
> Francois
> 
> > 
> > 
> > Lucas De Marchi
> > 
> > > +	switch (xe->info.platform) {
> > > +	case XE_TIGERLAKE:
> > > +	case XE_ROCKETLAKE:
> > > +	case XE_ALDERLAKE_S:
> > > +	case XE_ALDERLAKE_P:
> > > +	case XE_ALDERLAKE_N:
> > > +	case XE_DG1:
> > > +	case XE_DG2:
> > > +	case XE_PVC:
> > > +	case XE_METEORLAKE:
> > > +		xe->mmio_funcs = &xe_mmio_funcs_device;
> > > +		break;
> > > +	default:
> > > +		DRM_ERROR("Unsupported platform\n");
> > > +		break;
> > > +	}
> > > +}
> > > +
> > > int xe_mmio_init(struct xe_device *xe)
> > > {
> > > 	struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> > > @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
> > > 	const int mmio_bar = 0;
> > > 	int err;
> > > 
> > > +	xe_mmio_set_funcs(xe);
> > > +
> > > 	/*
> > > 	 * Map the first 16MB of th BAR, which includes the registers (0-4MB),
> > > 	 * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> > > diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> > > index 3c547d78afba..80ce9de7aac4 100644
> > > --- a/drivers/gpu/drm/xe/xe_mmio.h
> > > +++ b/drivers/gpu/drm/xe/xe_mmio.h
> > > @@ -19,6 +19,13 @@ struct xe_device;
> > > 
> > > #define GEN12_LMEM_BAR		2
> > > 
> > > +struct xe_mmio_funcs {
> > > +	u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> > > +	u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> > > +	void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> > > +	void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> > > +};
> > > +
> > > int xe_mmio_init(struct xe_device *xe);
> > > 
> > > static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > static inline void xe_mmio_write32(struct xe_gt *gt,
> > > 				   struct xe_reg reg, u32 val)
> > > {
> > > -	struct xe_tile *tile = gt_to_tile(gt);
> > > -
> > > -	if (reg.addr < gt->mmio.adj_limit)
> > > -		reg.addr += gt->mmio.adj_offset;
> > > +	struct xe_device *xe = gt_to_xe(gt);
> > > 
> > > -	writel(val, tile->mmio.regs + reg.addr);
> > > +	xe->mmio_funcs->write32(gt, reg, val);
> > > }
> > > 
> > > static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> > > {
> > > -	struct xe_tile *tile = gt_to_tile(gt);
> > > -
> > > -	if (reg.addr < gt->mmio.adj_limit)
> > > -		reg.addr += gt->mmio.adj_offset;
> > > +	struct xe_device *xe = gt_to_xe(gt);
> > > 
> > > -	return readl(tile->mmio.regs + reg.addr);
> > > +	return xe->mmio_funcs->read32(gt, reg);
> > > }
> > > 
> > > static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > static inline void xe_mmio_write64(struct xe_gt *gt,
> > > 				   struct xe_reg reg, u64 val)
> > > {
> > > -	struct xe_tile *tile = gt_to_tile(gt);
> > > -
> > > -	if (reg.addr < gt->mmio.adj_limit)
> > > -		reg.addr += gt->mmio.adj_offset;
> > > +	struct xe_device *xe = gt_to_xe(gt);
> > > 
> > > -	writeq(val, tile->mmio.regs + reg.addr);
> > > +	xe->mmio_funcs->write64(gt, reg, val);
> > > }
> > > 
> > > static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
> > > {
> > > -	struct xe_tile *tile = gt_to_tile(gt);
> > > -
> > > -	if (reg.addr < gt->mmio.adj_limit)
> > > -		reg.addr += gt->mmio.adj_offset;
> > > +	struct xe_device *xe = gt_to_xe(gt);
> > > 
> > > -	return readq(tile->mmio.regs + reg.addr);
> > > +	return xe->mmio_funcs->read64(gt, reg);
> > > }
> > > 
> > > static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
> > > -- 
> > > 2.34.1
> > > 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-15  0:01       ` Matt Roper
@ 2023-06-15 13:04         ` Oded Gabbay
  2023-06-15 16:34             ` Matt Roper
  0 siblings, 1 reply; 25+ messages in thread
From: Oded Gabbay @ 2023-06-15 13:04 UTC (permalink / raw)
  To: Matt Roper
  Cc: ofir1.bitton, Lucas De Marchi, Daniel Vetter, ohadshar, intel-xe

On Thu, Jun 15, 2023 at 3:01 AM Matt Roper <matthew.d.roper@intel.com> wrote:
>
> On Mon, Jun 12, 2023 at 06:31:57PM +0200, Francois Dugast wrote:
> > On Thu, Jun 08, 2023 at 10:35:29AM -0700, Lucas De Marchi wrote:
> > > On Fri, Jun 02, 2023 at 02:25:01PM +0000, Francois Dugast wrote:
> > > > A local structure of function pointers is used as a minimal hardware
> > > > abstraction layer to prepare for platform independent MMIO calls.
> > > >
> > > > Cc: Oded Gabbay <ogabbay@kernel.org>
> > > > Cc: Ofir Bitton <ofir1.bitton@intel.com>
> > > > Cc: Ohad Sharabi <ohadshar@intel.com>
> > > > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > > > ---
> > > > drivers/gpu/drm/xe/xe_device_types.h |  3 ++
> > > > drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
> > > > drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
> > > > 3 files changed, 99 insertions(+), 20 deletions(-)
> > > >
> > > > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> > > > index 17b6b1cc5adb..3f8fd0d8129b 100644
> > > > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > > > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > > > @@ -378,6 +378,9 @@ struct xe_device {
> > > >   /** @d3cold_allowed: Indicates if d3cold is a valid device state */
> > > >   bool d3cold_allowed;
> > > >
> > > > + /** @mmio_funcs: function pointers for MMIO related functions */
> > > > + const struct xe_mmio_funcs *mmio_funcs;
> > > > +
> > > >   /* private: */
> > > >
> > > > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> > > > index 475b14fe4356..f3d08676a77a 100644
> > > > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > > > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > > > @@ -25,6 +25,62 @@
> > > >
> > > > #define BAR_SIZE_SHIFT 20
> > > >
> > > > +static void xe_mmio_write32_device(struct xe_gt *gt,
> > > > +                            struct xe_reg reg, u32 val);
> > > > +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> > > > +static void xe_mmio_write64_device(struct xe_gt *gt,
> > > > +                            struct xe_reg reg, u64 val);
> > > > +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> > > > +
> > > > +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> > > > + .write32 = xe_mmio_write32_device,
> > > > + .read32 = xe_mmio_read32_device,
> > > > + .write64 = xe_mmio_write64_device,
> > > > + .read64 = xe_mmio_read64_device,
> > > > +};
> > > > +
> > > > +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> > > > +                            struct xe_reg reg, u32 val)
> > > > +{
> > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > +
> > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > +         reg.addr += gt->mmio.adj_offset;
> > > > +
> > > > + writel(val, tile->mmio.regs + reg.addr);
> > > > +}
> > > > +
> > > > +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> > > > +{
> > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > +
> > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > +         reg.addr += gt->mmio.adj_offset;
> > > > +
> > > > + return readl(tile->mmio.regs + reg.addr);
> > > > +}
> > > > +
> > > > +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> > > > +                            struct xe_reg reg, u64 val)
> > > > +{
> > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > +
> > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > +         reg.addr += gt->mmio.adj_offset;
> > > > +
> > > > + writeq(val, tile->mmio.regs + reg.addr);
> > > > +}
> > > > +
> > > > +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> > > > +{
> > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > +
> > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > +         reg.addr += gt->mmio.adj_offset;
> > > > +
> > > > + return readq(tile->mmio.regs + reg.addr);
> > > > +}
> > > > +
> > > > static int xe_set_dma_info(struct xe_device *xe)
> > > > {
> > > >   unsigned int mask_size = xe->info.dma_mask_size;
> > > > @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
> > > >           iounmap(xe->mem.vram.mapping);
> > > > }
> > > >
> > > > +static void xe_mmio_set_funcs(struct xe_device *xe)
> > > > +{
> > > > + /* For now all platforms use the set of MMIO functions for a
> > > > +  * physical device.
> > > > +  */
> > >
> > >
> > > what is "device" in this context? that seems confusing as we always ever
> > > just support reading/writing to a real device (physical here may also
> > > add to the confusion when thinking about SR-IOV and VFs).
> > > We shouldn't add abstractions that are then never used and all platforms
> > > end up using the same. Unless it's a preparation for a follow up series
> > > adding the different handling.
> >
> > For now "device" is meant as "in opposition to simulator" but I agree
> > we can find a better name. Existing platforms all use the same
> > implementation but this is preparation for platforms that require a
> > different implementation.
>
> I agree with Lucas that this doesn't really seem to be a good candidate
> for a vtable; every platform uses exactly the same logic and I can't
> really envision how/why this would need to change for future platforms
> either, so this seems to just be adding unnecessary complexity.
> Registers being accessed at some offset into a PCI BAR isn't likely to
> change going forward.  On future platforms it's more likely that we'd
> need changes to the part of the code that maps the MMIO BAR rather than
> the code that reads/writes an offset into a mapping that's already been
> setup.
I agree with that for every *real hardware* platform the
implementation will probably be the same.
But for simulator/emulation, there is a different implementation.
And even if we don't upstream that different implementation, doing
this abstraction will help us upstream the rest of the driver as we
minimize the differences between upstream and downstream.
And helping us upstream the driver is a good enough reason imo to add
this abstraction.


Oded
>
> >
> > >
> > > +Matt as there is still (at least) one refactor planned in this area,
> > > since gt is not always the proper target for the MMIOs. He was saying in
> > > his earlier series about having a mmio_view or such to abstract the
> > > offset and other differences between each IO range. Not sure if this
> > > series would go the rigth direction, maybe we need to think in both
> > > cases together.
> >
> > Matt, would this series block the refactor mentioned by Lucas?
> >
> > In general, are there objections to introducing functions pointers for
> > MMIO functions (extended to all of them, as suggested by Ohad)?
>
> It probably makes more sense to do vtable conversion on other parts of
> the driver where we already have different implementations per platform
> and where we already know that design makes sense.  We can always come
> back and do this to the MMIO functions later once there are actually
> multiple implementations, but it doesn't seem to serve any purpose right
> now.
>
>
> Matt
>
> >
> > Thanks,
> > Francois
> >
> > >
> > >
> > > Lucas De Marchi
> > >
> > > > + switch (xe->info.platform) {
> > > > + case XE_TIGERLAKE:
> > > > + case XE_ROCKETLAKE:
> > > > + case XE_ALDERLAKE_S:
> > > > + case XE_ALDERLAKE_P:
> > > > + case XE_ALDERLAKE_N:
> > > > + case XE_DG1:
> > > > + case XE_DG2:
> > > > + case XE_PVC:
> > > > + case XE_METEORLAKE:
> > > > +         xe->mmio_funcs = &xe_mmio_funcs_device;
> > > > +         break;
> > > > + default:
> > > > +         DRM_ERROR("Unsupported platform\n");
> > > > +         break;
> > > > + }
> > > > +}
> > > > +
> > > > int xe_mmio_init(struct xe_device *xe)
> > > > {
> > > >   struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> > > > @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
> > > >   const int mmio_bar = 0;
> > > >   int err;
> > > >
> > > > + xe_mmio_set_funcs(xe);
> > > > +
> > > >   /*
> > > >    * Map the first 16MB of th BAR, which includes the registers (0-4MB),
> > > >    * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> > > > index 3c547d78afba..80ce9de7aac4 100644
> > > > --- a/drivers/gpu/drm/xe/xe_mmio.h
> > > > +++ b/drivers/gpu/drm/xe/xe_mmio.h
> > > > @@ -19,6 +19,13 @@ struct xe_device;
> > > >
> > > > #define GEN12_LMEM_BAR            2
> > > >
> > > > +struct xe_mmio_funcs {
> > > > + u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> > > > + u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> > > > + void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> > > > + void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> > > > +};
> > > > +
> > > > int xe_mmio_init(struct xe_device *xe);
> > > >
> > > > static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > static inline void xe_mmio_write32(struct xe_gt *gt,
> > > >                              struct xe_reg reg, u32 val)
> > > > {
> > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > -
> > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > -         reg.addr += gt->mmio.adj_offset;
> > > > + struct xe_device *xe = gt_to_xe(gt);
> > > >
> > > > - writel(val, tile->mmio.regs + reg.addr);
> > > > + xe->mmio_funcs->write32(gt, reg, val);
> > > > }
> > > >
> > > > static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> > > > {
> > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > -
> > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > -         reg.addr += gt->mmio.adj_offset;
> > > > + struct xe_device *xe = gt_to_xe(gt);
> > > >
> > > > - return readl(tile->mmio.regs + reg.addr);
> > > > + return xe->mmio_funcs->read32(gt, reg);
> > > > }
> > > >
> > > > static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > static inline void xe_mmio_write64(struct xe_gt *gt,
> > > >                              struct xe_reg reg, u64 val)
> > > > {
> > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > -
> > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > -         reg.addr += gt->mmio.adj_offset;
> > > > + struct xe_device *xe = gt_to_xe(gt);
> > > >
> > > > - writeq(val, tile->mmio.regs + reg.addr);
> > > > + xe->mmio_funcs->write64(gt, reg, val);
> > > > }
> > > >
> > > > static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
> > > > {
> > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > -
> > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > -         reg.addr += gt->mmio.adj_offset;
> > > > + struct xe_device *xe = gt_to_xe(gt);
> > > >
> > > > - return readq(tile->mmio.regs + reg.addr);
> > > > + return xe->mmio_funcs->read64(gt, reg);
> > > > }
> > > >
> > > > static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
> > > > --
> > > > 2.34.1
> > > >
>
> --
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation

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

* Re: [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-15 13:04         ` Oded Gabbay
@ 2023-06-15 16:34             ` Matt Roper
  0 siblings, 0 replies; 25+ messages in thread
From: Matt Roper @ 2023-06-15 16:34 UTC (permalink / raw)
  To: Oded Gabbay
  Cc: ofir1.bitton, Francois Dugast, Lucas De Marchi, dri-devel,
	ohadshar, intel-xe

On Thu, Jun 15, 2023 at 04:04:18PM +0300, Oded Gabbay wrote:
> On Thu, Jun 15, 2023 at 3:01 AM Matt Roper <matthew.d.roper@intel.com> wrote:
> >
> > On Mon, Jun 12, 2023 at 06:31:57PM +0200, Francois Dugast wrote:
> > > On Thu, Jun 08, 2023 at 10:35:29AM -0700, Lucas De Marchi wrote:
> > > > On Fri, Jun 02, 2023 at 02:25:01PM +0000, Francois Dugast wrote:
> > > > > A local structure of function pointers is used as a minimal hardware
> > > > > abstraction layer to prepare for platform independent MMIO calls.
> > > > >
> > > > > Cc: Oded Gabbay <ogabbay@kernel.org>
> > > > > Cc: Ofir Bitton <ofir1.bitton@intel.com>
> > > > > Cc: Ohad Sharabi <ohadshar@intel.com>
> > > > > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > > > > ---
> > > > > drivers/gpu/drm/xe/xe_device_types.h |  3 ++
> > > > > drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
> > > > > drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
> > > > > 3 files changed, 99 insertions(+), 20 deletions(-)
> > > > >
> > > > > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > index 17b6b1cc5adb..3f8fd0d8129b 100644
> > > > > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > > > > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > @@ -378,6 +378,9 @@ struct xe_device {
> > > > >   /** @d3cold_allowed: Indicates if d3cold is a valid device state */
> > > > >   bool d3cold_allowed;
> > > > >
> > > > > + /** @mmio_funcs: function pointers for MMIO related functions */
> > > > > + const struct xe_mmio_funcs *mmio_funcs;
> > > > > +
> > > > >   /* private: */
> > > > >
> > > > > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > index 475b14fe4356..f3d08676a77a 100644
> > > > > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > @@ -25,6 +25,62 @@
> > > > >
> > > > > #define BAR_SIZE_SHIFT 20
> > > > >
> > > > > +static void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > +                            struct xe_reg reg, u32 val);
> > > > > +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > +static void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > +                            struct xe_reg reg, u64 val);
> > > > > +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > +
> > > > > +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> > > > > + .write32 = xe_mmio_write32_device,
> > > > > + .read32 = xe_mmio_read32_device,
> > > > > + .write64 = xe_mmio_write64_device,
> > > > > + .read64 = xe_mmio_read64_device,
> > > > > +};
> > > > > +
> > > > > +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > +                            struct xe_reg reg, u32 val)
> > > > > +{
> > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > +
> > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > +
> > > > > + writel(val, tile->mmio.regs + reg.addr);
> > > > > +}
> > > > > +
> > > > > +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > +{
> > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > +
> > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > +
> > > > > + return readl(tile->mmio.regs + reg.addr);
> > > > > +}
> > > > > +
> > > > > +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > +                            struct xe_reg reg, u64 val)
> > > > > +{
> > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > +
> > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > +
> > > > > + writeq(val, tile->mmio.regs + reg.addr);
> > > > > +}
> > > > > +
> > > > > +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > +{
> > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > +
> > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > +
> > > > > + return readq(tile->mmio.regs + reg.addr);
> > > > > +}
> > > > > +
> > > > > static int xe_set_dma_info(struct xe_device *xe)
> > > > > {
> > > > >   unsigned int mask_size = xe->info.dma_mask_size;
> > > > > @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
> > > > >           iounmap(xe->mem.vram.mapping);
> > > > > }
> > > > >
> > > > > +static void xe_mmio_set_funcs(struct xe_device *xe)
> > > > > +{
> > > > > + /* For now all platforms use the set of MMIO functions for a
> > > > > +  * physical device.
> > > > > +  */
> > > >
> > > >
> > > > what is "device" in this context? that seems confusing as we always ever
> > > > just support reading/writing to a real device (physical here may also
> > > > add to the confusion when thinking about SR-IOV and VFs).
> > > > We shouldn't add abstractions that are then never used and all platforms
> > > > end up using the same. Unless it's a preparation for a follow up series
> > > > adding the different handling.
> > >
> > > For now "device" is meant as "in opposition to simulator" but I agree
> > > we can find a better name. Existing platforms all use the same
> > > implementation but this is preparation for platforms that require a
> > > different implementation.
> >
> > I agree with Lucas that this doesn't really seem to be a good candidate
> > for a vtable; every platform uses exactly the same logic and I can't
> > really envision how/why this would need to change for future platforms
> > either, so this seems to just be adding unnecessary complexity.
> > Registers being accessed at some offset into a PCI BAR isn't likely to
> > change going forward.  On future platforms it's more likely that we'd
> > need changes to the part of the code that maps the MMIO BAR rather than
> > the code that reads/writes an offset into a mapping that's already been
> > setup.
> I agree with that for every *real hardware* platform the
> implementation will probably be the same.
> But for simulator/emulation, there is a different implementation.
> And even if we don't upstream that different implementation, doing
> this abstraction will help us upstream the rest of the driver as we
> minimize the differences between upstream and downstream.
> And helping us upstream the driver is a good enough reason imo to add
> this abstraction.

Adding extra abstraction layers to upstream code that provide no
upstream benefit and only come into play for some private, internal-only
workflow is generally frowned upon in the DRM subsystem.  Unless you
have some kind of public, open-source usage model, adding the extra
complexity and clutter here is probably a no-go for upstream.

Also, even if you do have an unusual form of simulation/emulation that
doesn't behave like real hardware, are you going to have several of them
that all work in different manners and need unique implementations?  If
we only ever expect to have two code paths total (and only one of those
upstream), then using a vtable seems like overkill.  A very simple

        if (special case)
                return alternate_implementation();

would be much easier to understand and maintain.


There are lots of other places in the Xe driver that _would_ benefit
from per-platform vtables; we should prioritize making changes like this
in the areas where they provide a clear benefit.


Matt

> 
> 
> Oded
> >
> > >
> > > >
> > > > +Matt as there is still (at least) one refactor planned in this area,
> > > > since gt is not always the proper target for the MMIOs. He was saying in
> > > > his earlier series about having a mmio_view or such to abstract the
> > > > offset and other differences between each IO range. Not sure if this
> > > > series would go the rigth direction, maybe we need to think in both
> > > > cases together.
> > >
> > > Matt, would this series block the refactor mentioned by Lucas?
> > >
> > > In general, are there objections to introducing functions pointers for
> > > MMIO functions (extended to all of them, as suggested by Ohad)?
> >
> > It probably makes more sense to do vtable conversion on other parts of
> > the driver where we already have different implementations per platform
> > and where we already know that design makes sense.  We can always come
> > back and do this to the MMIO functions later once there are actually
> > multiple implementations, but it doesn't seem to serve any purpose right
> > now.
> >
> >
> > Matt
> >
> > >
> > > Thanks,
> > > Francois
> > >
> > > >
> > > >
> > > > Lucas De Marchi
> > > >
> > > > > + switch (xe->info.platform) {
> > > > > + case XE_TIGERLAKE:
> > > > > + case XE_ROCKETLAKE:
> > > > > + case XE_ALDERLAKE_S:
> > > > > + case XE_ALDERLAKE_P:
> > > > > + case XE_ALDERLAKE_N:
> > > > > + case XE_DG1:
> > > > > + case XE_DG2:
> > > > > + case XE_PVC:
> > > > > + case XE_METEORLAKE:
> > > > > +         xe->mmio_funcs = &xe_mmio_funcs_device;
> > > > > +         break;
> > > > > + default:
> > > > > +         DRM_ERROR("Unsupported platform\n");
> > > > > +         break;
> > > > > + }
> > > > > +}
> > > > > +
> > > > > int xe_mmio_init(struct xe_device *xe)
> > > > > {
> > > > >   struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> > > > > @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
> > > > >   const int mmio_bar = 0;
> > > > >   int err;
> > > > >
> > > > > + xe_mmio_set_funcs(xe);
> > > > > +
> > > > >   /*
> > > > >    * Map the first 16MB of th BAR, which includes the registers (0-4MB),
> > > > >    * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > index 3c547d78afba..80ce9de7aac4 100644
> > > > > --- a/drivers/gpu/drm/xe/xe_mmio.h
> > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > @@ -19,6 +19,13 @@ struct xe_device;
> > > > >
> > > > > #define GEN12_LMEM_BAR            2
> > > > >
> > > > > +struct xe_mmio_funcs {
> > > > > + u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> > > > > + u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> > > > > + void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> > > > > + void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> > > > > +};
> > > > > +
> > > > > int xe_mmio_init(struct xe_device *xe);
> > > > >
> > > > > static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > static inline void xe_mmio_write32(struct xe_gt *gt,
> > > > >                              struct xe_reg reg, u32 val)
> > > > > {
> > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > -
> > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > >
> > > > > - writel(val, tile->mmio.regs + reg.addr);
> > > > > + xe->mmio_funcs->write32(gt, reg, val);
> > > > > }
> > > > >
> > > > > static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> > > > > {
> > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > -
> > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > >
> > > > > - return readl(tile->mmio.regs + reg.addr);
> > > > > + return xe->mmio_funcs->read32(gt, reg);
> > > > > }
> > > > >
> > > > > static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > static inline void xe_mmio_write64(struct xe_gt *gt,
> > > > >                              struct xe_reg reg, u64 val)
> > > > > {
> > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > -
> > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > >
> > > > > - writeq(val, tile->mmio.regs + reg.addr);
> > > > > + xe->mmio_funcs->write64(gt, reg, val);
> > > > > }
> > > > >
> > > > > static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
> > > > > {
> > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > -
> > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > >
> > > > > - return readq(tile->mmio.regs + reg.addr);
> > > > > + return xe->mmio_funcs->read64(gt, reg);
> > > > > }
> > > > >
> > > > > static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
> > > > > --
> > > > > 2.34.1
> > > > >
> >
> > --
> > Matt Roper
> > Graphics Software Engineer
> > Linux GPU Platform Enablement
> > Intel Corporation

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
@ 2023-06-15 16:34             ` Matt Roper
  0 siblings, 0 replies; 25+ messages in thread
From: Matt Roper @ 2023-06-15 16:34 UTC (permalink / raw)
  To: Oded Gabbay
  Cc: ofir1.bitton, Lucas De Marchi, dri-devel, Daniel Vetter,
	ohadshar, intel-xe

On Thu, Jun 15, 2023 at 04:04:18PM +0300, Oded Gabbay wrote:
> On Thu, Jun 15, 2023 at 3:01 AM Matt Roper <matthew.d.roper@intel.com> wrote:
> >
> > On Mon, Jun 12, 2023 at 06:31:57PM +0200, Francois Dugast wrote:
> > > On Thu, Jun 08, 2023 at 10:35:29AM -0700, Lucas De Marchi wrote:
> > > > On Fri, Jun 02, 2023 at 02:25:01PM +0000, Francois Dugast wrote:
> > > > > A local structure of function pointers is used as a minimal hardware
> > > > > abstraction layer to prepare for platform independent MMIO calls.
> > > > >
> > > > > Cc: Oded Gabbay <ogabbay@kernel.org>
> > > > > Cc: Ofir Bitton <ofir1.bitton@intel.com>
> > > > > Cc: Ohad Sharabi <ohadshar@intel.com>
> > > > > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > > > > ---
> > > > > drivers/gpu/drm/xe/xe_device_types.h |  3 ++
> > > > > drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
> > > > > drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
> > > > > 3 files changed, 99 insertions(+), 20 deletions(-)
> > > > >
> > > > > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > index 17b6b1cc5adb..3f8fd0d8129b 100644
> > > > > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > > > > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > @@ -378,6 +378,9 @@ struct xe_device {
> > > > >   /** @d3cold_allowed: Indicates if d3cold is a valid device state */
> > > > >   bool d3cold_allowed;
> > > > >
> > > > > + /** @mmio_funcs: function pointers for MMIO related functions */
> > > > > + const struct xe_mmio_funcs *mmio_funcs;
> > > > > +
> > > > >   /* private: */
> > > > >
> > > > > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > index 475b14fe4356..f3d08676a77a 100644
> > > > > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > @@ -25,6 +25,62 @@
> > > > >
> > > > > #define BAR_SIZE_SHIFT 20
> > > > >
> > > > > +static void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > +                            struct xe_reg reg, u32 val);
> > > > > +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > +static void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > +                            struct xe_reg reg, u64 val);
> > > > > +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > +
> > > > > +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> > > > > + .write32 = xe_mmio_write32_device,
> > > > > + .read32 = xe_mmio_read32_device,
> > > > > + .write64 = xe_mmio_write64_device,
> > > > > + .read64 = xe_mmio_read64_device,
> > > > > +};
> > > > > +
> > > > > +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > +                            struct xe_reg reg, u32 val)
> > > > > +{
> > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > +
> > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > +
> > > > > + writel(val, tile->mmio.regs + reg.addr);
> > > > > +}
> > > > > +
> > > > > +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > +{
> > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > +
> > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > +
> > > > > + return readl(tile->mmio.regs + reg.addr);
> > > > > +}
> > > > > +
> > > > > +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > +                            struct xe_reg reg, u64 val)
> > > > > +{
> > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > +
> > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > +
> > > > > + writeq(val, tile->mmio.regs + reg.addr);
> > > > > +}
> > > > > +
> > > > > +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > +{
> > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > +
> > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > +
> > > > > + return readq(tile->mmio.regs + reg.addr);
> > > > > +}
> > > > > +
> > > > > static int xe_set_dma_info(struct xe_device *xe)
> > > > > {
> > > > >   unsigned int mask_size = xe->info.dma_mask_size;
> > > > > @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
> > > > >           iounmap(xe->mem.vram.mapping);
> > > > > }
> > > > >
> > > > > +static void xe_mmio_set_funcs(struct xe_device *xe)
> > > > > +{
> > > > > + /* For now all platforms use the set of MMIO functions for a
> > > > > +  * physical device.
> > > > > +  */
> > > >
> > > >
> > > > what is "device" in this context? that seems confusing as we always ever
> > > > just support reading/writing to a real device (physical here may also
> > > > add to the confusion when thinking about SR-IOV and VFs).
> > > > We shouldn't add abstractions that are then never used and all platforms
> > > > end up using the same. Unless it's a preparation for a follow up series
> > > > adding the different handling.
> > >
> > > For now "device" is meant as "in opposition to simulator" but I agree
> > > we can find a better name. Existing platforms all use the same
> > > implementation but this is preparation for platforms that require a
> > > different implementation.
> >
> > I agree with Lucas that this doesn't really seem to be a good candidate
> > for a vtable; every platform uses exactly the same logic and I can't
> > really envision how/why this would need to change for future platforms
> > either, so this seems to just be adding unnecessary complexity.
> > Registers being accessed at some offset into a PCI BAR isn't likely to
> > change going forward.  On future platforms it's more likely that we'd
> > need changes to the part of the code that maps the MMIO BAR rather than
> > the code that reads/writes an offset into a mapping that's already been
> > setup.
> I agree with that for every *real hardware* platform the
> implementation will probably be the same.
> But for simulator/emulation, there is a different implementation.
> And even if we don't upstream that different implementation, doing
> this abstraction will help us upstream the rest of the driver as we
> minimize the differences between upstream and downstream.
> And helping us upstream the driver is a good enough reason imo to add
> this abstraction.

Adding extra abstraction layers to upstream code that provide no
upstream benefit and only come into play for some private, internal-only
workflow is generally frowned upon in the DRM subsystem.  Unless you
have some kind of public, open-source usage model, adding the extra
complexity and clutter here is probably a no-go for upstream.

Also, even if you do have an unusual form of simulation/emulation that
doesn't behave like real hardware, are you going to have several of them
that all work in different manners and need unique implementations?  If
we only ever expect to have two code paths total (and only one of those
upstream), then using a vtable seems like overkill.  A very simple

        if (special case)
                return alternate_implementation();

would be much easier to understand and maintain.


There are lots of other places in the Xe driver that _would_ benefit
from per-platform vtables; we should prioritize making changes like this
in the areas where they provide a clear benefit.


Matt

> 
> 
> Oded
> >
> > >
> > > >
> > > > +Matt as there is still (at least) one refactor planned in this area,
> > > > since gt is not always the proper target for the MMIOs. He was saying in
> > > > his earlier series about having a mmio_view or such to abstract the
> > > > offset and other differences between each IO range. Not sure if this
> > > > series would go the rigth direction, maybe we need to think in both
> > > > cases together.
> > >
> > > Matt, would this series block the refactor mentioned by Lucas?
> > >
> > > In general, are there objections to introducing functions pointers for
> > > MMIO functions (extended to all of them, as suggested by Ohad)?
> >
> > It probably makes more sense to do vtable conversion on other parts of
> > the driver where we already have different implementations per platform
> > and where we already know that design makes sense.  We can always come
> > back and do this to the MMIO functions later once there are actually
> > multiple implementations, but it doesn't seem to serve any purpose right
> > now.
> >
> >
> > Matt
> >
> > >
> > > Thanks,
> > > Francois
> > >
> > > >
> > > >
> > > > Lucas De Marchi
> > > >
> > > > > + switch (xe->info.platform) {
> > > > > + case XE_TIGERLAKE:
> > > > > + case XE_ROCKETLAKE:
> > > > > + case XE_ALDERLAKE_S:
> > > > > + case XE_ALDERLAKE_P:
> > > > > + case XE_ALDERLAKE_N:
> > > > > + case XE_DG1:
> > > > > + case XE_DG2:
> > > > > + case XE_PVC:
> > > > > + case XE_METEORLAKE:
> > > > > +         xe->mmio_funcs = &xe_mmio_funcs_device;
> > > > > +         break;
> > > > > + default:
> > > > > +         DRM_ERROR("Unsupported platform\n");
> > > > > +         break;
> > > > > + }
> > > > > +}
> > > > > +
> > > > > int xe_mmio_init(struct xe_device *xe)
> > > > > {
> > > > >   struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> > > > > @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
> > > > >   const int mmio_bar = 0;
> > > > >   int err;
> > > > >
> > > > > + xe_mmio_set_funcs(xe);
> > > > > +
> > > > >   /*
> > > > >    * Map the first 16MB of th BAR, which includes the registers (0-4MB),
> > > > >    * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > index 3c547d78afba..80ce9de7aac4 100644
> > > > > --- a/drivers/gpu/drm/xe/xe_mmio.h
> > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > @@ -19,6 +19,13 @@ struct xe_device;
> > > > >
> > > > > #define GEN12_LMEM_BAR            2
> > > > >
> > > > > +struct xe_mmio_funcs {
> > > > > + u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> > > > > + u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> > > > > + void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> > > > > + void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> > > > > +};
> > > > > +
> > > > > int xe_mmio_init(struct xe_device *xe);
> > > > >
> > > > > static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > static inline void xe_mmio_write32(struct xe_gt *gt,
> > > > >                              struct xe_reg reg, u32 val)
> > > > > {
> > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > -
> > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > >
> > > > > - writel(val, tile->mmio.regs + reg.addr);
> > > > > + xe->mmio_funcs->write32(gt, reg, val);
> > > > > }
> > > > >
> > > > > static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> > > > > {
> > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > -
> > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > >
> > > > > - return readl(tile->mmio.regs + reg.addr);
> > > > > + return xe->mmio_funcs->read32(gt, reg);
> > > > > }
> > > > >
> > > > > static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > static inline void xe_mmio_write64(struct xe_gt *gt,
> > > > >                              struct xe_reg reg, u64 val)
> > > > > {
> > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > -
> > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > >
> > > > > - writeq(val, tile->mmio.regs + reg.addr);
> > > > > + xe->mmio_funcs->write64(gt, reg, val);
> > > > > }
> > > > >
> > > > > static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
> > > > > {
> > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > -
> > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > >
> > > > > - return readq(tile->mmio.regs + reg.addr);
> > > > > + return xe->mmio_funcs->read64(gt, reg);
> > > > > }
> > > > >
> > > > > static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
> > > > > --
> > > > > 2.34.1
> > > > >
> >
> > --
> > Matt Roper
> > Graphics Software Engineer
> > Linux GPU Platform Enablement
> > Intel Corporation

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

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

* Re: [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-15 16:34             ` Matt Roper
@ 2023-06-18  8:25               ` Oded Gabbay
  -1 siblings, 0 replies; 25+ messages in thread
From: Oded Gabbay @ 2023-06-18  8:25 UTC (permalink / raw)
  To: Matt Roper
  Cc: ofir1.bitton, Francois Dugast, Lucas De Marchi, dri-devel,
	ohadshar, intel-xe

On Thu, Jun 15, 2023 at 7:34 PM Matt Roper <matthew.d.roper@intel.com> wrote:
>
> On Thu, Jun 15, 2023 at 04:04:18PM +0300, Oded Gabbay wrote:
> > On Thu, Jun 15, 2023 at 3:01 AM Matt Roper <matthew.d.roper@intel.com> wrote:
> > >
> > > On Mon, Jun 12, 2023 at 06:31:57PM +0200, Francois Dugast wrote:
> > > > On Thu, Jun 08, 2023 at 10:35:29AM -0700, Lucas De Marchi wrote:
> > > > > On Fri, Jun 02, 2023 at 02:25:01PM +0000, Francois Dugast wrote:
> > > > > > A local structure of function pointers is used as a minimal hardware
> > > > > > abstraction layer to prepare for platform independent MMIO calls.
> > > > > >
> > > > > > Cc: Oded Gabbay <ogabbay@kernel.org>
> > > > > > Cc: Ofir Bitton <ofir1.bitton@intel.com>
> > > > > > Cc: Ohad Sharabi <ohadshar@intel.com>
> > > > > > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > > > > > ---
> > > > > > drivers/gpu/drm/xe/xe_device_types.h |  3 ++
> > > > > > drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
> > > > > > drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
> > > > > > 3 files changed, 99 insertions(+), 20 deletions(-)
> > > > > >
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > index 17b6b1cc5adb..3f8fd0d8129b 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > @@ -378,6 +378,9 @@ struct xe_device {
> > > > > >   /** @d3cold_allowed: Indicates if d3cold is a valid device state */
> > > > > >   bool d3cold_allowed;
> > > > > >
> > > > > > + /** @mmio_funcs: function pointers for MMIO related functions */
> > > > > > + const struct xe_mmio_funcs *mmio_funcs;
> > > > > > +
> > > > > >   /* private: */
> > > > > >
> > > > > > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > index 475b14fe4356..f3d08676a77a 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > @@ -25,6 +25,62 @@
> > > > > >
> > > > > > #define BAR_SIZE_SHIFT 20
> > > > > >
> > > > > > +static void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u32 val);
> > > > > > +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > > +static void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u64 val);
> > > > > > +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > > +
> > > > > > +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> > > > > > + .write32 = xe_mmio_write32_device,
> > > > > > + .read32 = xe_mmio_read32_device,
> > > > > > + .write64 = xe_mmio_write64_device,
> > > > > > + .read64 = xe_mmio_read64_device,
> > > > > > +};
> > > > > > +
> > > > > > +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u32 val)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + writel(val, tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + return readl(tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u64 val)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + writeq(val, tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + return readq(tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > static int xe_set_dma_info(struct xe_device *xe)
> > > > > > {
> > > > > >   unsigned int mask_size = xe->info.dma_mask_size;
> > > > > > @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
> > > > > >           iounmap(xe->mem.vram.mapping);
> > > > > > }
> > > > > >
> > > > > > +static void xe_mmio_set_funcs(struct xe_device *xe)
> > > > > > +{
> > > > > > + /* For now all platforms use the set of MMIO functions for a
> > > > > > +  * physical device.
> > > > > > +  */
> > > > >
> > > > >
> > > > > what is "device" in this context? that seems confusing as we always ever
> > > > > just support reading/writing to a real device (physical here may also
> > > > > add to the confusion when thinking about SR-IOV and VFs).
> > > > > We shouldn't add abstractions that are then never used and all platforms
> > > > > end up using the same. Unless it's a preparation for a follow up series
> > > > > adding the different handling.
> > > >
> > > > For now "device" is meant as "in opposition to simulator" but I agree
> > > > we can find a better name. Existing platforms all use the same
> > > > implementation but this is preparation for platforms that require a
> > > > different implementation.
> > >
> > > I agree with Lucas that this doesn't really seem to be a good candidate
> > > for a vtable; every platform uses exactly the same logic and I can't
> > > really envision how/why this would need to change for future platforms
> > > either, so this seems to just be adding unnecessary complexity.
> > > Registers being accessed at some offset into a PCI BAR isn't likely to
> > > change going forward.  On future platforms it's more likely that we'd
> > > need changes to the part of the code that maps the MMIO BAR rather than
> > > the code that reads/writes an offset into a mapping that's already been
> > > setup.
> > I agree with that for every *real hardware* platform the
> > implementation will probably be the same.
> > But for simulator/emulation, there is a different implementation.
> > And even if we don't upstream that different implementation, doing
> > this abstraction will help us upstream the rest of the driver as we
> > minimize the differences between upstream and downstream.
> > And helping us upstream the driver is a good enough reason imo to add
> > this abstraction.
>
> Adding extra abstraction layers to upstream code that provide no
> upstream benefit and only come into play for some private, internal-only
> workflow is generally frowned upon in the DRM subsystem.  Unless you
> have some kind of public, open-source usage model, adding the extra
> complexity and clutter here is probably a no-go for upstream.
While in general I ofc agree with this statement, I believe it doesn't
apply to this case.

The intention behind changing register access to be callback functions
is to allow the Linux driver to serve as the principal entity for
pre-silicon validation . This is an important distinction, as the aim
is not to obscure the Linux kernel API for portability across other
operating systems or to reinvent mechanisms already provided by the
kernel, which I believe is the primary objection of upstream for
adding abstraction layers.

Instead, this strategy is about utilizing the inherent advantages of
Linux for the crucial stage of pre-silicon validation. In fact,
adopting Linux as the main vessel for this process can help leverage a
broader open source community for problem-solving, encourage more
uniform testing practices, and result in higher quality drivers due to
the transparency and scrutiny inherent in open-source development.

Making the upstream driver as close as possible to the internal driver
is advantageous for both the speed and quality of the upstreaming
process. A driver that closely mirrors the internal one will likely
require fewer modifications, thus streamlining the upstreaming
process. With a closely aligned internal and upstream driver, the
benefits of any improvements, bug fixes, and other modifications made
in the internal driver could be quickly and easily transferred to the
upstream driver.

In short, this change will allow us to do a continuously faster and
better upstream process, which imho provides a substantial benefit to
the kernel community.

>
> Also, even if you do have an unusual form of simulation/emulation that
> doesn't behave like real hardware, are you going to have several of them
> that all work in different manners and need unique implementations?  If
> we only ever expect to have two code paths total (and only one of those
> upstream), then using a vtable seems like overkill.  A very simple
>
>         if (special case)
>                 return alternate_implementation();
>
> would be much easier to understand and maintain.
Specifically in this case (register access), as I don't foresee more
than two implementations, we can go with your suggestion.
i.e. add to the mmio inline functions

if (sim)
    return alternate_implementation();

If there is no objection, we will follow this approach and send a
patch for review.

Thanks,
Oded
>
>
> There are lots of other places in the Xe driver that _would_ benefit
> from per-platform vtables; we should prioritize making changes like this
> in the areas where they provide a clear benefit.
>
>
> Matt
>
> >
> >
> > Oded
> > >
> > > >
> > > > >
> > > > > +Matt as there is still (at least) one refactor planned in this area,
> > > > > since gt is not always the proper target for the MMIOs. He was saying in
> > > > > his earlier series about having a mmio_view or such to abstract the
> > > > > offset and other differences between each IO range. Not sure if this
> > > > > series would go the rigth direction, maybe we need to think in both
> > > > > cases together.
> > > >
> > > > Matt, would this series block the refactor mentioned by Lucas?
> > > >
> > > > In general, are there objections to introducing functions pointers for
> > > > MMIO functions (extended to all of them, as suggested by Ohad)?
> > >
> > > It probably makes more sense to do vtable conversion on other parts of
> > > the driver where we already have different implementations per platform
> > > and where we already know that design makes sense.  We can always come
> > > back and do this to the MMIO functions later once there are actually
> > > multiple implementations, but it doesn't seem to serve any purpose right
> > > now.
> > >
> > >
> > > Matt
> > >
> > > >
> > > > Thanks,
> > > > Francois
> > > >
> > > > >
> > > > >
> > > > > Lucas De Marchi
> > > > >
> > > > > > + switch (xe->info.platform) {
> > > > > > + case XE_TIGERLAKE:
> > > > > > + case XE_ROCKETLAKE:
> > > > > > + case XE_ALDERLAKE_S:
> > > > > > + case XE_ALDERLAKE_P:
> > > > > > + case XE_ALDERLAKE_N:
> > > > > > + case XE_DG1:
> > > > > > + case XE_DG2:
> > > > > > + case XE_PVC:
> > > > > > + case XE_METEORLAKE:
> > > > > > +         xe->mmio_funcs = &xe_mmio_funcs_device;
> > > > > > +         break;
> > > > > > + default:
> > > > > > +         DRM_ERROR("Unsupported platform\n");
> > > > > > +         break;
> > > > > > + }
> > > > > > +}
> > > > > > +
> > > > > > int xe_mmio_init(struct xe_device *xe)
> > > > > > {
> > > > > >   struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> > > > > > @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
> > > > > >   const int mmio_bar = 0;
> > > > > >   int err;
> > > > > >
> > > > > > + xe_mmio_set_funcs(xe);
> > > > > > +
> > > > > >   /*
> > > > > >    * Map the first 16MB of th BAR, which includes the registers (0-4MB),
> > > > > >    * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > index 3c547d78afba..80ce9de7aac4 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > @@ -19,6 +19,13 @@ struct xe_device;
> > > > > >
> > > > > > #define GEN12_LMEM_BAR            2
> > > > > >
> > > > > > +struct xe_mmio_funcs {
> > > > > > + u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> > > > > > + u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> > > > > > + void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> > > > > > + void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> > > > > > +};
> > > > > > +
> > > > > > int xe_mmio_init(struct xe_device *xe);
> > > > > >
> > > > > > static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > > @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > > static inline void xe_mmio_write32(struct xe_gt *gt,
> > > > > >                              struct xe_reg reg, u32 val)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - writel(val, tile->mmio.regs + reg.addr);
> > > > > > + xe->mmio_funcs->write32(gt, reg, val);
> > > > > > }
> > > > > >
> > > > > > static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - return readl(tile->mmio.regs + reg.addr);
> > > > > > + return xe->mmio_funcs->read32(gt, reg);
> > > > > > }
> > > > > >
> > > > > > static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > > @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > > static inline void xe_mmio_write64(struct xe_gt *gt,
> > > > > >                              struct xe_reg reg, u64 val)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - writeq(val, tile->mmio.regs + reg.addr);
> > > > > > + xe->mmio_funcs->write64(gt, reg, val);
> > > > > > }
> > > > > >
> > > > > > static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - return readq(tile->mmio.regs + reg.addr);
> > > > > > + return xe->mmio_funcs->read64(gt, reg);
> > > > > > }
> > > > > >
> > > > > > static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
> > > > > > --
> > > > > > 2.34.1
> > > > > >
> > >
> > > --
> > > Matt Roper
> > > Graphics Software Engineer
> > > Linux GPU Platform Enablement
> > > Intel Corporation
>
> --
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation

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

* Re: [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
@ 2023-06-18  8:25               ` Oded Gabbay
  0 siblings, 0 replies; 25+ messages in thread
From: Oded Gabbay @ 2023-06-18  8:25 UTC (permalink / raw)
  To: Matt Roper; +Cc: ofir1.bitton, Lucas De Marchi, dri-devel, ohadshar, intel-xe

On Thu, Jun 15, 2023 at 7:34 PM Matt Roper <matthew.d.roper@intel.com> wrote:
>
> On Thu, Jun 15, 2023 at 04:04:18PM +0300, Oded Gabbay wrote:
> > On Thu, Jun 15, 2023 at 3:01 AM Matt Roper <matthew.d.roper@intel.com> wrote:
> > >
> > > On Mon, Jun 12, 2023 at 06:31:57PM +0200, Francois Dugast wrote:
> > > > On Thu, Jun 08, 2023 at 10:35:29AM -0700, Lucas De Marchi wrote:
> > > > > On Fri, Jun 02, 2023 at 02:25:01PM +0000, Francois Dugast wrote:
> > > > > > A local structure of function pointers is used as a minimal hardware
> > > > > > abstraction layer to prepare for platform independent MMIO calls.
> > > > > >
> > > > > > Cc: Oded Gabbay <ogabbay@kernel.org>
> > > > > > Cc: Ofir Bitton <ofir1.bitton@intel.com>
> > > > > > Cc: Ohad Sharabi <ohadshar@intel.com>
> > > > > > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > > > > > ---
> > > > > > drivers/gpu/drm/xe/xe_device_types.h |  3 ++
> > > > > > drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
> > > > > > drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
> > > > > > 3 files changed, 99 insertions(+), 20 deletions(-)
> > > > > >
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > index 17b6b1cc5adb..3f8fd0d8129b 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > @@ -378,6 +378,9 @@ struct xe_device {
> > > > > >   /** @d3cold_allowed: Indicates if d3cold is a valid device state */
> > > > > >   bool d3cold_allowed;
> > > > > >
> > > > > > + /** @mmio_funcs: function pointers for MMIO related functions */
> > > > > > + const struct xe_mmio_funcs *mmio_funcs;
> > > > > > +
> > > > > >   /* private: */
> > > > > >
> > > > > > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > index 475b14fe4356..f3d08676a77a 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > @@ -25,6 +25,62 @@
> > > > > >
> > > > > > #define BAR_SIZE_SHIFT 20
> > > > > >
> > > > > > +static void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u32 val);
> > > > > > +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > > +static void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u64 val);
> > > > > > +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > > +
> > > > > > +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> > > > > > + .write32 = xe_mmio_write32_device,
> > > > > > + .read32 = xe_mmio_read32_device,
> > > > > > + .write64 = xe_mmio_write64_device,
> > > > > > + .read64 = xe_mmio_read64_device,
> > > > > > +};
> > > > > > +
> > > > > > +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u32 val)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + writel(val, tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + return readl(tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u64 val)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + writeq(val, tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + return readq(tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > static int xe_set_dma_info(struct xe_device *xe)
> > > > > > {
> > > > > >   unsigned int mask_size = xe->info.dma_mask_size;
> > > > > > @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
> > > > > >           iounmap(xe->mem.vram.mapping);
> > > > > > }
> > > > > >
> > > > > > +static void xe_mmio_set_funcs(struct xe_device *xe)
> > > > > > +{
> > > > > > + /* For now all platforms use the set of MMIO functions for a
> > > > > > +  * physical device.
> > > > > > +  */
> > > > >
> > > > >
> > > > > what is "device" in this context? that seems confusing as we always ever
> > > > > just support reading/writing to a real device (physical here may also
> > > > > add to the confusion when thinking about SR-IOV and VFs).
> > > > > We shouldn't add abstractions that are then never used and all platforms
> > > > > end up using the same. Unless it's a preparation for a follow up series
> > > > > adding the different handling.
> > > >
> > > > For now "device" is meant as "in opposition to simulator" but I agree
> > > > we can find a better name. Existing platforms all use the same
> > > > implementation but this is preparation for platforms that require a
> > > > different implementation.
> > >
> > > I agree with Lucas that this doesn't really seem to be a good candidate
> > > for a vtable; every platform uses exactly the same logic and I can't
> > > really envision how/why this would need to change for future platforms
> > > either, so this seems to just be adding unnecessary complexity.
> > > Registers being accessed at some offset into a PCI BAR isn't likely to
> > > change going forward.  On future platforms it's more likely that we'd
> > > need changes to the part of the code that maps the MMIO BAR rather than
> > > the code that reads/writes an offset into a mapping that's already been
> > > setup.
> > I agree with that for every *real hardware* platform the
> > implementation will probably be the same.
> > But for simulator/emulation, there is a different implementation.
> > And even if we don't upstream that different implementation, doing
> > this abstraction will help us upstream the rest of the driver as we
> > minimize the differences between upstream and downstream.
> > And helping us upstream the driver is a good enough reason imo to add
> > this abstraction.
>
> Adding extra abstraction layers to upstream code that provide no
> upstream benefit and only come into play for some private, internal-only
> workflow is generally frowned upon in the DRM subsystem.  Unless you
> have some kind of public, open-source usage model, adding the extra
> complexity and clutter here is probably a no-go for upstream.
While in general I ofc agree with this statement, I believe it doesn't
apply to this case.

The intention behind changing register access to be callback functions
is to allow the Linux driver to serve as the principal entity for
pre-silicon validation . This is an important distinction, as the aim
is not to obscure the Linux kernel API for portability across other
operating systems or to reinvent mechanisms already provided by the
kernel, which I believe is the primary objection of upstream for
adding abstraction layers.

Instead, this strategy is about utilizing the inherent advantages of
Linux for the crucial stage of pre-silicon validation. In fact,
adopting Linux as the main vessel for this process can help leverage a
broader open source community for problem-solving, encourage more
uniform testing practices, and result in higher quality drivers due to
the transparency and scrutiny inherent in open-source development.

Making the upstream driver as close as possible to the internal driver
is advantageous for both the speed and quality of the upstreaming
process. A driver that closely mirrors the internal one will likely
require fewer modifications, thus streamlining the upstreaming
process. With a closely aligned internal and upstream driver, the
benefits of any improvements, bug fixes, and other modifications made
in the internal driver could be quickly and easily transferred to the
upstream driver.

In short, this change will allow us to do a continuously faster and
better upstream process, which imho provides a substantial benefit to
the kernel community.

>
> Also, even if you do have an unusual form of simulation/emulation that
> doesn't behave like real hardware, are you going to have several of them
> that all work in different manners and need unique implementations?  If
> we only ever expect to have two code paths total (and only one of those
> upstream), then using a vtable seems like overkill.  A very simple
>
>         if (special case)
>                 return alternate_implementation();
>
> would be much easier to understand and maintain.
Specifically in this case (register access), as I don't foresee more
than two implementations, we can go with your suggestion.
i.e. add to the mmio inline functions

if (sim)
    return alternate_implementation();

If there is no objection, we will follow this approach and send a
patch for review.

Thanks,
Oded
>
>
> There are lots of other places in the Xe driver that _would_ benefit
> from per-platform vtables; we should prioritize making changes like this
> in the areas where they provide a clear benefit.
>
>
> Matt
>
> >
> >
> > Oded
> > >
> > > >
> > > > >
> > > > > +Matt as there is still (at least) one refactor planned in this area,
> > > > > since gt is not always the proper target for the MMIOs. He was saying in
> > > > > his earlier series about having a mmio_view or such to abstract the
> > > > > offset and other differences between each IO range. Not sure if this
> > > > > series would go the rigth direction, maybe we need to think in both
> > > > > cases together.
> > > >
> > > > Matt, would this series block the refactor mentioned by Lucas?
> > > >
> > > > In general, are there objections to introducing functions pointers for
> > > > MMIO functions (extended to all of them, as suggested by Ohad)?
> > >
> > > It probably makes more sense to do vtable conversion on other parts of
> > > the driver where we already have different implementations per platform
> > > and where we already know that design makes sense.  We can always come
> > > back and do this to the MMIO functions later once there are actually
> > > multiple implementations, but it doesn't seem to serve any purpose right
> > > now.
> > >
> > >
> > > Matt
> > >
> > > >
> > > > Thanks,
> > > > Francois
> > > >
> > > > >
> > > > >
> > > > > Lucas De Marchi
> > > > >
> > > > > > + switch (xe->info.platform) {
> > > > > > + case XE_TIGERLAKE:
> > > > > > + case XE_ROCKETLAKE:
> > > > > > + case XE_ALDERLAKE_S:
> > > > > > + case XE_ALDERLAKE_P:
> > > > > > + case XE_ALDERLAKE_N:
> > > > > > + case XE_DG1:
> > > > > > + case XE_DG2:
> > > > > > + case XE_PVC:
> > > > > > + case XE_METEORLAKE:
> > > > > > +         xe->mmio_funcs = &xe_mmio_funcs_device;
> > > > > > +         break;
> > > > > > + default:
> > > > > > +         DRM_ERROR("Unsupported platform\n");
> > > > > > +         break;
> > > > > > + }
> > > > > > +}
> > > > > > +
> > > > > > int xe_mmio_init(struct xe_device *xe)
> > > > > > {
> > > > > >   struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> > > > > > @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
> > > > > >   const int mmio_bar = 0;
> > > > > >   int err;
> > > > > >
> > > > > > + xe_mmio_set_funcs(xe);
> > > > > > +
> > > > > >   /*
> > > > > >    * Map the first 16MB of th BAR, which includes the registers (0-4MB),
> > > > > >    * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > index 3c547d78afba..80ce9de7aac4 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > @@ -19,6 +19,13 @@ struct xe_device;
> > > > > >
> > > > > > #define GEN12_LMEM_BAR            2
> > > > > >
> > > > > > +struct xe_mmio_funcs {
> > > > > > + u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> > > > > > + u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> > > > > > + void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> > > > > > + void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> > > > > > +};
> > > > > > +
> > > > > > int xe_mmio_init(struct xe_device *xe);
> > > > > >
> > > > > > static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > > @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > > static inline void xe_mmio_write32(struct xe_gt *gt,
> > > > > >                              struct xe_reg reg, u32 val)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - writel(val, tile->mmio.regs + reg.addr);
> > > > > > + xe->mmio_funcs->write32(gt, reg, val);
> > > > > > }
> > > > > >
> > > > > > static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - return readl(tile->mmio.regs + reg.addr);
> > > > > > + return xe->mmio_funcs->read32(gt, reg);
> > > > > > }
> > > > > >
> > > > > > static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > > @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > > static inline void xe_mmio_write64(struct xe_gt *gt,
> > > > > >                              struct xe_reg reg, u64 val)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - writeq(val, tile->mmio.regs + reg.addr);
> > > > > > + xe->mmio_funcs->write64(gt, reg, val);
> > > > > > }
> > > > > >
> > > > > > static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - return readq(tile->mmio.regs + reg.addr);
> > > > > > + return xe->mmio_funcs->read64(gt, reg);
> > > > > > }
> > > > > >
> > > > > > static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
> > > > > > --
> > > > > > 2.34.1
> > > > > >
> > >
> > > --
> > > Matt Roper
> > > Graphics Software Engineer
> > > Linux GPU Platform Enablement
> > > Intel Corporation
>
> --
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation

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

* Re: [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-15 16:34             ` Matt Roper
@ 2023-06-18  8:28               ` Oded Gabbay
  -1 siblings, 0 replies; 25+ messages in thread
From: Oded Gabbay @ 2023-06-18  8:28 UTC (permalink / raw)
  To: Matt Roper
  Cc: ofir1.bitton, Francois Dugast, Lucas De Marchi, dri-devel,
	ohadshar, intel-xe

On Thu, Jun 15, 2023 at 7:34 PM Matt Roper <matthew.d.roper@intel.com> wrote:
>
> On Thu, Jun 15, 2023 at 04:04:18PM +0300, Oded Gabbay wrote:
> > On Thu, Jun 15, 2023 at 3:01 AM Matt Roper <matthew.d.roper@intel.com> wrote:
> > >
> > > On Mon, Jun 12, 2023 at 06:31:57PM +0200, Francois Dugast wrote:
> > > > On Thu, Jun 08, 2023 at 10:35:29AM -0700, Lucas De Marchi wrote:
> > > > > On Fri, Jun 02, 2023 at 02:25:01PM +0000, Francois Dugast wrote:
> > > > > > A local structure of function pointers is used as a minimal hardware
> > > > > > abstraction layer to prepare for platform independent MMIO calls.
> > > > > >
> > > > > > Cc: Oded Gabbay <ogabbay@kernel.org>
> > > > > > Cc: Ofir Bitton <ofir1.bitton@intel.com>
> > > > > > Cc: Ohad Sharabi <ohadshar@intel.com>
> > > > > > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > > > > > ---
> > > > > > drivers/gpu/drm/xe/xe_device_types.h |  3 ++
> > > > > > drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
> > > > > > drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
> > > > > > 3 files changed, 99 insertions(+), 20 deletions(-)
> > > > > >
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > index 17b6b1cc5adb..3f8fd0d8129b 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > @@ -378,6 +378,9 @@ struct xe_device {
> > > > > >   /** @d3cold_allowed: Indicates if d3cold is a valid device state */
> > > > > >   bool d3cold_allowed;
> > > > > >
> > > > > > + /** @mmio_funcs: function pointers for MMIO related functions */
> > > > > > + const struct xe_mmio_funcs *mmio_funcs;
> > > > > > +
> > > > > >   /* private: */
> > > > > >
> > > > > > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > index 475b14fe4356..f3d08676a77a 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > @@ -25,6 +25,62 @@
> > > > > >
> > > > > > #define BAR_SIZE_SHIFT 20
> > > > > >
> > > > > > +static void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u32 val);
> > > > > > +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > > +static void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u64 val);
> > > > > > +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > > +
> > > > > > +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> > > > > > + .write32 = xe_mmio_write32_device,
> > > > > > + .read32 = xe_mmio_read32_device,
> > > > > > + .write64 = xe_mmio_write64_device,
> > > > > > + .read64 = xe_mmio_read64_device,
> > > > > > +};
> > > > > > +
> > > > > > +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u32 val)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + writel(val, tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + return readl(tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u64 val)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + writeq(val, tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + return readq(tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > static int xe_set_dma_info(struct xe_device *xe)
> > > > > > {
> > > > > >   unsigned int mask_size = xe->info.dma_mask_size;
> > > > > > @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
> > > > > >           iounmap(xe->mem.vram.mapping);
> > > > > > }
> > > > > >
> > > > > > +static void xe_mmio_set_funcs(struct xe_device *xe)
> > > > > > +{
> > > > > > + /* For now all platforms use the set of MMIO functions for a
> > > > > > +  * physical device.
> > > > > > +  */
> > > > >
> > > > >
> > > > > what is "device" in this context? that seems confusing as we always ever
> > > > > just support reading/writing to a real device (physical here may also
> > > > > add to the confusion when thinking about SR-IOV and VFs).
> > > > > We shouldn't add abstractions that are then never used and all platforms
> > > > > end up using the same. Unless it's a preparation for a follow up series
> > > > > adding the different handling.
> > > >
> > > > For now "device" is meant as "in opposition to simulator" but I agree
> > > > we can find a better name. Existing platforms all use the same
> > > > implementation but this is preparation for platforms that require a
> > > > different implementation.
> > >
> > > I agree with Lucas that this doesn't really seem to be a good candidate
> > > for a vtable; every platform uses exactly the same logic and I can't
> > > really envision how/why this would need to change for future platforms
> > > either, so this seems to just be adding unnecessary complexity.
> > > Registers being accessed at some offset into a PCI BAR isn't likely to
> > > change going forward.  On future platforms it's more likely that we'd
> > > need changes to the part of the code that maps the MMIO BAR rather than
> > > the code that reads/writes an offset into a mapping that's already been
> > > setup.
> > I agree with that for every *real hardware* platform the
> > implementation will probably be the same.
> > But for simulator/emulation, there is a different implementation.
> > And even if we don't upstream that different implementation, doing
> > this abstraction will help us upstream the rest of the driver as we
> > minimize the differences between upstream and downstream.
> > And helping us upstream the driver is a good enough reason imo to add
> > this abstraction.
>
> Adding extra abstraction layers to upstream code that provide no
> upstream benefit and only come into play for some private, internal-only
> workflow is generally frowned upon in the DRM subsystem.  Unless you
> have some kind of public, open-source usage model, adding the extra
> complexity and clutter here is probably a no-go for upstream.
While I ofc agree in general with this statement, I believe it does
not apply in this case.

The intention behind changing register access to be callback functions
is to allow the Linux driver to serve as the principal entity for
pre-silicon validation . This is an important distinction, as the aim
is not to obscure the Linux kernel API for portability across other
operating systems or to reinvent mechanisms already provided by the
kernel, which I believe is the primary objection of upstream for
adding abstraction layers.

Instead, this strategy is about utilizing the inherent advantages of
Linux for the crucial stage of pre-silicon validation. In fact,
adopting Linux as the main vessel for this process can help leverage a
broader open source community for problem-solving, encourage more
uniform testing practices, and result in higher quality drivers due to
the transparency and scrutiny inherent in open-source development.

Making the upstream driver as close as possible to the internal driver
is advantageous for both the speed and quality of the upstreaming
process. A driver that closely mirrors the internal one will likely
require fewer modifications, thus streamlining the upstreaming
process. With a closely aligned internal and upstream driver, the
benefits of any improvements, bug fixes, and other modifications made
in the internal driver could be quickly and easily transferred to the
upstream driver.

In short, this change will allow us to do a continuously faster and
better upstream process, which imho provides a substantial benifit to
the kernel community.

>
> Also, even if you do have an unusual form of simulation/emulation that
> doesn't behave like real hardware, are you going to have several of them
> that all work in different manners and need unique implementations?  If
> we only ever expect to have two code paths total (and only one of those
> upstream), then using a vtable seems like overkill.  A very simple
>
>         if (special case)
>                 return alternate_implementation();
>
> would be much easier to understand and maintain.
>
I agree that in this case (register access), as I don't foresee more
than two implementations, we can go ahead with your suggestion.
i.e. in the mmio access functions we will add:
       if (sim)
                 return alternate_implementation();

If there are no objections, we can go ahead with this approach and
send a patch upstream.

Oded

>
> There are lots of other places in the Xe driver that _would_ benefit
> from per-platform vtables; we should prioritize making changes like this
> in the areas where they provide a clear benefit.
>
>
> Matt
>
> >
> >
> > Oded
> > >
> > > >
> > > > >
> > > > > +Matt as there is still (at least) one refactor planned in this area,
> > > > > since gt is not always the proper target for the MMIOs. He was saying in
> > > > > his earlier series about having a mmio_view or such to abstract the
> > > > > offset and other differences between each IO range. Not sure if this
> > > > > series would go the rigth direction, maybe we need to think in both
> > > > > cases together.
> > > >
> > > > Matt, would this series block the refactor mentioned by Lucas?
> > > >
> > > > In general, are there objections to introducing functions pointers for
> > > > MMIO functions (extended to all of them, as suggested by Ohad)?
> > >
> > > It probably makes more sense to do vtable conversion on other parts of
> > > the driver where we already have different implementations per platform
> > > and where we already know that design makes sense.  We can always come
> > > back and do this to the MMIO functions later once there are actually
> > > multiple implementations, but it doesn't seem to serve any purpose right
> > > now.
> > >
> > >
> > > Matt
> > >
> > > >
> > > > Thanks,
> > > > Francois
> > > >
> > > > >
> > > > >
> > > > > Lucas De Marchi
> > > > >
> > > > > > + switch (xe->info.platform) {
> > > > > > + case XE_TIGERLAKE:
> > > > > > + case XE_ROCKETLAKE:
> > > > > > + case XE_ALDERLAKE_S:
> > > > > > + case XE_ALDERLAKE_P:
> > > > > > + case XE_ALDERLAKE_N:
> > > > > > + case XE_DG1:
> > > > > > + case XE_DG2:
> > > > > > + case XE_PVC:
> > > > > > + case XE_METEORLAKE:
> > > > > > +         xe->mmio_funcs = &xe_mmio_funcs_device;
> > > > > > +         break;
> > > > > > + default:
> > > > > > +         DRM_ERROR("Unsupported platform\n");
> > > > > > +         break;
> > > > > > + }
> > > > > > +}
> > > > > > +
> > > > > > int xe_mmio_init(struct xe_device *xe)
> > > > > > {
> > > > > >   struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> > > > > > @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
> > > > > >   const int mmio_bar = 0;
> > > > > >   int err;
> > > > > >
> > > > > > + xe_mmio_set_funcs(xe);
> > > > > > +
> > > > > >   /*
> > > > > >    * Map the first 16MB of th BAR, which includes the registers (0-4MB),
> > > > > >    * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > index 3c547d78afba..80ce9de7aac4 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > @@ -19,6 +19,13 @@ struct xe_device;
> > > > > >
> > > > > > #define GEN12_LMEM_BAR            2
> > > > > >
> > > > > > +struct xe_mmio_funcs {
> > > > > > + u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> > > > > > + u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> > > > > > + void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> > > > > > + void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> > > > > > +};
> > > > > > +
> > > > > > int xe_mmio_init(struct xe_device *xe);
> > > > > >
> > > > > > static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > > @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > > static inline void xe_mmio_write32(struct xe_gt *gt,
> > > > > >                              struct xe_reg reg, u32 val)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - writel(val, tile->mmio.regs + reg.addr);
> > > > > > + xe->mmio_funcs->write32(gt, reg, val);
> > > > > > }
> > > > > >
> > > > > > static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - return readl(tile->mmio.regs + reg.addr);
> > > > > > + return xe->mmio_funcs->read32(gt, reg);
> > > > > > }
> > > > > >
> > > > > > static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > > @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > > static inline void xe_mmio_write64(struct xe_gt *gt,
> > > > > >                              struct xe_reg reg, u64 val)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - writeq(val, tile->mmio.regs + reg.addr);
> > > > > > + xe->mmio_funcs->write64(gt, reg, val);
> > > > > > }
> > > > > >
> > > > > > static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - return readq(tile->mmio.regs + reg.addr);
> > > > > > + return xe->mmio_funcs->read64(gt, reg);
> > > > > > }
> > > > > >
> > > > > > static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
> > > > > > --
> > > > > > 2.34.1
> > > > > >
> > >
> > > --
> > > Matt Roper
> > > Graphics Software Engineer
> > > Linux GPU Platform Enablement
> > > Intel Corporation
>
> --
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation

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

* Re: [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
@ 2023-06-18  8:28               ` Oded Gabbay
  0 siblings, 0 replies; 25+ messages in thread
From: Oded Gabbay @ 2023-06-18  8:28 UTC (permalink / raw)
  To: Matt Roper; +Cc: ofir1.bitton, Lucas De Marchi, dri-devel, ohadshar, intel-xe

On Thu, Jun 15, 2023 at 7:34 PM Matt Roper <matthew.d.roper@intel.com> wrote:
>
> On Thu, Jun 15, 2023 at 04:04:18PM +0300, Oded Gabbay wrote:
> > On Thu, Jun 15, 2023 at 3:01 AM Matt Roper <matthew.d.roper@intel.com> wrote:
> > >
> > > On Mon, Jun 12, 2023 at 06:31:57PM +0200, Francois Dugast wrote:
> > > > On Thu, Jun 08, 2023 at 10:35:29AM -0700, Lucas De Marchi wrote:
> > > > > On Fri, Jun 02, 2023 at 02:25:01PM +0000, Francois Dugast wrote:
> > > > > > A local structure of function pointers is used as a minimal hardware
> > > > > > abstraction layer to prepare for platform independent MMIO calls.
> > > > > >
> > > > > > Cc: Oded Gabbay <ogabbay@kernel.org>
> > > > > > Cc: Ofir Bitton <ofir1.bitton@intel.com>
> > > > > > Cc: Ohad Sharabi <ohadshar@intel.com>
> > > > > > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > > > > > ---
> > > > > > drivers/gpu/drm/xe/xe_device_types.h |  3 ++
> > > > > > drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
> > > > > > drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
> > > > > > 3 files changed, 99 insertions(+), 20 deletions(-)
> > > > > >
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > index 17b6b1cc5adb..3f8fd0d8129b 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > > > > > @@ -378,6 +378,9 @@ struct xe_device {
> > > > > >   /** @d3cold_allowed: Indicates if d3cold is a valid device state */
> > > > > >   bool d3cold_allowed;
> > > > > >
> > > > > > + /** @mmio_funcs: function pointers for MMIO related functions */
> > > > > > + const struct xe_mmio_funcs *mmio_funcs;
> > > > > > +
> > > > > >   /* private: */
> > > > > >
> > > > > > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > index 475b14fe4356..f3d08676a77a 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.c
> > > > > > @@ -25,6 +25,62 @@
> > > > > >
> > > > > > #define BAR_SIZE_SHIFT 20
> > > > > >
> > > > > > +static void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u32 val);
> > > > > > +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > > +static void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u64 val);
> > > > > > +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
> > > > > > +
> > > > > > +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
> > > > > > + .write32 = xe_mmio_write32_device,
> > > > > > + .read32 = xe_mmio_read32_device,
> > > > > > + .write64 = xe_mmio_write64_device,
> > > > > > + .read64 = xe_mmio_read64_device,
> > > > > > +};
> > > > > > +
> > > > > > +static inline void xe_mmio_write32_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u32 val)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + writel(val, tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + return readl(tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline void xe_mmio_write64_device(struct xe_gt *gt,
> > > > > > +                            struct xe_reg reg, u64 val)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + writeq(val, tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
> > > > > > +{
> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
> > > > > > +
> > > > > > + if (reg.addr < gt->mmio.adj_limit)
> > > > > > +         reg.addr += gt->mmio.adj_offset;
> > > > > > +
> > > > > > + return readq(tile->mmio.regs + reg.addr);
> > > > > > +}
> > > > > > +
> > > > > > static int xe_set_dma_info(struct xe_device *xe)
> > > > > > {
> > > > > >   unsigned int mask_size = xe->info.dma_mask_size;
> > > > > > @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
> > > > > >           iounmap(xe->mem.vram.mapping);
> > > > > > }
> > > > > >
> > > > > > +static void xe_mmio_set_funcs(struct xe_device *xe)
> > > > > > +{
> > > > > > + /* For now all platforms use the set of MMIO functions for a
> > > > > > +  * physical device.
> > > > > > +  */
> > > > >
> > > > >
> > > > > what is "device" in this context? that seems confusing as we always ever
> > > > > just support reading/writing to a real device (physical here may also
> > > > > add to the confusion when thinking about SR-IOV and VFs).
> > > > > We shouldn't add abstractions that are then never used and all platforms
> > > > > end up using the same. Unless it's a preparation for a follow up series
> > > > > adding the different handling.
> > > >
> > > > For now "device" is meant as "in opposition to simulator" but I agree
> > > > we can find a better name. Existing platforms all use the same
> > > > implementation but this is preparation for platforms that require a
> > > > different implementation.
> > >
> > > I agree with Lucas that this doesn't really seem to be a good candidate
> > > for a vtable; every platform uses exactly the same logic and I can't
> > > really envision how/why this would need to change for future platforms
> > > either, so this seems to just be adding unnecessary complexity.
> > > Registers being accessed at some offset into a PCI BAR isn't likely to
> > > change going forward.  On future platforms it's more likely that we'd
> > > need changes to the part of the code that maps the MMIO BAR rather than
> > > the code that reads/writes an offset into a mapping that's already been
> > > setup.
> > I agree with that for every *real hardware* platform the
> > implementation will probably be the same.
> > But for simulator/emulation, there is a different implementation.
> > And even if we don't upstream that different implementation, doing
> > this abstraction will help us upstream the rest of the driver as we
> > minimize the differences between upstream and downstream.
> > And helping us upstream the driver is a good enough reason imo to add
> > this abstraction.
>
> Adding extra abstraction layers to upstream code that provide no
> upstream benefit and only come into play for some private, internal-only
> workflow is generally frowned upon in the DRM subsystem.  Unless you
> have some kind of public, open-source usage model, adding the extra
> complexity and clutter here is probably a no-go for upstream.
While I ofc agree in general with this statement, I believe it does
not apply in this case.

The intention behind changing register access to be callback functions
is to allow the Linux driver to serve as the principal entity for
pre-silicon validation . This is an important distinction, as the aim
is not to obscure the Linux kernel API for portability across other
operating systems or to reinvent mechanisms already provided by the
kernel, which I believe is the primary objection of upstream for
adding abstraction layers.

Instead, this strategy is about utilizing the inherent advantages of
Linux for the crucial stage of pre-silicon validation. In fact,
adopting Linux as the main vessel for this process can help leverage a
broader open source community for problem-solving, encourage more
uniform testing practices, and result in higher quality drivers due to
the transparency and scrutiny inherent in open-source development.

Making the upstream driver as close as possible to the internal driver
is advantageous for both the speed and quality of the upstreaming
process. A driver that closely mirrors the internal one will likely
require fewer modifications, thus streamlining the upstreaming
process. With a closely aligned internal and upstream driver, the
benefits of any improvements, bug fixes, and other modifications made
in the internal driver could be quickly and easily transferred to the
upstream driver.

In short, this change will allow us to do a continuously faster and
better upstream process, which imho provides a substantial benifit to
the kernel community.

>
> Also, even if you do have an unusual form of simulation/emulation that
> doesn't behave like real hardware, are you going to have several of them
> that all work in different manners and need unique implementations?  If
> we only ever expect to have two code paths total (and only one of those
> upstream), then using a vtable seems like overkill.  A very simple
>
>         if (special case)
>                 return alternate_implementation();
>
> would be much easier to understand and maintain.
>
I agree that in this case (register access), as I don't foresee more
than two implementations, we can go ahead with your suggestion.
i.e. in the mmio access functions we will add:
       if (sim)
                 return alternate_implementation();

If there are no objections, we can go ahead with this approach and
send a patch upstream.

Oded

>
> There are lots of other places in the Xe driver that _would_ benefit
> from per-platform vtables; we should prioritize making changes like this
> in the areas where they provide a clear benefit.
>
>
> Matt
>
> >
> >
> > Oded
> > >
> > > >
> > > > >
> > > > > +Matt as there is still (at least) one refactor planned in this area,
> > > > > since gt is not always the proper target for the MMIOs. He was saying in
> > > > > his earlier series about having a mmio_view or such to abstract the
> > > > > offset and other differences between each IO range. Not sure if this
> > > > > series would go the rigth direction, maybe we need to think in both
> > > > > cases together.
> > > >
> > > > Matt, would this series block the refactor mentioned by Lucas?
> > > >
> > > > In general, are there objections to introducing functions pointers for
> > > > MMIO functions (extended to all of them, as suggested by Ohad)?
> > >
> > > It probably makes more sense to do vtable conversion on other parts of
> > > the driver where we already have different implementations per platform
> > > and where we already know that design makes sense.  We can always come
> > > back and do this to the MMIO functions later once there are actually
> > > multiple implementations, but it doesn't seem to serve any purpose right
> > > now.
> > >
> > >
> > > Matt
> > >
> > > >
> > > > Thanks,
> > > > Francois
> > > >
> > > > >
> > > > >
> > > > > Lucas De Marchi
> > > > >
> > > > > > + switch (xe->info.platform) {
> > > > > > + case XE_TIGERLAKE:
> > > > > > + case XE_ROCKETLAKE:
> > > > > > + case XE_ALDERLAKE_S:
> > > > > > + case XE_ALDERLAKE_P:
> > > > > > + case XE_ALDERLAKE_N:
> > > > > > + case XE_DG1:
> > > > > > + case XE_DG2:
> > > > > > + case XE_PVC:
> > > > > > + case XE_METEORLAKE:
> > > > > > +         xe->mmio_funcs = &xe_mmio_funcs_device;
> > > > > > +         break;
> > > > > > + default:
> > > > > > +         DRM_ERROR("Unsupported platform\n");
> > > > > > +         break;
> > > > > > + }
> > > > > > +}
> > > > > > +
> > > > > > int xe_mmio_init(struct xe_device *xe)
> > > > > > {
> > > > > >   struct xe_tile *root_tile = xe_device_get_root_tile(xe);
> > > > > > @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
> > > > > >   const int mmio_bar = 0;
> > > > > >   int err;
> > > > > >
> > > > > > + xe_mmio_set_funcs(xe);
> > > > > > +
> > > > > >   /*
> > > > > >    * Map the first 16MB of th BAR, which includes the registers (0-4MB),
> > > > > >    * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
> > > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > index 3c547d78afba..80ce9de7aac4 100644
> > > > > > --- a/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.h
> > > > > > @@ -19,6 +19,13 @@ struct xe_device;
> > > > > >
> > > > > > #define GEN12_LMEM_BAR            2
> > > > > >
> > > > > > +struct xe_mmio_funcs {
> > > > > > + u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
> > > > > > + u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
> > > > > > + void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
> > > > > > + void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
> > > > > > +};
> > > > > > +
> > > > > > int xe_mmio_init(struct xe_device *xe);
> > > > > >
> > > > > > static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > > @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
> > > > > > static inline void xe_mmio_write32(struct xe_gt *gt,
> > > > > >                              struct xe_reg reg, u32 val)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - writel(val, tile->mmio.regs + reg.addr);
> > > > > > + xe->mmio_funcs->write32(gt, reg, val);
> > > > > > }
> > > > > >
> > > > > > static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - return readl(tile->mmio.regs + reg.addr);
> > > > > > + return xe->mmio_funcs->read32(gt, reg);
> > > > > > }
> > > > > >
> > > > > > static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > > @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
> > > > > > static inline void xe_mmio_write64(struct xe_gt *gt,
> > > > > >                              struct xe_reg reg, u64 val)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - writeq(val, tile->mmio.regs + reg.addr);
> > > > > > + xe->mmio_funcs->write64(gt, reg, val);
> > > > > > }
> > > > > >
> > > > > > static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
> > > > > > {
> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
> > > > > > -
> > > > > > - if (reg.addr < gt->mmio.adj_limit)
> > > > > > -         reg.addr += gt->mmio.adj_offset;
> > > > > > + struct xe_device *xe = gt_to_xe(gt);
> > > > > >
> > > > > > - return readq(tile->mmio.regs + reg.addr);
> > > > > > + return xe->mmio_funcs->read64(gt, reg);
> > > > > > }
> > > > > >
> > > > > > static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
> > > > > > --
> > > > > > 2.34.1
> > > > > >
> > >
> > > --
> > > Matt Roper
> > > Graphics Software Engineer
> > > Linux GPU Platform Enablement
> > > Intel Corporation
>
> --
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation

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

* Re: [Intel-xe] [RFC PATCH 1/1] drm/xe: Introduce function pointers for MMIO functions
  2023-06-18  8:28               ` Oded Gabbay
  (?)
@ 2023-06-20 21:15               ` Lucas De Marchi
  -1 siblings, 0 replies; 25+ messages in thread
From: Lucas De Marchi @ 2023-06-20 21:15 UTC (permalink / raw)
  To: Oded Gabbay; +Cc: ofir1.bitton, ohadshar, Matt Roper, intel-xe, dri-devel

On Sun, Jun 18, 2023 at 11:28:20AM +0300, Oded Gabbay wrote:
>On Thu, Jun 15, 2023 at 7:34 PM Matt Roper <matthew.d.roper@intel.com> wrote:
>>
>> On Thu, Jun 15, 2023 at 04:04:18PM +0300, Oded Gabbay wrote:
>> > On Thu, Jun 15, 2023 at 3:01 AM Matt Roper <matthew.d.roper@intel.com> wrote:
>> > >
>> > > On Mon, Jun 12, 2023 at 06:31:57PM +0200, Francois Dugast wrote:
>> > > > On Thu, Jun 08, 2023 at 10:35:29AM -0700, Lucas De Marchi wrote:
>> > > > > On Fri, Jun 02, 2023 at 02:25:01PM +0000, Francois Dugast wrote:
>> > > > > > A local structure of function pointers is used as a minimal hardware
>> > > > > > abstraction layer to prepare for platform independent MMIO calls.
>> > > > > >
>> > > > > > Cc: Oded Gabbay <ogabbay@kernel.org>
>> > > > > > Cc: Ofir Bitton <ofir1.bitton@intel.com>
>> > > > > > Cc: Ohad Sharabi <ohadshar@intel.com>
>> > > > > > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>> > > > > > ---
>> > > > > > drivers/gpu/drm/xe/xe_device_types.h |  3 ++
>> > > > > > drivers/gpu/drm/xe/xe_mmio.c         | 81 ++++++++++++++++++++++++++++
>> > > > > > drivers/gpu/drm/xe/xe_mmio.h         | 35 ++++++------
>> > > > > > 3 files changed, 99 insertions(+), 20 deletions(-)
>> > > > > >
>> > > > > > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
>> > > > > > index 17b6b1cc5adb..3f8fd0d8129b 100644
>> > > > > > --- a/drivers/gpu/drm/xe/xe_device_types.h
>> > > > > > +++ b/drivers/gpu/drm/xe/xe_device_types.h
>> > > > > > @@ -378,6 +378,9 @@ struct xe_device {
>> > > > > >   /** @d3cold_allowed: Indicates if d3cold is a valid device state */
>> > > > > >   bool d3cold_allowed;
>> > > > > >
>> > > > > > + /** @mmio_funcs: function pointers for MMIO related functions */
>> > > > > > + const struct xe_mmio_funcs *mmio_funcs;
>> > > > > > +
>> > > > > >   /* private: */
>> > > > > >
>> > > > > > #if IS_ENABLED(CONFIG_DRM_XE_DISPLAY)
>> > > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
>> > > > > > index 475b14fe4356..f3d08676a77a 100644
>> > > > > > --- a/drivers/gpu/drm/xe/xe_mmio.c
>> > > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.c
>> > > > > > @@ -25,6 +25,62 @@
>> > > > > >
>> > > > > > #define BAR_SIZE_SHIFT 20
>> > > > > >
>> > > > > > +static void xe_mmio_write32_device(struct xe_gt *gt,
>> > > > > > +                            struct xe_reg reg, u32 val);
>> > > > > > +static u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg);
>> > > > > > +static void xe_mmio_write64_device(struct xe_gt *gt,
>> > > > > > +                            struct xe_reg reg, u64 val);
>> > > > > > +static u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg);
>> > > > > > +
>> > > > > > +static const struct xe_mmio_funcs xe_mmio_funcs_device = {
>> > > > > > + .write32 = xe_mmio_write32_device,
>> > > > > > + .read32 = xe_mmio_read32_device,
>> > > > > > + .write64 = xe_mmio_write64_device,
>> > > > > > + .read64 = xe_mmio_read64_device,
>> > > > > > +};
>> > > > > > +
>> > > > > > +static inline void xe_mmio_write32_device(struct xe_gt *gt,
>> > > > > > +                            struct xe_reg reg, u32 val)
>> > > > > > +{
>> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
>> > > > > > +
>> > > > > > + if (reg.addr < gt->mmio.adj_limit)
>> > > > > > +         reg.addr += gt->mmio.adj_offset;
>> > > > > > +
>> > > > > > + writel(val, tile->mmio.regs + reg.addr);
>> > > > > > +}
>> > > > > > +
>> > > > > > +static inline u32 xe_mmio_read32_device(struct xe_gt *gt, struct xe_reg reg)
>> > > > > > +{
>> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
>> > > > > > +
>> > > > > > + if (reg.addr < gt->mmio.adj_limit)
>> > > > > > +         reg.addr += gt->mmio.adj_offset;
>> > > > > > +
>> > > > > > + return readl(tile->mmio.regs + reg.addr);
>> > > > > > +}
>> > > > > > +
>> > > > > > +static inline void xe_mmio_write64_device(struct xe_gt *gt,
>> > > > > > +                            struct xe_reg reg, u64 val)
>> > > > > > +{
>> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
>> > > > > > +
>> > > > > > + if (reg.addr < gt->mmio.adj_limit)
>> > > > > > +         reg.addr += gt->mmio.adj_offset;
>> > > > > > +
>> > > > > > + writeq(val, tile->mmio.regs + reg.addr);
>> > > > > > +}
>> > > > > > +
>> > > > > > +static inline u64 xe_mmio_read64_device(struct xe_gt *gt, struct xe_reg reg)
>> > > > > > +{
>> > > > > > + struct xe_tile *tile = gt_to_tile(gt);
>> > > > > > +
>> > > > > > + if (reg.addr < gt->mmio.adj_limit)
>> > > > > > +         reg.addr += gt->mmio.adj_offset;
>> > > > > > +
>> > > > > > + return readq(tile->mmio.regs + reg.addr);
>> > > > > > +}
>> > > > > > +
>> > > > > > static int xe_set_dma_info(struct xe_device *xe)
>> > > > > > {
>> > > > > >   unsigned int mask_size = xe->info.dma_mask_size;
>> > > > > > @@ -377,6 +433,29 @@ static void mmio_fini(struct drm_device *drm, void *arg)
>> > > > > >           iounmap(xe->mem.vram.mapping);
>> > > > > > }
>> > > > > >
>> > > > > > +static void xe_mmio_set_funcs(struct xe_device *xe)
>> > > > > > +{
>> > > > > > + /* For now all platforms use the set of MMIO functions for a
>> > > > > > +  * physical device.
>> > > > > > +  */
>> > > > >
>> > > > >
>> > > > > what is "device" in this context? that seems confusing as we always ever
>> > > > > just support reading/writing to a real device (physical here may also
>> > > > > add to the confusion when thinking about SR-IOV and VFs).
>> > > > > We shouldn't add abstractions that are then never used and all platforms
>> > > > > end up using the same. Unless it's a preparation for a follow up series
>> > > > > adding the different handling.
>> > > >
>> > > > For now "device" is meant as "in opposition to simulator" but I agree
>> > > > we can find a better name. Existing platforms all use the same
>> > > > implementation but this is preparation for platforms that require a
>> > > > different implementation.
>> > >
>> > > I agree with Lucas that this doesn't really seem to be a good candidate
>> > > for a vtable; every platform uses exactly the same logic and I can't
>> > > really envision how/why this would need to change for future platforms
>> > > either, so this seems to just be adding unnecessary complexity.
>> > > Registers being accessed at some offset into a PCI BAR isn't likely to
>> > > change going forward.  On future platforms it's more likely that we'd
>> > > need changes to the part of the code that maps the MMIO BAR rather than
>> > > the code that reads/writes an offset into a mapping that's already been
>> > > setup.
>> > I agree with that for every *real hardware* platform the
>> > implementation will probably be the same.
>> > But for simulator/emulation, there is a different implementation.
>> > And even if we don't upstream that different implementation, doing
>> > this abstraction will help us upstream the rest of the driver as we
>> > minimize the differences between upstream and downstream.
>> > And helping us upstream the driver is a good enough reason imo to add
>> > this abstraction.
>>
>> Adding extra abstraction layers to upstream code that provide no
>> upstream benefit and only come into play for some private, internal-only
>> workflow is generally frowned upon in the DRM subsystem.  Unless you
>> have some kind of public, open-source usage model, adding the extra
>> complexity and clutter here is probably a no-go for upstream.
>While I ofc agree in general with this statement, I believe it does
>not apply in this case.
>
>The intention behind changing register access to be callback functions
>is to allow the Linux driver to serve as the principal entity for
>pre-silicon validation . This is an important distinction, as the aim
>is not to obscure the Linux kernel API for portability across other
>operating systems or to reinvent mechanisms already provided by the
>kernel, which I believe is the primary objection of upstream for
>adding abstraction layers.
>
>Instead, this strategy is about utilizing the inherent advantages of
>Linux for the crucial stage of pre-silicon validation. In fact,
>adopting Linux as the main vessel for this process can help leverage a
>broader open source community for problem-solving, encourage more
>uniform testing practices, and result in higher quality drivers due to
>the transparency and scrutiny inherent in open-source development.
>
>Making the upstream driver as close as possible to the internal driver
>is advantageous for both the speed and quality of the upstreaming
>process. A driver that closely mirrors the internal one will likely
>require fewer modifications, thus streamlining the upstreaming
>process. With a closely aligned internal and upstream driver, the
>benefits of any improvements, bug fixes, and other modifications made
>in the internal driver could be quickly and easily transferred to the
>upstream driver.

The problem is the side you are bending: making the upstream one follow
the internal rather than the opposite, which requires "dead
abstractions". This can be seen as something very very close to an OS
abstraction layer at the best and at the worst as a way to have hooks
enhancing the driver with "extensions" not shared.  So abstractions that
are just a layer of indirection without really abstracting anything from
the upstream point of view will always be a grey zone to avoid.

>
>In short, this change will allow us to do a continuously faster and
>better upstream process, which imho provides a substantial benifit to
>the kernel community.

We are all very aware of the benefits of having non-divergent code
bases. We are all on the same page here. As I and Matt argued, in this
specific case with mmio, a vtable doesn't seem to be the best solution
and the reason for adding it goes to a direction where we have a dead
abstraction from the upstream POV.

There are other cases in the code where a vtable is a reasonable
approach. We've been using vtable throughout i915 for page setup, pte
encoding and more heavily on the display side (see all the encoder
hooks in ).  In the display side specifically, we can't say they are silver
bullet when we are not the only stakeholder in the driver. Hooks are
added/removed/changed which sometimes even create silent conflicts
hidden behind

	if (func->foo)
		func->foo();

And the recipe to avoid that is being involved in upstream development
like we are.

>
>>
>> Also, even if you do have an unusual form of simulation/emulation that
>> doesn't behave like real hardware, are you going to have several of them
>> that all work in different manners and need unique implementations?  If
>> we only ever expect to have two code paths total (and only one of those
>> upstream), then using a vtable seems like overkill.  A very simple
>>
>>         if (special case)
>>                 return alternate_implementation();
>>
>> would be much easier to understand and maintain.
>>
>I agree that in this case (register access), as I don't foresee more
>than two implementations, we can go ahead with your suggestion.
>i.e. in the mmio access functions we will add:
>       if (sim)
>                 return alternate_implementation();
>
>If there are no objections, we can go ahead with this approach and
>send a patch upstream.

In this specific case it does seem to be the best approach, but that
would be a downstream patch, not upstream... unless we add a minimal
simulator in upstream, akin to what mesa has with drm-shim

Lucas De Marchi

>
>Oded
>
>>
>> There are lots of other places in the Xe driver that _would_ benefit
>> from per-platform vtables; we should prioritize making changes like this
>> in the areas where they provide a clear benefit.
>>
>>
>> Matt
>>
>> >
>> >
>> > Oded
>> > >
>> > > >
>> > > > >
>> > > > > +Matt as there is still (at least) one refactor planned in this area,
>> > > > > since gt is not always the proper target for the MMIOs. He was saying in
>> > > > > his earlier series about having a mmio_view or such to abstract the
>> > > > > offset and other differences between each IO range. Not sure if this
>> > > > > series would go the rigth direction, maybe we need to think in both
>> > > > > cases together.
>> > > >
>> > > > Matt, would this series block the refactor mentioned by Lucas?
>> > > >
>> > > > In general, are there objections to introducing functions pointers for
>> > > > MMIO functions (extended to all of them, as suggested by Ohad)?
>> > >
>> > > It probably makes more sense to do vtable conversion on other parts of
>> > > the driver where we already have different implementations per platform
>> > > and where we already know that design makes sense.  We can always come
>> > > back and do this to the MMIO functions later once there are actually
>> > > multiple implementations, but it doesn't seem to serve any purpose right
>> > > now.
>> > >
>> > >
>> > > Matt
>> > >
>> > > >
>> > > > Thanks,
>> > > > Francois
>> > > >
>> > > > >
>> > > > >
>> > > > > Lucas De Marchi
>> > > > >
>> > > > > > + switch (xe->info.platform) {
>> > > > > > + case XE_TIGERLAKE:
>> > > > > > + case XE_ROCKETLAKE:
>> > > > > > + case XE_ALDERLAKE_S:
>> > > > > > + case XE_ALDERLAKE_P:
>> > > > > > + case XE_ALDERLAKE_N:
>> > > > > > + case XE_DG1:
>> > > > > > + case XE_DG2:
>> > > > > > + case XE_PVC:
>> > > > > > + case XE_METEORLAKE:
>> > > > > > +         xe->mmio_funcs = &xe_mmio_funcs_device;
>> > > > > > +         break;
>> > > > > > + default:
>> > > > > > +         DRM_ERROR("Unsupported platform\n");
>> > > > > > +         break;
>> > > > > > + }
>> > > > > > +}
>> > > > > > +
>> > > > > > int xe_mmio_init(struct xe_device *xe)
>> > > > > > {
>> > > > > >   struct xe_tile *root_tile = xe_device_get_root_tile(xe);
>> > > > > > @@ -384,6 +463,8 @@ int xe_mmio_init(struct xe_device *xe)
>> > > > > >   const int mmio_bar = 0;
>> > > > > >   int err;
>> > > > > >
>> > > > > > + xe_mmio_set_funcs(xe);
>> > > > > > +
>> > > > > >   /*
>> > > > > >    * Map the first 16MB of th BAR, which includes the registers (0-4MB),
>> > > > > >    * reserved space (4MB-8MB), and GGTT (8MB-16MB) for a single tile.
>> > > > > > diff --git a/drivers/gpu/drm/xe/xe_mmio.h b/drivers/gpu/drm/xe/xe_mmio.h
>> > > > > > index 3c547d78afba..80ce9de7aac4 100644
>> > > > > > --- a/drivers/gpu/drm/xe/xe_mmio.h
>> > > > > > +++ b/drivers/gpu/drm/xe/xe_mmio.h
>> > > > > > @@ -19,6 +19,13 @@ struct xe_device;
>> > > > > >
>> > > > > > #define GEN12_LMEM_BAR            2
>> > > > > >
>> > > > > > +struct xe_mmio_funcs {
>> > > > > > + u32 (*read32)(struct xe_gt *gt, struct xe_reg reg);
>> > > > > > + u64 (*read64)(struct xe_gt *gt, struct xe_reg reg);
>> > > > > > + void (*write32)(struct xe_gt *gt, struct xe_reg reg, u32 val);
>> > > > > > + void (*write64)(struct xe_gt *gt, struct xe_reg reg, u64 val);
>> > > > > > +};
>> > > > > > +
>> > > > > > int xe_mmio_init(struct xe_device *xe);
>> > > > > >
>> > > > > > static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
>> > > > > > @@ -34,22 +41,16 @@ static inline u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg)
>> > > > > > static inline void xe_mmio_write32(struct xe_gt *gt,
>> > > > > >                              struct xe_reg reg, u32 val)
>> > > > > > {
>> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
>> > > > > > -
>> > > > > > - if (reg.addr < gt->mmio.adj_limit)
>> > > > > > -         reg.addr += gt->mmio.adj_offset;
>> > > > > > + struct xe_device *xe = gt_to_xe(gt);
>> > > > > >
>> > > > > > - writel(val, tile->mmio.regs + reg.addr);
>> > > > > > + xe->mmio_funcs->write32(gt, reg, val);
>> > > > > > }
>> > > > > >
>> > > > > > static inline u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg)
>> > > > > > {
>> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
>> > > > > > -
>> > > > > > - if (reg.addr < gt->mmio.adj_limit)
>> > > > > > -         reg.addr += gt->mmio.adj_offset;
>> > > > > > + struct xe_device *xe = gt_to_xe(gt);
>> > > > > >
>> > > > > > - return readl(tile->mmio.regs + reg.addr);
>> > > > > > + return xe->mmio_funcs->read32(gt, reg);
>> > > > > > }
>> > > > > >
>> > > > > > static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
>> > > > > > @@ -67,22 +68,16 @@ static inline u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr,
>> > > > > > static inline void xe_mmio_write64(struct xe_gt *gt,
>> > > > > >                              struct xe_reg reg, u64 val)
>> > > > > > {
>> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
>> > > > > > -
>> > > > > > - if (reg.addr < gt->mmio.adj_limit)
>> > > > > > -         reg.addr += gt->mmio.adj_offset;
>> > > > > > + struct xe_device *xe = gt_to_xe(gt);
>> > > > > >
>> > > > > > - writeq(val, tile->mmio.regs + reg.addr);
>> > > > > > + xe->mmio_funcs->write64(gt, reg, val);
>> > > > > > }
>> > > > > >
>> > > > > > static inline u64 xe_mmio_read64(struct xe_gt *gt, struct xe_reg reg)
>> > > > > > {
>> > > > > > - struct xe_tile *tile = gt_to_tile(gt);
>> > > > > > -
>> > > > > > - if (reg.addr < gt->mmio.adj_limit)
>> > > > > > -         reg.addr += gt->mmio.adj_offset;
>> > > > > > + struct xe_device *xe = gt_to_xe(gt);
>> > > > > >
>> > > > > > - return readq(tile->mmio.regs + reg.addr);
>> > > > > > + return xe->mmio_funcs->read64(gt, reg);
>> > > > > > }
>> > > > > >
>> > > > > > static inline int xe_mmio_write32_and_verify(struct xe_gt *gt,
>> > > > > > --
>> > > > > > 2.34.1
>> > > > > >
>> > >
>> > > --
>> > > Matt Roper
>> > > Graphics Software Engineer
>> > > Linux GPU Platform Enablement
>> > > Intel Corporation
>>
>> --
>> Matt Roper
>> Graphics Software Engineer
>> Linux GPU Platform Enablement
>> Intel Corporation

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

end of thread, other threads:[~2023-06-20 21:15 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-02 14:25 [Intel-xe] [RFC PATCH 0/1] drm/xe: Introduce function pointers for MMIO functions Francois Dugast
2023-06-02 14:25 ` [Intel-xe] [RFC PATCH 1/1] " Francois Dugast
2023-06-06  8:03   ` [Intel-xe] [RFC, " Ohad Sharabi
2023-06-06 10:09   ` Ohad Sharabi
2023-06-06 13:24     ` Francois Dugast
2023-06-08  6:54       ` Ohad Sharabi
2023-06-08 17:35   ` [Intel-xe] [RFC PATCH " Lucas De Marchi
2023-06-12 16:31     ` Francois Dugast
2023-06-15  0:01       ` Matt Roper
2023-06-15 13:04         ` Oded Gabbay
2023-06-15 16:34           ` Matt Roper
2023-06-15 16:34             ` Matt Roper
2023-06-18  8:25             ` Oded Gabbay
2023-06-18  8:25               ` Oded Gabbay
2023-06-18  8:28             ` Oded Gabbay
2023-06-18  8:28               ` Oded Gabbay
2023-06-20 21:15               ` Lucas De Marchi
2023-06-02 14:27 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
2023-06-02 14:27 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
2023-06-02 14:29 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
2023-06-02 14:32 ` [Intel-xe] ✓ CI.Build: " Patchwork
2023-06-02 14:33 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
2023-06-02 14:34 ` [Intel-xe] ✓ CI.checksparse: " Patchwork
2023-06-02 15:00 ` [Intel-xe] ✗ CI.BAT: failure " Patchwork
2023-06-06  9:48 ` [Intel-xe] ○ CI.BAT: info " 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.