All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture
@ 2024-05-07  1:47 Zhanjun Dong
  2024-05-07  1:47 ` [PATCH v8 1/6] drm/xe/guc: Prepare GuC register list and update ADS size " Zhanjun Dong
                   ` (13 more replies)
  0 siblings, 14 replies; 27+ messages in thread
From: Zhanjun Dong @ 2024-05-07  1:47 UTC (permalink / raw)
  To: intel-xe; +Cc: Zhanjun Dong, Alan Previn

Port GuC based register capture for error capture from i915 to Xe.

There are 3 parts inside:
. Prepare for capture registers
    There is a bo create at guc ads init time, that is very early
    and engi  ne map is not ready, make it hard to calculate the
    capture buffer size, new function created for worst case size
    caluation. Other than that, this part basically follows the i915
    design.
. Process capture notification message
    Basically follows i915 design
. Sysfs command process.
    Xe switched to devcoredump, adopted command line process with
    captured node list.

Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
Cc: Alan Previn <alan.previn.teres.alexis@intel.com>

Changes from prior revs:
  v8:-  Reorgnize the order of patches
        Change the capture size check from worst min size to worst size
        Replace the kernel alloc with drm managed alloc
        Replace the memcpy with xe_map_memcpy_from
        Free GuC capture outlist as part of xe_devcoredump_free
  v7:-  Kconfig CONFIG_DRM_XE_CAPTURE_ERROR removed
  v6:-  Change hardcoded register snapshot fill to follow mapping tables
        When capture is empty, take snapshot from engine
  v5:-  Split dss helper code out as an standalone patch
        Remove old platform registers definition.
        Split register map table to 32 and 64bit each
  v4:-  Move register map table to xe_hw_engine.c
  v3:-  Remove condition compilation in code
  v2:-  Split into multiple chunks

Zhanjun Dong (6):
  drm/xe/guc: Prepare GuC register list and update ADS size for error
    capture
  drm/xe/guc: Add XE_LP steered register lists
  drm/xe/guc: Add capture size check in GuC log buffer
  drm/xe/guc: Extract GuC error capture lists
  drm/xe/guc: Pre-allocate output nodes for extraction
  drm/xe/guc: Plumb GuC-capture into dev coredump

 drivers/gpu/drm/xe/Makefile              |    1 +
 drivers/gpu/drm/xe/abi/guc_actions_abi.h |    7 +
 drivers/gpu/drm/xe/xe_devcoredump.c      |    2 +
 drivers/gpu/drm/xe/xe_gt_printk.h        |    3 +
 drivers/gpu/drm/xe/xe_guc.c              |    5 +
 drivers/gpu/drm/xe/xe_guc.h              |    5 +
 drivers/gpu/drm/xe/xe_guc_ads.c          |  208 +++-
 drivers/gpu/drm/xe/xe_guc_ads.h          |    3 +
 drivers/gpu/drm/xe/xe_guc_ads_types.h    |    2 +
 drivers/gpu/drm/xe/xe_guc_capture.c      | 1223 ++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_guc_capture.h      |   20 +
 drivers/gpu/drm/xe/xe_guc_capture_fwif.h |  221 ++++
 drivers/gpu/drm/xe/xe_guc_ct.c           |    2 +
 drivers/gpu/drm/xe/xe_guc_fwif.h         |   70 ++
 drivers/gpu/drm/xe/xe_guc_log.c          |  179 ++++
 drivers/gpu/drm/xe/xe_guc_log.h          |   15 +
 drivers/gpu/drm/xe/xe_guc_log_types.h    |   24 +
 drivers/gpu/drm/xe/xe_guc_submit.c       |   54 +-
 drivers/gpu/drm/xe/xe_guc_submit.h       |    2 +
 drivers/gpu/drm/xe/xe_guc_types.h        |    2 +
 drivers/gpu/drm/xe/xe_hw_engine.c        |  251 +++--
 drivers/gpu/drm/xe/xe_hw_engine.h        |    4 +
 drivers/gpu/drm/xe/xe_hw_engine_types.h  |  150 ++-
 drivers/gpu/drm/xe/xe_sched_job.c        |    7 +-
 24 files changed, 2309 insertions(+), 151 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/xe_guc_capture.c
 create mode 100644 drivers/gpu/drm/xe/xe_guc_capture.h
 create mode 100644 drivers/gpu/drm/xe/xe_guc_capture_fwif.h

-- 
2.34.1


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

* [PATCH v8 1/6] drm/xe/guc: Prepare GuC register list and update ADS size for error capture
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
@ 2024-05-07  1:47 ` Zhanjun Dong
  2024-05-10 18:43   ` Teres Alexis, Alan Previn
  2024-05-10 18:58   ` Teres Alexis, Alan Previn
  2024-05-07  1:47 ` [PATCH v8 2/6] drm/xe/guc: Add XE_LP steered register lists Zhanjun Dong
                   ` (12 subsequent siblings)
  13 siblings, 2 replies; 27+ messages in thread
From: Zhanjun Dong @ 2024-05-07  1:47 UTC (permalink / raw)
  To: intel-xe; +Cc: Zhanjun Dong

Add referenced registers defines and list of registers.
Update GuC ADS size allocation to include space for
the lists of error state capture register descriptors.

Then, populate GuC ADS with the lists of registers we want
GuC to report back to host on engine reset events. This list
should include global, engine-class and engine-instance
registers for every engine-class type on the current hardware.

Ensure we allocate a persistent store for the register lists
that are populated into ADS so that we don't need to allocate
memory during GT resets when GuC is reloaded and ADS population
happens again.

Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
---
 drivers/gpu/drm/xe/Makefile              |   1 +
 drivers/gpu/drm/xe/xe_guc.c              |   5 +
 drivers/gpu/drm/xe/xe_guc.h              |   5 +
 drivers/gpu/drm/xe/xe_guc_ads.c          | 208 +++++++++++++-
 drivers/gpu/drm/xe/xe_guc_ads.h          |   3 +
 drivers/gpu/drm/xe/xe_guc_ads_types.h    |   2 +
 drivers/gpu/drm/xe/xe_guc_capture.c      | 352 +++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_guc_capture.h      |  18 ++
 drivers/gpu/drm/xe/xe_guc_capture_fwif.h | 168 +++++++++++
 drivers/gpu/drm/xe/xe_guc_fwif.h         |  22 ++
 drivers/gpu/drm/xe/xe_guc_types.h        |   2 +
 11 files changed, 775 insertions(+), 11 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/xe_guc_capture.c
 create mode 100644 drivers/gpu/drm/xe/xe_guc_capture.h
 create mode 100644 drivers/gpu/drm/xe/xe_guc_capture_fwif.h

diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index a67977edff5b..4b70a43ed042 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -94,6 +94,7 @@ xe-y += xe_bb.o \
 	xe_gt_topology.o \
 	xe_guc.o \
 	xe_guc_ads.o \
+	xe_guc_capture.o \
 	xe_guc_ct.o \
 	xe_guc_db_mgr.o \
 	xe_guc_debugfs.o \
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index 0c9938e0ab8c..301283e75ded 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -20,6 +20,7 @@
 #include "xe_gt.h"
 #include "xe_gt_printk.h"
 #include "xe_guc_ads.h"
+#include "xe_guc_capture.h"
 #include "xe_guc_ct.h"
 #include "xe_guc_hwconfig.h"
 #include "xe_guc_log.h"
@@ -311,6 +312,10 @@ int xe_guc_init(struct xe_guc *guc)
 	if (ret)
 		goto out;
 
+	ret = xe_guc_capture_init(guc);
+	if (ret)
+		goto out;
+
 	ret = xe_guc_ads_init(&guc->ads);
 	if (ret)
 		goto out;
diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h
index a3c92b74a3d5..c43c423f9ef4 100644
--- a/drivers/gpu/drm/xe/xe_guc.h
+++ b/drivers/gpu/drm/xe/xe_guc.h
@@ -70,4 +70,9 @@ static inline struct xe_device *guc_to_xe(struct xe_guc *guc)
 	return gt_to_xe(guc_to_gt(guc));
 }
 
+static inline struct drm_device *guc_to_drm(struct xe_guc *guc)
+{
+	return &guc_to_xe(guc)->drm;
+}
+
 #endif
diff --git a/drivers/gpu/drm/xe/xe_guc_ads.c b/drivers/gpu/drm/xe/xe_guc_ads.c
index 6a5eb21748b1..3d4563d3ca4f 100644
--- a/drivers/gpu/drm/xe/xe_guc_ads.c
+++ b/drivers/gpu/drm/xe/xe_guc_ads.c
@@ -17,6 +17,8 @@
 #include "xe_gt.h"
 #include "xe_gt_ccs_mode.h"
 #include "xe_guc.h"
+#include "xe_guc_capture.h"
+#include "xe_guc_capture_fwif.h"
 #include "xe_guc_ct.h"
 #include "xe_hw_engine.h"
 #include "xe_lrc.h"
@@ -126,6 +128,8 @@ struct __guc_ads_blob {
 #define info_map_read(xe_, map_, field_) \
 	xe_map_rd_field(xe_, map_, 0, struct guc_gt_system_info, field_)
 
+static int guc_capture_prep_lists(struct xe_guc_ads *ads);
+
 static size_t guc_ads_regset_size(struct xe_guc_ads *ads)
 {
 	struct xe_device *xe = ads_to_xe(ads);
@@ -147,8 +151,7 @@ static u32 guc_ads_waklv_size(struct xe_guc_ads *ads)
 
 static size_t guc_ads_capture_size(struct xe_guc_ads *ads)
 {
-	/* FIXME: Allocate a proper capture list */
-	return PAGE_ALIGN(PAGE_SIZE);
+	return PAGE_ALIGN(ads->capture_size);
 }
 
 static size_t guc_ads_um_queues_size(struct xe_guc_ads *ads)
@@ -388,6 +391,48 @@ static int calculate_waklv_size(struct xe_guc_ads *ads)
 	return SZ_4K;
 }
 
+/**
+ * xe_calculate_guc_regs_capture_worst_size - Calculate the worst size for GuC register capture
+ * @guc: point to xe_guc structure
+ *
+ * Calculate the worst size for GuC register capture by including all possible engines classes.
+ *
+ * Returns: Calculated size
+ */
+int xe_calculate_guc_regs_capture_worst_size(struct xe_guc *guc)
+{
+	size_t total_size, class_size, instance_size, global_size;
+	int i, j;
+
+	/* This function calculates the worst case register lists size by
+	 * including all possible engines classes. It is called during the
+	 * first of a two-phase GuC (and ADS-population) initialization
+	 * sequence, that is, during the pre-hwconfig phase before we have
+	 * the exact engine fusing info.
+	 */
+	total_size = PAGE_SIZE;	/* Pad a page in front for empty lists */
+	for (i = 0; i < GUC_CAPTURE_LIST_INDEX_MAX; i++) {
+		for (j = 0; j < GUC_LAST_ENGINE_CLASS; j++) {
+			if (xe_guc_capture_getlistsize(guc, i,
+						       GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
+						       j, &class_size) < 0)
+				class_size = 0;
+			if (xe_guc_capture_getlistsize(guc, i,
+						       GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE,
+						       j, &instance_size) < 0)
+				instance_size = 0;
+			total_size += class_size + instance_size;
+		}
+		if (xe_guc_capture_getlistsize(guc, i,
+					       GUC_CAPTURE_LIST_TYPE_GLOBAL,
+					       0, &global_size) < 0)
+			global_size = 0;
+		total_size += global_size;
+	}
+
+	return PAGE_ALIGN(total_size);
+}
+
 #define MAX_GOLDEN_LRC_SIZE	(SZ_4K * 64)
 
 int xe_guc_ads_init(struct xe_guc_ads *ads)
@@ -398,6 +443,7 @@ int xe_guc_ads_init(struct xe_guc_ads *ads)
 	struct xe_bo *bo;
 
 	ads->golden_lrc_size = calculate_golden_lrc_size(ads);
+	ads->capture_size = xe_calculate_guc_regs_capture_worst_size(ads_to_guc(ads));
 	ads->regset_size = calculate_regset_size(gt);
 	ads->ads_waklv_size = calculate_waklv_size(ads);
 
@@ -431,9 +477,10 @@ int xe_guc_ads_init_post_hwconfig(struct xe_guc_ads *ads)
 	xe_gt_assert(gt, ads->bo);
 
 	ads->golden_lrc_size = calculate_golden_lrc_size(ads);
+	ads->capture_size = xe_calculate_guc_regs_capture_worst_size(ads_to_guc(ads));
 	ads->regset_size = calculate_regset_size(gt);
 
-	xe_gt_assert(gt, ads->golden_lrc_size +
+	xe_gt_assert(gt, ads->golden_lrc_size + ads->capture_size +
 		     (ads->regset_size - prev_regset_size) <=
 		     MAX_GOLDEN_LRC_SIZE);
 
@@ -530,20 +577,159 @@ static void guc_mapping_table_init(struct xe_gt *gt,
 	}
 }
 
-static void guc_capture_list_init(struct xe_guc_ads *ads)
+static u32 guc_get_capture_engine_mask(struct xe_gt *gt, struct iosys_map *info_map,
+				       u32 capture_class)
 {
+	struct xe_device *xe = gt_to_xe(gt);
+	u32 mask;
+
+	switch (capture_class) {
+	case GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE:
+		mask = info_map_read(xe, info_map, engine_enabled_masks[GUC_RENDER_CLASS]);
+		mask |= info_map_read(xe, info_map, engine_enabled_masks[GUC_COMPUTE_CLASS]);
+		break;
+	case GUC_CAPTURE_LIST_CLASS_VIDEO:
+		mask = info_map_read(xe, info_map, engine_enabled_masks[GUC_VIDEO_CLASS]);
+		break;
+	case GUC_CAPTURE_LIST_CLASS_VIDEOENHANCE:
+		mask = info_map_read(xe, info_map, engine_enabled_masks[GUC_VIDEOENHANCE_CLASS]);
+		break;
+	case GUC_CAPTURE_LIST_CLASS_BLITTER:
+		mask = info_map_read(xe, info_map, engine_enabled_masks[GUC_BLITTER_CLASS]);
+		break;
+	case GUC_CAPTURE_LIST_CLASS_GSC_OTHER:
+		mask = info_map_read(xe, info_map, engine_enabled_masks[GUC_GSC_OTHER_CLASS]);
+		break;
+	default:
+		mask = 0;
+	}
+
+	return mask;
+}
+
+static int guc_capture_prep_lists(struct xe_guc_ads *ads)
+{
+	struct xe_guc *guc = ads_to_guc(ads);
+	struct xe_gt *gt = ads_to_gt(ads);
+	u32 ads_ggtt, capture_offset, null_ggtt, total_size = 0;
+	struct iosys_map info_map;
+	size_t size = 0;
+	void *ptr;
 	int i, j;
-	u32 addr = xe_bo_ggtt_addr(ads->bo) + guc_ads_capture_offset(ads);
 
-	/* FIXME: Populate a proper capture list */
+	capture_offset = guc_ads_capture_offset(ads);
+	ads_ggtt = xe_bo_ggtt_addr(ads->bo);
+	info_map = IOSYS_MAP_INIT_OFFSET(ads_to_map(ads),
+					 offsetof(struct __guc_ads_blob, system_info));
+
+	/* first, set aside the first page for a capture_list with zero descriptors */
+	total_size = PAGE_SIZE;
+	if (!xe_guc_capture_getnullheader(guc, &ptr, &size))
+		xe_map_memcpy_to(ads_to_xe(ads), ads_to_map(ads), capture_offset, ptr, size);
+
+	null_ggtt = ads_ggtt + capture_offset;
+	capture_offset += PAGE_SIZE;
+
+	/* Populate capture list : at this point adps is already allocated and mapped to worst case
+	 * size
+	 */
 	for (i = 0; i < GUC_CAPTURE_LIST_INDEX_MAX; i++) {
-		for (j = 0; j < GUC_MAX_ENGINE_CLASSES; j++) {
-			ads_blob_write(ads, ads.capture_instance[i][j], addr);
-			ads_blob_write(ads, ads.capture_class[i][j], addr);
+		bool write_empty_list;
+
+		for (j = 0; j < GUC_CAPTURE_LIST_CLASS_MAX; j++) {
+			u32 engine_mask = guc_get_capture_engine_mask(gt, &info_map, j);
+			/* null list if we dont have said engine or list */
+			if (!engine_mask) {
+				ads_blob_write(ads, ads.capture_class[i][j], null_ggtt);
+				ads_blob_write(ads, ads.capture_instance[i][j], null_ggtt);
+				continue;
+			}
+			/********************************************************/
+			/*** engine exists: start with engine-class registers ***/
+			/********************************************************/
+			write_empty_list = true; /* starting assumption is an empty list */
+			size = 0;
+			if (!xe_guc_capture_getlistsize(guc, i,
+							GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
+							j, &size)) {
+				if (total_size + size > ads->capture_size)
+					xe_gt_dbg(gt, "Capture size overflow :%lu vs %d\n",
+						  total_size + size, ads->capture_size);
+				else if (!xe_guc_capture_getlist(guc, i,
+								 GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
+								 j, &ptr))
+					/* everything checked out, populate! */
+					write_empty_list = false;
+			}
+			if (!write_empty_list) {
+				ads_blob_write(ads, ads.capture_class[i][j],
+					       ads_ggtt + capture_offset);
+				xe_map_memcpy_to(ads_to_xe(ads), ads_to_map(ads), capture_offset,
+						 ptr, size);
+				total_size += size;
+				capture_offset += size;
+			} else {
+				ads_blob_write(ads, ads.capture_class[i][j], null_ggtt);
+			}
+
+			/********************************************************/
+			/*** engine exists: next, engine-instance registers   ***/
+			/********************************************************/
+			write_empty_list = true; /* starting assumption is an empty list */
+			size = 0;
+			if (!xe_guc_capture_getlistsize(guc, i,
+							GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE,
+							j, &size)) {
+				if (total_size + size > ads->capture_size)
+					xe_gt_dbg(gt, "Capture size overflow :%lu vs %d\n",
+						  total_size + size, ads->capture_size);
+				else if (!xe_guc_capture_getlist(guc, i,
+								 GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE,
+								 j, &ptr))
+					/* everything checked out, populate! */
+					write_empty_list = false;
+			}
+
+			if (!write_empty_list) {
+				ads_blob_write(ads, ads.capture_instance[i][j],
+					       ads_ggtt + capture_offset);
+				xe_map_memcpy_to(ads_to_xe(ads), ads_to_map(ads), capture_offset,
+						 ptr, size);
+				total_size += size;
+				capture_offset += size;
+			} else {
+				ads_blob_write(ads, ads.capture_instance[i][j], null_ggtt);
+			}
 		}
 
-		ads_blob_write(ads, ads.capture_global[i], addr);
+		/********************************************************/
+		/*** global registers is last in our PF/VF loops      ***/
+		/********************************************************/
+		write_empty_list = true; /* starting assumption is an empty list */
+		size = 0;
+		if (!xe_guc_capture_getlistsize(guc, i, GUC_CAPTURE_LIST_TYPE_GLOBAL, 0, &size)) {
+			if (total_size + size > ads->capture_size)
+				xe_gt_dbg(gt, "Capture size overflow :%lu vs %d\n",
+					  total_size + size, ads->capture_size);
+			else if (!xe_guc_capture_getlist(guc, i, GUC_CAPTURE_LIST_TYPE_GLOBAL, 0,
+							 &ptr))
+				write_empty_list = false; /* everything checked out, populate! */
+		}
+		if (!write_empty_list) {
+			ads_blob_write(ads, ads.capture_global[i], ads_ggtt + capture_offset);
+			xe_map_memcpy_to(ads_to_xe(ads), ads_to_map(ads), capture_offset, ptr,
+					 size);
+			total_size += size;
+			capture_offset += size;
+		} else {
+			ads_blob_write(ads, ads.capture_global[i], null_ggtt);
+		}
 	}
+
+	if (ads->capture_size != PAGE_ALIGN(total_size))
+		xe_gt_info(gt, "ADS capture alloc size changed from %d to %d\n",
+			   ads->capture_size, PAGE_ALIGN(total_size));
+	return PAGE_ALIGN(total_size);
 }
 
 static void guc_mmio_regset_write_one(struct xe_guc_ads *ads,
@@ -732,7 +918,7 @@ void xe_guc_ads_populate(struct xe_guc_ads *ads)
 	guc_mmio_reg_state_init(ads);
 	guc_prep_golden_lrc_null(ads);
 	guc_mapping_table_init(gt, &info_map);
-	guc_capture_list_init(ads);
+	guc_capture_prep_lists(ads);
 	guc_doorbell_init(ads);
 	guc_waklv_init(ads);
 
diff --git a/drivers/gpu/drm/xe/xe_guc_ads.h b/drivers/gpu/drm/xe/xe_guc_ads.h
index 2e2531779122..0f13684f9902 100644
--- a/drivers/gpu/drm/xe/xe_guc_ads.h
+++ b/drivers/gpu/drm/xe/xe_guc_ads.h
@@ -8,11 +8,14 @@
 
 #include "xe_guc_ads_types.h"
 
+struct xe_guc;
+
 int xe_guc_ads_init(struct xe_guc_ads *ads);
 int xe_guc_ads_init_post_hwconfig(struct xe_guc_ads *ads);
 void xe_guc_ads_populate(struct xe_guc_ads *ads);
 void xe_guc_ads_populate_minimal(struct xe_guc_ads *ads);
 void xe_guc_ads_populate_post_load(struct xe_guc_ads *ads);
 int xe_guc_ads_scheduler_policy_toggle_reset(struct xe_guc_ads *ads);
+int xe_calculate_guc_regs_capture_worst_size(struct xe_guc *guc);
 
 #endif
diff --git a/drivers/gpu/drm/xe/xe_guc_ads_types.h b/drivers/gpu/drm/xe/xe_guc_ads_types.h
index 2de5decfe0fd..70c132458ac3 100644
--- a/drivers/gpu/drm/xe/xe_guc_ads_types.h
+++ b/drivers/gpu/drm/xe/xe_guc_ads_types.h
@@ -22,6 +22,8 @@ struct xe_guc_ads {
 	u32 regset_size;
 	/** @ads_waklv_size: total waklv size supported by platform */
 	u32 ads_waklv_size;
+	/** @capture_size: size of register set passed to GuC for capture */
+	u32 capture_size;
 };
 
 #endif
diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c
new file mode 100644
index 000000000000..b21a8ef85c4e
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_guc_capture.c
@@ -0,0 +1,352 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2021-2022 Intel Corporation
+ */
+
+#include <linux/types.h>
+
+#include <drm/drm_managed.h>
+#include <drm/drm_print.h>
+
+#include "abi/guc_actions_abi.h"
+#include "regs/xe_regs.h"
+#include "regs/xe_engine_regs.h"
+#include "regs/xe_gt_regs.h"
+#include "regs/xe_guc_regs.h"
+
+#include "xe_bo.h"
+#include "xe_device.h"
+#include "xe_exec_queue_types.h"
+#include "xe_gt.h"
+#include "xe_gt_printk.h"
+#include "xe_guc.h"
+#include "xe_guc_capture.h"
+#include "xe_guc_capture_fwif.h"
+#include "xe_guc_ct.h"
+#include "xe_guc_log.h"
+#include "xe_gt_mcr.h"
+#include "xe_guc_submit.h"
+#include "xe_hw_engine_types.h"
+#include "xe_macros.h"
+#include "xe_map.h"
+
+/*
+ * Define all device tables of GuC error capture register lists
+ * NOTE: For engine-registers, GuC only needs the register offsets
+ *       from the engine-mmio-base
+ */
+#define COMMON_XELP_BASE_GLOBAL \
+	{ FORCEWAKE_GT,		    0,      0, "FORCEWAKE" }
+
+#define COMMON_BASE_ENGINE_INSTANCE \
+	{ RING_ESR(0),              0,      0, "ESR" }, \
+	{ RING_EMR(0),              0,      0, "EMR" }, \
+	{ RING_EIR(0),              0,      0, "EIR" }, \
+	{ RING_EXECLIST_STATUS_HI(0), 0,    0, "RING_EXECLIST_STATUS_HI" }, \
+	{ RING_EXECLIST_STATUS_LO(0), 0,    0, "RING_EXECLIST_STATUS_LO" }, \
+	{ RING_DMA_FADD(0),         0,      0, "RING_DMA_FADD_LDW" }, \
+	{ RING_DMA_FADD_UDW(0),     0,      0, "RING_DMA_FADD_UDW" }, \
+	{ RING_IPEHR(0),            0,      0, "IPEHR" }, \
+	{ RING_BBADDR(0),           0,      0, "RING_BBADDR_LOW32" }, \
+	{ RING_BBADDR_UDW(0),       0,      0, "RING_BBADDR_UP32" }, \
+	{ RING_ACTHD(0),            0,      0, "ACTHD_LDW" }, \
+	{ RING_ACTHD_UDW(0),        0,      0, "ACTHD_UDW" }, \
+	{ RING_START(0),            0,      0, "START" }, \
+	{ RING_HEAD(0),             0,      0, "HEAD" }, \
+	{ RING_TAIL(0),             0,      0, "TAIL" }, \
+	{ RING_CTL(0),              0,      0, "CTL" }, \
+	{ RING_MI_MODE(0),          0,      0, "MODE" }, \
+	{ RING_HWS_PGA(0),          0,      0, "HWS" }, \
+	{ RING_MODE(0),             0,      0, "GFX_MODE" }
+
+/* XE_LP Global */
+static const struct __guc_mmio_reg_descr xe_lp_global_regs[] = {
+	COMMON_XELP_BASE_GLOBAL,
+};
+
+/* Render / Compute Per-Engine-Instance */
+static const struct __guc_mmio_reg_descr xe_rc_inst_regs[] = {
+	COMMON_BASE_ENGINE_INSTANCE,
+};
+
+/* Media Decode/Encode Per-Engine-Instance */
+static const struct __guc_mmio_reg_descr xe_vd_inst_regs[] = {
+	COMMON_BASE_ENGINE_INSTANCE,
+};
+
+/* Video Enhancement Per-Engine-Instance */
+static const struct __guc_mmio_reg_descr xe_vec_inst_regs[] = {
+	COMMON_BASE_ENGINE_INSTANCE,
+};
+
+/* Blitter Per-Engine-Instance */
+static const struct __guc_mmio_reg_descr xe_blt_inst_regs[] = {
+	COMMON_BASE_ENGINE_INSTANCE,
+};
+
+/* XE_LP - GSC Per-Engine-Instance */
+static const struct __guc_mmio_reg_descr xe_lp_gsc_inst_regs[] = {
+	COMMON_BASE_ENGINE_INSTANCE,
+};
+
+/*
+ * Empty list to prevent warnings about unknown class/instance types
+ * as not all class/instanace types have entries on all platforms.
+ */
+static const struct __guc_mmio_reg_descr empty_regs_list[] = {
+};
+
+#define TO_GCAP_DEF_OWNER(x) (GUC_CAPTURE_LIST_INDEX_##x)
+#define TO_GCAP_DEF_TYPE(x) (GUC_CAPTURE_LIST_TYPE_##x)
+#define MAKE_REGLIST(regslist, regsowner, regstype, class) \
+	{ \
+		regslist, \
+		ARRAY_SIZE(regslist), \
+		TO_GCAP_DEF_OWNER(regsowner), \
+		TO_GCAP_DEF_TYPE(regstype), \
+		class, \
+	}
+
+/* List of lists */
+static const struct __guc_mmio_reg_descr_group xe_lp_lists[] = {
+	MAKE_REGLIST(xe_lp_global_regs, PF, GLOBAL, 0),
+	MAKE_REGLIST(empty_regs_list, PF, ENGINE_CLASS, GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE),
+	MAKE_REGLIST(xe_rc_inst_regs, PF, ENGINE_INSTANCE,
+		     GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE),
+	MAKE_REGLIST(empty_regs_list, PF, ENGINE_CLASS, GUC_CAPTURE_LIST_CLASS_VIDEO),
+	MAKE_REGLIST(xe_vd_inst_regs, PF, ENGINE_INSTANCE, GUC_CAPTURE_LIST_CLASS_VIDEO),
+	MAKE_REGLIST(empty_regs_list, PF, ENGINE_CLASS, GUC_CAPTURE_LIST_CLASS_VIDEOENHANCE),
+	MAKE_REGLIST(xe_vec_inst_regs, PF, ENGINE_INSTANCE,
+		     GUC_CAPTURE_LIST_CLASS_VIDEOENHANCE),
+	MAKE_REGLIST(empty_regs_list, PF, ENGINE_CLASS, GUC_CAPTURE_LIST_CLASS_BLITTER),
+	MAKE_REGLIST(xe_blt_inst_regs, PF, ENGINE_INSTANCE, GUC_CAPTURE_LIST_CLASS_BLITTER),
+	MAKE_REGLIST(empty_regs_list, PF, ENGINE_CLASS, GUC_CAPTURE_LIST_CLASS_GSC_OTHER),
+	MAKE_REGLIST(xe_lp_gsc_inst_regs, PF, ENGINE_INSTANCE, GUC_CAPTURE_LIST_CLASS_GSC_OTHER),
+	{}
+};
+
+static const char * const capture_list_type_names[] = {
+	"Global",
+	"Class",
+	"Instance",
+	"unknown",	/* Default name, if out of bound */
+};
+
+static const char * const capture_engine_class_names[] = {
+	"Render/Compute",
+	"Video",
+	"VideoEnhance",
+	"Blitter",
+	"GSC-Other",
+	"unknown",	/* Default name, if out of bound */
+};
+
+/* Get item from array by index.
+ * The last item is the default value, referenced for index out of bound condition.
+ */
+#define get_item_with_default(ar, index) (ar[(index) >= ARRAY_SIZE(ar) ? ARRAY_SIZE(ar) -  1 : \
+									 (index)])
+
+static const struct __guc_mmio_reg_descr_group *
+guc_capture_get_one_list(const struct __guc_mmio_reg_descr_group *reglists,
+			 u32 owner, u32 type, u32 id)
+{
+	int i;
+
+	if (!reglists)
+		return NULL;
+
+	for (i = 0; reglists[i].list; ++i) {
+		if (reglists[i].owner == owner && reglists[i].type == type &&
+		    (reglists[i].engine == id || reglists[i].type == GUC_CAPTURE_LIST_TYPE_GLOBAL))
+			return &reglists[i];
+	}
+
+	return NULL;
+}
+
+static const struct __guc_mmio_reg_descr_group *
+guc_capture_get_device_reglist(struct xe_guc *guc)
+{
+	return xe_lp_lists;
+}
+
+static int
+guc_capture_list_init(struct xe_guc *guc, u32 owner, u32 type, u32 classid,
+		      struct guc_mmio_reg *ptr, u16 num_entries)
+{
+	u32 i = 0;
+	const struct __guc_mmio_reg_descr_group *reglists = guc->capture->reglists;
+	const struct __guc_mmio_reg_descr_group *match;
+
+	if (!reglists)
+		return -ENODEV;
+
+	match = guc_capture_get_one_list(reglists, owner, type, classid);
+	if (!match)
+		return -ENODATA;
+
+	for (i = 0; i < num_entries && i < match->num_regs; ++i) {
+		ptr[i].offset = match->list[i].reg.addr;
+		ptr[i].value = 0xDEADF00D;
+		ptr[i].flags = match->list[i].flags;
+		ptr[i].mask = match->list[i].mask;
+	}
+
+	if (i < num_entries)
+		xe_gt_dbg(guc_to_gt(guc), "Got short capture reglist init: %d out %d.\n", i,
+			  num_entries);
+
+	return 0;
+}
+
+static int
+guc_cap_list_num_regs(struct xe_guc_state_capture *gc, u32 owner, u32 type, u32 classid)
+{
+	const struct __guc_mmio_reg_descr_group *match;
+
+	match = guc_capture_get_one_list(gc->reglists, owner, type, classid);
+	if (!match)
+		return 0;
+
+	return match->num_regs;
+}
+
+static int
+guc_capture_getlistsize(struct xe_guc *guc, u32 owner, u32 type, u32 classid,
+			size_t *size, bool is_purpose_est)
+{
+	struct xe_guc_state_capture *gc = guc->capture;
+	struct __guc_capture_ads_cache *cache = &gc->ads_cache[owner][type][classid];
+	int num_regs;
+
+	if (!gc->reglists) {
+		xe_gt_warn(guc_to_gt(guc), "No capture reglist for this device\n");
+		return -ENODEV;
+	}
+
+	if (cache->is_valid) {
+		*size = cache->size;
+		return cache->status;
+	}
+
+	if (!is_purpose_est && owner == GUC_CAPTURE_LIST_INDEX_PF &&
+	    !guc_capture_get_one_list(gc->reglists, owner, type, classid)) {
+		if (type == GUC_CAPTURE_LIST_TYPE_GLOBAL)
+			xe_gt_warn(guc_to_gt(guc), "Missing capture reglist: global!\n");
+		else
+			xe_gt_warn(guc_to_gt(guc), "Missing capture reglist: %s(%u):%s(%u)!\n",
+				   get_item_with_default(capture_list_type_names, type), type,
+				   get_item_with_default(capture_engine_class_names, classid),
+				   classid);
+		return -ENODEV;
+	}
+
+	num_regs = guc_cap_list_num_regs(gc, owner, type, classid);
+	/* intentional empty lists can exist depending on hw config */
+	if (!num_regs)
+		return -ENODATA;
+
+	if (size)
+		*size = PAGE_ALIGN((sizeof(struct guc_debug_capture_list)) +
+				   (num_regs * sizeof(struct guc_mmio_reg)));
+
+	return 0;
+}
+
+int
+xe_guc_capture_getlistsize(struct xe_guc *guc, u32 owner, u32 type, u32 classid, size_t *size)
+{
+	return guc_capture_getlistsize(guc, owner, type, classid, size, false);
+}
+
+int
+xe_guc_capture_getlist(struct xe_guc *guc, u32 owner, u32 type, u32 classid, void **outptr)
+{
+	struct xe_guc_state_capture *gc = guc->capture;
+	struct __guc_capture_ads_cache *cache = &gc->ads_cache[owner][type][classid];
+	struct guc_debug_capture_list *listnode;
+	int ret, num_regs;
+	u8 *caplist, *tmp;
+	size_t size = 0;
+
+	if (!gc->reglists)
+		return -ENODEV;
+
+	if (cache->is_valid) {
+		*outptr = cache->ptr;
+		return cache->status;
+	}
+
+	ret = xe_guc_capture_getlistsize(guc, owner, type, classid, &size);
+	if (ret) {
+		cache->is_valid = true;
+		cache->ptr = NULL;
+		cache->size = 0;
+		cache->status = ret;
+		return ret;
+	}
+
+	caplist = drmm_kzalloc(guc_to_drm(guc), size, GFP_KERNEL);
+	if (!caplist) {
+		xe_gt_dbg(guc_to_gt(guc), "Failed to alloc cached register capture list");
+		return -ENOMEM;
+	}
+
+	/* populate capture list header */
+	tmp = caplist;
+	num_regs = guc_cap_list_num_regs(guc->capture, owner, type, classid);
+	listnode = (struct guc_debug_capture_list *)tmp;
+	listnode->header.info = FIELD_PREP(GUC_CAPTURELISTHDR_NUMDESCR, (u32)num_regs);
+
+	/* populate list of register descriptor */
+	tmp += sizeof(struct guc_debug_capture_list);
+	guc_capture_list_init(guc, owner, type, classid, (struct guc_mmio_reg *)tmp, num_regs);
+
+	/* cache this list */
+	cache->is_valid = true;
+	cache->ptr = caplist;
+	cache->size = size;
+	cache->status = 0;
+
+	*outptr = caplist;
+
+	return 0;
+}
+
+int
+xe_guc_capture_getnullheader(struct xe_guc *guc, void **outptr, size_t *size)
+{
+	struct xe_guc_state_capture *gc = guc->capture;
+	int tmp = sizeof(u32) * 4;
+	void *null_header;
+
+	if (gc->ads_null_cache) {
+		*outptr = gc->ads_null_cache;
+		*size = tmp;
+		return 0;
+	}
+
+	null_header = drmm_kzalloc(guc_to_drm(guc), tmp, GFP_KERNEL);
+	if (!null_header) {
+		xe_gt_dbg(guc_to_gt(guc), "Failed to alloc cached register capture null list");
+		return -ENOMEM;
+	}
+
+	gc->ads_null_cache = null_header;
+	*outptr = null_header;
+	*size = tmp;
+
+	return 0;
+}
+
+int xe_guc_capture_init(struct xe_guc *guc)
+{
+	guc->capture = drmm_kzalloc(guc_to_drm(guc), sizeof(*guc->capture), GFP_KERNEL);
+	if (!guc->capture)
+		return -ENOMEM;
+
+	guc->capture->reglists = guc_capture_get_device_reglist(guc);
+
+	return 0;
+}
diff --git a/drivers/gpu/drm/xe/xe_guc_capture.h b/drivers/gpu/drm/xe/xe_guc_capture.h
new file mode 100644
index 000000000000..93e9c3784131
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_guc_capture.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2021-2021 Intel Corporation
+ */
+
+#ifndef _XE_GUC_CAPTURE_H
+#define _XE_GUC_CAPTURE_H
+
+#include <linux/types.h>
+
+struct xe_guc;
+
+int xe_guc_capture_getlist(struct xe_guc *guc, u32 owner, u32 type, u32 classid, void **outptr);
+int xe_guc_capture_getlistsize(struct xe_guc *guc, u32 owner, u32 type, u32 classid, size_t *size);
+int xe_guc_capture_getnullheader(struct xe_guc *guc, void **outptr, size_t *size);
+int xe_guc_capture_init(struct xe_guc *guc);
+
+#endif /* _XE_GUC_CAPTURE_H */
diff --git a/drivers/gpu/drm/xe/xe_guc_capture_fwif.h b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
new file mode 100644
index 000000000000..79bc277afaa8
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
@@ -0,0 +1,168 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2021-2022 Intel Corporation
+ */
+
+#ifndef _XE_GUC_CAPTURE_FWIF_H
+#define _XE_GUC_CAPTURE_FWIF_H
+
+#include <linux/types.h>
+#include "regs/xe_reg_defs.h"
+#include "xe_guc_fwif.h"
+
+/*
+ * struct guc_debug_capture_list_header / struct guc_debug_capture_list
+ *
+ * As part of ADS registration, these header structures (followed by
+ * an array of 'struct guc_mmio_reg' entries) are used to register with
+ * GuC microkernel the list of registers we want it to dump out prior
+ * to a engine reset.
+ */
+struct guc_debug_capture_list_header {
+	u32 info;
+#define GUC_CAPTURELISTHDR_NUMDESCR GENMASK(15, 0)
+} __packed;
+
+struct guc_debug_capture_list {
+	struct guc_debug_capture_list_header header;
+	struct guc_mmio_reg regs[];
+} __packed;
+
+/*
+ * struct __guc_mmio_reg_descr / struct __guc_mmio_reg_descr_group
+ *
+ * xe_guc_capture module uses these structures to maintain static
+ * tables (per unique platform) that consists of lists of registers
+ * (offsets, names, flags,...) that are used at the ADS regisration
+ * time as well as during runtime processing and reporting of error-
+ * capture states generated by GuC just prior to engine reset events.
+ */
+struct __guc_mmio_reg_descr {
+	struct xe_reg reg;
+	u32 flags;
+	u32 mask;
+	const char *regname;
+};
+
+struct __guc_mmio_reg_descr_group {
+	const struct __guc_mmio_reg_descr *list;
+	u32 num_regs;
+	u32 owner; /* see enum guc_capture_owner */
+	u32 type; /* see enum guc_capture_type */
+	u32 engine; /* as per MAX_ENGINE_CLASS */
+};
+
+/*
+ * struct guc_state_capture_header_t / struct guc_state_capture_t /
+ * guc_state_capture_group_header_t / guc_state_capture_group_t
+ *
+ * Prior to resetting engines that have hung or faulted, GuC microkernel
+ * reports the engine error-state (register values that was read) by
+ * logging them into the shared GuC log buffer using these hierarchy
+ * of structures.
+ */
+struct guc_state_capture_header_t {
+	u32 owner;
+#define CAP_HDR_CAPTURE_VFID GENMASK(7, 0)
+	u32 info;
+#define CAP_HDR_CAPTURE_TYPE GENMASK(3, 0) /* see enum guc_capture_type */
+#define CAP_HDR_ENGINE_CLASS GENMASK(7, 4) /* see GUC_MAX_ENGINE_CLASSES */
+#define CAP_HDR_ENGINE_INSTANCE GENMASK(11, 8)
+	u32 lrca; /* if type-instance, LRCA (address) that hung, else set to ~0 */
+	u32 guc_id; /* if type-instance, context index of hung context, else set to ~0 */
+	u32 num_mmios;
+#define CAP_HDR_NUM_MMIOS GENMASK(9, 0)
+} __packed;
+
+struct guc_state_capture_t {
+	struct guc_state_capture_header_t header;
+	struct guc_mmio_reg mmio_entries[];
+} __packed;
+
+enum guc_capture_group_types {
+	GUC_STATE_CAPTURE_GROUP_TYPE_FULL,
+	GUC_STATE_CAPTURE_GROUP_TYPE_PARTIAL,
+	GUC_STATE_CAPTURE_GROUP_TYPE_MAX,
+};
+
+struct guc_state_capture_group_header_t {
+	u32 owner;
+	u32 info;
+#define CAP_GRP_HDR_NUM_CAPTURES GENMASK(7, 0)
+#define CAP_GRP_HDR_CAPTURE_TYPE GENMASK(15, 8) /* guc_capture_group_types */
+} __packed;
+
+/* this is the top level structure where an error-capture dump starts */
+struct guc_state_capture_group_t {
+	struct guc_state_capture_group_header_t grp_header;
+	struct guc_state_capture_t capture_entries[];
+} __packed;
+
+/*
+ * struct __guc_capture_ads_cache
+ *
+ * A structure to cache register lists that were populated and registered
+ * with GuC at startup during ADS registration. This allows much quicker
+ * GuC resets without re-parsing all the tables for the given gt.
+ */
+struct __guc_capture_ads_cache {
+	bool is_valid;
+	void *ptr;
+	size_t size;
+	int status;
+};
+
+/**
+ * struct xe_guc_state_capture
+ *
+ * Internal context of the xe_guc_capture module.
+ */
+struct xe_guc_state_capture {
+	/**
+	 * @reglists: static table of register lists used for error-capture state.
+	 */
+	const struct __guc_mmio_reg_descr_group *reglists;
+
+	/**
+	 * @ads_cache: cached register lists that is ADS format ready
+	 */
+	struct __guc_capture_ads_cache ads_cache[GUC_CAPTURE_LIST_INDEX_MAX]
+						[GUC_CAPTURE_LIST_TYPE_MAX]
+						[GUC_MAX_ENGINE_CLASSES];
+
+	/**
+	 * @ads_null_cache: ADS null cache.
+	 */
+	void *ads_null_cache;
+
+	/**
+	 * @cachelist: Pool of pre-allocated nodes for error capture output
+	 *
+	 * We need this pool of pre-allocated nodes because we cannot
+	 * dynamically allocate new nodes when receiving the G2H notification
+	 * because the event handlers for all G2H event-processing is called
+	 * by the ct processing worker queue and when that queue is being
+	 * processed, there is no absoluate guarantee that we are not in the
+	 * midst of a GT reset operation (which doesn't allow allocations).
+	 */
+	struct list_head cachelist;
+#define PREALLOC_NODES_MAX_COUNT (3 * GUC_MAX_ENGINE_CLASSES * GUC_MAX_INSTANCES_PER_CLASS)
+#define PREALLOC_NODES_DEFAULT_NUMREGS 64
+
+	/**
+	 * @max_mmio_per_node: Max MMIO per node.
+	 */
+	int max_mmio_per_node;
+
+	/**
+	 * @outlist: Pool of pre-allocated nodes for error capture output
+	 *
+	 * A linked list of parsed GuC error-capture output data before
+	 * reporting with formatting via xe_devcoredump. Each node in this linked list shall
+	 * contain a single engine-capture including global, engine-class and
+	 * engine-instance register dumps as per guc_capture_parsed_output_node
+	 */
+	struct list_head outlist;
+};
+
+#endif /* _XE_GUC_CAPTURE_FWIF_H */
diff --git a/drivers/gpu/drm/xe/xe_guc_fwif.h b/drivers/gpu/drm/xe/xe_guc_fwif.h
index 19ee71aeaf17..04b03c398191 100644
--- a/drivers/gpu/drm/xe/xe_guc_fwif.h
+++ b/drivers/gpu/drm/xe/xe_guc_fwif.h
@@ -9,6 +9,7 @@
 #include <linux/bits.h>
 
 #include "abi/guc_klvs_abi.h"
+#include "xe_hw_engine_types.h"
 
 #define G2H_LEN_DW_SCHED_CONTEXT_MODE_SET	4
 #define G2H_LEN_DW_DEREGISTER_CONTEXT		3
@@ -164,8 +165,11 @@ struct guc_mmio_reg {
 	u32 flags;
 	u32 mask;
 #define GUC_REGSET_MASKED		BIT(0)
+#define GUC_REGSET_STEERING_NEEDED	BIT(1)
 #define GUC_REGSET_MASKED_WITH_VALUE	BIT(2)
 #define GUC_REGSET_RESTORE_ONLY		BIT(3)
+#define GUC_REGSET_STEERING_GROUP       GENMASK(16, 12)
+#define GUC_REGSET_STEERING_INSTANCE    GENMASK(23, 20)
 } __packed;
 
 /* GuC register sets */
@@ -194,6 +198,24 @@ enum {
 	GUC_CAPTURE_LIST_INDEX_MAX = 2,
 };
 
+/*Register-types of GuC capture register lists */
+enum guc_capture_type {
+	GUC_CAPTURE_LIST_TYPE_GLOBAL = 0,
+	GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
+	GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE,
+	GUC_CAPTURE_LIST_TYPE_MAX,
+};
+
+/* Class indecies for capture_class and capture_instance arrays */
+enum {
+	GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE = 0,
+	GUC_CAPTURE_LIST_CLASS_VIDEO = 1,
+	GUC_CAPTURE_LIST_CLASS_VIDEOENHANCE = 2,
+	GUC_CAPTURE_LIST_CLASS_BLITTER = 3,
+	GUC_CAPTURE_LIST_CLASS_GSC_OTHER = 4,
+	GUC_CAPTURE_LIST_CLASS_MAX  = 5
+};
+
 /* GuC Additional Data Struct */
 struct guc_ads {
 	struct guc_mmio_reg_set reg_state_list[GUC_MAX_ENGINE_CLASSES][GUC_MAX_INSTANCES_PER_CLASS];
diff --git a/drivers/gpu/drm/xe/xe_guc_types.h b/drivers/gpu/drm/xe/xe_guc_types.h
index 546ac6350a31..6d7d0976b7af 100644
--- a/drivers/gpu/drm/xe/xe_guc_types.h
+++ b/drivers/gpu/drm/xe/xe_guc_types.h
@@ -58,6 +58,8 @@ struct xe_guc {
 	struct xe_guc_ads ads;
 	/** @ct: GuC ct */
 	struct xe_guc_ct ct;
+	/** @capture: the error-state-capture module's data and objects */
+	struct xe_guc_state_capture *capture;
 	/** @pc: GuC Power Conservation */
 	struct xe_guc_pc pc;
 	/** @dbm: GuC Doorbell Manager */
-- 
2.34.1


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

* [PATCH v8 2/6] drm/xe/guc: Add XE_LP steered register lists
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
  2024-05-07  1:47 ` [PATCH v8 1/6] drm/xe/guc: Prepare GuC register list and update ADS size " Zhanjun Dong
@ 2024-05-07  1:47 ` Zhanjun Dong
  2024-05-11  0:17   ` Teres Alexis, Alan Previn
  2024-05-07  1:47 ` [PATCH v8 3/6] drm/xe/guc: Add capture size check in GuC log buffer Zhanjun Dong
                   ` (11 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Zhanjun Dong @ 2024-05-07  1:47 UTC (permalink / raw)
  To: intel-xe; +Cc: Zhanjun Dong

Add the ability for runtime allocation and freeing of
steered register list extentions that depend on the
detected HW config fuses.

Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
---
 drivers/gpu/drm/xe/xe_guc_capture.c      | 155 ++++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_guc_capture_fwif.h |   9 ++
 2 files changed, 162 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c
index b21a8ef85c4e..9437911a0e72 100644
--- a/drivers/gpu/drm/xe/xe_guc_capture.c
+++ b/drivers/gpu/drm/xe/xe_guc_capture.c
@@ -105,6 +105,7 @@ static const struct __guc_mmio_reg_descr empty_regs_list[] = {
 		TO_GCAP_DEF_OWNER(regsowner), \
 		TO_GCAP_DEF_TYPE(regstype), \
 		class, \
+		NULL, \
 	}
 
 /* List of lists */
@@ -165,9 +166,138 @@ guc_capture_get_one_list(const struct __guc_mmio_reg_descr_group *reglists,
 	return NULL;
 }
 
+static struct __guc_mmio_reg_descr_group *
+guc_capture_get_one_ext_list(struct __guc_mmio_reg_descr_group *reglists,
+			     u32 owner, u32 type, u32 id)
+{
+	int i;
+
+	if (!reglists)
+		return NULL;
+
+	for (i = 0; reglists[i].extlist; ++i) {
+		if (reglists[i].owner == owner && reglists[i].type == type &&
+		    (reglists[i].engine == id || reglists[i].type == GUC_CAPTURE_LIST_TYPE_GLOBAL))
+			return &reglists[i];
+	}
+
+	return NULL;
+}
+
+struct __ext_steer_reg {
+	const char *name;
+	struct xe_reg_mcr reg;
+};
+
+static const struct __ext_steer_reg xe_extregs[] = {
+	{"SAMPLER_INSTDONE",	SAMPLER_INSTDONE},
+	{"ROW_INSTDONE",	ROW_INSTDONE}
+};
+
+static const struct __ext_steer_reg xehpg_extregs[] = {
+	{"XEHPG_INSTDONE_GEOM_SVGUNIT", XEHPG_INSTDONE_GEOM_SVGUNIT}
+};
+
+static void __fill_ext_reg(struct __guc_mmio_reg_descr *ext,
+			   const struct __ext_steer_reg *extlist,
+			   int slice_id, int subslice_id)
+{
+	ext->reg = XE_REG(extlist->reg.__reg.addr);
+	ext->flags = FIELD_PREP(GUC_REGSET_STEERING_GROUP, slice_id);
+	ext->flags |= FIELD_PREP(GUC_REGSET_STEERING_INSTANCE, subslice_id);
+	ext->regname = extlist->name;
+}
+
+static int
+__alloc_ext_regs(struct drm_device *drm, struct __guc_mmio_reg_descr_group *newlist,
+		 const struct __guc_mmio_reg_descr_group *rootlist, int num_regs)
+{
+	struct __guc_mmio_reg_descr *list;
+
+	list = drmm_kzalloc(drm, num_regs * sizeof(struct __guc_mmio_reg_descr), GFP_KERNEL);
+	if (!list)
+		return -ENOMEM;
+
+	newlist->extlist = list;
+	newlist->num_regs = num_regs;
+	newlist->owner = rootlist->owner;
+	newlist->engine = rootlist->engine;
+	newlist->type = rootlist->type;
+
+	return 0;
+}
+
+static void
+guc_capture_alloc_steered_lists(struct xe_guc *guc, const struct __guc_mmio_reg_descr_group *lists)
+{
+	struct xe_gt *gt = guc_to_gt(guc);
+	u16 slice, subslice;
+	int iter, i, num_steer_regs, num_tot_regs = 0;
+	const struct __guc_mmio_reg_descr_group *list;
+	struct __guc_mmio_reg_descr_group *extlists;
+	struct __guc_mmio_reg_descr *extarray;
+	bool has_xehpg_extregs;
+	struct drm_device *drm = &gt_to_xe(gt)->drm;
+
+	/* steered registers currently only exist for the render-class */
+	list = guc_capture_get_one_list(lists, GUC_CAPTURE_LIST_INDEX_PF,
+					GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
+					GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE);
+	/* skip if extlists was previously allocated */
+	if (!list || guc->capture->extlists)
+		return;
+
+	has_xehpg_extregs = GRAPHICS_VERx100(gt_to_xe(gt)) >= 1255;
+
+	num_steer_regs = ARRAY_SIZE(xe_extregs);
+	if (has_xehpg_extregs)
+		num_steer_regs += ARRAY_SIZE(xehpg_extregs);
+
+	num_tot_regs += num_steer_regs * bitmap_weight(gt->fuse_topo.g_dss_mask,
+						       sizeof(gt->fuse_topo.g_dss_mask) * 8);
+	if (!num_tot_regs)
+		return;
+
+	/* allocate an extra for an end marker */
+	extlists = drmm_kzalloc(drm, 2 * sizeof(struct __guc_mmio_reg_descr_group), GFP_KERNEL);
+	if (!extlists)
+		return;
+
+	if (__alloc_ext_regs(drm, &extlists[0], list, num_tot_regs)) {
+		drmm_kfree(drm, extlists);
+		return;
+	}
+
+	extarray = extlists[0].extlist;
+	for_each_dss_steering(iter, gt, slice, subslice) {
+		for (i = 0; i < ARRAY_SIZE(xe_extregs); ++i) {
+			__fill_ext_reg(extarray, &xe_extregs[i], slice, subslice);
+			++extarray;
+		}
+
+		if (has_xehpg_extregs) {
+			for (i = 0; i < ARRAY_SIZE(xehpg_extregs); ++i) {
+				__fill_ext_reg(extarray, &xehpg_extregs[i], slice, subslice);
+				++extarray;
+			}
+		}
+	}
+
+	xe_gt_dbg(guc_to_gt(guc), "capture found %d ext-regs.\n", num_tot_regs);
+	guc->capture->extlists = extlists;
+}
+
 static const struct __guc_mmio_reg_descr_group *
 guc_capture_get_device_reglist(struct xe_guc *guc)
 {
+	/*
+	 * For certain engine classes, there are slice and subslice
+	 * level registers requiring steering. We allocate and populate
+	 * these at init time based on hw config add it as an extension
+	 * list at the end of the pre-populated render list.
+	 */
+	guc_capture_alloc_steered_lists(guc, xe_lp_lists);
+
 	return xe_lp_lists;
 }
 
@@ -175,9 +305,11 @@ static int
 guc_capture_list_init(struct xe_guc *guc, u32 owner, u32 type, u32 classid,
 		      struct guc_mmio_reg *ptr, u16 num_entries)
 {
-	u32 i = 0;
+	u32 i = 0, j = 0;
 	const struct __guc_mmio_reg_descr_group *reglists = guc->capture->reglists;
+	struct __guc_mmio_reg_descr_group *extlists = guc->capture->extlists;
 	const struct __guc_mmio_reg_descr_group *match;
+	struct __guc_mmio_reg_descr_group *matchext;
 
 	if (!reglists)
 		return -ENODEV;
@@ -193,6 +325,17 @@ guc_capture_list_init(struct xe_guc *guc, u32 owner, u32 type, u32 classid,
 		ptr[i].mask = match->list[i].mask;
 	}
 
+	matchext = guc_capture_get_one_ext_list(extlists, owner, type, classid);
+	if (matchext) {
+		for (i = match->num_regs, j = 0; i < num_entries &&
+		     i < (match->num_regs + matchext->num_regs) &&
+			j < matchext->num_regs; ++i, ++j) {
+			ptr[i].offset = matchext->extlist[j].reg.addr;
+			ptr[i].value = 0xDEADF00D;
+			ptr[i].flags = matchext->extlist[j].flags;
+			ptr[i].mask = matchext->extlist[j].mask;
+		}
+	}
 	if (i < num_entries)
 		xe_gt_dbg(guc_to_gt(guc), "Got short capture reglist init: %d out %d.\n", i,
 			  num_entries);
@@ -204,12 +347,20 @@ static int
 guc_cap_list_num_regs(struct xe_guc_state_capture *gc, u32 owner, u32 type, u32 classid)
 {
 	const struct __guc_mmio_reg_descr_group *match;
+	struct __guc_mmio_reg_descr_group *matchext;
+	int num_regs;
 
 	match = guc_capture_get_one_list(gc->reglists, owner, type, classid);
 	if (!match)
 		return 0;
 
-	return match->num_regs;
+	num_regs = match->num_regs;
+
+	matchext = guc_capture_get_one_ext_list(gc->extlists, owner, type, classid);
+	if (matchext)
+		num_regs += matchext->num_regs;
+
+	return num_regs;
 }
 
 static int
diff --git a/drivers/gpu/drm/xe/xe_guc_capture_fwif.h b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
index 79bc277afaa8..a3b3f52317a7 100644
--- a/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
+++ b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
@@ -50,6 +50,7 @@ struct __guc_mmio_reg_descr_group {
 	u32 owner; /* see enum guc_capture_owner */
 	u32 type; /* see enum guc_capture_type */
 	u32 engine; /* as per MAX_ENGINE_CLASS */
+	struct __guc_mmio_reg_descr *extlist; /* only used for steered registers */
 };
 
 /*
@@ -123,6 +124,14 @@ struct xe_guc_state_capture {
 	 */
 	const struct __guc_mmio_reg_descr_group *reglists;
 
+	/**
+	 * @extlists: allocated table of steered register lists used for error-capture state.
+	 *
+	 * NOTE: steered registers have multiple instances depending on the HW configuration
+	 * (slices or dual-sub-slices) and thus depends on HW fuses discovered at startup
+	 */
+	struct __guc_mmio_reg_descr_group *extlists;
+
 	/**
 	 * @ads_cache: cached register lists that is ADS format ready
 	 */
-- 
2.34.1


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

* [PATCH v8 3/6] drm/xe/guc: Add capture size check in GuC log buffer
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
  2024-05-07  1:47 ` [PATCH v8 1/6] drm/xe/guc: Prepare GuC register list and update ADS size " Zhanjun Dong
  2024-05-07  1:47 ` [PATCH v8 2/6] drm/xe/guc: Add XE_LP steered register lists Zhanjun Dong
@ 2024-05-07  1:47 ` Zhanjun Dong
  2024-05-08 22:57   ` Teres Alexis, Alan Previn
  2024-05-07  1:47 ` [PATCH v8 4/6] drm/xe/guc: Extract GuC error capture lists Zhanjun Dong
                   ` (10 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Zhanjun Dong @ 2024-05-07  1:47 UTC (permalink / raw)
  To: intel-xe; +Cc: Zhanjun Dong

The capture-nodes is included in GuC log buffer, add the size check
for capture region in the whole GuC log buffer.
Check the worst size of register capture aginst error capture region size.

Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
---
 drivers/gpu/drm/xe/xe_gt_printk.h     |   3 +
 drivers/gpu/drm/xe/xe_guc_capture.c   |  30 +++++
 drivers/gpu/drm/xe/xe_guc_fwif.h      |  48 +++++++
 drivers/gpu/drm/xe/xe_guc_log.c       | 179 ++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_guc_log.h       |  15 +++
 drivers/gpu/drm/xe/xe_guc_log_types.h |  24 ++++
 6 files changed, 299 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_gt_printk.h b/drivers/gpu/drm/xe/xe_gt_printk.h
index c2b004d3f48e..107360edfcd6 100644
--- a/drivers/gpu/drm/xe/xe_gt_printk.h
+++ b/drivers/gpu/drm/xe/xe_gt_printk.h
@@ -22,6 +22,9 @@
 #define xe_gt_notice(_gt, _fmt, ...) \
 	xe_gt_printk((_gt), notice, _fmt, ##__VA_ARGS__)
 
+#define xe_gt_notice_ratelimited(_gt, _fmt, ...) \
+	xe_gt_printk((_gt), err_ratelimited, _fmt, ##__VA_ARGS__)
+
 #define xe_gt_info(_gt, _fmt, ...) \
 	xe_gt_printk((_gt), info, _fmt, ##__VA_ARGS__)
 
diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c
index 9437911a0e72..d2df027081b5 100644
--- a/drivers/gpu/drm/xe/xe_guc_capture.c
+++ b/drivers/gpu/drm/xe/xe_guc_capture.c
@@ -20,6 +20,7 @@
 #include "xe_gt.h"
 #include "xe_gt_printk.h"
 #include "xe_guc.h"
+#include "xe_guc_ads.h"
 #include "xe_guc_capture.h"
 #include "xe_guc_capture_fwif.h"
 #include "xe_guc_ct.h"
@@ -491,6 +492,34 @@ xe_guc_capture_getnullheader(struct xe_guc *guc, void **outptr, size_t *size)
 	return 0;
 }
 
+/*
+ * Add on a 3x multiplier to allow for multiple back-to-back captures occurring
+ * before the Xe can read the data out and process it
+ */
+#define GUC_CAPTURE_OVERBUFFER_MULTIPLIER 3
+
+static void check_guc_capture_size(struct xe_guc *guc)
+{
+	int capture_size = xe_calculate_guc_regs_capture_worst_size(guc);
+	int spare_size = capture_size * GUC_CAPTURE_OVERBUFFER_MULTIPLIER;
+	u32 buffer_size = xe_guc_log_section_size_capture(&guc->log);
+
+	/*
+	 * NOTE: capture_size is much smaller than the capture region allocation (DG2: <80K vs 1MB)
+	 * Additionally, its based on space needed to fit all engines getting reset at once
+	 * within the same G2H handler task slot. This is very unlikely. However, if GuC really
+	 * does run out of space for whatever reason, we will see an separate warning message
+	 * when processing the G2H event capture-notification, search for:
+	 * xe_guc_STATE_CAPTURE_EVENT_STATUS_NOSPACE.
+	 */
+	if (capture_size > buffer_size)
+		xe_gt_warn(guc_to_gt(guc), "Error state capture buffer maybe small: %d < %d\n",
+			   buffer_size, capture_size);
+	else if (spare_size > buffer_size)
+		xe_gt_dbg(guc_to_gt(guc), "Error state capture buffer lacks spare size: %d < %d (min = %d)\n",
+			  buffer_size, spare_size, capture_size);
+}
+
 int xe_guc_capture_init(struct xe_guc *guc)
 {
 	guc->capture = drmm_kzalloc(guc_to_drm(guc), sizeof(*guc->capture), GFP_KERNEL);
@@ -499,5 +528,6 @@ int xe_guc_capture_init(struct xe_guc *guc)
 
 	guc->capture->reglists = guc_capture_get_device_reglist(guc);
 
+	check_guc_capture_size(guc);
 	return 0;
 }
diff --git a/drivers/gpu/drm/xe/xe_guc_fwif.h b/drivers/gpu/drm/xe/xe_guc_fwif.h
index 04b03c398191..908298791c93 100644
--- a/drivers/gpu/drm/xe/xe_guc_fwif.h
+++ b/drivers/gpu/drm/xe/xe_guc_fwif.h
@@ -250,6 +250,54 @@ struct guc_engine_usage {
 	struct guc_engine_usage_record engines[GUC_MAX_ENGINE_CLASSES][GUC_MAX_INSTANCES_PER_CLASS];
 } __packed;
 
+/* GuC logging structures */
+
+enum guc_log_buffer_type {
+	GUC_DEBUG_LOG_BUFFER,
+	GUC_CRASH_DUMP_LOG_BUFFER,
+	GUC_CAPTURE_LOG_BUFFER,
+	GUC_MAX_LOG_BUFFER
+};
+
+/*
+ * struct guc_log_buffer_state - GuC log buffer state
+ *
+ * Below state structure is used for coordination of retrieval of GuC firmware
+ * logs. Separate state is maintained for each log buffer type.
+ * read_ptr points to the location where Xe read last in log buffer and
+ * is read only for GuC firmware. write_ptr is incremented by GuC with number
+ * of bytes written for each log entry and is read only for Xe.
+ * When any type of log buffer becomes half full, GuC sends a flush interrupt.
+ * GuC firmware expects that while it is writing to 2nd half of the buffer,
+ * first half would get consumed by Host and then get a flush completed
+ * acknowledgment from Host, so that it does not end up doing any overwrite
+ * causing loss of logs. So when buffer gets half filled & Xe has requested
+ * for interrupt, GuC will set flush_to_file field, set the sampled_write_ptr
+ * to the value of write_ptr and raise the interrupt.
+ * On receiving the interrupt Xe should read the buffer, clear flush_to_file
+ * field and also update read_ptr with the value of sample_write_ptr, before
+ * sending an acknowledgment to GuC. marker & version fields are for internal
+ * usage of GuC and opaque to Xe. buffer_full_cnt field is incremented every
+ * time GuC detects the log buffer overflow.
+ */
+struct guc_log_buffer_state {
+	u32 marker[2];
+	u32 read_ptr;
+	u32 write_ptr;
+	u32 size;
+	u32 sampled_write_ptr;
+	u32 wrap_offset;
+	union {
+		struct {
+			u32 flush_to_file:1;
+			u32 buffer_full_cnt:4;
+			u32 reserved:27;
+		};
+		u32 flags;
+	};
+	u32 version;
+} __packed;
+
 /* This action will be programmed in C1BC - SOFT_SCRATCH_15_REG */
 enum xe_guc_recv_message {
 	XE_GUC_RECV_MSG_CRASH_DUMP_POSTED = BIT(1),
diff --git a/drivers/gpu/drm/xe/xe_guc_log.c b/drivers/gpu/drm/xe/xe_guc_log.c
index a37ee3419428..c97fc4d57168 100644
--- a/drivers/gpu/drm/xe/xe_guc_log.c
+++ b/drivers/gpu/drm/xe/xe_guc_log.c
@@ -9,9 +9,30 @@
 
 #include "xe_bo.h"
 #include "xe_gt.h"
+#include "xe_gt_printk.h"
 #include "xe_map.h"
 #include "xe_module.h"
 
+#define MISSING_CASE(x) WARN(1, "Missing case (%s == %ld)\n", \
+			     __stringify(x), (long)(x))
+
+#define GUC_LOG_DEFAULT_CRASH_BUFFER_SIZE	CRASH_BUFFER_SIZE
+#define GUC_LOG_DEFAULT_DEBUG_BUFFER_SIZE	DEBUG_BUFFER_SIZE
+#define GUC_LOG_DEFAULT_CAPTURE_BUFFER_SIZE	CAPTURE_BUFFER_SIZE
+
+struct guc_log_section {
+	u32 max;
+	u32 flag;
+	u32 default_val;
+	const char *name;
+};
+
+static struct xe_gt *
+guc_to_gt(struct xe_guc *guc)
+{
+	return container_of(guc, struct xe_gt, uc.guc);
+}
+
 static struct xe_gt *
 log_to_gt(struct xe_guc_log *log)
 {
@@ -96,3 +117,161 @@ int xe_guc_log_init(struct xe_guc_log *log)
 
 	return 0;
 }
+
+static void _guc_log_init_sizes(struct xe_guc_log *log)
+{
+	struct xe_guc *guc = log_to_guc(log);
+	static const struct guc_log_section sections[GUC_LOG_SECTIONS_LIMIT] = {
+		{
+			GUC_LOG_CRASH_MASK >> GUC_LOG_CRASH_SHIFT,
+			GUC_LOG_LOG_ALLOC_UNITS,
+			GUC_LOG_DEFAULT_CRASH_BUFFER_SIZE,
+			"crash dump"
+		},
+		{
+			GUC_LOG_DEBUG_MASK >> GUC_LOG_DEBUG_SHIFT,
+			GUC_LOG_LOG_ALLOC_UNITS,
+			GUC_LOG_DEFAULT_DEBUG_BUFFER_SIZE,
+			"debug",
+		},
+		{
+			GUC_LOG_CAPTURE_MASK >> GUC_LOG_CAPTURE_SHIFT,
+			GUC_LOG_CAPTURE_ALLOC_UNITS,
+			GUC_LOG_DEFAULT_CAPTURE_BUFFER_SIZE,
+			"capture",
+		}
+	};
+	int i;
+
+	for (i = 0; i < GUC_LOG_SECTIONS_LIMIT; i++)
+		log->sizes[i].bytes = sections[i].default_val;
+
+	/* If debug size > 1MB then bump default crash size to keep the same units */
+	if (log->sizes[GUC_LOG_SECTIONS_DEBUG].bytes >= SZ_1M &&
+	    GUC_LOG_DEFAULT_CRASH_BUFFER_SIZE < SZ_1M)
+		log->sizes[GUC_LOG_SECTIONS_CRASH].bytes = SZ_1M;
+
+	/* Prepare the GuC API structure fields: */
+	for (i = 0; i < GUC_LOG_SECTIONS_LIMIT; i++) {
+		/* Convert to correct units */
+		if ((log->sizes[i].bytes % SZ_1M) == 0) {
+			log->sizes[i].units = SZ_1M;
+			log->sizes[i].flag = sections[i].flag;
+		} else {
+			log->sizes[i].units = SZ_4K;
+			log->sizes[i].flag = 0;
+		}
+
+		if (!IS_ALIGNED(log->sizes[i].bytes, log->sizes[i].units))
+			xe_gt_err(guc_to_gt(guc), "Mis-aligned log %s size: 0x%X vs 0x%X!\n",
+				  sections[i].name, log->sizes[i].bytes, log->sizes[i].units);
+		log->sizes[i].count = log->sizes[i].bytes / log->sizes[i].units;
+
+		if (!log->sizes[i].count) {
+			xe_gt_err(guc_to_gt(guc), "Zero log %s size!\n", sections[i].name);
+		} else {
+			/* Size is +1 unit */
+			log->sizes[i].count--;
+		}
+
+		/* Clip to field size */
+		if (log->sizes[i].count > sections[i].max) {
+			xe_gt_err(guc_to_gt(guc), "log %s size too large: %d vs %d!\n",
+				  sections[i].name, log->sizes[i].count + 1, sections[i].max + 1);
+			log->sizes[i].count = sections[i].max;
+		}
+	}
+
+	if (log->sizes[GUC_LOG_SECTIONS_CRASH].units != log->sizes[GUC_LOG_SECTIONS_DEBUG].units) {
+		xe_gt_err(guc_to_gt(guc), "Unit mismatch for crash and debug sections: %d vs %d!\n",
+			  log->sizes[GUC_LOG_SECTIONS_CRASH].units,
+			  log->sizes[GUC_LOG_SECTIONS_DEBUG].units);
+		log->sizes[GUC_LOG_SECTIONS_CRASH].units = log->sizes[GUC_LOG_SECTIONS_DEBUG].units;
+		log->sizes[GUC_LOG_SECTIONS_CRASH].count = 0;
+	}
+
+	log->sizes_initialised = true;
+}
+
+static void guc_log_init_sizes(struct xe_guc_log *log)
+{
+	if (log->sizes_initialised)
+		return;
+
+	_guc_log_init_sizes(log);
+}
+
+static u32 xe_guc_log_section_size_crash(struct xe_guc_log *log)
+{
+	guc_log_init_sizes(log);
+
+	return log->sizes[GUC_LOG_SECTIONS_CRASH].bytes;
+}
+
+static u32 xe_guc_log_section_size_debug(struct xe_guc_log *log)
+{
+	guc_log_init_sizes(log);
+
+	return log->sizes[GUC_LOG_SECTIONS_DEBUG].bytes;
+}
+
+u32 xe_guc_log_section_size_capture(struct xe_guc_log *log)
+{
+	guc_log_init_sizes(log);
+
+	return log->sizes[GUC_LOG_SECTIONS_CAPTURE].bytes;
+}
+
+bool xe_guc_check_log_buf_overflow(struct xe_guc_log *log, enum guc_log_buffer_type type,
+				   unsigned int full_cnt)
+{
+	unsigned int prev_full_cnt = log->stats[type].sampled_overflow;
+	bool overflow = false;
+
+	if (full_cnt != prev_full_cnt) {
+		overflow = true;
+
+		log->stats[type].overflow = full_cnt;
+		log->stats[type].sampled_overflow += full_cnt - prev_full_cnt;
+
+		if (full_cnt < prev_full_cnt) {
+			/* buffer_full_cnt is a 4 bit counter */
+			log->stats[type].sampled_overflow += 16;
+		}
+		xe_gt_notice_ratelimited(log_to_gt(log), "log buffer overflow\n");
+	}
+
+	return overflow;
+}
+
+unsigned int xe_guc_get_log_buffer_size(struct xe_guc_log *log,
+					enum guc_log_buffer_type type)
+{
+	switch (type) {
+	case GUC_DEBUG_LOG_BUFFER:
+		return xe_guc_log_section_size_debug(log);
+	case GUC_CRASH_DUMP_LOG_BUFFER:
+		return xe_guc_log_section_size_crash(log);
+	case GUC_CAPTURE_LOG_BUFFER:
+		return xe_guc_log_section_size_capture(log);
+	default:
+		MISSING_CASE(type);
+	}
+
+	return 0;
+}
+
+size_t xe_guc_get_log_buffer_offset(struct xe_guc_log *log,
+				    enum guc_log_buffer_type type)
+{
+	enum guc_log_buffer_type i;
+	size_t offset = PAGE_SIZE;/* for the log_buffer_states */
+
+	for (i = GUC_DEBUG_LOG_BUFFER; i < GUC_MAX_LOG_BUFFER; ++i) {
+		if (i == type)
+			break;
+		offset += xe_guc_get_log_buffer_size(log, i);
+	}
+
+	return offset;
+}
diff --git a/drivers/gpu/drm/xe/xe_guc_log.h b/drivers/gpu/drm/xe/xe_guc_log.h
index 2d25ab28b4b3..6a70185ce306 100644
--- a/drivers/gpu/drm/xe/xe_guc_log.h
+++ b/drivers/gpu/drm/xe/xe_guc_log.h
@@ -7,6 +7,7 @@
 #define _XE_GUC_LOG_H_
 
 #include "xe_guc_log_types.h"
+#include "xe_guc_types.h"
 
 struct drm_printer;
 
@@ -36,6 +37,11 @@ struct drm_printer;
 #define GUC_VERBOSITY_TO_LOG_LEVEL(x)	((x) + 2)
 #define GUC_LOG_LEVEL_MAX GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX)
 
+static inline struct xe_guc *log_to_guc(struct xe_guc_log *log)
+{
+	return container_of(log, struct xe_guc, log);
+}
+
 int xe_guc_log_init(struct xe_guc_log *log);
 void xe_guc_log_print(struct xe_guc_log *log, struct drm_printer *p);
 
@@ -45,4 +51,13 @@ xe_guc_log_get_level(struct xe_guc_log *log)
 	return log->level;
 }
 
+u32 xe_guc_log_section_size_capture(struct xe_guc_log *log);
+
+bool xe_guc_check_log_buf_overflow(struct xe_guc_log *log,
+				   enum guc_log_buffer_type type,
+				   unsigned int full_cnt);
+unsigned int xe_guc_get_log_buffer_size(struct xe_guc_log *log,
+					enum guc_log_buffer_type type);
+size_t xe_guc_get_log_buffer_offset(struct xe_guc_log *log,
+				    enum guc_log_buffer_type type);
 #endif
diff --git a/drivers/gpu/drm/xe/xe_guc_log_types.h b/drivers/gpu/drm/xe/xe_guc_log_types.h
index 125080d138a7..3d4bf2a73102 100644
--- a/drivers/gpu/drm/xe/xe_guc_log_types.h
+++ b/drivers/gpu/drm/xe/xe_guc_log_types.h
@@ -7,6 +7,14 @@
 #define _XE_GUC_LOG_TYPES_H_
 
 #include <linux/types.h>
+#include "xe_guc_fwif.h"
+
+enum {
+	GUC_LOG_SECTIONS_CRASH,
+	GUC_LOG_SECTIONS_DEBUG,
+	GUC_LOG_SECTIONS_CAPTURE,
+	GUC_LOG_SECTIONS_LIMIT
+};
 
 struct xe_bo;
 
@@ -18,6 +26,22 @@ struct xe_guc_log {
 	u32 level;
 	/** @bo: XE BO for GuC log */
 	struct xe_bo *bo;
+
+	/* Allocation settings */
+	struct {
+		s32 bytes;	/* Size in bytes */
+		s32 units;	/* GuC API units - 1MB or 4KB */
+		s32 count;	/* Number of API units */
+		u32 flag;	/* GuC API units flag */
+	} sizes[GUC_LOG_SECTIONS_LIMIT];
+	bool sizes_initialised;
+
+	/* logging related stats */
+	struct {
+		u32 sampled_overflow;
+		u32 overflow;
+		u32 flush;
+	} stats[GUC_MAX_LOG_BUFFER];
 };
 
 #endif
-- 
2.34.1


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

* [PATCH v8 4/6] drm/xe/guc: Extract GuC error capture lists
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
                   ` (2 preceding siblings ...)
  2024-05-07  1:47 ` [PATCH v8 3/6] drm/xe/guc: Add capture size check in GuC log buffer Zhanjun Dong
@ 2024-05-07  1:47 ` Zhanjun Dong
  2024-05-11  1:43   ` Teres Alexis, Alan Previn
  2024-05-07  1:47 ` [PATCH v8 5/6] drm/xe/guc: Pre-allocate output nodes for extraction Zhanjun Dong
                   ` (9 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Zhanjun Dong @ 2024-05-07  1:47 UTC (permalink / raw)
  To: intel-xe; +Cc: Zhanjun Dong

Upon the G2H Notify-Err-Capture event, parse through the
GuC Log Buffer (error-capture-subregion) and generate one or
more capture-nodes. A single node represents a single "engine-
instance-capture-dump" and contains at least 3 register lists:
global, engine-class and engine-instance. An internal link
list is maintained to store one or more nodes.

Because the link-list node generation happen before the call
to devcoredump, duplicate global and engine-class register
lists for each engine-instance register dump if we find
dependent-engine resets in a engine-capture-group.

Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
---
 drivers/gpu/drm/xe/abi/guc_actions_abi.h |   7 +
 drivers/gpu/drm/xe/xe_guc_capture.c      | 558 ++++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_guc_capture.h      |   1 +
 drivers/gpu/drm/xe/xe_guc_capture_fwif.h |  45 ++
 drivers/gpu/drm/xe/xe_guc_ct.c           |   2 +
 drivers/gpu/drm/xe/xe_guc_submit.c       |  45 +-
 drivers/gpu/drm/xe/xe_guc_submit.h       |   2 +
 7 files changed, 646 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/xe/abi/guc_actions_abi.h b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
index 79ba98a169f9..ed1eeea34e8e 100644
--- a/drivers/gpu/drm/xe/abi/guc_actions_abi.h
+++ b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
@@ -182,6 +182,13 @@ enum xe_guc_sleep_state_status {
 #define GUC_LOG_CONTROL_VERBOSITY_MASK	(0xF << GUC_LOG_CONTROL_VERBOSITY_SHIFT)
 #define GUC_LOG_CONTROL_DEFAULT_LOGGING	(1 << 8)
 
+enum intel_guc_state_capture_event_status {
+	XE_GUC_STATE_CAPTURE_EVENT_STATUS_SUCCESS = 0x0,
+	XE_GUC_STATE_CAPTURE_EVENT_STATUS_NOSPACE = 0x1,
+};
+
+#define XE_GUC_STATE_CAPTURE_EVENT_STATUS_MASK      0x000000FF
+
 #define XE_GUC_TLB_INVAL_TYPE_SHIFT 0
 #define XE_GUC_TLB_INVAL_MODE_SHIFT 8
 /* Flush PPC or SMRO caches along with TLB invalidation request */
diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c
index d2df027081b5..71d7c4a58925 100644
--- a/drivers/gpu/drm/xe/xe_guc_capture.c
+++ b/drivers/gpu/drm/xe/xe_guc_capture.c
@@ -520,6 +520,560 @@ static void check_guc_capture_size(struct xe_guc *guc)
 			  buffer_size, spare_size, capture_size);
 }
 
+static void
+guc_capture_add_node_to_list(struct __guc_capture_parsed_output *node,
+			     struct list_head *list)
+{
+	list_add_tail(&node->link, list);
+}
+
+static void
+guc_capture_add_node_to_outlist(struct xe_guc_state_capture *gc,
+				struct __guc_capture_parsed_output *node)
+{
+	guc_capture_add_node_to_list(node, &gc->outlist);
+}
+
+static void
+guc_capture_init_node(struct xe_guc *guc, struct __guc_capture_parsed_output *node)
+{
+	INIT_LIST_HEAD(&node->link);
+}
+
+/*
+ * KMD Init time flows:
+ * --------------------
+ *     --> alloc A: GuC input capture regs lists (registered to GuC via ADS).
+ *                  xe_guc_ads acquires the register lists by calling
+ *                  xe_guc_capture_list_size and xe_guc_capture_list_get 'n' times,
+ *                  where n = 1 for global-reg-list +
+ *                            num_engine_classes for class-reg-list +
+ *                            num_engine_classes for instance-reg-list
+ *                               (since all instances of the same engine-class type
+ *                                have an identical engine-instance register-list).
+ *                  ADS module also calls separately for PF vs VF.
+ *
+ *     --> alloc B: GuC output capture buf (registered via guc_init_params(log_param))
+ *                  Size = #define CAPTURE_BUFFER_SIZE (warns if on too-small)
+ *                  Note2: 'x 3' to hold multiple capture groups
+ *
+ * GUC Runtime notify capture:
+ * --------------------------
+ *     --> G2H STATE_CAPTURE_NOTIFICATION
+ *                   L--> xe_guc_capture_process
+ *                           L--> Loop through B (head..tail) and for each engine instance's
+ *                                err-state-captured register-list we find, we alloc 'C':
+ *      --> alloc C: A capture-output-node structure that includes misc capture info along
+ *                   with 3 register list dumps (global, engine-class and engine-instance)
+ *                   This node is created from a pre-allocated list of blank nodes in
+ *                   guc->capture->cachelist and populated with the error-capture
+ *                   data from GuC and then it's added into guc->capture->outlist linked
+ *                   list. This list is used for matchup and printout by xe_devcoredump_read
+ *                   and xe_hw_engine_snapshot_print, (when user invokes the devcoredump sysfs).
+ *
+ * GUC --> notify context reset:
+ * -----------------------------
+ *     --> guc_exec_queue_timedout_job
+ *                   L--> xe_devcoredump
+ *                          L--> devcoredump_snapshot(..IS_GUC_CAPTURE)
+ *                               --> xe_hw_engine_snapshot_capture(..IS_GUC_CAPTURE)
+ *                               L--> xe_hw_engine_snapshot_from_capture is where
+ *                                    detach C from internal linked list and add it into
+ *                                    xe_hw_engine_snapshot struct (if the context and
+ *                                    engine of the event notification matches a node
+ *                                    in the link list).
+ *
+ * User Sysfs / Debugfs
+ * --------------------
+ *      --> xe_devcoredump_read->
+ *             L--> xxx_snapshot_print
+ *                    L--> xe_hw_engine_snapshot_print
+ *                         register lists values of the xe_hw_engine_snapshot
+ *                         saved from the error-engine-dump.
+ *
+ */
+
+static int guc_capture_buf_cnt(struct __guc_capture_bufstate *buf)
+{
+	if (buf->wr >= buf->rd)
+		return (buf->wr - buf->rd);
+	return (buf->size - buf->rd) + buf->wr;
+}
+
+static int guc_capture_buf_cnt_to_end(struct __guc_capture_bufstate *buf)
+{
+	if (buf->rd > buf->wr)
+		return (buf->size - buf->rd);
+	return (buf->wr - buf->rd);
+}
+
+/*
+ * GuC's error-capture output is a ring buffer populated in a byte-stream fashion:
+ *
+ * The GuC Log buffer region for error-capture is managed like a ring buffer.
+ * The GuC firmware dumps error capture logs into this ring in a byte-stream flow.
+ * Additionally, as per the current and foreseeable future, all packed error-
+ * capture output structures are dword aligned.
+ *
+ * That said, if the GuC firmware is in the midst of writing a structure that is larger
+ * than one dword but the tail end of the err-capture buffer-region has lesser space left,
+ * we would need to extract that structure one dword at a time straddled across the end,
+ * onto the start of the ring.
+ *
+ * Below function, guc_capture_log_remove_dw is a helper for that. All callers of this
+ * function would typically do a straight-up memcpy from the ring contents and will only
+ * call this helper if their structure-extraction is straddling across the end of the
+ * ring. GuC firmware does not add any padding. The reason for the no-padding is to ease
+ * scalability for future expansion of output data types without requiring a redesign
+ * of the flow controls.
+ */
+static int
+guc_capture_log_remove_dw(struct xe_guc *guc, struct __guc_capture_bufstate *buf,
+			  u32 *dw)
+{
+	int tries = 2;
+	int avail = 0;
+
+	if (!guc_capture_buf_cnt(buf))
+		return 0;
+
+	while (tries--) {
+		avail = guc_capture_buf_cnt_to_end(buf);
+		if (avail >= sizeof(u32)) {
+			*dw = xe_map_rd(guc_to_xe(guc), &guc->log.bo->vmap,
+					buf->data_offset + buf->rd, u32);
+			buf->rd += 4;
+			return 4;
+		}
+		if (avail)
+			xe_gt_dbg(guc_to_gt(guc), "Register capture log not dword aligned, skipping.\n");
+		buf->rd = 0;
+	}
+
+	return 0;
+}
+
+static bool
+guc_capture_data_extracted(struct xe_guc *guc, struct __guc_capture_bufstate *b,
+			   int size, void *dest)
+{
+	if (guc_capture_buf_cnt_to_end(b) >= size) {
+		xe_map_memcpy_from(guc_to_xe(guc), dest, &guc->log.bo->vmap,
+				   b->data_offset + b->rd, size);
+		b->rd += size;
+		return true;
+	}
+	return false;
+}
+
+static int
+guc_capture_log_get_group_hdr(struct xe_guc *guc, struct __guc_capture_bufstate *buf,
+			      struct guc_state_capture_group_header_t *ghdr)
+{
+	int read = 0;
+	int fullsize = sizeof(struct guc_state_capture_group_header_t);
+
+	if (fullsize > guc_capture_buf_cnt(buf))
+		return -1;
+
+	if (guc_capture_data_extracted(guc, buf, fullsize, (void *)ghdr))
+		return 0;
+
+	read += guc_capture_log_remove_dw(guc, buf, &ghdr->owner);
+	read += guc_capture_log_remove_dw(guc, buf, &ghdr->info);
+	if (read != fullsize)
+		return -1;
+
+	return 0;
+}
+
+static int
+guc_capture_log_get_data_hdr(struct xe_guc *guc, struct __guc_capture_bufstate *buf,
+			     struct guc_state_capture_header_t *hdr)
+{
+	int read = 0;
+	int fullsize = sizeof(struct guc_state_capture_header_t);
+
+	if (fullsize > guc_capture_buf_cnt(buf))
+		return -1;
+
+	if (guc_capture_data_extracted(guc, buf, fullsize, (void *)hdr))
+		return 0;
+
+	read += guc_capture_log_remove_dw(guc, buf, &hdr->owner);
+	read += guc_capture_log_remove_dw(guc, buf, &hdr->info);
+	read += guc_capture_log_remove_dw(guc, buf, &hdr->lrca);
+	read += guc_capture_log_remove_dw(guc, buf, &hdr->guc_id);
+	read += guc_capture_log_remove_dw(guc, buf, &hdr->num_mmios);
+	if (read != fullsize)
+		return -1;
+
+	return 0;
+}
+
+static int
+guc_capture_log_get_register(struct xe_guc *guc, struct __guc_capture_bufstate *buf,
+			     struct guc_mmio_reg *reg)
+{
+	int read = 0;
+	int fullsize = sizeof(struct guc_mmio_reg);
+
+	if (fullsize > guc_capture_buf_cnt(buf))
+		return -1;
+
+	if (guc_capture_data_extracted(guc, buf, fullsize, (void *)reg))
+		return 0;
+
+	read += guc_capture_log_remove_dw(guc, buf, &reg->offset);
+	read += guc_capture_log_remove_dw(guc, buf, &reg->value);
+	read += guc_capture_log_remove_dw(guc, buf, &reg->flags);
+	read += guc_capture_log_remove_dw(guc, buf, &reg->mask);
+	if (read != fullsize)
+		return -1;
+
+	return 0;
+}
+
+static struct __guc_capture_parsed_output *
+guc_capture_get_prealloc_node(struct xe_guc *guc)
+{
+	struct __guc_capture_parsed_output *found = NULL;
+
+	if (!list_empty(&guc->capture->cachelist)) {
+		struct __guc_capture_parsed_output *n, *ntmp;
+
+		/* get first avail node from the cache list */
+		list_for_each_entry_safe(n, ntmp, &guc->capture->cachelist, link) {
+			found = n;
+			list_del(&n->link);
+			break;
+		}
+	} else {
+		struct __guc_capture_parsed_output *n, *ntmp;
+
+		/* traverse down and steal back the oldest node already allocated */
+		list_for_each_entry_safe(n, ntmp, &guc->capture->outlist, link) {
+			found = n;
+		}
+		if (found)
+			list_del(&found->link);
+	}
+	if (found)
+		guc_capture_init_node(guc, found);
+
+	return found;
+}
+
+static struct __guc_capture_parsed_output *
+guc_capture_clone_node(struct xe_guc *guc, struct __guc_capture_parsed_output *original,
+		       u32 keep_reglist_mask)
+{
+	struct __guc_capture_parsed_output *new;
+	int i;
+
+	new = guc_capture_get_prealloc_node(guc);
+	if (!new)
+		return NULL;
+	if (!original)
+		return new;
+
+	new->is_partial = original->is_partial;
+
+	/* copy reg-lists that we want to clone */
+	for (i = 0; i < GUC_CAPTURE_LIST_TYPE_MAX; ++i) {
+		if (keep_reglist_mask & BIT(i)) {
+			XE_WARN_ON(original->reginfo[i].num_regs  >
+				   guc->capture->max_mmio_per_node);
+
+			memcpy(new->reginfo[i].regs, original->reginfo[i].regs,
+			       original->reginfo[i].num_regs * sizeof(struct guc_mmio_reg));
+
+			new->reginfo[i].num_regs = original->reginfo[i].num_regs;
+			new->reginfo[i].vfid  = original->reginfo[i].vfid;
+
+			if (i == GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS) {
+				new->eng_class = original->eng_class;
+			} else if (i == GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE) {
+				new->eng_inst = original->eng_inst;
+				new->guc_id = original->guc_id;
+				new->lrca = original->lrca;
+			}
+		}
+	}
+
+	return new;
+}
+
+static int
+guc_capture_extract_reglists(struct xe_guc *guc, struct __guc_capture_bufstate *buf)
+{
+	struct xe_gt *gt = guc_to_gt(guc);
+	struct guc_state_capture_group_header_t ghdr = {0};
+	struct guc_state_capture_header_t hdr = {0};
+	struct __guc_capture_parsed_output *node = NULL;
+	struct guc_mmio_reg *regs = NULL;
+	int i, numlists, numregs, ret = 0;
+	enum guc_capture_type datatype;
+	struct guc_mmio_reg tmp;
+	bool is_partial = false;
+
+	i = guc_capture_buf_cnt(buf);
+	if (!i)
+		return -ENODATA;
+
+	if (i % sizeof(u32)) {
+		xe_gt_warn(gt, "Got mis-aligned register capture entries\n");
+		ret = -EIO;
+		goto bailout;
+	}
+
+	/* first get the capture group header */
+	if (guc_capture_log_get_group_hdr(guc, buf, &ghdr)) {
+		ret = -EIO;
+		goto bailout;
+	}
+	/*
+	 * we would typically expect a layout as below where n would be expected to be
+	 * anywhere between 3 to n where n > 3 if we are seeing multiple dependent engine
+	 * instances being reset together.
+	 * ____________________________________________
+	 * | Capture Group                            |
+	 * | ________________________________________ |
+	 * | | Capture Group Header:                | |
+	 * | |  - num_captures = 5                  | |
+	 * | |______________________________________| |
+	 * | ________________________________________ |
+	 * | | Capture1:                            | |
+	 * | |  Hdr: GLOBAL, numregs=a              | |
+	 * | | ____________________________________ | |
+	 * | | | Reglist                          | | |
+	 * | | | - reg1, reg2, ... rega           | | |
+	 * | | |__________________________________| | |
+	 * | |______________________________________| |
+	 * | ________________________________________ |
+	 * | | Capture2:                            | |
+	 * | |  Hdr: CLASS=RENDER/COMPUTE, numregs=b| |
+	 * | | ____________________________________ | |
+	 * | | | Reglist                          | | |
+	 * | | | - reg1, reg2, ... regb           | | |
+	 * | | |__________________________________| | |
+	 * | |______________________________________| |
+	 * | ________________________________________ |
+	 * | | Capture3:                            | |
+	 * | |  Hdr: INSTANCE=RCS, numregs=c        | |
+	 * | | ____________________________________ | |
+	 * | | | Reglist                          | | |
+	 * | | | - reg1, reg2, ... regc           | | |
+	 * | | |__________________________________| | |
+	 * | |______________________________________| |
+	 * | ________________________________________ |
+	 * | | Capture4:                            | |
+	 * | |  Hdr: CLASS=RENDER/COMPUTE, numregs=d| |
+	 * | | ____________________________________ | |
+	 * | | | Reglist                          | | |
+	 * | | | - reg1, reg2, ... regd           | | |
+	 * | | |__________________________________| | |
+	 * | |______________________________________| |
+	 * | ________________________________________ |
+	 * | | Capture5:                            | |
+	 * | |  Hdr: INSTANCE=CCS0, numregs=e       | |
+	 * | | ____________________________________ | |
+	 * | | | Reglist                          | | |
+	 * | | | - reg1, reg2, ... rege           | | |
+	 * | | |__________________________________| | |
+	 * | |______________________________________| |
+	 * |__________________________________________|
+	 */
+	is_partial = FIELD_GET(CAP_GRP_HDR_CAPTURE_TYPE, ghdr.info);
+	numlists = FIELD_GET(CAP_GRP_HDR_NUM_CAPTURES, ghdr.info);
+
+	while (numlists--) {
+		if (guc_capture_log_get_data_hdr(guc, buf, &hdr)) {
+			ret = -EIO;
+			break;
+		}
+
+		datatype = FIELD_GET(CAP_HDR_CAPTURE_TYPE, hdr.info);
+		if (datatype > GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE) {
+			/* unknown capture type - skip over to next capture set */
+			numregs = FIELD_GET(CAP_HDR_NUM_MMIOS, hdr.num_mmios);
+			while (numregs--) {
+				if (guc_capture_log_get_register(guc, buf, &tmp)) {
+					ret = -EIO;
+					break;
+				}
+			}
+			continue;
+		} else if (node) {
+			/*
+			 * Based on the current capture type and what we have so far,
+			 * decide if we should add the current node into the internal
+			 * linked list for match-up when xe_devcoredump calls later
+			 * (and alloc a blank node for the next set of reglists)
+			 * or continue with the same node or clone the current node
+			 * but only retain the global or class registers (such as the
+			 * case of dependent engine resets).
+			 */
+			if (datatype == GUC_CAPTURE_LIST_TYPE_GLOBAL) {
+				guc_capture_add_node_to_outlist(guc->capture, node);
+				node = NULL;
+			} else if (datatype == GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS &&
+				   node->reginfo[GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS].num_regs) {
+				/* Add to list, clone node and duplicate global list */
+				guc_capture_add_node_to_outlist(guc->capture, node);
+				node = guc_capture_clone_node(guc, node,
+							      GCAP_PARSED_REGLIST_INDEX_GLOBAL);
+			} else if (datatype == GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE &&
+				   node->reginfo[GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE].num_regs) {
+				/* Add to list, clone node and duplicate global + class lists */
+				guc_capture_add_node_to_outlist(guc->capture, node);
+				node = guc_capture_clone_node(guc, node,
+							      (GCAP_PARSED_REGLIST_INDEX_GLOBAL |
+							      GCAP_PARSED_REGLIST_INDEX_ENGCLASS));
+			}
+		}
+
+		if (!node) {
+			node = guc_capture_get_prealloc_node(guc);
+			if (!node) {
+				ret = -ENOMEM;
+				break;
+			}
+			if (datatype != GUC_CAPTURE_LIST_TYPE_GLOBAL)
+				xe_gt_dbg(gt, "Register capture missing global dump: %08x!\n",
+					  datatype);
+		}
+		node->is_partial = is_partial;
+		node->reginfo[datatype].vfid = FIELD_GET(CAP_HDR_CAPTURE_VFID, hdr.owner);
+
+		switch (datatype) {
+		case GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE:
+			node->eng_class = FIELD_GET(CAP_HDR_ENGINE_CLASS, hdr.info);
+			node->eng_inst = FIELD_GET(CAP_HDR_ENGINE_INSTANCE, hdr.info);
+			node->lrca = hdr.lrca;
+			node->guc_id = hdr.guc_id;
+			break;
+		case GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS:
+			node->eng_class = FIELD_GET(CAP_HDR_ENGINE_CLASS, hdr.info);
+			break;
+		default:
+			break;
+		}
+
+		numregs = FIELD_GET(CAP_HDR_NUM_MMIOS, hdr.num_mmios);
+		if (numregs > guc->capture->max_mmio_per_node) {
+			xe_gt_dbg(gt, "Register capture list extraction clipped by prealloc!\n");
+			numregs = guc->capture->max_mmio_per_node;
+		}
+		node->reginfo[datatype].num_regs = numregs;
+		regs = node->reginfo[datatype].regs;
+		i = 0;
+		while (numregs--) {
+			if (guc_capture_log_get_register(guc, buf, &regs[i++])) {
+				ret = -EIO;
+				break;
+			}
+		}
+	}
+
+bailout:
+	if (node) {
+		/* If we have data, add to linked list for match-up when xe_devcoredump calls */
+		for (i = GUC_CAPTURE_LIST_TYPE_GLOBAL; i < GUC_CAPTURE_LIST_TYPE_MAX; ++i) {
+			if (node->reginfo[i].regs) {
+				guc_capture_add_node_to_outlist(guc->capture, node);
+				node = NULL;
+				break;
+			}
+		}
+	}
+	return ret;
+}
+
+static int __guc_capture_flushlog_complete(struct xe_guc *guc)
+{
+	u32 action[] = {
+		XE_GUC_ACTION_LOG_BUFFER_FILE_FLUSH_COMPLETE,
+		GUC_CAPTURE_LOG_BUFFER
+	};
+
+	return xe_guc_ct_send_g2h_handler(&guc->ct, action, ARRAY_SIZE(action));
+}
+
+static void __guc_capture_process_output(struct xe_guc *guc)
+{
+	unsigned int buffer_size, read_offset, write_offset, full_count;
+	struct xe_uc *uc = container_of(guc, typeof(*uc), guc);
+	struct guc_log_buffer_state log_buf_state_local;
+	struct guc_log_buffer_state *log_buf_state;
+	struct __guc_capture_bufstate buf;
+	bool new_overflow;
+	int ret;
+	u32 log_buf_state_offset;
+	u32 src_data_offset;
+
+	log_buf_state = (struct guc_log_buffer_state *)((ulong)guc->log.bo->vmap.vaddr +
+			(sizeof(struct guc_log_buffer_state) * GUC_CAPTURE_LOG_BUFFER));
+
+	log_buf_state_offset = sizeof(struct guc_log_buffer_state) * GUC_CAPTURE_LOG_BUFFER;
+	src_data_offset = xe_guc_get_log_buffer_offset(&guc->log, GUC_CAPTURE_LOG_BUFFER);
+
+	/*
+	 * Make a copy of the state structure, inside GuC log buffer
+	 * (which is uncached mapped), on the stack to avoid reading
+	 * from it multiple times.
+	 */
+	xe_map_memcpy_from(guc_to_xe(guc), &log_buf_state_local, &guc->log.bo->vmap,
+			   log_buf_state_offset, sizeof(struct guc_log_buffer_state));
+
+	buffer_size = xe_guc_get_log_buffer_size(&guc->log, GUC_CAPTURE_LOG_BUFFER);
+	read_offset = log_buf_state_local.read_ptr;
+	write_offset = log_buf_state_local.sampled_write_ptr;
+	full_count = log_buf_state_local.buffer_full_cnt;
+
+	/* Bookkeeping stuff */
+	guc->log.stats[GUC_CAPTURE_LOG_BUFFER].flush += log_buf_state_local.flush_to_file;
+	new_overflow = xe_guc_check_log_buf_overflow(&guc->log, GUC_CAPTURE_LOG_BUFFER,
+						     full_count);
+
+	/* Now copy the actual logs. */
+	if (unlikely(new_overflow)) {
+		/* copy the whole buffer in case of overflow */
+		read_offset = 0;
+		write_offset = buffer_size;
+	} else if (unlikely((read_offset > buffer_size) ||
+			(write_offset > buffer_size))) {
+		xe_gt_err(guc_to_gt(guc),
+			  "Register capture buffer in invalid state: read = 0x%X, size = 0x%X!\n",
+			  read_offset, buffer_size);
+		/* copy whole buffer as offsets are unreliable */
+		read_offset = 0;
+		write_offset = buffer_size;
+	}
+
+	buf.size = buffer_size;
+	buf.rd = read_offset;
+	buf.wr = write_offset;
+	buf.data_offset = src_data_offset;
+
+	if (!xe_guc_read_stopped(guc)) {
+		do {
+			ret = guc_capture_extract_reglists(guc, &buf);
+		} while (ret >= 0);
+	}
+
+	/* Update the state of log buffer err-cap state */
+	log_buf_state->read_ptr = write_offset;
+	log_buf_state->flush_to_file = 0;
+	__guc_capture_flushlog_complete(guc);
+}
+
+void xe_guc_capture_process(struct xe_guc *guc)
+{
+	if (guc->capture)
+		__guc_capture_process_output(guc);
+}
+
 int xe_guc_capture_init(struct xe_guc *guc)
 {
 	guc->capture = drmm_kzalloc(guc_to_drm(guc), sizeof(*guc->capture), GFP_KERNEL);
@@ -527,7 +1081,9 @@ int xe_guc_capture_init(struct xe_guc *guc)
 		return -ENOMEM;
 
 	guc->capture->reglists = guc_capture_get_device_reglist(guc);
-
 	check_guc_capture_size(guc);
+	INIT_LIST_HEAD(&guc->capture->outlist);
+	INIT_LIST_HEAD(&guc->capture->cachelist);
+
 	return 0;
 }
diff --git a/drivers/gpu/drm/xe/xe_guc_capture.h b/drivers/gpu/drm/xe/xe_guc_capture.h
index 93e9c3784131..891f1e0fcb82 100644
--- a/drivers/gpu/drm/xe/xe_guc_capture.h
+++ b/drivers/gpu/drm/xe/xe_guc_capture.h
@@ -10,6 +10,7 @@
 
 struct xe_guc;
 
+void xe_guc_capture_process(struct xe_guc *guc);
 int xe_guc_capture_getlist(struct xe_guc *guc, u32 owner, u32 type, u32 classid, void **outptr);
 int xe_guc_capture_getlistsize(struct xe_guc *guc, u32 owner, u32 type, u32 classid, size_t *size);
 int xe_guc_capture_getnullheader(struct xe_guc *guc, void **outptr, size_t *size);
diff --git a/drivers/gpu/drm/xe/xe_guc_capture_fwif.h b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
index a3b3f52317a7..c406669355e3 100644
--- a/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
+++ b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
@@ -10,6 +10,51 @@
 #include "regs/xe_reg_defs.h"
 #include "xe_guc_fwif.h"
 
+/*
+ * struct __guc_capture_bufstate
+ *
+ * Book-keeping structure used to track read and write pointers
+ * as we extract error capture data from the GuC-log-buffer's
+ * error-capture region as a stream of dwords.
+ */
+struct __guc_capture_bufstate {
+	u32 size;
+	u32 data_offset;
+	u32 rd;
+	u32 wr;
+};
+
+/*
+ * struct __guc_capture_parsed_output - extracted error capture node
+ *
+ * A single unit of extracted error-capture output data grouped together
+ * at an engine-instance level. We keep these nodes in a linked list.
+ * See cachelist and outlist below.
+ */
+struct __guc_capture_parsed_output {
+	/*
+	 * A single set of 3 capture lists: a global-list
+	 * an engine-class-list and an engine-instance list.
+	 * outlist in __guc_capture_parsed_output will keep
+	 * a linked list of these nodes that will eventually
+	 * be detached from outlist and attached into to
+	 * xe_codedump in response to a context reset
+	 */
+	struct list_head link;
+	bool is_partial;
+	u32 eng_class;
+	u32 eng_inst;
+	u32 guc_id;
+	u32 lrca;
+	struct gcap_reg_list_info {
+		u32 vfid;
+		u32 num_regs;
+		struct guc_mmio_reg *regs;
+	} reginfo[GUC_CAPTURE_LIST_TYPE_MAX];
+#define GCAP_PARSED_REGLIST_INDEX_GLOBAL   BIT(GUC_CAPTURE_LIST_TYPE_GLOBAL)
+#define GCAP_PARSED_REGLIST_INDEX_ENGCLASS BIT(GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS)
+};
+
 /*
  * struct guc_debug_capture_list_header / struct guc_debug_capture_list
  *
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
index 0151d29b3c58..aebdeb85dd99 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -1044,6 +1044,8 @@ static int process_g2h_msg(struct xe_guc_ct *ct, u32 *msg, u32 len)
 		/* Selftest only at the moment */
 		break;
 	case XE_GUC_ACTION_STATE_CAPTURE_NOTIFICATION:
+		ret = xe_guc_error_capture_handler(guc, payload, adj_len);
+		break;
 	case XE_GUC_ACTION_NOTIFY_FLUSH_LOG_BUFFER_TO_FILE:
 		/* FIXME: Handle this */
 		break;
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index d274a139010b..dcbeb3eff5ff 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -25,6 +25,7 @@
 #include "xe_gt.h"
 #include "xe_gt_printk.h"
 #include "xe_guc.h"
+#include "xe_guc_capture.h"
 #include "xe_guc_ct.h"
 #include "xe_guc_exec_queue_types.h"
 #include "xe_guc_id_mgr.h"
@@ -753,7 +754,7 @@ static void guc_exec_queue_free_job(struct drm_sched_job *drm_job)
 	xe_sched_job_put(job);
 }
 
-static int guc_read_stopped(struct xe_guc *guc)
+int xe_guc_read_stopped(struct xe_guc *guc)
 {
 	return atomic_read(&guc->submission_state.stopped);
 }
@@ -775,7 +776,7 @@ static void disable_scheduling_deregister(struct xe_guc *guc,
 	set_min_preemption_timeout(guc, q);
 	smp_rmb();
 	ret = wait_event_timeout(guc->ct.wq, !exec_queue_pending_enable(q) ||
-				 guc_read_stopped(guc), HZ * 5);
+				 xe_guc_read_stopped(guc), HZ * 5);
 	if (!ret) {
 		struct xe_gpu_scheduler *sched = &q->guc->sched;
 
@@ -939,7 +940,7 @@ static void xe_guc_exec_queue_lr_cleanup(struct work_struct *w)
 		 */
 		ret = wait_event_timeout(guc->ct.wq,
 					 !exec_queue_pending_disable(q) ||
-					 guc_read_stopped(guc), HZ * 5);
+					 xe_guc_read_stopped(guc), HZ * 5);
 		if (!ret) {
 			drm_warn(&xe->drm, "Schedule disable failed to respond");
 			xe_sched_submission_start(sched);
@@ -1028,8 +1029,8 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
 		smp_rmb();
 		ret = wait_event_timeout(guc->ct.wq,
 					 !exec_queue_pending_disable(q) ||
-					 guc_read_stopped(guc), HZ * 5);
-		if (!ret || guc_read_stopped(guc)) {
+					 xe_guc_read_stopped(guc), HZ * 5);
+		if (!ret || xe_guc_read_stopped(guc)) {
 			drm_warn(&xe->drm, "Schedule disable failed to respond");
 			xe_sched_add_pending_job(sched, job);
 			xe_sched_submission_start(sched);
@@ -1142,7 +1143,7 @@ static void suspend_fence_signal(struct xe_exec_queue *q)
 	struct xe_device *xe = guc_to_xe(guc);
 
 	xe_assert(xe, exec_queue_suspended(q) || exec_queue_killed(q) ||
-		  guc_read_stopped(guc));
+		  xe_guc_read_stopped(guc));
 	xe_assert(xe, q->guc->suspend_pending);
 
 	q->guc->suspend_pending = false;
@@ -1158,9 +1159,9 @@ static void __guc_exec_queue_process_msg_suspend(struct xe_sched_msg *msg)
 	if (guc_exec_queue_allowed_to_change_state(q) && !exec_queue_suspended(q) &&
 	    exec_queue_enabled(q)) {
 		wait_event(guc->ct.wq, q->guc->resume_time != RESUME_PENDING ||
-			   guc_read_stopped(guc));
+			   xe_guc_read_stopped(guc));
 
-		if (!guc_read_stopped(guc)) {
+		if (!xe_guc_read_stopped(guc)) {
 			MAKE_SCHED_CONTEXT_ACTION(q, DISABLE);
 			s64 since_resume_ms =
 				ktime_ms_delta(ktime_get(),
@@ -1288,7 +1289,7 @@ static int guc_exec_queue_init(struct xe_exec_queue *q)
 
 	q->entity = &ge->entity;
 
-	if (guc_read_stopped(guc))
+	if (xe_guc_read_stopped(guc))
 		xe_sched_stop(sched);
 
 	mutex_unlock(&guc->submission_state.lock);
@@ -1414,7 +1415,7 @@ static void guc_exec_queue_suspend_wait(struct xe_exec_queue *q)
 	struct xe_guc *guc = exec_queue_to_guc(q);
 
 	wait_event(q->guc->suspend_wait, !q->guc->suspend_pending ||
-		   guc_read_stopped(guc));
+		   xe_guc_read_stopped(guc));
 }
 
 static void guc_exec_queue_resume(struct xe_exec_queue *q)
@@ -1516,7 +1517,7 @@ int xe_guc_submit_reset_prepare(struct xe_guc *guc)
 
 void xe_guc_submit_reset_wait(struct xe_guc *guc)
 {
-	wait_event(guc->ct.wq, !guc_read_stopped(guc));
+	wait_event(guc->ct.wq, !xe_guc_read_stopped(guc));
 }
 
 void xe_guc_submit_stop(struct xe_guc *guc)
@@ -1525,7 +1526,7 @@ void xe_guc_submit_stop(struct xe_guc *guc)
 	unsigned long index;
 	struct xe_device *xe = guc_to_xe(guc);
 
-	xe_assert(xe, guc_read_stopped(guc) == 1);
+	xe_assert(xe, xe_guc_read_stopped(guc) == 1);
 
 	mutex_lock(&guc->submission_state.lock);
 
@@ -1563,7 +1564,7 @@ int xe_guc_submit_start(struct xe_guc *guc)
 	unsigned long index;
 	struct xe_device *xe = guc_to_xe(guc);
 
-	xe_assert(xe, guc_read_stopped(guc) == 1);
+	xe_assert(xe, xe_guc_read_stopped(guc) == 1);
 
 	mutex_lock(&guc->submission_state.lock);
 	atomic_dec(&guc->submission_state.stopped);
@@ -1734,6 +1735,24 @@ int xe_guc_exec_queue_reset_handler(struct xe_guc *guc, u32 *msg, u32 len)
 	return 0;
 }
 
+int xe_guc_error_capture_handler(struct xe_guc *guc, u32 *msg, u32 len)
+{
+	u32 status;
+
+	if (unlikely(len != 1)) {
+		xe_gt_dbg(guc_to_gt(guc), "Invalid length %u", len);
+		return -EPROTO;
+	}
+
+	status = msg[0] & XE_GUC_STATE_CAPTURE_EVENT_STATUS_MASK;
+	if (status == XE_GUC_STATE_CAPTURE_EVENT_STATUS_NOSPACE)
+		xe_gt_warn(guc_to_gt(guc), "G2H-Error capture no space");
+
+	xe_guc_capture_process(guc);
+
+	return 0;
+}
+
 int xe_guc_exec_queue_memory_cat_error_handler(struct xe_guc *guc, u32 *msg,
 					       u32 len)
 {
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.h b/drivers/gpu/drm/xe/xe_guc_submit.h
index 4275b7da9df5..00f27a0c37b0 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.h
+++ b/drivers/gpu/drm/xe/xe_guc_submit.h
@@ -19,12 +19,14 @@ void xe_guc_submit_reset_wait(struct xe_guc *guc);
 void xe_guc_submit_stop(struct xe_guc *guc);
 int xe_guc_submit_start(struct xe_guc *guc);
 
+int xe_guc_read_stopped(struct xe_guc *guc);
 int xe_guc_sched_done_handler(struct xe_guc *guc, u32 *msg, u32 len);
 int xe_guc_deregister_done_handler(struct xe_guc *guc, u32 *msg, u32 len);
 int xe_guc_exec_queue_reset_handler(struct xe_guc *guc, u32 *msg, u32 len);
 int xe_guc_exec_queue_memory_cat_error_handler(struct xe_guc *guc, u32 *msg,
 					       u32 len);
 int xe_guc_exec_queue_reset_failure_handler(struct xe_guc *guc, u32 *msg, u32 len);
+int xe_guc_error_capture_handler(struct xe_guc *guc, u32 *msg, u32 len);
 
 struct xe_guc_submit_exec_queue_snapshot *
 xe_guc_exec_queue_snapshot_capture(struct xe_exec_queue *q);
-- 
2.34.1


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

* [PATCH v8 5/6] drm/xe/guc: Pre-allocate output nodes for extraction
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
                   ` (3 preceding siblings ...)
  2024-05-07  1:47 ` [PATCH v8 4/6] drm/xe/guc: Extract GuC error capture lists Zhanjun Dong
@ 2024-05-07  1:47 ` Zhanjun Dong
  2024-05-11 18:07   ` Teres Alexis, Alan Previn
  2024-05-07  1:47 ` [PATCH v8 6/6] drm/xe/guc: Plumb GuC-capture into dev coredump Zhanjun Dong
                   ` (8 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Zhanjun Dong @ 2024-05-07  1:47 UTC (permalink / raw)
  To: intel-xe; +Cc: Zhanjun Dong

re-allocate a fixed number of empty nodes up front (at the
time of ADS registration) that we can consume from or return to
an internal cached list of nodes.
Add guc capture data structure definition.

Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
---
 drivers/gpu/drm/xe/xe_guc_capture.c | 105 ++++++++++++++++++++++++++++
 1 file changed, 105 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c
index 71d7c4a58925..42aae4d99514 100644
--- a/drivers/gpu/drm/xe/xe_guc_capture.c
+++ b/drivers/gpu/drm/xe/xe_guc_capture.c
@@ -148,6 +148,7 @@ static const char * const capture_engine_class_names[] = {
  */
 #define get_item_with_default(ar, index) (ar[(index) >= ARRAY_SIZE(ar) ? ARRAY_SIZE(ar) -  1 : \
 									 (index)])
+static void guc_capture_create_prealloc_nodes(struct xe_guc *guc);
 
 static const struct __guc_mmio_reg_descr_group *
 guc_capture_get_one_list(const struct __guc_mmio_reg_descr_group *reglists,
@@ -430,6 +431,12 @@ xe_guc_capture_getlist(struct xe_guc *guc, u32 owner, u32 type, u32 classid, voi
 		return cache->status;
 	}
 
+	/*
+	 * ADS population of input registers is a good
+	 * time to pre-allocate cachelist output nodes
+	 */
+	guc_capture_create_prealloc_nodes(guc);
+
 	ret = xe_guc_capture_getlistsize(guc, owner, type, classid, &size);
 	if (ret) {
 		cache->is_valid = true;
@@ -534,9 +541,28 @@ guc_capture_add_node_to_outlist(struct xe_guc_state_capture *gc,
 	guc_capture_add_node_to_list(node, &gc->outlist);
 }
 
+static void
+guc_capture_add_node_to_cachelist(struct xe_guc_state_capture *gc,
+				  struct __guc_capture_parsed_output *node)
+{
+	guc_capture_add_node_to_list(node, &gc->cachelist);
+}
+
 static void
 guc_capture_init_node(struct xe_guc *guc, struct __guc_capture_parsed_output *node)
 {
+	struct guc_mmio_reg *tmp[GUC_CAPTURE_LIST_TYPE_MAX];
+	int i;
+
+	for (i = 0; i < GUC_CAPTURE_LIST_TYPE_MAX; ++i) {
+		tmp[i] = node->reginfo[i].regs;
+		memset(tmp[i], 0, sizeof(struct guc_mmio_reg) *
+		       guc->capture->max_mmio_per_node);
+	}
+	memset(node, 0, sizeof(*node));
+	for (i = 0; i < GUC_CAPTURE_LIST_TYPE_MAX; ++i)
+		node->reginfo[i].regs = tmp[i];
+
 	INIT_LIST_HEAD(&node->link);
 }
 
@@ -986,6 +1012,8 @@ guc_capture_extract_reglists(struct xe_guc *guc, struct __guc_capture_bufstate *
 				break;
 			}
 		}
+		if (node) /* else return it back to cache list */
+			guc_capture_add_node_to_cachelist(guc->capture, node);
 	}
 	return ret;
 }
@@ -1074,6 +1102,83 @@ void xe_guc_capture_process(struct xe_guc *guc)
 		__guc_capture_process_output(guc);
 }
 
+static struct __guc_capture_parsed_output *
+guc_capture_alloc_one_node(struct xe_guc *guc)
+{
+	struct drm_device *drm = guc_to_drm(guc);
+	struct __guc_capture_parsed_output *new;
+	int i;
+
+	new = drmm_kzalloc(drm, sizeof(*new), GFP_KERNEL);
+	if (!new)
+		return NULL;
+
+	for (i = 0; i < GUC_CAPTURE_LIST_TYPE_MAX; ++i) {
+		new->reginfo[i].regs = drmm_kzalloc(drm, guc->capture->max_mmio_per_node *
+					       sizeof(struct guc_mmio_reg), GFP_KERNEL);
+		if (!new->reginfo[i].regs) {
+			while (i)
+				drmm_kfree(drm, new->reginfo[--i].regs);
+			drmm_kfree(drm, new);
+			return NULL;
+		}
+	}
+	guc_capture_init_node(guc, new);
+
+	return new;
+}
+
+static void
+__guc_capture_create_prealloc_nodes(struct xe_guc *guc)
+{
+	struct __guc_capture_parsed_output *node = NULL;
+	int i;
+
+	for (i = 0; i < PREALLOC_NODES_MAX_COUNT; ++i) {
+		node = guc_capture_alloc_one_node(guc);
+		if (!node) {
+			xe_gt_warn(guc_to_gt(guc), "Register capture pre-alloc-cache failure\n");
+			/* dont free the priors, use what we got and cleanup at shutdown */
+			return;
+		}
+		guc_capture_add_node_to_cachelist(guc->capture, node);
+	}
+}
+
+static int
+guc_get_max_reglist_count(struct xe_guc *guc)
+{
+	int i, j, k, tmp, maxregcount = 0;
+
+	for (i = 0; i < GUC_CAPTURE_LIST_INDEX_MAX; ++i) {
+		for (j = 0; j < GUC_CAPTURE_LIST_TYPE_MAX; ++j) {
+			for (k = 0; k < GUC_MAX_ENGINE_CLASSES; ++k) {
+				if (j == GUC_CAPTURE_LIST_TYPE_GLOBAL && k > 0)
+					continue;
+
+				tmp = guc_cap_list_num_regs(guc->capture, i, j, k);
+				if (tmp > maxregcount)
+					maxregcount = tmp;
+			}
+		}
+	}
+	if (!maxregcount)
+		maxregcount = PREALLOC_NODES_DEFAULT_NUMREGS;
+
+	return maxregcount;
+}
+
+static void
+guc_capture_create_prealloc_nodes(struct xe_guc *guc)
+{
+	/* skip if we've already done the pre-alloc */
+	if (guc->capture->max_mmio_per_node)
+		return;
+
+	guc->capture->max_mmio_per_node = guc_get_max_reglist_count(guc);
+	__guc_capture_create_prealloc_nodes(guc);
+}
+
 int xe_guc_capture_init(struct xe_guc *guc)
 {
 	guc->capture = drmm_kzalloc(guc_to_drm(guc), sizeof(*guc->capture), GFP_KERNEL);
-- 
2.34.1


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

* [PATCH v8 6/6] drm/xe/guc: Plumb GuC-capture into dev coredump
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
                   ` (4 preceding siblings ...)
  2024-05-07  1:47 ` [PATCH v8 5/6] drm/xe/guc: Pre-allocate output nodes for extraction Zhanjun Dong
@ 2024-05-07  1:47 ` Zhanjun Dong
  2024-05-11 20:25   ` Teres Alexis, Alan Previn
  2024-05-07  4:17 ` ✓ CI.Patch_applied: success for drm/xe/guc: Add GuC based register capture for error capture (rev8) Patchwork
                   ` (7 subsequent siblings)
  13 siblings, 1 reply; 27+ messages in thread
From: Zhanjun Dong @ 2024-05-07  1:47 UTC (permalink / raw)
  To: intel-xe; +Cc: Zhanjun Dong

Add xe_hw_engine_snapshot_from_capture to take snapshot from capture
node list.
Add data struct to map register to a snapshot field, although all
field is mapped now, which means the offset could be optimized out,
while in the future, depends on system configuration, the field might
not be consecutive, keep the offset is reserved for future.

Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
---
 drivers/gpu/drm/xe/xe_devcoredump.c      |   2 +
 drivers/gpu/drm/xe/xe_guc_capture.c      |  71 +++++--
 drivers/gpu/drm/xe/xe_guc_capture.h      |   1 +
 drivers/gpu/drm/xe/xe_guc_capture_fwif.h |   1 -
 drivers/gpu/drm/xe/xe_guc_submit.c       |   9 +-
 drivers/gpu/drm/xe/xe_hw_engine.c        | 251 +++++++++++++++++------
 drivers/gpu/drm/xe/xe_hw_engine.h        |   4 +
 drivers/gpu/drm/xe/xe_hw_engine_types.h  | 150 +++++++++-----
 drivers/gpu/drm/xe/xe_sched_job.c        |   7 +-
 9 files changed, 347 insertions(+), 149 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_devcoredump.c b/drivers/gpu/drm/xe/xe_devcoredump.c
index 3d7980232be1..f5d46989aef5 100644
--- a/drivers/gpu/drm/xe/xe_devcoredump.c
+++ b/drivers/gpu/drm/xe/xe_devcoredump.c
@@ -16,6 +16,7 @@
 #include "xe_force_wake.h"
 #include "xe_gt.h"
 #include "xe_gt_printk.h"
+#include "xe_guc_capture.h"
 #include "xe_guc_ct.h"
 #include "xe_guc_submit.h"
 #include "xe_hw_engine.h"
@@ -148,6 +149,7 @@ static void xe_devcoredump_free(void *data)
 		if (coredump->snapshot.hwe[i])
 			xe_hw_engine_snapshot_free(coredump->snapshot.hwe[i]);
 	xe_vm_snapshot_free(coredump->snapshot.vm);
+	xe_guc_capture_free(&coredump->snapshot.gt->uc.guc);
 
 	/* To prevent stale data on next snapshot, clear everything */
 	memset(&coredump->snapshot, 0, sizeof(coredump->snapshot));
diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c
index 42aae4d99514..959d318f8a6f 100644
--- a/drivers/gpu/drm/xe/xe_guc_capture.c
+++ b/drivers/gpu/drm/xe/xe_guc_capture.c
@@ -37,28 +37,33 @@
  *       from the engine-mmio-base
  */
 #define COMMON_XELP_BASE_GLOBAL \
-	{ FORCEWAKE_GT,		    0,      0, "FORCEWAKE" }
+	{ FORCEWAKE_GT,				0,	0}
 
 #define COMMON_BASE_ENGINE_INSTANCE \
-	{ RING_ESR(0),              0,      0, "ESR" }, \
-	{ RING_EMR(0),              0,      0, "EMR" }, \
-	{ RING_EIR(0),              0,      0, "EIR" }, \
-	{ RING_EXECLIST_STATUS_HI(0), 0,    0, "RING_EXECLIST_STATUS_HI" }, \
-	{ RING_EXECLIST_STATUS_LO(0), 0,    0, "RING_EXECLIST_STATUS_LO" }, \
-	{ RING_DMA_FADD(0),         0,      0, "RING_DMA_FADD_LDW" }, \
-	{ RING_DMA_FADD_UDW(0),     0,      0, "RING_DMA_FADD_UDW" }, \
-	{ RING_IPEHR(0),            0,      0, "IPEHR" }, \
-	{ RING_BBADDR(0),           0,      0, "RING_BBADDR_LOW32" }, \
-	{ RING_BBADDR_UDW(0),       0,      0, "RING_BBADDR_UP32" }, \
-	{ RING_ACTHD(0),            0,      0, "ACTHD_LDW" }, \
-	{ RING_ACTHD_UDW(0),        0,      0, "ACTHD_UDW" }, \
-	{ RING_START(0),            0,      0, "START" }, \
-	{ RING_HEAD(0),             0,      0, "HEAD" }, \
-	{ RING_TAIL(0),             0,      0, "TAIL" }, \
-	{ RING_CTL(0),              0,      0, "CTL" }, \
-	{ RING_MI_MODE(0),          0,      0, "MODE" }, \
-	{ RING_HWS_PGA(0),          0,      0, "HWS" }, \
-	{ RING_MODE(0),             0,      0, "GFX_MODE" }
+	{ RING_ESR(0),				0,	0}, \
+	{ RING_EMR(0),				0,	0}, \
+	{ RING_EIR(0),				0,	0}, \
+	{ RING_IMR(0),				0,	0}, \
+	{ RING_IPEHR(0),			0,	0}, \
+	{ RING_START(0),			0,	0}, \
+	{ RING_HEAD(0),				0,	0}, \
+	{ RING_TAIL(0),				0,	0}, \
+	{ RING_CTL(0),				0,	0}, \
+	{ RING_MI_MODE(0),			0,	0}, \
+	{ RING_HWSTAM(0),			0,	0}, \
+	{ RING_HWS_PGA(0),			0,	0}, \
+	{ RING_EXECLIST_STATUS_HI(0),		0,	0}, \
+	{ RING_EXECLIST_STATUS_LO(0),		0,	0}, \
+	{ RING_EXECLIST_SQ_CONTENTS_HI(0),	0,	0}, \
+	{ RING_EXECLIST_SQ_CONTENTS_LO(0),	0,	0}, \
+	{ RING_DMA_FADD(0),			0,	0}, \
+	{ RING_DMA_FADD_UDW(0),			0,	0}, \
+	{ RING_BBADDR(0),			0,	0}, \
+	{ RING_BBADDR_UDW(0),			0,	0}, \
+	{ RING_ACTHD(0),			0,	0}, \
+	{ RING_ACTHD_UDW(0),			0,	0}, \
+	{ RING_MODE(0),				0,	0}, \
+	{ RCU_MODE,				0,	0}
 
 /* XE_LP Global */
 static const struct __guc_mmio_reg_descr xe_lp_global_regs[] = {
@@ -207,7 +212,6 @@ static void __fill_ext_reg(struct __guc_mmio_reg_descr *ext,
 	ext->reg = XE_REG(extlist->reg.__reg.addr);
 	ext->flags = FIELD_PREP(GUC_REGSET_STEERING_GROUP, slice_id);
 	ext->flags |= FIELD_PREP(GUC_REGSET_STEERING_INSTANCE, subslice_id);
-	ext->regname = extlist->name;
 }
 
 static int
@@ -1179,6 +1183,31 @@ guc_capture_create_prealloc_nodes(struct xe_guc *guc)
 	__guc_capture_create_prealloc_nodes(guc);
 }
 
+static void
+guc_capture_delete_one_node(struct drm_device *drm, struct __guc_capture_parsed_output *node)
+{
+	int i;
+
+	for (i = 0; i < GUC_CAPTURE_LIST_TYPE_MAX; ++i)
+		drmm_kfree(drm, node->reginfo[i].regs);
+	list_del(&node->link);
+	drmm_kfree(drm, node);
+}
+
+static void
+guc_capture_free_list(struct drm_device *drm, struct list_head  *list)
+{
+	struct __guc_capture_parsed_output *n, *ntmp;
+
+	list_for_each_entry_safe(n, ntmp, list, link)
+		guc_capture_delete_one_node(drm, n);
+}
+
+void xe_guc_capture_free(struct xe_guc *guc)
+{
+	guc_capture_free_list(guc_to_drm(guc), &guc->capture->outlist);
+}
+
 int xe_guc_capture_init(struct xe_guc *guc)
 {
 	guc->capture = drmm_kzalloc(guc_to_drm(guc), sizeof(*guc->capture), GFP_KERNEL);
diff --git a/drivers/gpu/drm/xe/xe_guc_capture.h b/drivers/gpu/drm/xe/xe_guc_capture.h
index 891f1e0fcb82..cc5e7c083e7b 100644
--- a/drivers/gpu/drm/xe/xe_guc_capture.h
+++ b/drivers/gpu/drm/xe/xe_guc_capture.h
@@ -14,6 +14,7 @@ void xe_guc_capture_process(struct xe_guc *guc);
 int xe_guc_capture_getlist(struct xe_guc *guc, u32 owner, u32 type, u32 classid, void **outptr);
 int xe_guc_capture_getlistsize(struct xe_guc *guc, u32 owner, u32 type, u32 classid, size_t *size);
 int xe_guc_capture_getnullheader(struct xe_guc *guc, void **outptr, size_t *size);
+void xe_guc_capture_free(struct xe_guc *guc);
 int xe_guc_capture_init(struct xe_guc *guc);
 
 #endif /* _XE_GUC_CAPTURE_H */
diff --git a/drivers/gpu/drm/xe/xe_guc_capture_fwif.h b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
index c406669355e3..90ab9d6fb21c 100644
--- a/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
+++ b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
@@ -86,7 +86,6 @@ struct __guc_mmio_reg_descr {
 	struct xe_reg reg;
 	u32 flags;
 	u32 mask;
-	const char *regname;
 };
 
 struct __guc_mmio_reg_descr_group {
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index dcbeb3eff5ff..37d1879209de 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -26,6 +26,7 @@
 #include "xe_gt_printk.h"
 #include "xe_guc.h"
 #include "xe_guc_capture.h"
+#include "xe_guc_capture_fwif.h"
 #include "xe_guc_ct.h"
 #include "xe_guc_exec_queue_types.h"
 #include "xe_guc_id_mgr.h"
@@ -959,6 +960,7 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
 	struct xe_sched_job *tmp_job;
 	struct xe_exec_queue *q = job->q;
 	struct xe_gpu_scheduler *sched = &q->guc->sched;
+	struct xe_gt *gt = q->gt;
 	struct xe_device *xe = guc_to_xe(exec_queue_to_guc(q));
 	int err = -ETIME;
 	int i = 0;
@@ -976,9 +978,9 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
 
 	drm_notice(&xe->drm, "Timedout job: seqno=%u, guc_id=%d, flags=0x%lx",
 		   xe_sched_job_seqno(job), q->guc->id, q->flags);
-	xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_KERNEL,
+	xe_gt_WARN(gt, q->flags & EXEC_QUEUE_FLAG_KERNEL,
 		   "Kernel-submitted job timed out\n");
-	xe_gt_WARN(q->gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
+	xe_gt_WARN(gt, q->flags & EXEC_QUEUE_FLAG_VM && !exec_queue_killed(q),
 		   "VM job timed out on non-killed execqueue\n");
 
 	simple_error_capture(q);
@@ -1717,9 +1719,6 @@ int xe_guc_exec_queue_reset_handler(struct xe_guc *guc, u32 *msg, u32 len)
 		return -EPROTO;
 
 	drm_info(&xe->drm, "Engine reset: guc_id=%d", guc_id);
-
-	/* FIXME: Do error capture, most likely async */
-
 	trace_xe_exec_queue_reset(q);
 
 	/*
diff --git a/drivers/gpu/drm/xe/xe_hw_engine.c b/drivers/gpu/drm/xe/xe_hw_engine.c
index ec69803152a2..caacaf72bb94 100644
--- a/drivers/gpu/drm/xe/xe_hw_engine.c
+++ b/drivers/gpu/drm/xe/xe_hw_engine.c
@@ -20,6 +20,9 @@
 #include "xe_gt_printk.h"
 #include "xe_gt_mcr.h"
 #include "xe_gt_topology.h"
+#include "xe_guc.h"
+#include "xe_guc_capture.h"
+#include "xe_guc_capture_fwif.h"
 #include "xe_hw_fence.h"
 #include "xe_irq.h"
 #include "xe_lrc.h"
@@ -262,6 +265,56 @@ static const struct engine_info engine_infos[] = {
 	},
 };
 
+struct __reg_map_descr capture_engine_reg[] = {
+	{offsetof(struct snap_shot_regs, ring_hwstam),	"HWSTAM",	RING_HWSTAM(0)	},
+	{offsetof(struct snap_shot_regs, ring_hws_pga),	"RING_HWS_PGA",	RING_HWS_PGA(0)	},
+	{offsetof(struct snap_shot_regs, ring_start),	"RING_START",	RING_START(0)	},
+	{offsetof(struct snap_shot_regs, ring_head),	"RING_HEAD",	RING_HEAD(0)	},
+	{offsetof(struct snap_shot_regs, ring_tail),	"RING_TAIL",	RING_TAIL(0)	},
+	{offsetof(struct snap_shot_regs, ring_ctl),	"RING_CTL",	RING_CTL(0)	},
+	{offsetof(struct snap_shot_regs, ring_mi_mode),	"RING_MI_MODE",	RING_MI_MODE(0)	},
+	{offsetof(struct snap_shot_regs, ring_mode),	"RING_MODE",	RING_MODE(0)	},
+	{offsetof(struct snap_shot_regs, ring_imr),	"RING_IMR",	RING_IMR(0)	},
+	{offsetof(struct snap_shot_regs, ring_esr),	"RING_ESR",	RING_ESR(0)	},
+	{offsetof(struct snap_shot_regs, ring_emr),	"RING_EMR",	RING_EMR(0)	},
+	{offsetof(struct snap_shot_regs, ring_eir),	"RING_EIR",	RING_EIR(0)	},
+	{offsetof(struct snap_shot_regs, ipehr),	"IPEHR",	RING_IPEHR(0)	},
+	{offsetof(struct snap_shot_regs, rcu_mode),	"RCU_MODE",	RCU_MODE	},
+};
+
+struct __reg_map_descr_64 capture_engine_reg_64[] = {
+	{
+		offsetof(struct snap_shot_regs, ring_acthd),
+		"ACTHD",
+		RING_ACTHD(0),
+		RING_ACTHD_UDW(0)
+	},
+	{
+		offsetof(struct snap_shot_regs, ring_bbaddr),
+		"RING_BBADDR",
+		RING_BBADDR(0),
+		RING_BBADDR_UDW(0)
+	},
+	{
+		offsetof(struct snap_shot_regs, ring_dma_fadd),
+		"RING_DMA_FADD",
+		RING_DMA_FADD(0),
+		RING_DMA_FADD_UDW(0)
+	},
+	{
+		offsetof(struct snap_shot_regs, ring_execlist_status),
+		"RING_EXECLIST_STATUS",
+		RING_EXECLIST_STATUS_LO(0),
+		RING_EXECLIST_STATUS_HI(0)
+	},
+	{
+		offsetof(struct snap_shot_regs, ring_execlist_sq_contents),
+		"RING_EXECLIST_SQ_CONTENTS",
+		RING_EXECLIST_SQ_CONTENTS_LO(0),
+		RING_EXECLIST_SQ_CONTENTS_HI(0)
+	}
+};
+
 static void hw_engine_fini(struct drm_device *drm, void *arg)
 {
 	struct xe_hw_engine *hwe = arg;
@@ -823,6 +876,113 @@ xe_hw_engine_snapshot_instdone_capture(struct xe_hw_engine *hwe,
 	}
 }
 
+static void cp_reg_to_snapshot(u32 offset, u32 value, struct snap_shot_regs *regs)
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(capture_engine_reg); i++)
+		if (offset == capture_engine_reg[i].reg.addr) {
+			u32 *field = (u32 *)((uintptr_t)regs + capture_engine_reg[i].dst_offset);
+			*field = value;
+			return;
+		}
+	for (i = 0; i < ARRAY_SIZE(capture_engine_reg_64); i++) {
+		if (offset == capture_engine_reg_64[i].reg_lo.addr) {
+			u64 *field = (u64 *)((uintptr_t)regs + capture_engine_reg_64[i].dst_offset);
+			*field = upper_32_bits(*field) | value;
+			return;
+		}
+		if (offset == capture_engine_reg_64[i].reg_hi.addr) {
+			u64 *field = (u64 *)((uintptr_t)regs + capture_engine_reg_64[i].dst_offset);
+			*field = ((u64)value << 32) | lower_32_bits(*field);
+			return;
+		}
+	}
+}
+
+static void guc_capture_find_ecode(struct __guc_capture_parsed_output *node,
+				   struct xe_hw_engine_snapshot *snapshot)
+{
+	struct gcap_reg_list_info *reginfo;
+	struct guc_mmio_reg *regs;
+	int i;
+
+	if (!node)
+		return;
+
+	reginfo = node->reginfo + GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE;
+	regs = reginfo->regs;
+	for (i = 0; i < reginfo->num_regs; i++)
+		cp_reg_to_snapshot(regs[i].offset, regs[i].value, &snapshot->reg);
+}
+
+/**
+ * xe_hw_engine_snapshot_from_capture - Take a engine snapshot from GuC capture.
+ * @hwe: Xe HW Engine.
+ * @snapshot: Xe HW Engine snapshot object to save data, copied from error capture
+ *
+ * This can be printed out in a later stage like during dev_coredump
+ * analysis.
+ *
+ * Returns: None
+ */
+void
+xe_hw_engine_snapshot_from_capture(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot *snapshot)
+{
+	struct xe_gt *gt = hwe->gt;
+	struct xe_guc *guc = &gt->uc.guc;
+	struct __guc_capture_parsed_output *n, *ntmp;
+
+	if (list_empty(&guc->capture->outlist))
+		return xe_hw_engine_snapshot_from_engine(hwe, snapshot);
+
+	/*
+	 * Look for a matching GuC reported error capture node from
+	 * the internal output link-list based on engine class and instance.
+	 */
+	list_for_each_entry_safe(n, ntmp, &guc->capture->outlist, link) {
+		u32 hwe_guc_class = xe_engine_class_to_guc_class(hwe->class);
+
+		if (n->eng_class == hwe_guc_class && n->eng_inst == hwe->instance) {
+			guc_capture_find_ecode(n, snapshot);
+			list_del(&n->link);
+			return;
+		}
+	}
+}
+
+/**
+ * xe_hw_engine_snapshot_from_engine - Take a quick engine snapshot from HW.
+ * @hwe: Xe HW Engine.
+ * @snapshot: Point to the Xe HW Engine snapshot object to save data.
+ *
+ * This can be printed out in a later stage like during dev_coredump
+ * analysis.
+ *
+ * Returns: None
+ */
+void
+xe_hw_engine_snapshot_from_engine(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot *snapshot)
+{
+	int i;
+
+	/* Skip RCU_MODE, the last print */
+	for (i = 0; i < ARRAY_SIZE(capture_engine_reg) - 1; i++) {
+		u32 *field = (u32 *)((uintptr_t)&snapshot->reg + capture_engine_reg[i].dst_offset);
+		*field = hw_engine_mmio_read32(hwe, capture_engine_reg[i].reg);
+	}
+	for (i = 0; i < ARRAY_SIZE(capture_engine_reg_64); i++) {
+		u64 *field = (u64 *)((uintptr_t)&snapshot->reg +
+				      capture_engine_reg_64[i].dst_offset);
+		*field = hw_engine_mmio_read32(hwe, capture_engine_reg_64[i].reg_lo) |
+			 (u64)hw_engine_mmio_read32(hwe, capture_engine_reg_64[i].reg_hi) << 32;
+	}
+	if (snapshot->hwe->class == XE_ENGINE_CLASS_COMPUTE)
+		snapshot->reg.rcu_mode = xe_mmio_read32(hwe->gt, RCU_MODE);
+
+	xe_hw_engine_snapshot_instdone_capture(hwe, snapshot);
+}
+
 /**
  * xe_hw_engine_snapshot_capture - Take a quick snapshot of the HW Engine.
  * @hwe: Xe HW Engine.
@@ -838,7 +998,6 @@ xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe)
 {
 	struct xe_hw_engine_snapshot *snapshot;
 	size_t len;
-	u64 val;
 
 	if (!xe_hw_engine_is_valid(hwe))
 		return NULL;
@@ -882,49 +1041,15 @@ xe_hw_engine_snapshot_capture(struct xe_hw_engine *hwe)
 	if (IS_SRIOV_VF(gt_to_xe(hwe->gt)))
 		return snapshot;
 
-	snapshot->reg.ring_execlist_status =
-		hw_engine_mmio_read32(hwe, RING_EXECLIST_STATUS_LO(0));
-	val = hw_engine_mmio_read32(hwe, RING_EXECLIST_STATUS_HI(0));
-	snapshot->reg.ring_execlist_status |= val << 32;
-
-	snapshot->reg.ring_execlist_sq_contents =
-		hw_engine_mmio_read32(hwe, RING_EXECLIST_SQ_CONTENTS_LO(0));
-	val = hw_engine_mmio_read32(hwe, RING_EXECLIST_SQ_CONTENTS_HI(0));
-	snapshot->reg.ring_execlist_sq_contents |= val << 32;
-
-	snapshot->reg.ring_acthd = hw_engine_mmio_read32(hwe, RING_ACTHD(0));
-	val = hw_engine_mmio_read32(hwe, RING_ACTHD_UDW(0));
-	snapshot->reg.ring_acthd |= val << 32;
-
-	snapshot->reg.ring_bbaddr = hw_engine_mmio_read32(hwe, RING_BBADDR(0));
-	val = hw_engine_mmio_read32(hwe, RING_BBADDR_UDW(0));
-	snapshot->reg.ring_bbaddr |= val << 32;
-
-	snapshot->reg.ring_dma_fadd =
-		hw_engine_mmio_read32(hwe, RING_DMA_FADD(0));
-	val = hw_engine_mmio_read32(hwe, RING_DMA_FADD_UDW(0));
-	snapshot->reg.ring_dma_fadd |= val << 32;
-
-	snapshot->reg.ring_hwstam = hw_engine_mmio_read32(hwe, RING_HWSTAM(0));
-	snapshot->reg.ring_hws_pga = hw_engine_mmio_read32(hwe, RING_HWS_PGA(0));
-	snapshot->reg.ring_start = hw_engine_mmio_read32(hwe, RING_START(0));
-	snapshot->reg.ring_head =
-		hw_engine_mmio_read32(hwe, RING_HEAD(0)) & HEAD_ADDR;
-	snapshot->reg.ring_tail =
-		hw_engine_mmio_read32(hwe, RING_TAIL(0)) & TAIL_ADDR;
-	snapshot->reg.ring_ctl = hw_engine_mmio_read32(hwe, RING_CTL(0));
-	snapshot->reg.ring_mi_mode =
-		hw_engine_mmio_read32(hwe, RING_MI_MODE(0));
-	snapshot->reg.ring_mode = hw_engine_mmio_read32(hwe, RING_MODE(0));
-	snapshot->reg.ring_imr = hw_engine_mmio_read32(hwe, RING_IMR(0));
-	snapshot->reg.ring_esr = hw_engine_mmio_read32(hwe, RING_ESR(0));
-	snapshot->reg.ring_emr = hw_engine_mmio_read32(hwe, RING_EMR(0));
-	snapshot->reg.ring_eir = hw_engine_mmio_read32(hwe, RING_EIR(0));
-	snapshot->reg.ipehr = hw_engine_mmio_read32(hwe, RING_IPEHR(0));
-	xe_hw_engine_snapshot_instdone_capture(hwe, snapshot);
+	/* If GuC not enabled, take it from engine */
+	if (xe_device_uc_enabled(gt_to_xe(hwe->gt)))
+		xe_hw_engine_snapshot_from_capture(hwe, snapshot);
+	else
+		xe_hw_engine_snapshot_from_engine(hwe, snapshot);
 
-	if (snapshot->hwe->class == XE_ENGINE_CLASS_COMPUTE)
-		snapshot->reg.rcu_mode = xe_mmio_read32(hwe->gt, RCU_MODE);
+	/* appy mask for ring head and tail */
+	snapshot->reg.ring_head &= HEAD_ADDR;
+	snapshot->reg.ring_tail &= TAIL_ADDR;
 
 	return snapshot;
 }
@@ -982,6 +1107,8 @@ xe_hw_engine_snapshot_instdone_print(struct xe_hw_engine_snapshot *snapshot, str
 void xe_hw_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot,
 				 struct drm_printer *p)
 {
+	int i;
+
 	if (!snapshot)
 		return;
 
@@ -990,29 +1117,25 @@ void xe_hw_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot,
 		   snapshot->logical_instance);
 	drm_printf(p, "\tForcewake: domain 0x%x, ref %d\n",
 		   snapshot->forcewake.domain, snapshot->forcewake.ref);
-	drm_printf(p, "\tHWSTAM: 0x%08x\n", snapshot->reg.ring_hwstam);
-	drm_printf(p, "\tRING_HWS_PGA: 0x%08x\n", snapshot->reg.ring_hws_pga);
-	drm_printf(p, "\tRING_EXECLIST_STATUS: 0x%016llx\n",
-		   snapshot->reg.ring_execlist_status);
-	drm_printf(p, "\tRING_EXECLIST_SQ_CONTENTS: 0x%016llx\n",
-		   snapshot->reg.ring_execlist_sq_contents);
-	drm_printf(p, "\tRING_START: 0x%08x\n", snapshot->reg.ring_start);
-	drm_printf(p, "\tRING_HEAD: 0x%08x\n", snapshot->reg.ring_head);
-	drm_printf(p, "\tRING_TAIL: 0x%08x\n", snapshot->reg.ring_tail);
-	drm_printf(p, "\tRING_CTL: 0x%08x\n", snapshot->reg.ring_ctl);
-	drm_printf(p, "\tRING_MI_MODE: 0x%08x\n", snapshot->reg.ring_mi_mode);
-	drm_printf(p, "\tRING_MODE: 0x%08x\n",
-		   snapshot->reg.ring_mode);
-	drm_printf(p, "\tRING_IMR: 0x%08x\n", snapshot->reg.ring_imr);
-	drm_printf(p, "\tRING_ESR: 0x%08x\n", snapshot->reg.ring_esr);
-	drm_printf(p, "\tRING_EMR: 0x%08x\n", snapshot->reg.ring_emr);
-	drm_printf(p, "\tRING_EIR: 0x%08x\n", snapshot->reg.ring_eir);
-	drm_printf(p, "\tACTHD: 0x%016llx\n", snapshot->reg.ring_acthd);
-	drm_printf(p, "\tBBADDR: 0x%016llx\n", snapshot->reg.ring_bbaddr);
-	drm_printf(p, "\tDMA_FADDR: 0x%016llx\n", snapshot->reg.ring_dma_fadd);
-	drm_printf(p, "\tIPEHR: 0x%08x\n", snapshot->reg.ipehr);
+
+	for (i = 0;
+	     /* Skip RCU_MODE, will be processed later */
+	     i < ARRAY_SIZE(capture_engine_reg) - 1;
+	     i++) {
+		u32 *field = (u32 *)((uintptr_t)&snapshot->reg + capture_engine_reg[i].dst_offset);
+
+		drm_printf(p, "\t%s: 0x%08x\n", capture_engine_reg[i].regname, *field);
+	}
+
+	for (i = 0; i < ARRAY_SIZE(capture_engine_reg_64); i++) {
+		u64 *field = (u64 *)((uintptr_t)&snapshot->reg +
+				     capture_engine_reg_64[i].dst_offset);
+
+		drm_printf(p, "\t%s: 0x%016llx\n", capture_engine_reg_64[i].regname, *field);
+	}
 	xe_hw_engine_snapshot_instdone_print(snapshot, p);
 
+	/* Last RCU_MODE print */
 	if (snapshot->hwe->class == XE_ENGINE_CLASS_COMPUTE)
 		drm_printf(p, "\tRCU_MODE: 0x%08x\n",
 			   snapshot->reg.rcu_mode);
diff --git a/drivers/gpu/drm/xe/xe_hw_engine.h b/drivers/gpu/drm/xe/xe_hw_engine.h
index 71968ee2f600..937ce20ea8de 100644
--- a/drivers/gpu/drm/xe/xe_hw_engine.h
+++ b/drivers/gpu/drm/xe/xe_hw_engine.h
@@ -62,6 +62,10 @@ void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p);
 void xe_hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe);
 
 bool xe_hw_engine_is_reserved(struct xe_hw_engine *hwe);
+void xe_hw_engine_snapshot_from_engine(struct xe_hw_engine *hwe,
+				       struct xe_hw_engine_snapshot *snapshot);
+void xe_hw_engine_snapshot_from_capture(struct xe_hw_engine *hwe,
+					struct xe_hw_engine_snapshot *snapshot);
 static inline bool xe_hw_engine_is_valid(struct xe_hw_engine *hwe)
 {
 	return hwe->name;
diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h b/drivers/gpu/drm/xe/xe_hw_engine_types.h
index 9f9755e31b9f..4433c0c8ffc2 100644
--- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
+++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
@@ -150,6 +150,99 @@ struct xe_hw_engine {
 	struct xe_hw_engine_class_intf *eclass;
 };
 
+/**
+ * struct __reg_map_descr - Mapping table, defines a 32 bit register and corresponding data field
+ *
+ * Contains the defines of a 32 bit register, and the offset in the capture snapshot.
+ */
+struct __reg_map_descr {
+	/** @dst_offset: Offset in snap_shot_regs structure */
+	u32 dst_offset;
+	/** @regname: Name of register */
+	const char *regname;
+	/** @reg: Hardware register */
+	struct xe_reg reg;
+};
+
+/**
+ * struct __reg_map_descr_64 - Mapping table, defines a 64 bit register and corresponding data field
+ *
+ * Contains the defines of a 64 bit register, and the offset in the capture snapshot.
+ */
+struct __reg_map_descr_64 {
+	/** @dst_offset: Offset in snap_shot_regs structure */
+	u32 dst_offset;
+	/** @regname: Name of register */
+	const char *regname;
+	/** @reg_lo: Low 32bit hardware register of the 64 bit register*/
+	struct xe_reg reg_lo;
+	/** @reg_hi: Hi 32bit hardware register of the 64 bit register*/
+	struct xe_reg reg_hi;
+};
+
+/**
+ * struct xe_hw_engine_snapshot - Hardware engine snapshot
+ *
+ * Contains the snapshot of useful hardware engine info and registers.
+ */
+struct snap_shot_regs {
+	/** @ring_acthd: RING_ACTHD */
+	u64 ring_acthd;
+	/** @ring_bbaddr: RING_BBADDR */
+	u64 ring_bbaddr;
+	/** @ring_dma_fadd: RING_DMA_FADD */
+	u64 ring_dma_fadd;
+	/** @ring_execlist_status: RING_EXECLIST_STATUS */
+	u64 ring_execlist_status;
+	/** @ring_execlist_sq_contents: RING_EXECLIST_SQ_CONTENTS */
+	u64 ring_execlist_sq_contents;
+	/** @ring_hwstam: RING_HWSTAM */
+	u32 ring_hwstam;
+	/** @ring_hws_pga: RING_HWS_PGA */
+	u32 ring_hws_pga;
+	/** @ring_start: RING_START */
+	u32 ring_start;
+	/** @ring_head: RING_HEAD */
+	u32 ring_head;
+	/** @ring_tail: RING_TAIL */
+	u32 ring_tail;
+	/** @ring_ctl: RING_CTL */
+	u32 ring_ctl;
+	/** @ring_mi_mode: RING_MI_MODE */
+	u32 ring_mi_mode;
+
+	/** @ring_mode: RING_MODE */
+	u32 ring_mode;
+	/** @ring_imr: RING_IMR */
+	u32 ring_imr;
+	/** @ring_esr: RING_ESR */
+	u32 ring_esr;
+	/** @ring_emr: RING_EMR */
+	u32 ring_emr;
+	/** @ring_eir: RING_EIR */
+	u32 ring_eir;
+	/** @ipehr: IPEHR */
+	u32 ipehr;
+	/** @rcu_mode: RCU_MODE */
+	u32 rcu_mode;
+	struct {
+		/** @reg.instdone.ring: RING_INSTDONE */
+		u32 ring;
+		/** @reg.instdone.slice_common: SC_INSTDONE */
+		u32 *slice_common;
+		/** @reg.instdone.slice_common_extra: SC_INSTDONE_EXTRA */
+		u32 *slice_common_extra;
+		/** @reg.instdone.slice_common_extra2: SC_INSTDONE_EXTRA2 */
+		u32 *slice_common_extra2;
+		/** @reg.instdone.sampler: SAMPLER_INSTDONE */
+		u32 *sampler;
+		/** @reg.instdone.row: ROW_INSTDONE */
+		u32 *row;
+		/** @reg.instdone.geom_svg: INSTDONE_GEOM_SVGUNIT */
+		u32 *geom_svg;
+	} instdone;
+};
+
 /**
  * struct xe_hw_engine_snapshot - Hardware engine snapshot
  *
@@ -172,62 +265,7 @@ struct xe_hw_engine_snapshot {
 	/** @mmio_base: MMIO base address of this hw engine*/
 	u32 mmio_base;
 	/** @reg: Useful MMIO register snapshot */
-	struct {
-		/** @reg.ring_execlist_status: RING_EXECLIST_STATUS */
-		u64 ring_execlist_status;
-		/** @reg.ring_execlist_sq_contents: RING_EXECLIST_SQ_CONTENTS */
-		u64 ring_execlist_sq_contents;
-		/** @reg.ring_acthd: RING_ACTHD */
-		u64 ring_acthd;
-		/** @reg.ring_bbaddr: RING_BBADDR */
-		u64 ring_bbaddr;
-		/** @reg.ring_dma_fadd: RING_DMA_FADD */
-		u64 ring_dma_fadd;
-		/** @reg.ring_hwstam: RING_HWSTAM */
-		u32 ring_hwstam;
-		/** @reg.ring_hws_pga: RING_HWS_PGA */
-		u32 ring_hws_pga;
-		/** @reg.ring_start: RING_START */
-		u32 ring_start;
-		/** @reg.ring_head: RING_HEAD */
-		u32 ring_head;
-		/** @reg.ring_tail: RING_TAIL */
-		u32 ring_tail;
-		/** @reg.ring_ctl: RING_CTL */
-		u32 ring_ctl;
-		/** @reg.ring_mi_mode: RING_MI_MODE */
-		u32 ring_mi_mode;
-		/** @reg.ring_mode: RING_MODE */
-		u32 ring_mode;
-		/** @reg.ring_imr: RING_IMR */
-		u32 ring_imr;
-		/** @reg.ring_esr: RING_ESR */
-		u32 ring_esr;
-		/** @reg.ring_emr: RING_EMR */
-		u32 ring_emr;
-		/** @reg.ring_eir: RING_EIR */
-		u32 ring_eir;
-		/** @reg.ipehr: IPEHR */
-		u32 ipehr;
-		/** @reg.rcu_mode: RCU_MODE */
-		u32 rcu_mode;
-		struct {
-			/** @reg.instdone.ring: RING_INSTDONE */
-			u32 ring;
-			/** @reg.instdone.slice_common: SC_INSTDONE */
-			u32 *slice_common;
-			/** @reg.instdone.slice_common_extra: SC_INSTDONE_EXTRA */
-			u32 *slice_common_extra;
-			/** @reg.instdone.slice_common_extra2: SC_INSTDONE_EXTRA2 */
-			u32 *slice_common_extra2;
-			/** @reg.instdone.sampler: SAMPLER_INSTDONE */
-			u32 *sampler;
-			/** @reg.instdone.row: ROW_INSTDONE */
-			u32 *row;
-			/** @reg.instdone.geom_svg: INSTDONE_GEOM_SVGUNIT */
-			u32 *geom_svg;
-		} instdone;
-	} reg;
+	struct snap_shot_regs reg;
 };
 
 #endif
diff --git a/drivers/gpu/drm/xe/xe_sched_job.c b/drivers/gpu/drm/xe/xe_sched_job.c
index cd8a2fba5438..922cd1a8753f 100644
--- a/drivers/gpu/drm/xe/xe_sched_job.c
+++ b/drivers/gpu/drm/xe/xe_sched_job.c
@@ -9,9 +9,11 @@
 #include <linux/dma-fence-array.h>
 #include <linux/slab.h>
 
+#include "xe_devcoredump.h"
 #include "xe_device.h"
 #include "xe_exec_queue.h"
 #include "xe_gt.h"
+#include "xe_guc_capture_fwif.h"
 #include "xe_hw_engine_types.h"
 #include "xe_hw_fence.h"
 #include "xe_lrc.h"
@@ -191,10 +193,11 @@ void xe_sched_job_destroy(struct kref *ref)
 {
 	struct xe_sched_job *job =
 		container_of(ref, struct xe_sched_job, refcount);
+	struct xe_device *xe = job_to_xe(job);
 
 	if (unlikely(job->q->flags & EXEC_QUEUE_FLAG_KERNEL))
-		xe_pm_runtime_put(job_to_xe(job));
-	xe_exec_queue_put(job->q);
+		xe_pm_runtime_put(xe);
+
 	dma_fence_put(job->fence);
 	drm_sched_job_cleanup(&job->drm);
 	job_free(job);
-- 
2.34.1


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

* ✓ CI.Patch_applied: success for drm/xe/guc: Add GuC based register capture for error capture (rev8)
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
                   ` (5 preceding siblings ...)
  2024-05-07  1:47 ` [PATCH v8 6/6] drm/xe/guc: Plumb GuC-capture into dev coredump Zhanjun Dong
@ 2024-05-07  4:17 ` Patchwork
  2024-05-07  4:18 ` ✗ CI.checkpatch: warning " Patchwork
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2024-05-07  4:17 UTC (permalink / raw)
  To: Zhanjun Dong; +Cc: intel-xe

== Series Details ==

Series: drm/xe/guc: Add GuC based register capture for error capture (rev8)
URL   : https://patchwork.freedesktop.org/series/128077/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: 980de4c8f9c4 drm-tip: 2024y-05m-06d-21h-32m-51s UTC integration manifest
=== git am output follows ===
Applying: drm/xe/guc: Prepare GuC register list and update ADS size for error capture
Applying: drm/xe/guc: Add XE_LP steered register lists
Applying: drm/xe/guc: Add capture size check in GuC log buffer
Applying: drm/xe/guc: Extract GuC error capture lists
Applying: drm/xe/guc: Pre-allocate output nodes for extraction
Applying: drm/xe/guc: Plumb GuC-capture into dev coredump



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

* ✗ CI.checkpatch: warning for drm/xe/guc: Add GuC based register capture for error capture (rev8)
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
                   ` (6 preceding siblings ...)
  2024-05-07  4:17 ` ✓ CI.Patch_applied: success for drm/xe/guc: Add GuC based register capture for error capture (rev8) Patchwork
@ 2024-05-07  4:18 ` Patchwork
  2024-05-07  4:19 ` ✓ CI.KUnit: success " Patchwork
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2024-05-07  4:18 UTC (permalink / raw)
  To: Zhanjun Dong; +Cc: intel-xe

== Series Details ==

Series: drm/xe/guc: Add GuC based register capture for error capture (rev8)
URL   : https://patchwork.freedesktop.org/series/128077/
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
0daf0be5bb95eb0a0e42275e00a0e42d8d8fd543
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 107fcc2ec92ae924336d6692365ac1d74db9ef64
Author: Zhanjun Dong <zhanjun.dong@intel.com>
Date:   Mon May 6 18:47:36 2024 -0700

    drm/xe/guc: Plumb GuC-capture into dev coredump
    
    Add xe_hw_engine_snapshot_from_capture to take snapshot from capture
    node list.
    Add data struct to map register to a snapshot field, although all
    field is mapped now, which means the offset could be optimized out,
    while in the future, depends on system configuration, the field might
    not be consecutive, keep the offset is reserved for future.
    
    Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
+ /mt/dim checkpatch 980de4c8f9c4fc65bd51d355372e06dc576c3ea7 drm-intel
c1254f01dbe4 drm/xe/guc: Prepare GuC register list and update ADS size for error capture
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
-:290: WARNING:LONG_LINE: line length of 103 exceeds 100 columns
#290: FILE: drivers/gpu/drm/xe/xe_guc_ads.c:687:
+								 GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE,

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

-:427: ERROR:COMPLEX_MACRO: Macros with complex values should be enclosed in parentheses
#427: FILE: drivers/gpu/drm/xe/xe_guc_capture.c:41:
+#define COMMON_BASE_ENGINE_INSTANCE \
+	{ RING_ESR(0),              0,      0, "ESR" }, \
+	{ RING_EMR(0),              0,      0, "EMR" }, \
+	{ RING_EIR(0),              0,      0, "EIR" }, \
+	{ RING_EXECLIST_STATUS_HI(0), 0,    0, "RING_EXECLIST_STATUS_HI" }, \
+	{ RING_EXECLIST_STATUS_LO(0), 0,    0, "RING_EXECLIST_STATUS_LO" }, \
+	{ RING_DMA_FADD(0),         0,      0, "RING_DMA_FADD_LDW" }, \
+	{ RING_DMA_FADD_UDW(0),     0,      0, "RING_DMA_FADD_UDW" }, \
+	{ RING_IPEHR(0),            0,      0, "IPEHR" }, \
+	{ RING_BBADDR(0),           0,      0, "RING_BBADDR_LOW32" }, \
+	{ RING_BBADDR_UDW(0),       0,      0, "RING_BBADDR_UP32" }, \
+	{ RING_ACTHD(0),            0,      0, "ACTHD_LDW" }, \
+	{ RING_ACTHD_UDW(0),        0,      0, "ACTHD_UDW" }, \
+	{ RING_START(0),            0,      0, "START" }, \
+	{ RING_HEAD(0),             0,      0, "HEAD" }, \
+	{ RING_TAIL(0),             0,      0, "TAIL" }, \
+	{ RING_CTL(0),              0,      0, "CTL" }, \
+	{ RING_MI_MODE(0),          0,      0, "MODE" }, \
+	{ RING_HWS_PGA(0),          0,      0, "HWS" }, \
+	{ RING_MODE(0),             0,      0, "GFX_MODE" }

-:487: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'regslist' - possible side-effects?
#487: FILE: drivers/gpu/drm/xe/xe_guc_capture.c:101:
+#define MAKE_REGLIST(regslist, regsowner, regstype, class) \
+	{ \
+		regslist, \
+		ARRAY_SIZE(regslist), \
+		TO_GCAP_DEF_OWNER(regsowner), \
+		TO_GCAP_DEF_TYPE(regstype), \
+		class, \
+	}

-:533: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'ar' - possible side-effects?
#533: FILE: drivers/gpu/drm/xe/xe_guc_capture.c:147:
+#define get_item_with_default(ar, index) (ar[(index) >= ARRAY_SIZE(ar) ? ARRAY_SIZE(ar) -  1 : \
+									 (index)])

-:533: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'index' - possible side-effects?
#533: FILE: drivers/gpu/drm/xe/xe_guc_capture.c:147:
+#define get_item_with_default(ar, index) (ar[(index) >= ARRAY_SIZE(ar) ? ARRAY_SIZE(ar) -  1 : \
+									 (index)])

total: 1 errors, 2 warnings, 3 checks, 908 lines checked
9906ec28c5be drm/xe/guc: Add XE_LP steered register lists
cd7400a03183 drm/xe/guc: Add capture size check in GuC log buffer
a8181ae4efe7 drm/xe/guc: Extract GuC error capture lists
2ddca76c2c4f drm/xe/guc: Pre-allocate output nodes for extraction
107fcc2ec92a drm/xe/guc: Plumb GuC-capture into dev coredump



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

* ✓ CI.KUnit: success for drm/xe/guc: Add GuC based register capture for error capture (rev8)
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
                   ` (7 preceding siblings ...)
  2024-05-07  4:18 ` ✗ CI.checkpatch: warning " Patchwork
@ 2024-05-07  4:19 ` Patchwork
  2024-05-07  4:31 ` ✓ CI.Build: " Patchwork
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2024-05-07  4:19 UTC (permalink / raw)
  To: Zhanjun Dong; +Cc: intel-xe

== Series Details ==

Series: drm/xe/guc: Add GuC based register capture for error capture (rev8)
URL   : https://patchwork.freedesktop.org/series/128077/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[04:18:22] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[04:18:26] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
../arch/x86/um/user-offsets.c:17:6: warning: no previous prototype for ‘foo’ [-Wmissing-prototypes]
   17 | void foo(void)
      |      ^~~
In file included from ../arch/um/kernel/asm-offsets.c:1:
../arch/x86/um/shared/sysdep/kernel-offsets.h:9:6: warning: no previous prototype for ‘foo’ [-Wmissing-prototypes]
    9 | void foo(void)
      |      ^~~
../arch/x86/um/bugs_64.c:9:6: warning: no previous prototype for ‘arch_check_bugs’ [-Wmissing-prototypes]
    9 | void arch_check_bugs(void)
      |      ^~~~~~~~~~~~~~~
../arch/x86/um/bugs_64.c:13:6: warning: no previous prototype for ‘arch_examine_signal’ [-Wmissing-prototypes]
   13 | void arch_examine_signal(int sig, struct uml_pt_regs *regs)
      |      ^~~~~~~~~~~~~~~~~~~
../arch/x86/um/os-Linux/registers.c:146:15: warning: no previous prototype for ‘get_thread_reg’ [-Wmissing-prototypes]
  146 | unsigned long get_thread_reg(int reg, jmp_buf *buf)
      |               ^~~~~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:16:5: warning: no previous prototype for ‘__vdso_clock_gettime’ [-Wmissing-prototypes]
   16 | int __vdso_clock_gettime(clockid_t clock, struct __kernel_old_timespec *ts)
      |     ^~~~~~~~~~~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:30:5: warning: no previous prototype for ‘__vdso_gettimeofday’ [-Wmissing-prototypes]
   30 | int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz)
      |     ^~~~~~~~~~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:44:21: warning: no previous prototype for ‘__vdso_time’ [-Wmissing-prototypes]
   44 | __kernel_old_time_t __vdso_time(__kernel_old_time_t *t)
      |                     ^~~~~~~~~~~
../arch/x86/um/vdso/um_vdso.c:57:1: warning: no previous prototype for ‘__vdso_getcpu’ [-Wmissing-prototypes]
   57 | __vdso_getcpu(unsigned *cpu, unsigned *node, struct getcpu_cache *unused)
      | ^~~~~~~~~~~~~
../arch/um/os-Linux/skas/process.c:107:6: warning: no previous prototype for ‘wait_stub_done’ [-Wmissing-prototypes]
  107 | void wait_stub_done(int pid)
      |      ^~~~~~~~~~~~~~
../arch/um/os-Linux/skas/process.c:683:6: warning: no previous prototype for ‘__switch_mm’ [-Wmissing-prototypes]
  683 | void __switch_mm(struct mm_id *mm_idp)
      |      ^~~~~~~~~~~
../arch/x86/um/os-Linux/mcontext.c:7:6: warning: no previous prototype for ‘get_regs_from_mc’ [-Wmissing-prototypes]
    7 | void get_regs_from_mc(struct uml_pt_regs *regs, mcontext_t *mc)
      |      ^~~~~~~~~~~~~~~~
../arch/um/kernel/skas/mmu.c:17:5: warning: no previous prototype for ‘init_new_context’ [-Wmissing-prototypes]
   17 | int init_new_context(struct task_struct *task, struct mm_struct *mm)
      |     ^~~~~~~~~~~~~~~~
../arch/um/kernel/skas/mmu.c:60:6: warning: no previous prototype for ‘destroy_context’ [-Wmissing-prototypes]
   60 | void destroy_context(struct mm_struct *mm)
      |      ^~~~~~~~~~~~~~~
../arch/x86/um/fault.c:18:5: warning: no previous prototype for ‘arch_fixup’ [-Wmissing-prototypes]
   18 | int arch_fixup(unsigned long address, struct uml_pt_regs *regs)
      |     ^~~~~~~~~~
../arch/um/os-Linux/main.c:187:7: warning: no previous prototype for ‘__wrap_malloc’ [-Wmissing-prototypes]
  187 | void *__wrap_malloc(int size)
      |       ^~~~~~~~~~~~~
../arch/um/os-Linux/main.c:208:7: warning: no previous prototype for ‘__wrap_calloc’ [-Wmissing-prototypes]
  208 | void *__wrap_calloc(int n, int size)
      |       ^~~~~~~~~~~~~
../arch/um/os-Linux/main.c:222:6: warning: no previous prototype for ‘__wrap_free’ [-Wmissing-prototypes]
  222 | void __wrap_free(void *ptr)
      |      ^~~~~~~~~~~
../arch/um/os-Linux/mem.c:28:6: warning: no previous prototype for ‘kasan_map_memory’ [-Wmissing-prototypes]
   28 | void kasan_map_memory(void *start, size_t len)
      |      ^~~~~~~~~~~~~~~~
../arch/um/os-Linux/mem.c:212:13: warning: no previous prototype for ‘check_tmpexec’ [-Wmissing-prototypes]
  212 | void __init check_tmpexec(void)
      |             ^~~~~~~~~~~~~
../arch/um/kernel/skas/process.c:36:12: warning: no previous prototype for ‘start_uml’ [-Wmissing-prototypes]
   36 | int __init start_uml(void)
      |            ^~~~~~~~~
../arch/um/os-Linux/signal.c:75:6: warning: no previous prototype for ‘sig_handler’ [-Wmissing-prototypes]
   75 | void sig_handler(int sig, struct siginfo *si, mcontext_t *mc)
      |      ^~~~~~~~~~~
../arch/um/os-Linux/signal.c:111:6: warning: no previous prototype for ‘timer_alarm_handler’ [-Wmissing-prototypes]
  111 | void timer_alarm_handler(int sig, struct siginfo *unused_si, mcontext_t *mc)
      |      ^~~~~~~~~~~~~~~~~~~
../arch/um/os-Linux/start_up.c:301:12: warning: no previous prototype for ‘parse_iomem’ [-Wmissing-prototypes]
  301 | int __init parse_iomem(char *str, int *add)
      |            ^~~~~~~~~~~
../arch/x86/um/ptrace_64.c:111:5: warning: no previous prototype for ‘poke_user’ [-Wmissing-prototypes]
  111 | int poke_user(struct task_struct *child, long addr, long data)
      |     ^~~~~~~~~
../arch/x86/um/ptrace_64.c:171:5: warning: no previous prototype for ‘peek_user’ [-Wmissing-prototypes]
  171 | int peek_user(struct task_struct *child, long addr, long data)
      |     ^~~~~~~~~
../arch/x86/um/signal.c:560:6: warning: no previous prototype for ‘sys_rt_sigreturn’ [-Wmissing-prototypes]
  560 | long sys_rt_sigreturn(void)
      |      ^~~~~~~~~~~~~~~~
../arch/um/kernel/mem.c:202:8: warning: no previous prototype for ‘pgd_alloc’ [-Wmissing-prototypes]
  202 | pgd_t *pgd_alloc(struct mm_struct *mm)
      |        ^~~~~~~~~
../arch/um/kernel/mem.c:215:7: warning: no previous prototype for ‘uml_kmalloc’ [-Wmissing-prototypes]
  215 | void *uml_kmalloc(int size, int flags)
      |       ^~~~~~~~~~~
../arch/um/kernel/process.c:51:5: warning: no previous prototype for ‘pid_to_processor_id’ [-Wmissing-prototypes]
   51 | int pid_to_processor_id(int pid)
      |     ^~~~~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:87:7: warning: no previous prototype for ‘__switch_to’ [-Wmissing-prototypes]
   87 | void *__switch_to(struct task_struct *from, struct task_struct *to)
      |       ^~~~~~~~~~~
../arch/um/kernel/process.c:140:6: warning: no previous prototype for ‘fork_handler’ [-Wmissing-prototypes]
  140 | void fork_handler(void)
      |      ^~~~~~~~~~~~
../arch/um/kernel/process.c:217:6: warning: no previous prototype for ‘arch_cpu_idle’ [-Wmissing-prototypes]
  217 | void arch_cpu_idle(void)
      |      ^~~~~~~~~~~~~
../arch/x86/um/syscalls_64.c:48:6: warning: no previous prototype for ‘arch_switch_to’ [-Wmissing-prototypes]
   48 | void arch_switch_to(struct task_struct *to)
      |      ^~~~~~~~~~~~~~
../arch/um/kernel/process.c:253:5: warning: no previous prototype for ‘copy_to_user_proc’ [-Wmissing-prototypes]
  253 | int copy_to_user_proc(void __user *to, void *from, int size)
      |     ^~~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:263:5: warning: no previous prototype for ‘clear_user_proc’ [-Wmissing-prototypes]
  263 | int clear_user_proc(void __user *buf, int size)
      |     ^~~~~~~~~~~~~~~
../arch/um/kernel/process.c:271:6: warning: no previous prototype for ‘set_using_sysemu’ [-Wmissing-prototypes]
  271 | void set_using_sysemu(int value)
      |      ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:278:5: warning: no previous prototype for ‘get_using_sysemu’ [-Wmissing-prototypes]
  278 | int get_using_sysemu(void)
      |     ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:316:12: warning: no previous prototype for ‘make_proc_sysemu’ [-Wmissing-prototypes]
  316 | int __init make_proc_sysemu(void)
      |            ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:348:15: warning: no previous prototype for ‘arch_align_stack’ [-Wmissing-prototypes]
  348 | unsigned long arch_align_stack(unsigned long sp)
      |               ^~~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:45:6: warning: no previous prototype for ‘machine_restart’ [-Wmissing-prototypes]
   45 | void machine_restart(char * __unused)
      |      ^~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:51:6: warning: no previous prototype for ‘machine_power_off’ [-Wmissing-prototypes]
   51 | void machine_power_off(void)
      |      ^~~~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:57:6: warning: no previous prototype for ‘machine_halt’ [-Wmissing-prototypes]
   57 | void machine_halt(void)
      |      ^~~~~~~~~~~~
../arch/um/kernel/tlb.c:579:6: warning: no previous prototype for ‘flush_tlb_mm_range’ [-Wmissing-prototypes]
  579 | void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,
      |      ^~~~~~~~~~~~~~~~~~
../arch/um/kernel/tlb.c:594:6: warning: no previous prototype for ‘force_flush_all’ [-Wmissing-prototypes]
  594 | void force_flush_all(void)
      |      ^~~~~~~~~~~~~~~
../arch/um/kernel/um_arch.c:408:19: warning: no previous prototype for ‘read_initrd’ [-Wmissing-prototypes]
  408 | int __init __weak read_initrd(void)
      |                   ^~~~~~~~~~~
../arch/um/kernel/um_arch.c:461:7: warning: no previous prototype for ‘text_poke’ [-Wmissing-prototypes]
  461 | void *text_poke(void *addr, const void *opcode, size_t len)
      |       ^~~~~~~~~
../arch/um/kernel/um_arch.c:473:6: warning: no previous prototype for ‘text_poke_sync’ [-Wmissing-prototypes]
  473 | void text_poke_sync(void)
      |      ^~~~~~~~~~~~~~
../arch/um/kernel/kmsg_dump.c:60:12: warning: no previous prototype for ‘kmsg_dumper_stdout_init’ [-Wmissing-prototypes]
   60 | int __init kmsg_dumper_stdout_init(void)
      |            ^~~~~~~~~~~~~~~~~~~~~~~
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
  156 | u64 ioread64_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
  163 | u64 ioread64_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
  170 | u64 ioread64be_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
  178 | u64 ioread64be_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
  264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
  272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
  280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
  288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~
stty: 'standard input': Inappropriate ioctl for device

[04:18:51] Starting KUnit Kernel (1/1)...
[04:18:51] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[04:18:52] =================== guc_dbm (7 subtests) ===================
[04:18:52] [PASSED] test_empty
[04:18:52] [PASSED] test_default
[04:18:52] ======================== test_size  ========================
[04:18:52] [PASSED] 4
[04:18:52] [PASSED] 8
[04:18:52] [PASSED] 32
[04:18:52] [PASSED] 256
[04:18:52] ==================== [PASSED] test_size ====================
[04:18:52] ======================= test_reuse  ========================
[04:18:52] [PASSED] 4
[04:18:52] [PASSED] 8
[04:18:52] [PASSED] 32
[04:18:52] [PASSED] 256
[04:18:52] =================== [PASSED] test_reuse ====================
[04:18:52] =================== test_range_overlap  ====================
[04:18:52] [PASSED] 4
[04:18:52] [PASSED] 8
[04:18:52] [PASSED] 32
[04:18:52] [PASSED] 256
[04:18:52] =============== [PASSED] test_range_overlap ================
[04:18:52] =================== test_range_compact  ====================
[04:18:52] [PASSED] 4
[04:18:52] [PASSED] 8
[04:18:52] [PASSED] 32
[04:18:52] [PASSED] 256
[04:18:52] =============== [PASSED] test_range_compact ================
[04:18:52] ==================== test_range_spare  =====================
[04:18:52] [PASSED] 4
[04:18:52] [PASSED] 8
[04:18:52] [PASSED] 32
[04:18:52] [PASSED] 256
[04:18:52] ================ [PASSED] test_range_spare =================
[04:18:52] ===================== [PASSED] guc_dbm =====================
[04:18:52] =================== guc_idm (6 subtests) ===================
[04:18:52] [PASSED] bad_init
[04:18:52] [PASSED] no_init
[04:18:52] [PASSED] init_fini
[04:18:52] [PASSED] check_used
[04:18:52] [PASSED] check_quota
[04:18:52] [PASSED] check_all
[04:18:52] ===================== [PASSED] guc_idm =====================
[04:18:52] ================== no_relay (3 subtests) ===================
[04:18:52] [PASSED] xe_drops_guc2pf_if_not_ready
[04:18:52] [PASSED] xe_drops_guc2vf_if_not_ready
[04:18:52] [PASSED] xe_rejects_send_if_not_ready
[04:18:52] ==================== [PASSED] no_relay =====================
[04:18:52] ================== pf_relay (14 subtests) ==================
[04:18:52] [PASSED] pf_rejects_guc2pf_too_short
[04:18:52] [PASSED] pf_rejects_guc2pf_too_long
[04:18:52] [PASSED] pf_rejects_guc2pf_no_payload
[04:18:52] [PASSED] pf_fails_no_payload
[04:18:52] [PASSED] pf_fails_bad_origin
[04:18:52] [PASSED] pf_fails_bad_type
[04:18:52] [PASSED] pf_txn_reports_error
[04:18:52] [PASSED] pf_txn_sends_pf2guc
[04:18:52] [PASSED] pf_sends_pf2guc
[04:18:52] [SKIPPED] pf_loopback_nop
[04:18:52] [SKIPPED] pf_loopback_echo
[04:18:52] [SKIPPED] pf_loopback_fail
[04:18:52] [SKIPPED] pf_loopback_busy
[04:18:52] [SKIPPED] pf_loopback_retry
[04:18:52] ==================== [PASSED] pf_relay =====================
[04:18:52] ================== vf_relay (3 subtests) ===================
[04:18:52] [PASSED] vf_rejects_guc2vf_too_short
[04:18:52] [PASSED] vf_rejects_guc2vf_too_long
[04:18:52] [PASSED] vf_rejects_guc2vf_no_payload
[04:18:52] ==================== [PASSED] vf_relay =====================
[04:18:52] ================= pf_service (11 subtests) =================
[04:18:52] [PASSED] pf_negotiate_any
[04:18:52] [PASSED] pf_negotiate_base_match
[04:18:52] [PASSED] pf_negotiate_base_newer
[04:18:52] [PASSED] pf_negotiate_base_next
[04:18:52] [SKIPPED] pf_negotiate_base_older
[04:18:52] [PASSED] pf_negotiate_base_prev
[04:18:52] [PASSED] pf_negotiate_latest_match
[04:18:52] [PASSED] pf_negotiate_latest_newer
[04:18:52] [PASSED] pf_negotiate_latest_next
[04:18:52] [SKIPPED] pf_negotiate_latest_older
[04:18:52] [SKIPPED] pf_negotiate_latest_prev
[04:18:52] =================== [PASSED] pf_service ====================
[04:18:52] ===================== lmtt (1 subtest) =====================
[04:18:52] ======================== test_ops  =========================
[04:18:52] [PASSED] 2-level
[04:18:52] [PASSED] multi-level
[04:18:52] ==================== [PASSED] test_ops =====================
[04:18:52] ====================== [PASSED] lmtt =======================
[04:18:52] ==================== xe_bo (2 subtests) ====================
[04:18:52] [SKIPPED] xe_ccs_migrate_kunit
[04:18:52] [SKIPPED] xe_bo_evict_kunit
[04:18:52] ===================== [SKIPPED] xe_bo ======================
[04:18:52] ================== xe_dma_buf (1 subtest) ==================
[04:18:52] [SKIPPED] xe_dma_buf_kunit
[04:18:52] =================== [SKIPPED] xe_dma_buf ===================
[04:18:52] ================== xe_migrate (1 subtest) ==================
[04:18:52] [SKIPPED] xe_migrate_sanity_kunit
[04:18:52] =================== [SKIPPED] xe_migrate ===================
[04:18:52] =================== xe_mocs (2 subtests) ===================
[04:18:52] [SKIPPED] xe_live_mocs_kernel_kunit
[04:18:52] [SKIPPED] xe_live_mocs_reset_kunit
[04:18:52] ==================== [SKIPPED] xe_mocs =====================
[04:18:52] ==================== args (10 subtests) ====================
[04:18:52] [PASSED] count_args_test
[04:18:52] [PASSED] call_args_example
[04:18:52] [PASSED] call_args_test
[04:18:52] [PASSED] drop_first_example
[04:18:52] [PASSED] drop_first_test
[04:18:52] [PASSED] pick_first_example
[04:18:52] [PASSED] pick_first_test
[04:18:52] [PASSED] pick_last_example
[04:18:52] [PASSED] pick_last_test
[04:18:52] [PASSED] sep_comma_example
[04:18:52] ====================== [PASSED] args =======================
[04:18:52] =================== xe_pci (2 subtests) ====================
[04:18:52] [PASSED] xe_gmdid_graphics_ip
[04:18:52] [PASSED] xe_gmdid_media_ip
[04:18:52] ===================== [PASSED] xe_pci ======================
[04:18:52] ==================== xe_rtp (1 subtest) ====================
[04:18:52] ================== xe_rtp_process_tests  ===================
[04:18:52] [PASSED] coalesce-same-reg
[04:18:52] [PASSED] no-match-no-add
[04:18:52] [PASSED] no-match-no-add-multiple-rules
[04:18:52] [PASSED] two-regs-two-entries
[04:18:52] [PASSED] clr-one-set-other
[04:18:52] [PASSED] set-field
[04:18:52] [PASSED] conflict-duplicate
[04:18:52] [PASSED] conflict-not-disjoint
[04:18:52] [PASSED] conflict-reg-type
[04:18:52] ============== [PASSED] xe_rtp_process_tests ===============
[04:18:52] ===================== [PASSED] xe_rtp ======================
[04:18:52] ==================== xe_wa (1 subtest) =====================
[04:18:52] ======================== xe_wa_gt  =========================
[04:18:52] [PASSED] TIGERLAKE (B0)
[04:18:52] [PASSED] DG1 (A0)
[04:18:52] [PASSED] DG1 (B0)
[04:18:52] [PASSED] ALDERLAKE_S (A0)
[04:18:52] [PASSED] ALDERLAKE_S (B0)
[04:18:52] [PASSED] ALDERLAKE_S (C0)
[04:18:52] [PASSED] ALDERLAKE_S (D0)
[04:18:52] [PASSED] ALDERLAKE_P (A0)
[04:18:52] [PASSED] ALDERLAKE_P (B0)
[04:18:52] [PASSED] ALDERLAKE_P (C0)
[04:18:52] [PASSED] ALDERLAKE_S_RPLS (D0)
[04:18:52] [PASSED] ALDERLAKE_P_RPLU (E0)
[04:18:52] [PASSED] DG2_G10 (C0)
[04:18:52] [PASSED] DG2_G11 (B1)
[04:18:52] [PASSED] DG2_G12 (A1)
[04:18:52] [PASSED] METEORLAKE (g:A0, m:A0)
[04:18:52] [PASSED] METEORLAKE (g:A0, m:A0)
[04:18:52] [PASSED] METEORLAKE (g:A0, m:A0)
[04:18:52] [PASSED] LUNARLAKE (g:A0, m:A0)
[04:18:52] [PASSED] LUNARLAKE (g:B0, m:A0)
[04:18:52] ==================== [PASSED] xe_wa_gt =====================
[04:18:52] ====================== [PASSED] xe_wa ======================
[04:18:52] ============================================================
[04:18:52] Testing complete. Ran 108 tests: passed: 94, skipped: 14
[04:18:52] Elapsed time: 29.718s total, 4.250s configuring, 25.196s building, 0.227s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[04:18:52] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[04:18:53] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
In file included from ../arch/um/kernel/asm-offsets.c:1:
../arch/x86/um/shared/sysdep/kernel-offsets.h:9:6: warning: no previous prototype for ‘foo’ [-Wmissing-prototypes]
    9 | void foo(void)
      |      ^~~
../arch/um/kernel/mem.c:202:8: warning: no previous prototype for ‘pgd_alloc’ [-Wmissing-prototypes]
  202 | pgd_t *pgd_alloc(struct mm_struct *mm)
      |        ^~~~~~~~~
../arch/um/kernel/mem.c:215:7: warning: no previous prototype for ‘uml_kmalloc’ [-Wmissing-prototypes]
  215 | void *uml_kmalloc(int size, int flags)
      |       ^~~~~~~~~~~
../arch/x86/um/ptrace_64.c:111:5: warning: no previous prototype for ‘poke_user’ [-Wmissing-prototypes]
  111 | int poke_user(struct task_struct *child, long addr, long data)
      |     ^~~~~~~~~
../arch/x86/um/ptrace_64.c:171:5: warning: no previous prototype for ‘peek_user’ [-Wmissing-prototypes]
  171 | int peek_user(struct task_struct *child, long addr, long data)
      |     ^~~~~~~~~
../arch/um/kernel/process.c:51:5: warning: no previous prototype for ‘pid_to_processor_id’ [-Wmissing-prototypes]
   51 | int pid_to_processor_id(int pid)
      |     ^~~~~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:87:7: warning: no previous prototype for ‘__switch_to’ [-Wmissing-prototypes]
   87 | void *__switch_to(struct task_struct *from, struct task_struct *to)
      |       ^~~~~~~~~~~
../arch/um/kernel/process.c:140:6: warning: no previous prototype for ‘fork_handler’ [-Wmissing-prototypes]
  140 | void fork_handler(void)
      |      ^~~~~~~~~~~~
../arch/um/kernel/process.c:217:6: warning: no previous prototype for ‘arch_cpu_idle’ [-Wmissing-prototypes]
  217 | void arch_cpu_idle(void)
      |      ^~~~~~~~~~~~~
../arch/um/kernel/process.c:253:5: warning: no previous prototype for ‘copy_to_user_proc’ [-Wmissing-prototypes]
  253 | int copy_to_user_proc(void __user *to, void *from, int size)
      |     ^~~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:263:5: warning: no previous prototype for ‘clear_user_proc’ [-Wmissing-prototypes]
  263 | int clear_user_proc(void __user *buf, int size)
      |     ^~~~~~~~~~~~~~~
../arch/um/kernel/process.c:271:6: warning: no previous prototype for ‘set_using_sysemu’ [-Wmissing-prototypes]
  271 | void set_using_sysemu(int value)
      |      ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:278:5: warning: no previous prototype for ‘get_using_sysemu’ [-Wmissing-prototypes]
  278 | int get_using_sysemu(void)
      |     ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:316:12: warning: no previous prototype for ‘make_proc_sysemu’ [-Wmissing-prototypes]
  316 | int __init make_proc_sysemu(void)
      |            ^~~~~~~~~~~~~~~~
../arch/um/kernel/process.c:348:15: warning: no previous prototype for ‘arch_align_stack’ [-Wmissing-prototypes]
  348 | unsigned long arch_align_stack(unsigned long sp)
      |               ^~~~~~~~~~~~~~~~
../arch/x86/um/signal.c:560:6: warning: no previous prototype for ‘sys_rt_sigreturn’ [-Wmissing-prototypes]
  560 | long sys_rt_sigreturn(void)
      |      ^~~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:45:6: warning: no previous prototype for ‘machine_restart’ [-Wmissing-prototypes]
   45 | void machine_restart(char * __unused)
      |      ^~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:51:6: warning: no previous prototype for ‘machine_power_off’ [-Wmissing-prototypes]
   51 | void machine_power_off(void)
      |      ^~~~~~~~~~~~~~~~~
../arch/um/kernel/reboot.c:57:6: warning: no previous prototype for ‘machine_halt’ [-Wmissing-prototypes]
   57 | void machine_halt(void)
      |      ^~~~~~~~~~~~
../arch/um/kernel/tlb.c:579:6: warning: no previous prototype for ‘flush_tlb_mm_range’ [-Wmissing-prototypes]
  579 | void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,
      |      ^~~~~~~~~~~~~~~~~~
../arch/um/kernel/tlb.c:594:6: warning: no previous prototype for ‘force_flush_all’ [-Wmissing-prototypes]
  594 | void force_flush_all(void)
      |      ^~~~~~~~~~~~~~~
../arch/x86/um/syscalls_64.c:48:6: warning: no previous prototype for ‘arch_switch_to’ [-Wmissing-prototypes]
   48 | void arch_switch_to(struct task_struct *to)
      |      ^~~~~~~~~~~~~~
../arch/um/kernel/kmsg_dump.c:60:12: warning: no previous prototype for ‘kmsg_dumper_stdout_init’ [-Wmissing-prototypes]
   60 | int __init kmsg_dumper_stdout_init(void)
      |            ^~~~~~~~~~~~~~~~~~~~~~~
../arch/um/kernel/um_arch.c:408:19: warning: no previous prototype for ‘read_initrd’ [-Wmissing-prototypes]
  408 | int __init __weak read_initrd(void)
      |                   ^~~~~~~~~~~
../arch/um/kernel/um_arch.c:461:7: warning: no previous prototype for ‘text_poke’ [-Wmissing-prototypes]
  461 | void *text_poke(void *addr, const void *opcode, size_t len)
      |       ^~~~~~~~~
../arch/um/kernel/um_arch.c:473:6: warning: no previous prototype for ‘text_poke_sync’ [-Wmissing-prototypes]
  473 | void text_poke_sync(void)
      |      ^~~~~~~~~~~~~~
../arch/um/kernel/skas/process.c:36:12: warning: no previous prototype for ‘start_uml’ [-Wmissing-prototypes]
   36 | int __init start_uml(void)
      |            ^~~~~~~~~
../arch/um/kernel/skas/mmu.c:17:5: warning: no previous prototype for ‘init_new_context’ [-Wmissing-prototypes]
   17 | int init_new_context(struct task_struct *task, struct mm_struct *mm)
      |     ^~~~~~~~~~~~~~~~
../arch/um/kernel/skas/mmu.c:60:6: warning: no previous prototype for ‘destroy_context’ [-Wmissing-prototypes]
   60 | void destroy_context(struct mm_struct *mm)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
  156 | u64 ioread64_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
  163 | u64 ioread64_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
  170 | u64 ioread64be_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
  178 | u64 ioread64be_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
  264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
  272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
  280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
  288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~

[04:19:15] Starting KUnit Kernel (1/1)...
[04:19:15] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[04:19:15] ============ drm_test_pick_cmdline (2 subtests) ============
[04:19:15] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[04:19:15] =============== drm_test_pick_cmdline_named  ===============
[04:19:15] [PASSED] NTSC
[04:19:15] [PASSED] NTSC-J
[04:19:15] [PASSED] PAL
[04:19:15] [PASSED] PAL-M
[04:19:15] =========== [PASSED] drm_test_pick_cmdline_named ===========
[04:19:15] ============== [PASSED] drm_test_pick_cmdline ==============
[04:19:15] ================== drm_buddy (7 subtests) ==================
[04:19:15] [PASSED] drm_test_buddy_alloc_limit
[04:19:15] [PASSED] drm_test_buddy_alloc_optimistic
[04:19:15] [PASSED] drm_test_buddy_alloc_pessimistic
[04:19:15] [PASSED] drm_test_buddy_alloc_pathological
[04:19:15] [PASSED] drm_test_buddy_alloc_contiguous
[04:19:15] [PASSED] drm_test_buddy_alloc_clear
[04:19:15] [PASSED] drm_test_buddy_alloc_range_bias
[04:19:15] ==================== [PASSED] drm_buddy ====================
[04:19:15] ============= drm_cmdline_parser (40 subtests) =============
[04:19:15] [PASSED] drm_test_cmdline_force_d_only
[04:19:15] [PASSED] drm_test_cmdline_force_D_only_dvi
[04:19:15] [PASSED] drm_test_cmdline_force_D_only_hdmi
[04:19:15] [PASSED] drm_test_cmdline_force_D_only_not_digital
[04:19:15] [PASSED] drm_test_cmdline_force_e_only
[04:19:15] [PASSED] drm_test_cmdline_res
[04:19:15] [PASSED] drm_test_cmdline_res_vesa
[04:19:15] [PASSED] drm_test_cmdline_res_vesa_rblank
[04:19:15] [PASSED] drm_test_cmdline_res_rblank
[04:19:15] [PASSED] drm_test_cmdline_res_bpp
[04:19:15] [PASSED] drm_test_cmdline_res_refresh
[04:19:15] [PASSED] drm_test_cmdline_res_bpp_refresh
[04:19:15] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[04:19:15] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[04:19:15] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[04:19:15] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[04:19:15] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[04:19:15] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[04:19:15] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[04:19:15] [PASSED] drm_test_cmdline_res_margins_force_on
[04:19:15] [PASSED] drm_test_cmdline_res_vesa_margins
[04:19:15] [PASSED] drm_test_cmdline_name
[04:19:15] [PASSED] drm_test_cmdline_name_bpp
[04:19:15] [PASSED] drm_test_cmdline_name_option
[04:19:15] [PASSED] drm_test_cmdline_name_bpp_option
[04:19:15] [PASSED] drm_test_cmdline_rotate_0
[04:19:15] [PASSED] drm_test_cmdline_rotate_90
[04:19:15] [PASSED] drm_test_cmdline_rotate_180
[04:19:15] [PASSED] drm_test_cmdline_rotate_270
[04:19:15] [PASSED] drm_test_cmdline_hmirror
[04:19:15] [PASSED] drm_test_cmdline_vmirror
[04:19:15] [PASSED] drm_test_cmdline_margin_options
[04:19:15] [PASSED] drm_test_cmdline_multiple_options
[04:19:15] [PASSED] drm_test_cmdline_bpp_extra_and_option
[04:19:15] [PASSED] drm_test_cmdline_extra_and_option
[04:19:15] [PASSED] drm_test_cmdline_freestanding_options
[04:19:15] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[04:19:15] [PASSED] drm_test_cmdline_panel_orientation
[04:19:15] ================ drm_test_cmdline_invalid  =================
[04:19:15] [PASSED] margin_only
[04:19:15] [PASSED] interlace_only
[04:19:15] [PASSED] res_missing_x
[04:19:15] [PASSED] res_missing_y
[04:19:15] [PASSED] res_bad_y
[04:19:15] [PASSED] res_missing_y_bpp
[04:19:15] [PASSED] res_bad_bpp
[04:19:15] [PASSED] res_bad_refresh
[04:19:15] [PASSED] res_bpp_refresh_force_on_off
[04:19:15] [PASSED] res_invalid_mode
[04:19:15] [PASSED] res_bpp_wrong_place_mode
[04:19:15] [PASSED] name_bpp_refresh
[04:19:15] [PASSED] name_refresh
[04:19:15] [PASSED] name_refresh_wrong_mode
[04:19:15] [PASSED] name_refresh_invalid_mode
[04:19:15] [PASSED] rotate_multiple
[04:19:15] [PASSED] rotate_invalid_val
[04:19:15] [PASSED] rotate_truncated
[04:19:15] [PASSED] invalid_option
[04:19:15] [PASSED] invalid_tv_option
[04:19:15] [PASSED] truncated_tv_option
[04:19:15] ============ [PASSED] drm_test_cmdline_invalid =============
[04:19:15] =============== drm_test_cmdline_tv_options  ===============
[04:19:15] [PASSED] NTSC
[04:19:15] [PASSED] NTSC_443
[04:19:15] [PASSED] NTSC_J
[04:19:15] [PASSED] PAL
[04:19:15] [PASSED] PAL_M
[04:19:15] [PASSED] PAL_N
[04:19:15] [PASSED] SECAM
[04:19:15] =========== [PASSED] drm_test_cmdline_tv_options ===========
[04:19:15] =============== [PASSED] drm_cmdline_parser ================
[04:19:15] ============= drmm_connector_init (3 subtests) =============
[04:19:15] [PASSED] drm_test_drmm_connector_init
[04:19:15] [PASSED] drm_test_drmm_connector_init_null_ddc
[04:19:15] ========= drm_test_drmm_connector_init_type_valid  =========
[04:19:15] [PASSED] Unknown
[04:19:15] [PASSED] VGA
[04:19:15] [PASSED] DVI-I
[04:19:15] [PASSED] DVI-D
[04:19:15] [PASSED] DVI-A
[04:19:15] [PASSED] Composite
[04:19:15] [PASSED] SVIDEO
[04:19:15] [PASSED] LVDS
[04:19:15] [PASSED] Component
[04:19:15] [PASSED] DIN
[04:19:15] [PASSED] DP
[04:19:15] [PASSED] HDMI-A
[04:19:15] [PASSED] HDMI-B
[04:19:15] [PASSED] TV
[04:19:15] [PASSED] eDP
[04:19:15] [PASSED] Virtual
[04:19:15] [PASSED] DSI
[04:19:15] [PASSED] DPI
[04:19:15] [PASSED] Writeback
[04:19:15] [PASSED] SPI
[04:19:15] [PASSED] USB
[04:19:15] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[04:19:15] =============== [PASSED] drmm_connector_init ===============
[04:19:15] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[04:19:15] ========== drm_test_get_tv_mode_from_name_valid  ===========
[04:19:15] [PASSED] NTSC
[04:19:15] [PASSED] NTSC-443
[04:19:15] [PASSED] NTSC-J
[04:19:15] [PASSED] PAL
[04:19:15] [PASSED] PAL-M
[04:19:15] [PASSED] PAL-N
[04:19:15] [PASSED] SECAM
[04:19:15] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[04:19:15] [PASSED] drm_test_get_tv_mode_from_name_truncated
[04:19:15] ============ [PASSED] drm_get_tv_mode_from_name ============
[04:19:15] ============= drm_damage_helper (21 subtests) ==============
[04:19:15] [PASSED] drm_test_damage_iter_no_damage
[04:19:15] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[04:19:15] [PASSED] drm_test_damage_iter_no_damage_src_moved
[04:19:15] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[04:19:15] [PASSED] drm_test_damage_iter_no_damage_not_visible
[04:19:15] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[04:19:15] [PASSED] drm_test_damage_iter_no_damage_no_fb
[04:19:15] [PASSED] drm_test_damage_iter_simple_damage
[04:19:15] [PASSED] drm_test_damage_iter_single_damage
[04:19:15] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[04:19:15] [PASSED] drm_test_damage_iter_single_damage_outside_src
[04:19:15] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[04:19:15] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[04:19:15] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[04:19:15] [PASSED] drm_test_damage_iter_single_damage_src_moved
[04:19:15] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[04:19:15] [PASSED] drm_test_damage_iter_damage
[04:19:15] [PASSED] drm_test_damage_iter_damage_one_intersect
[04:19:15] [PASSED] drm_test_damage_iter_damage_one_outside
[04:19:15] [PASSED] drm_test_damage_iter_damage_src_moved
[04:19:15] [PASSED] drm_test_damage_iter_damage_not_visible
[04:19:15] ================ [PASSED] drm_damage_helper ================
[04:19:15] ============== drm_dp_mst_helper (3 subtests) ==============
[04:19:15] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[04:19:15] [PASSED] Clock 154000 BPP 30 DSC disabled
[04:19:15] [PASSED] Clock 234000 BPP 30 DSC disabled
[04:19:15] [PASSED] Clock 297000 BPP 24 DSC disabled
[04:19:15] [PASSED] Clock 332880 BPP 24 DSC enabled
[04:19:15] [PASSED] Clock 324540 BPP 24 DSC enabled
[04:19:15] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[04:19:15] ============== drm_test_dp_mst_calc_pbn_div  ===============
[04:19:15] [PASSED] Link rate 2000000 lane count 4
[04:19:15] [PASSED] Link rate 2000000 lane count 2
[04:19:15] [PASSED] Link rate 2000000 lane count 1
[04:19:15] [PASSED] Link rate 1350000 lane count 4
[04:19:15] [PASSED] Link rate 1350000 lane count 2
[04:19:15] [PASSED] Link rate 1350000 lane count 1
[04:19:15] [PASSED] Link rate 1000000 lane count 4
[04:19:15] [PASSED] Link rate 1000000 lane count 2
[04:19:15] [PASSED] Link rate 1000000 lane count 1
[04:19:15] [PASSED] Link rate 810000 lane count 4
[04:19:15] [PASSED] Link rate 810000 lane count 2
[04:19:15] [PASSED] Link rate 810000 lane count 1
[04:19:15] [PASSED] Link rate 540000 lane count 4
[04:19:15] [PASSED] Link rate 540000 lane count 2
[04:19:15] [PASSED] Link rate 540000 lane count 1
[04:19:15] [PASSED] Link rate 270000 lane count 4
[04:19:15] [PASSED] Link rate 270000 lane count 2
[04:19:15] [PASSED] Link rate 270000 lane count 1
[04:19:15] [PASSED] Link rate 162000 lane count 4
[04:19:15] [PASSED] Link rate 162000 lane count 2
[04:19:15] [PASSED] Link rate 162000 lane count 1
[04:19:15] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[04:19:15] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[04:19:15] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[04:19:15] [PASSED] DP_POWER_UP_PHY with port number
[04:19:15] [PASSED] DP_POWER_DOWN_PHY with port number
[04:19:15] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[04:19:15] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[04:19:15] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[04:19:15] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[04:19:15] [PASSED] DP_QUERY_PAYLOAD with port number
[04:19:15] [PASSED] DP_QUERY_PAYLOAD with VCPI
[04:19:15] [PASSED] DP_REMOTE_DPCD_READ with port number
[04:19:15] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[04:19:15] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[04:19:15] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[04:19:15] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[04:19:15] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[04:19:15] [PASSED] DP_REMOTE_I2C_READ with port number
[04:19:15] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[04:19:15] [PASSED] DP_REMOTE_I2C_READ with transactions array
[04:19:15] [PASSED] DP_REMOTE_I2C_WRITE with port number
[04:19:15] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[04:19:15] [PASSED] DP_REMOTE_I2C_WRITE with data array
[04:19:15] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[04:19:15] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[04:19:15] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[04:19:15] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[04:19:15] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[04:19:15] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[04:19:15] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[04:19:15] ================ [PASSED] drm_dp_mst_helper ================
[04:19:15] ================== drm_exec (7 subtests) ===================
[04:19:15] [PASSED] sanitycheck
[04:19:15] [PASSED] test_lock
[04:19:15] [PASSED] test_lock_unlock
[04:19:15] [PASSED] test_duplicates
[04:19:15] [PASSED] test_prepare
[04:19:15] [PASSED] test_prepare_array
[04:19:15] [PASSED] test_multiple_loops
[04:19:15] ==================== [PASSED] drm_exec =====================
[04:19:15] =========== drm_format_helper_test (17 subtests) ===========
[04:19:15] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[04:19:15] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[04:19:15] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[04:19:15] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[04:19:15] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[04:19:15] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[04:19:15] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[04:19:15] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[04:19:15] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[04:19:15] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[04:19:15] ============== drm_test_fb_xrgb8888_to_mono  ===============
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[04:19:15] ==================== drm_test_fb_swab  =====================
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ================ [PASSED] drm_test_fb_swab =================
[04:19:15] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[04:19:15] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[04:19:15] [PASSED] single_pixel_source_buffer
[04:19:15] [PASSED] single_pixel_clip_rectangle
[04:19:15] [PASSED] well_known_colors
[04:19:15] [PASSED] destination_pitch
[04:19:15] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[04:19:15] ================= drm_test_fb_clip_offset  =================
[04:19:15] [PASSED] pass through
[04:19:15] [PASSED] horizontal offset
[04:19:15] [PASSED] vertical offset
[04:19:15] [PASSED] horizontal and vertical offset
[04:19:15] [PASSED] horizontal offset (custom pitch)
[04:19:15] [PASSED] vertical offset (custom pitch)
[04:19:15] [PASSED] horizontal and vertical offset (custom pitch)
[04:19:15] ============= [PASSED] drm_test_fb_clip_offset =============
[04:19:15] ============== drm_test_fb_build_fourcc_list  ==============
[04:19:15] [PASSED] no native formats
[04:19:15] [PASSED] XRGB8888 as native format
[04:19:15] [PASSED] remove duplicates
[04:19:15] [PASSED] convert alpha formats
[04:19:15] [PASSED] random formats
[04:19:15] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[04:19:15] =================== drm_test_fb_memcpy  ====================
[04:19:15] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[04:19:15] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[04:19:15] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[04:19:15] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[04:19:15] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[04:19:15] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[04:19:15] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[04:19:15] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[04:19:15] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[04:19:15] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[04:19:15] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[04:19:15] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[04:19:15] =============== [PASSED] drm_test_fb_memcpy ================
[04:19:15] ============= [PASSED] drm_format_helper_test ==============
[04:19:15] ================= drm_format (18 subtests) =================
[04:19:15] [PASSED] drm_test_format_block_width_invalid
[04:19:15] [PASSED] drm_test_format_block_width_one_plane
[04:19:15] [PASSED] drm_test_format_block_width_two_plane
[04:19:15] [PASSED] drm_test_format_block_width_three_plane
[04:19:15] [PASSED] drm_test_format_block_width_tiled
[04:19:15] [PASSED] drm_test_format_block_height_invalid
[04:19:15] [PASSED] drm_test_format_block_height_one_plane
[04:19:15] [PASSED] drm_test_format_block_height_two_plane
[04:19:15] [PASSED] drm_test_format_block_height_three_plane
[04:19:15] [PASSED] drm_test_format_block_height_tiled
[04:19:15] [PASSED] drm_test_format_min_pitch_invalid
[04:19:15] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[04:19:15] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[04:19:15] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[04:19:15] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[04:19:15] [PASSED] drm_test_format_min_pitch_two_plane
[04:19:15] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[04:19:15] [PASSED] drm_test_format_min_pitch_tiled
[04:19:15] =================== [PASSED] drm_format ====================
[04:19:15] =============== drm_framebuffer (1 subtest) ================
[04:19:15] =============== drm_test_framebuffer_create  ===============
[04:19:15] [PASSED] ABGR8888 normal sizes
[04:19:15] [PASSED] ABGR8888 max sizes
[04:19:15] [PASSED] ABGR8888 pitch greater than min required
[04:19:15] [PASSED] ABGR8888 pitch less than min required
[04:19:15] [PASSED] ABGR8888 Invalid width
[04:19:15] [PASSED] ABGR8888 Invalid buffer handle
[04:19:15] [PASSED] No pixel format
[04:19:15] [PASSED] ABGR8888 Width 0
[04:19:15] [PASSED] ABGR8888 Height 0
[04:19:15] [PASSED] ABGR8888 Out of bound height * pitch combination
[04:19:15] [PASSED] ABGR8888 Large buffer offset
[04:19:15] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[04:19:15] [PASSED] ABGR8888 Valid buffer modifier
[04:19:15] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[04:19:15] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[04:19:15] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[04:19:15] [PASSED] NV12 Normal sizes
[04:19:15] [PASSED] NV12 Max sizes
[04:19:15] [PASSED] NV12 Invalid pitch
[04:19:15] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[04:19:15] [PASSED] NV12 different  modifier per-plane
[04:19:15] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[04:19:15] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[04:19:15] [PASSED] NV12 Modifier for inexistent plane
[04:19:15] [PASSED] NV12 Handle for inexistent plane
[04:19:15] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[04:19:15] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[04:19:15] [PASSED] YVU420 Normal sizes
[04:19:15] [PASSED] YVU420 Max sizes
[04:19:15] [PASSED] YVU420 Invalid pitch
[04:19:15] [PASSED] YVU420 Different pitches
[04:19:15] [PASSED] YVU420 Different buffer offsets/pitches
[04:19:15] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[04:19:15] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[04:19:15] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[04:19:15] [PASSED] YVU420 Valid modifier
[04:19:15] [PASSED] YVU420 Different modifiers per plane
[04:19:15] [PASSED] YVU420 Modifier for inexistent plane
[04:19:15] [PASSED] X0L2 Normal sizes
[04:19:15] [PASSED] X0L2 Max sizes
[04:19:15] [PASSED] X0L2 Invalid pitch
[04:19:15] [PASSED] X0L2 Pitch greater than minimum required
[04:19:15] [PASSED] X0L2 Handle for inexistent plane
[04:19:15] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[04:19:15] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[04:19:15] [PASSED] X0L2 Valid modifier
[04:19:15] [PASSED] X0L2 Modifier for inexistent plane
[04:19:15] =========== [PASSED] drm_test_framebuffer_create ===========
[04:19:15] ================= [PASSED] drm_framebuffer =================
[04:19:15] ================ drm_gem_shmem (8 subtests) ================
[04:19:15] [PASSED] drm_gem_shmem_test_obj_create
[04:19:15] [PASSED] drm_gem_shmem_test_obj_create_private
[04:19:15] [PASSED] drm_gem_shmem_test_pin_pages
[04:19:15] [PASSED] drm_gem_shmem_test_vmap
[04:19:15] [PASSED] drm_gem_shmem_test_get_pages_sgt
[04:19:15] [PASSED] drm_gem_shmem_test_get_sg_table
[04:19:15] [PASSED] drm_gem_shmem_test_madvise
[04:19:15] [PASSED] drm_gem_shmem_test_purge
[04:19:15] ================== [PASSED] drm_gem_shmem ==================
[04:19:15] ================= drm_managed (2 subtests) =================
[04:19:15] [PASSED] drm_test_managed_release_action
[04:19:15] [PASSED] drm_test_managed_run_action
[04:19:15] =================== [PASSED] drm_managed ===================
[04:19:15] =================== drm_mm (6 subtests) ====================
[04:19:15] [PASSED] drm_test_mm_init
[04:19:15] [PASSED] drm_test_mm_debug
[04:19:15] [PASSED] drm_test_mm_align32
[04:19:15] [PASSED] drm_test_mm_align64
[04:19:15] [PASSED] drm_test_mm_lowest
[04:19:15] [PASSED] drm_test_mm_highest
[04:19:15] ===================== [PASSED] drm_mm ======================
[04:19:15] ============= drm_modes_analog_tv (4 subtests) =============
[04:19:15] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[04:19:15] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[04:19:15] [PASSED] drm_test_modes_analog_tv_pal_576i
[04:19:15] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[04:19:15] =============== [PASSED] drm_modes_analog_tv ===============
[04:19:15] ============== drm_plane_helper (2 subtests) ===============
[04:19:15] =============== drm_test_check_plane_state  ================
[04:19:15] [PASSED] clipping_simple
[04:19:15] [PASSED] clipping_rotate_reflect
[04:19:15] [PASSED] positioning_simple
[04:19:15] [PASSED] upscaling
[04:19:15] [PASSED] downscaling
[04:19:15] [PASSED] rounding1
[04:19:15] [PASSED] rounding2
[04:19:15] [PASSED] rounding3
[04:19:15] [PASSED] rounding4
[04:19:15] =========== [PASSED] drm_test_check_plane_state ============
[04:19:15] =========== drm_test_check_invalid_plane_state  ============
[04:19:15] [PASSED] positioning_invalid
[04:19:15] [PASSED] upscaling_invalid
[04:19:15] [PASSED] downscaling_invalid
[04:19:15] ======= [PASSED] drm_test_check_invalid_plane_state ========
[04:19:15] ================ [PASSED] drm_plane_helper =================
[04:19:15] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[04:19:15] ====== drm_test_connector_helper_tv_get_modes_check  =======
[04:19:15] [PASSED] None
[04:19:15] [PASSED] PAL
[04:19:15] [PASSED] NTSC
[04:19:15] [PASSED] Both, NTSC Default
[04:19:15] [PASSED] Both, PAL Default
[04:19:15] [PASSED] Both, NTSC Default, with PAL on command-line
[04:19:15] [PASSED] Both, PAL Default, with NTSC on command-line
[04:19:15] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[04:19:15] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[04:19:15] ================== drm_rect (9 subtests) ===================
[04:19:15] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[04:19:15] [PASSED] drm_test_rect_clip_scaled_not_clipped
[04:19:15] [PASSED] drm_test_rect_clip_scaled_clipped
stty: 'standard input': Inappropriate ioctl for device
[04:19:15] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[04:19:15] ================= drm_test_rect_intersect  =================
[04:19:15] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[04:19:15] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[04:19:15] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[04:19:15] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[04:19:15] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[04:19:15] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[04:19:15] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[04:19:15] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[04:19:15] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[04:19:15] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[04:19:15] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[04:19:15] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[04:19:15] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[04:19:15] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[04:19:15] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[04:19:15] ============= [PASSED] drm_test_rect_intersect =============
[04:19:15] ================ drm_test_rect_calc_hscale  ================
[04:19:15] [PASSED] normal use
[04:19:15] [PASSED] out of max range
[04:19:15] [PASSED] out of min range
[04:19:15] [PASSED] zero dst
[04:19:15] [PASSED] negative src
[04:19:15] [PASSED] negative dst
[04:19:15] ============ [PASSED] drm_test_rect_calc_hscale ============
[04:19:15] ================ drm_test_rect_calc_vscale  ================
[04:19:15] [PASSED] normal use
[04:19:15] [PASSED] out of max range
[04:19:15] [PASSED] out of min range
[04:19:15] [PASSED] zero dst
[04:19:15] [PASSED] negative src
[04:19:15] [PASSED] negative dst
[04:19:15] ============ [PASSED] drm_test_rect_calc_vscale ============
[04:19:15] ================== drm_test_rect_rotate  ===================
[04:19:15] [PASSED] reflect-x
[04:19:15] [PASSED] reflect-y
[04:19:15] [PASSED] rotate-0
[04:19:15] [PASSED] rotate-90
[04:19:15] [PASSED] rotate-180
[04:19:15] [PASSED] rotate-270
[04:19:15] ============== [PASSED] drm_test_rect_rotate ===============
[04:19:15] ================ drm_test_rect_rotate_inv  =================
[04:19:15] [PASSED] reflect-x
[04:19:15] [PASSED] reflect-y
[04:19:15] [PASSED] rotate-0
[04:19:15] [PASSED] rotate-90
[04:19:15] [PASSED] rotate-180
[04:19:15] [PASSED] rotate-270
[04:19:15] ============ [PASSED] drm_test_rect_rotate_inv =============
[04:19:15] ==================== [PASSED] drm_rect =====================
[04:19:15] ============================================================
[04:19:15] Testing complete. Ran 417 tests: passed: 417
[04:19:15] Elapsed time: 23.561s total, 1.719s configuring, 21.671s building, 0.144s running

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



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

* ✓ CI.Build: success for drm/xe/guc: Add GuC based register capture for error capture (rev8)
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
                   ` (8 preceding siblings ...)
  2024-05-07  4:19 ` ✓ CI.KUnit: success " Patchwork
@ 2024-05-07  4:31 ` Patchwork
  2024-05-07  4:41 ` ✗ CI.Hooks: failure " Patchwork
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2024-05-07  4:31 UTC (permalink / raw)
  To: Zhanjun Dong; +Cc: intel-xe

== Series Details ==

Series: drm/xe/guc: Add GuC based register capture for error capture (rev8)
URL   : https://patchwork.freedesktop.org/series/128077/
State : success

== Summary ==

lib/modules/6.9.0-rc7-xe/kernel/sound/pci/hda/snd-hda-intel.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/core/
lib/modules/6.9.0-rc7-xe/kernel/sound/core/seq/
lib/modules/6.9.0-rc7-xe/kernel/sound/core/seq/snd-seq.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/core/snd-seq-device.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/core/snd-hwdep.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/core/snd.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/core/snd-pcm.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/core/snd-compress.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/core/snd-timer.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soundcore.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/intel/
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/intel/atom/
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/intel/atom/snd-soc-sst-atom-hifi2-platform.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/intel/atom/sst/
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-acpi.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-core.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/intel/common/
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/intel/common/snd-soc-acpi-intel-match.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/amd/
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/amd/snd-acp-config.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/intel/
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-tgl.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-mlink.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-lnl.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-common.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-mtl.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/amd/
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/amd/snd-sof-amd-renoir.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/amd/snd-sof-amd-acp.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/snd-sof-utils.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/snd-sof-pci.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/snd-sof.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/snd-sof-probes.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/xtensa/
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/sof/xtensa/snd-sof-xtensa-dsp.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/snd-soc-core.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/snd-soc-acpi.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/codecs/
lib/modules/6.9.0-rc7-xe/kernel/sound/soc/codecs/snd-soc-hdac-hda.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/hda/
lib/modules/6.9.0-rc7-xe/kernel/sound/hda/snd-intel-sdw-acpi.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/hda/ext/
lib/modules/6.9.0-rc7-xe/kernel/sound/hda/ext/snd-hda-ext-core.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/hda/snd-intel-dspcfg.ko
lib/modules/6.9.0-rc7-xe/kernel/sound/hda/snd-hda-core.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/kernel/
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/kernel/msr.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/kernel/cpuid.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/crypto/
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/crypto/sha512-ssse3.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/crypto/crct10dif-pclmul.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/crypto/ghash-clmulni-intel.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/crypto/sha1-ssse3.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/crypto/crc32-pclmul.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/crypto/sha256-ssse3.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/crypto/aesni-intel.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/crypto/polyval-clmulni.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/events/
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/events/intel/
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/events/intel/intel-cstate.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/events/rapl.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/kvm/
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/kvm/kvm.ko
lib/modules/6.9.0-rc7-xe/kernel/arch/x86/kvm/kvm-intel.ko
lib/modules/6.9.0-rc7-xe/kernel/crypto/
lib/modules/6.9.0-rc7-xe/kernel/crypto/crypto_simd.ko
lib/modules/6.9.0-rc7-xe/kernel/crypto/cmac.ko
lib/modules/6.9.0-rc7-xe/kernel/crypto/ccm.ko
lib/modules/6.9.0-rc7-xe/kernel/crypto/cryptd.ko
lib/modules/6.9.0-rc7-xe/kernel/crypto/polyval-generic.ko
lib/modules/6.9.0-rc7-xe/kernel/crypto/async_tx/
lib/modules/6.9.0-rc7-xe/kernel/crypto/async_tx/async_xor.ko
lib/modules/6.9.0-rc7-xe/kernel/crypto/async_tx/async_tx.ko
lib/modules/6.9.0-rc7-xe/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/6.9.0-rc7-xe/kernel/crypto/async_tx/async_pq.ko
lib/modules/6.9.0-rc7-xe/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/6.9.0-rc7-xe/build
lib/modules/6.9.0-rc7-xe/modules.alias.bin
lib/modules/6.9.0-rc7-xe/modules.builtin
lib/modules/6.9.0-rc7-xe/modules.softdep
lib/modules/6.9.0-rc7-xe/modules.alias
lib/modules/6.9.0-rc7-xe/modules.order
lib/modules/6.9.0-rc7-xe/modules.symbols
lib/modules/6.9.0-rc7-xe/modules.dep.bin
+ mv kernel-nodebug.tar.gz ..
+ cd ..
+ rm -rf archive
++ date +%s
+ echo -e '\e[0Ksection_end:1715056246:package_x86_64_nodebug\r\e[0K'
+ sync
^[[0Ksection_end:1715056246:package_x86_64_nodebug
^[[0K
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✗ CI.Hooks: failure for drm/xe/guc: Add GuC based register capture for error capture (rev8)
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
                   ` (9 preceding siblings ...)
  2024-05-07  4:31 ` ✓ CI.Build: " Patchwork
@ 2024-05-07  4:41 ` Patchwork
  2024-05-07  4:49 ` ✓ CI.checksparse: success " Patchwork
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2024-05-07  4:41 UTC (permalink / raw)
  To: Zhanjun Dong; +Cc: intel-xe

== Series Details ==

Series: drm/xe/guc: Add GuC based register capture for error capture (rev8)
URL   : https://patchwork.freedesktop.org/series/128077/
State : failure

== Summary ==

run-parts: executing /workspace/ci/hooks/00-showenv
+ export
+ grep -Ei '(^|\W)CI_'
declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-default"
declare -x CI_KERNEL_SRC_DIR="/workspace/kernel"
declare -x CI_TOOLS_SRC_DIR="/workspace/ci"
declare -x CI_WORKSPACE_DIR="/workspace"
run-parts: executing /workspace/ci/hooks/10-build-W1
+ SRC_DIR=/workspace/kernel
+ RESTORE_DISPLAY_CONFIG=0
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ cd /workspace/kernel
++ nproc
+ make -j48 O=/workspace/kernel/build64-default modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-default'
  GEN     Makefile
  UPD     include/generated/compile.h
  UPD     include/config/kernel.release
mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool 
  UPD     include/generated/utsrelease.h
  HOSTCC  /workspace/kernel/build64-default/tools/objtool/fixdep.o
  CALL    ../scripts/checksyscalls.sh
  HOSTLD  /workspace/kernel/build64-default/tools/objtool/fixdep-in.o
  LINK    /workspace/kernel/build64-default/tools/objtool/fixdep
  INSTALL libsubcmd_headers
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o
  LD      /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o
  AR      /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a
  CC      /workspace/kernel/build64-default/tools/objtool/weak.o
  CC      /workspace/kernel/build64-default/tools/objtool/check.o
  CC      /workspace/kernel/build64-default/tools/objtool/special.o
  CC      /workspace/kernel/build64-default/tools/objtool/builtin-check.o
  CC      /workspace/kernel/build64-default/tools/objtool/elf.o
  CC      /workspace/kernel/build64-default/tools/objtool/objtool.o
  CC      /workspace/kernel/build64-default/tools/objtool/orc_gen.o
  CC      /workspace/kernel/build64-default/tools/objtool/orc_dump.o
  CC      /workspace/kernel/build64-default/tools/objtool/libstring.o
  CC      /workspace/kernel/build64-default/tools/objtool/libctype.o
  CC      /workspace/kernel/build64-default/tools/objtool/str_error_r.o
  CC      /workspace/kernel/build64-default/tools/objtool/librbtree.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o
  LD      /workspace/kernel/build64-default/tools/objtool/arch/x86/objtool-in.o
  LD      /workspace/kernel/build64-default/tools/objtool/objtool-in.o
  LINK    /workspace/kernel/build64-default/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64-default'
++ nproc
+ make -j48 O=/workspace/kernel/build64-default M=drivers/gpu/drm/xe W=1
make[1]: Entering directory '/workspace/kernel/build64-default'
  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_device_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_dma_buf.o
  CC [M]  drivers/gpu/drm/xe/xe_drm_client.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_exec_queue.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_gpu_scheduler.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  CC [M]  drivers/gpu/drm/xe/xe_gsc_proxy.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc_submit.o
  CC [M]  drivers/gpu/drm/xe/xe_gt.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_ccs_mode.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_freq.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_idle.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_throttle_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_capture.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ct.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_db_mgr.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_id_mgr.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_klv_helpers.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_heci_gsc.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.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_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_range_fence.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
  GEN     xe_wa_oob.c xe_wa_oob.h
  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_tile_sysfs.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_vram_freq.o
  CC [M]  drivers/gpu/drm/xe/xe_wait_user_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_wa.o
  CC [M]  drivers/gpu/drm/xe/xe_wopcm.o
  CC [M]  drivers/gpu/drm/xe/xe_hmm.o
  CC [M]  drivers/gpu/drm/xe/xe_hwmon.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_relay.o
  CC [M]  drivers/gpu/drm/xe/xe_memirq.o
  CC [M]  drivers/gpu/drm/xe/xe_sriov.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_pf.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_pf_config.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_pf_control.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_pf_policy.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_pf_service.o
  CC [M]  drivers/gpu/drm/xe/xe_lmtt.o
  CC [M]  drivers/gpu/drm/xe/xe_lmtt_2l.o
  CC [M]  drivers/gpu/drm/xe/xe_lmtt_ml.o
  CC [M]  drivers/gpu/drm/xe/xe_sriov_pf.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_kunit_helpers.o
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_irq.o
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_utils.o
  CC [M]  drivers/gpu/drm/xe/display/intel_fb_bo.o
  CC [M]  drivers/gpu/drm/xe/display/intel_fbdev_fb.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_misc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_rps.o
  CC [M]  drivers/gpu/drm/xe/display/xe_dsb_buffer.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/gpu/drm/xe/display/xe_plane_initial.o
  CC [M]  drivers/gpu/drm/xe/display/xe_tdf.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_dram.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_pch.o
  CC [M]  drivers/gpu/drm/xe/i915-display/icl_dsi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_audio.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_backlight.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bios.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bw.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cdclk.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_color.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_connector.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc_state_dump.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cursor.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cx0_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi_buf_trans.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_device.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_driver.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_params.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_map.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_well.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_trace.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_wa.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.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/xe/i915-display/intel_dp_mst.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpt_common.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_drrs.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/xe/i915-display/intel_dsi_dcs_backlight.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi_vbt.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fb.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fbc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fdi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_global_state.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_gmbus.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp_gsc_message.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdmi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hti.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_link_bw.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_lspcon.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_lock.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_setup.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/xe/i915-display/intel_pmdemand.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pps.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_psr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_qp_tables.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_quirks.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_snps_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_tc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vblank.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vdsc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vga.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vrr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc_wl.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_wm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_scaler.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_watermark.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_acpi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_opregion.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fbdev.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs_params.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o
  HDRTEST drivers/gpu/drm/xe/abi/gsc_proxy_commands_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_klvs_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/gsc_command_header_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_sriov_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_live_test_mod.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_errors_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_bo_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_relay_actions_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/gsc_mkhi_commands_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.o
  HDRTEST drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_relay_communication_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_mmio_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_ctb_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_mocs_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_messages_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_test_mod.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vma_types.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_args_test.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_irq.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/vlv_sideband_reg.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_wakeref.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_pcode.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_reg_defs.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_trace.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_pci_test.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_reg.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_active_types.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_utils.h
  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/compat-i915-headers/i915_config.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/vlv_sideband.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_gem_stolen.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_mchbar_regs.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_debugfs.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_gpu_error.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/soc/intel_pch.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/soc/intel_dram.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/soc/intel_gmch.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vgpu.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_runtime_pm.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_pci_config.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_lmem.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_mman.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object_frontbuffer.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/gt/intel_rps.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_clock_gating.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_gt_types.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_active.h
  HDRTEST drivers/gpu/drm/xe/display/xe_display.h
  HDRTEST drivers/gpu/drm/xe/display/intel_fb_bo.h
  HDRTEST drivers/gpu/drm/xe/display/intel_fbdev_fb.h
  HDRTEST drivers/gpu/drm/xe/instructions/xe_gfx_state_commands.h
  HDRTEST drivers/gpu/drm/xe/instructions/xe_instr_defs.h
  HDRTEST drivers/gpu/drm/xe/instructions/xe_gsc_commands.h
  HDRTEST drivers/gpu/drm/xe/instructions/xe_gfxpipe_commands.h
  HDRTEST drivers/gpu/drm/xe/instructions/xe_mi_commands.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_gsc_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_reg_defs.h
  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
  HDRTEST drivers/gpu/drm/xe/regs/xe_pcode_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_gpu_commands.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_sriov_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_lrc_layout.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_gtt_defs.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_kunit_helpers.h
  LD [M]  drivers/gpu/drm/xe/tests/xe_live_test.o
  HDRTEST drivers/gpu/drm/xe/tests/xe_pci_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_migrate_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_dma_buf_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_mocs_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_bo_test.h
  HDRTEST drivers/gpu/drm/xe/xe_args.h
  HDRTEST drivers/gpu/drm/xe/xe_assert.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_sysfs.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_drm_client.h
  HDRTEST drivers/gpu/drm/xe/xe_drv.h
  HDRTEST drivers/gpu/drm/xe/xe_exec.h
  HDRTEST drivers/gpu/drm/xe/xe_exec_queue.h
  HDRTEST drivers/gpu/drm/xe/xe_exec_queue_types.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_gpu_scheduler.h
  HDRTEST drivers/gpu/drm/xe/xe_gpu_scheduler_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gsc.h
  HDRTEST drivers/gpu/drm/xe/xe_gsc_proxy.h
  HDRTEST drivers/gpu/drm/xe/xe_gsc_submit.h
  HDRTEST drivers/gpu/drm/xe/xe_gsc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_ccs_mode.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_freq.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_idle.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_idle_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_mcr.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_pagefault.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_printk.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_pf.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_pf_config_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_pf_control.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_pf_helpers.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_pf_policy.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_pf_policy_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_pf_service.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_pf_service_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_pf_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sriov_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_throttle_sysfs.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
  LD [M]  drivers/gpu/drm/xe/tests/xe_test.o
  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_capture.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_capture_fwif.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_db_mgr.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_exec_queue_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_hxg_helpers.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_id_mgr.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_klv_helpers.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_relay.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_relay_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_heci_gsc.h
  HDRTEST drivers/gpu/drm/xe/xe_hmm.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_class_sysfs.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_hwmon.h
  HDRTEST drivers/gpu/drm/xe/xe_irq.h
  HDRTEST drivers/gpu/drm/xe/xe_lmtt.h
  HDRTEST drivers/gpu/drm/xe/xe_lmtt_types.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_memirq.h
  HDRTEST drivers/gpu/drm/xe/xe_memirq_types.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_range_fence.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_sriov.h
  HDRTEST drivers/gpu/drm/xe/xe_sriov_pf.h
  HDRTEST drivers/gpu/drm/xe/xe_sriov_pf_helpers.h
  HDRTEST drivers/gpu/drm/xe/xe_sriov_printk.h
  HDRTEST drivers/gpu/drm/xe/xe_sriov_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_tile_sysfs.h
  HDRTEST drivers/gpu/drm/xe/xe_tile_sysfs_types.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.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_debugfs.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_types.h
  HDRTEST drivers/gpu/drm/xe/xe_vram_freq.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
  CC [M]  drivers/gpu/drm/xe/xe_gsc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ads.o
  CC [M]  drivers/gpu/drm/xe/xe_migrate.o
  CC [M]  drivers/gpu/drm/xe/xe_ring_ops.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_live_test.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_test.mod.o
  LD [M]  drivers/gpu/drm/xe/tests/xe_live_test.ko
  LD [M]  drivers/gpu/drm/xe/xe.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_test.ko
make[1]: Leaving directory '/workspace/kernel/build64-default'
run-parts: executing /workspace/ci/hooks/11-build-32b
+++ realpath /workspace/ci/hooks/11-build-32b
++ dirname /workspace/ci/hooks/11-build-32b
+ THIS_SCRIPT_DIR=/workspace/ci/hooks
+ SRC_DIR=/workspace/kernel
+ TOOLS_SRC_DIR=/workspace/ci
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ BUILD_DIR=/workspace/kernel/build64-default/build32
+ cd /workspace/kernel
+ mkdir -p /workspace/kernel/build64-default/build32
++ nproc
+ make -j48 ARCH=i386 O=/workspace/kernel/build64-default/build32 defconfig
make[1]: Entering directory '/workspace/kernel/build64-default/build32'
  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/preprocess.o
  HOSTCC  scripts/kconfig/menu.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTLD  scripts/kconfig/conf
*** Default configuration is based on 'i386_defconfig'
#
# configuration written to .config
#
make[1]: Leaving directory '/workspace/kernel/build64-default/build32'
+ cd /workspace/kernel/build64-default/build32
+ /workspace/kernel/scripts/kconfig/merge_config.sh .config /workspace/ci/kernel/10-xe.fragment
Using .config as base
Merging /workspace/ci/kernel/10-xe.fragment
Value of CONFIG_DRM_XE is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_DRM_XE is not set
New value: CONFIG_DRM_XE=m

Value of CONFIG_SND_DEBUG is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_SND_DEBUG is not set
New value: CONFIG_SND_DEBUG=y

Value of CONFIG_SND_HDA_INTEL is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: CONFIG_SND_HDA_INTEL=y
New value: CONFIG_SND_HDA_INTEL=m

Value of CONFIG_SND_HDA_CODEC_HDMI is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_SND_HDA_CODEC_HDMI is not set
New value: CONFIG_SND_HDA_CODEC_HDMI=m

  GEN     Makefile

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m
#
# configuration written to .config
#
Value requested for CONFIG_HAVE_UID16 not in final .config
Requested value:  CONFIG_HAVE_UID16=y
Actual value:     

Value requested for CONFIG_UID16 not in final .config
Requested value:  CONFIG_UID16=y
Actual value:     

Value requested for CONFIG_X86_32 not in final .config
Requested value:  CONFIG_X86_32=y
Actual value:     

Value requested for CONFIG_OUTPUT_FORMAT not in final .config
Requested value:  CONFIG_OUTPUT_FORMAT="elf32-i386"
Actual value:     CONFIG_OUTPUT_FORMAT="elf64-x86-64"

Value requested for CONFIG_ARCH_MMAP_RND_BITS_MIN not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS_MIN=8
Actual value:     CONFIG_ARCH_MMAP_RND_BITS_MIN=28

Value requested for CONFIG_ARCH_MMAP_RND_BITS_MAX not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS_MAX=16
Actual value:     CONFIG_ARCH_MMAP_RND_BITS_MAX=32

Value requested for CONFIG_PGTABLE_LEVELS not in final .config
Requested value:  CONFIG_PGTABLE_LEVELS=2
Actual value:     CONFIG_PGTABLE_LEVELS=5

Value requested for CONFIG_X86_BIGSMP not in final .config
Requested value:  # CONFIG_X86_BIGSMP is not set
Actual value:     

Value requested for CONFIG_X86_INTEL_QUARK not in final .config
Requested value:  # CONFIG_X86_INTEL_QUARK is not set
Actual value:     

Value requested for CONFIG_X86_RDC321X not in final .config
Requested value:  # CONFIG_X86_RDC321X is not set
Actual value:     

Value requested for CONFIG_X86_32_NON_STANDARD not in final .config
Requested value:  # CONFIG_X86_32_NON_STANDARD is not set
Actual value:     

Value requested for CONFIG_X86_32_IRIS not in final .config
Requested value:  # CONFIG_X86_32_IRIS is not set
Actual value:     

Value requested for CONFIG_M486SX not in final .config
Requested value:  # CONFIG_M486SX is not set
Actual value:     

Value requested for CONFIG_M486 not in final .config
Requested value:  # CONFIG_M486 is not set
Actual value:     

Value requested for CONFIG_M586 not in final .config
Requested value:  # CONFIG_M586 is not set
Actual value:     

Value requested for CONFIG_M586TSC not in final .config
Requested value:  # CONFIG_M586TSC is not set
Actual value:     

Value requested for CONFIG_M586MMX not in final .config
Requested value:  # CONFIG_M586MMX is not set
Actual value:     

Value requested for CONFIG_M686 not in final .config
Requested value:  CONFIG_M686=y
Actual value:     

Value requested for CONFIG_MPENTIUMII not in final .config
Requested value:  # CONFIG_MPENTIUMII is not set
Actual value:     

Value requested for CONFIG_MPENTIUMIII not in final .config
Requested value:  # CONFIG_MPENTIUMIII is not set
Actual value:     

Value requested for CONFIG_MPENTIUMM not in final .config
Requested value:  # CONFIG_MPENTIUMM is not set
Actual value:     

Value requested for CONFIG_MPENTIUM4 not in final .config
Requested value:  # CONFIG_MPENTIUM4 is not set
Actual value:     

Value requested for CONFIG_MK6 not in final .config
Requested value:  # CONFIG_MK6 is not set
Actual value:     

Value requested for CONFIG_MK7 not in final .config
Requested value:  # CONFIG_MK7 is not set
Actual value:     

Value requested for CONFIG_MCRUSOE not in final .config
Requested value:  # CONFIG_MCRUSOE is not set
Actual value:     

Value requested for CONFIG_MEFFICEON not in final .config
Requested value:  # CONFIG_MEFFICEON is not set
Actual value:     

Value requested for CONFIG_MWINCHIPC6 not in final .config
Requested value:  # CONFIG_MWINCHIPC6 is not set
Actual value:     

Value requested for CONFIG_MWINCHIP3D not in final .config
Requested value:  # CONFIG_MWINCHIP3D is not set
Actual value:     

Value requested for CONFIG_MELAN not in final .config
Requested value:  # CONFIG_MELAN is not set
Actual value:     

Value requested for CONFIG_MGEODEGX1 not in final .config
Requested value:  # CONFIG_MGEODEGX1 is not set
Actual value:     

Value requested for CONFIG_MGEODE_LX not in final .config
Requested value:  # CONFIG_MGEODE_LX is not set
Actual value:     

Value requested for CONFIG_MCYRIXIII not in final .config
Requested value:  # CONFIG_MCYRIXIII is not set
Actual value:     

Value requested for CONFIG_MVIAC3_2 not in final .config
Requested value:  # CONFIG_MVIAC3_2 is not set
Actual value:     

Value requested for CONFIG_MVIAC7 not in final .config
Requested value:  # CONFIG_MVIAC7 is not set
Actual value:     

Value requested for CONFIG_X86_GENERIC not in final .config
Requested value:  # CONFIG_X86_GENERIC is not set
Actual value:     

Value requested for CONFIG_X86_INTERNODE_CACHE_SHIFT not in final .config
Requested value:  CONFIG_X86_INTERNODE_CACHE_SHIFT=5
Actual value:     CONFIG_X86_INTERNODE_CACHE_SHIFT=6

Value requested for CONFIG_X86_L1_CACHE_SHIFT not in final .config
Requested value:  CONFIG_X86_L1_CACHE_SHIFT=5
Actual value:     CONFIG_X86_L1_CACHE_SHIFT=6

Value requested for CONFIG_X86_USE_PPRO_CHECKSUM not in final .config
Requested value:  CONFIG_X86_USE_PPRO_CHECKSUM=y
Actual value:     

Value requested for CONFIG_X86_MINIMUM_CPU_FAMILY not in final .config
Requested value:  CONFIG_X86_MINIMUM_CPU_FAMILY=6
Actual value:     CONFIG_X86_MINIMUM_CPU_FAMILY=64

Value requested for CONFIG_CPU_SUP_TRANSMETA_32 not in final .config
Requested value:  CONFIG_CPU_SUP_TRANSMETA_32=y
Actual value:     

Value requested for CONFIG_CPU_SUP_VORTEX_32 not in final .config
Requested value:  CONFIG_CPU_SUP_VORTEX_32=y
Actual value:     

Value requested for CONFIG_HPET_TIMER not in final .config
Requested value:  # CONFIG_HPET_TIMER is not set
Actual value:     CONFIG_HPET_TIMER=y

Value requested for CONFIG_NR_CPUS_RANGE_END not in final .config
Requested value:  CONFIG_NR_CPUS_RANGE_END=8
Actual value:     CONFIG_NR_CPUS_RANGE_END=512

Value requested for CONFIG_NR_CPUS_DEFAULT not in final .config
Requested value:  CONFIG_NR_CPUS_DEFAULT=8
Actual value:     CONFIG_NR_CPUS_DEFAULT=64

Value requested for CONFIG_X86_ANCIENT_MCE not in final .config
Requested value:  # CONFIG_X86_ANCIENT_MCE is not set
Actual value:     

Value requested for CONFIG_X86_LEGACY_VM86 not in final .config
Requested value:  # CONFIG_X86_LEGACY_VM86 is not set
Actual value:     

Value requested for CONFIG_X86_ESPFIX32 not in final .config
Requested value:  CONFIG_X86_ESPFIX32=y
Actual value:     

Value requested for CONFIG_TOSHIBA not in final .config
Requested value:  # CONFIG_TOSHIBA is not set
Actual value:     

Value requested for CONFIG_X86_REBOOTFIXUPS not in final .config
Requested value:  # CONFIG_X86_REBOOTFIXUPS is not set
Actual value:     

Value requested for CONFIG_MICROCODE_INITRD32 not in final .config
Requested value:  CONFIG_MICROCODE_INITRD32=y
Actual value:     

Value requested for CONFIG_NOHIGHMEM not in final .config
Requested value:  # CONFIG_NOHIGHMEM is not set
Actual value:     

Value requested for CONFIG_HIGHMEM4G not in final .config
Requested value:  CONFIG_HIGHMEM4G=y
Actual value:     

Value requested for CONFIG_HIGHMEM64G not in final .config
Requested value:  # CONFIG_HIGHMEM64G is not set
Actual value:     

Value requested for CONFIG_PAGE_OFFSET not in final .config
Requested value:  CONFIG_PAGE_OFFSET=0xC0000000
Actual value:     

Value requested for CONFIG_HIGHMEM not in final .config
Requested value:  CONFIG_HIGHMEM=y
Actual value:     

Value requested for CONFIG_X86_PAE not in final .config
Requested value:  # CONFIG_X86_PAE is not set
Actual value:     

Value requested for CONFIG_ARCH_FLATMEM_ENABLE not in final .config
Requested value:  CONFIG_ARCH_FLATMEM_ENABLE=y
Actual value:     

Value requested for CONFIG_ARCH_SELECT_MEMORY_MODEL not in final .config
Requested value:  CONFIG_ARCH_SELECT_MEMORY_MODEL=y
Actual value:     

Value requested for CONFIG_ILLEGAL_POINTER_VALUE not in final .config
Requested value:  CONFIG_ILLEGAL_POINTER_VALUE=0
Actual value:     CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000

Value requested for CONFIG_HIGHPTE not in final .config
Requested value:  # CONFIG_HIGHPTE is not set
Actual value:     

Value requested for CONFIG_COMPAT_VDSO not in final .config
Requested value:  # CONFIG_COMPAT_VDSO is not set
Actual value:     

Value requested for CONFIG_FUNCTION_PADDING_CFI not in final .config
Requested value:  CONFIG_FUNCTION_PADDING_CFI=0
Actual value:     CONFIG_FUNCTION_PADDING_CFI=11

Value requested for CONFIG_FUNCTION_PADDING_BYTES not in final .config
Requested value:  CONFIG_FUNCTION_PADDING_BYTES=4
Actual value:     CONFIG_FUNCTION_PADDING_BYTES=16

Value requested for CONFIG_APM not in final .config
Requested value:  # CONFIG_APM is not set
Actual value:     

Value requested for CONFIG_X86_POWERNOW_K6 not in final .config
Requested value:  # CONFIG_X86_POWERNOW_K6 is not set
Actual value:     

Value requested for CONFIG_X86_POWERNOW_K7 not in final .config
Requested value:  # CONFIG_X86_POWERNOW_K7 is not set
Actual value:     

Value requested for CONFIG_X86_GX_SUSPMOD not in final .config
Requested value:  # CONFIG_X86_GX_SUSPMOD is not set
Actual value:     

Value requested for CONFIG_X86_SPEEDSTEP_ICH not in final .config
Requested value:  # CONFIG_X86_SPEEDSTEP_ICH is not set
Actual value:     

Value requested for CONFIG_X86_SPEEDSTEP_SMI not in final .config
Requested value:  # CONFIG_X86_SPEEDSTEP_SMI is not set
Actual value:     

Value requested for CONFIG_X86_CPUFREQ_NFORCE2 not in final .config
Requested value:  # CONFIG_X86_CPUFREQ_NFORCE2 is not set
Actual value:     

Value requested for CONFIG_X86_LONGRUN not in final .config
Requested value:  # CONFIG_X86_LONGRUN is not set
Actual value:     

Value requested for CONFIG_X86_LONGHAUL not in final .config
Requested value:  # CONFIG_X86_LONGHAUL is not set
Actual value:     

Value requested for CONFIG_X86_E_POWERSAVER not in final .config
Requested value:  # CONFIG_X86_E_POWERSAVER is not set
Actual value:     

Value requested for CONFIG_PCI_GOBIOS not in final .config
Requested value:  # CONFIG_PCI_GOBIOS is not set
Actual value:     

Value requested for CONFIG_PCI_GOMMCONFIG not in final .config
Requested value:  # CONFIG_PCI_GOMMCONFIG is not set
Actual value:     

Value requested for CONFIG_PCI_GODIRECT not in final .config
Requested value:  # CONFIG_PCI_GODIRECT is not set
Actual value:     

Value requested for CONFIG_PCI_GOANY not in final .config
Requested value:  CONFIG_PCI_GOANY=y
Actual value:     

Value requested for CONFIG_PCI_BIOS not in final .config
Requested value:  CONFIG_PCI_BIOS=y
Actual value:     

Value requested for CONFIG_ISA not in final .config
Requested value:  # CONFIG_ISA is not set
Actual value:     

Value requested for CONFIG_SCx200 not in final .config
Requested value:  # CONFIG_SCx200 is not set
Actual value:     

Value requested for CONFIG_OLPC not in final .config
Requested value:  # CONFIG_OLPC is not set
Actual value:     

Value requested for CONFIG_ALIX not in final .config
Requested value:  # CONFIG_ALIX is not set
Actual value:     

Value requested for CONFIG_NET5501 not in final .config
Requested value:  # CONFIG_NET5501 is not set
Actual value:     

Value requested for CONFIG_GEOS not in final .config
Requested value:  # CONFIG_GEOS is not set
Actual value:     

Value requested for CONFIG_COMPAT_32 not in final .config
Requested value:  CONFIG_COMPAT_32=y
Actual value:     

Value requested for CONFIG_HAVE_ATOMIC_IOMAP not in final .config
Requested value:  CONFIG_HAVE_ATOMIC_IOMAP=y
Actual value:     

Value requested for CONFIG_ARCH_32BIT_OFF_T not in final .config
Requested value:  CONFIG_ARCH_32BIT_OFF_T=y
Actual value:     

Value requested for CONFIG_ARCH_WANT_IPC_PARSE_VERSION not in final .config
Requested value:  CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
Actual value:     

Value requested for CONFIG_MODULES_USE_ELF_REL not in final .config
Requested value:  CONFIG_MODULES_USE_ELF_REL=y
Actual value:     

Value requested for CONFIG_ARCH_MMAP_RND_BITS not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS=8
Actual value:     CONFIG_ARCH_MMAP_RND_BITS=28

Value requested for CONFIG_CLONE_BACKWARDS not in final .config
Requested value:  CONFIG_CLONE_BACKWARDS=y
Actual value:     

Value requested for CONFIG_OLD_SIGSUSPEND3 not in final .config
Requested value:  CONFIG_OLD_SIGSUSPEND3=y
Actual value:     

Value requested for CONFIG_OLD_SIGACTION not in final .config
Requested value:  CONFIG_OLD_SIGACTION=y
Actual value:     

Value requested for CONFIG_ARCH_SPLIT_ARG64 not in final .config
Requested value:  CONFIG_ARCH_SPLIT_ARG64=y
Actual value:     

Value requested for CONFIG_FUNCTION_ALIGNMENT not in final .config
Requested value:  CONFIG_FUNCTION_ALIGNMENT=4
Actual value:     CONFIG_FUNCTION_ALIGNMENT=16

Value requested for CONFIG_SELECT_MEMORY_MODEL not in final .config
Requested value:  CONFIG_SELECT_MEMORY_MODEL=y
Actual value:     

Value requested for CONFIG_FLATMEM_MANUAL not in final .config
Requested value:  CONFIG_FLATMEM_MANUAL=y
Actual value:     

Value requested for CONFIG_SPARSEMEM_MANUAL not in final .config
Requested value:  # CONFIG_SPARSEMEM_MANUAL is not set
Actual value:     

Value requested for CONFIG_FLATMEM not in final .config
Requested value:  CONFIG_FLATMEM=y
Actual value:     

Value requested for CONFIG_SPARSEMEM_STATIC not in final .config
Requested value:  CONFIG_SPARSEMEM_STATIC=y
Actual value:     

Value requested for CONFIG_BOUNCE not in final .config
Requested value:  CONFIG_BOUNCE=y
Actual value:     

Value requested for CONFIG_KMAP_LOCAL not in final .config
Requested value:  CONFIG_KMAP_LOCAL=y
Actual value:     

Value requested for CONFIG_HOTPLUG_PCI_COMPAQ not in final .config
Requested value:  # CONFIG_HOTPLUG_PCI_COMPAQ is not set
Actual value:     

Value requested for CONFIG_HOTPLUG_PCI_IBM not in final .config
Requested value:  # CONFIG_HOTPLUG_PCI_IBM is not set
Actual value:     

Value requested for CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH not in final .config
Requested value:  CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH=y
Actual value:     

Value requested for CONFIG_PCH_PHUB not in final .config
Requested value:  # CONFIG_PCH_PHUB is not set
Actual value:     

Value requested for CONFIG_SCSI_NSP32 not in final .config
Requested value:  # CONFIG_SCSI_NSP32 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5520 not in final .config
Requested value:  # CONFIG_PATA_CS5520 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5530 not in final .config
Requested value:  # CONFIG_PATA_CS5530 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5535 not in final .config
Requested value:  # CONFIG_PATA_CS5535 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5536 not in final .config
Requested value:  # CONFIG_PATA_CS5536 is not set
Actual value:     

Value requested for CONFIG_PATA_SC1200 not in final .config
Requested value:  # CONFIG_PATA_SC1200 is not set
Actual value:     

Value requested for CONFIG_PCH_GBE not in final .config
Requested value:  # CONFIG_PCH_GBE is not set
Actual value:     

Value requested for CONFIG_INPUT_WISTRON_BTNS not in final .config
Requested value:  # CONFIG_INPUT_WISTRON_BTNS is not set
Actual value:     

Value requested for CONFIG_SERIAL_TIMBERDALE not in final .config
Requested value:  # CONFIG_SERIAL_TIMBERDALE is not set
Actual value:     

Value requested for CONFIG_SERIAL_PCH_UART not in final .config
Requested value:  # CONFIG_SERIAL_PCH_UART is not set
Actual value:     

Value requested for CONFIG_HW_RANDOM_GEODE not in final .config
Requested value:  CONFIG_HW_RANDOM_GEODE=y
Actual value:     

Value requested for CONFIG_SONYPI not in final .config
Requested value:  # CONFIG_SONYPI is not set
Actual value:     

Value requested for CONFIG_PC8736x_GPIO not in final .config
Requested value:  # CONFIG_PC8736x_GPIO is not set
Actual value:     

Value requested for CONFIG_NSC_GPIO not in final .config
Requested value:  # CONFIG_NSC_GPIO is not set
Actual value:     

Value requested for CONFIG_I2C_EG20T not in final .config
Requested value:  # CONFIG_I2C_EG20T is not set
Actual value:     

Value requested for CONFIG_SCx200_ACB not in final .config
Requested value:  # CONFIG_SCx200_ACB is not set
Actual value:     

Value requested for CONFIG_PTP_1588_CLOCK_PCH not in final .config
Requested value:  # CONFIG_PTP_1588_CLOCK_PCH is not set
Actual value:     

Value requested for CONFIG_SBC8360_WDT not in final .config
Requested value:  # CONFIG_SBC8360_WDT is not set
Actual value:     

Value requested for CONFIG_SBC7240_WDT not in final .config
Requested value:  # CONFIG_SBC7240_WDT is not set
Actual value:     

Value requested for CONFIG_MFD_CS5535 not in final .config
Requested value:  # CONFIG_MFD_CS5535 is not set
Actual value:     

Value requested for CONFIG_AGP_ALI not in final .config
Requested value:  # CONFIG_AGP_ALI is not set
Actual value:     

Value requested for CONFIG_AGP_ATI not in final .config
Requested value:  # CONFIG_AGP_ATI is not set
Actual value:     

Value requested for CONFIG_AGP_AMD not in final .config
Requested value:  # CONFIG_AGP_AMD is not set
Actual value:     

Value requested for CONFIG_AGP_NVIDIA not in final .config
Requested value:  # CONFIG_AGP_NVIDIA is not set
Actual value:     

Value requested for CONFIG_AGP_SWORKS not in final .config
Requested value:  # CONFIG_AGP_SWORKS is not set
Actual value:     

Value requested for CONFIG_AGP_EFFICEON not in final .config
Requested value:  # CONFIG_AGP_EFFICEON is not set
Actual value:     

Value requested for CONFIG_SND_PCM not in final .config
Requested value:  CONFIG_SND_PCM=y
Actual value:     CONFIG_SND_PCM=m

Value requested for CONFIG_SND_HWDEP not in final .config
Requested value:  CONFIG_SND_HWDEP=y
Actual value:     CONFIG_SND_HWDEP=m

Value requested for CONFIG_SND_DYNAMIC_MINORS not in final .config
Requested value:  # CONFIG_SND_DYNAMIC_MINORS is not set
Actual value:     CONFIG_SND_DYNAMIC_MINORS=y

Value requested for CONFIG_SND_CS5530 not in final .config
Requested value:  # CONFIG_SND_CS5530 is not set
Actual value:     

Value requested for CONFIG_SND_CS5535AUDIO not in final .config
Requested value:  # CONFIG_SND_CS5535AUDIO is not set
Actual value:     

Value requested for CONFIG_SND_SIS7019 not in final .config
Requested value:  # CONFIG_SND_SIS7019 is not set
Actual value:     

Value requested for CONFIG_SND_HDA not in final .config
Requested value:  CONFIG_SND_HDA=y
Actual value:     CONFIG_SND_HDA=m

Value requested for CONFIG_SND_HDA_CORE not in final .config
Requested value:  CONFIG_SND_HDA_CORE=y
Actual value:     CONFIG_SND_HDA_CORE=m

Value requested for CONFIG_SND_INTEL_DSP_CONFIG not in final .config
Requested value:  CONFIG_SND_INTEL_DSP_CONFIG=y
Actual value:     CONFIG_SND_INTEL_DSP_CONFIG=m

Value requested for CONFIG_SND_INTEL_SOUNDWIRE_ACPI not in final .config
Requested value:  CONFIG_SND_INTEL_SOUNDWIRE_ACPI=y
Actual value:     CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m

Value requested for CONFIG_LEDS_OT200 not in final .config
Requested value:  # CONFIG_LEDS_OT200 is not set
Actual value:     

Value requested for CONFIG_PCH_DMA not in final .config
Requested value:  # CONFIG_PCH_DMA is not set
Actual value:     

Value requested for CONFIG_CLKSRC_I8253 not in final .config
Requested value:  CONFIG_CLKSRC_I8253=y
Actual value:     

Value requested for CONFIG_MAILBOX not in final .config
Requested value:  # CONFIG_MAILBOX is not set
Actual value:     CONFIG_MAILBOX=y

Value requested for CONFIG_CRYPTO_SERPENT_SSE2_586 not in final .config
Requested value:  # CONFIG_CRYPTO_SERPENT_SSE2_586 is not set
Actual value:     

Value requested for CONFIG_CRYPTO_TWOFISH_586 not in final .config
Requested value:  # CONFIG_CRYPTO_TWOFISH_586 is not set
Actual value:     

Value requested for CONFIG_CRYPTO_DEV_GEODE not in final .config
Requested value:  # CONFIG_CRYPTO_DEV_GEODE is not set
Actual value:     

Value requested for CONFIG_CRYPTO_DEV_HIFN_795X not in final .config
Requested value:  # CONFIG_CRYPTO_DEV_HIFN_795X is not set
Actual value:     

Value requested for CONFIG_CRYPTO_LIB_POLY1305_RSIZE not in final .config
Requested value:  CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
Actual value:     CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11

Value requested for CONFIG_AUDIT_GENERIC not in final .config
Requested value:  CONFIG_AUDIT_GENERIC=y
Actual value:     

Value requested for CONFIG_GENERIC_VDSO_32 not in final .config
Requested value:  CONFIG_GENERIC_VDSO_32=y
Actual value:     

Value requested for CONFIG_DEBUG_KMAP_LOCAL not in final .config
Requested value:  # CONFIG_DEBUG_KMAP_LOCAL is not set
Actual value:     

Value requested for CONFIG_DEBUG_HIGHMEM not in final .config
Requested value:  # CONFIG_DEBUG_HIGHMEM is not set
Actual value:     

Value requested for CONFIG_HAVE_DEBUG_STACKOVERFLOW not in final .config
Requested value:  CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
Actual value:     

Value requested for CONFIG_DEBUG_STACKOVERFLOW not in final .config
Requested value:  # CONFIG_DEBUG_STACKOVERFLOW is not set
Actual value:     

Value requested for CONFIG_HAVE_FUNCTION_GRAPH_TRACER not in final .config
Requested value:  CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
Actual value:     

Value requested for CONFIG_HAVE_FUNCTION_GRAPH_RETVAL not in final .config
Requested value:  CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y
Actual value:     

Value requested for CONFIG_DRM_KUNIT_TEST not in final .config
Requested value:  CONFIG_DRM_KUNIT_TEST=m
Actual value:     

Value requested for CONFIG_DRM_XE_WERROR not in final .config
Requested value:  CONFIG_DRM_XE_WERROR=y
Actual value:     

Value requested for CONFIG_DRM_XE_DEBUG not in final .config
Requested value:  CONFIG_DRM_XE_DEBUG=y
Actual value:     

Value requested for CONFIG_DRM_XE_DEBUG_MEM not in final .config
Requested value:  CONFIG_DRM_XE_DEBUG_MEM=y
Actual value:     

Value requested for CONFIG_DRM_XE_KUNIT_TEST not in final .config
Requested value:  CONFIG_DRM_XE_KUNIT_TEST=m
Actual value:     

++ nproc
+ make -j48 ARCH=i386 olddefconfig
  GEN     Makefile

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m
#
# configuration written to .config
#
++ nproc
+ make -j48 ARCH=i386
  SYNC    include/config/auto.conf.cmd
  GEN     Makefile

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m
  GEN     Makefile
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctl.h
  UPD     include/generated/uapi/linux/version.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctls.h
  WRAP    arch/x86/include/generated/uapi/asm/ipcbuf.h
  WRAP    arch/x86/include/generated/uapi/asm/param.h
  WRAP    arch/x86/include/generated/uapi/asm/poll.h
  WRAP    arch/x86/include/generated/uapi/asm/resource.h
  WRAP    arch/x86/include/generated/uapi/asm/sockios.h
  WRAP    arch/x86/include/generated/uapi/asm/socket.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
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_32.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_64.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  UPD     include/generated/compile.h
  HOSTCC  arch/x86/tools/relocs_32.o
  WRAP    arch/x86/include/generated/asm/early_ioremap.h
  HOSTCC  arch/x86/tools/relocs_64.o
  WRAP    arch/x86/include/generated/asm/mcs_spinlock.h
  WRAP    arch/x86/include/generated/asm/irq_regs.h
  HOSTCC  arch/x86/tools/relocs_common.o
  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/kallsyms
  HOSTCC  scripts/sorttable
  HOSTCC  scripts/asn1_compiler
  HOSTCC  scripts/selinux/genheaders/genheaders
  HOSTCC  scripts/selinux/mdp/mdp
  HOSTLD  arch/x86/tools/relocs
  UPD     include/config/kernel.release
  UPD     include/generated/utsrelease.h
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  CC      scripts/mod/devicetable-offsets.s
  UPD     scripts/mod/devicetable-offsets.h
  MKELF   scripts/mod/elfconfig.h
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/file2alias.o
  HOSTCC  scripts/mod/sumversion.o
  HOSTCC  scripts/mod/symsearch.o
  HOSTLD  scripts/mod/modpost
  CC      kernel/bounds.s
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-arch-fallback.h
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-instrumented.h
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-long.h
  UPD     include/generated/timeconst.h
  UPD     include/generated/bounds.h
  CC      arch/x86/kernel/asm-offsets.s
  UPD     include/generated/asm-offsets.h
  CALL    /workspace/kernel/scripts/checksyscalls.sh
  LDS     scripts/module.lds
  CC      ipc/util.o
  CC      ipc/msgutil.o
  CC      ipc/msg.o
  CC      ipc/sem.o
  HOSTCC  usr/gen_init_cpio
  CC      certs/system_keyring.o
  CC      ipc/shm.o
  CC      init/main.o
  CC      ipc/syscall.o
  CC      ipc/ipc_sysctl.o
  CC      ipc/mqueue.o
  CC      ipc/namespace.o
  CC      init/do_mounts.o
  UPD     init/utsversion-tmp.h
  CC      io_uring/io_uring.o
  CC      security/commoncap.o
  CC      ipc/mq_sysctl.o
  CC      io_uring/xattr.o
  CC      arch/x86/pci/i386.o
  CC      block/bdev.o
  CC      mm/filemap.o
  AS      arch/x86/lib/atomic64_cx8_32.o
  CC      init/do_mounts_initrd.o
  CC      security/lsm_syscalls.o
  CC      arch/x86/power/cpu.o
  CC      block/partitions/core.o
  GEN     security/selinux/flask.h security/selinux/av_permissions.h
  AR      arch/x86/crypto/built-in.a
  CC      block/fops.o
  AR      virt/lib/built-in.a
  CC      arch/x86/realmode/init.o
  CC      security/keys/gc.o
  CC      fs/nfs_common/nfsacl.o
  AR      drivers/cache/built-in.a
  AR      arch/x86/net/built-in.a
  CC      arch/x86/events/amd/core.o
  CC      security/integrity/iint.o
  CC      net/core/sock.o
  CC      sound/core/seq/seq.o
  AR      sound/drivers/opl3/built-in.a
  CC      security/selinux/avc.o
  AR      arch/x86/platform/atom/built-in.a
  CC      fs/notify/dnotify/dnotify.o
  CC      net/core/request_sock.o
  AR      sound/i2c/other/built-in.a
  AR      virt/built-in.a
  CC      arch/x86/mm/pat/set_memory.o
  AS      arch/x86/lib/checksum_32.o
  AR      sound/i2c/built-in.a
  CC      arch/x86/kernel/fpu/init.o
  AR      drivers/irqchip/built-in.a
  AR      sound/drivers/opl4/built-in.a
  CC      kernel/locking/mutex.o
  AR      arch/x86/platform/ce4100/built-in.a
  CC      arch/x86/entry/vdso/vma.o
  HOSTCC  certs/extract-cert
  AR      sound/drivers/mpu401/built-in.a
  CC      lib/math/div64.o
  CC      kernel/sched/core.o
  CC      arch/x86/platform/efi/memmap.o
  AR      arch/x86/virt/svm/built-in.a
  CC      arch/x86/lib/cmdline.o
  AR      sound/drivers/vx/built-in.a
  AR      drivers/bus/mhi/built-in.a
  AR      arch/x86/virt/vmx/built-in.a
  AR      drivers/bus/built-in.a
  AR      sound/drivers/pcsp/built-in.a
  AR      arch/x86/virt/built-in.a
  AR      sound/drivers/built-in.a
  CC      crypto/asymmetric_keys/asymmetric_type.o
  CC      crypto/asymmetric_keys/restrict.o
  AR      drivers/pwm/built-in.a
  CC      drivers/pci/msi/pcidev_msi.o
  CC      kernel/power/qos.o
  CC      lib/math/gcd.o
  AS      arch/x86/lib/cmpxchg8b_emu.o
  CC      arch/x86/lib/cpu.o
  CC      lib/math/lcm.o
  GEN     usr/initramfs_data.cpio
  CC      drivers/pci/msi/api.o
  COPY    usr/initramfs_inc_data
  AS      usr/initramfs_data.o
  CC      lib/math/int_log.o
  CERT    certs/x509_certificate_list
  AR      usr/built-in.a
  CERT    certs/signing_key.x509
  CC      arch/x86/lib/delay.o
  AS      certs/system_certificates.o
  CC      kernel/power/main.o
  CC      arch/x86/kernel/fpu/bugs.o
  AR      certs/built-in.a
  CC      io_uring/nop.o
  CC      lib/math/int_pow.o
  CC      drivers/pci/msi/msi.o
  CC      lib/math/int_sqrt.o
  CC      arch/x86/kernel/fpu/core.o
  CC      arch/x86/mm/init.o
  CC      drivers/pci/pcie/portdrv.o
  CC      lib/math/reciprocal_div.o
  AS      arch/x86/realmode/rm/header.o
  CC      sound/core/seq/seq_lock.o
  AS      arch/x86/realmode/rm/trampoline_32.o
  CC      drivers/pci/pcie/rcec.o
  AS      arch/x86/realmode/rm/stack.o
  AS      arch/x86/lib/getuser.o
  AS      arch/x86/realmode/rm/reboot.o
  CC      lib/math/rational.o
  CC      fs/nfs_common/grace.o
  GEN     arch/x86/lib/inat-tables.c
  AS      arch/x86/realmode/rm/wakeup_asm.o
  CC      arch/x86/realmode/rm/wakemain.o
  CC      security/integrity/integrity_audit.o
  CC      arch/x86/pci/init.o
  CC      sound/core/seq/seq_clientmgr.o
  CC      arch/x86/mm/init_32.o
  CC      sound/core/seq/seq_memory.o
  CC      arch/x86/lib/insn-eval.o
  CC      security/min_addr.o
  CC      arch/x86/lib/insn.o
  AR      fs/notify/dnotify/built-in.a
  CC      arch/x86/realmode/rm/video-mode.o
  CC      security/keys/key.o
  CC      crypto/asymmetric_keys/signature.o
  CC      fs/notify/inotify/inotify_fsnotify.o
  CC      arch/x86/entry/vdso/extable.o
  CC      arch/x86/platform/efi/quirks.o
  CC      arch/x86/power/hibernate_32.o
  AS      arch/x86/realmode/rm/copy.o
  CC      fs/notify/inotify/inotify_user.o
  CC      block/partitions/msdos.o
  AS      arch/x86/realmode/rm/bioscall.o
  CC      arch/x86/pci/pcbios.o
  CC      arch/x86/realmode/rm/regs.o
  CC      security/security.o
  CC      arch/x86/lib/kaslr.o
  CC      arch/x86/realmode/rm/video-vga.o
  AR      lib/math/built-in.a
  CC      security/lsm_audit.o
  AS      arch/x86/power/hibernate_asm_32.o
  CC      lib/crypto/mpi/generic_mpih-lshift.o
  CC      lib/zlib_inflate/inffast.o
  CC      lib/zlib_deflate/deflate.o
  CC      lib/zlib_inflate/inflate.o
  CC      arch/x86/power/hibernate.o
  CC      arch/x86/events/amd/lbr.o
  CC      arch/x86/realmode/rm/video-vesa.o
  CC      net/core/skbuff.o
  CC      lib/crypto/memneq.o
  CC      arch/x86/kernel/fpu/regset.o
  CC      arch/x86/realmode/rm/video-bios.o
  AR      sound/isa/ad1816a/built-in.a
  CC      arch/x86/kernel/fpu/signal.o
  AR      sound/isa/ad1848/built-in.a
  CC      lib/zlib_inflate/infutil.o
  CC      arch/x86/kernel/fpu/xstate.o
  AR      sound/isa/cs423x/built-in.a
  CC      security/device_cgroup.o
  CC      crypto/asymmetric_keys/public_key.o
  AR      sound/isa/es1688/built-in.a
  CC      arch/x86/lib/memcpy_32.o
  CC      drivers/pci/pcie/aspm.o
  CC      kernel/locking/semaphore.o
  CC      arch/x86/mm/pat/memtype.o
  AR      sound/isa/galaxy/built-in.a
  PASYMS  arch/x86/realmode/rm/pasyms.h
  AS      arch/x86/lib/memmove_32.o
  AR      sound/isa/gus/built-in.a
  LDS     arch/x86/realmode/rm/realmode.lds
  CC      arch/x86/pci/mmconfig_32.o
  CC      security/keys/keyring.o
  CC      kernel/power/console.o
  AR      sound/isa/msnd/built-in.a
  LD      arch/x86/realmode/rm/realmode.elf
  RELOCS  arch/x86/realmode/rm/realmode.relocs
  OBJCOPY arch/x86/realmode/rm/realmode.bin
  AR      sound/isa/opti9xx/built-in.a
  AR      fs/nfs_common/built-in.a
  AS      arch/x86/realmode/rmpiggy.o
  CC      drivers/pci/msi/irqdomain.o
  AR      security/integrity/built-in.a
  AR      sound/isa/sb/built-in.a
  CC      arch/x86/pci/direct.o
  AR      arch/x86/realmode/built-in.a
  AR      sound/isa/wavefront/built-in.a
  AR      fs/notify/fanotify/built-in.a
  AR      sound/isa/wss/built-in.a
  CC      block/partitions/efi.o
  CC      arch/x86/kernel/acpi/boot.o
  AR      sound/isa/built-in.a
  CC      arch/x86/kernel/cpu/mce/core.o
  CC      init/initramfs.o
  CC      arch/x86/mm/fault.o
  CC      arch/x86/kernel/cpu/mtrr/mtrr.o
  CC      init/calibrate.o
  CC      arch/x86/pci/mmconfig-shared.o
  AR      arch/x86/entry/vsyscall/built-in.a
  CC      crypto/api.o
  CC      arch/x86/kernel/apic/apic.o
  LDS     arch/x86/entry/vdso/vdso32/vdso32.lds
  CC      arch/x86/lib/misc.o
  CC      security/selinux/hooks.o
  CC      arch/x86/kernel/cpu/mtrr/if.o
  AR      ipc/built-in.a
  AS      arch/x86/entry/vdso/vdso32/note.o
  CC      arch/x86/kernel/cpu/mtrr/generic.o
  AS      arch/x86/entry/vdso/vdso32/system_call.o
  CC      arch/x86/lib/pc-conf-reg.o
  CC      lib/crypto/mpi/generic_mpih-mul1.o
  CC      arch/x86/mm/pat/memtype_interval.o
  AS      arch/x86/entry/vdso/vdso32/sigreturn.o
  CC      arch/x86/entry/vdso/vdso32/vclock_gettime.o
  CC      arch/x86/entry/vdso/vdso32/vgetcpu.o
  CC      arch/x86/platform/efi/efi.o
  CC      lib/zlib_inflate/inftrees.o
  CC      lib/zlib_inflate/inflate_syms.o
  CC      security/selinux/selinuxfs.o
  CC      arch/x86/kernel/cpu/mce/severity.o
  CC      mm/mempool.o
  AR      arch/x86/power/built-in.a
  AS      arch/x86/lib/putuser.o
  CC      init/init_task.o
  AR      fs/notify/inotify/built-in.a
  HOSTCC  arch/x86/entry/vdso/vdso2c
  CC      fs/notify/fsnotify.o
  AS      arch/x86/lib/retpoline.o
  AS      arch/x86/entry/entry.o
  CC      arch/x86/lib/string_32.o
  CC      drivers/pci/pcie/pme.o
  ASN.1   crypto/asymmetric_keys/x509.asn1.[ch]
  ASN.1   crypto/asymmetric_keys/x509_akid.asn1.[ch]
  CC      lib/zlib_deflate/deftree.o
  CC      crypto/asymmetric_keys/x509_loader.o
  CC      arch/x86/events/amd/ibs.o
  CC      sound/core/seq/seq_queue.o
  CC      arch/x86/lib/strstr_32.o
  CC      kernel/locking/rwsem.o
  CC      io_uring/fs.o
  CC      arch/x86/lib/usercopy.o
  CC      kernel/power/process.o
  CC      arch/x86/lib/usercopy_32.o
  AR      lib/zlib_inflate/built-in.a
  CC      io_uring/splice.o
  CC      io_uring/sync.o
  CC      io_uring/advise.o
  AR      drivers/pci/msi/built-in.a
  CC      arch/x86/lib/msr-smp.o
  CC      drivers/pci/hotplug/pci_hotplug_core.o
  CC      crypto/asymmetric_keys/x509_public_key.o
  CC      drivers/pci/hotplug/acpi_pcihp.o
  CC      io_uring/filetable.o
  AR      drivers/pci/controller/dwc/built-in.a
  CC      lib/crypto/mpi/generic_mpih-mul2.o
  CC      lib/crypto/mpi/generic_mpih-mul3.o
  AR      drivers/pci/controller/mobiveil/built-in.a
  CC      arch/x86/entry/vdso/vdso32-setup.o
  AR      drivers/pci/controller/built-in.a
  AR      arch/x86/mm/pat/built-in.a
  AR      sound/pci/ac97/built-in.a
  AR      sound/ppc/built-in.a
  CC      io_uring/openclose.o
  CC      kernel/power/suspend.o
  AR      sound/pci/ali5451/built-in.a
  ASN.1   crypto/asymmetric_keys/pkcs7.asn1.[ch]
  AR      block/partitions/built-in.a
  CC      crypto/cipher.o
  CC      block/bio.o
  AR      sound/pci/asihpi/built-in.a
  CC      crypto/compress.o
  AR      sound/pci/au88x0/built-in.a
  AR      arch/x86/kernel/fpu/built-in.a
  AR      sound/pci/aw2/built-in.a
  CC      arch/x86/lib/cache-smp.o
  CC      arch/x86/pci/fixup.o
  CC      arch/x86/pci/acpi.o
  AR      sound/pci/ctxfi/built-in.a
  CC      crypto/algapi.o
  AR      sound/pci/ca0106/built-in.a
  AR      drivers/pci/switch/built-in.a
  AR      sound/pci/cs46xx/built-in.a
  CC      io_uring/uring_cmd.o
  AR      sound/pci/cs5535audio/built-in.a
  CC      init/version.o
  AR      sound/pci/lola/built-in.a
  CC      lib/lzo/lzo1x_compress.o
  VDSO    arch/x86/entry/vdso/vdso32.so.dbg
  CC      lib/zlib_deflate/deflate_syms.o
  AR      sound/pci/lx6464es/built-in.a
  CC      arch/x86/kernel/acpi/sleep.o
  OBJCOPY arch/x86/entry/vdso/vdso32.so
  AR      sound/pci/echoaudio/built-in.a
  VDSO2C  arch/x86/entry/vdso/vdso-image-32.c
  CC      arch/x86/entry/vdso/vdso-image-32.o
  AR      sound/pci/emu10k1/built-in.a
  CC      arch/x86/events/amd/uncore.o
  AR      sound/pci/hda/built-in.a
  CC [M]  sound/pci/hda/hda_bind.o
  CC      security/keys/keyctl.o
  CC      arch/x86/kernel/cpu/mtrr/cleanup.o
  CC      arch/x86/lib/msr.o
  CC [M]  sound/pci/hda/hda_codec.o
  CC      fs/notify/notification.o
  CC      arch/x86/mm/ioremap.o
  CC      arch/x86/platform/efi/efi_32.o
  AR      drivers/pci/pcie/built-in.a
  AR      init/built-in.a
  CC [M]  sound/pci/hda/hda_jack.o
  CC      arch/x86/kernel/cpu/mce/genpool.o
  CC      crypto/asymmetric_keys/pkcs7_trust.o
  CC      sound/core/seq/seq_fifo.o
  AR      arch/x86/entry/vdso/built-in.a
  AS      arch/x86/entry/entry_32.o
  CC      crypto/asymmetric_keys/pkcs7_verify.o
  CC      arch/x86/entry/syscall_32.o
  CC      lib/crypto/mpi/generic_mpih-rshift.o
  AR      lib/zlib_deflate/built-in.a
  CC      kernel/locking/percpu-rwsem.o
  CC      sound/core/seq/seq_prioq.o
  CC      sound/core/sound.o
  AS      arch/x86/kernel/acpi/wakeup_32.o
  CC      mm/oom_kill.o
  AS      arch/x86/lib/msr-reg.o
  CC      mm/fadvise.o
  CC      security/keys/permission.o
  AR      drivers/pci/hotplug/built-in.a
  CC      security/keys/process_keys.o
  CC      lib/lzo/lzo1x_decompress_safe.o
  CC      drivers/pci/access.o
  CC      security/keys/request_key.o
  CC      security/keys/request_key_auth.o
  CC      sound/core/init.o
  CC      arch/x86/kernel/acpi/cstate.o
  CC      arch/x86/kernel/cpu/mce/intel.o
  CC      kernel/sched/fair.o
  CC      arch/x86/mm/extable.o
  CC      arch/x86/lib/msr-reg-export.o
  CC      fs/iomap/trace.o
  CC      arch/x86/pci/legacy.o
  CC      fs/iomap/iter.o
  CC      crypto/asymmetric_keys/x509.asn1.o
  CC      fs/notify/group.o
  CC      crypto/asymmetric_keys/x509_akid.asn1.o
  CC      crypto/asymmetric_keys/x509_cert_parser.o
  CC      fs/iomap/buffered-io.o
  CC      sound/core/seq/seq_timer.o
  CC      arch/x86/kernel/cpu/mtrr/amd.o
  CC      arch/x86/kernel/apic/apic_common.o
  CC      sound/core/seq/seq_system.o
  AR      sound/arm/built-in.a
  CC      arch/x86/kernel/apic/apic_noop.o
  CC [M]  sound/pci/hda/hda_auto_parser.o
  CC      net/core/datagram.o
  AS      arch/x86/platform/efi/efi_stub_32.o
  CC      lib/crypto/mpi/generic_mpih-sub1.o
  CC      arch/x86/platform/efi/runtime-map.o
  AS      arch/x86/lib/hweight.o
  AR      lib/lzo/built-in.a
  CC      security/selinux/netlink.o
  CC      lib/crypto/mpi/generic_mpih-add1.o
  CC      kernel/locking/spinlock.o
  CC      arch/x86/lib/iomem.o
  CC      kernel/power/hibernate.o
  CC      sound/core/seq/seq_ports.o
  CC      sound/core/memory.o
  CC      arch/x86/lib/atomic64_32.o
  CC      net/core/stream.o
  CC      lib/crypto/mpi/ec.o
  CC      crypto/asymmetric_keys/pkcs7.asn1.o
  AR      arch/x86/kernel/acpi/built-in.a
  AR      arch/x86/events/amd/built-in.a
  CC      arch/x86/kernel/kprobes/core.o
  CC      arch/x86/entry/common.o
  CC      arch/x86/events/intel/core.o
  CC      arch/x86/mm/mmap.o
  CC      crypto/scatterwalk.o
  CC      arch/x86/events/intel/bts.o
  CC      arch/x86/kernel/cpu/mce/amd.o
  LDS     arch/x86/kernel/vmlinux.lds
  AR      sound/sh/built-in.a
  AS      arch/x86/entry/thunk_32.o
  CC      security/keys/user_defined.o
  CC      arch/x86/events/intel/ds.o
  CC      sound/core/control.o
  CC      arch/x86/kernel/apic/ipi.o
  CC      sound/core/misc.o
  CC      arch/x86/pci/irq.o
  CC      drivers/pci/bus.o
  CC      crypto/asymmetric_keys/pkcs7_parser.o
  CC      arch/x86/kernel/cpu/mtrr/cyrix.o
  CC      arch/x86/pci/common.o
  CC      kernel/locking/osq_lock.o
  CC      arch/x86/kernel/apic/vector.o
  CC      arch/x86/lib/inat.o
  CC      mm/maccess.o
  CC      io_uring/epoll.o
  CC      arch/x86/mm/pgtable.o
  CC      fs/notify/mark.o
  CC      security/keys/proc.o
  CC      sound/core/device.o
  AR      arch/x86/lib/built-in.a
  CC      arch/x86/kernel/apic/init.o
  AR      arch/x86/lib/lib.a
  CC      arch/x86/kernel/cpu/mtrr/centaur.o
  CC      kernel/locking/qspinlock.o
  CC      arch/x86/kernel/cpu/microcode/core.o
  CC      arch/x86/kernel/cpu/mtrr/legacy.o
  CC      block/elevator.o
  CC      sound/core/seq/seq_info.o
  AR      arch/x86/platform/efi/built-in.a
  AR      arch/x86/platform/geode/built-in.a
  AR      arch/x86/platform/iris/built-in.a
  CC      arch/x86/platform/intel/iosf_mbi.o
  CC      arch/x86/kernel/cpu/microcode/intel.o
  CC      arch/x86/mm/physaddr.o
  CC      security/selinux/nlmsgtab.o
  CC      sound/core/seq/seq_dummy.o
  CC      kernel/sched/build_policy.o
  CC      security/keys/sysctl.o
  AR      crypto/asymmetric_keys/built-in.a
  CC      security/keys/keyctl_pkey.o
  CC      crypto/proc.o
  CC      arch/x86/kernel/apic/hw_nmi.o
  CC      arch/x86/pci/early.o
  CC      lib/crypto/mpi/mpicoder.o
  AR      sound/pci/ice1712/built-in.a
  AR      arch/x86/entry/built-in.a
  CC      arch/x86/kernel/cpu/cacheinfo.o
  CC      arch/x86/kernel/cpu/scattered.o
  CC      io_uring/statx.o
  CC      arch/x86/kernel/cpu/mce/threshold.o
  CC [M]  sound/pci/hda/hda_sysfs.o
  CC      kernel/printk/printk.o
  CC      kernel/locking/rtmutex_api.o
  AR      arch/x86/kernel/cpu/mtrr/built-in.a
  CC      kernel/printk/printk_safe.o
  CC      kernel/printk/nbcon.o
  CC      arch/x86/events/intel/knc.o
  CC      drivers/pci/probe.o
  CC      mm/page-writeback.o
  CC      kernel/irq/irqdesc.o
  AR      sound/pci/korg1212/built-in.a
  CC [M]  sound/pci/hda/hda_controller.o
  CC      arch/x86/kernel/kprobes/opt.o
  CC      block/blk-core.o
  AS      arch/x86/kernel/head_32.o
  AR      sound/pci/mixart/built-in.a
  AR      sound/pci/nm256/built-in.a
  CC      arch/x86/kernel/head32.o
  CC      arch/x86/kernel/ebda.o
  CC [M]  sound/pci/hda/hda_proc.o
  CC      mm/folio-compat.o
  CC      fs/iomap/direct-io.o
  CC      arch/x86/mm/tlb.o
  AR      sound/core/seq/built-in.a
  CC      kernel/locking/qrwlock.o
  CC      kernel/power/snapshot.o
  AR      arch/x86/platform/intel/built-in.a
  CC      sound/core/info.o
  AR      arch/x86/platform/intel-mid/built-in.a
  CC      arch/x86/kernel/cpu/topology_common.o
  AR      arch/x86/platform/intel-quark/built-in.a
  CC      fs/notify/fdinfo.o
  AR      arch/x86/platform/olpc/built-in.a
  CC      arch/x86/pci/bus_numa.o
  AR      arch/x86/platform/scx200/built-in.a
  CC      arch/x86/kernel/cpu/microcode/amd.o
  AR      arch/x86/platform/ts5500/built-in.a
  AR      arch/x86/platform/uv/built-in.a
  AR      security/keys/built-in.a
  AR      arch/x86/platform/built-in.a
  CC      kernel/irq/handle.o
  CC [M]  sound/pci/hda/hda_hwdep.o
  CC      crypto/aead.o
  CC      arch/x86/kernel/cpu/topology_ext.o
  CC      arch/x86/pci/amd_bus.o
  CC      security/selinux/netif.o
  CC      kernel/printk/printk_ringbuffer.o
  CC      net/ethernet/eth.o
  CC      arch/x86/kernel/cpu/topology_amd.o
  CC      security/selinux/netnode.o
  AR      net/802/built-in.a
  CC [M]  sound/pci/hda/patch_hdmi.o
  CC      net/sched/sch_generic.o
  CC [M]  sound/pci/hda/hda_eld.o
  CC      lib/crypto/mpi/mpi-add.o
  CC      net/sched/sch_mq.o
  CC      fs/iomap/fiemap.o
  CC [M]  sound/pci/hda/hda_intel.o
  CC      arch/x86/kernel/platform-quirks.o
  CC      io_uring/net.o
  CC      lib/crypto/mpi/mpi-bit.o
  CC      io_uring/msg_ring.o
  CC      io_uring/timeout.o
  CC      arch/x86/kernel/cpu/common.o
  CC      fs/iomap/seek.o
  CC      arch/x86/kernel/apic/io_apic.o
  CC      mm/readahead.o
  AR      kernel/locking/built-in.a
  CC      mm/swap.o
  CC      mm/truncate.o
  CC      kernel/rcu/update.o
  AR      fs/notify/built-in.a
  AR      arch/x86/kernel/kprobes/built-in.a
  AR      kernel/livepatch/built-in.a
  CC      net/core/scm.o
  CC      fs/quota/dquot.o
  CC      fs/proc/task_mmu.o
  CC      kernel/irq/manage.o
  CC      fs/proc/inode.o
  AR      arch/x86/kernel/cpu/mce/built-in.a
  CC      arch/x86/kernel/cpu/rdrand.o
  CC      net/core/gen_stats.o
  CC      arch/x86/kernel/apic/msi.o
  CC      fs/proc/root.o
  CC      fs/quota/quota_v2.o
  CC      fs/kernfs/mount.o
  CC      sound/core/isadma.o
  CC      fs/kernfs/inode.o
  AR      arch/x86/kernel/cpu/microcode/built-in.a
  CC      arch/x86/mm/cpu_entry_area.o
  CC      arch/x86/kernel/cpu/match.o
  CC      net/core/gen_estimator.o
  AR      arch/x86/pci/built-in.a
  CC      fs/sysfs/file.o
  CC      sound/core/vmaster.o
  CC      crypto/geniv.o
  CC      fs/devpts/inode.o
  CC      fs/iomap/swapfile.o
  CC      lib/crypto/mpi/mpi-cmp.o
  CC      arch/x86/kernel/process_32.o
  CC      drivers/pci/host-bridge.o
  CC      kernel/irq/spurious.o
  CC      sound/core/ctljack.o
  CC      crypto/lskcipher.o
  CC      arch/x86/events/intel/lbr.o
  LD [M]  sound/pci/hda/snd-hda-codec.o
  CC      arch/x86/kernel/cpu/bugs.o
  CC      fs/netfs/buffered_read.o
  CC      arch/x86/events/zhaoxin/core.o
  CC      security/selinux/netport.o
  CC      kernel/rcu/sync.o
  CC      arch/x86/events/core.o
  CC      arch/x86/mm/maccess.o
  CC      fs/netfs/buffered_write.o
  AR      net/ethernet/built-in.a
  CC      kernel/dma/mapping.o
  CC      lib/lz4/lz4_decompress.o
  CC      kernel/dma/direct.o
  CC      mm/vmscan.o
  CC      kernel/printk/sysctl.o
  CC      sound/core/jack.o
  CC      kernel/power/swap.o
  CC      sound/core/timer.o
  CC      kernel/dma/ops_helpers.o
  CC      kernel/power/user.o
  CC      lib/zstd/zstd_decompress_module.o
  CC      fs/kernfs/dir.o
  CC      lib/crypto/mpi/mpi-sub-ui.o
  CC      lib/zstd/decompress/huf_decompress.o
  CC      fs/kernfs/file.o
  CC      fs/sysfs/dir.o
  CC      kernel/rcu/srcutree.o
  CC      arch/x86/mm/pgprot.o
  AR      kernel/printk/built-in.a
  AR      fs/devpts/built-in.a
  CC      fs/sysfs/symlink.o
  CC      lib/zstd/decompress/zstd_ddict.o
  CC      fs/ext4/balloc.o
  CC      fs/ext4/bitmap.o
  CC      fs/jbd2/transaction.o
  CC      block/blk-sysfs.o
  CC      drivers/pci/remove.o
  AR      fs/iomap/built-in.a
  CC      fs/jbd2/commit.o
  CC      crypto/skcipher.o
  CC      net/core/net_namespace.o
  CC      kernel/sched/build_utility.o
  CC      drivers/video/console/dummycon.o
  CC      fs/jbd2/recovery.o
  LD [M]  sound/pci/hda/snd-hda-intel.o
  CC      lib/crypto/mpi/mpi-div.o
  CC      kernel/power/poweroff.o
  CC      kernel/irq/resend.o
  LD [M]  sound/pci/hda/snd-hda-codec-hdmi.o
  AR      sound/pci/oxygen/built-in.a
  AR      sound/pci/pcxhr/built-in.a
  CC      arch/x86/kernel/apic/probe_32.o
  CC      kernel/dma/dummy.o
  AR      sound/pci/riptide/built-in.a
  CC      crypto/seqiv.o
  AR      sound/pci/rme9652/built-in.a
  AR      sound/pci/trident/built-in.a
  CC      fs/proc/base.o
  CC      arch/x86/kernel/signal.o
  CC      sound/core/hrtimer.o
  CC      drivers/pci/pci.o
  AR      sound/pci/ymfpci/built-in.a
  CC      block/blk-flush.o
  CC      io_uring/sqpoll.o
  AR      arch/x86/events/zhaoxin/built-in.a
  AR      sound/pci/vx222/built-in.a
  CC      net/sched/sch_frag.o
  AR      sound/pci/built-in.a
  AR      drivers/idle/built-in.a
  CC      kernel/rcu/tree.o
  CC      arch/x86/mm/pgtable_32.o
  CC      fs/sysfs/mount.o
  CC      arch/x86/events/probe.o
  CC      kernel/dma/remap.o
  CC      arch/x86/mm/iomap_32.o
  CC      arch/x86/mm/hugetlbpage.o
  CC      arch/x86/mm/dump_pagetables.o
  CC      kernel/irq/chip.o
  AR      sound/synth/emux/built-in.a
  AR      sound/synth/built-in.a
  CC      security/selinux/status.o
  CC      arch/x86/mm/highmem_32.o
  CC      arch/x86/events/intel/p4.o
  CC      fs/quota/quota_tree.o
  CC      drivers/video/console/vgacon.o
  CC      net/sched/sch_api.o
  CC      arch/x86/events/utils.o
  AR      arch/x86/kernel/apic/built-in.a
  CC      lib/crypto/mpi/mpi-inv.o
  CC      arch/x86/events/rapl.o
  CC      drivers/pci/pci-driver.o
  AR      lib/lz4/built-in.a
  CC      fs/sysfs/group.o
  CC      sound/core/seq_device.o
  CC      drivers/pci/search.o
  CC      kernel/irq/dummychip.o
  CC      arch/x86/kernel/cpu/aperfmperf.o
  CC      fs/kernfs/symlink.o
  AR      kernel/power/built-in.a
  CC      lib/zstd/decompress/zstd_decompress.o
  CC      arch/x86/kernel/signal_32.o
  CC      lib/xz/xz_dec_syms.o
  CC      net/core/secure_seq.o
  CC      lib/dim/dim.o
  CC      kernel/rcu/rcu_segcblist.o
  CC      lib/xz/xz_dec_stream.o
  CC      fs/netfs/direct_read.o
  CC      fs/netfs/direct_write.o
  CC      crypto/echainiv.o
  CC      mm/shrinker.o
  AR      kernel/dma/built-in.a
  CC      crypto/ahash.o
  CC      fs/jbd2/checkpoint.o
  CC      lib/dim/net_dim.o
  CC      lib/xz/xz_dec_lzma2.o
  CC      block/blk-settings.o
  CC      drivers/pci/rom.o
  CC      fs/jbd2/revoke.o
  CC      fs/jbd2/journal.o
  CC      kernel/irq/devres.o
  CC      kernel/irq/autoprobe.o
  CC      lib/crypto/mpi/mpi-mod.o
  CC [M]  sound/core/hwdep.o
  AR      arch/x86/mm/built-in.a
  CC      kernel/entry/common.o
  CC      lib/xz/xz_dec_bcj.o
  CC      kernel/module/main.o
  CC      crypto/shash.o
  CC      io_uring/fdinfo.o
  CC      kernel/entry/syscall_user_dispatch.o
  AR      fs/sysfs/built-in.a
  CC      crypto/akcipher.o
  CC      arch/x86/events/msr.o
  CC      fs/quota/quota.o
  CC      io_uring/tctx.o
  CC      kernel/time/time.o
  CC      kernel/time/timer.o
  CC      fs/ramfs/inode.o
  CC      kernel/time/hrtimer.o
  CC      arch/x86/kernel/cpu/cpuid-deps.o
  CC      arch/x86/events/intel/p6.o
  CC      lib/dim/rdma_dim.o
  AR      fs/kernfs/built-in.a
  CC      kernel/time/timekeeping.o
  CC      fs/ramfs/file-mmu.o
  AR      drivers/video/console/built-in.a
  CC      drivers/video/backlight/backlight.o
  CC      lib/zstd/decompress/zstd_decompress_block.o
  CC      security/selinux/ss/ebitmap.o
  CC      crypto/sig.o
  CC      kernel/irq/irqdomain.o
  CC      arch/x86/kernel/traps.o
  CC      kernel/irq/proc.o
  CC      kernel/futex/core.o
  AR      lib/xz/built-in.a
  CC      arch/x86/kernel/idt.o
  CC      kernel/irq/migration.o
  CC      lib/fonts/fonts.o
  CC      kernel/irq/cpuhotplug.o
  CC      lib/crypto/mpi/mpi-mul.o
  CC      arch/x86/kernel/cpu/umwait.o
  CC      fs/netfs/io.o
  AR      lib/dim/built-in.a
  AR      drivers/char/ipmi/built-in.a
  CC      kernel/cgroup/cgroup.o
  CC      kernel/trace/trace_clock.o
  CC [M]  sound/core/pcm.o
  CC      drivers/video/aperture.o
  AR      drivers/video/fbdev/core/built-in.a
  AR      drivers/video/fbdev/omap/built-in.a
  CC      fs/ext4/block_validity.o
  AR      drivers/video/fbdev/omap2/omapfb/dss/built-in.a
  AR      drivers/video/fbdev/omap2/omapfb/displays/built-in.a
  CC      fs/ext4/dir.o
  AR      drivers/video/fbdev/omap2/omapfb/built-in.a
  AR      drivers/video/fbdev/omap2/built-in.a
  CC      drivers/acpi/acpica/dsargs.o
  CC      net/core/flow_dissector.o
  CC      fs/proc/generic.o
  AR      drivers/video/fbdev/built-in.a
  CC      block/blk-ioc.o
  CC      net/core/sysctl_net_core.o
  CC      fs/ext4/ext4_jbd2.o
  CC      lib/fonts/font_8x16.o
  CC      drivers/pci/setup-res.o
  CC [M]  sound/core/pcm_native.o
  CC      kernel/module/strict_rwx.o
  AR      fs/ramfs/built-in.a
  CC      lib/crypto/utils.o
  CC      arch/x86/events/intel/pt.o
  CC      lib/argv_split.o
  CC      drivers/video/cmdline.o
  CC      mm/shmem.o
  CC      drivers/video/nomodeset.o
  AR      kernel/entry/built-in.a
  CC [M]  sound/core/pcm_lib.o
  CC      kernel/trace/ring_buffer.o
  CC      lib/crypto/mpi/mpih-cmp.o
  CC      kernel/time/ntp.o
  CC      kernel/bpf/core.o
  CC      crypto/kpp.o
  CC      io_uring/poll.o
  AR      drivers/video/backlight/built-in.a
  CC      drivers/acpi/acpica/dscontrol.o
  CC      lib/bug.o
  CC      lib/crypto/chacha.o
  CC      net/sched/sch_blackhole.o
  MKCAP   arch/x86/kernel/cpu/capflags.c
  AR      lib/fonts/built-in.a
  CC      fs/quota/kqid.o
  CC      kernel/irq/pm.o
  CC      kernel/futex/syscalls.o
  CC      fs/ext4/extents.o
  CC      drivers/pci/irq.o
  CC      kernel/events/core.o
  CC      drivers/pci/vpd.o
  CC      drivers/pci/setup-bus.o
  CC      arch/x86/kernel/irq.o
  CC      kernel/events/ring_buffer.o
  CC      kernel/trace/trace.o
  CC      security/selinux/ss/hashtab.o
  CC      security/selinux/ss/symtab.o
  CC      lib/buildid.o
  CC      arch/x86/kernel/cpu/powerflags.o
  CC      kernel/futex/pi.o
  CC      drivers/acpi/acpica/dsdebug.o
  CC      drivers/acpi/acpica/dsfield.o
  CC      fs/proc/array.o
  CC      block/blk-map.o
  CC      fs/ext4/extents_status.o
  CC      fs/quota/netlink.o
  CC      kernel/irq/msi.o
  CC      lib/crypto/mpi/mpih-div.o
  CC      drivers/video/hdmi.o
  CC      kernel/events/callchain.o
  CC      lib/crypto/aes.o
  CC      security/selinux/ss/sidtab.o
  CC      fs/netfs/iterator.o
  CC      kernel/trace/trace_output.o
  CC      drivers/acpi/acpica/dsinit.o
  CC      security/selinux/ss/avtab.o
  ASN.1   crypto/rsapubkey.asn1.[ch]
  ASN.1   crypto/rsaprivkey.asn1.[ch]
  CC      crypto/rsa.o
  CC      kernel/time/clocksource.o
  CC      drivers/acpi/acpica/dsmethod.o
  CC      fs/netfs/locking.o
  CC      fs/netfs/main.o
  CC      kernel/time/jiffies.o
  CC      drivers/acpi/acpica/dsmthdat.o
  CC      net/sched/cls_api.o
  CC      kernel/module/kmod.o
  CC      kernel/time/timer_list.o
  AR      kernel/sched/built-in.a
  CC      kernel/events/hw_breakpoint.o
  CC      arch/x86/events/intel/uncore.o
  CC      arch/x86/events/intel/uncore_nhmex.o
  CC      kernel/time/timeconv.o
  CC      kernel/futex/requeue.o
  CC      lib/zstd/zstd_common_module.o
  CC      net/core/dev.o
  CC      kernel/time/timecounter.o
  CC      fs/netfs/misc.o
  AR      fs/jbd2/built-in.a
  CC      fs/ext4/file.o
  AR      fs/quota/built-in.a
  CC      drivers/acpi/acpica/dsobject.o
  CC      lib/crypto/mpi/mpih-mul.o
  CC      mm/util.o
  CC      drivers/acpi/acpica/dsopcode.o
  AR      drivers/video/built-in.a
  CC      fs/ext4/fsmap.o
  CC      drivers/acpi/acpica/dspkginit.o
  CC      fs/hugetlbfs/inode.o
  CC      fs/fat/cache.o
  CC      kernel/events/uprobes.o
  CC      mm/mmzone.o
  CC      fs/proc/fd.o
  CC      crypto/rsa_helper.o
  CC      lib/zstd/common/debug.o
  CC      lib/zstd/common/entropy_common.o
  CC      block/blk-merge.o
  CC      kernel/time/alarmtimer.o
  CC      fs/netfs/objects.o
  CC      crypto/rsa-pkcs1pad.o
  AR      kernel/rcu/built-in.a
  CC      fs/netfs/output.o
  CC      kernel/fork.o
  CC      io_uring/cancel.o
  CC      kernel/irq/affinity.o
  CC      lib/zstd/common/error_private.o
  CC      kernel/exec_domain.o
  CC      lib/zstd/common/fse_decompress.o
  CC      drivers/pci/vc.o
  CC      fs/isofs/namei.o
  CC      fs/isofs/inode.o
  CC      lib/zstd/common/zstd_common.o
  CC      mm/vmstat.o
  CC      kernel/module/tree_lookup.o
  CC      drivers/acpi/acpica/dsutils.o
  CC      kernel/futex/waitwake.o
  CC [M]  sound/core/pcm_misc.o
  CC      security/selinux/ss/policydb.o
  CC      drivers/pnp/pnpacpi/core.o
  CC      security/selinux/ss/services.o
  CC      drivers/pnp/core.o
  CC      drivers/pnp/card.o
  CC      kernel/module/kallsyms.o
  CC      fs/ext4/fsync.o
  CC      kernel/irq/matrix.o
  CC      fs/fat/dir.o
  CC      lib/crypto/mpi/mpi-pow.o
  CC      lib/crypto/mpi/mpiutil.o
  CC      arch/x86/events/intel/uncore_snb.o
  CC      lib/clz_tab.o
  CC      fs/nfs/client.o
  CC      kernel/trace/trace_seq.o
  CC      security/selinux/ss/conditional.o
  AR      lib/zstd/built-in.a
  CC      drivers/acpi/acpica/dswexec.o
  CC      fs/nfs/dir.o
  CC      fs/proc/proc_tty.o
  CC      fs/nfs/file.o
  CC      lib/cmdline.o
  CC      crypto/acompress.o
  CC      drivers/pnp/driver.o
  CC      drivers/pnp/resource.o
  CC      fs/ext4/hash.o
  CC      drivers/pci/mmap.o
  CC      kernel/panic.o
  CC      drivers/pnp/pnpacpi/rsparser.o
  CC      lib/cpumask.o
  AR      kernel/futex/built-in.a
  CC      fs/ext4/ialloc.o
  CC      kernel/time/posix-timers.o
  AR      kernel/bpf/built-in.a
  CC      fs/fat/fatent.o
  CC [M]  sound/core/pcm_memory.o
  AR      fs/netfs/built-in.a
  CC      io_uring/kbuf.o
  CC      fs/fat/file.o
  CC      kernel/trace/trace_stat.o
  CC      mm/backing-dev.o
  AR      fs/hugetlbfs/built-in.a
  CC      arch/x86/kernel/irq_32.o
  CC      drivers/acpi/acpica/dswload.o
  CC      drivers/pnp/manager.o
  CC      drivers/acpi/acpica/dswload2.o
  CC      kernel/module/procfs.o
  CC      fs/ext4/indirect.o
  AR      lib/crypto/mpi/built-in.a
  CC      io_uring/rsrc.o
  CC      lib/crypto/arc4.o
  CC      fs/proc/cmdline.o
  CC      fs/fat/inode.o
  CC      fs/isofs/dir.o
  CC      arch/x86/events/intel/uncore_snbep.o
  CC      fs/ext4/inline.o
  CC      drivers/pci/devres.o
  CC      net/core/dev_addr_lists.o
  CC      block/blk-timeout.o
  CC      block/blk-lib.o
  CC      drivers/pci/proc.o
  CC      kernel/cgroup/rstat.o
  CC      crypto/scompress.o
  CC      drivers/acpi/acpica/dswscope.o
  CC      lib/crypto/gf128mul.o
  CC      crypto/algboss.o
  CC      kernel/time/posix-cpu-timers.o
  AR      kernel/irq/built-in.a
  CC [M]  sound/core/memalloc.o
  CC      crypto/testmgr.o
  CC      kernel/time/posix-clock.o
  CC      drivers/pnp/support.o
  CC      kernel/module/sysfs.o
  CC      fs/proc/consoles.o
  AR      drivers/pnp/pnpacpi/built-in.a
  CC      fs/ext4/inode.o
  CC      arch/x86/events/intel/uncore_discovery.o
  CC      arch/x86/kernel/dumpstack_32.o
  CC      arch/x86/kernel/time.o
  CC      fs/ext4/ioctl.o
  CC      kernel/trace/trace_printk.o
  CC      net/sched/act_api.o
  CC      drivers/acpi/acpica/dswstate.o
  CC      fs/fat/misc.o
  CC      fs/isofs/util.o
  CC      drivers/acpi/acpica/evevent.o
  CC      fs/proc/cpuinfo.o
  CC      net/core/dst.o
  CC      lib/crypto/blake2s.o
  CC      kernel/trace/pid_list.o
  CC      drivers/pci/pci-sysfs.o
  CC      drivers/pnp/interface.o
  CC      lib/crypto/blake2s-generic.o
  CC      mm/mm_init.o
  CC      arch/x86/kernel/ioport.o
  CC      fs/ext4/mballoc.o
  CC      block/blk-mq.o
  CC      fs/proc/devices.o
  CC      crypto/cmac.o
  CC      arch/x86/kernel/dumpstack.o
  CC      kernel/cgroup/namespace.o
  CC      drivers/pci/slot.o
  CC      mm/percpu.o
  CC      drivers/pnp/quirks.o
  CC      fs/ext4/migrate.o
  CC      drivers/acpi/acpica/evgpe.o
  AR      kernel/module/built-in.a
  CC      crypto/hmac.o
  CC      kernel/time/itimer.o
  CC      kernel/time/clockevents.o
  CC      drivers/pci/pci-acpi.o
  CC [M]  sound/core/pcm_timer.o
  CC      kernel/time/tick-common.o
  AR      sound/usb/misc/built-in.a
  CC      io_uring/rw.o
  AR      sound/usb/usx2y/built-in.a
  AR      sound/usb/caiaq/built-in.a
  CC      fs/fat/nfs.o
  AR      sound/usb/6fire/built-in.a
  CC      fs/isofs/rock.o
  CC      drivers/acpi/acpica/evgpeblk.o
  AR      sound/usb/hiface/built-in.a
  AR      sound/usb/bcd2000/built-in.a
  CC      kernel/trace/trace_sched_switch.o
  AR      sound/usb/built-in.a
  CC      kernel/trace/trace_nop.o
  CC      security/selinux/ss/mls.o
  CC      lib/crypto/sha1.o
  AR      sound/firewire/built-in.a
  CC      fs/isofs/export.o
  CC      fs/fat/namei_vfat.o
  CC      fs/ext4/mmp.o
  CC      lib/crypto/sha256.o
  CC      fs/proc/interrupts.o
  CC      fs/isofs/joliet.o
  CC      kernel/cgroup/cgroup-v1.o
  CC      kernel/cgroup/freezer.o
  CC      lib/ctype.o
  CC      fs/exportfs/expfs.o
  CC      lib/dec_and_lock.o
  CC      kernel/trace/blktrace.o
  CC      kernel/cgroup/legacy_freezer.o
  CC      fs/ext4/move_extent.o
  CC      drivers/acpi/acpica/evgpeinit.o
  CC      drivers/acpi/acpica/evgpeutil.o
  CC      fs/ext4/namei.o
  CC      drivers/acpi/acpica/evglock.o
  CC      kernel/cgroup/pids.o
  AR      drivers/amba/built-in.a
  CC      crypto/crypto_null.o
  CC      mm/slab_common.o
  CC      drivers/pnp/system.o
  LD [M]  sound/core/snd-hwdep.o
  LD [M]  sound/core/snd-pcm.o
  AR      drivers/clk/actions/built-in.a
  AR      sound/core/built-in.a
  AR      drivers/clk/analogbits/built-in.a
  AR      sound/sparc/built-in.a
  AR      drivers/clk/bcm/built-in.a
  CC      fs/proc/loadavg.o
  CC      arch/x86/events/intel/cstate.o
  AR      sound/spi/built-in.a
  AR      drivers/clk/imgtec/built-in.a
  AR      sound/parisc/built-in.a
  AR      drivers/clk/imx/built-in.a
  AR      drivers/clk/ingenic/built-in.a
  AR      sound/pcmcia/vx/built-in.a
  AR      drivers/clk/mediatek/built-in.a
  AR      sound/pcmcia/pdaudiocf/built-in.a
  AR      drivers/clk/microchip/built-in.a
  AR      sound/pcmcia/built-in.a
  CC      drivers/pci/iomap.o
  CC      kernel/cgroup/rdma.o
  AR      lib/crypto/built-in.a
  CC      drivers/pci/quirks.o
  AR      drivers/clk/mstar/built-in.a
  AR      sound/mips/built-in.a
  CC      kernel/cpu.o
  CC      lib/decompress.o
  AR      drivers/clk/mvebu/built-in.a
  CC      lib/decompress_bunzip2.o
  AR      sound/soc/built-in.a
  AR      drivers/clk/ralink/built-in.a
  AR      sound/atmel/built-in.a
  AR      drivers/clk/renesas/built-in.a
  AR      sound/hda/built-in.a
  CC      fs/ext4/page-io.o
  CC      fs/isofs/compress.o
  CC [M]  sound/hda/hda_bus_type.o
  AR      drivers/clk/socfpga/built-in.a
  AR      drivers/clk/sprd/built-in.a
  CC      fs/ext4/readpage.o
  CC      fs/lockd/clntlock.o
  CC      mm/compaction.o
  AR      drivers/clk/starfive/built-in.a
  CC      fs/ext4/resize.o
  CC      arch/x86/kernel/nmi.o
  AR      drivers/clk/sunxi-ng/built-in.a
  CC      arch/x86/kernel/ldt.o
  CC      fs/fat/namei_msdos.o
  AR      drivers/clk/ti/built-in.a
  CC      drivers/acpi/acpica/evhandler.o
  AR      drivers/clk/versatile/built-in.a
  CC      fs/ext4/super.o
  AR      drivers/clk/xilinx/built-in.a
  AR      drivers/clk/built-in.a
  CC      fs/proc/meminfo.o
  CC      kernel/time/tick-broadcast.o
  CC      drivers/pci/pci-label.o
  AR      drivers/pnp/built-in.a
  AR      fs/exportfs/built-in.a
  CC      net/sched/sch_fifo.o
  CC      kernel/time/tick-broadcast-hrtimer.o
  CC      drivers/dma/dw/core.o
  CC      io_uring/opdef.o
  CC      lib/decompress_inflate.o
  CC      lib/decompress_unlz4.o
  CC      crypto/md5.o
  CC      fs/nfs/getroot.o
  CC      drivers/dma/dw/dw.o
  CC      drivers/dma/hsu/hsu.o
  AR      drivers/dma/idxd/built-in.a
  CC      security/selinux/ss/context.o
  AR      sound/x86/built-in.a
  AR      drivers/dma/mediatek/built-in.a
  CC      drivers/acpi/acpica/evmisc.o
  CC      kernel/cgroup/cpuset.o
  AR      drivers/dma/qcom/built-in.a
  CC      kernel/trace/trace_events.o
  CC      arch/x86/kernel/setup.o
  CC      drivers/dma/dw/idma32.o
  AR      drivers/acpi/pmic/built-in.a
  CC      drivers/acpi/dptf/int340x_thermal.o
  CC [M]  sound/hda/hdac_bus.o
  CC [M]  sound/hda/hdac_device.o
  CC      drivers/acpi/tables.o
  AR      kernel/events/built-in.a
  CC      fs/nls/nls_base.o
  AR      fs/unicode/built-in.a
  CC      fs/nls/nls_cp437.o
  CC      kernel/exit.o
  AR      arch/x86/events/intel/built-in.a
  AR      arch/x86/events/built-in.a
  CC      fs/nls/nls_ascii.o
  CC      kernel/time/tick-oneshot.o
  CC      kernel/cgroup/misc.o
  CC      lib/decompress_unlzma.o
  CC      fs/proc/stat.o
  AR      fs/isofs/built-in.a
  CC      crypto/sha256_generic.o
  CC      kernel/trace/trace_export.o
  CC      crypto/sha512_generic.o
  CC      arch/x86/kernel/cpu/topology.o
  CC      drivers/acpi/acpica/evregion.o
  AR      fs/fat/built-in.a
  CC      drivers/acpi/acpica/evrgnini.o
  CC      arch/x86/kernel/x86_init.o
  CC      fs/nfs/inode.o
  CC      drivers/acpi/acpica/evsci.o
  CC      fs/ext4/symlink.o
  CC      crypto/sha3_generic.o
  CC      drivers/pci/vgaarb.o
  AR      drivers/dma/ti/built-in.a
  AR      drivers/acpi/dptf/built-in.a
  AR      drivers/dma/xilinx/built-in.a
  CC      drivers/dma/dmaengine.o
  CC      drivers/acpi/blacklist.o
  CC      fs/nls/nls_iso8859-1.o
  CC      io_uring/notif.o
  CC      arch/x86/kernel/i8259.o
  CC      kernel/time/tick-sched.o
  CC      net/sched/cls_cgroup.o
  CC      crypto/ecb.o
  CC      fs/lockd/clntproc.o
  CC      arch/x86/kernel/irqinit.o
  AR      drivers/dma/hsu/built-in.a
  CC      arch/x86/kernel/jump_label.o
  CC      arch/x86/kernel/cpu/proc.o
  CC      kernel/trace/trace_event_perf.o
  CC      drivers/dma/dw/acpi.o
  CC      fs/ext4/sysfs.o
  CC      security/selinux/netlabel.o
  CC      drivers/acpi/acpica/evxface.o
  CC      drivers/acpi/acpica/evxfevnt.o
  CC      mm/show_mem.o
  CC      drivers/acpi/acpica/evxfgpe.o
  CC      arch/x86/kernel/cpu/feat_ctl.o
  CC      arch/x86/kernel/irq_work.o
  CC      fs/lockd/clntxdr.o
  CC      fs/proc/uptime.o
  CC      fs/nls/nls_utf8.o
  CC      crypto/cbc.o
  CC      lib/decompress_unlzo.o
  CC      crypto/ctr.o
  CC [M]  sound/hda/hdac_sysfs.o
  CC      kernel/trace/trace_events_filter.o
  CC      fs/lockd/host.o
  CC      arch/x86/kernel/probe_roms.o
  CC      crypto/gcm.o
  CC      lib/decompress_unxz.o
  CC      arch/x86/kernel/sys_ia32.o
  CC      fs/proc/util.o
  CC      kernel/cgroup/debug.o
  CC      fs/ext4/xattr.o
  CC      fs/lockd/svc.o
  AR      fs/nls/built-in.a
  CC      net/core/netevent.o
  CC      net/core/neighbour.o
  CC      fs/autofs/init.o
  CC      drivers/acpi/acpica/evxfregn.o
  CC      fs/autofs/inode.o
  CC      fs/autofs/root.o
  CC      kernel/softirq.o
  CC      arch/x86/kernel/cpu/intel.o
  CC      lib/decompress_unzstd.o
  AR      drivers/dma/dw/built-in.a
  CC      io_uring/waitid.o
  CC      drivers/acpi/acpica/exconcat.o
  CC      block/blk-mq-tag.o
  CC      drivers/acpi/acpica/exconfig.o
  CC      arch/x86/kernel/ksysfs.o
  CC [M]  sound/hda/hdac_regmap.o
  AR      drivers/pci/built-in.a
  CC [M]  sound/hda/hdac_controller.o
  CC      arch/x86/kernel/bootflag.o
  CC      fs/proc/version.o
  CC      arch/x86/kernel/cpu/intel_pconfig.o
  CC      block/blk-stat.o
  CC      kernel/resource.o
  CC      net/sched/ematch.o
  CC      drivers/dma/virt-dma.o
  CC      drivers/dma/acpi-dma.o
  AR      drivers/soc/apple/built-in.a
  CC      kernel/time/timer_migration.o
  AR      drivers/soc/aspeed/built-in.a
  AR      drivers/soc/bcm/built-in.a
  CC      fs/lockd/svclock.o
  AR      drivers/soc/fsl/built-in.a
  CC      drivers/virtio/virtio.o
  AR      drivers/soc/fujitsu/built-in.a
  AR      drivers/soc/hisilicon/built-in.a
  CC      arch/x86/kernel/e820.o
  AR      drivers/soc/imx/built-in.a
  CC      arch/x86/kernel/pci-dma.o
  AR      drivers/soc/ixp4xx/built-in.a
  AR      drivers/soc/loongson/built-in.a
  CC      io_uring/register.o
  AR      drivers/soc/mediatek/built-in.a
  CC      fs/ext4/xattr_hurd.o
  AR      drivers/soc/microchip/built-in.a
  CC      drivers/acpi/acpica/exconvrt.o
  AR      drivers/soc/nuvoton/built-in.a
  CC      lib/dump_stack.o
  AR      drivers/soc/pxa/built-in.a
  CC      lib/earlycpio.o
  AR      drivers/soc/amlogic/built-in.a
  CC      block/blk-mq-sysfs.o
  AR      drivers/soc/qcom/built-in.a
  CC      net/netlink/af_netlink.o
  CC      fs/lockd/svcshare.o
  AR      drivers/soc/renesas/built-in.a
  CC      net/netlink/genetlink.o
  AR      drivers/soc/rockchip/built-in.a
  CC      net/netlink/policy.o
  AR      drivers/soc/sunxi/built-in.a
  AR      kernel/cgroup/built-in.a
  AR      security/selinux/built-in.a
  CC      fs/proc/softirqs.o
  AR      drivers/soc/ti/built-in.a
  AR      drivers/soc/xilinx/built-in.a
  AR      security/built-in.a
  CC      arch/x86/kernel/quirks.o
  AR      drivers/soc/built-in.a
  CC      io_uring/truncate.o
  CC      crypto/ccm.o
  CC      kernel/time/vsyscall.o
  CC      io_uring/io-wq.o
  CC      kernel/time/timekeeping_debug.o
  CC      kernel/sysctl.o
  AR      net/bpf/built-in.a
  CC      net/ethtool/ioctl.o
  CC      kernel/capability.o
  CC      fs/autofs/symlink.o
  CC      crypto/aes_generic.o
  CC      mm/shmem_quota.o
  CC      net/ethtool/common.o
  CC      fs/lockd/svcproc.o
  CC [M]  sound/hda/hdac_stream.o
  CC      kernel/time/namespace.o
  CC      drivers/acpi/acpica/excreate.o
  CC      crypto/crc32c_generic.o
  CC      crypto/authenc.o
  CC      net/ethtool/netlink.o
  AR      drivers/dma/built-in.a
  CC      arch/x86/kernel/topology.o
  CC      fs/proc/namespaces.o
  CC      arch/x86/kernel/cpu/tsx.o
  CC      drivers/virtio/virtio_ring.o
  CC      kernel/trace/trace_events_trigger.o
  CC      drivers/virtio/virtio_anchor.o
  CC      fs/lockd/svcsubs.o
  CC      lib/extable.o
  CC      arch/x86/kernel/cpu/intel_epb.o
  CC      fs/9p/vfs_super.o
  CC      fs/proc/self.o
  CC      fs/9p/vfs_inode.o
  CC      fs/proc/thread_self.o
  AR      net/sched/built-in.a
  CC      block/blk-mq-cpumap.o
  CC      kernel/ptrace.o
  CC      drivers/acpi/acpica/exdebug.o
  CC      fs/autofs/waitq.o
  AR      fs/hostfs/built-in.a
  CC      fs/lockd/mon.o
  CC      fs/debugfs/inode.o
  CC      fs/tracefs/inode.o
  CC      fs/debugfs/file.o
  CC      arch/x86/kernel/kdebugfs.o
  CC      net/netfilter/core.o
  CC      mm/interval_tree.o
  CC      drivers/tty/vt/vt_ioctl.o
  CC      mm/list_lru.o
  CC      kernel/user.o
  CC      lib/flex_proportions.o
  CC      lib/idr.o
  CC      arch/x86/kernel/cpu/amd.o
  CC      net/ethtool/bitset.o
  CC      drivers/tty/hvc/hvc_console.o
  CC      drivers/acpi/acpica/exdump.o
  CC      drivers/acpi/acpica/exfield.o
  CC      net/ethtool/strset.o
  CC      arch/x86/kernel/cpu/hygon.o
  CC      arch/x86/kernel/cpu/centaur.o
  CC      mm/workingset.o
  CC      fs/open.o
  CC [M]  fs/efivarfs/inode.o
  CC      fs/nfs/super.o
  CC [M]  fs/efivarfs/file.o
  CC      fs/read_write.o
  CC      fs/proc/proc_sysctl.o
  CC      net/core/rtnetlink.o
  CC [M]  sound/hda/array.o
  CC      lib/irq_regs.o
  AR      kernel/time/built-in.a
  CC      crypto/authencesn.o
  CC      kernel/signal.o
  CC      kernel/sys.o
  CC      drivers/acpi/acpica/exfldio.o
  CC      io_uring/futex.o
  CC      block/blk-mq-sched.o
  CC      kernel/umh.o
  CC      fs/file_table.o
  CC      fs/9p/vfs_inode_dotl.o
  CC      drivers/tty/serial/serial_core.o
  CC      drivers/tty/serial/8250/8250_core.o
  CC      drivers/tty/serial/serial_base_bus.o
  CC      drivers/tty/serial/8250/8250_pnp.o
  CC      lib/is_single_threaded.o
  CC      fs/autofs/expire.o
  CC      drivers/tty/serial/serial_ctrl.o
  CC      kernel/trace/trace_eprobe.o
  CC      drivers/tty/serial/serial_port.o
  CC      arch/x86/kernel/cpu/transmeta.o
  CC      io_uring/napi.o
  CC      fs/tracefs/event_inode.o
  AR      drivers/tty/ipwireless/built-in.a
  CC      fs/9p/vfs_addr.o
  CC      lib/klist.o
  CC      fs/lockd/trace.o
  CC      fs/lockd/xdr.o
  CC      mm/debug.o
  CC [M]  fs/efivarfs/super.o
  CC      fs/proc/proc_net.o
  CC      fs/autofs/dev-ioctl.o
  AR      drivers/tty/hvc/built-in.a
  CC      drivers/virtio/virtio_pci_modern_dev.o
  CC      drivers/tty/serial/8250/8250_port.o
  AR      fs/debugfs/built-in.a
  CC      drivers/tty/vt/vc_screen.o
  CC      drivers/tty/tty_io.o
  CC      drivers/acpi/acpica/exmisc.o
  CC      drivers/tty/n_tty.o
  CC      arch/x86/kernel/cpu/zhaoxin.o
  CC      drivers/tty/vt/selection.o
  CC      net/core/utils.o
  CC [M]  sound/hda/hdmi_chmap.o
  CC      lib/kobject.o
  CC      net/ethtool/linkinfo.o
  CC      kernel/workqueue.o
  CC      fs/9p/vfs_file.o
  CC      drivers/acpi/acpica/exmutex.o
  CC [M]  sound/hda/trace.o
  CC      net/ethtool/linkmodes.o
  CC      net/netfilter/nf_log.o
  CC      crypto/lzo.o
  CC      kernel/pid.o
  CC      drivers/tty/serial/earlycon.o
  AR      net/netlink/built-in.a
  CC      net/core/link_watch.o
  CC      kernel/task_work.o
  CC      arch/x86/kernel/cpu/vortex.o
  CC      net/ethtool/rss.o
  AR      sound/xen/built-in.a
  CC      drivers/tty/vt/keyboard.o
  CC      lib/kobject_uevent.o
  CC      fs/proc/kcore.o
  CC      net/ethtool/linkstate.o
  CC      block/ioctl.o
  CC      kernel/extable.o
  CC      arch/x86/kernel/alternative.o
  CC      net/netfilter/nf_queue.o
  CC      mm/gup.o
  CC [M]  fs/efivarfs/vars.o
  CC      fs/nfs/io.o
  AR      fs/tracefs/built-in.a
  CC      arch/x86/kernel/i8253.o
  CC      net/netfilter/nf_sockopt.o
  CC      drivers/acpi/acpica/exnames.o
  CC      lib/logic_pio.o
  CC      kernel/params.o
  CC      drivers/virtio/virtio_pci_legacy_dev.o
  CC      arch/x86/kernel/cpu/perfctr-watchdog.o
  AR      fs/autofs/built-in.a
  CC      mm/mmap_lock.o
  CC      fs/super.o
  CC      net/netfilter/utils.o
  CC      drivers/acpi/acpica/exoparg1.o
  CC      fs/lockd/clnt4xdr.o
  CC      kernel/trace/trace_kprobe.o
  CC      mm/highmem.o
  CC      crypto/lzo-rle.o
  CC      net/ethtool/debug.o
  CC      net/core/filter.o
  CC      fs/9p/vfs_dir.o
  CC      fs/9p/vfs_dentry.o
  CC      net/netfilter/nfnetlink.o
  CC      net/ethtool/wol.o
  CC      arch/x86/kernel/cpu/vmware.o
  CC      crypto/rng.o
  CC [M]  sound/hda/hdac_component.o
  AR      io_uring/built-in.a
  CC [M]  sound/hda/hdac_i915.o
  CC      drivers/acpi/acpica/exoparg2.o
  CC      net/core/sock_diag.o
  CC      net/ethtool/features.o
  CC [M]  sound/hda/intel-dsp-config.o
  CC      lib/maple_tree.o
  CC      fs/proc/vmcore.o
  CC      fs/char_dev.o
  CC      lib/memcat_p.o
  CC      fs/stat.o
  CC      drivers/virtio/virtio_pci_modern.o
  LD [M]  fs/efivarfs/efivarfs.o
  CC      drivers/tty/tty_ioctl.o
  CC      net/netfilter/nfnetlink_log.o
  CC      crypto/drbg.o
  CC      arch/x86/kernel/hw_breakpoint.o
  CC      block/genhd.o
  CC      arch/x86/kernel/cpu/hypervisor.o
  CC      crypto/jitterentropy.o
  CC      drivers/tty/serial/8250/8250_dma.o
  CC      block/ioprio.o
  CC      kernel/kthread.o
  CC      crypto/jitterentropy-kcapi.o
  CC      drivers/tty/tty_ldisc.o
  CC      net/netfilter/nf_conntrack_core.o
  CC      arch/x86/kernel/cpu/mshyperv.o
  CC      arch/x86/kernel/tsc.o
  CC      fs/nfs/direct.o
  CC      arch/x86/kernel/tsc_msr.o
  CC      mm/memory.o
  CC      fs/9p/v9fs.o
  CC      drivers/acpi/acpica/exoparg3.o
  CC      drivers/tty/tty_buffer.o
  CC      mm/mincore.o
  CC      fs/lockd/xdr4.o
  CC      net/ethtool/privflags.o
  CC      drivers/tty/vt/vt.o
  CC      drivers/char/hw_random/core.o
  AR      drivers/iommu/amd/built-in.a
  AR      drivers/gpu/host1x/built-in.a
  CC      drivers/connector/cn_queue.o
  AR      drivers/iommu/intel/built-in.a
  CC      mm/mlock.o
  CC      mm/mmap.o
  AR      drivers/iommu/arm/arm-smmu/built-in.a
  AR      drivers/iommu/arm/arm-smmu-v3/built-in.a
  CC      fs/lockd/svc4proc.o
  AR      drivers/iommu/arm/built-in.a
  COPY    drivers/tty/vt/defkeymap.c
  CC      drivers/tty/vt/consolemap.o
  AR      drivers/iommu/iommufd/built-in.a
  CC      drivers/iommu/iommu.o
  CC [M]  sound/hda/intel-nhlt.o
  HOSTCC  drivers/tty/vt/conmakehash
  CC      drivers/char/hw_random/intel-rng.o
  CC      block/badblocks.o
  AR      drivers/gpu/drm/tests/built-in.a
  CC      arch/x86/kernel/io_delay.o
  CC      drivers/acpi/acpica/exoparg6.o
  AR      drivers/gpu/drm/arm/built-in.a
  CC      drivers/gpu/drm/display/drm_display_helper_mod.o
  CC      drivers/gpu/drm/ttm/ttm_tt.o
  CC      drivers/virtio/virtio_pci_common.o
  CC      drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
  CC      net/ethtool/rings.o
  CC      drivers/tty/serial/8250/8250_dwlib.o
  AR      drivers/gpu/vga/built-in.a
  CC      drivers/tty/vt/defkeymap.o
  CC      crypto/ghash-generic.o
  CC      crypto/hash_info.o
  CC      fs/proc/kmsg.o
  CC      block/blk-rq-qos.o
  CC      net/netfilter/nf_conntrack_standalone.o
  CC      drivers/gpu/drm/display/drm_dp_helper.o
  CC      fs/proc/page.o
  CC      drivers/iommu/iommu-traces.o
  CC      fs/9p/fid.o
  CC      fs/9p/xattr.o
  CC      net/core/dev_ioctl.o
  CONMK   drivers/tty/vt/consolemap_deftbl.c
  CC [M]  sound/hda/intel-sdw-acpi.o
  CC      kernel/trace/error_report-traces.o
  CC      drivers/acpi/acpica/exprep.o
  CC      fs/nfs/pagelist.o
  CC      drivers/gpu/drm/i915/i915_config.o
  CC      drivers/tty/tty_port.o
  CC      block/disk-events.o
  CC      arch/x86/kernel/cpu/debugfs.o
  CC      arch/x86/kernel/rtc.o
  CC      lib/nmi_backtrace.o
  CC      drivers/char/hw_random/amd-rng.o
  CC      crypto/rsapubkey.asn1.o
  AR      drivers/gpu/drm/renesas/rcar-du/built-in.a
  CC      crypto/rsaprivkey.asn1.o
  CC      arch/x86/kernel/resource.o
  AR      drivers/gpu/drm/renesas/rz-du/built-in.a
  AS      arch/x86/kernel/irqflags.o
  AR      drivers/gpu/drm/renesas/built-in.a
  AR      drivers/gpu/drm/omapdrm/built-in.a
  AR      crypto/built-in.a
  CC      arch/x86/kernel/static_call.o
  AR      drivers/gpu/drm/tilcdc/built-in.a
  CC      arch/x86/kernel/process.o
  CC      drivers/gpu/drm/i915/i915_driver.o
  CC      arch/x86/kernel/ptrace.o
  CC      drivers/gpu/drm/virtio/virtgpu_drv.o
  AR      drivers/gpu/drm/imx/built-in.a
  AR      drivers/gpu/drm/i2c/built-in.a
  CC      fs/nfs/read.o
  AR      drivers/gpu/drm/panel/built-in.a
  CC      drivers/connector/connector.o
  CC      drivers/char/hw_random/geode-rng.o
  CC      drivers/acpi/acpica/exregion.o
  CC      drivers/iommu/iommu-sysfs.o
  CC      arch/x86/kernel/tls.o
  CC      net/ipv4/netfilter/nf_defrag_ipv4.o
  CC      drivers/tty/serial/8250/8250_pcilib.o
  CC      net/ipv4/route.o
  LD [M]  sound/hda/snd-hda-core.o
  LD [M]  sound/hda/snd-intel-dspcfg.o
  CC      drivers/gpu/drm/ttm/ttm_bo.o
  LD [M]  sound/hda/snd-intel-sdw-acpi.o
  CC      drivers/tty/serial/8250/8250_early.o
  CC      drivers/virtio/virtio_pci_legacy.o
  AR      sound/virtio/built-in.a
  CC      sound/sound_core.o
  CC      fs/exec.o
  CC      fs/lockd/procfs.o
  CC      drivers/virtio/virtio_pci_admin_legacy_io.o
  CC      net/ipv4/netfilter/nf_reject_ipv4.o
  CC      kernel/trace/power-traces.o
  CC      arch/x86/kernel/cpu/capflags.o
  AR      fs/9p/built-in.a
  AR      fs/proc/built-in.a
  CC      arch/x86/kernel/step.o
  CC      net/xfrm/xfrm_policy.o
  CC      fs/pipe.o
  AR      arch/x86/kernel/cpu/built-in.a
  CC      net/xfrm/xfrm_state.o
  CC      net/xfrm/xfrm_hash.o
  CC      net/ethtool/channels.o
  CC      net/ipv4/inetpeer.o
  CC      kernel/sys_ni.o
  CC      drivers/acpi/acpica/exresnte.o
  CC      net/ipv4/netfilter/ip_tables.o
  CC      lib/objpool.o
  CC      block/blk-ia-ranges.o
  CC      kernel/trace/rpm-traces.o
  CC      sound/last.o
  CC      drivers/tty/tty_mutex.o
  CC      drivers/base/power/sysfs.o
  CC      drivers/char/hw_random/via-rng.o
  CC      drivers/base/power/generic_ops.o
  CC      drivers/gpu/drm/virtio/virtgpu_kms.o
  CC      kernel/nsproxy.o
  CC      drivers/tty/serial/8250/8250_exar.o
  CC      lib/plist.o
  CC      drivers/acpi/acpica/exresolv.o
  CC      drivers/iommu/dma-iommu.o
  CC      net/netfilter/nf_conntrack_expect.o
  CC      fs/ext4/xattr_trusted.o
  CC      net/ipv4/protocol.o
  AR      fs/lockd/built-in.a
  CC      fs/ext4/xattr_user.o
  CC      net/unix/af_unix.o
  CC      arch/x86/kernel/i8237.o
  CC      fs/namei.o
  CC      drivers/virtio/virtio_input.o
  CC      drivers/iommu/iova.o
  CC      lib/radix-tree.o
  CC      net/unix/garbage.o
  CC      net/unix/sysctl_net_unix.o
  CC      drivers/connector/cn_proc.o
  AR      sound/built-in.a
  AR      drivers/char/hw_random/built-in.a
  CC      drivers/base/power/common.o
  CC      drivers/char/agp/backend.o
  CC      drivers/gpu/drm/ttm/ttm_bo_util.o
  CC      net/core/tso.o
  CC      drivers/char/agp/generic.o
  CC      drivers/base/power/qos.o
  CC      net/ipv4/netfilter/iptable_filter.o
  CC      drivers/char/agp/isoch.o
  CC      drivers/tty/vt/consolemap_deftbl.o
  CC      drivers/acpi/acpica/exresop.o
  AR      drivers/tty/vt/built-in.a
  CC      drivers/base/power/runtime.o
  CC      drivers/tty/tty_ldsem.o
  CC      drivers/gpu/drm/display/drm_dp_mst_topology.o
  CC      block/early-lookup.o
  CC      mm/mmu_gather.o
  CC      net/ethtool/coalesce.o
  CC      drivers/gpu/drm/virtio/virtgpu_gem.o
  CC      arch/x86/kernel/stacktrace.o
  CC      drivers/virtio/virtio_dma_buf.o
  CC      drivers/gpu/drm/virtio/virtgpu_vram.o
  CC      kernel/trace/trace_dynevent.o
  CC      drivers/base/power/wakeirq.o
  CC      drivers/base/power/main.o
  CC      fs/ext4/fast_commit.o
  CC      drivers/gpu/drm/i915/i915_drm_client.o
  CC      fs/ext4/orphan.o
  CC      drivers/tty/serial/8250/8250_lpss.o
  CC      drivers/acpi/acpica/exserial.o
  CC      drivers/block/loop.o
  CC      drivers/base/power/wakeup.o
  AR      drivers/misc/eeprom/built-in.a
  CC      drivers/block/virtio_blk.o
  CC      block/bounce.o
  AR      drivers/misc/cb710/built-in.a
  CC      drivers/gpu/drm/display/drm_dsc_helper.o
  AR      drivers/misc/ti-st/built-in.a
  AR      drivers/misc/lis3lv02d/built-in.a
  AR      drivers/misc/cardreader/built-in.a
  AR      drivers/misc/built-in.a
  CC      block/bsg.o
  CC      net/ipv4/netfilter/iptable_mangle.o
  CC      net/ipv4/netfilter/ipt_REJECT.o
  CC      arch/x86/kernel/reboot.o
  CC      drivers/gpu/drm/ttm/ttm_bo_vm.o
  CC      drivers/gpu/drm/display/drm_hdcp_helper.o
  CC      drivers/gpu/drm/i915/i915_getparam.o
  CC      drivers/base/firmware_loader/builtin/main.o
  CC      drivers/base/firmware_loader/main.o
  CC      fs/ext4/acl.o
  CC      kernel/trace/trace_probe.o
  CC      drivers/acpi/acpica/exstore.o
  CC      block/blk-cgroup.o
  AR      drivers/connector/built-in.a
  CC      net/ethtool/pause.o
  AR      drivers/mfd/built-in.a
  CC      fs/nfs/symlink.o
  CC      drivers/base/power/wakeup_stats.o
  AR      drivers/virtio/built-in.a
  CC      drivers/base/power/trace.o
  CC      fs/nfs/unlink.o
  CC      drivers/tty/tty_baudrate.o
  CC      drivers/char/agp/amd64-agp.o
  CC      mm/mprotect.o
  CC      net/netfilter/nf_conntrack_helper.o
  AR      drivers/iommu/built-in.a
  CC      drivers/tty/tty_jobctrl.o
  CC      fs/fcntl.o
  CC      drivers/acpi/osi.o
  CC      drivers/gpu/drm/virtio/virtgpu_display.o
  AR      drivers/base/firmware_loader/builtin/built-in.a
  CC      drivers/acpi/osl.o
  CC      drivers/tty/serial/8250/8250_mid.o
  CC      drivers/gpu/drm/display/drm_hdmi_helper.o
  CC      drivers/base/regmap/regmap.o
  CC      drivers/gpu/drm/display/drm_scdc_helper.o
  CC      drivers/acpi/acpica/exstoren.o
  CC      net/ethtool/eee.o
  CC      drivers/tty/serial/8250/8250_pci.o
  CC      block/blk-ioprio.o
  CC      fs/ext4/xattr_security.o
  CC      block/blk-iolatency.o
  CC      drivers/gpu/drm/ttm/ttm_module.o
  CC      drivers/gpu/drm/ttm/ttm_execbuf_util.o
  CC      arch/x86/kernel/msr.o
  CC      mm/mremap.o
  CC      drivers/tty/n_null.o
  CC      drivers/base/regmap/regcache.o
  CC      kernel/trace/trace_uprobe.o
  CC      block/blk-iocost.o
  CC      net/ethtool/tsinfo.o
  CC      drivers/acpi/acpica/exstorob.o
  CC      fs/ioctl.o
  CC      drivers/gpu/drm/i915/i915_ioctl.o
  CC      drivers/char/agp/intel-agp.o
  AR      drivers/base/firmware_loader/built-in.a
  CC      drivers/acpi/acpica/exsystem.o
  CC [M]  net/ipv4/netfilter/iptable_nat.o
  CC      drivers/char/mem.o
  CC      net/xfrm/xfrm_input.o
  CC      drivers/base/regmap/regcache-rbtree.o
  CC      drivers/acpi/utils.o
  CC      drivers/gpu/drm/virtio/virtgpu_vq.o
  CC      drivers/char/agp/intel-gtt.o
  CC      drivers/gpu/drm/i915/i915_irq.o
  CC      block/mq-deadline.o
  CC      arch/x86/kernel/cpuid.o
  AR      drivers/block/built-in.a
  CC      arch/x86/kernel/early-quirks.o
  CC      drivers/acpi/reboot.o
  CC      net/xfrm/xfrm_output.o
  CC      net/xfrm/xfrm_sysctl.o
  AR      net/unix/built-in.a
  AR      drivers/base/power/built-in.a
  CC      net/xfrm/xfrm_replay.o
  CC      fs/readdir.o
  CC      fs/select.o
  CC      fs/dcache.o
  CC      drivers/gpu/drm/i915/i915_mitigations.o
  CC      drivers/acpi/acpica/extrace.o
  CC      block/kyber-iosched.o
  CC      drivers/tty/pty.o
  CC      drivers/acpi/acpica/exutils.o
  CC      lib/ratelimit.o
  CC      drivers/gpu/drm/ttm/ttm_range_manager.o
  CC      net/ipv6/af_inet6.o
  CC      net/ipv6/netfilter/ip6_tables.o
  CC      drivers/tty/tty_audit.o
  CC      net/ipv6/anycast.o
  CC      drivers/tty/serial/8250/8250_pericom.o
  CC      net/netfilter/nf_conntrack_proto.o
  CC      net/ipv6/netfilter/ip6table_filter.o
  CC      lib/rbtree.o
  CC      fs/inode.o
  CC      arch/x86/kernel/smp.o
  CC      net/xfrm/xfrm_device.o
  CC      drivers/acpi/acpica/hwacpi.o
  CC      drivers/acpi/acpica/hwesleep.o
  CC      drivers/acpi/nvs.o
  CC      fs/attr.o
  CC      drivers/gpu/drm/ttm/ttm_resource.o
  CC      drivers/tty/sysrq.o
  CC      lib/seq_buf.o
  CC      drivers/gpu/drm/i915/i915_module.o
  CC      net/ethtool/cabletest.o
  CC      mm/msync.o
  CC      mm/page_vma_mapped.o
  CC      mm/pagewalk.o
  AR      drivers/nfc/built-in.a
  AR      drivers/gpu/drm/display/built-in.a
  CC      drivers/acpi/acpica/hwgpe.o
  CC      block/blk-mq-pci.o
  AR      drivers/base/test/built-in.a
  CC      drivers/char/random.o
  AR      drivers/char/agp/built-in.a
  CC      block/blk-mq-virtio.o
  AR      net/ipv4/netfilter/built-in.a
  CC      fs/nfs/write.o
  CC      fs/nfs/namespace.o
  CC      net/ipv4/ip_input.o
  CC      drivers/char/misc.o
  AR      drivers/gpu/drm/bridge/analogix/built-in.a
  CC      drivers/char/virtio_console.o
  AR      fs/ext4/built-in.a
  AR      drivers/gpu/drm/bridge/cadence/built-in.a
  CC      drivers/acpi/acpica/hwregs.o
  CC      drivers/char/hpet.o
  CC      drivers/acpi/acpica/hwsleep.o
  CC      block/blk-mq-debugfs.o
  CC      net/xfrm/xfrm_algo.o
  AR      drivers/gpu/drm/bridge/imx/built-in.a
  CC      drivers/gpu/drm/virtio/virtgpu_fence.o
  AR      drivers/gpu/drm/bridge/synopsys/built-in.a
  CC      drivers/acpi/wakeup.o
  AR      drivers/gpu/drm/bridge/built-in.a
  AR      drivers/tty/serial/8250/built-in.a
  AR      drivers/tty/serial/built-in.a
  CC      net/xfrm/xfrm_user.o
  CC      fs/bad_inode.o
  CC      fs/file.o
  CC      lib/siphash.o
  CC      block/blk-pm.o
  CC      block/holder.o
  CC      drivers/acpi/acpica/hwvalid.o
  CC      drivers/acpi/sleep.o
  CC      drivers/acpi/acpica/hwxface.o
  CC      kernel/trace/rethook.o
  CC      drivers/char/nvram.o
  CC      drivers/gpu/drm/ttm/ttm_pool.o
  CC      fs/filesystems.o
  AR      drivers/dax/hmem/built-in.a
  CC      drivers/gpu/drm/ttm/ttm_device.o
  AR      drivers/dax/built-in.a
  CC      drivers/acpi/acpica/hwxfsleep.o
  CC      drivers/gpu/drm/ttm/ttm_sys_manager.o
  CC      drivers/gpu/drm/ttm/ttm_agp_backend.o
  CC      net/core/sock_reuseport.o
  CC      fs/namespace.o
  CC      mm/pgtable-generic.o
  CC      mm/rmap.o
  CC      fs/seq_file.o
  CC      kernel/notifier.o
  AR      drivers/tty/built-in.a
  CC      fs/xattr.o
  CC      kernel/ksysfs.o
  CC      drivers/acpi/device_sysfs.o
  CC      drivers/dma-buf/dma-buf.o
  AR      drivers/cxl/core/built-in.a
  AR      drivers/cxl/built-in.a
  CC      drivers/acpi/device_pm.o
  CC      drivers/dma-buf/dma-fence.o
  CC      arch/x86/kernel/smpboot.o
  CC      drivers/dma-buf/dma-fence-array.o
  CC      net/ipv6/netfilter/ip6table_mangle.o
  CC      drivers/acpi/acpica/hwpci.o
  CC      drivers/gpu/drm/i915/i915_params.o
  CC      net/ethtool/tunnels.o
  CC      lib/string.o
  CC      net/netfilter/nf_conntrack_proto_generic.o
  CC      drivers/acpi/proc.o
  CC      drivers/gpu/drm/virtio/virtgpu_object.o
  CC      drivers/gpu/drm/i915/i915_pci.o
  CC      drivers/base/regmap/regcache-flat.o
  CC      drivers/gpu/drm/virtio/virtgpu_debugfs.o
  CC      drivers/gpu/drm/i915/i915_scatterlist.o
  CC      drivers/base/component.o
  CC      kernel/cred.o
  CC      net/netfilter/nf_conntrack_proto_tcp.o
  CC      fs/libfs.o
  CC      fs/fs-writeback.o
  CC      lib/timerqueue.o
  CC      net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
  AR      kernel/trace/built-in.a
  CC      fs/pnode.o
  CC      fs/splice.o
  CC      drivers/acpi/acpica/nsaccess.o
  CC      fs/sync.o
  CC      fs/utimes.o
  CC      drivers/acpi/bus.o
  CC      net/netfilter/nf_conntrack_proto_udp.o
  CC      net/ipv6/ip6_output.o
  CC      mm/vmalloc.o
  CC      lib/vsprintf.o
  CC      fs/nfs/mount_clnt.o
  CC      drivers/gpu/drm/virtio/virtgpu_plane.o
  CC      fs/nfs/nfstrace.o
  AR      drivers/char/built-in.a
  CC      drivers/acpi/acpica/nsalloc.o
  CC      net/ipv4/ip_fragment.o
  AR      block/built-in.a
  CC      drivers/macintosh/mac_hid.o
  AR      drivers/gpu/drm/ttm/built-in.a
  AR      drivers/scsi/pcmcia/built-in.a
  AR      drivers/gpu/drm/hisilicon/built-in.a
  CC      drivers/scsi/scsi.o
  AR      drivers/gpu/drm/mxsfb/built-in.a
  AR      drivers/gpu/drm/tiny/built-in.a
  CC      drivers/acpi/glue.o
  CC      drivers/base/regmap/regcache-maple.o
  CC      drivers/scsi/hosts.o
  CC      fs/d_path.o
  CC      fs/stack.o
  CC      net/ipv4/ip_forward.o
  CC      drivers/base/core.o
  CC      net/ipv6/ip6_input.o
  CC      drivers/base/regmap/regmap-debugfs.o
  CC      drivers/gpu/drm/i915/i915_suspend.o
  CC      arch/x86/kernel/tsc_sync.o
  CC      arch/x86/kernel/setup_percpu.o
  CC      fs/fs_struct.o
  CC      drivers/acpi/acpica/nsarguments.o
  CC      drivers/acpi/acpica/nsconvert.o
  CC      net/ipv6/addrconf.o
  CC      lib/win_minmax.o
  CC      net/core/fib_notifier.o
  CC      arch/x86/kernel/mpparse.o
  CC      fs/statfs.o
  CC      drivers/dma-buf/dma-fence-chain.o
  CC      net/netfilter/nf_conntrack_proto_icmp.o
  CC      net/ipv6/netfilter/nf_conntrack_reasm.o
  CC      drivers/gpu/drm/i915/i915_switcheroo.o
  CC      kernel/reboot.o
  AR      drivers/macintosh/built-in.a
  CC      drivers/acpi/acpica/nsdump.o
  CC      fs/fs_pin.o
  CC      net/ethtool/fec.o
  CC      drivers/gpu/drm/virtio/virtgpu_ioctl.o
  CC      drivers/acpi/acpica/nseval.o
  CC      net/netfilter/nf_conntrack_extend.o
  CC      net/core/xdp.o
  CC      drivers/acpi/acpica/nsinit.o
  CC      drivers/acpi/acpica/nsload.o
  CC      drivers/gpu/drm/virtio/virtgpu_prime.o
  CC      drivers/dma-buf/dma-fence-unwrap.o
  CC      arch/x86/kernel/trace_clock.o
  CC      drivers/acpi/scan.o
  CC      net/netfilter/nf_conntrack_acct.o
  CC      drivers/gpu/drm/virtio/virtgpu_trace_points.o
  CC      net/packet/af_packet.o
  CC      mm/process_vm_access.o
  CC      fs/nfs/export.o
  AR      drivers/base/regmap/built-in.a
  CC      drivers/base/bus.o
  CC      drivers/base/dd.o
  CC      arch/x86/kernel/trace.o
  AR      drivers/gpu/drm/xlnx/built-in.a
  CC      drivers/acpi/acpica/nsnames.o
  CC      drivers/dma-buf/dma-resv.o
  AR      drivers/gpu/drm/gud/built-in.a
  CC      drivers/scsi/scsi_ioctl.o
  CC      drivers/scsi/scsicam.o
  AR      drivers/nvme/common/built-in.a
  AR      drivers/nvme/host/built-in.a
  AR      drivers/nvme/target/built-in.a
  AR      drivers/nvme/built-in.a
  AR      drivers/gpu/drm/solomon/built-in.a
  CC      net/ipv6/netfilter/nf_reject_ipv6.o
  CC      drivers/acpi/acpica/nsobject.o
  AR      net/xfrm/built-in.a
  CC [M]  drivers/gpu/drm/scheduler/sched_main.o
  AR      net/dsa/built-in.a
  CC [M]  drivers/gpu/drm/scheduler/sched_fence.o
  CC      arch/x86/kernel/rethook.o
  CC      net/ipv6/netfilter/ip6t_ipv6header.o
  CC      net/sunrpc/auth_gss/auth_gss.o
  CC      net/sunrpc/auth_gss/gss_generic_token.o
  CC      net/ipv6/netfilter/ip6t_REJECT.o
  AR      net/wireless/tests/built-in.a
  CC      net/wireless/core.o
  CC      net/sunrpc/auth_gss/gss_mech_switch.o
  CC      net/sunrpc/clnt.o
  CC      drivers/ata/libata-core.o
  AR      drivers/net/phy/qcom/built-in.a
  CC      drivers/net/phy/mdio-boardinfo.o
  CC      drivers/firewire/init_ohci1394_dma.o
  CC      drivers/gpu/drm/i915/i915_sysfs.o
  CC      fs/nfs/sysfs.o
  CC      arch/x86/kernel/vmcore_info_32.o
  CC      net/ipv4/ip_options.o
  CC      arch/x86/kernel/machine_kexec_32.o
  AR      drivers/net/pse-pd/built-in.a
  CC      kernel/async.o
  CC      kernel/range.o
  CC      drivers/acpi/acpica/nsparse.o
  CC      net/netfilter/nf_conntrack_seqadj.o
  CC      fs/nfs/fs_context.o
  CC      net/ethtool/eeprom.o
  CC      kernel/smpboot.o
  CC      drivers/acpi/acpica/nspredef.o
  CC      drivers/cdrom/cdrom.o
  CC      drivers/acpi/acpica/nsprepkg.o
  CC      drivers/gpu/drm/virtio/virtgpu_submit.o
  CC      drivers/acpi/acpica/nsrepair.o
  CC      mm/page_alloc.o
  CC      drivers/acpi/acpica/nsrepair2.o
  CC      fs/nsfs.o
  AR      drivers/auxdisplay/built-in.a
  CC      drivers/dma-buf/sync_file.o
  CC      fs/nfs/nfsroot.o
  CC      drivers/scsi/scsi_error.o
  CC      fs/nfs/sysctl.o
  CC      drivers/ata/libata-scsi.o
  CC      drivers/ata/libata-eh.o
  CC      net/sunrpc/auth_gss/svcauth_gss.o
  CC      mm/init-mm.o
  CC      lib/xarray.o
  CC      kernel/ucount.o
  AR      drivers/firewire/built-in.a
  CC      net/ipv6/addrlabel.o
  CC      lib/lockref.o
  CC      net/netfilter/nf_conntrack_proto_icmpv6.o
  CC      fs/fs_types.o
  CC      net/core/flow_offload.o
  CC [M]  drivers/gpu/drm/scheduler/sched_entity.o
  CC      drivers/ata/libata-transport.o
  CC      net/ethtool/stats.o
  CC      drivers/net/phy/stubs.o
  CC      net/sunrpc/auth_gss/gss_rpc_upcall.o
  AS      arch/x86/kernel/relocate_kernel_32.o
  CC      drivers/acpi/acpica/nssearch.o
  CC      arch/x86/kernel/crash_dump_32.o
  CC      net/netfilter/nf_conntrack_netlink.o
  CC      mm/memblock.o
  CC      net/sunrpc/xprt.o
  CC      drivers/gpu/drm/i915/i915_utils.o
  CC      fs/nfs/nfs2super.o
  AR      net/ipv6/netfilter/built-in.a
  CC      net/ipv6/route.o
  AR      drivers/dma-buf/built-in.a
  CC      drivers/ata/libata-trace.o
  CC      drivers/net/mdio/acpi_mdio.o
  CC      kernel/regset.o
  CC      drivers/base/syscore.o
  CC      drivers/net/mdio/fwnode_mdio.o
  AR      drivers/gpu/drm/virtio/built-in.a
  CC      drivers/ata/libata-sata.o
  CC      fs/nfs/proc.o
  CC      fs/fs_context.o
  CC      net/sunrpc/socklib.o
  CC      drivers/acpi/acpica/nsutils.o
  AR      net/mac80211/tests/built-in.a
  CC      net/mac80211/main.o
  CC      net/ethtool/phc_vclocks.o
  CC      net/mac80211/status.o
  CC      net/ipv4/ip_output.o
  CC [M]  drivers/gpu/drm/xe/xe_bb.o
  LD [M]  drivers/gpu/drm/scheduler/gpu-sched.o
  CC      net/ethtool/mm.o
  CC      net/mac80211/driver-ops.o
  CC      fs/nfs/nfs2xdr.o
  CC      arch/x86/kernel/crash.o
  CC      net/mac80211/sta_info.o
  CC      kernel/ksyms_common.o
  CC      drivers/net/phy/mdio_devres.o
  CC      drivers/acpi/acpica/nswalk.o
  CC      lib/bcd.o
  CC      drivers/ata/libata-sff.o
  CC      lib/sort.o
  CC [M]  drivers/gpu/drm/xe/xe_bo.o
  CC      drivers/gpu/drm/i915/intel_clock_gating.o
  CC      net/ipv6/ip6_fib.o
  CC      lib/parser.o
  CC      drivers/gpu/drm/drm_aperture.o
  CC      drivers/scsi/scsi_lib.o
  CC      net/core/gro.o
  CC      drivers/gpu/drm/drm_atomic.o
  CC      net/netfilter/nf_conntrack_ftp.o
  CC      net/core/netdev-genl.o
  AR      drivers/cdrom/built-in.a
  AR      drivers/net/mdio/built-in.a
  CC      net/sunrpc/auth_gss/gss_rpc_xdr.o
  CC      net/ethtool/module.o
  CC      drivers/acpi/acpica/nsxfeval.o
  CC      drivers/acpi/acpica/nsxfname.o
  CC      net/mac80211/wep.o
  CC [M]  drivers/gpu/drm/xe/xe_bo_evict.o
  CC      arch/x86/kernel/module.o
  CC      drivers/base/driver.o
  CC [M]  drivers/gpu/drm/xe/xe_debugfs.o
  CC      lib/debug_locks.o
  CC      kernel/groups.o
  CC      drivers/ata/libata-pmp.o
  CC      drivers/gpu/drm/drm_atomic_uapi.o
  CC      drivers/gpu/drm/drm_auth.o
  CC      lib/random32.o
  CC      mm/slub.o
  CC      drivers/net/phy/phy.o
  CC      net/core/netdev-genl-gen.o
  CC      fs/fs_parser.o
  AR      net/packet/built-in.a
  CC      drivers/acpi/acpica/nsxfobj.o
  CC      net/mac80211/aead_api.o
  CC      drivers/acpi/acpica/psargs.o
  CC      fs/nfs/nfs3super.o
  CC      lib/bust_spinlocks.o
  CC      mm/madvise.o
  CC      drivers/net/phy/phy-c45.o
  CC      drivers/base/class.o
  CC      lib/kasprintf.o
  CC [M]  drivers/gpu/drm/xe/xe_devcoredump.o
  CC      fs/nfs/nfs3client.o
  CC      net/core/gso.o
  CC      arch/x86/kernel/doublefault_32.o
  CC      net/ethtool/pse-pd.o
  CC      drivers/acpi/acpica/psloop.o
  CC [M]  drivers/gpu/drm/xe/xe_device.o
  CC      kernel/kcmp.o
  CC      lib/bitmap.o
  CC      net/netfilter/nf_conntrack_irc.o
  CC      arch/x86/kernel/early_printk.o
  CC      arch/x86/kernel/hpet.o
  CC      net/mac80211/wpa.o
  CC      drivers/gpu/drm/drm_blend.o
  CC      net/core/net-sysfs.o
  CC      net/ethtool/plca.o
  CC      net/sunrpc/auth_gss/trace.o
  CC      net/wireless/sysfs.o
  CC      net/sunrpc/xprtsock.o
  CC      net/netfilter/nf_conntrack_sip.o
  CC      net/core/hotdata.o
  CC      drivers/net/phy/phy-core.o
  CC      net/core/net-procfs.o
  AR      drivers/net/pcs/built-in.a
  CC      fs/nfs/nfs3proc.o
  CC      fs/nfs/nfs3xdr.o
  CC      net/netfilter/nf_nat_core.o
  CC      drivers/base/platform.o
  CC      drivers/acpi/acpica/psobject.o
  CC      net/ipv4/ip_sockglue.o
  CC      drivers/acpi/mipi-disco-img.o
  CC      drivers/gpu/drm/drm_bridge.o
  CC      drivers/acpi/resource.o
  CC      drivers/gpu/drm/drm_cache.o
  CC      fs/nfs/nfs3acl.o
  CC      net/ipv6/ipv6_sockglue.o
  CC      drivers/gpu/drm/i915/intel_device_info.o
  CC      arch/x86/kernel/amd_nb.o
  CC      net/netfilter/nf_nat_proto.o
  CC      drivers/scsi/constants.o
  CC      lib/scatterlist.o
  CC      arch/x86/kernel/kvm.o
  CC      drivers/scsi/scsi_lib_dma.o
  CC      arch/x86/kernel/kvmclock.o
  CC      kernel/freezer.o
  CC      drivers/scsi/scsi_scan.o
  CC      drivers/pcmcia/cs.o
  CC      drivers/acpi/acpica/psopcode.o
  CC      drivers/usb/common/common.o
  CC      drivers/ata/libata-acpi.o
  CC      drivers/usb/common/debug.o
  CC      mm/page_io.o
  CC      net/sunrpc/sched.o
  CC      net/ipv6/ndisc.o
  CC      drivers/net/phy/phy_device.o
  CC      net/core/netpoll.o
  AR      net/ethtool/built-in.a
  CC      net/core/fib_rules.o
  CC      net/netlabel/netlabel_user.o
  CC [M]  drivers/gpu/drm/xe/xe_device_sysfs.o
  GEN     drivers/scsi/scsi_devinfo_tbl.c
  CC      net/ipv6/udp.o
  CC      net/ipv6/udplite.o
  CC      drivers/scsi/scsi_devinfo.o
  CC      net/ipv6/raw.o
  CC      net/wireless/radiotap.o
  CC      drivers/acpi/acpica/psopinfo.o
  CC      net/rfkill/core.o
  CC      net/9p/mod.o
  CC      drivers/acpi/acpica/psparse.o
  CC      drivers/gpu/drm/drm_client.o
  CC      drivers/base/cpu.o
  CC      net/sunrpc/auth.o
  CC      fs/fsopen.o
  CC      net/rfkill/input.o
  CC      net/netlabel/netlabel_kapi.o
  CC      drivers/acpi/acpica/psscope.o
  AR      drivers/usb/common/built-in.a
  CC      drivers/usb/core/usb.o
  CC      kernel/profile.o
  CC      drivers/usb/core/hub.o
  AR      drivers/usb/phy/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_dma_buf.o
  CC      drivers/pcmcia/socket_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_drm_client.o
  CC      drivers/gpu/drm/i915/intel_memory_region.o
  CC      drivers/acpi/acpica/pstree.o
  CC      mm/swap_state.o
  CC      lib/list_sort.o
  CC      drivers/net/phy/linkmode.o
  CC [M]  drivers/gpu/drm/xe/xe_exec.o
  CC      drivers/usb/mon/mon_main.o
  CC      net/9p/client.o
  CC      drivers/usb/mon/mon_stat.o
  CC      drivers/pcmcia/cardbus.o
  CC      lib/uuid.o
  CC      net/netfilter/nf_nat_helper.o
  CC      drivers/ata/libata-pata-timings.o
  CC      arch/x86/kernel/paravirt.o
  CC      net/mac80211/scan.o
  CC      drivers/usb/core/hcd.o
  CC      drivers/scsi/scsi_sysctl.o
  CC      lib/iov_iter.o
  CC      drivers/acpi/acpica/psutils.o
  CC      drivers/acpi/acpica/pswalk.o
  CC      drivers/base/firmware.o
  CC      net/9p/error.o
  AR      net/rfkill/built-in.a
  CC      net/ipv6/icmp.o
  CC      fs/init.o
  CC      drivers/gpu/drm/drm_client_modeset.o
  CC      net/ipv4/inet_hashtables.o
  CC      net/netfilter/nf_nat_masquerade.o
  CC      net/mac80211/offchannel.o
  CC      drivers/acpi/acpica/psxface.o
  CC      drivers/usb/host/pci-quirks.o
  CC      kernel/stacktrace.o
  CC      drivers/gpu/drm/drm_color_mgmt.o
  CC      drivers/pcmcia/ds.o
  CC      drivers/acpi/acpica/rsaddr.o
  CC [M]  drivers/gpu/drm/xe/xe_execlist.o
  CC      net/sunrpc/auth_gss/gss_krb5_mech.o
  CC      drivers/acpi/acpica/rscalc.o
  CC      drivers/gpu/drm/drm_connector.o
  CC      drivers/base/init.o
  CC      drivers/usb/mon/mon_text.o
  CC      fs/kernel_read_file.o
  CC      net/netfilter/nf_nat_ftp.o
  CC [M]  drivers/gpu/drm/xe/xe_exec_queue.o
  CC      drivers/gpu/drm/drm_crtc.o
  CC      drivers/net/phy/mdio_bus.o
  CC      drivers/gpu/drm/drm_displayid.o
  CC      net/core/net-traces.o
  CC      fs/nfs/nfs4proc.o
  CC      drivers/base/map.o
  CC      arch/x86/kernel/pvclock.o
  CC      arch/x86/kernel/pcspeaker.o
  CC      drivers/gpu/drm/i915/intel_pcode.o
  CC      drivers/scsi/scsi_proc.o
  CC [M]  drivers/gpu/drm/xe/xe_force_wake.o
  CC      drivers/ata/ahci.o
  CC      net/netlabel/netlabel_domainhash.o
  CC      drivers/base/devres.o
  CC      net/wireless/util.o
  CC      net/sunrpc/auth_gss/gss_krb5_seal.o
  CC      drivers/acpi/acpica/rscreate.o
  CC      drivers/usb/core/urb.o
  CC      mm/swapfile.o
  CC      kernel/dma.o
  CC      net/ipv6/mcast.o
  CC      net/ipv6/reassembly.o
  CC      drivers/base/attribute_container.o
  CC      drivers/gpu/drm/drm_drv.o
  CC      arch/x86/kernel/check.o
  CC      net/wireless/reg.o
  CC      net/sunrpc/auth_gss/gss_krb5_unseal.o
  CC      drivers/net/phy/mdio_device.o
  CC      mm/swap_slots.o
  CC      drivers/usb/host/ehci-hcd.o
  CC      drivers/usb/class/usblp.o
  CC      fs/mnt_idmapping.o
  CC      drivers/acpi/acpica/rsdumpinfo.o
  CC      drivers/usb/mon/mon_bin.o
  CC      arch/x86/kernel/uprobes.o
  CC      drivers/scsi/scsi_debugfs.o
  CC      drivers/usb/core/message.o
  CC      drivers/pcmcia/pcmcia_resource.o
  CC      kernel/smp.o
  CC      net/9p/protocol.o
  CC      arch/x86/kernel/perf_regs.o
  CC      drivers/scsi/scsi_trace.o
  CC      arch/x86/kernel/tracepoint.o
  CC [M]  drivers/gpu/drm/xe/xe_ggtt.o
  CC      kernel/uid16.o
  CC      drivers/base/transport_class.o
  CC      net/ipv6/tcp_ipv6.o
  CC      net/ipv6/ping.o
  CC      net/9p/trans_common.o
  CC      arch/x86/kernel/itmt.o
  CC      drivers/ata/libahci.o
  CC      drivers/acpi/acpica/rsinfo.o
  CC      net/netfilter/nf_nat_irc.o
  CC      drivers/gpu/drm/i915/intel_region_ttm.o
  CC      kernel/kallsyms.o
  CC      fs/nfs/nfs4xdr.o
  CC      fs/remap_range.o
  CC      net/sunrpc/auth_gss/gss_krb5_wrap.o
  CC      fs/nfs/nfs4state.o
  CC      lib/clz_ctz.o
  CC      drivers/scsi/scsi_logging.o
  CC      net/netfilter/nf_nat_sip.o
  CC      drivers/usb/core/driver.o
  CC      lib/bsearch.o
  CC      drivers/base/topology.o
  CC      net/netlabel/netlabel_addrlist.o
  CC      drivers/net/phy/swphy.o
  CC      drivers/ata/ata_piix.o
  CC      drivers/acpi/acpica/rsio.o
  CC      kernel/acct.o
  CC      net/sunrpc/auth_null.o
  CC      net/ipv4/inet_timewait_sock.o
  CC      net/wireless/scan.o
  CC      net/wireless/nl80211.o
  CC      net/9p/trans_fd.o
  AR      drivers/usb/class/built-in.a
  CC      drivers/scsi/scsi_pm.o
  CC      drivers/usb/storage/scsiglue.o
  CC      net/ipv4/inet_connection_sock.o
  CC      arch/x86/kernel/umip.o
  CC      net/9p/trans_virtio.o
  CC      lib/find_bit.o
  CC      fs/nfs/nfs4renewd.o
  CC      drivers/acpi/acpica/rsirq.o
  AR      drivers/usb/mon/built-in.a
  CC      drivers/net/phy/fixed_phy.o
  CC [M]  drivers/gpu/drm/xe/xe_gpu_scheduler.o
  CC      kernel/vmcore_info.o
  CC      drivers/pcmcia/cistpl.o
  CC      lib/llist.o
  CC      drivers/base/container.o
  CC      net/sunrpc/auth_gss/gss_krb5_crypto.o
  CC      mm/dmapool.o
  CC      fs/nfs/nfs4super.o
  CC      lib/lwq.o
  CC      drivers/gpu/drm/i915/intel_runtime_pm.o
  CC      fs/nfs/nfs4file.o
  CC      drivers/acpi/acpica/rslist.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  CC      drivers/net/phy/realtek.o
  CC      net/sunrpc/auth_gss/gss_krb5_keys.o
  CC      drivers/usb/core/config.o
  CC      fs/nfs/delegation.o
  CC      fs/pidfs.o
  CC      kernel/elfcorehdr.o
  CC      lib/memweight.o
  CC      drivers/scsi/scsi_bsg.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc_proxy.o
  CC      drivers/base/property.o
  CC      lib/kfifo.o
  CC      lib/percpu-refcount.o
  CC      drivers/gpu/drm/drm_dumb_buffers.o
  CC      fs/nfs/nfs4idmap.o
  CC      net/mac80211/ht.o
  CC      mm/hugetlb.o
  CC      drivers/usb/storage/protocol.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc_submit.o
  CC      arch/x86/kernel/unwind_frame.o
  CC      drivers/acpi/acpica/rsmemory.o
  CC      drivers/acpi/acpica/rsmisc.o
  CC      net/netlabel/netlabel_mgmt.o
  CC      net/netfilter/x_tables.o
  CC      net/ipv4/tcp.o
  CC      drivers/base/cacheinfo.o
  CC      drivers/ata/pata_amd.o
  CC      drivers/ata/pata_oldpiix.o
  CC [M]  drivers/gpu/drm/xe/xe_gt.o
  CC      kernel/crash_reserve.o
  CC      kernel/kexec_core.o
  CC      drivers/acpi/acpica/rsserial.o
  CC      drivers/pcmcia/pcmcia_cis.o
  AR      net/9p/built-in.a
  CC      net/dns_resolver/dns_key.o
  CC      net/handshake/alert.o
  CC      net/ipv6/exthdrs.o
  CC      net/dns_resolver/dns_query.o
  CC      net/ipv6/datagram.o
  CC      net/handshake/genl.o
  AR      net/sunrpc/auth_gss/built-in.a
  CC      drivers/scsi/scsi_common.o
  CC      net/handshake/netlink.o
  CC      net/core/selftests.o
  CC      lib/rhashtable.o
  AR      arch/x86/kernel/built-in.a
  CC      net/sunrpc/auth_tls.o
  AR      arch/x86/built-in.a
  CC      drivers/scsi/scsi_transport_spi.o
  CC      drivers/acpi/acpica/rsutils.o
  AR      drivers/net/phy/built-in.a
  CC      net/handshake/request.o
  AR      drivers/net/ethernet/3com/built-in.a
  CC      drivers/usb/storage/transport.o
  CC      drivers/net/ethernet/8390/ne2k-pci.o
  AR      drivers/net/wireless/admtek/built-in.a
  AR      drivers/net/usb/built-in.a
  AR      drivers/net/wireless/ath/built-in.a
  AR      drivers/net/ethernet/adaptec/built-in.a
  CC      drivers/gpu/drm/i915/intel_sbi.o
  AR      drivers/net/wireless/atmel/built-in.a
  CC      drivers/net/mii.o
  AR      drivers/net/wireless/broadcom/built-in.a
  CC      drivers/usb/core/file.o
  AR      drivers/net/wireless/intel/built-in.a
  CC      drivers/usb/host/ehci-pci.o
  AR      drivers/net/wireless/intersil/built-in.a
  AR      drivers/net/wireless/marvell/built-in.a
  AR      drivers/net/wireless/mediatek/built-in.a
  AR      drivers/net/wireless/microchip/built-in.a
  AR      drivers/net/wireless/purelifi/built-in.a
  AR      drivers/net/wireless/quantenna/built-in.a
  AR      drivers/net/wireless/ralink/built-in.a
  CC      drivers/usb/core/buffer.o
  AR      drivers/net/wireless/realtek/built-in.a
  CC      net/ipv6/ip6_flowlabel.o
  AR      drivers/net/wireless/rsi/built-in.a
  AR      drivers/net/wireless/silabs/built-in.a
  CC      kernel/crash_core.o
  CC      drivers/base/swnode.o
  AR      drivers/net/wireless/st/built-in.a
  AR      drivers/net/wireless/ti/built-in.a
  CC      drivers/base/auxiliary.o
  CC      drivers/usb/core/sysfs.o
  AR      drivers/net/wireless/zydas/built-in.a
  CC      net/netfilter/xt_tcpudp.o
  AR      drivers/net/wireless/virtual/built-in.a
  AR      drivers/net/wireless/built-in.a
  CC      drivers/base/devtmpfs.o
  CC      drivers/base/module.o
  CC      drivers/acpi/acpica/rsxface.o
  CC      drivers/net/loopback.o
  CC      drivers/ata/pata_sch.o
  CC      net/netlabel/netlabel_unlabeled.o
  AR      net/dns_resolver/built-in.a
  CC      net/devres.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_ccs_mode.o
  CC      drivers/pcmcia/rsrc_mgr.o
  CC      net/handshake/tlshd.o
  CC      net/ipv4/tcp_input.o
  CC      net/core/ptp_classifier.o
  AR      drivers/net/ethernet/agere/built-in.a
  CC      net/sunrpc/auth_unix.o
  CC      mm/mmu_notifier.o
  CC      net/ipv6/inet6_connection_sock.o
  CC      drivers/usb/host/ohci-hcd.o
  CC      net/core/netprio_cgroup.o
  CC      drivers/net/ethernet/8390/8390.o
  CC      drivers/acpi/acpica/tbdata.o
  CC      drivers/usb/storage/usb.o
  CC      lib/base64.o
  CC      drivers/usb/host/ohci-pci.o
  CC      drivers/pcmcia/rsrc_nonstatic.o
  CC      drivers/gpu/drm/i915/intel_step.o
  CC      net/sunrpc/svc.o
  CC      drivers/usb/storage/initializers.o
  CC      lib/once.o
  CC      net/handshake/trace.o
  CC      kernel/kexec.o
  CC      net/netlabel/netlabel_cipso_v4.o
  CC      drivers/acpi/acpi_processor.o
  CC      drivers/gpu/drm/drm_edid.o
  CC      drivers/input/serio/serio.o
  CC      drivers/input/serio/i8042.o
  CC      drivers/pcmcia/yenta_socket.o
  CC      drivers/net/netconsole.o
  CC      drivers/usb/core/endpoint.o
  CC      net/ipv4/tcp_output.o
  CC      fs/nfs/callback.o
  CC      drivers/ata/pata_mpiix.o
  CC      drivers/ata/ata_generic.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_clock.o
  CC      drivers/usb/host/uhci-hcd.o
  CC      drivers/base/devcoredump.o
  CC      drivers/scsi/virtio_scsi.o
  AR      drivers/net/ethernet/alacritech/built-in.a
  CC      net/netfilter/xt_CONNSECMARK.o
  CC      drivers/acpi/acpica/tbfadt.o
  CC      drivers/acpi/processor_core.o
  CC      lib/refcount.o
  CC      drivers/net/virtio_net.o
  CC      net/wireless/mlme.o
  CC      net/netlabel/netlabel_calipso.o
  CC      mm/migrate.o
  AR      drivers/usb/misc/built-in.a
  CC      mm/page_counter.o
  CC      net/mac80211/agg-tx.o
  AR      drivers/net/ethernet/alteon/built-in.a
  CC      fs/nfs/callback_xdr.o
  CC      drivers/net/net_failover.o
  AR      drivers/net/ethernet/amazon/built-in.a
  CC      lib/rcuref.o
  CC      net/ipv6/udp_offload.o
  CC      drivers/usb/storage/sierra_ms.o
  CC      net/socket.o
  CC      net/core/netclassid_cgroup.o
  CC      drivers/acpi/acpica/tbfind.o
  CC      drivers/acpi/acpica/tbinstal.o
  CC      lib/usercopy.o
  CC      drivers/acpi/acpica/tbprint.o
  AR      drivers/net/ethernet/amd/built-in.a
  CC      drivers/usb/core/devio.o
  CC      drivers/usb/core/notify.o
  CC      drivers/gpu/drm/i915/intel_uncore.o
  AR      drivers/net/ethernet/aquantia/built-in.a
  CC      drivers/usb/early/ehci-dbgp.o
  CC      drivers/gpu/drm/i915/intel_wakeref.o
  CC      lib/errseq.o
  CC      kernel/utsname.o
  AR      drivers/net/ethernet/8390/built-in.a
  CC      drivers/base/platform-msi.o
  AR      drivers/net/ethernet/arc/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_gt_debugfs.o
  AR      drivers/net/ethernet/asix/built-in.a
  AR      drivers/net/ethernet/atheros/built-in.a
  CC      drivers/input/keyboard/atkbd.o
  AR      drivers/net/ethernet/cadence/built-in.a
  CC      drivers/net/ethernet/broadcom/bnx2.o
  CC      drivers/rtc/lib.o
  CC      lib/bucket_locks.o
  CC      drivers/i2c/algos/i2c-algo-bit.o
  CC      lib/generic-radix-tree.o
  AR      drivers/ata/built-in.a
  CC      net/ipv4/tcp_timer.o
  CC      drivers/gpu/drm/i915/vlv_sideband.o
  CC      drivers/scsi/sd.o
  CC      net/ipv4/tcp_ipv4.o
  CC      drivers/acpi/acpica/tbutils.o
  CC      drivers/gpu/drm/i915/vlv_suspend.o
  CC      drivers/usb/host/xhci.o
  CC      drivers/gpu/drm/i915/soc/intel_dram.o
  CC      drivers/input/mouse/psmouse-base.o
  CC      lib/bitmap-str.o
  CC      drivers/input/serio/serport.o
  CC      kernel/pid_namespace.o
  CC      net/netfilter/xt_NFLOG.o
  CC      drivers/base/physical_location.o
  AR      drivers/pcmcia/built-in.a
  CC      drivers/base/trace.o
  CC      drivers/usb/storage/option_ms.o
  CC      drivers/rtc/class.o
  AR      net/handshake/built-in.a
  AR      drivers/net/ethernet/brocade/built-in.a
  CC      drivers/acpi/processor_pdc.o
  CC      drivers/acpi/ec.o
  AR      drivers/net/ethernet/cavium/common/built-in.a
  AR      drivers/net/ethernet/cavium/thunder/built-in.a
  AR      net/netlabel/built-in.a
  CC      drivers/acpi/dock.o
  AR      drivers/net/ethernet/cavium/liquidio/built-in.a
  CC      drivers/acpi/pci_root.o
  AR      drivers/net/ethernet/cavium/octeon/built-in.a
  AR      drivers/net/ethernet/cavium/built-in.a
  CC      drivers/rtc/interface.o
  AR      drivers/net/ethernet/chelsio/built-in.a
  CC      drivers/usb/host/xhci-mem.o
  CC      drivers/usb/core/generic.o
  CC      drivers/acpi/acpica/tbxface.o
  AR      drivers/net/ethernet/cisco/built-in.a
  CC      net/ipv4/tcp_minisocks.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_freq.o
  CC      net/core/dst_cache.o
  AR      drivers/usb/early/built-in.a
  CC      net/ipv6/seg6.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_idle.o
  CC      net/wireless/ibss.o
  CC      fs/buffer.o
  AR      drivers/i2c/algos/built-in.a
  CC      drivers/gpu/drm/i915/soc/intel_gmch.o
  CC      fs/mpage.o
  CC      drivers/i2c/busses/i2c-i801.o
  AR      drivers/input/keyboard/built-in.a
  AR      drivers/i2c/muxes/built-in.a
  CC      lib/string_helpers.o
  CC      drivers/acpi/acpica/tbxfload.o
  AR      drivers/input/joystick/built-in.a
  CC      mm/hugetlb_cgroup.o
  AR      drivers/input/tablet/built-in.a
  CC      drivers/usb/host/xhci-ext-caps.o
  CC      drivers/acpi/pci_link.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_mcr.o
  CC      drivers/input/serio/libps2.o
  CC      fs/proc_namespace.o
  CC      drivers/usb/storage/usual-tables.o
  CC      fs/nfs/callback_proc.o
  AR      drivers/base/built-in.a
  CC      drivers/net/ethernet/broadcom/tg3.o
  CC      net/netfilter/xt_SECMARK.o
  CC      kernel/stop_machine.o
  CC      fs/nfs/nfs4namespace.o
  CC      kernel/audit.o
  CC      drivers/input/mouse/synaptics.o
  CC      drivers/acpi/acpica/tbxfroot.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_pagefault.o
  CC      drivers/gpu/drm/i915/soc/intel_pch.o
  CC      drivers/acpi/pci_irq.o
  CC      net/ipv4/tcp_cong.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sysfs.o
  CC      net/wireless/sme.o
  CC      drivers/usb/core/quirks.o
  AR      drivers/usb/storage/built-in.a
  CC      net/sunrpc/svcsock.o
  CC      net/sunrpc/svcauth.o
  CC      kernel/auditfilter.o
  CC      drivers/input/mouse/focaltech.o
  CC      net/core/gro_cells.o
  CC      net/ipv6/fib6_notifier.o
  CC      drivers/usb/host/xhci-ring.o
  AR      drivers/input/serio/built-in.a
  CC      net/ipv4/tcp_metrics.o
  CC      lib/hexdump.o
  CC      drivers/acpi/acpica/utaddress.o
  CC      drivers/gpu/drm/i915/i915_memcpy.o
  CC      drivers/input/mouse/alps.o
  CC      lib/kstrtox.o
  CC      net/sysctl_net.o
  CC      net/ipv6/rpl.o
  CC      mm/early_ioremap.o
  CC      net/ipv6/ioam6.o
  CC      drivers/gpu/drm/drm_eld.o
  CC      drivers/rtc/nvmem.o
  CC      lib/iomap.o
  CC      drivers/acpi/acpica/utalloc.o
  CC      net/ipv4/tcp_fastopen.o
  CC      net/netfilter/xt_TCPMSS.o
  CC      net/ipv4/tcp_rate.o
  CC      net/sunrpc/svcauth_unix.o
  AR      drivers/i2c/busses/built-in.a
  CC      drivers/i2c/i2c-boardinfo.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_throttle_sysfs.o
  CC      lib/iomap_copy.o
  CC      drivers/acpi/acpi_lpss.o
  CC      net/mac80211/agg-rx.o
  CC      lib/devres.o
  CC      drivers/usb/core/devices.o
  CC      net/mac80211/vht.o
  CC      drivers/scsi/sr.o
  AR      drivers/net/ethernet/cortina/built-in.a
  AR      drivers/net/ethernet/dec/tulip/built-in.a
  CC      drivers/acpi/acpica/utascii.o
  CC      lib/check_signature.o
  AR      drivers/net/ethernet/dec/built-in.a
  CC      drivers/usb/core/phy.o
  CC      drivers/acpi/acpica/utbuffer.o
  CC      drivers/input/mouse/byd.o
  CC      drivers/rtc/dev.o
  CC      drivers/gpu/drm/i915/i915_mm.o
  CC      lib/interval_tree.o
  CC      drivers/acpi/acpi_apd.o
  CC      mm/secretmem.o
  CC      drivers/usb/host/xhci-hub.o
  CC      net/core/failover.o
  CC      net/sunrpc/addr.o
  CC      net/netfilter/xt_conntrack.o
  CC      net/sunrpc/rpcb_clnt.o
  CC      drivers/acpi/acpi_platform.o
  CC      net/netfilter/xt_policy.o
  CC      fs/nfs/nfs4getroot.o
  CC      drivers/acpi/acpica/utcksum.o
  CC      drivers/scsi/sr_ioctl.o
  CC      drivers/rtc/proc.o
  CC      lib/assoc_array.o
  CC      fs/nfs/nfs4client.o
  CC      drivers/i2c/i2c-core-base.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
  CC      drivers/gpu/drm/i915/i915_sw_fence.o
  CC      net/ipv4/tcp_recovery.o
  CC      net/ipv4/tcp_ulp.o
  AR      drivers/net/ethernet/dlink/built-in.a
  AR      drivers/net/ethernet/emulex/built-in.a
  AR      drivers/net/ethernet/engleder/built-in.a
  CC      fs/nfs/nfs4session.o
  AR      drivers/net/ethernet/ezchip/built-in.a
  CC      drivers/acpi/acpi_pnp.o
  CC      drivers/rtc/sysfs.o
  CC      net/netfilter/xt_state.o
  CC      drivers/rtc/rtc-mc146818-lib.o
  CC      net/ipv6/sysctl_net_ipv6.o
  CC      drivers/rtc/rtc-cmos.o
  CC      kernel/auditsc.o
  CC      drivers/usb/core/port.o
  CC      net/wireless/chan.o
  CC      drivers/acpi/acpica/utcopy.o
  CC      drivers/scsi/sr_vendor.o
  CC      drivers/usb/host/xhci-dbg.o
  CC      drivers/usb/host/xhci-trace.o
  AR      drivers/net/ethernet/fujitsu/built-in.a
  AR      drivers/net/ethernet/fungible/built-in.a
  CC      drivers/acpi/power.o
  AR      drivers/net/ethernet/google/built-in.a
  CC      net/wireless/ethtool.o
  CC      drivers/input/mouse/logips2pp.o
  CC      net/ipv4/tcp_offload.o
  CC      fs/direct-io.o
  CC      drivers/acpi/acpica/utexcep.o
  CC      drivers/gpu/drm/i915/i915_sw_fence_work.o
  CC [M]  net/netfilter/nf_log_syslog.o
  CC      mm/hmm.o
  CC      drivers/i2c/i2c-core-smbus.o
  CC      drivers/scsi/sg.o
  CC      lib/bitrev.o
  AR      net/core/built-in.a
  CC      lib/crc-ccitt.o
  CC      drivers/input/mouse/lifebook.o
  CC      net/ipv4/tcp_plb.o
  CC      drivers/scsi/scsi_sysfs.o
  CC      drivers/i2c/i2c-core-acpi.o
  CC      drivers/i2c/i2c-smbus.o
  CC      mm/memfd.o
  CC      drivers/gpu/drm/i915/i915_syncmap.o
  CC      drivers/acpi/acpica/utdebug.o
  CC      mm/ptdump.o
  CC      net/wireless/mesh.o
  CC [M]  net/netfilter/xt_mark.o
  CC      net/sunrpc/timer.o
  CC      lib/crc16.o
  CC      net/ipv6/xfrm6_policy.o
  HOSTCC  lib/gen_crc32table
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  AR      drivers/input/touchscreen/built-in.a
  AR      drivers/input/misc/built-in.a
  CC      net/sunrpc/xdr.o
  CC      kernel/audit_watch.o
  CC      drivers/usb/core/hcd-pci.o
  CC      drivers/usb/core/usb-acpi.o
  CC      kernel/audit_fsnotify.o
  CC      drivers/input/input.o
  CC      net/ipv4/datagram.o
  CC      net/ipv4/raw.o
  CC [M]  net/netfilter/xt_nat.o
  AR      drivers/rtc/built-in.a
  CC      fs/nfs/dns_resolve.o
  CC [M]  net/netfilter/xt_LOG.o
  CC      drivers/acpi/acpica/utdecode.o
  GEN     xe_wa_oob.c xe_wa_oob.h
  CC [M]  drivers/gpu/drm/xe/xe_guc_capture.o
  CC      drivers/input/mouse/trackpoint.o
  CC      lib/xxhash.o
  CC      drivers/gpu/drm/i915/i915_user_extensions.o
  CC      drivers/gpu/drm/i915/i915_debugfs.o
  CC      drivers/gpu/drm/i915/i915_debugfs_params.o
  CC      fs/nfs/nfs4trace.o
  AR      drivers/i3c/built-in.a
  AR      drivers/media/i2c/built-in.a
  AR      drivers/media/tuners/built-in.a
  AR      drivers/media/rc/keymaps/built-in.a
  AR      drivers/media/rc/built-in.a
  AR      drivers/media/common/b2c2/built-in.a
  AR      drivers/media/platform/allegro-dvt/built-in.a
  AR      drivers/media/common/saa7146/built-in.a
  CC      drivers/acpi/acpica/utdelete.o
  AR      drivers/media/platform/amlogic/meson-ge2d/built-in.a
  AR      drivers/media/common/siano/built-in.a
  AR      drivers/media/platform/amlogic/built-in.a
  AR      drivers/media/common/v4l2-tpg/built-in.a
  AR      drivers/media/platform/amphion/built-in.a
  AR      drivers/media/common/videobuf2/built-in.a
  AR      drivers/media/common/built-in.a
  AR      drivers/media/platform/aspeed/built-in.a
  CC      fs/eventpoll.o
  AR      drivers/media/platform/atmel/built-in.a
  CC      fs/anon_inodes.o
  AR      drivers/media/platform/cadence/built-in.a
  AR      drivers/media/platform/chips-media/coda/built-in.a
  AR      drivers/media/pci/ttpci/built-in.a
  AR      drivers/media/platform/chips-media/wave5/built-in.a
  CC      fs/nfs/nfs4sysctl.o
  AR      drivers/media/pci/b2c2/built-in.a
  AR      drivers/media/platform/intel/built-in.a
  AR      drivers/media/platform/chips-media/built-in.a
  AR      drivers/media/platform/marvell/built-in.a
  CC      drivers/gpu/drm/i915/i915_pmu.o
  AR      drivers/media/pci/pluto2/built-in.a
  CC      drivers/acpi/acpica/uterror.o
  CC [M]  net/netfilter/xt_MASQUERADE.o
  AR      drivers/media/pci/dm1105/built-in.a
  AR      drivers/media/platform/mediatek/jpeg/built-in.a
  AR      mm/built-in.a
  CC      drivers/acpi/acpica/uteval.o
  AR      drivers/media/platform/mediatek/mdp/built-in.a
  CC      drivers/gpu/drm/i915/gt/gen2_engine_cs.o
  AR      drivers/media/pci/pt1/built-in.a
  CC      drivers/acpi/acpica/utglobal.o
  AR      drivers/media/pci/pt3/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/common/built-in.a
  AR      drivers/media/pci/mantis/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/encoder/built-in.a
  AR      drivers/media/pci/ngene/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/decoder/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/built-in.a
  AR      drivers/media/pci/ddbridge/built-in.a
  CC      fs/signalfd.o
  AR      drivers/media/pci/saa7146/built-in.a
  AR      drivers/media/platform/mediatek/vpu/built-in.a
  AR      drivers/media/pci/smipcie/built-in.a
  AR      drivers/media/pci/netup_unidvb/built-in.a
  AR      drivers/media/platform/mediatek/mdp3/built-in.a
  CC      net/mac80211/he.o
  CC      net/ipv4/udp.o
  AR      drivers/media/platform/mediatek/built-in.a
  AR      drivers/net/ethernet/huawei/built-in.a
  AR      drivers/i2c/built-in.a
  AR      drivers/media/pci/intel/ipu3/built-in.a
  CC      net/ipv4/udplite.o
  AR      drivers/media/pci/intel/ivsc/built-in.a
  AR      drivers/media/platform/microchip/built-in.a
  AR      drivers/media/pci/intel/built-in.a
  AR      drivers/pps/clients/built-in.a
  CC      drivers/ptp/ptp_clock.o
  AR      drivers/media/platform/nuvoton/built-in.a
  AR      drivers/media/pci/built-in.a
  CC      lib/genalloc.o
  AR      drivers/pps/generators/built-in.a
  CC      net/mac80211/s1g.o
  CC      drivers/pps/pps.o
  CC      net/ipv6/xfrm6_state.o
  AR      drivers/media/platform/nvidia/tegra-vde/built-in.a
  AR      drivers/media/platform/nvidia/built-in.a
  AR      drivers/usb/core/built-in.a
  AR      drivers/media/platform/nxp/dw100/built-in.a
  CC      net/ipv6/xfrm6_input.o
  CC      drivers/pps/kapi.o
  CC      drivers/input/mouse/cypress_ps2.o
  CC      drivers/net/ethernet/intel/e1000/e1000_main.o
  AR      drivers/media/platform/nxp/imx-jpeg/built-in.a
  AR      drivers/media/platform/qcom/camss/built-in.a
  AR      drivers/media/platform/nxp/imx8-isi/built-in.a
  AR      drivers/net/ethernet/i825xx/built-in.a
  AR      drivers/media/platform/qcom/venus/built-in.a
  AR      drivers/media/platform/nxp/built-in.a
  AR      drivers/net/ethernet/microsoft/built-in.a
  CC      kernel/audit_tree.o
  AR      drivers/media/platform/qcom/built-in.a
  CC      drivers/net/ethernet/intel/e100.o
  CC      drivers/net/ethernet/intel/e1000e/82571.o
  CC      net/ipv6/xfrm6_output.o
  AR      drivers/media/platform/renesas/rcar-vin/built-in.a
  AR      drivers/media/platform/renesas/rzg2l-cru/built-in.a
  AR      drivers/media/usb/b2c2/built-in.a
  AR      drivers/media/platform/renesas/vsp1/built-in.a
  AR      drivers/media/mmc/siano/built-in.a
  CC      fs/timerfd.o
  AR      drivers/media/platform/rockchip/rga/built-in.a
  AR      drivers/media/platform/renesas/built-in.a
  AR      drivers/media/mmc/built-in.a
  AR      drivers/media/usb/dvb-usb/built-in.a
  CC      drivers/acpi/event.o
  CC      drivers/net/ethernet/intel/e1000e/ich8lan.o
  AR      drivers/media/platform/rockchip/rkisp1/built-in.a
  CC      drivers/acpi/acpica/uthex.o
  AR      drivers/media/usb/dvb-usb-v2/built-in.a
  AR      drivers/media/platform/rockchip/built-in.a
  CC      drivers/power/supply/power_supply_core.o
  AR      drivers/scsi/built-in.a
  AR      drivers/media/usb/s2255/built-in.a
  CC      drivers/power/supply/power_supply_sysfs.o
  AR      drivers/media/platform/samsung/exynos-gsc/built-in.a
  AR      drivers/media/usb/siano/built-in.a
  AR      drivers/media/platform/samsung/exynos4-is/built-in.a
  AR      drivers/media/usb/ttusb-budget/built-in.a
  AR      drivers/media/usb/ttusb-dec/built-in.a
  AR      drivers/media/platform/samsung/s3c-camif/built-in.a
  CC      drivers/pps/sysfs.o
  AR      drivers/media/usb/built-in.a
  AR      drivers/media/platform/samsung/s5p-g2d/built-in.a
  CC      net/ipv6/xfrm6_protocol.o
  AR      drivers/media/platform/samsung/s5p-jpeg/built-in.a
  CC      net/sunrpc/sunrpc_syms.o
  AR      drivers/media/platform/samsung/s5p-mfc/built-in.a
  AR      drivers/media/platform/samsung/built-in.a
  CC [M]  net/netfilter/xt_addrtype.o
  AR      drivers/media/platform/st/sti/bdisp/built-in.a
  AR      drivers/media/platform/st/sti/c8sectpfe/built-in.a
  CC      fs/eventfd.o
  CC      drivers/gpu/drm/i915/gt/gen6_engine_cs.o
  AR      drivers/media/platform/st/sti/delta/built-in.a
  CC      drivers/gpu/drm/i915/gt/gen6_ppgtt.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ct.o
  AR      drivers/media/platform/st/sti/hva/built-in.a
  AR      drivers/media/platform/st/stm32/built-in.a
  AR      drivers/media/platform/st/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/sunxi/sun6i-mipi-csi2/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-di/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-rotate/built-in.a
  AR      drivers/media/platform/sunxi/built-in.a
  CC      drivers/acpi/acpica/utids.o
  CC      drivers/usb/host/xhci-debugfs.o
  AR      drivers/media/firewire/built-in.a
  CC      net/mac80211/ibss.o
  AR      drivers/media/platform/ti/am437x/built-in.a
  AR      drivers/media/spi/built-in.a
  CC      lib/percpu_counter.o
  CC      net/mac80211/iface.o
  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/ptp/ptp_chardev.o
  AR      drivers/media/platform/ti/j721e-csi2rx/built-in.a
  AR      drivers/pps/built-in.a
  CC      drivers/gpu/drm/i915/gt/gen7_renderclear.o
  CC      drivers/gpu/drm/drm_encoder.o
  AR      drivers/media/platform/ti/omap/built-in.a
  AR      drivers/media/platform/ti/omap3isp/built-in.a
  AR      drivers/media/platform/ti/built-in.a
  CC      net/mac80211/link.o
  CC      drivers/input/mouse/psmouse-smbus.o
  AR      drivers/media/platform/verisilicon/built-in.a
  CC      net/ipv4/udp_offload.o
  AR      drivers/media/platform/via/built-in.a
  CC      drivers/gpu/drm/i915/gt/gen8_engine_cs.o
  AR      drivers/media/platform/xilinx/built-in.a
  CC      drivers/ptp/ptp_sysfs.o
  CC      drivers/ptp/ptp_vclock.o
  AR      drivers/media/platform/built-in.a
  CC      drivers/acpi/evged.o
  CC      drivers/ptp/ptp_kvm_x86.o
  CC      drivers/input/input-compat.o
  AR      drivers/media/test-drivers/built-in.a
  AR      drivers/media/built-in.a
  CC      drivers/acpi/acpica/utinit.o
  CC      drivers/power/supply/power_supply_leds.o
  CC      drivers/input/input-mt.o
  CC      drivers/input/input-poller.o
  CC      fs/aio.o
  CC      net/wireless/ap.o
  CC      drivers/acpi/acpica/utlock.o
  CC      net/sunrpc/cache.o
  CC      drivers/gpu/drm/drm_file.o
  CC      lib/audit.o
  CC      kernel/kprobes.o
  CC      drivers/gpu/drm/drm_fourcc.o
  CC      net/sunrpc/rpc_pipe.o
  CC      drivers/usb/host/xhci-pci.o
  CC      net/ipv6/netfilter.o
  CC      drivers/acpi/acpica/utmath.o
  CC      fs/locks.o
  CC      drivers/gpu/drm/drm_framebuffer.o
  CC      net/ipv6/proc.o
  CC      drivers/power/supply/power_supply_hwmon.o
  CC      net/wireless/trace.o
  CC      drivers/input/ff-core.o
  CC      net/sunrpc/sysfs.o
  CC      drivers/hwmon/hwmon.o
  CC      net/sunrpc/svc_xprt.o
  CC      drivers/input/touchscreen.o
  CC      drivers/input/ff-memless.o
  AR      drivers/input/mouse/built-in.a
  CC      drivers/gpu/drm/i915/gt/gen8_ppgtt.o
  AR      net/netfilter/built-in.a
  CC      drivers/net/ethernet/intel/e1000e/80003es2lan.o
  CC      drivers/ptp/ptp_kvm_common.o
  AR      drivers/thermal/broadcom/built-in.a
  CC      drivers/input/sparse-keymap.o
  AR      drivers/thermal/samsung/built-in.a
  CC      kernel/seccomp.o
  AR      drivers/thermal/st/built-in.a
  CC      fs/binfmt_misc.o
  CC      drivers/thermal/intel/intel_tcc.o
  CC      drivers/thermal/intel/therm_throt.o
  CC      kernel/relay.o
  CC      lib/syscall.o
  CC      drivers/input/vivaldi-fmap.o
  CC      drivers/acpi/acpica/utmisc.o
  AR      drivers/thermal/qcom/built-in.a
  CC      drivers/acpi/acpica/utmutex.o
  AR      drivers/thermal/tegra/built-in.a
  AR      drivers/thermal/mediatek/built-in.a
  CC      drivers/thermal/thermal_core.o
  CC      net/wireless/ocb.o
  CC      lib/errname.o
  AR      drivers/power/supply/built-in.a
  AR      drivers/power/built-in.a
  AR      drivers/watchdog/built-in.a
  CC      drivers/md/md.o
  CC      lib/nlattr.o
  CC      drivers/md/md-bitmap.o
  AR      drivers/net/ethernet/litex/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_db_mgr.o
  AR      drivers/net/ethernet/marvell/octeon_ep/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
  AR      drivers/net/ethernet/marvell/octeon_ep_vf/built-in.a
  AR      drivers/net/ethernet/marvell/octeontx2/built-in.a
  CC      drivers/input/input-leds.o
  AR      drivers/net/ethernet/marvell/prestera/built-in.a
  CC      drivers/net/ethernet/marvell/sky2.o
  CC      kernel/utsname_sysctl.o
  CC      drivers/gpu/drm/i915/gt/intel_context.o
  CC      drivers/cpufreq/cpufreq.o
  CC      drivers/acpi/acpica/utnonansi.o
  CC      drivers/gpu/drm/i915/gt/intel_context_sseu.o
  CC      drivers/input/evdev.o
  AR      drivers/ptp/built-in.a
  CC      drivers/gpu/drm/drm_gem.o
  CC      drivers/cpuidle/governors/menu.o
  AR      drivers/mmc/built-in.a
  CC      drivers/cpuidle/governors/haltpoll.o
  CC      lib/cpu_rmap.o
  CC      net/wireless/pmsr.o
  CC      kernel/delayacct.o
  CC      net/ipv6/syncookies.o
  CC      drivers/acpi/acpica/utobject.o
  CC      kernel/taskstats.o
  CC      net/sunrpc/xprtmultipath.o
  CC      fs/binfmt_script.o
  AR      drivers/hwmon/built-in.a
  GEN     net/wireless/shipped-certs.c
  CC      lib/dynamic_queue_limits.o
  CC      net/ipv6/calipso.o
  CC [M]  drivers/thermal/intel/x86_pkg_temp_thermal.o
  CC      net/ipv6/ah6.o
  AR      drivers/ufs/built-in.a
  CC      drivers/cpuidle/cpuidle.o
  CC      lib/glob.o
  CC      lib/strncpy_from_user.o
  CC      net/mac80211/rate.o
  CC      drivers/net/ethernet/intel/e1000e/mac.o
  AR      fs/nfs/built-in.a
  AR      drivers/usb/host/built-in.a
  CC      net/ipv4/arp.o
  AR      drivers/usb/built-in.a
  CC      net/sunrpc/stats.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_debugfs.o
  CC      drivers/thermal/thermal_sysfs.o
  CC      lib/strnlen_user.o
  AR      drivers/leds/trigger/built-in.a
  AR      drivers/leds/blink/built-in.a
  AR      drivers/leds/simple/built-in.a
  CC      drivers/leds/led-core.o
  CC      drivers/net/ethernet/intel/e1000/e1000_hw.o
  CC      net/mac80211/michael.o
  CC      drivers/acpi/acpica/utosi.o
  CC      lib/net_utils.o
  CC      fs/binfmt_elf.o
  CC      fs/mbcache.o
  CC      drivers/cpuidle/driver.o
  CC      net/wireless/shipped-certs.o
  CC      drivers/net/ethernet/intel/e1000/e1000_ethtool.o
  AR      drivers/input/built-in.a
  CC      drivers/net/ethernet/intel/e1000/e1000_param.o
  AR      drivers/firmware/arm_ffa/built-in.a
  AR      drivers/firmware/arm_scmi/built-in.a
  CC      lib/sg_pool.o
  AR      drivers/firmware/broadcom/built-in.a
  AR      drivers/firmware/cirrus/built-in.a
  CC      drivers/leds/led-class.o
  AR      drivers/firmware/meson/built-in.a
  AR      drivers/cpuidle/governors/built-in.a
  AR      drivers/thermal/intel/built-in.a
  CC      drivers/acpi/sysfs.o
  CC      drivers/md/md-autodetect.o
  AR      drivers/firmware/microchip/built-in.a
  CC      drivers/thermal/thermal_trip.o
  CC      drivers/acpi/acpica/utownerid.o
  CC      drivers/acpi/acpica/utpredef.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_hwconfig.o
  CC      drivers/firmware/efi/efi-bgrt.o
  CC      fs/posix_acl.o
  CC      drivers/firmware/efi/libstub/efi-stub-helper.o
  CC      lib/stackdepot.o
  CC      drivers/thermal/thermal_helpers.o
  CC      lib/asn1_decoder.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_cs.o
  CC      kernel/tsacct.o
  CC      drivers/leds/led-triggers.o
  CC      drivers/cpuidle/governor.o
  CC      net/ipv6/esp6.o
  GEN     lib/oid_registry_data.c
  CC      drivers/firmware/efi/libstub/gop.o
  CC      drivers/firmware/efi/libstub/secureboot.o
  CC      drivers/acpi/acpica/utresdecode.o
  CC      drivers/acpi/acpica/utresrc.o
  CC      fs/coredump.o
  CC      fs/drop_caches.o
  CC      net/sunrpc/sysctl.o
  CC      drivers/cpuidle/sysfs.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
  CC      drivers/firmware/efi/efi.o
  CC      fs/sysctls.o
  CC      drivers/firmware/efi/libstub/tpm.o
  CC      net/ipv6/sit.o
  CC      drivers/cpufreq/freq_table.o
  CC      drivers/net/ethernet/intel/e1000e/manage.o
  AR      drivers/firmware/imx/built-in.a
  CC      drivers/net/ethernet/intel/e1000e/nvm.o
  CC      drivers/acpi/property.o
  AR      drivers/firmware/psci/built-in.a
  AR      drivers/crypto/stm32/built-in.a
  CC      drivers/cpuidle/poll_state.o
  CC      net/mac80211/tkip.o
  AR      drivers/crypto/xilinx/built-in.a
  CC      drivers/thermal/thermal_hwmon.o
  CC      drivers/thermal/gov_step_wise.o
  CC      drivers/clocksource/acpi_pm.o
  AR      drivers/crypto/hisilicon/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_engine_pm.o
  CC      net/ipv6/addrconf_core.o
  AR      drivers/crypto/intel/keembay/built-in.a
  CC      net/ipv6/exthdrs_core.o
  AR      drivers/crypto/intel/ixp4xx/built-in.a
  AR      drivers/crypto/intel/built-in.a
  AR      drivers/crypto/starfive/built-in.a
  AR      drivers/crypto/built-in.a
  CC      drivers/cpufreq/cpufreq_performance.o
  CC      drivers/acpi/acpica/utstate.o
  CC      kernel/tracepoint.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_id_mgr.o
  AR      drivers/firmware/qcom/built-in.a
  AR      drivers/firmware/smccc/built-in.a
  AR      drivers/firmware/tegra/built-in.a
  CC      net/ipv6/ip6_checksum.o
  CC      drivers/cpufreq/cpufreq_userspace.o
  CC      lib/ucs2_string.o
  CC      drivers/firmware/efi/libstub/file.o
  CC      lib/sbitmap.o
  AR      drivers/leds/built-in.a
  CC      fs/fhandle.o
  CC      drivers/hid/usbhid/hid-core.o
  AR      drivers/platform/x86/amd/built-in.a
  CC      drivers/cpuidle/cpuidle-haltpoll.o
  AR      drivers/platform/x86/intel/built-in.a
  AR      drivers/platform/surface/built-in.a
  CC      drivers/platform/x86/wmi.o
  CC      drivers/md/dm.o
  CC      lib/group_cpus.o
  CC      drivers/cpufreq/cpufreq_ondemand.o
  CC      drivers/firmware/efi/libstub/mem.o
  CC      net/ipv4/icmp.o
  CC      drivers/platform/x86/wmi-bmof.o
  CC      drivers/firmware/efi/libstub/random.o
  CC      drivers/cpufreq/cpufreq_governor.o
  CC      drivers/md/dm-table.o
  CC      drivers/thermal/gov_user_space.o
  CC      drivers/acpi/acpica/utstring.o
  CC      drivers/mailbox/mailbox.o
  CC      drivers/cpufreq/cpufreq_governor_attr_set.o
  CC      drivers/mailbox/pcc.o
  AR      drivers/net/ethernet/broadcom/built-in.a
  AR      drivers/net/ethernet/mellanox/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_klv_helpers.o
  CC      lib/fw_table.o
  CC      drivers/clocksource/i8253.o
  CC      drivers/hid/hid-core.o
  AR      drivers/cpuidle/built-in.a
  AR      drivers/perf/built-in.a
  AR      drivers/hwtracing/intel_th/built-in.a
  AR      drivers/android/built-in.a
  CC      kernel/irq_work.o
  AR      drivers/net/ethernet/marvell/built-in.a
  CC      kernel/static_call.o
  AR      drivers/nvmem/layouts/built-in.a
  AR      drivers/net/ethernet/micrel/built-in.a
  CC      kernel/padata.o
  CC      drivers/nvmem/core.o
  CC      kernel/jump_label.o
  CC      drivers/acpi/acpica/utstrsuppt.o
  CC      drivers/acpi/acpi_cmos_rtc.o
  AR      drivers/net/ethernet/intel/e1000/built-in.a
  AR      drivers/thermal/built-in.a
  CC      drivers/acpi/acpica/utstrtoul64.o
  CC      drivers/hid/hid-input.o
  CC      drivers/firmware/dmi_scan.o
  AR      drivers/firmware/xilinx/built-in.a
  CC      kernel/context_tracking.o
  CC      drivers/firmware/efi/libstub/randomalloc.o
  CC      drivers/net/ethernet/intel/e1000e/phy.o
  AR      drivers/net/ethernet/microchip/built-in.a
  CC      drivers/cpufreq/acpi-cpufreq.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_user.o
  AR      lib/lib.a
  GEN     lib/crc32table.h
  CC      drivers/cpufreq/amd-pstate.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_log.o
  CC      drivers/cpufreq/amd-pstate-trace.o
  AR      drivers/clocksource/built-in.a
  AR      drivers/net/ethernet/mscc/built-in.a
  CC      drivers/net/ethernet/intel/e1000e/param.o
  CC      drivers/md/dm-target.o
  CC      net/ipv6/ip6_icmp.o
  CC      drivers/gpu/drm/i915/gt/intel_execlists_submission.o
  CC      drivers/md/dm-linear.o
  AR      net/sunrpc/built-in.a
  CC      drivers/net/ethernet/intel/e1000e/ethtool.o
  CC      drivers/platform/x86/eeepc-laptop.o
  CC      drivers/acpi/x86/apple.o
  CC      lib/oid_registry.o
  CC      net/ipv6/output_core.o
  CC      drivers/md/dm-stripe.o
  CC      drivers/cpufreq/intel_pstate.o
  AR      drivers/mailbox/built-in.a
  CC      drivers/firmware/efi/libstub/pci.o
  CC      drivers/md/dm-ioctl.o
  CC      kernel/iomem.o
  CC      net/ipv6/protocol.o
  AR      drivers/net/ethernet/myricom/built-in.a
  CC      net/ipv6/ip6_offload.o
  CC      drivers/acpi/acpica/utxface.o
  CC      drivers/gpu/drm/drm_ioctl.o
  AR      drivers/net/ethernet/natsemi/built-in.a
  CC      drivers/firmware/dmi-id.o
  CC      drivers/md/dm-io.o
  AR      fs/built-in.a
  CC      drivers/md/dm-kcopyd.o
  CC      drivers/firmware/efi/vars.o
  CC      net/mac80211/aes_cmac.o
  CC      drivers/acpi/x86/utils.o
  CC      lib/crc32.o
  CC      kernel/rseq.o
  CC      drivers/platform/x86/p2sb.o
  CC      drivers/hid/usbhid/hiddev.o
  CC      drivers/hid/usbhid/hid-pidff.o
  CC      drivers/net/ethernet/intel/e1000e/netdev.o
  CC      drivers/hid/hid-quirks.o
  CC      drivers/acpi/acpica/utxfinit.o
  CC      drivers/acpi/x86/s2idle.o
  CC      drivers/firmware/memmap.o
  CC      drivers/gpu/drm/drm_lease.o
  CC      drivers/md/dm-sysfs.o
  CC      net/mac80211/aes_gmac.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_pc.o
  CC      drivers/md/dm-stats.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt.o
  CC      drivers/acpi/debugfs.o
  AR      drivers/nvmem/built-in.a
  CC      drivers/firmware/efi/libstub/skip_spaces.o
  CC      net/ipv6/tcpv6_offload.o
  CC      drivers/firmware/efi/libstub/lib-cmdline.o
  CC      drivers/firmware/efi/reboot.o
  CC      drivers/acpi/acpi_lpat.o
  CC      drivers/net/ethernet/intel/e1000e/ptp.o
  CC      drivers/acpi/acpi_pcc.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
  CC      drivers/acpi/acpica/utxferror.o
  CC      drivers/acpi/ac.o
  CC      drivers/firmware/efi/libstub/lib-ctype.o
  AR      lib/built-in.a
  CC      drivers/acpi/button.o
  CC      net/ipv6/exthdrs_offload.o
  CC      drivers/firmware/efi/libstub/alignedmem.o
  CC      drivers/firmware/efi/memattr.o
  CC      net/ipv6/inet6_hashtables.o
  CC      net/ipv6/mcast_snoop.o
  CC      drivers/hid/hid-debug.o
  CC      net/ipv4/devinet.o
  CC      net/mac80211/fils_aead.o
  CC      net/mac80211/cfg.o
  AR      drivers/platform/x86/built-in.a
  AR      drivers/platform/built-in.a
  CC      drivers/hid/hidraw.o
  CC      drivers/acpi/acpica/utxfmutex.o
  CC      drivers/firmware/efi/tpm.o
  CC      drivers/md/dm-rq.o
  CC      net/mac80211/ethtool.o
  CC      drivers/gpu/drm/i915/gt/intel_gt.o
  CC      drivers/firmware/efi/libstub/relocate.o
  CC      drivers/firmware/efi/libstub/printk.o
  CC      drivers/acpi/fan_core.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_submit.o
  AR      kernel/built-in.a
  CC      drivers/acpi/fan_attr.o
  CC      drivers/acpi/acpi_video.o
  CC      drivers/acpi/video_detect.o
  CC      drivers/hid/hid-generic.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
  CC      drivers/gpu/drm/drm_managed.o
  CC      drivers/acpi/processor_driver.o
  CC      drivers/acpi/processor_thermal.o
  CC      drivers/gpu/drm/drm_mm.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.o
  AR      drivers/acpi/acpica/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_heci_gsc.o
  CC      drivers/acpi/processor_idle.o
  AR      drivers/hid/usbhid/built-in.a
  CC      drivers/hid/hid-a4tech.o
  CC      drivers/firmware/efi/libstub/vsprintf.o
  CC      drivers/gpu/drm/drm_mode_config.o
  CC      drivers/gpu/drm/drm_mode_object.o
  CC      drivers/md/dm-io-rewind.o
  CC      drivers/hid/hid-apple.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine.o
  CC      drivers/md/dm-builtin.o
  CC      net/mac80211/rx.o
  CC      drivers/firmware/efi/libstub/x86-stub.o
  STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
  CC      drivers/acpi/processor_throttling.o
  CC      drivers/gpu/drm/drm_modes.o
  CC      drivers/gpu/drm/drm_modeset_lock.o
  CC      drivers/acpi/processor_perflib.o
  CC      drivers/acpi/container.o
  CC      net/mac80211/spectmgmt.o
  CC      net/mac80211/tx.o
  CC      drivers/acpi/thermal_lib.o
  CC      drivers/hid/hid-belkin.o
  CC      drivers/gpu/drm/drm_plane.o
  STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
  CC      drivers/gpu/drm/drm_prime.o
  AR      drivers/cpufreq/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_fence.o
  CC      drivers/hid/hid-cherry.o
  CC      drivers/acpi/thermal.o
  CC      drivers/firmware/efi/memmap.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
  CC      drivers/acpi/acpi_memhotplug.o
  CC      net/ipv4/af_inet.o
  CC      drivers/md/dm-raid1.o
  CC      drivers/gpu/drm/drm_print.o
  CC      drivers/acpi/ioapic.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_huc.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
  CC      drivers/md/dm-log.o
  AR      net/ipv6/built-in.a
  CC      drivers/md/dm-region-hash.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_irq.o
  CC      drivers/hid/hid-chicony.o
  CC      drivers/firmware/efi/capsule.o
  STUBCPY drivers/firmware/efi/libstub/file.stub.o
  CC      drivers/gpu/drm/drm_property.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_mcr.o
  CC      drivers/gpu/drm/drm_syncobj.o
  CC      drivers/hid/hid-cypress.o
  CC      drivers/firmware/efi/esrt.o
  CC      drivers/acpi/battery.o
  CC      drivers/hid/hid-ezkey.o
  CC      drivers/gpu/drm/drm_sysfs.o
  CC      drivers/md/dm-zero.o
  CC      drivers/hid/hid-gyration.o
  CC      drivers/acpi/bgrt.o
  CC      net/ipv4/igmp.o
  STUBCPY drivers/firmware/efi/libstub/gop.stub.o
  STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o
  CC      drivers/acpi/spcr.o
  STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
  CC      drivers/hid/hid-ite.o
  AR      drivers/net/ethernet/neterion/built-in.a
  STUBCPY drivers/firmware/efi/libstub/mem.stub.o
  STUBCPY drivers/firmware/efi/libstub/pci.stub.o
  AR      drivers/net/ethernet/netronome/built-in.a
  STUBCPY drivers/firmware/efi/libstub/printk.stub.o
  AR      drivers/net/ethernet/ni/built-in.a
  CC      drivers/net/ethernet/nvidia/forcedeth.o
  STUBCPY drivers/firmware/efi/libstub/random.stub.o
  AR      drivers/net/ethernet/oki-semi/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm.o
  STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
  CC      drivers/firmware/efi/runtime-wrappers.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
  STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
  CC      drivers/gpu/drm/drm_trace_points.o
  STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
  CC      net/mac80211/key.o
  STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
  STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
  STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
  STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
  CC [M]  drivers/gpu/drm/xe/xe_huc_debugfs.o
  AR      drivers/firmware/efi/libstub/lib.a
  CC [M]  drivers/gpu/drm/xe/xe_irq.o
  CC [M]  drivers/gpu/drm/xe/xe_lrc.o
  CC      net/ipv4/fib_frontend.o
  CC      net/mac80211/util.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_requests.o
  CC      net/ipv4/fib_semantics.o
  CC      drivers/gpu/drm/drm_vblank.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      drivers/firmware/efi/capsule-loader.o
  CC      net/ipv4/fib_trie.o
  CC      net/ipv4/fib_notifier.o
  CC      drivers/hid/hid-kensington.o
  CC      net/mac80211/parse.o
  CC      net/ipv4/inet_fragment.o
  CC      net/ipv4/ping.o
  CC      drivers/hid/hid-lg.o
  CC      net/ipv4/ip_tunnel_core.o
  CC [M]  drivers/gpu/drm/xe/xe_module.o
  AR      drivers/net/ethernet/packetengines/built-in.a
  AR      drivers/net/ethernet/qlogic/built-in.a
  AR      drivers/net/ethernet/qualcomm/emac/built-in.a
  AR      drivers/net/ethernet/qualcomm/built-in.a
  CC      drivers/net/ethernet/realtek/8139too.o
  CC [M]  drivers/gpu/drm/xe/xe_pat.o
  CC      drivers/hid/hid-lgff.o
  AR      drivers/md/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_pci.o
  CC      drivers/hid/hid-lg4ff.o
  CC      drivers/gpu/drm/drm_vblank_work.o
  CC      drivers/gpu/drm/drm_vma_manager.o
  CC      drivers/gpu/drm/drm_writeback.o
  CC [M]  drivers/gpu/drm/xe/xe_pcode.o
  CC      drivers/firmware/efi/earlycon.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
  CC      drivers/gpu/drm/drm_panel.o
  AR      drivers/acpi/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_pm.o
  CC      drivers/hid/hid-lg-g15.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
  CC      drivers/gpu/drm/drm_pci.o
  CC      drivers/gpu/drm/i915/gt/intel_gtt.o
  CC      net/mac80211/wme.o
  CC      net/mac80211/chan.o
  CC [M]  drivers/gpu/drm/xe/xe_preempt_fence.o
  CC      net/ipv4/gre_offload.o
  CC      drivers/gpu/drm/i915/gt/intel_llc.o
  CC      drivers/gpu/drm/i915/gt/intel_lrc.o
  CC      drivers/hid/hid-microsoft.o
  CC      net/ipv4/metrics.o
  CC [M]  drivers/gpu/drm/xe/xe_pt.o
  CC [M]  drivers/gpu/drm/xe/xe_pt_walk.o
  AR      drivers/net/ethernet/intel/e1000e/built-in.a
  AR      drivers/net/ethernet/intel/built-in.a
  CC      net/ipv4/netlink.o
  CC      drivers/gpu/drm/drm_debugfs.o
  AR      drivers/net/ethernet/renesas/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_migrate.o
  CC      drivers/gpu/drm/drm_debugfs_crc.o
  CC      drivers/gpu/drm/drm_panel_orientation_quirks.o
  AR      drivers/firmware/efi/built-in.a
  CC      drivers/hid/hid-monterey.o
  AR      drivers/firmware/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_query.o
  CC      drivers/gpu/drm/i915/gt/intel_mocs.o
  CC [M]  drivers/gpu/drm/xe/xe_range_fence.o
  CC      drivers/gpu/drm/drm_buddy.o
  CC      drivers/gpu/drm/drm_gem_shmem_helper.o
  CC      drivers/gpu/drm/drm_atomic_helper.o
  CC      drivers/hid/hid-ntrig.o
  CC      drivers/gpu/drm/i915/gt/intel_ppgtt.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_sr.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_whitelist.o
  CC      drivers/gpu/drm/i915/gt/intel_rc6.o
  CC [M]  drivers/gpu/drm/xe/xe_rtp.o
  CC [M]  drivers/gpu/drm/xe/xe_ring_ops.o
  CC      net/ipv4/udp_tunnel_stub.o
  CC      net/ipv4/nexthop.o
  CC      drivers/hid/hid-pl.o
  CC      net/ipv4/ip_tunnel.o
  CC      net/ipv4/sysctl_net_ipv4.o
  CC      drivers/net/ethernet/realtek/r8169_main.o
  CC      drivers/hid/hid-petalynx.o
  CC      net/ipv4/proc.o
  CC      drivers/hid/hid-redragon.o
  CC      drivers/gpu/drm/i915/gt/intel_region_lmem.o
  CC      drivers/hid/hid-samsung.o
  CC      drivers/gpu/drm/i915/gt/intel_renderstate.o
  CC      drivers/gpu/drm/drm_atomic_state_helper.o
  CC      drivers/gpu/drm/drm_bridge_connector.o
  CC      drivers/net/ethernet/realtek/r8169_firmware.o
  CC      drivers/hid/hid-sony.o
  AR      drivers/net/ethernet/rdc/built-in.a
  CC      drivers/net/ethernet/realtek/r8169_phy_config.o
  CC [M]  drivers/gpu/drm/xe/xe_sa.o
  CC [M]  drivers/gpu/drm/xe/xe_sched_job.o
  CC      net/ipv4/fib_rules.o
  CC      drivers/gpu/drm/i915/gt/intel_reset.o
  CC      net/ipv4/ipmr.o
  CC      net/ipv4/ipmr_base.o
  CC      drivers/gpu/drm/i915/gt/intel_ring.o
  CC      net/ipv4/syncookies.o
  CC      net/ipv4/tunnel4.o
  CC      net/ipv4/ipconfig.o
  CC      net/ipv4/netfilter.o
  CC      drivers/gpu/drm/drm_crtc_helper.o
  CC      drivers/gpu/drm/i915/gt/intel_ring_submission.o
  CC      net/mac80211/trace.o
  CC      drivers/hid/hid-sunplus.o
  CC      drivers/hid/hid-topseed.o
  CC [M]  drivers/gpu/drm/xe/xe_step.o
  AR      drivers/net/ethernet/nvidia/built-in.a
  CC      net/ipv4/tcp_cubic.o
  CC [M]  drivers/gpu/drm/xe/xe_sync.o
  CC [M]  drivers/gpu/drm/xe/xe_tile.o
  CC      drivers/gpu/drm/i915/gt/intel_rps.o
  CC      drivers/gpu/drm/i915/gt/intel_sa_media.o
  CC      net/mac80211/mlme.o
  CC      net/ipv4/tcp_sigpool.o
  CC      drivers/gpu/drm/i915/gt/intel_sseu.o
  CC      drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
  CC      drivers/gpu/drm/drm_damage_helper.o
  CC      drivers/gpu/drm/drm_encoder_slave.o
  CC      drivers/gpu/drm/i915/gt/intel_timeline.o
  CC      drivers/gpu/drm/i915/gt/intel_tlb.o
  AR      drivers/net/ethernet/rocker/built-in.a
  AR      drivers/net/ethernet/samsung/built-in.a
  AR      drivers/net/ethernet/seeq/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_tile_sysfs.o
  CC      net/mac80211/tdls.o
  AR      drivers/net/ethernet/silan/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_trace.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_sys_mgr.o
  CC      net/mac80211/ocb.o
  AR      net/wireless/built-in.a
  CC      net/mac80211/airtime.o
  CC      net/ipv4/cipso_ipv4.o
  CC      net/ipv4/xfrm4_policy.o
  CC      net/ipv4/xfrm4_state.o
  CC      drivers/gpu/drm/i915/gt/intel_wopcm.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
  CC      net/ipv4/xfrm4_input.o
  CC      net/ipv4/xfrm4_output.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_vram_mgr.o
  AR      drivers/hid/built-in.a
  AR      drivers/net/ethernet/sis/built-in.a
  CC      drivers/gpu/drm/drm_flip_work.o
  CC      drivers/gpu/drm/drm_format_helper.o
  CC      net/ipv4/xfrm4_protocol.o
  CC      drivers/gpu/drm/i915/gt/intel_workarounds.o
  CC      drivers/gpu/drm/drm_gem_atomic_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_tuning.o
  AR      drivers/net/ethernet/sfc/built-in.a
  AR      drivers/net/ethernet/smsc/built-in.a
  AR      drivers/net/ethernet/socionext/built-in.a
  AR      drivers/net/ethernet/stmicro/built-in.a
  CC      net/mac80211/eht.o
  CC [M]  drivers/gpu/drm/xe/xe_uc.o
  AR      drivers/net/ethernet/sun/built-in.a
  AR      drivers/net/ethernet/tehuti/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_uc_debugfs.o
  CC      net/mac80211/led.o
  AR      drivers/net/ethernet/ti/built-in.a
  CC      net/mac80211/pm.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_fw.o
  CC      drivers/gpu/drm/i915/gt/shmem_utils.o
  CC      drivers/gpu/drm/drm_gem_framebuffer_helper.o
  CC      drivers/gpu/drm/drm_kms_helper_common.o
  CC [M]  drivers/gpu/drm/xe/xe_vm.o
  CC [M]  drivers/gpu/drm/xe/xe_vram_freq.o
  CC [M]  drivers/gpu/drm/xe/xe_wait_user_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_wa.o
  CC      drivers/gpu/drm/i915/gt/sysfs_engines.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
  CC      drivers/gpu/drm/i915/gt/gen6_renderstate.o
  CC      drivers/gpu/drm/drm_modeset_helper.o
  CC      drivers/gpu/drm/drm_plane_helper.o
  CC      drivers/gpu/drm/i915/gt/gen7_renderstate.o
  CC [M]  drivers/gpu/drm/xe/xe_wopcm.o
  CC      net/mac80211/rc80211_minstrel_ht.o
  CC [M]  drivers/gpu/drm/xe/xe_hmm.o
  CC      drivers/gpu/drm/drm_probe_helper.o
  CC      net/mac80211/wbrf.o
  CC [M]  drivers/gpu/drm/xe/xe_hwmon.o
  CC      drivers/gpu/drm/i915/gt/gen8_renderstate.o
  CC      drivers/gpu/drm/i915/gt/gen9_renderstate.o
  CC      drivers/gpu/drm/drm_rect.o
  CC      drivers/gpu/drm/drm_self_refresh_helper.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_busy.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_clflush.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_relay.o
  CC [M]  drivers/gpu/drm/xe/xe_memirq.o
  CC [M]  drivers/gpu/drm/xe/xe_sriov.o
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_irq.o
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_utils.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_context.o
  CC [M]  drivers/gpu/drm/xe/display/intel_fb_bo.o
  CC [M]  drivers/gpu/drm/xe/display/intel_fbdev_fb.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_create.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_misc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_rps.o
  CC      drivers/gpu/drm/drm_simple_kms_helper.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
  CC      drivers/gpu/drm/bridge/panel.o
  AR      drivers/net/ethernet/realtek/built-in.a
  CC [M]  drivers/gpu/drm/xe/display/xe_dsb_buffer.o
  AR      drivers/net/ethernet/vertexcom/built-in.a
  CC      drivers/gpu/drm/drm_mipi_dsi.o
  AR      drivers/net/ethernet/via/built-in.a
  AR      drivers/net/ethernet/wangxun/built-in.a
  AR      drivers/net/ethernet/wiznet/built-in.a
  AR      drivers/net/ethernet/xilinx/built-in.a
  AR      drivers/net/ethernet/xircom/built-in.a
  CC [M]  drivers/gpu/drm/drm_exec.o
  AR      drivers/net/ethernet/pensando/built-in.a
  AR      drivers/net/ethernet/synopsys/built-in.a
  CC [M]  drivers/gpu/drm/xe/display/xe_fb_pin.o
  CC [M]  drivers/gpu/drm/drm_gpuvm.o
  AR      drivers/net/ethernet/built-in.a
  CC [M]  drivers/gpu/drm/drm_suballoc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_hdcp_gsc.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_domain.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
  CC [M]  drivers/gpu/drm/xe/display/xe_plane_initial.o
  CC [M]  drivers/gpu/drm/drm_gem_ttm_helper.o
  CC [M]  drivers/gpu/drm/xe/display/xe_tdf.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_internal.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_lmem.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_dram.o
  AR      net/ipv4/built-in.a
  CC      drivers/gpu/drm/i915/gem/i915_gem_mman.o
  AR      drivers/net/built-in.a
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_pch.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_object.o
  CC [M]  drivers/gpu/drm/xe/i915-display/icl_dsi.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_pages.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_phys.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_audio.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_backlight.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_pm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bios.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bw.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cdclk.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_color.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_connector.o
  LD [M]  drivers/gpu/drm/drm_suballoc_helper.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_region.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc_state_dump.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_shmem.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cursor.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cx0_phy.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_stolen.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_throttle.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_tiling.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi_buf_trans.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_device.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_driver.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_params.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_userptr.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_wait.o
  CC      drivers/gpu/drm/i915/gem/i915_gemfs.o
  LD [M]  drivers/gpu/drm/drm_ttm_helper.o
  CC      drivers/gpu/drm/i915/i915_active.o
  CC      drivers/gpu/drm/i915/i915_cmd_parser.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_map.o
  CC      drivers/gpu/drm/i915/i915_deps.o
  CC      drivers/gpu/drm/i915/i915_gem.o
  CC      drivers/gpu/drm/i915/i915_gem_evict.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_well.o
  CC      drivers/gpu/drm/i915/i915_gem_gtt.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_trace.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_wa.o
  CC      drivers/gpu/drm/i915/i915_gem_ww.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o
  CC      drivers/gpu/drm/i915/i915_query.o
  CC      drivers/gpu/drm/i915/i915_request.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc.o
  CC      drivers/gpu/drm/i915/i915_scheduler.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_hdcp.o
  CC      drivers/gpu/drm/i915/i915_trace_points.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_link_training.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_mst.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll.o
  CC      drivers/gpu/drm/i915/i915_ttm_buddy_manager.o
  CC      drivers/gpu/drm/i915/i915_vma.o
  CC      drivers/gpu/drm/i915/i915_vma_resource.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpt_common.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_drrs.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/xe/i915-display/intel_dsi_dcs_backlight.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi_vbt.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fb.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fbc.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_log.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fdi.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_rc.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_global_state.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_gmbus.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp_gsc_message.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdmi.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_huc.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_huc_fw.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_uc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hti.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_link_bw.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_uc_fw.o
  CC      drivers/gpu/drm/i915/gt/intel_gsc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_lspcon.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_lock.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_setup.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      drivers/gpu/drm/i915/i915_hwmon.o
  CC      drivers/gpu/drm/i915/display/hsw_ips.o
  CC      drivers/gpu/drm/i915/display/i9xx_plane.o
  CC      drivers/gpu/drm/i915/display/i9xx_wm.o
  CC      drivers/gpu/drm/i915/display/intel_atomic.o
  CC      drivers/gpu/drm/i915/display/intel_atomic_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pmdemand.o
  CC      drivers/gpu/drm/i915/display/intel_audio.o
  CC      drivers/gpu/drm/i915/display/intel_bios.o
  CC      drivers/gpu/drm/i915/display/intel_bw.o
  CC      drivers/gpu/drm/i915/display/intel_cdclk.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pps.o
  CC      drivers/gpu/drm/i915/display/intel_color.o
  CC      drivers/gpu/drm/i915/display/intel_combo_phy.o
  CC      drivers/gpu/drm/i915/display/intel_connector.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_psr.o
  CC      drivers/gpu/drm/i915/display/intel_crtc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_qp_tables.o
  CC      drivers/gpu/drm/i915/display/intel_crtc_state_dump.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_quirks.o
  CC      drivers/gpu/drm/i915/display/intel_cursor.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_snps_phy.o
  CC      drivers/gpu/drm/i915/display/intel_display.o
  CC      drivers/gpu/drm/i915/display/intel_display_driver.o
  CC      drivers/gpu/drm/i915/display/intel_display_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_tc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vblank.o
  CC      drivers/gpu/drm/i915/display/intel_display_params.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vdsc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vga.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vrr.o
  CC      drivers/gpu/drm/i915/display/intel_display_power.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc_wl.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_wm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_scaler.o
  CC      drivers/gpu/drm/i915/display/intel_display_power_map.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_watermark.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_acpi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_opregion.o
  CC      drivers/gpu/drm/i915/display/intel_display_power_well.o
  CC      drivers/gpu/drm/i915/display/intel_display_reset.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs_params.o
  CC      drivers/gpu/drm/i915/display/intel_display_rps.o
  CC      drivers/gpu/drm/i915/display/intel_display_wa.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ads.o
  CC      drivers/gpu/drm/i915/display/intel_dmc.o
  CC      drivers/gpu/drm/i915/display/intel_dmc_wl.o
  CC      drivers/gpu/drm/i915/display/intel_dpio_phy.o
  CC      drivers/gpu/drm/i915/display/intel_dpll.o
  CC      drivers/gpu/drm/i915/display/intel_dpll_mgr.o
  CC      drivers/gpu/drm/i915/display/intel_dpt.o
  CC      drivers/gpu/drm/i915/display/intel_dpt_common.o
  CC      drivers/gpu/drm/i915/display/intel_drrs.o
  CC      drivers/gpu/drm/i915/display/intel_dsb.o
  CC      drivers/gpu/drm/i915/display/intel_dsb_buffer.o
  CC      drivers/gpu/drm/i915/display/intel_fb.o
  CC      drivers/gpu/drm/i915/display/intel_fb_bo.o
  CC      drivers/gpu/drm/i915/display/intel_fb_pin.o
  CC      drivers/gpu/drm/i915/display/intel_fbc.o
  CC      drivers/gpu/drm/i915/display/intel_fdi.o
  CC      drivers/gpu/drm/i915/display/intel_fifo_underrun.o
  CC      drivers/gpu/drm/i915/display/intel_frontbuffer.o
  CC      drivers/gpu/drm/i915/display/intel_global_state.o
  CC      drivers/gpu/drm/i915/display/intel_hdcp.o
  CC      drivers/gpu/drm/i915/display/intel_hdcp_gsc.o
  AR      net/mac80211/built-in.a
  AR      net/built-in.a
  CC      drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.o
  CC      drivers/gpu/drm/i915/display/intel_hotplug.o
In file included from /workspace/kernel/include/drm/drm_mm.h:51,
                 from /workspace/kernel/drivers/gpu/drm/xe/xe_bo_types.h:11,
                 from /workspace/kernel/drivers/gpu/drm/xe/xe_bo.h:11,
                 from /workspace/kernel/drivers/gpu/drm/xe/xe_guc_ads.c:16:
/workspace/kernel/drivers/gpu/drm/xe/xe_guc_ads.c: In function ‘guc_capture_prep_lists’:
/workspace/kernel/drivers/gpu/drm/xe/xe_gt_printk.h:14:36: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 6 has type ‘u32’ {aka ‘unsigned int’} [-Werror=format=]
   14 |  drm_##_level(&gt_to_xe(_gt)->drm, "GT%u: " _fmt, (_gt)->info.id, ##__VA_ARGS__)
      |                                    ^~~~~~~~
/workspace/kernel/include/drm/drm_print.h:422:32: note: in definition of macro ‘drm_dev_dbg’
  422 |  __drm_dev_dbg(NULL, dev, cat, fmt, ##__VA_ARGS__)
      |                                ^~~
/workspace/kernel/include/drm/drm_print.h:522:32: note: in expansion of macro ‘drm_dbg_driver’
  522 | #define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
      |                                ^~~~~~~~~~~~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_gt_printk.h:14:2: note: in expansion of macro ‘drm_dbg’
   14 |  drm_##_level(&gt_to_xe(_gt)->drm, "GT%u: " _fmt, (_gt)->info.id, ##__VA_ARGS__)
      |  ^~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_gt_printk.h:35:2: note: in expansion of macro ‘xe_gt_printk’
   35 |  xe_gt_printk((_gt), dbg, _fmt, ##__VA_ARGS__)
      |  ^~~~~~~~~~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_guc_ads.c:656:6: note: in expansion of macro ‘xe_gt_dbg’
  656 |      xe_gt_dbg(gt, "Capture size overflow :%lu vs %d\n",
      |      ^~~~~~~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_guc_ads.c:656:46: note: format string is defined here
  656 |      xe_gt_dbg(gt, "Capture size overflow :%lu vs %d\n",
      |                                            ~~^
      |                                              |
      |                                              long unsigned int
      |                                            %u
In file included from /workspace/kernel/include/drm/drm_mm.h:51,
                 from /workspace/kernel/drivers/gpu/drm/xe/xe_bo_types.h:11,
                 from /workspace/kernel/drivers/gpu/drm/xe/xe_bo.h:11,
                 from /workspace/kernel/drivers/gpu/drm/xe/xe_guc_ads.c:16:
/workspace/kernel/drivers/gpu/drm/xe/xe_gt_printk.h:14:36: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 6 has type ‘u32’ {aka ‘unsigned int’} [-Werror=format=]
   14 |  drm_##_level(&gt_to_xe(_gt)->drm, "GT%u: " _fmt, (_gt)->info.id, ##__VA_ARGS__)
      |                                    ^~~~~~~~
/workspace/kernel/include/drm/drm_print.h:422:32: note: in definition of macro ‘drm_dev_dbg’
  422 |  __drm_dev_dbg(NULL, dev, cat, fmt, ##__VA_ARGS__)
      |                                ^~~
/workspace/kernel/include/drm/drm_print.h:522:32: note: in expansion of macro ‘drm_dbg_driver’
  522 | #define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
      |                                ^~~~~~~~~~~~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_gt_printk.h:14:2: note: in expansion of macro ‘drm_dbg’
   14 |  drm_##_level(&gt_to_xe(_gt)->drm, "GT%u: " _fmt, (_gt)->info.id, ##__VA_ARGS__)
      |  ^~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_gt_printk.h:35:2: note: in expansion of macro ‘xe_gt_printk’
   35 |  xe_gt_printk((_gt), dbg, _fmt, ##__VA_ARGS__)
      |  ^~~~~~~~~~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_guc_ads.c:684:6: note: in expansion of macro ‘xe_gt_dbg’
  684 |      xe_gt_dbg(gt, "Capture size overflow :%lu vs %d\n",
      |      ^~~~~~~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_guc_ads.c:684:46: note: format string is defined here
  684 |      xe_gt_dbg(gt, "Capture size overflow :%lu vs %d\n",
      |                                            ~~^
      |                                              |
      |                                              long unsigned int
      |                                            %u
In file included from /workspace/kernel/include/drm/drm_mm.h:51,
                 from /workspace/kernel/drivers/gpu/drm/xe/xe_bo_types.h:11,
                 from /workspace/kernel/drivers/gpu/drm/xe/xe_bo.h:11,
                 from /workspace/kernel/drivers/gpu/drm/xe/xe_guc_ads.c:16:
/workspace/kernel/drivers/gpu/drm/xe/xe_gt_printk.h:14:36: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 6 has type ‘u32’ {aka ‘unsigned int’} [-Werror=format=]
   14 |  drm_##_level(&gt_to_xe(_gt)->drm, "GT%u: " _fmt, (_gt)->info.id, ##__VA_ARGS__)
      |                                    ^~~~~~~~
/workspace/kernel/include/drm/drm_print.h:422:32: note: in definition of macro ‘drm_dev_dbg’
  422 |  __drm_dev_dbg(NULL, dev, cat, fmt, ##__VA_ARGS__)
      |                                ^~~
/workspace/kernel/include/drm/drm_print.h:522:32: note: in expansion of macro ‘drm_dbg_driver’
  522 | #define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
      |                                ^~~~~~~~~~~~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_gt_printk.h:14:2: note: in expansion of macro ‘drm_dbg’
   14 |  drm_##_level(&gt_to_xe(_gt)->drm, "GT%u: " _fmt, (_gt)->info.id, ##__VA_ARGS__)
      |  ^~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_gt_printk.h:35:2: note: in expansion of macro ‘xe_gt_printk’
   35 |  xe_gt_printk((_gt), dbg, _fmt, ##__VA_ARGS__)
      |  ^~~~~~~~~~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_guc_ads.c:712:5: note: in expansion of macro ‘xe_gt_dbg’
  712 |     xe_gt_dbg(gt, "Capture size overflow :%lu vs %d\n",
      |     ^~~~~~~~~
/workspace/kernel/drivers/gpu/drm/xe/xe_guc_ads.c:712:45: note: format string is defined here
  712 |     xe_gt_dbg(gt, "Capture size overflow :%lu vs %d\n",
      |                                           ~~^
      |                                             |
      |                                             long unsigned int
      |                                           %u
  CC      drivers/gpu/drm/i915/display/intel_hotplug_irq.o
  CC      drivers/gpu/drm/i915/display/intel_hti.o
  CC      drivers/gpu/drm/i915/display/intel_link_bw.o
  CC      drivers/gpu/drm/i915/display/intel_load_detect.o
  CC      drivers/gpu/drm/i915/display/intel_lpe_audio.o
  CC      drivers/gpu/drm/i915/display/intel_modeset_lock.o
  CC      drivers/gpu/drm/i915/display/intel_modeset_setup.o
  CC      drivers/gpu/drm/i915/display/intel_overlay.o
  CC      drivers/gpu/drm/i915/display/intel_modeset_verify.o
  CC      drivers/gpu/drm/i915/display/intel_pch_display.o
  CC      drivers/gpu/drm/i915/display/intel_pch_refclk.o
  CC      drivers/gpu/drm/i915/display/intel_plane_initial.o
  CC      drivers/gpu/drm/i915/display/intel_pmdemand.o
  CC      drivers/gpu/drm/i915/display/intel_psr.o
cc1: all warnings being treated as errors
  CC      drivers/gpu/drm/i915/display/intel_quirks.o
make[6]: *** [/workspace/kernel/scripts/Makefile.build:244: drivers/gpu/drm/xe/xe_guc_ads.o] Error 1
make[6]: *** Waiting for unfinished jobs....
  CC      drivers/gpu/drm/i915/display/intel_sprite.o
  CC      drivers/gpu/drm/i915/display/intel_sprite_uapi.o
  CC      drivers/gpu/drm/i915/display/intel_tc.o
  CC      drivers/gpu/drm/i915/display/intel_vblank.o
  CC      drivers/gpu/drm/i915/display/intel_vga.o
  CC      drivers/gpu/drm/i915/display/intel_wm.o
  CC      drivers/gpu/drm/i915/display/skl_scaler.o
  CC      drivers/gpu/drm/i915/display/skl_universal_plane.o
  CC      drivers/gpu/drm/i915/display/skl_watermark.o
  CC      drivers/gpu/drm/i915/display/intel_acpi.o
  CC      drivers/gpu/drm/i915/display/intel_opregion.o
  CC      drivers/gpu/drm/i915/display/intel_display_debugfs.o
  CC      drivers/gpu/drm/i915/display/intel_display_debugfs_params.o
  CC      drivers/gpu/drm/i915/display/intel_pipe_crc.o
  CC      drivers/gpu/drm/i915/display/dvo_ch7017.o
  CC      drivers/gpu/drm/i915/display/dvo_ch7xxx.o
  CC      drivers/gpu/drm/i915/display/dvo_ivch.o
  CC      drivers/gpu/drm/i915/display/dvo_ns2501.o
  CC      drivers/gpu/drm/i915/display/dvo_sil164.o
  CC      drivers/gpu/drm/i915/display/dvo_tfp410.o
  CC      drivers/gpu/drm/i915/display/g4x_dp.o
  CC      drivers/gpu/drm/i915/display/g4x_hdmi.o
  CC      drivers/gpu/drm/i915/display/icl_dsi.o
  CC      drivers/gpu/drm/i915/display/intel_backlight.o
  CC      drivers/gpu/drm/i915/display/intel_crt.o
  CC      drivers/gpu/drm/i915/display/intel_cx0_phy.o
  CC      drivers/gpu/drm/i915/display/intel_ddi.o
  CC      drivers/gpu/drm/i915/display/intel_ddi_buf_trans.o
  CC      drivers/gpu/drm/i915/display/intel_display_device.o
  CC      drivers/gpu/drm/i915/display/intel_display_trace.o
  CC      drivers/gpu/drm/i915/display/intel_dkl_phy.o
  CC      drivers/gpu/drm/i915/display/intel_dp.o
make[5]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers/gpu/drm/xe] Error 2
make[5]: *** Waiting for unfinished jobs....
  CC      drivers/gpu/drm/i915/display/intel_dp_aux.o
  CC      drivers/gpu/drm/i915/display/intel_dp_aux_backlight.o
  CC      drivers/gpu/drm/i915/display/intel_dp_hdcp.o
  CC      drivers/gpu/drm/i915/display/intel_dp_link_training.o
  CC      drivers/gpu/drm/i915/display/intel_dp_mst.o
  CC      drivers/gpu/drm/i915/display/intel_dsi.o
  CC      drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.o
  CC      drivers/gpu/drm/i915/display/intel_dsi_vbt.o
  CC      drivers/gpu/drm/i915/display/intel_dvo.o
  CC      drivers/gpu/drm/i915/display/intel_gmbus.o
  CC      drivers/gpu/drm/i915/display/intel_hdmi.o
  CC      drivers/gpu/drm/i915/display/intel_lspcon.o
  CC      drivers/gpu/drm/i915/display/intel_lvds.o
  CC      drivers/gpu/drm/i915/display/intel_panel.o
  CC      drivers/gpu/drm/i915/display/intel_pps.o
  CC      drivers/gpu/drm/i915/display/intel_qp_tables.o
  CC      drivers/gpu/drm/i915/display/intel_sdvo.o
  CC      drivers/gpu/drm/i915/display/intel_snps_phy.o
  CC      drivers/gpu/drm/i915/display/intel_tv.o
  CC      drivers/gpu/drm/i915/display/intel_vdsc.o
  CC      drivers/gpu/drm/i915/display/intel_vrr.o
  CC      drivers/gpu/drm/i915/display/vlv_dsi.o
  CC      drivers/gpu/drm/i915/display/vlv_dsi_pll.o
  CC      drivers/gpu/drm/i915/i915_perf.o
  CC      drivers/gpu/drm/i915/pxp/intel_pxp.o
  CC      drivers/gpu/drm/i915/pxp/intel_pxp_huc.o
  CC      drivers/gpu/drm/i915/pxp/intel_pxp_tee.o
  CC      drivers/gpu/drm/i915/i915_gpu_error.o
  CC      drivers/gpu/drm/i915/i915_vgpu.o
  AR      drivers/gpu/drm/i915/built-in.a
make[4]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers/gpu/drm] Error 2
make[3]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers/gpu] Error 2
make[2]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers] Error 2
make[1]: *** [/workspace/kernel/Makefile:1919: .] Error 2
make: *** [/workspace/kernel/Makefile:240: __sub-make] Error 2
run-parts: /workspace/ci/hooks/11-build-32b exited with return code 2



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

* ✓ CI.checksparse: success for drm/xe/guc: Add GuC based register capture for error capture (rev8)
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
                   ` (10 preceding siblings ...)
  2024-05-07  4:41 ` ✗ CI.Hooks: failure " Patchwork
@ 2024-05-07  4:49 ` Patchwork
  2024-05-07  5:24 ` ✗ CI.BAT: failure " Patchwork
  2024-05-07  9:35 ` ✗ CI.FULL: " Patchwork
  13 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2024-05-07  4:49 UTC (permalink / raw)
  To: Zhanjun Dong; +Cc: intel-xe

== Series Details ==

Series: drm/xe/guc: Add GuC based register capture for error capture (rev8)
URL   : https://patchwork.freedesktop.org/series/128077/
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 980de4c8f9c4fc65bd51d355372e06dc576c3ea7
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] 27+ messages in thread

* ✗ CI.BAT: failure for drm/xe/guc: Add GuC based register capture for error capture (rev8)
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
                   ` (11 preceding siblings ...)
  2024-05-07  4:49 ` ✓ CI.checksparse: success " Patchwork
@ 2024-05-07  5:24 ` Patchwork
  2024-05-07  9:35 ` ✗ CI.FULL: " Patchwork
  13 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2024-05-07  5:24 UTC (permalink / raw)
  To: Zhanjun Dong; +Cc: intel-xe

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

== Series Details ==

Series: drm/xe/guc: Add GuC based register capture for error capture (rev8)
URL   : https://patchwork.freedesktop.org/series/128077/
State : failure

== Summary ==

CI Bug Log - changes from xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7_BAT -> xe-pw-128077v8_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-128077v8_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-128077v8_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (0 -> 4)
------------------------------

  Additional (4): bat-pvc-2 bat-dg2-oem2 bat-atsm-2 bat-adlp-7 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in xe-pw-128077v8_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@core_hotunplug@unbind-rebind:
    - bat-atsm-2:         NOTRUN -> [INCOMPLETE][1]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@core_hotunplug@unbind-rebind.html

  * igt@xe_module_load@load:
    - bat-dg2-oem2:       NOTRUN -> [DMESG-WARN][2] +1 other test dmesg-warn
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-dg2-oem2/igt@xe_module_load@load.html
    - bat-atsm-2:         NOTRUN -> [DMESG-WARN][3]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@xe_module_load@load.html
    - bat-pvc-2:          NOTRUN -> [DMESG-WARN][4]
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@xe_module_load@load.html
    - bat-adlp-7:         NOTRUN -> [DMESG-WARN][5]
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-adlp-7/igt@xe_module_load@load.html

  
Known issues
------------

  Here are the changes found in xe-pw-128077v8_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@core_hotunplug@unbind-rebind:
    - bat-adlp-7:         NOTRUN -> [INCOMPLETE][6] ([Intel XE#1451])
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-adlp-7/igt@core_hotunplug@unbind-rebind.html

  * igt@kms_addfb_basic@addfb25-x-tiled-legacy:
    - bat-pvc-2:          NOTRUN -> [SKIP][7] ([i915#6077]) +30 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][8] ([Intel XE#623])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-dg2-oem2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@invalid-set-prop-any:
    - bat-atsm-2:         NOTRUN -> [SKIP][9] ([i915#6077]) +30 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@kms_addfb_basic@invalid-set-prop-any.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-atomic:
    - bat-pvc-2:          NOTRUN -> [SKIP][10] ([Intel XE#1024] / [Intel XE#782]) +5 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@kms_cursor_legacy@basic-flip-after-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-legacy:
    - bat-atsm-2:         NOTRUN -> [SKIP][11] ([Intel XE#1024] / [Intel XE#782]) +5 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@kms_cursor_legacy@basic-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-atsm-2:         NOTRUN -> [SKIP][12] ([Intel XE#1024] / [Intel XE#784])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@kms_dsc@dsc-basic.html
    - bat-pvc-2:          NOTRUN -> [SKIP][13] ([Intel XE#1024] / [Intel XE#784])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@kms_dsc@dsc-basic.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][14] ([Intel XE#455])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-dg2-oem2/igt@kms_dsc@dsc-basic.html
    - bat-adlp-7:         NOTRUN -> [SKIP][15] ([Intel XE#455])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-adlp-7/igt@kms_dsc@dsc-basic.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - bat-pvc-2:          NOTRUN -> [SKIP][16] ([Intel XE#1024] / [Intel XE#947]) +3 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@kms_flip@basic-flip-vs-dpms.html

  * igt@kms_flip@basic-flip-vs-modeset:
    - bat-atsm-2:         NOTRUN -> [SKIP][17] ([Intel XE#1024] / [Intel XE#947]) +3 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@kms_flip@basic-flip-vs-modeset.html

  * igt@kms_force_connector_basic@force-connector-state:
    - bat-pvc-2:          NOTRUN -> [SKIP][18] ([Intel XE#540]) +3 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@kms_force_connector_basic@force-connector-state.html
    - bat-atsm-2:         NOTRUN -> [SKIP][19] ([Intel XE#540]) +3 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@kms_force_connector_basic@force-connector-state.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][20] ([i915#5274])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-dg2-oem2/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-pvc-2:          NOTRUN -> [SKIP][21] ([Intel XE#1024] / [Intel XE#783])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@kms_frontbuffer_tracking@basic.html
    - bat-adlp-7:         NOTRUN -> [FAIL][22] ([Intel XE#616])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-adlp-7/igt@kms_frontbuffer_tracking@basic.html
    - bat-atsm-2:         NOTRUN -> [SKIP][23] ([Intel XE#1024] / [Intel XE#783])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24:
    - bat-atsm-2:         NOTRUN -> [SKIP][24] ([i915#1836]) +6 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-pvc-2:          NOTRUN -> [SKIP][25] ([Intel XE#829]) +6 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  * igt@kms_prop_blob@basic:
    - bat-pvc-2:          NOTRUN -> [SKIP][26] ([Intel XE#780])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@kms_prop_blob@basic.html
    - bat-atsm-2:         NOTRUN -> [SKIP][27] ([Intel XE#780])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@kms_prop_blob@basic.html

  * igt@kms_psr@psr-cursor-plane-move:
    - bat-pvc-2:          NOTRUN -> [SKIP][28] ([Intel XE#1024]) +2 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@kms_psr@psr-cursor-plane-move.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][29] ([Intel XE#929]) +2 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-dg2-oem2/igt@kms_psr@psr-cursor-plane-move.html

  * igt@kms_psr@psr-primary-page-flip:
    - bat-atsm-2:         NOTRUN -> [SKIP][30] ([Intel XE#1024]) +2 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@kms_psr@psr-primary-page-flip.html

  * igt@xe_evict@evict-beng-small-external:
    - bat-pvc-2:          NOTRUN -> [FAIL][31] ([Intel XE#1000]) +3 other tests fail
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@xe_evict@evict-beng-small-external.html

  * igt@xe_evict@evict-small-cm:
    - bat-pvc-2:          NOTRUN -> [DMESG-FAIL][32] ([Intel XE#482]) +3 other tests dmesg-fail
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@xe_evict@evict-small-cm.html

  * igt@xe_evict_ccs@evict-overcommit-simple:
    - bat-adlp-7:         NOTRUN -> [SKIP][33] ([Intel XE#688]) +1 other test skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-adlp-7/igt@xe_evict_ccs@evict-overcommit-simple.html

  * igt@xe_exec_fault_mode@many-basic:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][34] ([Intel XE#288]) +32 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-dg2-oem2/igt@xe_exec_fault_mode@many-basic.html

  * igt@xe_gt_freq@freq_range_idle:
    - bat-pvc-2:          NOTRUN -> [SKIP][35] ([Intel XE#1021]) +1 other test skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@xe_gt_freq@freq_range_idle.html

  * igt@xe_huc_copy@huc_copy:
    - bat-pvc-2:          NOTRUN -> [SKIP][36] ([Intel XE#255])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@xe_huc_copy@huc_copy.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][37] ([Intel XE#255])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-dg2-oem2/igt@xe_huc_copy@huc_copy.html
    - bat-atsm-2:         NOTRUN -> [SKIP][38] ([Intel XE#255])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@xe_huc_copy@huc_copy.html

  * igt@xe_intel_bb@render:
    - bat-pvc-2:          NOTRUN -> [SKIP][39] ([Intel XE#532])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@xe_intel_bb@render.html

  * igt@xe_live_ktest@xe_bo:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][40] ([Intel XE#1192]) +2 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-dg2-oem2/igt@xe_live_ktest@xe_bo.html

  * igt@xe_mmap@vram:
    - bat-adlp-7:         NOTRUN -> [SKIP][41] ([Intel XE#1008])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-adlp-7/igt@xe_mmap@vram.html

  * igt@xe_pat@pat-index-xe2:
    - bat-pvc-2:          NOTRUN -> [SKIP][42] ([Intel XE#977]) +1 other test skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@xe_pat@pat-index-xe2.html
    - bat-adlp-7:         NOTRUN -> [SKIP][43] ([Intel XE#977])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-adlp-7/igt@xe_pat@pat-index-xe2.html
    - bat-atsm-2:         NOTRUN -> [SKIP][44] ([Intel XE#977])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@xe_pat@pat-index-xe2.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][45] ([Intel XE#977])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-dg2-oem2/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pat@pat-index-xehpc:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][46] ([Intel XE#979]) +1 other test skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-dg2-oem2/igt@xe_pat@pat-index-xehpc.html
    - bat-adlp-7:         NOTRUN -> [SKIP][47] ([Intel XE#979]) +1 other test skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-adlp-7/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xehpc@render:
    - bat-pvc-2:          NOTRUN -> [SKIP][48] ([Intel XE#976])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@xe_pat@pat-index-xehpc@render.html

  * igt@xe_pat@pat-index-xelpg:
    - bat-atsm-2:         NOTRUN -> [SKIP][49] ([Intel XE#979]) +1 other test skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-atsm-2/igt@xe_pat@pat-index-xelpg.html
    - bat-pvc-2:          NOTRUN -> [SKIP][50] ([Intel XE#979])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_pm_residency@gt-c6-on-idle:
    - bat-pvc-2:          NOTRUN -> [SKIP][51] ([Intel XE#531])
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/bat-pvc-2/igt@xe_pm_residency@gt-c6-on-idle.html

  
  [Intel XE#1000]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1000
  [Intel XE#1008]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1008
  [Intel XE#1021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1021
  [Intel XE#1024]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1024
  [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
  [Intel XE#1451]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1451
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/482
  [Intel XE#531]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/531
  [Intel XE#532]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/532
  [Intel XE#540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/540
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#780]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/780
  [Intel XE#782]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/782
  [Intel XE#783]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/783
  [Intel XE#784]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/784
  [Intel XE#829]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/829
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#947]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/947
  [Intel XE#976]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/976
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
  [i915#1836]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1836
  [i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274
  [i915#6077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6077


Build changes
-------------

  * Linux: xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7 -> xe-pw-128077v8

  IGT_7835: 4b767566bbc6c3ac342b54620aec0fabc8cdd4bf @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7: 980de4c8f9c4fc65bd51d355372e06dc576c3ea7
  xe-pw-128077v8: 128077v8

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/index.html

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

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

* ✗ CI.FULL: failure for drm/xe/guc: Add GuC based register capture for error capture (rev8)
  2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
                   ` (12 preceding siblings ...)
  2024-05-07  5:24 ` ✗ CI.BAT: failure " Patchwork
@ 2024-05-07  9:35 ` Patchwork
  13 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2024-05-07  9:35 UTC (permalink / raw)
  To: Zhanjun Dong; +Cc: intel-xe

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

== Series Details ==

Series: drm/xe/guc: Add GuC based register capture for error capture (rev8)
URL   : https://patchwork.freedesktop.org/series/128077/
State : failure

== Summary ==

CI Bug Log - changes from xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7_full -> xe-pw-128077v8_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-128077v8_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-128077v8_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (3 -> 3)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in xe-pw-128077v8_full:

### IGT changes ###

#### Possible regressions ####

  * igt@core_hotunplug@hotunbind-rebind:
    - shard-adlp:         [PASS][1] -> [ABORT][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-2/igt@core_hotunplug@hotunbind-rebind.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@core_hotunplug@hotunbind-rebind.html
    - shard-dg2-set2:     [PASS][3] -> [ABORT][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-435/igt@core_hotunplug@hotunbind-rebind.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-434/igt@core_hotunplug@hotunbind-rebind.html

  * igt@xe_module_load@many-reload:
    - shard-adlp:         NOTRUN -> [ABORT][5]
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@xe_module_load@many-reload.html

  * igt@xe_pat@pat-index-xelp:
    - shard-dg2-set2:     [PASS][6] -> [FAIL][7] +11 other tests fail
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-435/igt@xe_pat@pat-index-xelp.html
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-464/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pat@pat-index-xelp@dw:
    - shard-adlp:         [PASS][8] -> [FAIL][9] +2 other tests fail
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-1/igt@xe_pat@pat-index-xelp@dw.html
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-1/igt@xe_pat@pat-index-xelp@dw.html

  * igt@xe_pm@s4-d3hot-basic-exec:
    - shard-dg2-set2:     [PASS][10] -> [WARN][11]
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-464/igt@xe_pm@s4-d3hot-basic-exec.html
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-434/igt@xe_pm@s4-d3hot-basic-exec.html
    - shard-adlp:         NOTRUN -> [WARN][12]
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@xe_pm@s4-d3hot-basic-exec.html

  
#### Warnings ####

  * igt@kms_flip@flip-vs-suspend@a-hdmi-a6:
    - shard-dg2-set2:     [DMESG-WARN][13] ([Intel XE#1162] / [Intel XE#1214]) -> [FAIL][14] +1 other test fail
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-466/igt@kms_flip@flip-vs-suspend@a-hdmi-a6.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-466/igt@kms_flip@flip-vs-suspend@a-hdmi-a6.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
    - shard-dg2-set2:     [FAIL][15] ([Intel XE#616]) -> [DMESG-FAIL][16]
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-435/igt@kms_frontbuffer_tracking@fbc-suspend.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-464/igt@kms_frontbuffer_tracking@fbc-suspend.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@kms_pm_backlight@fade-with-dpms:
    - {shard-lnl}:        [PASS][17] -> [SKIP][18]
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-lnl-3/igt@kms_pm_backlight@fade-with-dpms.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-lnl-7/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@xe_exec_basic@no-exec-null:
    - {shard-lnl}:        [PASS][19] -> [DMESG-WARN][20]
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-lnl-8/igt@xe_exec_basic@no-exec-null.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-lnl-8/igt@xe_exec_basic@no-exec-null.html

  * igt@xe_exec_threads@threads-fd-userptr-invalidate-race:
    - {shard-lnl}:        [PASS][21] -> [FAIL][22]
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-lnl-6/igt@xe_exec_threads@threads-fd-userptr-invalidate-race.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-lnl-6/igt@xe_exec_threads@threads-fd-userptr-invalidate-race.html

  * igt@xe_module_load@reload:
    - {shard-lnl}:        [PASS][23] -> [INCOMPLETE][24] +2 other tests incomplete
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-lnl-6/igt@xe_module_load@reload.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-lnl-6/igt@xe_module_load@reload.html

  * igt@xe_module_load@reload-no-display:
    - {shard-lnl}:        [PASS][25] -> [ABORT][26]
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-lnl-1/igt@xe_module_load@reload-no-display.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-lnl-8/igt@xe_module_load@reload-no-display.html

  * igt@xe_pm@s4-d3hot-basic-exec:
    - {shard-lnl}:        [PASS][27] -> [WARN][28]
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-lnl-3/igt@xe_pm@s4-d3hot-basic-exec.html
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-lnl-7/igt@xe_pm@s4-d3hot-basic-exec.html

  
Known issues
------------

  Here are the changes found in xe-pw-128077v8_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@core_hotunplug@unbind-rebind:
    - shard-dg2-set2:     [PASS][29] -> [DMESG-WARN][30] ([Intel XE#1214]) +1 other test dmesg-warn
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-433/igt@core_hotunplug@unbind-rebind.html
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-466/igt@core_hotunplug@unbind-rebind.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [PASS][31] -> [FAIL][32] ([Intel XE#1388]) +1 other test fail
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-466/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-6.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-466/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-hdmi-a-6.html

  * igt@kms_big_fb@4-tiled-addfb-size-overflow:
    - shard-adlp:         NOTRUN -> [SKIP][33] ([Intel XE#1201] / [Intel XE#610]) +1 other test skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_big_fb@4-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0:
    - shard-adlp:         NOTRUN -> [SKIP][34] ([Intel XE#1124] / [Intel XE#1201]) +11 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-9/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html

  * igt@kms_big_fb@linear-16bpp-rotate-90:
    - shard-adlp:         NOTRUN -> [SKIP][35] ([Intel XE#1201] / [Intel XE#316]) +1 other test skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-1/igt@kms_big_fb@linear-16bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-adlp:         NOTRUN -> [FAIL][36] ([Intel XE#1231]) +3 other tests fail
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-90:
    - shard-dg2-set2:     NOTRUN -> [SKIP][37] ([Intel XE#1124] / [Intel XE#1201])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@kms_big_fb@yf-tiled-64bpp-rotate-90.html

  * igt@kms_bw@linear-tiling-1-displays-2160x1440p:
    - shard-adlp:         NOTRUN -> [SKIP][38] ([Intel XE#1201] / [Intel XE#367]) +3 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-9/igt@kms_bw@linear-tiling-1-displays-2160x1440p.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][39] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +33 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-7:
    - shard-dg2-set2:     NOTRUN -> [SKIP][40] ([Intel XE#1201] / [Intel XE#787]) +57 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-464/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-7.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][41] ([Intel XE#1201] / [Intel XE#787]) +50 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs:
    - shard-adlp:         NOTRUN -> [SKIP][42] ([Intel XE#1201] / [Intel XE#1252])
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-1/igt@kms_ccs@crc-primary-basic-4-tiled-xe2-ccs.html

  * igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][43] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +18 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-434/igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs@pipe-d-dp-4.html

  * igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][44] ([Intel XE#1201] / [Intel XE#314]) +3 other tests skip
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_cdclk@mode-transition@pipe-b-hdmi-a-1.html

  * igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][45] ([Intel XE#1201] / [Intel XE#314] / [Intel XE#455])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_cdclk@mode-transition@pipe-d-hdmi-a-1.html

  * igt@kms_chamelium_hpd@dp-hpd-storm:
    - shard-adlp:         NOTRUN -> [SKIP][46] ([Intel XE#1201] / [Intel XE#373]) +15 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_chamelium_hpd@dp-hpd-storm.html

  * igt@kms_content_protection@atomic-dpms@pipe-a-dp-4:
    - shard-dg2-set2:     NOTRUN -> [FAIL][47] ([Intel XE#1178])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@kms_content_protection@atomic-dpms@pipe-a-dp-4.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-adlp:         NOTRUN -> [SKIP][48] ([Intel XE#1201] / [Intel XE#307]) +1 other test skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-4/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@legacy:
    - shard-adlp:         NOTRUN -> [SKIP][49] ([Intel XE#1201] / [Intel XE#455]) +34 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_content_protection@legacy.html

  * igt@kms_cursor_crc@cursor-rapid-movement-256x256@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     [PASS][50] -> [DMESG-WARN][51] ([Intel XE#1214] / [Intel XE#282]) +4 other tests dmesg-warn
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-435/igt@kms_cursor_crc@cursor-rapid-movement-256x256@pipe-d-hdmi-a-6.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-463/igt@kms_cursor_crc@cursor-rapid-movement-256x256@pipe-d-hdmi-a-6.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-adlp:         NOTRUN -> [SKIP][52] ([Intel XE#1201] / [Intel XE#308])
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions:
    - shard-adlp:         NOTRUN -> [SKIP][53] ([Intel XE#1201] / [Intel XE#309]) +2 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions.html

  * igt@kms_cursor_legacy@forked-bo:
    - shard-adlp:         NOTRUN -> [INCOMPLETE][54] ([Intel XE#1195]) +5 other tests incomplete
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-1/igt@kms_cursor_legacy@forked-bo.html

  * igt@kms_cursor_legacy@forked-bo@pipe-c:
    - shard-dg2-set2:     [PASS][55] -> [INCOMPLETE][56] ([Intel XE#1195]) +3 other tests incomplete
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-436/igt@kms_cursor_legacy@forked-bo@pipe-c.html
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@kms_cursor_legacy@forked-bo@pipe-c.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-adlp:         NOTRUN -> [SKIP][57] ([Intel XE#1201] / [Intel XE#323])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-9/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_draw_crc@draw-method-blt:
    - shard-adlp:         [PASS][58] -> [DMESG-FAIL][59] ([Intel XE#1033]) +1 other test dmesg-fail
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-2/igt@kms_draw_crc@draw-method-blt.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_draw_crc@draw-method-blt.html

  * igt@kms_feature_discovery@chamelium:
    - shard-adlp:         NOTRUN -> [SKIP][60] ([Intel XE#1201] / [Intel XE#701])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-4/igt@kms_feature_discovery@chamelium.html

  * igt@kms_flip@2x-wf_vblank-ts-check:
    - shard-adlp:         NOTRUN -> [SKIP][61] ([Intel XE#1201] / [Intel XE#310]) +9 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-4/igt@kms_flip@2x-wf_vblank-ts-check.html

  * igt@kms_flip@flip-vs-suspend-interruptible@d-hdmi-a1:
    - shard-adlp:         NOTRUN -> [DMESG-WARN][62] ([Intel XE#1214] / [Intel XE#1608]) +1 other test dmesg-warn
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_flip@flip-vs-suspend-interruptible@d-hdmi-a1.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
    - shard-adlp:         NOTRUN -> [DMESG-FAIL][63] ([Intel XE#324]) +1 other test dmesg-fail
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-x:
    - shard-adlp:         [PASS][64] -> [FAIL][65] ([Intel XE#616]) +3 other tests fail
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-4/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-x.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-x.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt:
    - shard-adlp:         NOTRUN -> [SKIP][66] ([Intel XE#1201] / [Intel XE#656]) +50 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-wc:
    - shard-adlp:         NOTRUN -> [SKIP][67] ([Intel XE#1201] / [Intel XE#651]) +17 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-adlp:         NOTRUN -> [SKIP][68] ([Intel XE#1201] / [Intel XE#653]) +17 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][69] ([Intel XE#1201] / [Intel XE#653]) +1 other test skip
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html

  * igt@kms_getfb@getfb-reject-ccs:
    - shard-adlp:         NOTRUN -> [SKIP][70] ([Intel XE#1201] / [Intel XE#1341])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-4/igt@kms_getfb@getfb-reject-ccs.html

  * igt@kms_getfb@getfb2-accept-ccs:
    - shard-adlp:         NOTRUN -> [SKIP][71] ([Intel XE#1201] / [Intel XE#1339])
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-1/igt@kms_getfb@getfb2-accept-ccs.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-1:
    - shard-adlp:         [PASS][72] -> [DMESG-WARN][73] ([Intel XE#1191] / [Intel XE#1214])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-4/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-1.html
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-4/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-1.html

  * igt@kms_plane@pixel-format@pipe-b:
    - shard-adlp:         NOTRUN -> [FAIL][74] ([Intel XE#1331]) +2 other tests fail
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_plane@pixel-format@pipe-b.html

  * igt@kms_plane_multiple@tiling-x:
    - shard-adlp:         NOTRUN -> [FAIL][75] ([Intel XE#616] / [Intel XE#654]) +4 other tests fail
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_plane_multiple@tiling-x.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [FAIL][76] ([Intel XE#361]) +1 other test fail
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-1.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format:
    - shard-adlp:         NOTRUN -> [SKIP][77] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#498]) +1 other test skip
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-9/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][78] ([Intel XE#1201] / [Intel XE#498]) +2 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-9/igt@kms_plane_scaling@plane-downscale-factor-0-25-with-pixel-format@pipe-b-hdmi-a-1.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-a-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][79] ([Intel XE#1201] / [Intel XE#305]) +5 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-a-hdmi-a-1.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25:
    - shard-adlp:         NOTRUN -> [SKIP][80] ([Intel XE#1201] / [Intel XE#305] / [Intel XE#455]) +3 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html

  * igt@kms_pm_backlight@bad-brightness:
    - shard-adlp:         NOTRUN -> [SKIP][81] ([Intel XE#1201] / [Intel XE#870]) +1 other test skip
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_pm_backlight@bad-brightness.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-adlp:         NOTRUN -> [SKIP][82] ([Intel XE#1129] / [Intel XE#1201])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-1/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-dg2-set2:     [PASS][83] -> [FAIL][84] ([Intel XE#1204])
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-435/igt@kms_pm_dc@dc9-dpms.html
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-464/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_pm_rpm@basic-rte:
    - shard-adlp:         [PASS][85] -> [FAIL][86] ([Intel XE#1203])
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-1/igt@kms_pm_rpm@basic-rte.html
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_pm_rpm@basic-rte.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-adlp:         [PASS][87] -> [SKIP][88] ([Intel XE#1201] / [Intel XE#1211]) +9 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-2/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_pm_rpm@dpms-non-lpsp:
    - shard-adlp:         NOTRUN -> [SKIP][89] ([Intel XE#1201] / [Intel XE#1211]) +3 other tests skip
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_pm_rpm@dpms-non-lpsp.html

  * igt@kms_pm_rpm@modeset-stress-extra-wait:
    - shard-dg2-set2:     [PASS][90] -> [SKIP][91] ([Intel XE#1201] / [Intel XE#1211]) +16 other tests skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-436/igt@kms_pm_rpm@modeset-stress-extra-wait.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-435/igt@kms_pm_rpm@modeset-stress-extra-wait.html

  * igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-fully-sf:
    - shard-adlp:         NOTRUN -> [SKIP][92] ([Intel XE#1201]) +7 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_psr2_sf@fbc-cursor-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_su@page_flip-p010:
    - shard-adlp:         NOTRUN -> [SKIP][93] ([Intel XE#1122] / [Intel XE#1201])
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_psr2_su@page_flip-p010.html

  * igt@kms_psr@fbc-pr-sprite-blt:
    - shard-adlp:         NOTRUN -> [SKIP][94] ([Intel XE#1201] / [Intel XE#929]) +17 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_psr@fbc-pr-sprite-blt.html

  * igt@kms_psr@fbc-pr-sprite-plane-move:
    - shard-dg2-set2:     NOTRUN -> [SKIP][95] ([Intel XE#1201] / [Intel XE#929])
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@kms_psr@fbc-pr-sprite-plane-move.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-adlp:         NOTRUN -> [SKIP][96] ([Intel XE#1149] / [Intel XE#1201])
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@multiplane-rotation:
    - shard-adlp:         NOTRUN -> [FAIL][97] ([Intel XE#616]) +4 other tests fail
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_rotation_crc@multiplane-rotation.html

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
    - shard-adlp:         NOTRUN -> [SKIP][98] ([Intel XE#1127] / [Intel XE#1201]) +1 other test skip
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@sprite-rotation-90:
    - shard-adlp:         NOTRUN -> [SKIP][99] ([Intel XE#1201] / [Intel XE#327]) +4 other tests skip
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_rotation_crc@sprite-rotation-90.html

  * igt@kms_vblank@ts-continuation-dpms-rpm@pipe-a-hdmi-a-1:
    - shard-adlp:         [PASS][100] -> [SKIP][101] ([Intel XE#1201] / [Intel XE#1207])
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-2/igt@kms_vblank@ts-continuation-dpms-rpm@pipe-a-hdmi-a-1.html
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_vblank@ts-continuation-dpms-rpm@pipe-a-hdmi-a-1.html

  * igt@kms_vblank@ts-continuation-dpms-rpm@pipe-d-dp-4:
    - shard-dg2-set2:     [PASS][102] -> [SKIP][103] ([Intel XE#1201] / [Intel XE#455]) +2 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-435/igt@kms_vblank@ts-continuation-dpms-rpm@pipe-d-dp-4.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-434/igt@kms_vblank@ts-continuation-dpms-rpm@pipe-d-dp-4.html

  * igt@kms_vblank@ts-continuation-modeset-rpm@pipe-a-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][104] ([Intel XE#1201])
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-434/igt@kms_vblank@ts-continuation-modeset-rpm@pipe-a-dp-4.html

  * igt@kms_vblank@ts-continuation-modeset-rpm@pipe-a-hdmi-a-1:
    - shard-adlp:         [PASS][105] -> [SKIP][106] ([Intel XE#1201])
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-2/igt@kms_vblank@ts-continuation-modeset-rpm@pipe-a-hdmi-a-1.html
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_vblank@ts-continuation-modeset-rpm@pipe-a-hdmi-a-1.html

  * igt@kms_vblank@ts-continuation-modeset-rpm@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [PASS][107] -> [SKIP][108] ([Intel XE#1201]) +4 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-464/igt@kms_vblank@ts-continuation-modeset-rpm@pipe-a-hdmi-a-6.html
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-434/igt@kms_vblank@ts-continuation-modeset-rpm@pipe-a-hdmi-a-6.html

  * igt@kms_vblank@ts-continuation-modeset-rpm@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][109] ([Intel XE#1201] / [Intel XE#455])
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-434/igt@kms_vblank@ts-continuation-modeset-rpm@pipe-d-dp-4.html

  * igt@kms_vblank@ts-continuation-modeset-rpm@pipe-d-hdmi-a-1:
    - shard-adlp:         [PASS][110] -> [SKIP][111] ([Intel XE#1201] / [Intel XE#455]) +3 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-2/igt@kms_vblank@ts-continuation-modeset-rpm@pipe-d-hdmi-a-1.html
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_vblank@ts-continuation-modeset-rpm@pipe-d-hdmi-a-1.html

  * igt@kms_writeback@writeback-invalid-parameters:
    - shard-adlp:         NOTRUN -> [SKIP][112] ([Intel XE#1201] / [Intel XE#756]) +1 other test skip
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_writeback@writeback-invalid-parameters.html

  * igt@xe_ccs@ctrl-surf-copy:
    - shard-adlp:         NOTRUN -> [SKIP][113] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#488]) +1 other test skip
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@xe_ccs@ctrl-surf-copy.html

  * igt@xe_copy_basic@mem-set-linear-0x3fff:
    - shard-adlp:         NOTRUN -> [SKIP][114] ([Intel XE#1126] / [Intel XE#1201]) +1 other test skip
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-4/igt@xe_copy_basic@mem-set-linear-0x3fff.html

  * igt@xe_evict@evict-beng-mixed-threads-large:
    - shard-dg2-set2:     [PASS][115] -> [TIMEOUT][116] ([Intel XE#1473] / [Intel XE#392])
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-436/igt@xe_evict@evict-beng-mixed-threads-large.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-435/igt@xe_evict@evict-beng-mixed-threads-large.html

  * igt@xe_evict@evict-beng-small:
    - shard-adlp:         NOTRUN -> [SKIP][117] ([Intel XE#1201] / [Intel XE#261] / [Intel XE#688]) +2 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@xe_evict@evict-beng-small.html

  * igt@xe_evict@evict-beng-threads-large:
    - shard-dg2-set2:     [PASS][118] -> [TIMEOUT][119] ([Intel XE#1473])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-434/igt@xe_evict@evict-beng-threads-large.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-463/igt@xe_evict@evict-beng-threads-large.html

  * igt@xe_evict@evict-mixed-many-threads-small:
    - shard-adlp:         NOTRUN -> [SKIP][120] ([Intel XE#1201] / [Intel XE#261]) +5 other tests skip
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@xe_evict@evict-mixed-many-threads-small.html

  * igt@xe_evict_ccs@evict-overcommit-parallel-instantfree-samefd:
    - shard-adlp:         NOTRUN -> [SKIP][121] ([Intel XE#1201] / [Intel XE#688]) +2 other tests skip
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@xe_evict_ccs@evict-overcommit-parallel-instantfree-samefd.html

  * igt@xe_exec_basic@multigpu-once-null-defer-mmap:
    - shard-adlp:         NOTRUN -> [SKIP][122] ([Intel XE#1201] / [Intel XE#1392]) +9 other tests skip
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@xe_exec_basic@multigpu-once-null-defer-mmap.html

  * igt@xe_exec_fault_mode@many-bindexecqueue-userptr-imm:
    - shard-adlp:         NOTRUN -> [SKIP][123] ([Intel XE#1201] / [Intel XE#288]) +21 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-9/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-imm.html

  * igt@xe_exec_fault_mode@once-userptr-imm:
    - shard-adlp:         NOTRUN -> [SKIP][124] ([Intel XE#1201] / [Intel XE#1562]) +4 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@xe_exec_fault_mode@once-userptr-imm.html

  * igt@xe_exec_reset@cm-cat-error:
    - shard-adlp:         NOTRUN -> [DMESG-FAIL][125] ([Intel XE#1068])
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@xe_exec_reset@cm-cat-error.html

  * igt@xe_exec_threads@threads-bal-mixed-fd-basic:
    - shard-adlp:         [PASS][126] -> [FAIL][127] ([Intel XE#1069])
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-1/igt@xe_exec_threads@threads-bal-mixed-fd-basic.html
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-1/igt@xe_exec_threads@threads-bal-mixed-fd-basic.html
    - shard-dg2-set2:     [PASS][128] -> [FAIL][129] ([Intel XE#1069])
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-435/igt@xe_exec_threads@threads-bal-mixed-fd-basic.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-464/igt@xe_exec_threads@threads-bal-mixed-fd-basic.html

  * igt@xe_exec_threads@threads-hang-fd-rebind:
    - shard-dg2-set2:     NOTRUN -> [FAIL][130] ([Intel XE#1256])
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@xe_exec_threads@threads-hang-fd-rebind.html

  * igt@xe_exec_threads@threads-hang-userptr-rebind-err:
    - shard-dg2-set2:     [PASS][131] -> [FAIL][132] ([Intel XE#1256])
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-463/igt@xe_exec_threads@threads-hang-userptr-rebind-err.html
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-435/igt@xe_exec_threads@threads-hang-userptr-rebind-err.html

  * igt@xe_module_load@many-reload:
    - shard-dg2-set2:     [PASS][133] -> [ABORT][134] ([Intel XE#1216])
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-436/igt@xe_module_load@many-reload.html
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-436/igt@xe_module_load@many-reload.html

  * igt@xe_module_load@reload:
    - shard-dg2-set2:     [PASS][135] -> [ABORT][136] ([Intel XE#1205] / [Intel XE#1216]) +2 other tests abort
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-463/igt@xe_module_load@reload.html
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-435/igt@xe_module_load@reload.html

  * igt@xe_pat@pat-index-xehpc:
    - shard-adlp:         NOTRUN -> [SKIP][137] ([Intel XE#1201] / [Intel XE#979])
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pm@d3-mmap-system:
    - shard-adlp:         NOTRUN -> [FAIL][138] ([Intel XE#1221])
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-1/igt@xe_pm@d3-mmap-system.html

  * igt@xe_pm@d3-mmap-vram:
    - shard-dg2-set2:     [PASS][139] -> [FAIL][140] ([Intel XE#1221])
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-434/igt@xe_pm@d3-mmap-vram.html
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@xe_pm@d3-mmap-vram.html

  * igt@xe_pm@d3hot-multiple-execs:
    - shard-dg2-set2:     [PASS][141] -> [FAIL][142] ([Intel XE#355]) +1 other test fail
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-463/igt@xe_pm@d3hot-multiple-execs.html
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-435/igt@xe_pm@d3hot-multiple-execs.html
    - shard-adlp:         [PASS][143] -> [FAIL][144] ([Intel XE#355]) +1 other test fail
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-4/igt@xe_pm@d3hot-multiple-execs.html
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-9/igt@xe_pm@d3hot-multiple-execs.html

  * igt@xe_pm@s2idle-d3cold-basic-exec:
    - shard-adlp:         NOTRUN -> [SKIP][145] ([Intel XE#1201] / [Intel XE#366]) +1 other test skip
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@xe_pm@s2idle-d3cold-basic-exec.html

  * igt@xe_pm@s3-basic-exec:
    - shard-adlp:         NOTRUN -> [DMESG-WARN][146] ([Intel XE#1191] / [Intel XE#1214])
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@xe_pm@s3-basic-exec.html

  * igt@xe_pm@s3-d3hot-basic-exec:
    - shard-adlp:         [PASS][147] -> [WARN][148] ([Intel XE#1639])
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-2/igt@xe_pm@s3-d3hot-basic-exec.html
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@xe_pm@s3-d3hot-basic-exec.html

  * igt@xe_query@multigpu-query-hwconfig:
    - shard-adlp:         NOTRUN -> [SKIP][149] ([Intel XE#1201] / [Intel XE#944]) +3 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-9/igt@xe_query@multigpu-query-hwconfig.html

  * igt@xe_vm@large-split-misaligned-binds-2097152:
    - shard-dg2-set2:     [PASS][150] -> [TIMEOUT][151] ([Intel XE#1206])
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-435/igt@xe_vm@large-split-misaligned-binds-2097152.html
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-464/igt@xe_vm@large-split-misaligned-binds-2097152.html

  
#### Possible fixes ####

  * igt@kms_big_fb@4-tiled-64bpp-rotate-0:
    - {shard-lnl}:        [FAIL][152] ([Intel XE#1659]) -> [PASS][153] +1 other test pass
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-lnl-2/igt@kms_big_fb@4-tiled-64bpp-rotate-0.html
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-lnl-6/igt@kms_big_fb@4-tiled-64bpp-rotate-0.html

  * igt@kms_cursor_crc@cursor-rapid-movement-256x256@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [DMESG-WARN][154] ([Intel XE#1214] / [Intel XE#282]) -> [PASS][155]
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-435/igt@kms_cursor_crc@cursor-rapid-movement-256x256@pipe-a-hdmi-a-6.html
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-463/igt@kms_cursor_crc@cursor-rapid-movement-256x256@pipe-a-hdmi-a-6.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy:
    - shard-dg2-set2:     [DMESG-WARN][156] ([Intel XE#1214] / [Intel XE#282] / [Intel XE#910]) -> [PASS][157] +1 other test pass
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-436/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-434/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html

  * igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a6:
    - shard-dg2-set2:     [DMESG-WARN][158] ([Intel XE#1214]) -> [PASS][159] +3 other tests pass
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-435/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a6.html
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-463/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a6.html

  * igt@kms_flip@plain-flip-ts-check-interruptible:
    - {shard-lnl}:        [FAIL][160] ([Intel XE#480] / [Intel XE#886]) -> [PASS][161] +1 other test pass
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-lnl-2/igt@kms_flip@plain-flip-ts-check-interruptible.html
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-lnl-6/igt@kms_flip@plain-flip-ts-check-interruptible.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-x-to-x:
    - shard-adlp:         [FAIL][162] ([Intel XE#616]) -> [PASS][163] +2 other tests pass
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-4/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-x-to-x.html
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-x-to-x.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-hdmi-a-1:
    - shard-adlp:         [DMESG-WARN][164] ([Intel XE#1191] / [Intel XE#1214]) -> [PASS][165]
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-4/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-hdmi-a-1.html
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-4/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-hdmi-a-1.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [FAIL][166] ([Intel XE#361]) -> [PASS][167]
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-436/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-436/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - {shard-lnl}:        [DMESG-WARN][168] ([Intel XE#1595]) -> [PASS][169] +1 other test pass
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-lnl-3/igt@kms_pm_backlight@fade-with-suspend.html
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-lnl-2/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_universal_plane@cursor-fb-leak:
    - shard-dg2-set2:     [FAIL][170] ([Intel XE#771] / [Intel XE#899]) -> [PASS][171]
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-464/igt@kms_universal_plane@cursor-fb-leak.html
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@kms_universal_plane@cursor-fb-leak.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [FAIL][172] ([Intel XE#899]) -> [PASS][173]
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-464/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-6.html
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-6.html

  * igt@xe_evict@evict-cm-threads-large:
    - shard-dg2-set2:     [TIMEOUT][174] ([Intel XE#1473] / [Intel XE#392]) -> [PASS][175]
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-433/igt@xe_evict@evict-cm-threads-large.html
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-436/igt@xe_evict@evict-cm-threads-large.html

  * igt@xe_exec_reset@gt-reset-stress:
    - shard-dg2-set2:     [DMESG-WARN][176] ([Intel XE#1214] / [Intel XE#1638]) -> [PASS][177]
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-466/igt@xe_exec_reset@gt-reset-stress.html
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-466/igt@xe_exec_reset@gt-reset-stress.html

  * igt@xe_gt_freq@freq_fixed_exec:
    - {shard-lnl}:        [FAIL][178] ([Intel XE#1414]) -> [PASS][179]
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-lnl-8/igt@xe_gt_freq@freq_fixed_exec.html
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-lnl-7/igt@xe_gt_freq@freq_fixed_exec.html

  * igt@xe_pm@s3-basic-exec:
    - shard-dg2-set2:     [DMESG-WARN][180] ([Intel XE#1162] / [Intel XE#1214]) -> [PASS][181] +10 other tests pass
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-466/igt@xe_pm@s3-basic-exec.html
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-466/igt@xe_pm@s3-basic-exec.html

  * igt@xe_pm@s4-basic-exec:
    - shard-adlp:         [DMESG-WARN][182] ([Intel XE#1214]) -> [PASS][183]
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-4/igt@xe_pm@s4-basic-exec.html
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@xe_pm@s4-basic-exec.html

  * {igt@xe_pm@s4-vm-bind-unbind-all}:
    - {shard-lnl}:        [ABORT][184] ([Intel XE#1794]) -> [PASS][185]
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-lnl-2/igt@xe_pm@s4-vm-bind-unbind-all.html
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-lnl-6/igt@xe_pm@s4-vm-bind-unbind-all.html

  
#### Warnings ####

  * igt@core_hotunplug@hotrebind-lateclose:
    - shard-adlp:         [DMESG-WARN][186] ([Intel XE#1214] / [Intel XE#1667]) -> [ABORT][187] ([Intel XE#1667])
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-4/igt@core_hotunplug@hotrebind-lateclose.html
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@core_hotunplug@hotrebind-lateclose.html
    - shard-dg2-set2:     [DMESG-FAIL][188] ([Intel XE#1548]) -> [ABORT][189] ([Intel XE#1548])
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-463/igt@core_hotunplug@hotrebind-lateclose.html
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-436/igt@core_hotunplug@hotrebind-lateclose.html

  * igt@kms_async_flips@async-flip-with-page-flip-events:
    - shard-adlp:         [DMESG-WARN][190] ([Intel XE#1033] / [Intel XE#1214] / [Intel XE#358]) -> [DMESG-WARN][191] ([Intel XE#1033] / [Intel XE#1214] / [Intel XE#324] / [Intel XE#358])
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-8/igt@kms_async_flips@async-flip-with-page-flip-events.html
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_async_flips@async-flip-with-page-flip-events.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-y:
    - shard-adlp:         [DMESG-WARN][192] ([Intel XE#1033] / [Intel XE#1214]) -> [DMESG-WARN][193] ([Intel XE#1033] / [Intel XE#1214] / [Intel XE#324]) +2 other tests dmesg-warn
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-8/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-y.html
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-y.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-dg2-set2:     [SKIP][194] ([Intel XE#1201] / [Intel XE#455]) -> [FAIL][195] ([Intel XE#1178])
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-464/igt@kms_content_protection@atomic-dpms.html
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
    - shard-dg2-set2:     [DMESG-WARN][196] ([Intel XE#1214] / [Intel XE#282] / [Intel XE#910]) -> [DMESG-WARN][197] ([Intel XE#1214] / [Intel XE#282])
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-433/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-466/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@cursor-vs-flip-varying-size:
    - shard-dg2-set2:     [INCOMPLETE][198] ([Intel XE#1195]) -> [DMESG-WARN][199] ([Intel XE#1214] / [Intel XE#282])
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-466/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@kms_cursor_legacy@cursor-vs-flip-varying-size.html

  * igt@kms_cursor_legacy@forked-bo:
    - shard-dg2-set2:     [DMESG-WARN][200] ([Intel XE#1214] / [Intel XE#282]) -> [INCOMPLETE][201] ([Intel XE#1195])
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-436/igt@kms_cursor_legacy@forked-bo.html
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-433/igt@kms_cursor_legacy@forked-bo.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-adlp:         [INCOMPLETE][202] ([Intel XE#1195]) -> [DMESG-WARN][203] ([Intel XE#1191] / [Intel XE#1214] / [Intel XE#1608])
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-1/igt@kms_flip@flip-vs-suspend-interruptible.html
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1:
    - shard-adlp:         [INCOMPLETE][204] ([Intel XE#1195]) -> [DMESG-WARN][205] ([Intel XE#1191] / [Intel XE#1214])
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-1/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1.html
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-2/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b:
    - shard-dg2-set2:     [DMESG-FAIL][206] ([Intel XE#1162]) -> [FAIL][207] ([Intel XE#616]) +1 other test fail
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-433/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-466/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [INCOMPLETE][208] ([Intel XE#1195] / [Intel XE#909]) -> [INCOMPLETE][209] ([Intel XE#1195]) +1 other test incomplete
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-464/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-a-hdmi-a-6.html
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-434/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-a-hdmi-a-6.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats:
    - shard-dg2-set2:     [INCOMPLETE][210] ([Intel XE#1195] / [Intel XE#909]) -> [TIMEOUT][211] ([Intel XE#295] / [Intel XE#380] / [Intel XE#909])
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-466/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats.html
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-466/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [INCOMPLETE][212] ([Intel XE#1195] / [Intel XE#904] / [Intel XE#909]) -> [TIMEOUT][213] ([Intel XE#904] / [Intel XE#909])
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-466/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-a-hdmi-a-6.html
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-466/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-a-hdmi-a-6.html

  * igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
    - shard-adlp:         [SKIP][214] ([Intel XE#1201] / [Intel XE#836]) -> [SKIP][215] ([Intel XE#1201] / [Intel XE#1211])
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-1/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-6/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@kms_vblank@ts-continuation-suspend:
    - shard-adlp:         [DMESG-WARN][216] ([Intel XE#1191] / [Intel XE#1214]) -> [DMESG-WARN][217] ([Intel XE#1191] / [Intel XE#1214] / [Intel XE#1608])
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-4/igt@kms_vblank@ts-continuation-suspend.html
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_vblank@ts-continuation-suspend.html

  * igt@kms_vblank@ts-continuation-suspend@pipe-d-hdmi-a-1:
    - shard-adlp:         [DMESG-WARN][218] ([Intel XE#1191] / [Intel XE#1214]) -> [DMESG-WARN][219] ([Intel XE#1214] / [Intel XE#1608])
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-4/igt@kms_vblank@ts-continuation-suspend@pipe-d-hdmi-a-1.html
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@kms_vblank@ts-continuation-suspend@pipe-d-hdmi-a-1.html

  * igt@xe_evict@evict-beng-mixed-many-threads-large:
    - shard-dg2-set2:     [INCOMPLETE][220] ([Intel XE#1195] / [Intel XE#1473] / [Intel XE#392]) -> [TIMEOUT][221] ([Intel XE#1041] / [Intel XE#1473] / [Intel XE#392])
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-464/igt@xe_evict@evict-beng-mixed-many-threads-large.html
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-434/igt@xe_evict@evict-beng-mixed-many-threads-large.html

  * igt@xe_evict@evict-threads-large:
    - shard-dg2-set2:     [TIMEOUT][222] ([Intel XE#1473] / [Intel XE#392]) -> [INCOMPLETE][223] ([Intel XE#1195] / [Intel XE#1473])
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-434/igt@xe_evict@evict-threads-large.html
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-466/igt@xe_evict@evict-threads-large.html

  * igt@xe_pm@s2idle-basic:
    - shard-adlp:         [INCOMPLETE][224] ([Intel XE#1044] / [Intel XE#1195] / [Intel XE#1358]) -> [DMESG-WARN][225] ([Intel XE#1191] / [Intel XE#1214])
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-9/igt@xe_pm@s2idle-basic.html
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-8/igt@xe_pm@s2idle-basic.html

  * igt@xe_pm@s3-d3hot-basic-exec:
    - shard-dg2-set2:     [DMESG-WARN][226] ([Intel XE#1162] / [Intel XE#1214]) -> [WARN][227] ([Intel XE#1639])
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-dg2-464/igt@xe_pm@s3-d3hot-basic-exec.html
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-dg2-434/igt@xe_pm@s3-d3hot-basic-exec.html

  * igt@xe_pm@s4-multiple-execs:
    - shard-adlp:         [DMESG-WARN][228] ([Intel XE#1214]) -> [ABORT][229] ([Intel XE#1358])
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7/shard-adlp-4/igt@xe_pm@s4-multiple-execs.html
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/shard-adlp-9/igt@xe_pm@s4-multiple-execs.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#1033]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1033
  [Intel XE#1041]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1041
  [Intel XE#1044]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1044
  [Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
  [Intel XE#1068]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1068
  [Intel XE#1069]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1069
  [Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
  [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1129]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1129
  [Intel XE#1149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1149
  [Intel XE#1162]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1162
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1191
  [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
  [Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201
  [Intel XE#1203]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1203
  [Intel XE#1204]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1204
  [Intel XE#1205]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1205
  [Intel XE#1206]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1206
  [Intel XE#1207]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1207
  [Intel XE#1211]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1211
  [Intel XE#1214]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1214
  [Intel XE#1216]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1216
  [Intel XE#1221]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1221
  [Intel XE#1231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1231
  [Intel XE#1252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1252
  [Intel XE#1256]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1256
  [Intel XE#1331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1331
  [Intel XE#1339]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1339
  [Intel XE#1341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1341
  [Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
  [Intel XE#1388]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1388
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
  [Intel XE#1399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1399
  [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1414
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1446]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1446
  [Intel XE#1469]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1469
  [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
  [Intel XE#1483]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1483
  [Intel XE#1548]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1548
  [Intel XE#1558]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1558
  [Intel XE#1562]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1562
  [Intel XE#1595]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1595
  [Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607
  [Intel XE#1608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1608
  [Intel XE#1638]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1638
  [Intel XE#1639]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1639
  [Intel XE#1659]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1659
  [Intel XE#1667]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1667
  [Intel XE#1707]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1707
  [Intel XE#1717]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1717
  [Intel XE#1725]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1725
  [Intel XE#1731]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1731
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1760
  [Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
  [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
  [Intel XE#282]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/282
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#295]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/295
  [Intel XE#305]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/305
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
  [Intel XE#314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/314
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324
  [Intel XE#327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/327
  [Intel XE#355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/355
  [Intel XE#358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/358
  [Intel XE#361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/361
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#379]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/379
  [Intel XE#380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/380
  [Intel XE#392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/392
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#480]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/480
  [Intel XE#488]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/488
  [Intel XE#498]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/498
  [Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
  [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#654]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/654
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/701
  [Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
  [Intel XE#771]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/771
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
  [Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899
  [Intel XE#904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/904
  [Intel XE#909]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/909
  [Intel XE#910]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/910
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#958]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/958
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979


Build changes
-------------

  * Linux: xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7 -> xe-pw-128077v8

  IGT_7835: 4b767566bbc6c3ac342b54620aec0fabc8cdd4bf @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1244-980de4c8f9c4fc65bd51d355372e06dc576c3ea7: 980de4c8f9c4fc65bd51d355372e06dc576c3ea7
  xe-pw-128077v8: 128077v8

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-128077v8/index.html

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

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

* Re: [PATCH v8 3/6] drm/xe/guc: Add capture size check in GuC log buffer
  2024-05-07  1:47 ` [PATCH v8 3/6] drm/xe/guc: Add capture size check in GuC log buffer Zhanjun Dong
@ 2024-05-08 22:57   ` Teres Alexis, Alan Previn
  2024-05-15 21:39     ` Dong, Zhanjun
  0 siblings, 1 reply; 27+ messages in thread
From: Teres Alexis, Alan Previn @ 2024-05-08 22:57 UTC (permalink / raw)
  To: Dong, Zhanjun, intel-xe

On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:
> The capture-nodes is included in GuC log buffer, add the size check
> for capture region in the whole GuC log buffer.
> Check the worst size of register capture aginst error capture region
> size.
> 
alan:snip

> +
> +#define GUC_LOG_DEFAULT_CRASH_BUFFER_SIZE      CRASH_BUFFER_SIZE
> +#define GUC_LOG_DEFAULT_DEBUG_BUFFER_SIZE      DEBUG_BUFFER_SIZE
> +#define GUC_LOG_DEFAULT_CAPTURE_BUFFER_SIZE    CAPTURE_BUFFER_SIZE
> +

nit: actually not sure why we need the define on the left, since the
usage could just use the ones its sourced from on the right.

alan: as per offline conversation, we beilieve the default size needs t
to larger to accomodate back to back worst case capture sizes.
So as per offline, we need to increase that to at least 32K? (or 128K
with spare)

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

* Re: [PATCH v8 1/6] drm/xe/guc: Prepare GuC register list and update ADS size for error capture
  2024-05-07  1:47 ` [PATCH v8 1/6] drm/xe/guc: Prepare GuC register list and update ADS size " Zhanjun Dong
@ 2024-05-10 18:43   ` Teres Alexis, Alan Previn
  2024-05-14 22:44     ` Dong, Zhanjun
  2024-05-10 18:58   ` Teres Alexis, Alan Previn
  1 sibling, 1 reply; 27+ messages in thread
From: Teres Alexis, Alan Previn @ 2024-05-10 18:43 UTC (permalink / raw)
  To: Dong, Zhanjun, intel-xe

On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:
> Add referenced registers defines and list of registers.
> Update GuC ADS size allocation to include space for
> the lists of error state capture register descriptors.
> 
> 
alan:snip
> +int xe_calculate_guc_regs_capture_worst_size(struct xe_guc *guc)
> +{
> +       size_t total_size, class_size, instance_size, global_size;
> +       int i, j;
> +
> +       /* This function calculates the worst case register lists size by
> +        * including all possible engines classes. It is called during the
> +        * first of a two-phase GuC (and ADS-population) initialization
> +        * sequence, that is, during the pre-hwconfig phase before we have
> +        * the exact engine fusing info.
> +        */
> +       total_size = PAGE_SIZE; /* Pad a page in front for empty lists */
> +       for (i = 0; i < GUC_CAPTURE_LIST_INDEX_MAX; i++) {
> +               for (j = 0; j < GUC_LAST_ENGINE_CLASS; j++) {
alan: so in rev6, i mentioned in one of the other hunks that in guc interface,
the 'max engine class' definition used by guc-error-capture register-list-arrays
does not follow the definition of engine-class enum of above (which is used
for submission and other interfaces with GuC). I notice you fixed this on
another hunk but missed it above. I should have made it clear this change is
required for ALL cases where we are looping through the engine classes' register
lists used in guc- error-capture.
> +                       if (xe_guc_capture_getlistsize(guc, i,
> +                                                      GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
> +                                                      j, &class_size) < 0)
> +                               class_size = 0;
> +                       if (xe_guc_capture_getlistsize(guc, i,
> +                                                      GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE,
> +                                                      j, &instance_size) < 0)
> 
alan:snip

>  #define MAX_GOLDEN_LRC_SIZE    (SZ_4K * 64)
>  
>  int xe_guc_ads_init(struct xe_guc_ads *ads)
> @@ -398,6 +443,7 @@ int xe_guc_ads_init(struct xe_guc_ads *ads)
>         struct xe_bo *bo;
>  
>         ads->golden_lrc_size = calculate_golden_lrc_size(ads);
> +       ads->capture_size = xe_calculate_guc_regs_capture_worst_size(ads_to_guc(ads));
>         ads->regset_size = calculate_regset_size(gt);
>         ads->ads_waklv_size = calculate_waklv_size(ads);
>  
> @@ -431,9 +477,10 @@ int xe_guc_ads_init_post_hwconfig(struct xe_guc_ads *ads)
>         xe_gt_assert(gt, ads->bo);
>  
>         ads->golden_lrc_size = calculate_golden_lrc_size(ads);
> +       ads->capture_size = xe_calculate_guc_regs_capture_worst_size(ads_to_guc(ads));
alan: nit: we had an offline conversation that despite post_hw_config knowing
exact engine class list, we simpliify and improve execution time by using
worst-case-size in both pre and post hwconfig when deciding on size. Would be nice to
add a comment on that? (so folks dont assume its a bug)

alan:snip


>         ads->regset_size = calculate_regset_size(gt);
>  
> -       xe_gt_assert(gt, ads->golden_lrc_size +
> +       xe_gt_assert(gt, ads->golden_lrc_size + ads->capture_size +
>                      (ads->regset_size - prev_regset_size) <=
>                      MAX_GOLDEN_LRC_SIZE);
alan: i missed this in rev6 - why are we using ads->capture_size to verify MAX_GOLDEN_LRC_SIZE is
sufficient? i dont believe this macro is related to guc-error-capture reg list.

alan:snip

> +static int guc_capture_prep_lists(struct xe_guc_ads *ads)
> +{
> +       struct xe_guc *guc = ads_to_guc(ads);
> +       struct xe_gt *gt = ads_to_gt(ads);
> +       u32 ads_ggtt, capture_offset, null_ggtt, total_size = 0;
> +       struct iosys_map info_map;
> +       size_t size = 0;
> +       void *ptr;
>         int i, j;
alan:snip
> +                       /********************************************************/
> +                       /*** engine exists: start with engine-class registers ***/
> +                       /********************************************************/
> +                       write_empty_list = true; /* starting assumption is an empty list */
> +                       size = 0;
> +                       if (!xe_guc_capture_getlistsize(guc, i,
> +                                                       GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
> +                                                       j, &size)) {
> +                               if (total_size + size > ads->capture_size)
> +                                       xe_gt_dbg(gt, "Capture size overflow :%lu vs %d\n",
> +                                                 total_size + size, ads->capture_size);
alan: i think premerge hooks are failing due to format specifiers - please do fix that.
alan:snip
> +       if (ads->capture_size != PAGE_ALIGN(total_size))
> +               xe_gt_info(gt, "ADS capture alloc size changed from %d to %d\n",
> +                          ads->capture_size, PAGE_ALIGN(total_size));
> +       return PAGE_ALIGN(total_size);
>  }
alan:snip

> +#define COMMON_XELP_BASE_GLOBAL \
> +       { FORCEWAKE_GT,             0,      0, "FORCEWAKE" }
> +
> +#define COMMON_BASE_ENGINE_INSTANCE \
> +       { RING_ESR(0),              0,      0, "ESR" }, \
> +       { RING_EMR(0),              0,      0, "EMR" }, \
> +       { RING_EIR(0),              0,      0, "EIR" }, \
> +       { RING_EXECLIST_STATUS_HI(0), 0,    0, "RING_EXECLIST_STATUS_HI" }, \
> +       { RING_EXECLIST_STATUS_LO(0), 0,    0, "RING_EXECLIST_STATUS_LO" }, \
> +       { RING_DMA_FADD(0),         0,      0, "RING_DMA_FADD_LDW" }, \
> +       { RING_DMA_FADD_UDW(0),     0,      0, "RING_DMA_FADD_UDW" }, \
> +       { RING_IPEHR(0),            0,      0, "IPEHR" }, \
> +       { RING_BBADDR(0),           0,      0, "RING_BBADDR_LOW32" }, \
> +       { RING_BBADDR_UDW(0),       0,      0, "RING_BBADDR_UP32" }, \
> +       { RING_ACTHD(0),            0,      0, "ACTHD_LDW" }, \
> +       { RING_ACTHD_UDW(0),        0,      0, "ACTHD_UDW" }, \
> +       { RING_START(0),            0,      0, "START" }, \
> +       { RING_HEAD(0),             0,      0, "HEAD" }, \
> +       { RING_TAIL(0),             0,      0, "TAIL" }, \
> +       { RING_CTL(0),              0,      0, "CTL" }, \
> +       { RING_MI_MODE(0),          0,      0, "MODE" }, \
> +       { RING_HWS_PGA(0),          0,      0, "HWS" }, \
> +       { RING_MODE(0),             0,      0, "GFX_MODE" }
alan: I notice that "struct __guc_mmio_reg_descr.regname" is introduced here in
Patch-#1 and used in the population of the static reglist table above but then
never ever referenced in the entire series. In fact in Patch #6, its removed.

NOTE: this is different from i915 where this variable was used in the reporting
patch of i915's series but it looks like from this xe series version, we are
creating a shared "register->offset->name" lookup table list in xe_hw_engine.c
for both guc and execlist in Patch 6.

I believe this flirts dangerously close to breaking linux patch rules. A variable/
func not used in the entire series really shouldnt be added. In this case, we are
NOT consuming regname at all anywhere in the series. And then we remove it in the
subsequent patch-6.

alan:snip



> +static int
> +guc_capture_getlistsize(struct xe_guc *guc, u32 owner, u32 type, u32 classid,
> +                       size_t *size, bool is_purpose_est)
> +{
> +       struct xe_guc_state_capture *gc = guc->capture;
> +       struct __guc_capture_ads_cache *cache = &gc->ads_cache[owner][type][classid];
> +       int num_regs;
> +
> +       if (!gc->reglists) {
> +               xe_gt_warn(guc_to_gt(guc), "No capture reglist for this device\n");
> +               return -ENODEV;
> +       }
> +
> +       if (cache->is_valid) {
> +               *size = cache->size;
> +               return cache->status;
> +       }
> +
> +       if (!is_purpose_est && owner == GUC_CAPTURE_LIST_INDEX_PF &&
alan: so this one took me a while to figure out why it has become orphaned.
(after i went through the entire series hunting for it). I'm referign to "is_purpose_est".

So this is another i915 inherittance which did have valid reasoning. In i915 when we
were doing "check_guc_capture_size" (which is a one-time event), we wanted to flag if
any of the register tables were non existent. take note that at this early log-buffer-
calculation time, we assumed all engine classes are valid on the platform at
pre-hw-config time. The reason is because we did actually discover cases when new
platforms added new engines and the developer completely missed adding the register
table for error capture as well. With this message, it would get flagged as a warning.
However, this same lower level function was also used for the regular register
list population which can get called everytime we reset guc including coming
out of suspend or if we performed a GT reset and so we didn't want that warning
to happen every single time - only once per module load. so thats why we
created a wraper with that "is_purpose_est" to differentate if the caller
was for the log-buffer-size-estmation or for actual population where we only
print the warn in the former.

so my review comment would be: we already learnt the lessons from i915 so lets
use this properly. i suggest we fix patch #3 so that check_guc_capture_size
will call above guc_capture_getlistsize with is_purpose_est set true as opposed to
calling xe_calculate_guc_regs_capture_worst_size. I'll make the same comment
in Patch3

alan:snip

> +
> +#endif /* _XE_GUC_CAPTURE_H */
> diff --git a/drivers/gpu/drm/xe/xe_guc_capture_fwif.h b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
> new file mode 100644
> index 000000000000..79bc277afaa8
> --- /dev/null
alan:snip

> +struct guc_state_capture_group_header_t {
> +       u32 owner;
alan: If i read the the spec correctly, capture_group_header's owner
has VFID field at GENMASK(7,0).
> +       u32 info;
> +#define CAP_GRP_HDR_NUM_CAPTURES GENMASK(7, 0)
> +#define CAP_GRP_HDR_CAPTURE_TYPE GENMASK(15, 8) /* guc_capture_group_types */
> +} __packed;
alan:snip


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

* Re: [PATCH v8 1/6] drm/xe/guc: Prepare GuC register list and update ADS size for error capture
  2024-05-07  1:47 ` [PATCH v8 1/6] drm/xe/guc: Prepare GuC register list and update ADS size " Zhanjun Dong
  2024-05-10 18:43   ` Teres Alexis, Alan Previn
@ 2024-05-10 18:58   ` Teres Alexis, Alan Previn
  1 sibling, 0 replies; 27+ messages in thread
From: Teres Alexis, Alan Previn @ 2024-05-10 18:58 UTC (permalink / raw)
  To: Dong, Zhanjun, intel-xe

On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:

alan:snip (missed a few more smaller ones)

> diff --git a/drivers/gpu/drm/xe/xe_guc_ads.c b/drivers/gpu/drm/xe/xe_guc_ads.c
> index 6a5eb21748b1..3d4563d3ca4f 100644
> --- a/drivers/gpu/drm/xe/xe_guc_ads.c
> +++ b/drivers/gpu/drm/xe/xe_guc_ads.c
> @@ -17,6 +17,8 @@
>  #include "xe_gt.h"
>  #include "xe_gt_ccs_mode.h"
>  #include "xe_guc.h"
> +#include "xe_guc_capture.h"
> +#include "xe_guc_capture_fwif.h"
>  #include "xe_guc_ct.h"
>  #include "xe_hw_engine.h"
>  #include "xe_lrc.h"
> @@ -126,6 +128,8 @@ struct __guc_ads_blob {
>  #define info_map_read(xe_, map_, field_) \
>         xe_map_rd_field(xe_, map_, 0, struct guc_gt_system_info, field_)
>  
> +static int guc_capture_prep_lists(struct xe_guc_ads *ads);
> +
alan:nit; one more thing, it looks like you don't need this prototype definition here now after rev8?

> diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c
> new file mode 100644
> index 000000000000..b21a8ef85c4e
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_guc_capture.c
> @@ -0,0 +1,352 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2021-2022 Intel Corporation
> + */
> +
> +#include <linux/types.h>
> +
> +#include <drm/drm_managed.h>
> +#include <drm/drm_print.h>
> +
> +#include "abi/guc_actions_abi.h"
> +#include "regs/xe_regs.h"
> +#include "regs/xe_engine_regs.h"
alan: alphabetical order (i believe this is not a nit from other reviews ive seen)
> +#include "regs/xe_gt_regs.h"
> +#include "regs/xe_guc_regs.h"
> +
> +#include "xe_bo.h"
> +#include "xe_device.h"
> +#include "xe_exec_queue_types.h"
> +#include "xe_gt.h"
> +#include "xe_gt_printk.h"
> +#include "xe_guc.h"
> +#include "xe_guc_capture.h"
> +#include "xe_guc_capture_fwif.h"
> +#include "xe_guc_ct.h"
> +#include "xe_guc_log.h"
> +#include "xe_gt_mcr.h"
alan: alphabetical order
> +#include "xe_guc_submit.h"
> +#include "xe_hw_engine_types.h"
> +#include "xe_macros.h"
> +#include "xe_map.h"
> 
alan:snip

> diff --git a/drivers/gpu/drm/xe/xe_guc_capture_fwif.h b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
> new file mode 100644
> index 000000000000..79bc277afaa8
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
> @@ -0,0 +1,168 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2021-2022 Intel Corporation
> + */
> +
> +#ifndef _XE_GUC_CAPTURE_FWIF_H
> +#define _XE_GUC_CAPTURE_FWIF_H
> +
> +#include <linux/types.h>
> +#include "regs/xe_reg_defs.h"
> +#include "xe_guc_fwif.h"

+
+#include <linux/types.h>
+#include "regs/xe_reg_defs.h"
+#include "xe_guc_fwif.h"
alan: as per other header inclusions, i belive the coding standard is to separate
the inclusions into chunks (line separated) based on groups where each group is
the top level header folder like this as a fake example. however, i cant find
the rule written down anywhere so i am labelling this as a nit for now:

+#include <linux/foo1.h>
+#include <linux/foo2.h>
+#include <linux/foo3.h>

#include <drm/drm_foo1.h>
#include <drm/drm_foo2.h>

+#include "regs/xe_reg_foo1.h"
+#include "xe_foo1.h"
+#include "xe_gt_foo1.h"
+#include "xe_guc_foo1.h"

alan:snip



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

* Re: [PATCH v8 2/6] drm/xe/guc: Add XE_LP steered register lists
  2024-05-07  1:47 ` [PATCH v8 2/6] drm/xe/guc: Add XE_LP steered register lists Zhanjun Dong
@ 2024-05-11  0:17   ` Teres Alexis, Alan Previn
  2024-05-14 23:00     ` Dong, Zhanjun
  0 siblings, 1 reply; 27+ messages in thread
From: Teres Alexis, Alan Previn @ 2024-05-11  0:17 UTC (permalink / raw)
  To: Dong, Zhanjun, intel-xe

only a couple of nits, so, 
Reviewed-by: Alan Previn <alan.previn.teres.alexis@intel.com>

On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:
> Add the ability for runtime allocation and freeing of
> steered register list extentions that depend on the
> detected HW config fuses.
> 
alan:snip
> +static void
> +guc_capture_alloc_steered_lists(struct xe_guc *guc, const struct __guc_mmio_reg_descr_group *lists)
> +{
> +       struct xe_gt *gt = guc_to_gt(guc);
> +       u16 slice, subslice;
> +       int iter, i, num_steer_regs, num_tot_regs = 0;
> +       const struct __guc_mmio_reg_descr_group *list;
> +       struct __guc_mmio_reg_descr_group *extlists;
> +       struct __guc_mmio_reg_descr *extarray;
> +       bool has_xehpg_extregs;
> +       struct drm_device *drm = &gt_to_xe(gt)->drm;
alan: nit: order vars as reverse christmas tree. I'm not sure if this is a hard rule,
I've seen many review comments about this but cant find a hard rule in kernel doc.
I wasnt paying attention to this earlier and realize that Patch #1 has at least 4 functions
with this issue. I'm going to leave at your discretion since i assume this is a nit.

> +
> +       /* steered registers currently only exist for the render-class */
> +       list = guc_capture_get_one_list(lists, GUC_CAPTURE_LIST_INDEX_PF,
> +                                       GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
> +                                       GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE);
> +       /* skip if extlists was previously allocated */
> +       if (!list || guc->capture->extlists)
> +               return;
> +
> +       has_xehpg_extregs = GRAPHICS_VERx100(gt_to_xe(gt)) >= 1255;
> +
> +       num_steer_regs = ARRAY_SIZE(xe_extregs);
> +       if (has_xehpg_extregs)
> +               num_steer_regs += ARRAY_SIZE(xehpg_extregs);
> +
> +       num_tot_regs += num_steer_regs * bitmap_weight(gt->fuse_topo.g_dss_mask,
> +                                                      sizeof(gt->fuse_topo.g_dss_mask) * 8);
alan: nit: a bit confusing we are using "num_tot_regs +=" when its the first use of this
variable after init to zero, so just "num_tot_regs =" is fine here.

alan:snip


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

* Re: [PATCH v8 4/6] drm/xe/guc: Extract GuC error capture lists
  2024-05-07  1:47 ` [PATCH v8 4/6] drm/xe/guc: Extract GuC error capture lists Zhanjun Dong
@ 2024-05-11  1:43   ` Teres Alexis, Alan Previn
  2024-05-15 21:45     ` Dong, Zhanjun
  0 siblings, 1 reply; 27+ messages in thread
From: Teres Alexis, Alan Previn @ 2024-05-11  1:43 UTC (permalink / raw)
  To: Dong, Zhanjun, intel-xe

On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:
> Upon the G2H Notify-Err-Capture event, parse through the
> GuC Log Buffer (error-capture-subregion) and generate one or
> more capture-nodes. A single node represents a single "engine-
> instance-capture-dump" and contains at least 3 register lists:
> global, engine-class and engine-instance. An internal link
> list is maintained to store one or more nodes.
> 
> Because the link-list node generation happen before the call
> to devcoredump, duplicate global and engine-class register
> lists for each engine-instance register dump if we find
> dependent-engine resets in a engine-capture-group.
> 
alan:snip
> diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c
> index d2df027081b5..71d7c4a58925 100644
> --- a/drivers/gpu/drm/xe/xe_guc_capture.c
> +++ b/drivers/gpu/drm/xe/xe_guc_capture.c
> @@ -520,6 +520,560 @@ static void check_guc_capture_size(struct xe_guc *guc)
>                           buffer_size, spare_size, capture_size);
>  }
> 
alan:snip
> +static struct __guc_capture_parsed_output *
> +guc_capture_get_prealloc_node(struct xe_guc *guc)
> +{
> +       struct __guc_capture_parsed_output *found = NULL;
> +
> +       if (!list_empty(&guc->capture->cachelist)) {
> +               struct __guc_capture_parsed_output *n, *ntmp;
> +
> +               /* get first avail node from the cache list */
> +               list_for_each_entry_safe(n, ntmp, &guc->capture->cachelist, link) {
> +                       found = n;
> +                       list_del(&n->link);
> +                       break;
> +               }
> +       } else {
> +               struct __guc_capture_parsed_output *n, *ntmp;
> +
> +               /* traverse down and steal back the oldest node already allocated */
> +               list_for_each_entry_safe(n, ntmp, &guc->capture->outlist, link) {
> +                       found = n;
> +               }
> +               if (found)
> +                       list_del(&found->link);
> +       }
> +       if (found)
> +               guc_capture_init_node(guc, found);
> +
> +       return found;
> +}
alan: I mentioned this in rev6, you cannot start pre-allocated nodelist anywhere
in this patch when you are only allocating it in patch 6. Look back at my rev 6
comments on this. Also, take a look at the original i915 patch on how to implement
guc_capture_alloc/delete_one_node without preallocated nodelist:
https://patchwork.freedesktop.org/patch/479022/?series=101604&rev=1
(note: watch especially for the use of new->reginfo[i].regs which needed
additional allocation step. Alternatively we could squash patch 4 and patch 6
together and change patch 4's comment but not sure it might be too large a
patch (can discuss offline).

> +static int
> +guc_capture_extract_reglists(struct xe_guc *guc, struct __guc_capture_bufstate *buf)
> +{
> +       struct xe_gt *gt = guc_to_gt(guc);
> +       struct guc_state_capture_group_header_t ghdr = {0};
> +       struct guc_state_capture_header_t hdr = {0};
> +       struct __guc_capture_parsed_output *node = NULL;
> +       struct guc_mmio_reg *regs = NULL;
> +       int i, numlists, numregs, ret = 0;
> +       enum guc_capture_type datatype;
> +       struct guc_mmio_reg tmp;
> +       bool is_partial = false;
alan:snip
> +               if (!node) {
> +                       node = guc_capture_get_prealloc_node(guc);
alan: see above comment on the use of prealloc_node (as per rev 6's comments)
alan:snip

> +static void __guc_capture_process_output(struct xe_guc *guc)
> +{
> +       unsigned int buffer_size, read_offset, write_offset, full_count;
> +       struct xe_uc *uc = container_of(guc, typeof(*uc), guc);
> +       struct guc_log_buffer_state log_buf_state_local;
> +       struct guc_log_buffer_state *log_buf_state;
> +       struct __guc_capture_bufstate buf;
> +       bool new_overflow;
> +       int ret;
> +       u32 log_buf_state_offset;
> +       u32 src_data_offset;
> +
> +       log_buf_state = (struct guc_log_buffer_state *)((ulong)guc->log.bo->vmap.vaddr +
> +                       (sizeof(struct guc_log_buffer_state) * GUC_CAPTURE_LOG_BUFFER));
alan: once again, i dont think we can use vmap.vaddr directly this this anymore right?
i dont think we use "log_buf_state" until the end of this function to set the new read_ptr
and flush flag. We ought to use xe_map_wr below?
> +
> +       log_buf_state_offset = sizeof(struct guc_log_buffer_state) * GUC_CAPTURE_LOG_BUFFER;
> +       src_data_offset = xe_guc_get_log_buffer_offset(&guc->log, GUC_CAPTURE_LOG_BUFFER);
> +
> +       /*
> +        * Make a copy of the state structure, inside GuC log buffer
> +        * (which is uncached mapped), on the stack to avoid reading
> +        * from it multiple times.
> +        */
> +       xe_map_memcpy_from(guc_to_xe(guc), &log_buf_state_local, &guc->log.bo->vmap,
> +                          log_buf_state_offset, sizeof(struct guc_log_buffer_state));
alan:snip


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

* Re: [PATCH v8 5/6] drm/xe/guc: Pre-allocate output nodes for extraction
  2024-05-07  1:47 ` [PATCH v8 5/6] drm/xe/guc: Pre-allocate output nodes for extraction Zhanjun Dong
@ 2024-05-11 18:07   ` Teres Alexis, Alan Previn
  0 siblings, 0 replies; 27+ messages in thread
From: Teres Alexis, Alan Previn @ 2024-05-11 18:07 UTC (permalink / raw)
  To: Dong, Zhanjun, intel-xe

On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:
> re-allocate a fixed number of empty nodes up front (at the
alan: "pre-allocate"
> time of ADS registration) that we can consume from or return to
> an internal cached list of nodes.
> Add guc capture data structure definition.
> 
> Signed-off-by: Zhanjun Dong <zhanjun.dong@intel.com>
alan: honestly, the commit message is just way too short and doesnt
even explain why we need this patch. On that note, we should
verify with the leads of xe-kmd core-mm if we still have the same
constraints for xe that we did in i915 that required this
pre-allocated cachelist of nodes.

alan: if we still need the pre-allocated cacahelist of nodes, then
all of the code in this patch looks good. However, as i mentioned
in Patch4, we should be doing dynamic allocation of nodes in P4
and only start introducing guc-capture's cachelist and usage together
with the rest of this patch which contains the allocation / freeing.


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

* Re: [PATCH v8 6/6] drm/xe/guc: Plumb GuC-capture into dev coredump
  2024-05-07  1:47 ` [PATCH v8 6/6] drm/xe/guc: Plumb GuC-capture into dev coredump Zhanjun Dong
@ 2024-05-11 20:25   ` Teres Alexis, Alan Previn
  0 siblings, 0 replies; 27+ messages in thread
From: Teres Alexis, Alan Previn @ 2024-05-11 20:25 UTC (permalink / raw)
  To: Dong, Zhanjun, intel-xe

On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:
> Add xe_hw_engine_snapshot_from_capture to take snapshot from capture
> node list.
alan: maybe better to describe this more accurately such as
"Add xe_hw_engine_snapshot_from_capture to find the matching
guc-error-capture node that was extraced before hand, and
take a snapshot of the registers of that node"


> Add data struct to map register to a snapshot field, although all
> field is mapped now, which means the offset could be optimized out,
> while in the future, depends on system configuration, the field might
> not be consecutive, keep the offset is reserved for future.
alan: this description needs more clarity. it makes absolute sense only
AFTER understanding the code which i feel isn't good enough for the
purpose of a commit message. If i may offer a suggestion ->

"Repurpose 'regs' substruct from 'struct xe_hw_engine_snapshot'
giving its own type along with additional helper structs
(__reg_map_descr / __reg_map_descr_64) for the purpose of enabling
an immediate lookup of a specific register store within regs struct
based on its location. Although one could argue this is not needed
because the current register mmio-address-offsets are sequential
within the hw mmio-bar, this won't scale for class-registers
or global-registers that are spaced out"

alan:snip
> 
> diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c
> index 42aae4d99514..959d318f8a6f 100644
> --- a/drivers/gpu/drm/xe/xe_guc_capture.c
> +++ b/drivers/gpu/drm/xe/xe_guc_capture.c
> @@ -37,28 +37,33 @@
>   *       from the engine-mmio-base
>   */
>  #define COMMON_XELP_BASE_GLOBAL \
> -       { FORCEWAKE_GT,             0,      0, "FORCEWAKE" }
> +       { FORCEWAKE_GT,                         0,      0}
alan: took me a while to realize we actually dont even seem to be
printing out FORCEWAKE_GT register value (via devcoredump) nor any
global or class regisers from the xe_guc_capture lists.
See my additional comments with details further down at function
'guc_capture_find_ecode'
alan:snip 
>  #define COMMON_BASE_ENGINE_INSTANCE \
> -       { RING_ESR(0),              0,      0, "ESR" }, \
> -       { RING_EMR(0),              0,      0, "EMR" }, \
> -       { RING_EIR(0),              0,      0, "EIR" }, \
alan:snip
> +       { RING_ESR(0),                          0,      0}, \
> +       { RING_EMR(0),                          0,      0}, \
> +       { RING_EIR(0),                          0,      0}, \
alan:snip
>  /* XE_LP Global */
>  static const struct __guc_mmio_reg_descr xe_lp_global_regs[] = {
> @@ -207,7 +212,6 @@ static void __fill_ext_reg(struct __guc_mmio_reg_descr *ext,
>         ext->reg = XE_REG(extlist->reg.__reg.addr);
>         ext->flags = FIELD_PREP(GUC_REGSET_STEERING_GROUP, slice_id);
>         ext->flags |= FIELD_PREP(GUC_REGSET_STEERING_INSTANCE, subslice_id);
> -       ext->regname = extlist->name;
alan: as per offline conversation, we are never using "regname" anywhere
in this series (unlike i915) because regs structure in xe_hw_engine.c
provides that. Here we are rightfully removing that redundancy.
That said, why dont we just not even introduce regname in Patch1 to
begin with (which gets initialized, unused and then thrown away
in this patch, which i think breaks linux kernel patching rules?).
alan:snip

> +static void
> +guc_capture_free_list(struct drm_device *drm, struct list_head  *list)
> +{
> +       struct __guc_capture_parsed_output *n, *ntmp;
> +
> +       list_for_each_entry_safe(n, ntmp, list, link)
> +               guc_capture_delete_one_node(drm, n);
alan: i think we are not realizing the proper usage of the pre-allocated
cachelist of nodes. in the big picture:
1. At init, create a pool of nodes for use - we keep this in "cachelist".
   (each node being big enough to hold a capture-snapshot from guc)
2. At g2h-capture-notify time, we extract guc reported capture-snapshots
   from the guc-capture ring buffer. For each snapshot we extract,
   we grab a free node from "cachelist" and then move it into "outlist".
3. Later during the devcoredump generation, we find the mathing node from
   "outlist" and copy all the register values into xe_hw_engine's
   snapshot-regs to sent to drm_printer.
4. So at this point, that node can be discarded, however,
   above guc_capture_free_list is calling guc_capture_delete_one_node which
   frees the allocation. This is wrong, instead what we should be removing
   the node from the "outlist" and putting it back into the "cachelist" with
   a memset. Else we'll quickly find ourselves running out of pre-allocated
   node list defeating it's purpose (i.e. finding ourselves having to
   allocate memory in mid reset). See where "guc_capture_add_node_to_cachelist"
   is called from in i915 for what i mean. (of course, as per prior patch
   comment, we do need to verify with xe's core-mm folks if we even still
   have the same requirement for xe on not doing mem allocs mid-reset).
alan:snip

> @@ -959,6 +960,7 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)
>         struct xe_sched_job *tmp_job;
>         struct xe_exec_queue *q = job->q;
>         struct xe_gpu_scheduler *sched = &q->guc->sched;
> +       struct xe_gt *gt = q->gt;
alan: why this unrelated change above. lets just focus on guc error capture,
we can do cleanups like this in a standalone patch - assuming its even
required.
alan:snip

> +struct __reg_map_descr capture_engine_reg[] = {
> +       {offsetof(struct snap_shot_regs, ring_hwstam),  "HWSTAM",       RING_HWSTAM(0)  },
> +       {offsetof(struct snap_shot_regs, ring_hws_pga), "RING_HWS_PGA", RING_HWS_PGA(0) },
> +       {offsetof(struct snap_shot_regs, ring_start),   "RING_START",   RING_START(0)   },
> +       {offsetof(struct snap_shot_regs, ring_head),    "RING_HEAD",    RING_HEAD(0)    },
> +       {offsetof(struct snap_shot_regs, ring_tail),    "RING_TAIL",    RING_TAIL(0)    },
> +       {offsetof(struct snap_shot_regs, ring_ctl),     "RING_CTL",     RING_CTL(0)     },
> +       {offsetof(struct snap_shot_regs, ring_mi_mode), "RING_MI_MODE", RING_MI_MODE(0) },
> +       {offsetof(struct snap_shot_regs, ring_mode),    "RING_MODE",    RING_MODE(0)    },
> +       {offsetof(struct snap_shot_regs, ring_imr),     "RING_IMR",     RING_IMR(0)     },
> +       {offsetof(struct snap_shot_regs, ring_esr),     "RING_ESR",     RING_ESR(0)     },
> +       {offsetof(struct snap_shot_regs, ring_emr),     "RING_EMR",     RING_EMR(0)     },
> +       {offsetof(struct snap_shot_regs, ring_eir),     "RING_EIR",     RING_EIR(0)     },
> +       {offsetof(struct snap_shot_regs, ipehr),        "IPEHR",        RING_IPEHR(0)   },
> +       {offsetof(struct snap_shot_regs, rcu_mode),     "RCU_MODE",     RCU_MODE        },
> +};
alan: so as per the lengthly offline conversation we had, we really dont like
the idea of keeping a separate list in snap_shot_regs in xe_hw_engine for the
drm_printer use along with another list in guc-error-capture. Where the former
is a catch all bucket for all registers for any given capture case on any
engine while the latter is organized differently as list of lists with global,
class and instance groupings per gen.

However, considering we a much more critical need to address now, let's capture
a separate offline JIRA task for a future patch to resolve the "flat-catch-all"
attribute of snap_shot_regs vs the "organized category of lists" in guc-error-
capture so we could enable sharing the same static table instances across them.

For now, lets solve the immediate problem: GuC is the default submission
mechanism on xe and yet we dont have a coherent way to report hw register dumps
during an engine reset triggered by GuC.


> +static void cp_reg_to_snapshot(u32 offset, u32 value, struct snap_shot_regs *regs)
> +{
> +       int i;
> +
> +       for (i = 0; i < ARRAY_SIZE(capture_engine_reg); i++)
> +               if (offset == capture_engine_reg[i].reg.addr) {
> +                       u32 *field = (u32 *)((uintptr_t)regs + capture_engine_reg[i].dst_offset);
> +                       *field = value;
> +                       return;
> +               }
alan:snip
> +}
> +
> +static void guc_capture_find_ecode(struct __guc_capture_parsed_output *node,
> +                                  struct xe_hw_engine_snapshot *snapshot)
> +{
alan:snip
> +       reginfo = node->reginfo + GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE;
alan: so it looks like we are only ever calling cp_reg_to_snapshot for
"LIST_TYPE_ENGINE_INSTANCE", However, as per our offline conversation, this is
incorrect... we should be looking for all register type lists.
> +       regs = reginfo->regs;
> +       for (i = 0; i < reginfo->num_regs; i++)
> +               cp_reg_to_snapshot(regs[i].offset, regs[i].value, &snapshot->reg);
> +}
alan:snip
> +void
> +xe_hw_engine_snapshot_from_capture(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot *snapshot)
> +{
> +       struct xe_gt *gt = hwe->gt;
> +       struct xe_guc *guc = &gt->uc.guc;
> +       struct __guc_capture_parsed_output *n, *ntmp;
> +
> +       if (list_empty(&guc->capture->outlist))
> +               return xe_hw_engine_snapshot_from_engine(hwe, snapshot);
alan: This looks partially wrong, we cannot be manually snapshottting engine registers after the
fact when we ARE actually using guc submission with guc error capture. I think we
can check if (the recently merged) "wedgedmode is >=2" (i.e. GuC will NOT initiate
engine resets) and if so, then only do the manual xe_hw_engine_snapshot_from_engine.
else if 'list is empty' AND 'xe->wedged.mode < 2', then print a warning. This might
indicate we have a bug in guc-err-capture extraction code of we have leaked away
our preallocated cachelist of nodes. Btw, if you added above code path because you
DID actually see us running out of preallocated nodes, then i have already commented
above at guc_capture_free_list that you are not properly using the "cachelist<->outlist"
concept properly which would explain why we ran out.
> +
> +       /*
> +        * Look for a matching GuC reported error capture node from
> +        * the internal output link-list based on engine class and instance.
> +        */
> +       list_for_each_entry_safe(n, ntmp, &guc->capture->outlist, link) {
> +               u32 hwe_guc_class = xe_engine_class_to_guc_class(hwe->class);
> +
> +               if (n->eng_class == hwe_guc_class && n->eng_inst == hwe->instance) {
alan: just matching engine class and instance alone? i don't think that is sufficient,
we should also be matching against the LRCA and guc-id to be accurate do we dont end up
with mixing capture snapshots across different back-to-back captures that came
from different contexts.
> +                       guc_capture_find_ecode(n, snapshot);
> +                       list_del(&n->link);
> +                       return;
> +               }
> +       }
> +}

alan: i must say that from a code readibility perspecte the function names dont seem
to tally with what its doing. 
Current flow in this patch:

xe_hw_engine_snapshot_from_capture (find matching node from outlist)
   |---> guc_capture_find_ecode (loop through capture reglist)
           |---> cp_reg_to_snapshot (copy reg-value into snapshot_regs position).

so maybe something where the name matches the code inside it:
xe_hw_engine_find_and copy_guc_capture_snapshot (find matching node from outlist)
   |---> guc_capture_parse_reglist (loop through capture reglist)
           |---> cp_reg_to_snapshot (copy reg-value into snapshot_regs position).

alan: additionally, above code locations means that xe_hw_engines.c
needs to be aware of guc-capture internals (like what outlist is and
what its node contents are). However, I'm not sure if that is the
allowed practice in xe's inter-subsystem access design/guidance. I would
have thought its better to keep guc-capture self-contained and move above
3 functions into guc-capture exporting only first function. This would
mean guc-capture needs to be aware of struct snapshot usage. I'm
unfamiliar with the design rules so lets take this offline with others.

alan:snip
> +void
> +xe_hw_engine_snapshot_from_engine(struct xe_hw_engine *hwe, struct xe_hw_engine_snapshot *snapshot)
> +{
> +       int i;
> +
> +       /* Skip RCU_MODE, the last print */
> +       for (i = 0; i < ARRAY_SIZE(capture_engine_reg) - 1; i++) {
> +               u32 *field = (u32 *)((uintptr_t)&snapshot->reg + capture_engine_reg[i].dst_offset);
> +               *field = hw_engine_mmio_read32(hwe, capture_engine_reg[i].reg);
> +       }
> +       for (i = 0; i < ARRAY_SIZE(capture_engine_reg_64); i++) {
> +               u64 *field = (u64 *)((uintptr_t)&snapshot->reg +
> +                                     capture_engine_reg_64[i].dst_offset);
> +               *field = hw_engine_mmio_read32(hwe, capture_engine_reg_64[i].reg_lo) |
> +                        (u64)hw_engine_mmio_read32(hwe, capture_engine_reg_64[i].reg_hi) << 32;
> +       }
> +       if (snapshot->hwe->class == XE_ENGINE_CLASS_COMPUTE)
> +               snapshot->reg.rcu_mode = xe_mmio_read32(hwe->gt, RCU_MODE);
alan: this register effects both compute and render class so might need to fix this.
> +
> +       xe_hw_engine_snapshot_instdone_capture(hwe, snapshot);
> +}
> +

alan:snip
> @@ -990,29 +1117,25 @@ void xe_hw_engine_snapshot_print(struct xe_hw_engine_snapshot *snapshot,
>                    snapshot->logical_instance);
>         drm_printf(p, "\tForcewake: domain 0x%x, ref %d\n",
>                    snapshot->forcewake.domain, snapshot->forcewake.ref);
> 

> +       for (i = 0;
> +            /* Skip RCU_MODE, will be processed later */
> +            i < ARRAY_SIZE(capture_engine_reg) - 1;
> +            i++) {
> +               u32 *field = (u32 *)((uintptr_t)&snapshot->reg + capture_engine_reg[i].dst_offset);
> +
> +               drm_printf(p, "\t%s: 0x%08x\n", capture_engine_reg[i].regname, *field);
> +       }
> +
> +       for (i = 0; i < ARRAY_SIZE(capture_engine_reg_64); i++) {
> +               u64 *field = (u64 *)((uintptr_t)&snapshot->reg +
> +                                    capture_engine_reg_64[i].dst_offset);
> +
> +               drm_printf(p, "\t%s: 0x%016llx\n", capture_engine_reg_64[i].regname, *field);
> +       }
>         xe_hw_engine_snapshot_instdone_print(snapshot, p);
>  
> +       /* Last RCU_MODE print */
alan: as mentioned in my other comment in this patch (and as per
offline converation) i feel like rcu mode really should also be
captured by guc. But i also realize now that maybe reading this
register directly is okay if this register never has any status bits
that changes depending on workload and can never change at runtime ...
OR... if GUC doesnt allow capturing (which i doubt).
Let me know if i got this wrong.

>         if (snapshot->hwe->class == XE_ENGINE_CLASS_COMPUTE)
alan: based on the current hw spec, this register has shared impact
across both CCS and RCS engine classes so this check should really
be fore "if render or compute class"
>                 drm_printf(p, "\tRCU_MODE: 0x%08x\n",
>                            snapshot->reg.rcu_mode);
> diff --git a/drivers/gpu/drm/xe/xe_hw_engine.h b/drivers/gpu/drm/xe/xe_hw_engine.h
> index 71968ee2f600..937ce20ea8de 100644
> --- a/drivers/gpu/drm/xe/xe_hw_engine.h
> +++ b/drivers/gpu/drm/xe/xe_hw_engine.h
> @@ -62,6 +62,10 @@ void xe_hw_engine_print(struct xe_hw_engine *hwe, struct drm_printer *p);
>  void xe_hw_engine_setup_default_lrc_state(struct xe_hw_engine *hwe);
>  
>  bool xe_hw_engine_is_reserved(struct xe_hw_engine *hwe);
> +void xe_hw_engine_snapshot_from_engine(struct xe_hw_engine *hwe,
> +                                      struct xe_hw_engine_snapshot *snapshot);
> +void xe_hw_engine_snapshot_from_capture(struct xe_hw_engine *hwe,
> +                                       struct xe_hw_engine_snapshot *snapshot);
>  static inline bool xe_hw_engine_is_valid(struct xe_hw_engine *hwe)
>  {
>         return hwe->name;
> diff --git a/drivers/gpu/drm/xe/xe_hw_engine_types.h b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> index 9f9755e31b9f..4433c0c8ffc2 100644
> --- a/drivers/gpu/drm/xe/xe_hw_engine_types.h
> +++ b/drivers/gpu/drm/xe/xe_hw_engine_types.h
> @@ -150,6 +150,99 @@ struct xe_hw_engine {
>         struct xe_hw_engine_class_intf *eclass;
>  };
>  
> +/**
> + * struct __reg_map_descr - Mapping table, defines a 32 bit register and corresponding data field
> + *
> + * Contains the defines of a 32 bit register, and the offset in the capture snapshot.
> + */
> +struct __reg_map_descr {
> +       /** @dst_offset: Offset in snap_shot_regs structure */
alan: can we not name it "dst_offset" since that sounds too much like what
we use for register or memory bar offsets, while this is more like a
"position_in_snapshot". my comment applies for "__reg_map_descr_64" as well
> +       u32 dst_offset;
> +       /** @regname: Name of register */
> +       const char *regname;
> +       /** @reg: Hardware register */
> +       struct xe_reg reg;
> +};
alan:snip
> +/**
> + * struct xe_hw_engine_snapshot - Hardware engine snapshot
> + *
> + * Contains the snapshot of useful hardware engine info and registers.
> + */
> +struct snap_shot_regs {
alan: i believe "snapshot" should be one word, if we wanna align with
dictionary spelling. (hope i didnt get this wrong?)
alan:snip
> +       u32 ipehr;
> +       /** @rcu_mode: RCU_MODE */
> +       u32 rcu_mode;
alan: this really should be a class or global register, but i
guess it might still match up and get found from guc-capture
if its located in the category of being an "engine instance"
register. However, as per discussed offline, let's continue
to make snapshot struct a flat-catch-all-reg-list and correspondingly
in guc_capture_find_ecode above, we should go through all register
list types when copying register values into snapshot struct.
That said, i notice you dont have forcewake register here.
> +       struct {
> +               /** @reg.instdone.ring: RING_INSTDONE */
> +               u32 ring;
> +               /** @reg.instdone.slice_common: SC_INSTDONE */
> 
alan:snip
> +               u32 *row;
> +               /** @reg.instdone.geom_svg: INSTDONE_GEOM_SVGUNIT */
> +               u32 *geom_svg;
> +       } instdone;
alan: nit: i beleive, given the purpose of this substruct "separation"
this substruct should be called "steered-regs" not "instdone" (if future
steered just happent to get named without "INSTDONE" in them. However
since this name is unrelated to this series, i'll leave it a nit.

alan:snip
>  #endif
> diff --git a/drivers/gpu/drm/xe/xe_sched_job.c b/drivers/gpu/drm/xe/xe_sched_job.c
> index cd8a2fba5438..922cd1a8753f 100644
> --- a/drivers/gpu/drm/xe/xe_sched_job.c
> +++ b/drivers/gpu/drm/xe/xe_sched_job.c
alan:snip
> @@ -191,10 +193,11 @@ void xe_sched_job_destroy(struct kref *ref)
>  {
>         struct xe_sched_job *job =
>                 container_of(ref, struct xe_sched_job, refcount);
> +       struct xe_device *xe = job_to_xe(job);
>  
>         if (unlikely(job->q->flags & EXEC_QUEUE_FLAG_KERNEL))
> -               xe_pm_runtime_put(job_to_xe(job));
> -       xe_exec_queue_put(job->q);
> +               xe_pm_runtime_put(xe);
alan: sorry, i'm confused, but why is this code changing?
seems unrleated to guc-error-capreut to me. if we are NOT doing the
xe_exec_queue_put here (so that certain information like lrca + guc-id
+ engine-instance/class is "held" until we can print the dev-core-dump,
then we should be relocating this call to elsewhere after that sequence)
so this is either an unnecessary change ... OR ... we have missed
the "put" that should still go somewhere else and potentially leaking
now? let me know if i am misunderstanding this patch.

> 

> +
>         dma_fence_put(job->fence);
>         drm_sched_job_cleanup(&job->drm);
>         job_free(job);


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

* Re: [PATCH v8 1/6] drm/xe/guc: Prepare GuC register list and update ADS size for error capture
  2024-05-10 18:43   ` Teres Alexis, Alan Previn
@ 2024-05-14 22:44     ` Dong, Zhanjun
  0 siblings, 0 replies; 27+ messages in thread
From: Dong, Zhanjun @ 2024-05-14 22:44 UTC (permalink / raw)
  To: Teres Alexis, Alan Previn, intel-xe

See my comments inline below.

Regards,
Zhanjun

On 2024-05-10 2:43 p.m., Teres Alexis, Alan Previn wrote:
> On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:
>> Add referenced registers defines and list of registers.
>> Update GuC ADS size allocation to include space for
>> the lists of error state capture register descriptors.
>>
>>
> alan:snip
>> +int xe_calculate_guc_regs_capture_worst_size(struct xe_guc *guc)
>> +{
>> +       size_t total_size, class_size, instance_size, global_size;
>> +       int i, j;
>> +
>> +       /* This function calculates the worst case register lists size by
>> +        * including all possible engines classes. It is called during the
>> +        * first of a two-phase GuC (and ADS-population) initialization
>> +        * sequence, that is, during the pre-hwconfig phase before we have
>> +        * the exact engine fusing info.
>> +        */
>> +       total_size = PAGE_SIZE; /* Pad a page in front for empty lists */
>> +       for (i = 0; i < GUC_CAPTURE_LIST_INDEX_MAX; i++) {
>> +               for (j = 0; j < GUC_LAST_ENGINE_CLASS; j++) {
> alan: so in rev6, i mentioned in one of the other hunks that in guc interface,
> the 'max engine class' definition used by guc-error-capture register-list-arrays
> does not follow the definition of engine-class enum of above (which is used
> for submission and other interfaces with GuC). I notice you fixed this on
> another hunk but missed it above. I should have made it clear this change is
> required for ALL cases where we are looping through the engine classes' register
> lists used in guc- error-capture.
Thanks, will changed to GUC_CAPTURE_LIST_CLASS_MAX

>> +                       if (xe_guc_capture_getlistsize(guc, i,
>> +                                                      GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
>> +                                                      j, &class_size) < 0)
>> +                               class_size = 0;
>> +                       if (xe_guc_capture_getlistsize(guc, i,
>> +                                                      GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE,
>> +                                                      j, &instance_size) < 0)
>>
> alan:snip
> 
>>   #define MAX_GOLDEN_LRC_SIZE    (SZ_4K * 64)
>>   
>>   int xe_guc_ads_init(struct xe_guc_ads *ads)
>> @@ -398,6 +443,7 @@ int xe_guc_ads_init(struct xe_guc_ads *ads)
>>          struct xe_bo *bo;
>>   
>>          ads->golden_lrc_size = calculate_golden_lrc_size(ads);
>> +       ads->capture_size = xe_calculate_guc_regs_capture_worst_size(ads_to_guc(ads));
>>          ads->regset_size = calculate_regset_size(gt);
>>          ads->ads_waklv_size = calculate_waklv_size(ads);
>>   
>> @@ -431,9 +477,10 @@ int xe_guc_ads_init_post_hwconfig(struct xe_guc_ads *ads)
>>          xe_gt_assert(gt, ads->bo);
>>   
>>          ads->golden_lrc_size = calculate_golden_lrc_size(ads);
>> +       ads->capture_size = xe_calculate_guc_regs_capture_worst_size(ads_to_guc(ads));
> alan: nit: we had an offline conversation that despite post_hw_config knowing
> exact engine class list, we simpliify and improve execution time by using
> worst-case-size in both pre and post hwconfig when deciding on size. Would be nice to
> add a comment on that? (so folks dont assume its a bug)
Sure, will do.
> 
> alan:snip
> 
> 
>>          ads->regset_size = calculate_regset_size(gt);
>>   
>> -       xe_gt_assert(gt, ads->golden_lrc_size +
>> +       xe_gt_assert(gt, ads->golden_lrc_size + ads->capture_size +
>>                       (ads->regset_size - prev_regset_size) <=
>>                       MAX_GOLDEN_LRC_SIZE);
> alan: i missed this in rev6 - why are we using ads->capture_size to verify MAX_GOLDEN_LRC_SIZE is
> sufficient? i dont believe this macro is related to guc-error-capture reg list.
> 
Yes, will remove it.
> alan:snip
> 
>> +static int guc_capture_prep_lists(struct xe_guc_ads *ads)
>> +{
>> +       struct xe_guc *guc = ads_to_guc(ads);
>> +       struct xe_gt *gt = ads_to_gt(ads);
>> +       u32 ads_ggtt, capture_offset, null_ggtt, total_size = 0;
>> +       struct iosys_map info_map;
>> +       size_t size = 0;
>> +       void *ptr;
>>          int i, j;
> alan:snip
>> +                       /********************************************************/
>> +                       /*** engine exists: start with engine-class registers ***/
>> +                       /********************************************************/
>> +                       write_empty_list = true; /* starting assumption is an empty list */
>> +                       size = 0;
>> +                       if (!xe_guc_capture_getlistsize(guc, i,
>> +                                                       GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
>> +                                                       j, &size)) {
>> +                               if (total_size + size > ads->capture_size)
>> +                                       xe_gt_dbg(gt, "Capture size overflow :%lu vs %d\n",
>> +                                                 total_size + size, ads->capture_size);
> alan: i think premerge hooks are failing due to format specifiers - please do fix that.
> alan:snip
>> +       if (ads->capture_size != PAGE_ALIGN(total_size))
>> +               xe_gt_info(gt, "ADS capture alloc size changed from %d to %d\n",
>> +                          ads->capture_size, PAGE_ALIGN(total_size));
>> +       return PAGE_ALIGN(total_size);
>>   }
> alan:snip
> 
>> +#define COMMON_XELP_BASE_GLOBAL \
>> +       { FORCEWAKE_GT,             0,      0, "FORCEWAKE" }
>> +
>> +#define COMMON_BASE_ENGINE_INSTANCE \
>> +       { RING_ESR(0),              0,      0, "ESR" }, \
>> +       { RING_EMR(0),              0,      0, "EMR" }, \
>> +       { RING_EIR(0),              0,      0, "EIR" }, \
>> +       { RING_EXECLIST_STATUS_HI(0), 0,    0, "RING_EXECLIST_STATUS_HI" }, \
>> +       { RING_EXECLIST_STATUS_LO(0), 0,    0, "RING_EXECLIST_STATUS_LO" }, \
>> +       { RING_DMA_FADD(0),         0,      0, "RING_DMA_FADD_LDW" }, \
>> +       { RING_DMA_FADD_UDW(0),     0,      0, "RING_DMA_FADD_UDW" }, \
>> +       { RING_IPEHR(0),            0,      0, "IPEHR" }, \
>> +       { RING_BBADDR(0),           0,      0, "RING_BBADDR_LOW32" }, \
>> +       { RING_BBADDR_UDW(0),       0,      0, "RING_BBADDR_UP32" }, \
>> +       { RING_ACTHD(0),            0,      0, "ACTHD_LDW" }, \
>> +       { RING_ACTHD_UDW(0),        0,      0, "ACTHD_UDW" }, \
>> +       { RING_START(0),            0,      0, "START" }, \
>> +       { RING_HEAD(0),             0,      0, "HEAD" }, \
>> +       { RING_TAIL(0),             0,      0, "TAIL" }, \
>> +       { RING_CTL(0),              0,      0, "CTL" }, \
>> +       { RING_MI_MODE(0),          0,      0, "MODE" }, \
>> +       { RING_HWS_PGA(0),          0,      0, "HWS" }, \
>> +       { RING_MODE(0),             0,      0, "GFX_MODE" }
> alan: I notice that "struct __guc_mmio_reg_descr.regname" is introduced here in
> Patch-#1 and used in the population of the static reglist table above but then
> never ever referenced in the entire series. In fact in Patch #6, its removed.
> 
> NOTE: this is different from i915 where this variable was used in the reporting
> patch of i915's series but it looks like from this xe series version, we are
> creating a shared "register->offset->name" lookup table list in xe_hw_engine.c
> for both guc and execlist in Patch 6.
> 
> I believe this flirts dangerously close to breaking linux patch rules. A variable/
> func not used in the entire series really shouldnt be added. In this case, we are
> NOT consuming regname at all anywhere in the series. And then we remove it in the
> subsequent patch-6.
Yes, will get it removed in next patch.
Meanwhile, as there are 2 register list exist in capture and 
hw_engine.c, so I'm also consider to merge them. It could be done in 
separate patch.
> 
> alan:snip
> 
> 
> 
>> +static int
>> +guc_capture_getlistsize(struct xe_guc *guc, u32 owner, u32 type, u32 classid,
>> +                       size_t *size, bool is_purpose_est)
>> +{
>> +       struct xe_guc_state_capture *gc = guc->capture;
>> +       struct __guc_capture_ads_cache *cache = &gc->ads_cache[owner][type][classid];
>> +       int num_regs;
>> +
>> +       if (!gc->reglists) {
>> +               xe_gt_warn(guc_to_gt(guc), "No capture reglist for this device\n");
>> +               return -ENODEV;
>> +       }
>> +
>> +       if (cache->is_valid) {
>> +               *size = cache->size;
>> +               return cache->status;
>> +       }
>> +
>> +       if (!is_purpose_est && owner == GUC_CAPTURE_LIST_INDEX_PF &&
> alan: so this one took me a while to figure out why it has become orphaned.
> (after i went through the entire series hunting for it). I'm referign to "is_purpose_est".
> 
> So this is another i915 inherittance which did have valid reasoning. In i915 when we
> were doing "check_guc_capture_size" (which is a one-time event), we wanted to flag if
> any of the register tables were non existent. take note that at this early log-buffer-
> calculation time, we assumed all engine classes are valid on the platform at
> pre-hw-config time. The reason is because we did actually discover cases when new
> platforms added new engines and the developer completely missed adding the register
> table for error capture as well. With this message, it would get flagged as a warning.
> However, this same lower level function was also used for the regular register
> list population which can get called everytime we reset guc including coming
> out of suspend or if we performed a GT reset and so we didn't want that warning
> to happen every single time - only once per module load. so thats why we
> created a wraper with that "is_purpose_est" to differentate if the caller
> was for the log-buffer-size-estmation or for actual population where we only
> print the warn in the former.
> 
> so my review comment would be: we already learnt the lessons from i915 so lets
> use this properly. i suggest we fix patch #3 so that check_guc_capture_size
> will call above guc_capture_getlistsize with is_purpose_est set true as opposed to
> calling xe_calculate_guc_regs_capture_worst_size. I'll make the same comment
> in Patch3

Thanks for point out. Will be fixed in patch 3
> 
> alan:snip
> 
>> +
>> +#endif /* _XE_GUC_CAPTURE_H */
>> diff --git a/drivers/gpu/drm/xe/xe_guc_capture_fwif.h b/drivers/gpu/drm/xe/xe_guc_capture_fwif.h
>> new file mode 100644
>> index 000000000000..79bc277afaa8
>> --- /dev/null
> alan:snip
> 
>> +struct guc_state_capture_group_header_t {
>> +       u32 owner;
> alan: If i read the the spec correctly, capture_group_header's owner
> has VFID field at GENMASK(7,0).
Will add.
>> +       u32 info;
>> +#define CAP_GRP_HDR_NUM_CAPTURES GENMASK(7, 0)
>> +#define CAP_GRP_HDR_CAPTURE_TYPE GENMASK(15, 8) /* guc_capture_group_types */
>> +} __packed;
> alan:snip
> 

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

* Re: [PATCH v8 2/6] drm/xe/guc: Add XE_LP steered register lists
  2024-05-11  0:17   ` Teres Alexis, Alan Previn
@ 2024-05-14 23:00     ` Dong, Zhanjun
  0 siblings, 0 replies; 27+ messages in thread
From: Dong, Zhanjun @ 2024-05-14 23:00 UTC (permalink / raw)
  To: Teres Alexis, Alan Previn, intel-xe



On 2024-05-10 8:17 p.m., Teres Alexis, Alan Previn wrote:
> only a couple of nits, so,
> Reviewed-by: Alan Previn <alan.previn.teres.alexis@intel.com>
> 
> On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:
>> Add the ability for runtime allocation and freeing of
>> steered register list extentions that depend on the
>> detected HW config fuses.
>>
> alan:snip
>> +static void
>> +guc_capture_alloc_steered_lists(struct xe_guc *guc, const struct __guc_mmio_reg_descr_group *lists)
>> +{
>> +       struct xe_gt *gt = guc_to_gt(guc);
>> +       u16 slice, subslice;
>> +       int iter, i, num_steer_regs, num_tot_regs = 0;
>> +       const struct __guc_mmio_reg_descr_group *list;
>> +       struct __guc_mmio_reg_descr_group *extlists;
>> +       struct __guc_mmio_reg_descr *extarray;
>> +       bool has_xehpg_extregs;
>> +       struct drm_device *drm = &gt_to_xe(gt)->drm;
> alan: nit: order vars as reverse christmas tree. I'm not sure if this is a hard rule,
> I've seen many review comments about this but cant find a hard rule in kernel doc.
> I wasnt paying attention to this earlier and realize that Patch #1 has at least 4 functions
> with this issue. I'm going to leave at your discretion since i assume this is a nit.
> 
in Xe folder, egrep "&gt_to_xe\(.*\)->drm" *.c
we have many

>> +
>> +       /* steered registers currently only exist for the render-class */
>> +       list = guc_capture_get_one_list(lists, GUC_CAPTURE_LIST_INDEX_PF,
>> +                                       GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS,
>> +                                       GUC_CAPTURE_LIST_CLASS_RENDER_COMPUTE);
>> +       /* skip if extlists was previously allocated */
>> +       if (!list || guc->capture->extlists)
>> +               return;
>> +
>> +       has_xehpg_extregs = GRAPHICS_VERx100(gt_to_xe(gt)) >= 1255;
>> +
>> +       num_steer_regs = ARRAY_SIZE(xe_extregs);
>> +       if (has_xehpg_extregs)
>> +               num_steer_regs += ARRAY_SIZE(xehpg_extregs);
>> +
>> +       num_tot_regs += num_steer_regs * bitmap_weight(gt->fuse_topo.g_dss_mask,
>> +                                                      sizeof(gt->fuse_topo.g_dss_mask) * 8);
> alan: nit: a bit confusing we are using "num_tot_regs +=" when its the first use of this
> variable after init to zero, so just "num_tot_regs =" is fine here.
Typo, will changed to =
> 
> alan:snip
> 

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

* Re: [PATCH v8 3/6] drm/xe/guc: Add capture size check in GuC log buffer
  2024-05-08 22:57   ` Teres Alexis, Alan Previn
@ 2024-05-15 21:39     ` Dong, Zhanjun
  0 siblings, 0 replies; 27+ messages in thread
From: Dong, Zhanjun @ 2024-05-15 21:39 UTC (permalink / raw)
  To: Teres Alexis, Alan Previn, intel-xe



On 2024-05-08 6:57 p.m., Teres Alexis, Alan Previn wrote:
> On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:
>> The capture-nodes is included in GuC log buffer, add the size check
>> for capture region in the whole GuC log buffer.
>> Check the worst size of register capture aginst error capture region
>> size.
>>
> alan:snip
> 
>> +
>> +#define GUC_LOG_DEFAULT_CRASH_BUFFER_SIZE      CRASH_BUFFER_SIZE
>> +#define GUC_LOG_DEFAULT_DEBUG_BUFFER_SIZE      DEBUG_BUFFER_SIZE
>> +#define GUC_LOG_DEFAULT_CAPTURE_BUFFER_SIZE    CAPTURE_BUFFER_SIZE
>> +
> 
> nit: actually not sure why we need the define on the left, since the
> usage could just use the ones its sourced from on the right.
> 
> alan: as per offline conversation, we beilieve the default size needs t
> to larger to accomodate back to back worst case capture sizes.
> So as per offline, we need to increase that to at least 32K? (or 128K
> with spare)

CAPTURE_BUFFER_SIZE will be set to 1M, which is equal to the i915 setting.

Regards,
Zhanjun

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

* Re: [PATCH v8 4/6] drm/xe/guc: Extract GuC error capture lists
  2024-05-11  1:43   ` Teres Alexis, Alan Previn
@ 2024-05-15 21:45     ` Dong, Zhanjun
  2024-05-15 21:55       ` Dong, Zhanjun
  0 siblings, 1 reply; 27+ messages in thread
From: Dong, Zhanjun @ 2024-05-15 21:45 UTC (permalink / raw)
  To: Teres Alexis, Alan Previn, intel-xe

See my comments below.

Regards,
Zhanjun Dong

On 2024-05-10 9:43 p.m., Teres Alexis, Alan Previn wrote:
> On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:
>> Upon the G2H Notify-Err-Capture event, parse through the
>> GuC Log Buffer (error-capture-subregion) and generate one or
>> more capture-nodes. A single node represents a single "engine-
>> instance-capture-dump" and contains at least 3 register lists:
>> global, engine-class and engine-instance. An internal link
>> list is maintained to store one or more nodes.
>>
>> Because the link-list node generation happen before the call
>> to devcoredump, duplicate global and engine-class register
>> lists for each engine-instance register dump if we find
>> dependent-engine resets in a engine-capture-group.
>>
> alan:snip
>> diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c b/drivers/gpu/drm/xe/xe_guc_capture.c
>> index d2df027081b5..71d7c4a58925 100644
>> --- a/drivers/gpu/drm/xe/xe_guc_capture.c
>> +++ b/drivers/gpu/drm/xe/xe_guc_capture.c
>> @@ -520,6 +520,560 @@ static void check_guc_capture_size(struct xe_guc *guc)
>>                            buffer_size, spare_size, capture_size);
>>   }
>>
> alan:snip
>> +static struct __guc_capture_parsed_output *
>> +guc_capture_get_prealloc_node(struct xe_guc *guc)
>> +{
>> +       struct __guc_capture_parsed_output *found = NULL;
>> +
>> +       if (!list_empty(&guc->capture->cachelist)) {
>> +               struct __guc_capture_parsed_output *n, *ntmp;
>> +
>> +               /* get first avail node from the cache list */
>> +               list_for_each_entry_safe(n, ntmp, &guc->capture->cachelist, link) {
>> +                       found = n;
>> +                       list_del(&n->link);
>> +                       break;
>> +               }
>> +       } else {
>> +               struct __guc_capture_parsed_output *n, *ntmp;
>> +
>> +               /* traverse down and steal back the oldest node already allocated */
>> +               list_for_each_entry_safe(n, ntmp, &guc->capture->outlist, link) {
>> +                       found = n;
>> +               }
>> +               if (found)
>> +                       list_del(&found->link);
>> +       }
>> +       if (found)
>> +               guc_capture_init_node(guc, found);
>> +
>> +       return found;
>> +}
> alan: I mentioned this in rev6, you cannot start pre-allocated nodelist anywhere
> in this patch when you are only allocating it in patch 6. Look back at my rev 6
> comments on this. Also, take a look at the original i915 patch on how to implement
> guc_capture_alloc/delete_one_node without preallocated nodelist:
> https://patchwork.freedesktop.org/patch/479022/?series=101604&rev=1
> (note: watch especially for the use of new->reginfo[i].regs which needed
> additional allocation step. Alternatively we could squash patch 4 and patch 6
> together and change patch 4's comment but not sure it might be too large a
> patch (can discuss offline).

Good point, let me try with pre-alloc vs GFP_AOTMIC and will get back to 
you.

> 
>> +static int
>> +guc_capture_extract_reglists(struct xe_guc *guc, struct __guc_capture_bufstate *buf)
>> +{
>> +       struct xe_gt *gt = guc_to_gt(guc);
>> +       struct guc_state_capture_group_header_t ghdr = {0};
>> +       struct guc_state_capture_header_t hdr = {0};
>> +       struct __guc_capture_parsed_output *node = NULL;
>> +       struct guc_mmio_reg *regs = NULL;
>> +       int i, numlists, numregs, ret = 0;
>> +       enum guc_capture_type datatype;
>> +       struct guc_mmio_reg tmp;
>> +       bool is_partial = false;
> alan:snip
>> +               if (!node) {
>> +                       node = guc_capture_get_prealloc_node(guc);
> alan: see above comment on the use of prealloc_node (as per rev 6's comments)
> alan:snip
> 
>> +static void __guc_capture_process_output(struct xe_guc *guc)
>> +{
>> +       unsigned int buffer_size, read_offset, write_offset, full_count;
>> +       struct xe_uc *uc = container_of(guc, typeof(*uc), guc);
>> +       struct guc_log_buffer_state log_buf_state_local;
>> +       struct guc_log_buffer_state *log_buf_state;
>> +       struct __guc_capture_bufstate buf;
>> +       bool new_overflow;
>> +       int ret;
>> +       u32 log_buf_state_offset;
>> +       u32 src_data_offset;
>> +
>> +       log_buf_state = (struct guc_log_buffer_state *)((ulong)guc->log.bo->vmap.vaddr +
>> +                       (sizeof(struct guc_log_buffer_state) * GUC_CAPTURE_LOG_BUFFER));
> alan: once again, i dont think we can use vmap.vaddr directly this this anymore right?
> i dont think we use "log_buf_state" until the end of this function to set the new read_ptr
> and flush flag. We ought to use xe_map_wr below?
Yes, need xe_map_xxx helper, as we are doing read, so should be xe_map_rd
>> +
>> +       log_buf_state_offset = sizeof(struct guc_log_buffer_state) * GUC_CAPTURE_LOG_BUFFER;
>> +       src_data_offset = xe_guc_get_log_buffer_offset(&guc->log, GUC_CAPTURE_LOG_BUFFER);
>> +
>> +       /*
>> +        * Make a copy of the state structure, inside GuC log buffer
>> +        * (which is uncached mapped), on the stack to avoid reading
>> +        * from it multiple times.
>> +        */
>> +       xe_map_memcpy_from(guc_to_xe(guc), &log_buf_state_local, &guc->log.bo->vmap,
>> +                          log_buf_state_offset, sizeof(struct guc_log_buffer_state));
> alan:snip
> 

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

* Re: [PATCH v8 4/6] drm/xe/guc: Extract GuC error capture lists
  2024-05-15 21:45     ` Dong, Zhanjun
@ 2024-05-15 21:55       ` Dong, Zhanjun
  0 siblings, 0 replies; 27+ messages in thread
From: Dong, Zhanjun @ 2024-05-15 21:55 UTC (permalink / raw)
  To: intel-xe



On 2024-05-15 5:45 p.m., Dong, Zhanjun wrote:
> See my comments below.
> 
> Regards,
> Zhanjun Dong
> 
> On 2024-05-10 9:43 p.m., Teres Alexis, Alan Previn wrote:
>> On Mon, 2024-05-06 at 18:47 -0700, Zhanjun Dong wrote:
>>> Upon the G2H Notify-Err-Capture event, parse through the
>>> GuC Log Buffer (error-capture-subregion) and generate one or
>>> more capture-nodes. A single node represents a single "engine-
>>> instance-capture-dump" and contains at least 3 register lists:
>>> global, engine-class and engine-instance. An internal link
>>> list is maintained to store one or more nodes.
>>>
>>> Because the link-list node generation happen before the call
>>> to devcoredump, duplicate global and engine-class register
>>> lists for each engine-instance register dump if we find
>>> dependent-engine resets in a engine-capture-group.
>>>
>> alan:snip
>>> diff --git a/drivers/gpu/drm/xe/xe_guc_capture.c 
>>> b/drivers/gpu/drm/xe/xe_guc_capture.c
>>> index d2df027081b5..71d7c4a58925 100644
>>> --- a/drivers/gpu/drm/xe/xe_guc_capture.c
>>> +++ b/drivers/gpu/drm/xe/xe_guc_capture.c
>>> @@ -520,6 +520,560 @@ static void check_guc_capture_size(struct 
>>> xe_guc *guc)
>>>                            buffer_size, spare_size, capture_size);
>>>   }
>>>
>> alan:snip
>>> +static struct __guc_capture_parsed_output *
>>> +guc_capture_get_prealloc_node(struct xe_guc *guc)
>>> +{
>>> +       struct __guc_capture_parsed_output *found = NULL;
>>> +
>>> +       if (!list_empty(&guc->capture->cachelist)) {
>>> +               struct __guc_capture_parsed_output *n, *ntmp;
>>> +
>>> +               /* get first avail node from the cache list */
>>> +               list_for_each_entry_safe(n, ntmp, 
>>> &guc->capture->cachelist, link) {
>>> +                       found = n;
>>> +                       list_del(&n->link);
>>> +                       break;
>>> +               }
>>> +       } else {
>>> +               struct __guc_capture_parsed_output *n, *ntmp;
>>> +
>>> +               /* traverse down and steal back the oldest node 
>>> already allocated */
>>> +               list_for_each_entry_safe(n, ntmp, 
>>> &guc->capture->outlist, link) {
>>> +                       found = n;
>>> +               }
>>> +               if (found)
>>> +                       list_del(&found->link);
>>> +       }
>>> +       if (found)
>>> +               guc_capture_init_node(guc, found);
>>> +
>>> +       return found;
>>> +}
>> alan: I mentioned this in rev6, you cannot start pre-allocated 
>> nodelist anywhere
>> in this patch when you are only allocating it in patch 6. Look back at 
>> my rev 6
>> comments on this. Also, take a look at the original i915 patch on how 
>> to implement
>> guc_capture_alloc/delete_one_node without preallocated nodelist:
>> https://patchwork.freedesktop.org/patch/479022/?series=101604&rev=1
>> (note: watch especially for the use of new->reginfo[i].regs which needed
>> additional allocation step. Alternatively we could squash patch 4 and 
>> patch 6
>> together and change patch 4's comment but not sure it might be too 
>> large a
>> patch (can discuss offline).
> 
> Good point, let me try with pre-alloc vs GFP_AOTMIC and will get back to 
> you.
> 
>>
>>> +static int
>>> +guc_capture_extract_reglists(struct xe_guc *guc, struct 
>>> __guc_capture_bufstate *buf)
>>> +{
>>> +       struct xe_gt *gt = guc_to_gt(guc);
>>> +       struct guc_state_capture_group_header_t ghdr = {0};
>>> +       struct guc_state_capture_header_t hdr = {0};
>>> +       struct __guc_capture_parsed_output *node = NULL;
>>> +       struct guc_mmio_reg *regs = NULL;
>>> +       int i, numlists, numregs, ret = 0;
>>> +       enum guc_capture_type datatype;
>>> +       struct guc_mmio_reg tmp;
>>> +       bool is_partial = false;
>> alan:snip
>>> +               if (!node) {
>>> +                       node = guc_capture_get_prealloc_node(guc);
>> alan: see above comment on the use of prealloc_node (as per rev 6's 
>> comments)
>> alan:snip
>>
>>> +static void __guc_capture_process_output(struct xe_guc *guc)
>>> +{
>>> +       unsigned int buffer_size, read_offset, write_offset, full_count;
>>> +       struct xe_uc *uc = container_of(guc, typeof(*uc), guc);
>>> +       struct guc_log_buffer_state log_buf_state_local;
>>> +       struct guc_log_buffer_state *log_buf_state;
>>> +       struct __guc_capture_bufstate buf;
>>> +       bool new_overflow;
>>> +       int ret;
>>> +       u32 log_buf_state_offset;
>>> +       u32 src_data_offset;
>>> +
>>> +       log_buf_state = (struct guc_log_buffer_state 
>>> *)((ulong)guc->log.bo->vmap.vaddr +
>>> +                       (sizeof(struct guc_log_buffer_state) * 
>>> GUC_CAPTURE_LOG_BUFFER));
>> alan: once again, i dont think we can use vmap.vaddr directly this 
>> this anymore right?
>> i dont think we use "log_buf_state" until the end of this function to 
>> set the new read_ptr
>> and flush flag. We ought to use xe_map_wr below?
> Yes, need xe_map_xxx helper, as we are doing read, so should be xe_map_rd
Oops, here is to get the pointer, but the code at function bottom:
	/* Update the state of log buffer err-cap state */
	log_buf_state->read_ptr = write_offset;
	log_buf_state->flush_to_file = 0;
Need to be replaced by xe_map_wr

>>> +
>>> +       log_buf_state_offset = sizeof(struct guc_log_buffer_state) * 
>>> GUC_CAPTURE_LOG_BUFFER;
>>> +       src_data_offset = xe_guc_get_log_buffer_offset(&guc->log, 
>>> GUC_CAPTURE_LOG_BUFFER);
>>> +
>>> +       /*
>>> +        * Make a copy of the state structure, inside GuC log buffer
>>> +        * (which is uncached mapped), on the stack to avoid reading
>>> +        * from it multiple times.
>>> +        */
>>> +       xe_map_memcpy_from(guc_to_xe(guc), &log_buf_state_local, 
>>> &guc->log.bo->vmap,
>>> +                          log_buf_state_offset, sizeof(struct 
>>> guc_log_buffer_state));
>> alan:snip
>>

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

end of thread, other threads:[~2024-05-15 21:55 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-07  1:47 [PATCH v8 0/6] drm/xe/guc: Add GuC based register capture for error capture Zhanjun Dong
2024-05-07  1:47 ` [PATCH v8 1/6] drm/xe/guc: Prepare GuC register list and update ADS size " Zhanjun Dong
2024-05-10 18:43   ` Teres Alexis, Alan Previn
2024-05-14 22:44     ` Dong, Zhanjun
2024-05-10 18:58   ` Teres Alexis, Alan Previn
2024-05-07  1:47 ` [PATCH v8 2/6] drm/xe/guc: Add XE_LP steered register lists Zhanjun Dong
2024-05-11  0:17   ` Teres Alexis, Alan Previn
2024-05-14 23:00     ` Dong, Zhanjun
2024-05-07  1:47 ` [PATCH v8 3/6] drm/xe/guc: Add capture size check in GuC log buffer Zhanjun Dong
2024-05-08 22:57   ` Teres Alexis, Alan Previn
2024-05-15 21:39     ` Dong, Zhanjun
2024-05-07  1:47 ` [PATCH v8 4/6] drm/xe/guc: Extract GuC error capture lists Zhanjun Dong
2024-05-11  1:43   ` Teres Alexis, Alan Previn
2024-05-15 21:45     ` Dong, Zhanjun
2024-05-15 21:55       ` Dong, Zhanjun
2024-05-07  1:47 ` [PATCH v8 5/6] drm/xe/guc: Pre-allocate output nodes for extraction Zhanjun Dong
2024-05-11 18:07   ` Teres Alexis, Alan Previn
2024-05-07  1:47 ` [PATCH v8 6/6] drm/xe/guc: Plumb GuC-capture into dev coredump Zhanjun Dong
2024-05-11 20:25   ` Teres Alexis, Alan Previn
2024-05-07  4:17 ` ✓ CI.Patch_applied: success for drm/xe/guc: Add GuC based register capture for error capture (rev8) Patchwork
2024-05-07  4:18 ` ✗ CI.checkpatch: warning " Patchwork
2024-05-07  4:19 ` ✓ CI.KUnit: success " Patchwork
2024-05-07  4:31 ` ✓ CI.Build: " Patchwork
2024-05-07  4:41 ` ✗ CI.Hooks: failure " Patchwork
2024-05-07  4:49 ` ✓ CI.checksparse: success " Patchwork
2024-05-07  5:24 ` ✗ CI.BAT: failure " Patchwork
2024-05-07  9:35 ` ✗ CI.FULL: " 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.