Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/13] Add PXP HWDRM support
@ 2025-01-06 21:11 Daniele Ceraolo Spurio
  2025-01-06 21:11 ` [PATCH v4 01/13] drm/xe/pxp: Initialize PXP structure and KCR reg Daniele Ceraolo Spurio
                   ` (20 more replies)
  0 siblings, 21 replies; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:11 UTC (permalink / raw)
  To: intel-xe
  Cc: Daniele Ceraolo Spurio, José Roberto de Souza, Alan Previn,
	Matthew Brost, Thomas Hellström, John Harrison

PXP (Protected Xe Path) allows execution and flip to display of protected
(i.e. encrypted) objects. The HW supports multiple types of PXP, but
this series only introduces support for PXP HWDRM, which is mainly
targeted at encrypting data that is going to be displayed.

Even though we only plan to support 1 type of PXP for now, the interface
has been designed to allow support for other PXP types to be added at a
later point in time.

A user is expected to mark both BO and exec_queues as using PXP and the
driver will make sure that PXP is running, that the encryption is
valid and that no execution happens with an outdated encryption.

The mesa implementation of the new interfaces is in review here:
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30723

The IGT tests for PXP are in review here:
https://patchwork.freedesktop.org/series/142450/

v2: code cleaned up and fixed while coming out of RFC, addressed review
feedback in regards to the interface.

v3: code and documentation improvements following review feedback

v4: Major rework of the internal status tracking to avoid doing
submissions under lock. Split the exec queue patch into 2 for ease of
review.

Cc: José Roberto de Souza <jose.souza@intel.com>
Cc: Alan Previn <alan.previn.teres.alexis@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>


Daniele Ceraolo Spurio (13):
  drm/xe/pxp: Initialize PXP structure and KCR reg
  drm/xe/pxp: Allocate PXP execution resources
  drm/xe/pxp: Add VCS inline termination support
  drm/xe/pxp: Add GSC session invalidation support
  drm/xe/pxp: Handle the PXP termination interrupt
  drm/xe/pxp: Add GSC session initialization support
  drm/xe/pxp: Add PXP queue tracking and session start
  drm/xe/pxp: Add userspace and LRC support for PXP-using queues
  drm/xe/pxp: Add a query for PXP status
  drm/xe/pxp: Add API to mark a BO as using PXP
  drm/xe/pxp: add PXP PM support
  drm/xe/pxp: Add PXP debugfs support
  drm/xe/pxp: Enable PXP for MTL and LNL

 drivers/gpu/drm/xe/Makefile                   |   3 +
 drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h |  41 +
 .../xe/compat-i915-headers/pxp/intel_pxp.h    |  16 +-
 drivers/gpu/drm/xe/display/intel_bo.c         |   2 +-
 .../gpu/drm/xe/instructions/xe_instr_defs.h   |   1 +
 .../gpu/drm/xe/instructions/xe_mfx_commands.h |  28 +
 .../gpu/drm/xe/instructions/xe_mi_commands.h  |   5 +
 drivers/gpu/drm/xe/regs/xe_engine_regs.h      |   1 +
 drivers/gpu/drm/xe/regs/xe_irq_regs.h         |   8 +
 drivers/gpu/drm/xe/regs/xe_pxp_regs.h         |  23 +
 drivers/gpu/drm/xe/xe_bo.c                    |  98 +-
 drivers/gpu/drm/xe/xe_bo.h                    |   5 +
 drivers/gpu/drm/xe/xe_bo_types.h              |   3 +
 drivers/gpu/drm/xe/xe_debugfs.c               |   3 +
 drivers/gpu/drm/xe/xe_device.c                |   6 +
 drivers/gpu/drm/xe/xe_device_types.h          |   8 +-
 drivers/gpu/drm/xe/xe_exec.c                  |   6 +
 drivers/gpu/drm/xe/xe_exec_queue.c            |  60 +-
 drivers/gpu/drm/xe/xe_exec_queue.h            |   5 +
 drivers/gpu/drm/xe/xe_exec_queue_types.h      |   8 +
 drivers/gpu/drm/xe/xe_execlist.c              |   2 +-
 drivers/gpu/drm/xe/xe_irq.c                   |  20 +-
 drivers/gpu/drm/xe/xe_lrc.c                   |  18 +-
 drivers/gpu/drm/xe/xe_lrc.h                   |   7 +-
 drivers/gpu/drm/xe/xe_pci.c                   |   4 +
 drivers/gpu/drm/xe/xe_pm.c                    |  39 +-
 drivers/gpu/drm/xe/xe_pxp.c                   | 901 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_pxp.h                   |  35 +
 drivers/gpu/drm/xe/xe_pxp_debugfs.c           | 120 +++
 drivers/gpu/drm/xe/xe_pxp_debugfs.h           |  13 +
 drivers/gpu/drm/xe/xe_pxp_submit.c            | 588 ++++++++++++
 drivers/gpu/drm/xe/xe_pxp_submit.h            |  22 +
 drivers/gpu/drm/xe/xe_pxp_types.h             | 135 +++
 drivers/gpu/drm/xe/xe_query.c                 |  29 +
 drivers/gpu/drm/xe/xe_ring_ops.c              |   4 +-
 drivers/gpu/drm/xe/xe_vm.c                    | 165 +++-
 drivers/gpu/drm/xe/xe_vm.h                    |   8 +
 drivers/gpu/drm/xe/xe_vm_types.h              |   1 +
 include/uapi/drm/xe_drm.h                     |  94 +-
 39 files changed, 2493 insertions(+), 42 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/instructions/xe_mfx_commands.h
 create mode 100644 drivers/gpu/drm/xe/regs/xe_pxp_regs.h
 create mode 100644 drivers/gpu/drm/xe/xe_pxp.c
 create mode 100644 drivers/gpu/drm/xe/xe_pxp.h
 create mode 100644 drivers/gpu/drm/xe/xe_pxp_debugfs.c
 create mode 100644 drivers/gpu/drm/xe/xe_pxp_debugfs.h
 create mode 100644 drivers/gpu/drm/xe/xe_pxp_submit.c
 create mode 100644 drivers/gpu/drm/xe/xe_pxp_submit.h
 create mode 100644 drivers/gpu/drm/xe/xe_pxp_types.h

-- 
2.43.0


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

* [PATCH v4 01/13] drm/xe/pxp: Initialize PXP structure and KCR reg
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
@ 2025-01-06 21:11 ` Daniele Ceraolo Spurio
  2025-01-06 21:11 ` [PATCH v4 02/13] drm/xe/pxp: Allocate PXP execution resources Daniele Ceraolo Spurio
                   ` (19 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:11 UTC (permalink / raw)
  To: intel-xe; +Cc: Daniele Ceraolo Spurio, John Harrison

As the first step towards adding PXP support, hook in the PXP init
function, allocate the PXP structure and initialize the KCR register to
allow PXP HWDRM sessions.

v2: remove unneeded includes, free PXP memory on error (John)

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/xe/Makefile                   |   1 +
 .../xe/compat-i915-headers/pxp/intel_pxp.h    |   4 +-
 drivers/gpu/drm/xe/regs/xe_pxp_regs.h         |  17 +++
 drivers/gpu/drm/xe/xe_device.c                |   6 +
 drivers/gpu/drm/xe/xe_device_types.h          |   8 +-
 drivers/gpu/drm/xe/xe_pci.c                   |   2 +
 drivers/gpu/drm/xe/xe_pxp.c                   | 107 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_pxp.h                   |  13 +++
 drivers/gpu/drm/xe/xe_pxp_types.h             |  26 +++++
 9 files changed, 180 insertions(+), 4 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/regs/xe_pxp_regs.h
 create mode 100644 drivers/gpu/drm/xe/xe_pxp.c
 create mode 100644 drivers/gpu/drm/xe/xe_pxp.h
 create mode 100644 drivers/gpu/drm/xe/xe_pxp_types.h

diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 5c97ad6ed738..a55705854d22 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -86,6 +86,7 @@ xe-y += xe_bb.o \
 	xe_preempt_fence.o \
 	xe_pt.o \
 	xe_pt_walk.o \
+	xe_pxp.o \
 	xe_query.o \
 	xe_range_fence.o \
 	xe_reg_sr.o \
diff --git a/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h b/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h
index 5dfc587c8237..419e8e926f00 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h
@@ -10,9 +10,9 @@
 #include <linux/types.h>
 
 struct drm_gem_object;
-struct intel_pxp;
+struct xe_pxp;
 
-static inline int intel_pxp_key_check(struct intel_pxp *pxp,
+static inline int intel_pxp_key_check(struct xe_pxp *pxp,
 				      struct drm_gem_object *obj,
 				      bool assign)
 {
diff --git a/drivers/gpu/drm/xe/regs/xe_pxp_regs.h b/drivers/gpu/drm/xe/regs/xe_pxp_regs.h
new file mode 100644
index 000000000000..d67cf210d23d
--- /dev/null
+++ b/drivers/gpu/drm/xe/regs/xe_pxp_regs.h
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright(c) 2024, Intel Corporation. All rights reserved.
+ */
+
+#ifndef __XE_PXP_REGS_H__
+#define __XE_PXP_REGS_H__
+
+#include "regs/xe_regs.h"
+
+/* The following registers are only valid on platforms with a media GT */
+
+/* KCR enable/disable control */
+#define KCR_INIT				XE_REG(0x3860f0)
+#define   KCR_INIT_ALLOW_DISPLAY_ME_WRITES	REG_BIT(14)
+
+#endif /* __XE_PXP_REGS_H__ */
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index bf36e4fb4679..da118115daad 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -49,6 +49,7 @@
 #include "xe_pat.h"
 #include "xe_pcode.h"
 #include "xe_pm.h"
+#include "xe_pxp.h"
 #include "xe_query.h"
 #include "xe_sriov.h"
 #include "xe_tile.h"
@@ -752,6 +753,11 @@ int xe_device_probe(struct xe_device *xe)
 	if (err)
 		goto err_fini_oa;
 
+	/* A PXP init failure is not fatal */
+	err = xe_pxp_init(xe);
+	if (err && err != -EOPNOTSUPP)
+		drm_err(&xe->drm, "PXP initialization failed: %pe\n", ERR_PTR(err));
+
 	err = drm_dev_register(&xe->drm, 0);
 	if (err)
 		goto err_fini_display;
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 8a7b15972413..2d9d0ea5dbba 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -34,6 +34,7 @@
 
 struct xe_ggtt;
 struct xe_pat_ops;
+struct xe_pxp;
 
 #define XE_BO_INVALID_OFFSET	LONG_MAX
 
@@ -316,6 +317,8 @@ struct xe_device {
 		u8 has_llc:1;
 		/** @info.has_mmio_ext: Device has extra MMIO address range */
 		u8 has_mmio_ext:1;
+		/** @info.has_pxp: Device has PXP support */
+		u8 has_pxp:1;
 		/** @info.has_range_tlb_invalidation: Has range based TLB invalidations */
 		u8 has_range_tlb_invalidation:1;
 		/** @info.has_sriov: Supports SR-IOV */
@@ -514,6 +517,9 @@ struct xe_device {
 	/** @oa: oa observation subsystem */
 	struct xe_oa oa;
 
+	/** @pxp: Encapsulate Protected Xe Path support */
+	struct xe_pxp *pxp;
+
 	/** @needs_flr_on_fini: requests function-reset on fini */
 	bool needs_flr_on_fini;
 
@@ -586,8 +592,6 @@ struct xe_device {
 		unsigned int czclk_freq;
 		unsigned int fsb_freq, mem_freq, is_ddr3;
 	};
-
-	void *pxp;
 #endif
 };
 
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 7d146e3e8e21..9c95ecc81b81 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -62,6 +62,7 @@ struct xe_device_desc {
 	u8 has_heci_cscfi:1;
 	u8 has_llc:1;
 	u8 has_mmio_ext:1;
+	u8 has_pxp:1;
 	u8 has_sriov:1;
 	u8 skip_guc_pc:1;
 	u8 skip_mtcfg:1;
@@ -623,6 +624,7 @@ static int xe_info_init_early(struct xe_device *xe,
 	xe->info.has_heci_cscfi = desc->has_heci_cscfi;
 	xe->info.has_llc = desc->has_llc;
 	xe->info.has_mmio_ext = desc->has_mmio_ext;
+	xe->info.has_pxp = desc->has_pxp;
 	xe->info.has_sriov = desc->has_sriov;
 	xe->info.skip_guc_pc = desc->skip_guc_pc;
 	xe->info.skip_mtcfg = desc->skip_mtcfg;
diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
new file mode 100644
index 000000000000..1a4d12d37d96
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_pxp.c
@@ -0,0 +1,107 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright(c) 2024 Intel Corporation.
+ */
+
+#include "xe_pxp.h"
+
+#include <drm/drm_managed.h>
+
+#include "xe_device_types.h"
+#include "xe_force_wake.h"
+#include "xe_gt.h"
+#include "xe_gt_types.h"
+#include "xe_mmio.h"
+#include "xe_pxp_types.h"
+#include "xe_uc_fw.h"
+#include "regs/xe_pxp_regs.h"
+
+/**
+ * DOC: PXP
+ *
+ * PXP (Protected Xe Path) allows execution and flip to display of protected
+ * (i.e. encrypted) objects. This feature is currently only supported in
+ * integrated parts.
+ */
+
+static bool pxp_is_supported(const struct xe_device *xe)
+{
+	return xe->info.has_pxp && IS_ENABLED(CONFIG_INTEL_MEI_GSC_PROXY);
+}
+
+static int kcr_pxp_set_status(const struct xe_pxp *pxp, bool enable)
+{
+	u32 val = enable ? _MASKED_BIT_ENABLE(KCR_INIT_ALLOW_DISPLAY_ME_WRITES) :
+		  _MASKED_BIT_DISABLE(KCR_INIT_ALLOW_DISPLAY_ME_WRITES);
+	unsigned int fw_ref;
+
+	fw_ref = xe_force_wake_get(gt_to_fw(pxp->gt), XE_FW_GT);
+	if (!xe_force_wake_ref_has_domain(fw_ref, XE_FW_GT))
+		return -EIO;
+
+	xe_mmio_write32(&pxp->gt->mmio, KCR_INIT, val);
+	xe_force_wake_put(gt_to_fw(pxp->gt), fw_ref);
+
+	return 0;
+}
+
+static int kcr_pxp_enable(const struct xe_pxp *pxp)
+{
+	return kcr_pxp_set_status(pxp, true);
+}
+
+/**
+ * xe_pxp_init - initialize PXP support
+ * @xe: the xe_device structure
+ *
+ * Initialize the HW state and allocate the objects required for PXP support.
+ * Note that some of the requirement for PXP support (GSC proxy init, HuC auth)
+ * are performed asynchronously as part of the GSC init. PXP can only be used
+ * after both this function and the async worker have completed.
+ *
+ * Returns -EOPNOTSUPP if PXP is not supported, 0 if PXP initialization is
+ * successful, other errno value if there is an error during the init.
+ */
+int xe_pxp_init(struct xe_device *xe)
+{
+	struct xe_gt *gt = xe->tiles[0].media_gt;
+	struct xe_pxp *pxp;
+	int err;
+
+	if (!pxp_is_supported(xe))
+		return -EOPNOTSUPP;
+
+	/* we only support PXP on single tile devices with a media GT */
+	if (xe->info.tile_count > 1 || !gt)
+		return -EOPNOTSUPP;
+
+	/* The GSCCS is required for submissions to the GSC FW */
+	if (!(gt->info.engine_mask & BIT(XE_HW_ENGINE_GSCCS0)))
+		return -EOPNOTSUPP;
+
+	/* PXP requires both GSC and HuC firmwares to be available */
+	if (!xe_uc_fw_is_loadable(&gt->uc.gsc.fw) ||
+	    !xe_uc_fw_is_loadable(&gt->uc.huc.fw)) {
+		drm_info(&xe->drm, "skipping PXP init due to missing FW dependencies");
+		return -EOPNOTSUPP;
+	}
+
+	pxp = drmm_kzalloc(&xe->drm, sizeof(struct xe_pxp), GFP_KERNEL);
+	if (!pxp)
+		return -ENOMEM;
+
+	pxp->xe = xe;
+	pxp->gt = gt;
+
+	err = kcr_pxp_enable(pxp);
+	if (err)
+		goto out_free;
+
+	xe->pxp = pxp;
+
+	return 0;
+
+out_free:
+	drmm_kfree(&xe->drm, pxp);
+	return err;
+}
diff --git a/drivers/gpu/drm/xe/xe_pxp.h b/drivers/gpu/drm/xe/xe_pxp.h
new file mode 100644
index 000000000000..00f5e688c0d9
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_pxp.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright(c) 2024, Intel Corporation. All rights reserved.
+ */
+
+#ifndef __XE_PXP_H__
+#define __XE_PXP_H__
+
+struct xe_device;
+
+int xe_pxp_init(struct xe_device *xe);
+
+#endif /* __XE_PXP_H__ */
diff --git a/drivers/gpu/drm/xe/xe_pxp_types.h b/drivers/gpu/drm/xe/xe_pxp_types.h
new file mode 100644
index 000000000000..4639cf49d267
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_pxp_types.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright(c) 2024, Intel Corporation. All rights reserved.
+ */
+
+#ifndef __XE_PXP_TYPES_H__
+#define __XE_PXP_TYPES_H__
+
+struct xe_device;
+struct xe_gt;
+
+/**
+ * struct xe_pxp - pxp state
+ */
+struct xe_pxp {
+	/** @xe: Backpoiner to the xe_device struct */
+	struct xe_device *xe;
+
+	/**
+	 * @gt: pointer to the gt that owns the submission-side of PXP
+	 * (VDBOX, KCR and GSC)
+	 */
+	struct xe_gt *gt;
+};
+
+#endif /* __XE_PXP_TYPES_H__ */
-- 
2.43.0


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

* [PATCH v4 02/13] drm/xe/pxp: Allocate PXP execution resources
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
  2025-01-06 21:11 ` [PATCH v4 01/13] drm/xe/pxp: Initialize PXP structure and KCR reg Daniele Ceraolo Spurio
@ 2025-01-06 21:11 ` Daniele Ceraolo Spurio
  2025-01-06 21:12 ` [PATCH v4 03/13] drm/xe/pxp: Add VCS inline termination support Daniele Ceraolo Spurio
                   ` (18 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:11 UTC (permalink / raw)
  To: intel-xe
  Cc: Daniele Ceraolo Spurio, Matthew Brost, Thomas Hellström,
	John Harrison

PXP requires submissions to the HW for the following operations

1) Key invalidation, done via the VCS engine
2) Communication with the GSC FW for session management, done via the
   GSCCS.

Key invalidation submissions are serialized (only 1 termination can be
serviced at a given time) and done via GGTT, so we can allocate a simple
BO and a kernel queue for it.

Submissions for session management are tied to a PXP client (identified
by a unique host_session_id); from the GSC POV this is a user-accessible
construct, so all related submission must be done via PPGTT. The driver
does not currently support PPGTT submission from within the kernel, so
to add this support, the following changes have been included:

- a new type of kernel-owned VM (marked as GSC), required to ensure we
  don't use fault mode on the engine and to mark the different lock
  usage with lockdep.
- a new function to map a BO into a VM from within the kernel.

v2: improve comments and function name, remove unneeded include (John)
v3: fix variable/function names in documentation

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/xe/Makefile                   |   1 +
 drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h |   7 +
 drivers/gpu/drm/xe/xe_exec_queue.c            |   3 +
 drivers/gpu/drm/xe/xe_pxp.c                   |  23 +-
 drivers/gpu/drm/xe/xe_pxp_submit.c            | 199 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_pxp_submit.h            |  14 ++
 drivers/gpu/drm/xe/xe_pxp_types.h             |  48 +++++
 drivers/gpu/drm/xe/xe_vm.c                    | 119 ++++++++++-
 drivers/gpu/drm/xe/xe_vm.h                    |   6 +
 drivers/gpu/drm/xe/xe_vm_types.h              |   1 +
 10 files changed, 410 insertions(+), 11 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/xe_pxp_submit.c
 create mode 100644 drivers/gpu/drm/xe/xe_pxp_submit.h

diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index a55705854d22..970ff5d49ded 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -87,6 +87,7 @@ xe-y += xe_bb.o \
 	xe_pt.o \
 	xe_pt_walk.o \
 	xe_pxp.o \
+	xe_pxp_submit.o \
 	xe_query.o \
 	xe_range_fence.o \
 	xe_reg_sr.o \
diff --git a/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h b/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h
index 57520809e48d..f3c4cf10ba20 100644
--- a/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h
+++ b/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h
@@ -6,6 +6,7 @@
 #ifndef _ABI_GSC_PXP_COMMANDS_ABI_H
 #define _ABI_GSC_PXP_COMMANDS_ABI_H
 
+#include <linux/sizes.h>
 #include <linux/types.h>
 
 /* Heci client ID for PXP commands */
@@ -13,6 +14,12 @@
 
 #define PXP_APIVER(x, y) (((x) & 0xFFFF) << 16 | ((y) & 0xFFFF))
 
+/*
+ * A PXP sub-section in an HECI packet can be up to 64K big in each direction.
+ * This does not include the top-level GSC header.
+ */
+#define PXP_MAX_PACKET_SIZE SZ_64K
+
 /*
  * there are a lot of status codes for PXP, but we only define the cross-API
  * common ones that we actually can handle in the kernel driver. Other failure
diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
index 7e1abbbfba12..252bfa11cae9 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue.c
+++ b/drivers/gpu/drm/xe/xe_exec_queue.c
@@ -153,6 +153,9 @@ struct xe_exec_queue *xe_exec_queue_create(struct xe_device *xe, struct xe_vm *v
 	struct xe_exec_queue *q;
 	int err;
 
+	/* VMs for GSCCS queues (and only those) must have the XE_VM_FLAG_GSC flag */
+	xe_assert(xe, !vm || (!!(vm->flags & XE_VM_FLAG_GSC) == !!(hwe->engine_id == XE_HW_ENGINE_GSCCS0)));
+
 	q = __xe_exec_queue_alloc(xe, vm, logical_mask, width, hwe, flags,
 				  extensions);
 	if (IS_ERR(q))
diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
index 1a4d12d37d96..89d71a69cdff 100644
--- a/drivers/gpu/drm/xe/xe_pxp.c
+++ b/drivers/gpu/drm/xe/xe_pxp.c
@@ -12,6 +12,7 @@
 #include "xe_gt.h"
 #include "xe_gt_types.h"
 #include "xe_mmio.h"
+#include "xe_pxp_submit.h"
 #include "xe_pxp_types.h"
 #include "xe_uc_fw.h"
 #include "regs/xe_pxp_regs.h"
@@ -50,6 +51,20 @@ static int kcr_pxp_enable(const struct xe_pxp *pxp)
 	return kcr_pxp_set_status(pxp, true);
 }
 
+static int kcr_pxp_disable(const struct xe_pxp *pxp)
+{
+	return kcr_pxp_set_status(pxp, false);
+}
+
+static void pxp_fini(void *arg)
+{
+	struct xe_pxp *pxp = arg;
+
+	xe_pxp_destroy_execution_resources(pxp);
+
+	/* no need to explicitly disable KCR since we're going to do an FLR */
+}
+
 /**
  * xe_pxp_init - initialize PXP support
  * @xe: the xe_device structure
@@ -97,10 +112,16 @@ int xe_pxp_init(struct xe_device *xe)
 	if (err)
 		goto out_free;
 
+	err = xe_pxp_allocate_execution_resources(pxp);
+	if (err)
+		goto out_kcr_disable;
+
 	xe->pxp = pxp;
 
-	return 0;
+	return devm_add_action_or_reset(xe->drm.dev, pxp_fini, pxp);
 
+out_kcr_disable:
+	kcr_pxp_disable(pxp);
 out_free:
 	drmm_kfree(&xe->drm, pxp);
 	return err;
diff --git a/drivers/gpu/drm/xe/xe_pxp_submit.c b/drivers/gpu/drm/xe/xe_pxp_submit.c
new file mode 100644
index 000000000000..52a6143b5ebe
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_pxp_submit.c
@@ -0,0 +1,199 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright(c) 2024 Intel Corporation.
+ */
+
+#include "xe_pxp_submit.h"
+
+#include <uapi/drm/xe_drm.h>
+
+#include "xe_device_types.h"
+#include "xe_bo.h"
+#include "xe_exec_queue.h"
+#include "xe_gsc_submit.h"
+#include "xe_gt.h"
+#include "xe_pxp_types.h"
+#include "xe_vm.h"
+
+/*
+ * The VCS is used for kernel-owned GGTT submissions to issue key termination.
+ * Terminations are serialized, so we only need a single queue and a single
+ * batch.
+ */
+static int allocate_vcs_execution_resources(struct xe_pxp *pxp)
+{
+	struct xe_gt *gt = pxp->gt;
+	struct xe_device *xe = pxp->xe;
+	struct xe_tile *tile = gt_to_tile(gt);
+	struct xe_hw_engine *hwe;
+	struct xe_exec_queue *q;
+	struct xe_bo *bo;
+	int err;
+
+	hwe = xe_gt_hw_engine(gt, XE_ENGINE_CLASS_VIDEO_DECODE, 0, true);
+	if (!hwe)
+		return -ENODEV;
+
+	q = xe_exec_queue_create(xe, NULL, BIT(hwe->logical_instance), 1, hwe,
+				 EXEC_QUEUE_FLAG_KERNEL | EXEC_QUEUE_FLAG_PERMANENT, 0);
+	if (IS_ERR(q))
+		return PTR_ERR(q);
+
+	/*
+	 * Each termination is 16 DWORDS, so 4K is enough to contain a
+	 * termination for each sessions.
+	 */
+	bo = xe_bo_create_pin_map(xe, tile, 0, SZ_4K, ttm_bo_type_kernel,
+				  XE_BO_FLAG_SYSTEM | XE_BO_FLAG_PINNED | XE_BO_FLAG_GGTT);
+	if (IS_ERR(bo)) {
+		err = PTR_ERR(bo);
+		goto out_queue;
+	}
+
+	pxp->vcs_exec.q = q;
+	pxp->vcs_exec.bo = bo;
+
+	return 0;
+
+out_queue:
+	xe_exec_queue_put(q);
+	return err;
+}
+
+static void destroy_vcs_execution_resources(struct xe_pxp *pxp)
+{
+	if (pxp->vcs_exec.bo)
+		xe_bo_unpin_map_no_vm(pxp->vcs_exec.bo);
+
+	if (pxp->vcs_exec.q)
+		xe_exec_queue_put(pxp->vcs_exec.q);
+}
+
+#define PXP_BB_SIZE		XE_PAGE_SIZE
+static int allocate_gsc_client_resources(struct xe_gt *gt,
+					 struct xe_pxp_gsc_client_resources *gsc_res,
+					 size_t inout_size)
+{
+	struct xe_tile *tile = gt_to_tile(gt);
+	struct xe_device *xe = tile_to_xe(tile);
+	struct xe_hw_engine *hwe;
+	struct xe_vm *vm;
+	struct xe_bo *bo;
+	struct xe_exec_queue *q;
+	struct dma_fence *fence;
+	long timeout;
+	int err = 0;
+
+	hwe = xe_gt_hw_engine(gt, XE_ENGINE_CLASS_OTHER, 0, true);
+
+	/* we shouldn't reach here if the GSC engine is not available */
+	xe_assert(xe, hwe);
+
+	/* PXP instructions must be issued from PPGTT */
+	vm = xe_vm_create(xe, XE_VM_FLAG_GSC);
+	if (IS_ERR(vm))
+		return PTR_ERR(vm);
+
+	/* We allocate a single object for the batch and the in/out memory */
+	xe_vm_lock(vm, false);
+	bo = xe_bo_create_pin_map(xe, tile, vm, PXP_BB_SIZE + inout_size * 2,
+				  ttm_bo_type_kernel,
+				  XE_BO_FLAG_SYSTEM | XE_BO_FLAG_PINNED | XE_BO_FLAG_NEEDS_UC);
+	xe_vm_unlock(vm);
+	if (IS_ERR(bo)) {
+		err = PTR_ERR(bo);
+		goto vm_out;
+	}
+
+	fence = xe_vm_bind_kernel_bo(vm, bo, NULL, 0, XE_CACHE_WB);
+	if (IS_ERR(fence)) {
+		err = PTR_ERR(fence);
+		goto bo_out;
+	}
+
+	timeout = dma_fence_wait_timeout(fence, false, HZ);
+	dma_fence_put(fence);
+	if (timeout <= 0) {
+		err = timeout ?: -ETIME;
+		goto bo_out;
+	}
+
+	q = xe_exec_queue_create(xe, vm, BIT(hwe->logical_instance), 1, hwe,
+				 EXEC_QUEUE_FLAG_KERNEL |
+				 EXEC_QUEUE_FLAG_PERMANENT, 0);
+	if (IS_ERR(q)) {
+		err = PTR_ERR(q);
+		goto bo_out;
+	}
+
+	gsc_res->vm = vm;
+	gsc_res->bo = bo;
+	gsc_res->inout_size = inout_size;
+	gsc_res->batch = IOSYS_MAP_INIT_OFFSET(&bo->vmap, 0);
+	gsc_res->msg_in = IOSYS_MAP_INIT_OFFSET(&bo->vmap, PXP_BB_SIZE);
+	gsc_res->msg_out = IOSYS_MAP_INIT_OFFSET(&bo->vmap, PXP_BB_SIZE + inout_size);
+	gsc_res->q = q;
+
+	/* initialize host-session-handle (for all Xe-to-gsc-firmware PXP cmds) */
+	gsc_res->host_session_handle = xe_gsc_create_host_session_id();
+
+	return 0;
+
+bo_out:
+	xe_bo_unpin_map_no_vm(bo);
+vm_out:
+	xe_vm_close_and_put(vm);
+
+	return err;
+}
+
+static void destroy_gsc_client_resources(struct xe_pxp_gsc_client_resources *gsc_res)
+{
+	if (!gsc_res->q)
+		return;
+
+	xe_exec_queue_put(gsc_res->q);
+	xe_bo_unpin_map_no_vm(gsc_res->bo);
+	xe_vm_close_and_put(gsc_res->vm);
+}
+
+/**
+ * xe_pxp_allocate_execution_resources - Allocate PXP submission objects
+ * @pxp: the xe_pxp structure
+ *
+ * Allocates exec_queues objects for VCS and GSCCS submission. The GSCCS
+ * submissions are done via PPGTT, so this function allocates a VM for it and
+ * maps the object into it.
+ *
+ * Returns 0 if the allocation and mapping is successful, an errno value
+ * otherwise.
+ */
+int xe_pxp_allocate_execution_resources(struct xe_pxp *pxp)
+{
+	int err;
+
+	err = allocate_vcs_execution_resources(pxp);
+	if (err)
+		return err;
+
+	/*
+	 * PXP commands can require a lot of BO space (see PXP_MAX_PACKET_SIZE),
+	 * but we currently only support a subset of commands that are small
+	 * (< 20 dwords), so a single page is enough for now.
+	 */
+	err = allocate_gsc_client_resources(pxp->gt, &pxp->gsc_res, XE_PAGE_SIZE);
+	if (err)
+		goto destroy_vcs_context;
+
+	return 0;
+
+destroy_vcs_context:
+	destroy_vcs_execution_resources(pxp);
+	return err;
+}
+
+void xe_pxp_destroy_execution_resources(struct xe_pxp *pxp)
+{
+	destroy_gsc_client_resources(&pxp->gsc_res);
+	destroy_vcs_execution_resources(pxp);
+}
diff --git a/drivers/gpu/drm/xe/xe_pxp_submit.h b/drivers/gpu/drm/xe/xe_pxp_submit.h
new file mode 100644
index 000000000000..fd21ac935be1
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_pxp_submit.h
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright(c) 2024, Intel Corporation. All rights reserved.
+ */
+
+#ifndef __XE_PXP_SUBMIT_H__
+#define __XE_PXP_SUBMIT_H__
+
+struct xe_pxp;
+
+int xe_pxp_allocate_execution_resources(struct xe_pxp *pxp);
+void xe_pxp_destroy_execution_resources(struct xe_pxp *pxp);
+
+#endif /* __XE_PXP_SUBMIT_H__ */
diff --git a/drivers/gpu/drm/xe/xe_pxp_types.h b/drivers/gpu/drm/xe/xe_pxp_types.h
index 4639cf49d267..0f86b50756cc 100644
--- a/drivers/gpu/drm/xe/xe_pxp_types.h
+++ b/drivers/gpu/drm/xe/xe_pxp_types.h
@@ -6,8 +6,45 @@
 #ifndef __XE_PXP_TYPES_H__
 #define __XE_PXP_TYPES_H__
 
+#include <linux/iosys-map.h>
+#include <linux/types.h>
+
+struct xe_bo;
+struct xe_exec_queue;
 struct xe_device;
 struct xe_gt;
+struct xe_vm;
+
+/**
+ * struct xe_pxp_gsc_client_resources - resources for GSC submission by a PXP
+ * client. The GSC FW supports multiple GSC client active at the same time.
+ */
+struct xe_pxp_gsc_client_resources {
+	/**
+	 * @host_session_handle: handle used to identify the client in messages
+	 * sent to the GSC firmware.
+	 */
+	u64 host_session_handle;
+	/** @vm: VM used for PXP submissions to the GSCCS */
+	struct xe_vm *vm;
+	/** @q: GSCCS exec queue for PXP submissions */
+	struct xe_exec_queue *q;
+
+	/**
+	 * @bo: BO used for submissions to the GSCCS and GSC FW. It includes
+	 * space for the GSCCS batch and the input/output buffers read/written
+	 * by the FW
+	 */
+	struct xe_bo *bo;
+	/** @inout_size: size of each of the msg_in/out sections individually */
+	u32 inout_size;
+	/** @batch: iosys_map to the batch memory within the BO */
+	struct iosys_map batch;
+	/** @msg_in: iosys_map to the input memory within the BO */
+	struct iosys_map msg_in;
+	/** @msg_out: iosys_map to the output memory within the BO */
+	struct iosys_map msg_out;
+};
 
 /**
  * struct xe_pxp - pxp state
@@ -21,6 +58,17 @@ struct xe_pxp {
 	 * (VDBOX, KCR and GSC)
 	 */
 	struct xe_gt *gt;
+
+	/** @vcs_exec: kernel-owned objects for PXP submissions to the VCS */
+	struct {
+		/** @vcs_exec.q: kernel-owned VCS exec queue used for PXP terminations */
+		struct xe_exec_queue *q;
+		/** @vcs_exec.bo: BO used for submissions to the VCS */
+		struct xe_bo *bo;
+	} vcs_exec;
+
+	/** @gsc_res: kernel-owned objects for PXP submissions to the GSCCS */
+	struct xe_pxp_gsc_client_resources gsc_res;
 };
 
 #endif /* __XE_PXP_TYPES_H__ */
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index b4a44e1ea167..62b1b6ce255b 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1382,6 +1382,12 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 	struct xe_tile *tile;
 	u8 id;
 
+	/*
+	 * Since the GSCCS is not user-accessible, we don't expect a GSC VM to
+	 * ever be in faulting mode.
+	 */
+	xe_assert(xe, !((flags & XE_VM_FLAG_GSC) && (flags & XE_VM_FLAG_FAULT_MODE)));
+
 	vm = kzalloc(sizeof(*vm), GFP_KERNEL);
 	if (!vm)
 		return ERR_PTR(-ENOMEM);
@@ -1392,7 +1398,21 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 
 	vm->flags = flags;
 
-	init_rwsem(&vm->lock);
+	/**
+	 * GSC VMs are kernel-owned, only used for PXP ops and can sometimes be
+	 * manipulated under the PXP mutex. However, the PXP mutex can be taken
+	 * under a user-VM lock when the PXP session is started at exec_queue
+	 * creation time. Those are different VMs and therefore there is no risk
+	 * of deadlock, but we need to tell lockdep that this is the case or it
+	 * will print a warning.
+	 */
+	if (flags & XE_VM_FLAG_GSC) {
+		static struct lock_class_key gsc_vm_key;
+
+		__init_rwsem(&vm->lock, "gsc_vm", &gsc_vm_key);
+	} else {
+		init_rwsem(&vm->lock);
+	}
 	mutex_init(&vm->snap_mutex);
 
 	INIT_LIST_HEAD(&vm->rebind_list);
@@ -2668,11 +2688,10 @@ static void vm_bind_ioctl_ops_fini(struct xe_vm *vm, struct xe_vma_ops *vops,
 	for (i = 0; i < vops->num_syncs; i++)
 		xe_sync_entry_signal(vops->syncs + i, fence);
 	xe_exec_queue_last_fence_set(wait_exec_queue, vm, fence);
-	dma_fence_put(fence);
 }
 
-static int vm_bind_ioctl_ops_execute(struct xe_vm *vm,
-				     struct xe_vma_ops *vops)
+static struct dma_fence *vm_bind_ioctl_ops_execute(struct xe_vm *vm,
+						   struct xe_vma_ops *vops)
 {
 	struct drm_exec exec;
 	struct dma_fence *fence;
@@ -2685,21 +2704,21 @@ static int vm_bind_ioctl_ops_execute(struct xe_vm *vm,
 	drm_exec_until_all_locked(&exec) {
 		err = vm_bind_ioctl_ops_lock_and_prep(&exec, vm, vops);
 		drm_exec_retry_on_contention(&exec);
-		if (err)
+		if (err) {
+			fence = ERR_PTR(err);
 			goto unlock;
+		}
 
 		fence = ops_execute(vm, vops);
-		if (IS_ERR(fence)) {
-			err = PTR_ERR(fence);
+		if (IS_ERR(fence))
 			goto unlock;
-		}
 
 		vm_bind_ioctl_ops_fini(vm, vops, fence);
 	}
 
 unlock:
 	drm_exec_fini(&exec);
-	return err;
+	return fence;
 }
 ALLOW_ERROR_INJECTION(vm_bind_ioctl_ops_execute, ERRNO);
 
@@ -2931,6 +2950,7 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	struct xe_sync_entry *syncs = NULL;
 	struct drm_xe_vm_bind_op *bind_ops;
 	struct xe_vma_ops vops;
+	struct dma_fence *fence;
 	int err;
 	int i;
 
@@ -3095,7 +3115,11 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	if (err)
 		goto unwind_ops;
 
-	err = vm_bind_ioctl_ops_execute(vm, &vops);
+	fence = vm_bind_ioctl_ops_execute(vm, &vops);
+	if (IS_ERR(fence))
+		err = PTR_ERR(fence);
+	else
+		dma_fence_put(fence);
 
 unwind_ops:
 	if (err && err != -ENODATA)
@@ -3129,6 +3153,81 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	return err;
 }
 
+/**
+ * xe_vm_bind_kernel_bo - bind a kernel BO to a VM
+ * @vm: VM to bind the BO to
+ * @bo: BO to bind
+ * @q: exec queue to use for the bind (optional)
+ * @addr: address at which to bind the BO
+ * @cache_lvl: PAT cache level to use
+ *
+ * Execute a VM bind map operation on a kernel-owned BO to bind it into a
+ * kernel-owned VM.
+ *
+ * Returns a dma_fence to track the binding completion if the job to do so was
+ * successfully submitted, an error pointer otherwise.
+ */
+struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo,
+				       struct xe_exec_queue *q, u64 addr,
+				       enum xe_cache_level cache_lvl)
+{
+	struct xe_vma_ops vops;
+	struct drm_gpuva_ops *ops = NULL;
+	struct dma_fence *fence;
+	int err;
+
+	xe_bo_get(bo);
+	xe_vm_get(vm);
+	if (q)
+		xe_exec_queue_get(q);
+
+	down_write(&vm->lock);
+
+	xe_vma_ops_init(&vops, vm, q, NULL, 0);
+
+	ops = vm_bind_ioctl_ops_create(vm, bo, 0, addr, bo->size,
+				       DRM_XE_VM_BIND_OP_MAP, 0, 0,
+				       vm->xe->pat.idx[cache_lvl]);
+	if (IS_ERR(ops)) {
+		err = PTR_ERR(ops);
+		goto release_vm_lock;
+	}
+
+	err = vm_bind_ioctl_ops_parse(vm, ops, &vops);
+	if (err)
+		goto release_vm_lock;
+
+	xe_assert(vm->xe, !list_empty(&vops.list));
+
+	err = xe_vma_ops_alloc(&vops, false);
+	if (err)
+		goto unwind_ops;
+
+	fence = vm_bind_ioctl_ops_execute(vm, &vops);
+	if (IS_ERR(fence))
+		err = PTR_ERR(fence);
+
+unwind_ops:
+	if (err && err != -ENODATA)
+		vm_bind_ioctl_ops_unwind(vm, &ops, 1);
+
+	xe_vma_ops_fini(&vops);
+	drm_gpuva_ops_free(&vm->gpuvm, ops);
+
+release_vm_lock:
+	up_write(&vm->lock);
+
+	if (q)
+		xe_exec_queue_put(q);
+	xe_vm_put(vm);
+	xe_bo_put(bo);
+
+	if (err)
+		fence = ERR_PTR(err);
+
+	return fence;
+}
+
 /**
  * xe_vm_lock() - Lock the vm's dma_resv object
  * @vm: The struct xe_vm whose lock is to be locked
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 23adb7442881..0a2fa6c0815b 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -18,6 +18,8 @@ struct drm_file;
 
 struct ttm_buffer_object;
 
+struct dma_fence;
+
 struct xe_exec_queue;
 struct xe_file;
 struct xe_sync_entry;
@@ -247,6 +249,10 @@ int xe_vm_lock_vma(struct drm_exec *exec, struct xe_vma *vma);
 int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec,
 			  unsigned int num_fences);
 
+struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo,
+				       struct xe_exec_queue *q, u64 addr,
+				       enum xe_cache_level cache_lvl);
+
 /**
  * xe_vm_resv() - Return's the vm's reservation object
  * @vm: The vm
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 7f9a303e51d8..52467b9b5348 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -164,6 +164,7 @@ struct xe_vm {
 #define XE_VM_FLAG_BANNED		BIT(5)
 #define XE_VM_FLAG_TILE_ID(flags)	FIELD_GET(GENMASK(7, 6), flags)
 #define XE_VM_FLAG_SET_TILE_ID(tile)	FIELD_PREP(GENMASK(7, 6), (tile)->id)
+#define XE_VM_FLAG_GSC			BIT(8)
 	unsigned long flags;
 
 	/** @composite_fence_ctx: context composite fence */
-- 
2.43.0


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

* [PATCH v4 03/13] drm/xe/pxp: Add VCS inline termination support
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
  2025-01-06 21:11 ` [PATCH v4 01/13] drm/xe/pxp: Initialize PXP structure and KCR reg Daniele Ceraolo Spurio
  2025-01-06 21:11 ` [PATCH v4 02/13] drm/xe/pxp: Allocate PXP execution resources Daniele Ceraolo Spurio
@ 2025-01-06 21:12 ` Daniele Ceraolo Spurio
  2025-01-06 21:12 ` [PATCH v4 04/13] drm/xe/pxp: Add GSC session invalidation support Daniele Ceraolo Spurio
                   ` (17 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:12 UTC (permalink / raw)
  To: intel-xe; +Cc: Daniele Ceraolo Spurio, John Harrison

The key termination is done with a specific submission to the VCS
engine.

Note that this patch is meant to be squashed with the follow-up patches
that implement the other pieces of the termination flow. It is separate
for now for ease of review.

v2: clean up defines and command emission code. (John)

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
---
 .../gpu/drm/xe/instructions/xe_instr_defs.h   |   1 +
 .../gpu/drm/xe/instructions/xe_mfx_commands.h |  28 +++++
 .../gpu/drm/xe/instructions/xe_mi_commands.h  |   5 +
 drivers/gpu/drm/xe/xe_lrc.h                   |   3 +-
 drivers/gpu/drm/xe/xe_pxp_submit.c            | 114 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_pxp_submit.h            |   4 +
 drivers/gpu/drm/xe/xe_ring_ops.c              |   4 +-
 7 files changed, 156 insertions(+), 3 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/instructions/xe_mfx_commands.h

diff --git a/drivers/gpu/drm/xe/instructions/xe_instr_defs.h b/drivers/gpu/drm/xe/instructions/xe_instr_defs.h
index fd2ce7ace510..e559969468c4 100644
--- a/drivers/gpu/drm/xe/instructions/xe_instr_defs.h
+++ b/drivers/gpu/drm/xe/instructions/xe_instr_defs.h
@@ -16,6 +16,7 @@
 #define XE_INSTR_CMD_TYPE		GENMASK(31, 29)
 #define   XE_INSTR_MI			REG_FIELD_PREP(XE_INSTR_CMD_TYPE, 0x0)
 #define   XE_INSTR_GSC			REG_FIELD_PREP(XE_INSTR_CMD_TYPE, 0x2)
+#define   XE_INSTR_VIDEOPIPE		REG_FIELD_PREP(XE_INSTR_CMD_TYPE, 0x3)
 #define   XE_INSTR_GFXPIPE		REG_FIELD_PREP(XE_INSTR_CMD_TYPE, 0x3)
 #define   XE_INSTR_GFX_STATE		REG_FIELD_PREP(XE_INSTR_CMD_TYPE, 0x4)
 
diff --git a/drivers/gpu/drm/xe/instructions/xe_mfx_commands.h b/drivers/gpu/drm/xe/instructions/xe_mfx_commands.h
new file mode 100644
index 000000000000..3c0c97f78e90
--- /dev/null
+++ b/drivers/gpu/drm/xe/instructions/xe_mfx_commands.h
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef _XE_MFX_COMMANDS_H_
+#define _XE_MFX_COMMANDS_H_
+
+#include "instructions/xe_instr_defs.h"
+
+#define MFX_CMD_SUBTYPE		REG_GENMASK(28, 27) /* A.K.A cmd pipe */
+#define MFX_CMD_OPCODE		REG_GENMASK(26, 24)
+#define MFX_CMD_SUB_OPCODE	REG_GENMASK(23, 16)
+#define MFX_FLAGS_AND_LEN	REG_GENMASK(15, 0)
+
+#define XE_MFX_INSTR(subtype, op, sub_op) \
+	(XE_INSTR_VIDEOPIPE | \
+	 REG_FIELD_PREP(MFX_CMD_SUBTYPE, subtype) | \
+	 REG_FIELD_PREP(MFX_CMD_OPCODE, op) | \
+	 REG_FIELD_PREP(MFX_CMD_SUB_OPCODE, sub_op))
+
+#define MFX_WAIT				XE_MFX_INSTR(1, 0, 0)
+#define MFX_WAIT_DW0_PXP_SYNC_CONTROL_FLAG	REG_BIT(9)
+#define MFX_WAIT_DW0_MFX_SYNC_CONTROL_FLAG	REG_BIT(8)
+
+#define CRYPTO_KEY_EXCHANGE			XE_MFX_INSTR(2, 6, 9)
+
+#endif
diff --git a/drivers/gpu/drm/xe/instructions/xe_mi_commands.h b/drivers/gpu/drm/xe/instructions/xe_mi_commands.h
index 10ec2920d31b..167fb0f742de 100644
--- a/drivers/gpu/drm/xe/instructions/xe_mi_commands.h
+++ b/drivers/gpu/drm/xe/instructions/xe_mi_commands.h
@@ -48,6 +48,7 @@
 #define   MI_LRI_LEN(x)			(((x) & 0xff) + 1)
 
 #define MI_FLUSH_DW			__MI_INSTR(0x26)
+#define   MI_FLUSH_DW_PROTECTED_MEM_EN	REG_BIT(22)
 #define   MI_FLUSH_DW_STORE_INDEX	REG_BIT(21)
 #define   MI_INVALIDATE_TLB		REG_BIT(18)
 #define   MI_FLUSH_DW_CCS		REG_BIT(16)
@@ -66,4 +67,8 @@
 
 #define MI_BATCH_BUFFER_START		__MI_INSTR(0x31)
 
+#define MI_SET_APPID			__MI_INSTR(0x0e)
+#define MI_SET_APPID_SESSION_ID_MASK	REG_GENMASK(6, 0)
+#define MI_SET_APPID_SESSION_ID(x)	REG_FIELD_PREP(MI_SET_APPID_SESSION_ID_MASK, x)
+
 #endif
diff --git a/drivers/gpu/drm/xe/xe_lrc.h b/drivers/gpu/drm/xe/xe_lrc.h
index 4206e6a8b50a..b27e80cd842a 100644
--- a/drivers/gpu/drm/xe/xe_lrc.h
+++ b/drivers/gpu/drm/xe/xe_lrc.h
@@ -39,7 +39,8 @@ struct xe_lrc_snapshot {
 	u32 ctx_job_timestamp;
 };
 
-#define LRC_PPHWSP_SCRATCH_ADDR (0x34 * 4)
+#define LRC_PPHWSP_FLUSH_INVAL_SCRATCH_ADDR (0x34 * 4)
+#define LRC_PPHWSP_PXP_INVAL_SCRATCH_ADDR (0x40 * 4)
 
 struct xe_lrc *xe_lrc_create(struct xe_hw_engine *hwe, struct xe_vm *vm,
 			     u32 ring_size, u16 msix_vec);
diff --git a/drivers/gpu/drm/xe/xe_pxp_submit.c b/drivers/gpu/drm/xe/xe_pxp_submit.c
index 52a6143b5ebe..326baea679a3 100644
--- a/drivers/gpu/drm/xe/xe_pxp_submit.c
+++ b/drivers/gpu/drm/xe/xe_pxp_submit.c
@@ -5,15 +5,21 @@
 
 #include "xe_pxp_submit.h"
 
+#include <linux/delay.h>
 #include <uapi/drm/xe_drm.h>
 
 #include "xe_device_types.h"
+#include "xe_bb.h"
 #include "xe_bo.h"
 #include "xe_exec_queue.h"
 #include "xe_gsc_submit.h"
 #include "xe_gt.h"
+#include "xe_lrc.h"
 #include "xe_pxp_types.h"
+#include "xe_sched_job.h"
 #include "xe_vm.h"
+#include "instructions/xe_mfx_commands.h"
+#include "instructions/xe_mi_commands.h"
 
 /*
  * The VCS is used for kernel-owned GGTT submissions to issue key termination.
@@ -197,3 +203,111 @@ void xe_pxp_destroy_execution_resources(struct xe_pxp *pxp)
 	destroy_gsc_client_resources(&pxp->gsc_res);
 	destroy_vcs_execution_resources(pxp);
 }
+
+#define emit_cmd(xe_, map_, offset_, val_) \
+	xe_map_wr(xe_, map_, (offset_) * sizeof(u32), u32, val_)
+
+/* stall until prior PXP and MFX/HCP/HUC objects are completed */
+#define MFX_WAIT_PXP (MFX_WAIT | \
+		      MFX_WAIT_DW0_PXP_SYNC_CONTROL_FLAG | \
+		      MFX_WAIT_DW0_MFX_SYNC_CONTROL_FLAG)
+static u32 pxp_emit_wait(struct xe_device *xe, struct iosys_map *batch, u32 offset)
+{
+	/* wait for cmds to go through */
+	emit_cmd(xe, batch, offset++, MFX_WAIT_PXP);
+	emit_cmd(xe, batch, offset++, 0);
+
+	return offset;
+}
+
+static u32 pxp_emit_session_selection(struct xe_device *xe, struct iosys_map *batch,
+				      u32 offset, u32 idx)
+{
+	offset = pxp_emit_wait(xe, batch, offset);
+
+	/* pxp off */
+	emit_cmd(xe, batch, offset++, MI_FLUSH_DW | MI_FLUSH_IMM_DW);
+	emit_cmd(xe, batch, offset++, 0);
+	emit_cmd(xe, batch, offset++, 0);
+	emit_cmd(xe, batch, offset++, 0);
+
+	/* select session */
+	emit_cmd(xe, batch, offset++, MI_SET_APPID | MI_SET_APPID_SESSION_ID(idx));
+	emit_cmd(xe, batch, offset++, 0);
+
+	offset = pxp_emit_wait(xe, batch, offset);
+
+	/* pxp on */
+	emit_cmd(xe, batch, offset++, MI_FLUSH_DW |
+				      MI_FLUSH_DW_PROTECTED_MEM_EN |
+				      MI_FLUSH_DW_OP_STOREDW | MI_FLUSH_DW_STORE_INDEX |
+				      MI_FLUSH_IMM_DW);
+	emit_cmd(xe, batch, offset++, LRC_PPHWSP_PXP_INVAL_SCRATCH_ADDR |
+				      MI_FLUSH_DW_USE_GTT);
+	emit_cmd(xe, batch, offset++, 0);
+	emit_cmd(xe, batch, offset++, 0);
+
+	offset = pxp_emit_wait(xe, batch, offset);
+
+	return offset;
+}
+
+static u32 pxp_emit_inline_termination(struct xe_device *xe,
+				       struct iosys_map *batch, u32 offset)
+{
+	/* session inline termination */
+	emit_cmd(xe, batch, offset++, CRYPTO_KEY_EXCHANGE);
+	emit_cmd(xe, batch, offset++, 0);
+
+	return offset;
+}
+
+static u32 pxp_emit_session_termination(struct xe_device *xe, struct iosys_map *batch,
+					u32 offset, u32 idx)
+{
+	offset = pxp_emit_session_selection(xe, batch, offset, idx);
+	offset = pxp_emit_inline_termination(xe, batch, offset);
+
+	return offset;
+}
+
+/**
+ * xe_pxp_submit_session_termination - submits a PXP inline termination
+ * @pxp: the xe_pxp structure
+ * @id: the session to terminate
+ *
+ * Emit an inline termination via the VCS engine to terminate a session.
+ *
+ * Returns 0 if the submission is successful, an errno value otherwise.
+ */
+int xe_pxp_submit_session_termination(struct xe_pxp *pxp, u32 id)
+{
+	struct xe_sched_job *job;
+	struct dma_fence *fence;
+	long timeout;
+	u32 offset = 0;
+	u64 addr = xe_bo_ggtt_addr(pxp->vcs_exec.bo);
+
+	offset = pxp_emit_session_termination(pxp->xe, &pxp->vcs_exec.bo->vmap, offset, id);
+	offset = pxp_emit_wait(pxp->xe, &pxp->vcs_exec.bo->vmap, offset);
+	emit_cmd(pxp->xe, &pxp->vcs_exec.bo->vmap, offset, MI_BATCH_BUFFER_END);
+
+	job = xe_sched_job_create(pxp->vcs_exec.q, &addr);
+	if (IS_ERR(job))
+		return PTR_ERR(job);
+
+	xe_sched_job_arm(job);
+	fence = dma_fence_get(&job->drm.s_fence->finished);
+	xe_sched_job_push(job);
+
+	timeout = dma_fence_wait_timeout(fence, false, HZ);
+
+	dma_fence_put(fence);
+
+	if (!timeout)
+		return -ETIMEDOUT;
+	else if (timeout < 0)
+		return timeout;
+
+	return 0;
+}
diff --git a/drivers/gpu/drm/xe/xe_pxp_submit.h b/drivers/gpu/drm/xe/xe_pxp_submit.h
index fd21ac935be1..4ee8c0acfed9 100644
--- a/drivers/gpu/drm/xe/xe_pxp_submit.h
+++ b/drivers/gpu/drm/xe/xe_pxp_submit.h
@@ -6,9 +6,13 @@
 #ifndef __XE_PXP_SUBMIT_H__
 #define __XE_PXP_SUBMIT_H__
 
+#include <linux/types.h>
+
 struct xe_pxp;
 
 int xe_pxp_allocate_execution_resources(struct xe_pxp *pxp);
 void xe_pxp_destroy_execution_resources(struct xe_pxp *pxp);
 
+int xe_pxp_submit_session_termination(struct xe_pxp *pxp, u32 id);
+
 #endif /* __XE_PXP_SUBMIT_H__ */
diff --git a/drivers/gpu/drm/xe/xe_ring_ops.c b/drivers/gpu/drm/xe/xe_ring_ops.c
index 9f327f27c072..0c230ee53bba 100644
--- a/drivers/gpu/drm/xe/xe_ring_ops.c
+++ b/drivers/gpu/drm/xe/xe_ring_ops.c
@@ -118,7 +118,7 @@ static int emit_flush_invalidate(u32 flag, u32 *dw, int i)
 	dw[i++] |= MI_INVALIDATE_TLB | MI_FLUSH_DW_OP_STOREDW | MI_FLUSH_IMM_DW |
 		MI_FLUSH_DW_STORE_INDEX;
 
-	dw[i++] = LRC_PPHWSP_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT;
+	dw[i++] = LRC_PPHWSP_FLUSH_INVAL_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT;
 	dw[i++] = 0;
 	dw[i++] = ~0U;
 
@@ -156,7 +156,7 @@ static int emit_pipe_invalidate(u32 mask_flags, bool invalidate_tlb, u32 *dw,
 
 	flags &= ~mask_flags;
 
-	return emit_pipe_control(dw, i, 0, flags, LRC_PPHWSP_SCRATCH_ADDR, 0);
+	return emit_pipe_control(dw, i, 0, flags, LRC_PPHWSP_FLUSH_INVAL_SCRATCH_ADDR, 0);
 }
 
 static int emit_store_imm_ppgtt_posted(u64 addr, u64 value,
-- 
2.43.0


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

* [PATCH v4 04/13] drm/xe/pxp: Add GSC session invalidation support
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (2 preceding siblings ...)
  2025-01-06 21:12 ` [PATCH v4 03/13] drm/xe/pxp: Add VCS inline termination support Daniele Ceraolo Spurio
@ 2025-01-06 21:12 ` Daniele Ceraolo Spurio
  2025-01-06 21:12 ` [PATCH v4 05/13] drm/xe/pxp: Handle the PXP termination interrupt Daniele Ceraolo Spurio
                   ` (16 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:12 UTC (permalink / raw)
  To: intel-xe; +Cc: Daniele Ceraolo Spurio, John Harrison

After a session is terminated, we need to inform the GSC so that it can
clean up its side of the allocation. This is done by sending an
invalidation command with the session ID.

Note that this patch is meant to be squashed with the follow-up patches
that implement the other pieces of the termination flow. It is separate
for now for ease of review.

v2: Better comment and error messages (John)

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h |  13 +
 drivers/gpu/drm/xe/xe_pxp_submit.c            | 228 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_pxp_submit.h            |   3 +
 3 files changed, 244 insertions(+)

diff --git a/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h b/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h
index f3c4cf10ba20..f0da65ccdda2 100644
--- a/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h
+++ b/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h
@@ -31,6 +31,7 @@ enum pxp_status {
 	PXP_STATUS_NOT_READY = 0x100e,
 	PXP_STATUS_PLATFCONFIG_KF1_NOVERIF = 0x101a,
 	PXP_STATUS_PLATFCONFIG_KF1_BAD = 0x101f,
+	PXP_STATUS_PLATFCONFIG_FIXED_KF1_NOT_SUPPORTED = 0x1037,
 	PXP_STATUS_OP_NOT_PERMITTED = 0x4013
 };
 
@@ -49,6 +50,7 @@ struct pxp_cmd_header {
 	u32 buffer_len;
 } __packed;
 
+#define PXP43_CMDID_INVALIDATE_STREAM_KEY 0x00000007
 #define PXP43_CMDID_NEW_HUC_AUTH 0x0000003F /* MTL+ */
 
 /* PXP-Input-Packet: HUC Auth-only */
@@ -63,4 +65,15 @@ struct pxp43_huc_auth_out {
 	struct pxp_cmd_header header;
 } __packed;
 
+/* PXP-Input-Packet: Invalidate Stream Key */
+struct pxp43_inv_stream_key_in {
+	struct pxp_cmd_header header;
+	u32 rsvd[3];
+} __packed;
+
+/* PXP-Output-Packet: Invalidate Stream Key */
+struct pxp43_inv_stream_key_out {
+	struct pxp_cmd_header header;
+	u32 rsvd;
+} __packed;
 #endif
diff --git a/drivers/gpu/drm/xe/xe_pxp_submit.c b/drivers/gpu/drm/xe/xe_pxp_submit.c
index 326baea679a3..f5f6b18c1054 100644
--- a/drivers/gpu/drm/xe/xe_pxp_submit.c
+++ b/drivers/gpu/drm/xe/xe_pxp_submit.c
@@ -15,9 +15,13 @@
 #include "xe_gsc_submit.h"
 #include "xe_gt.h"
 #include "xe_lrc.h"
+#include "xe_map.h"
 #include "xe_pxp_types.h"
 #include "xe_sched_job.h"
 #include "xe_vm.h"
+#include "abi/gsc_command_header_abi.h"
+#include "abi/gsc_pxp_commands_abi.h"
+#include "instructions/xe_gsc_commands.h"
 #include "instructions/xe_mfx_commands.h"
 #include "instructions/xe_mi_commands.h"
 
@@ -311,3 +315,227 @@ int xe_pxp_submit_session_termination(struct xe_pxp *pxp, u32 id)
 
 	return 0;
 }
+
+static bool
+is_fw_err_platform_config(u32 type)
+{
+	switch (type) {
+	case PXP_STATUS_ERROR_API_VERSION:
+	case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
+	case PXP_STATUS_PLATFCONFIG_KF1_BAD:
+	case PXP_STATUS_PLATFCONFIG_FIXED_KF1_NOT_SUPPORTED:
+		return true;
+	default:
+		break;
+	}
+	return false;
+}
+
+static const char *
+fw_err_to_string(u32 type)
+{
+	switch (type) {
+	case PXP_STATUS_ERROR_API_VERSION:
+		return "ERR_API_VERSION";
+	case PXP_STATUS_NOT_READY:
+		return "ERR_NOT_READY";
+	case PXP_STATUS_PLATFCONFIG_KF1_NOVERIF:
+	case PXP_STATUS_PLATFCONFIG_KF1_BAD:
+	case PXP_STATUS_PLATFCONFIG_FIXED_KF1_NOT_SUPPORTED:
+		return "ERR_PLATFORM_CONFIG";
+	default:
+		break;
+	}
+	return NULL;
+}
+
+static int pxp_pkt_submit(struct xe_exec_queue *q, u64 batch_addr)
+{
+	struct xe_gt *gt = q->gt;
+	struct xe_device *xe = gt_to_xe(gt);
+	struct xe_sched_job *job;
+	struct dma_fence *fence;
+	long timeout;
+
+	xe_assert(xe, q->hwe->engine_id == XE_HW_ENGINE_GSCCS0);
+
+	job = xe_sched_job_create(q, &batch_addr);
+	if (IS_ERR(job))
+		return PTR_ERR(job);
+
+	xe_sched_job_arm(job);
+	fence = dma_fence_get(&job->drm.s_fence->finished);
+	xe_sched_job_push(job);
+
+	timeout = dma_fence_wait_timeout(fence, false, HZ);
+	dma_fence_put(fence);
+	if (timeout < 0)
+		return timeout;
+	else if (!timeout)
+		return -ETIME;
+
+	return 0;
+}
+
+static void emit_pxp_heci_cmd(struct xe_device *xe, struct iosys_map *batch,
+			      u64 addr_in, u32 size_in, u64 addr_out, u32 size_out)
+{
+	u32 len = 0;
+
+	xe_map_wr(xe, batch, len++ * sizeof(u32), u32, GSC_HECI_CMD_PKT);
+	xe_map_wr(xe, batch, len++ * sizeof(u32), u32, lower_32_bits(addr_in));
+	xe_map_wr(xe, batch, len++ * sizeof(u32), u32, upper_32_bits(addr_in));
+	xe_map_wr(xe, batch, len++ * sizeof(u32), u32, size_in);
+	xe_map_wr(xe, batch, len++ * sizeof(u32), u32, lower_32_bits(addr_out));
+	xe_map_wr(xe, batch, len++ * sizeof(u32), u32, upper_32_bits(addr_out));
+	xe_map_wr(xe, batch, len++ * sizeof(u32), u32, size_out);
+	xe_map_wr(xe, batch, len++ * sizeof(u32), u32, 0);
+	xe_map_wr(xe, batch, len++ * sizeof(u32), u32, MI_BATCH_BUFFER_END);
+}
+
+#define GSC_PENDING_RETRY_MAXCOUNT 40
+#define GSC_PENDING_RETRY_PAUSE_MS 50
+static int gsccs_send_message(struct xe_pxp_gsc_client_resources *gsc_res,
+			      void *msg_in, size_t msg_in_size,
+			      void *msg_out, size_t msg_out_size_max)
+{
+	struct xe_device *xe = gsc_res->vm->xe;
+	const size_t max_msg_size = gsc_res->inout_size - sizeof(struct intel_gsc_mtl_header);
+	u32 wr_offset;
+	u32 rd_offset;
+	u32 reply_size;
+	u32 min_reply_size = 0;
+	int ret;
+	int retry = GSC_PENDING_RETRY_MAXCOUNT;
+
+	if (msg_in_size > max_msg_size || msg_out_size_max > max_msg_size)
+		return -ENOSPC;
+
+	wr_offset = xe_gsc_emit_header(xe, &gsc_res->msg_in, 0,
+				       HECI_MEADDRESS_PXP,
+				       gsc_res->host_session_handle,
+				       msg_in_size);
+
+	/* NOTE: zero size packets are used for session-cleanups */
+	if (msg_in && msg_in_size) {
+		xe_map_memcpy_to(xe, &gsc_res->msg_in, wr_offset,
+				 msg_in, msg_in_size);
+		min_reply_size = sizeof(struct pxp_cmd_header);
+	}
+
+	/* Make sure the reply header does not contain stale data */
+	xe_gsc_poison_header(xe, &gsc_res->msg_out, 0);
+
+	/*
+	 * The BO is mapped at address 0 of the PPGTT, so no need to add its
+	 * base offset when calculating the in/out addresses.
+	 */
+	emit_pxp_heci_cmd(xe, &gsc_res->batch, PXP_BB_SIZE,
+			  wr_offset + msg_in_size, PXP_BB_SIZE + gsc_res->inout_size,
+			  wr_offset + msg_out_size_max);
+
+	xe_device_wmb(xe);
+
+	/*
+	 * If the GSC needs to communicate with CSME to complete our request,
+	 * it'll set the "pending" flag in the return header. In this scenario
+	 * we're expected to wait 50ms to give some time to the proxy code to
+	 * handle the GSC<->CSME communication and then try again. Note that,
+	 * although in most case the 50ms window is enough, the proxy flow is
+	 * not actually guaranteed to complete within that time period, so we
+	 * might have to try multiple times, up to a worst case of 2 seconds,
+	 * after which the request is considered aborted.
+	 */
+	do {
+		ret = pxp_pkt_submit(gsc_res->q, 0);
+		if (ret)
+			break;
+
+		if (xe_gsc_check_and_update_pending(xe, &gsc_res->msg_in, 0,
+						    &gsc_res->msg_out, 0)) {
+			ret = -EAGAIN;
+			msleep(GSC_PENDING_RETRY_PAUSE_MS);
+		}
+	} while (--retry && ret == -EAGAIN);
+
+	if (ret) {
+		drm_err(&xe->drm, "failed to submit GSC PXP message (%pe)\n", ERR_PTR(ret));
+		return ret;
+	}
+
+	ret = xe_gsc_read_out_header(xe, &gsc_res->msg_out, 0,
+				     min_reply_size, &rd_offset);
+	if (ret) {
+		drm_err(&xe->drm, "invalid GSC reply for PXP (%pe)\n", ERR_PTR(ret));
+		return ret;
+	}
+
+	if (msg_out && min_reply_size) {
+		reply_size = xe_map_rd_field(xe, &gsc_res->msg_out, rd_offset,
+					     struct pxp_cmd_header, buffer_len);
+		reply_size += sizeof(struct pxp_cmd_header);
+
+		if (reply_size > msg_out_size_max) {
+			drm_warn(&xe->drm, "PXP reply size overflow: %u (%zu)\n",
+				 reply_size, msg_out_size_max);
+			reply_size = msg_out_size_max;
+		}
+
+		xe_map_memcpy_from(xe, msg_out, &gsc_res->msg_out,
+				   rd_offset, reply_size);
+	}
+
+	xe_gsc_poison_header(xe, &gsc_res->msg_in, 0);
+
+	return ret;
+}
+
+/**
+ * xe_pxp_submit_session_invalidation - submits a PXP GSC invalidation
+ * @gsc_res: the pxp client resources
+ * @id: the session to invalidate
+ *
+ * Submit a message to the GSC FW to notify it that a session has been
+ * terminated and is therefore invalid.
+ *
+ * Returns 0 if the submission is successful, an errno value otherwise.
+ */
+int xe_pxp_submit_session_invalidation(struct xe_pxp_gsc_client_resources *gsc_res, u32 id)
+{
+	struct xe_device *xe = gsc_res->vm->xe;
+	struct pxp43_inv_stream_key_in msg_in = {0};
+	struct pxp43_inv_stream_key_out msg_out = {0};
+	int ret = 0;
+
+	/*
+	 * Stream key invalidation reuses the same version 4.2 input/output
+	 * command format but firmware requires 4.3 API interaction
+	 */
+	msg_in.header.api_version = PXP_APIVER(4, 3);
+	msg_in.header.command_id = PXP43_CMDID_INVALIDATE_STREAM_KEY;
+	msg_in.header.buffer_len = sizeof(msg_in) - sizeof(msg_in.header);
+
+	msg_in.header.stream_id = FIELD_PREP(PXP_CMDHDR_EXTDATA_SESSION_VALID, 1);
+	msg_in.header.stream_id |= FIELD_PREP(PXP_CMDHDR_EXTDATA_APP_TYPE, 0);
+	msg_in.header.stream_id |= FIELD_PREP(PXP_CMDHDR_EXTDATA_SESSION_ID, id);
+
+	ret = gsccs_send_message(gsc_res, &msg_in, sizeof(msg_in),
+				 &msg_out, sizeof(msg_out));
+	if (ret) {
+		drm_err(&xe->drm, "Failed to invalidate PXP stream-key %u (%pe)\n",
+			id, ERR_PTR(ret));
+	} else if (msg_out.header.status != 0) {
+		ret = -EIO;
+
+		if (is_fw_err_platform_config(msg_out.header.status))
+			drm_info_once(&xe->drm,
+				      "Failed to invalidate PXP stream-key %u: BIOS/SOC 0x%08x(%s)\n",
+				      id, msg_out.header.status,
+				      fw_err_to_string(msg_out.header.status));
+		else
+			drm_dbg(&xe->drm, "Failed to invalidate stream-key %u, s=0x%08x\n",
+				id, msg_out.header.status);
+	}
+
+	return ret;
+}
diff --git a/drivers/gpu/drm/xe/xe_pxp_submit.h b/drivers/gpu/drm/xe/xe_pxp_submit.h
index 4ee8c0acfed9..48fdc9b09116 100644
--- a/drivers/gpu/drm/xe/xe_pxp_submit.h
+++ b/drivers/gpu/drm/xe/xe_pxp_submit.h
@@ -9,10 +9,13 @@
 #include <linux/types.h>
 
 struct xe_pxp;
+struct xe_pxp_gsc_client_resources;
 
 int xe_pxp_allocate_execution_resources(struct xe_pxp *pxp);
 void xe_pxp_destroy_execution_resources(struct xe_pxp *pxp);
 
 int xe_pxp_submit_session_termination(struct xe_pxp *pxp, u32 id);
+int xe_pxp_submit_session_invalidation(struct xe_pxp_gsc_client_resources *gsc_res,
+				       u32 id);
 
 #endif /* __XE_PXP_SUBMIT_H__ */
-- 
2.43.0


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

* [PATCH v4 05/13] drm/xe/pxp: Handle the PXP termination interrupt
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (3 preceding siblings ...)
  2025-01-06 21:12 ` [PATCH v4 04/13] drm/xe/pxp: Add GSC session invalidation support Daniele Ceraolo Spurio
@ 2025-01-06 21:12 ` Daniele Ceraolo Spurio
  2025-01-06 21:12 ` [PATCH v4 06/13] drm/xe/pxp: Add GSC session initialization support Daniele Ceraolo Spurio
                   ` (15 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:12 UTC (permalink / raw)
  To: intel-xe; +Cc: Daniele Ceraolo Spurio, John Harrison

When something happen to the session, the HW generates a termination
interrupt. In reply to this, the driver is required to submit an inline
session termination via the VCS, trigger the global termination and
notify the GSC FW that the session is now invalid.

v2: rename ARB define to make it cleaner to move it to uapi (John)
v3: fix parameter name in documentation

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/xe/regs/xe_irq_regs.h |   8 ++
 drivers/gpu/drm/xe/regs/xe_pxp_regs.h |   6 ++
 drivers/gpu/drm/xe/xe_irq.c           |  20 +++-
 drivers/gpu/drm/xe/xe_pxp.c           | 139 +++++++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_pxp.h           |   7 ++
 drivers/gpu/drm/xe/xe_pxp_types.h     |  13 +++
 6 files changed, 189 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/xe/regs/xe_irq_regs.h b/drivers/gpu/drm/xe/regs/xe_irq_regs.h
index 1776b3f78ccb..f0ecfcac4003 100644
--- a/drivers/gpu/drm/xe/regs/xe_irq_regs.h
+++ b/drivers/gpu/drm/xe/regs/xe_irq_regs.h
@@ -44,6 +44,7 @@
 #define   ENGINE1_MASK				REG_GENMASK(31, 16)
 #define   ENGINE0_MASK				REG_GENMASK(15, 0)
 #define GPM_WGBOXPERF_INTR_ENABLE		XE_REG(0x19003c, XE_REG_OPTION_VF)
+#define CRYPTO_RSVD_INTR_ENABLE			XE_REG(0x190040)
 #define GUNIT_GSC_INTR_ENABLE			XE_REG(0x190044, XE_REG_OPTION_VF)
 #define CCS_RSVD_INTR_ENABLE			XE_REG(0x190048, XE_REG_OPTION_VF)
 
@@ -54,6 +55,7 @@
 #define   INTR_ENGINE_INTR(x)			REG_FIELD_GET(GENMASK(15, 0), x)
 #define   OTHER_GUC_INSTANCE			0
 #define   OTHER_GSC_HECI2_INSTANCE		3
+#define   OTHER_KCR_INSTANCE			4
 #define   OTHER_GSC_INSTANCE			6
 
 #define IIR_REG_SELECTOR(x)			XE_REG(0x190070 + ((x) * 4), XE_REG_OPTION_VF)
@@ -65,6 +67,7 @@
 #define HECI2_RSVD_INTR_MASK			XE_REG(0x1900e4)
 #define GUC_SG_INTR_MASK			XE_REG(0x1900e8, XE_REG_OPTION_VF)
 #define GPM_WGBOXPERF_INTR_MASK			XE_REG(0x1900ec, XE_REG_OPTION_VF)
+#define CRYPTO_RSVD_INTR_MASK			XE_REG(0x1900f0)
 #define GUNIT_GSC_INTR_MASK			XE_REG(0x1900f4, XE_REG_OPTION_VF)
 #define CCS0_CCS1_INTR_MASK			XE_REG(0x190100)
 #define CCS2_CCS3_INTR_MASK			XE_REG(0x190104)
@@ -79,4 +82,9 @@
 #define   GT_CS_MASTER_ERROR_INTERRUPT		REG_BIT(3)
 #define   GT_RENDER_USER_INTERRUPT		REG_BIT(0)
 
+/* irqs for OTHER_KCR_INSTANCE */
+#define   KCR_PXP_STATE_TERMINATED_INTERRUPT		REG_BIT(1)
+#define   KCR_APP_TERMINATED_PER_FW_REQ_INTERRUPT	REG_BIT(2)
+#define   KCR_PXP_STATE_RESET_COMPLETE_INTERRUPT	REG_BIT(3)
+
 #endif
diff --git a/drivers/gpu/drm/xe/regs/xe_pxp_regs.h b/drivers/gpu/drm/xe/regs/xe_pxp_regs.h
index d67cf210d23d..aa158938b42e 100644
--- a/drivers/gpu/drm/xe/regs/xe_pxp_regs.h
+++ b/drivers/gpu/drm/xe/regs/xe_pxp_regs.h
@@ -14,4 +14,10 @@
 #define KCR_INIT				XE_REG(0x3860f0)
 #define   KCR_INIT_ALLOW_DISPLAY_ME_WRITES	REG_BIT(14)
 
+/* KCR hwdrm session in play status 0-31 */
+#define KCR_SIP					XE_REG(0x386260)
+
+/* PXP global terminate register for session termination */
+#define KCR_GLOBAL_TERMINATE			XE_REG(0x3860f8)
+
 #endif /* __XE_PXP_REGS_H__ */
diff --git a/drivers/gpu/drm/xe/xe_irq.c b/drivers/gpu/drm/xe/xe_irq.c
index 32f5a67a917b..bf092e6391c7 100644
--- a/drivers/gpu/drm/xe/xe_irq.c
+++ b/drivers/gpu/drm/xe/xe_irq.c
@@ -20,6 +20,7 @@
 #include "xe_hw_engine.h"
 #include "xe_memirq.h"
 #include "xe_mmio.h"
+#include "xe_pxp.h"
 #include "xe_sriov.h"
 
 /*
@@ -208,6 +209,15 @@ void xe_irq_enable_hwe(struct xe_gt *gt)
 		}
 		if (heci_mask)
 			xe_mmio_write32(mmio, HECI2_RSVD_INTR_MASK, ~(heci_mask << 16));
+
+		if (xe_pxp_is_supported(xe)) {
+			u32 kcr_mask = KCR_PXP_STATE_TERMINATED_INTERRUPT |
+				       KCR_APP_TERMINATED_PER_FW_REQ_INTERRUPT |
+				       KCR_PXP_STATE_RESET_COMPLETE_INTERRUPT;
+
+			xe_mmio_write32(mmio, CRYPTO_RSVD_INTR_ENABLE, kcr_mask << 16);
+			xe_mmio_write32(mmio, CRYPTO_RSVD_INTR_MASK, ~(kcr_mask << 16));
+		}
 	}
 }
 
@@ -330,9 +340,15 @@ static void gt_irq_handler(struct xe_tile *tile,
 			}
 
 			if (class == XE_ENGINE_CLASS_OTHER) {
-				/* HECI GSCFI interrupts come from outside of GT */
+				/*
+				 * HECI GSCFI interrupts come from outside of GT.
+				 * KCR irqs come from inside GT but are handled
+				 * by the global PXP subsystem.
+				 */
 				if (xe->info.has_heci_gscfi && instance == OTHER_GSC_INSTANCE)
 					xe_heci_gsc_irq_handler(xe, intr_vec);
+				else if (instance == OTHER_KCR_INSTANCE)
+					xe_pxp_irq_handler(xe, intr_vec);
 				else
 					gt_other_irq_handler(engine_gt, instance, intr_vec);
 			}
@@ -510,6 +526,8 @@ static void gt_irq_reset(struct xe_tile *tile)
 		xe_mmio_write32(mmio, GUNIT_GSC_INTR_ENABLE, 0);
 		xe_mmio_write32(mmio, GUNIT_GSC_INTR_MASK, ~0);
 		xe_mmio_write32(mmio, HECI2_RSVD_INTR_MASK, ~0);
+		xe_mmio_write32(mmio, CRYPTO_RSVD_INTR_ENABLE, 0);
+		xe_mmio_write32(mmio, CRYPTO_RSVD_INTR_MASK, ~0);
 	}
 
 	xe_mmio_write32(mmio, GPM_WGBOXPERF_INTR_ENABLE, 0);
diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
index 89d71a69cdff..1452a4763ac2 100644
--- a/drivers/gpu/drm/xe/xe_pxp.c
+++ b/drivers/gpu/drm/xe/xe_pxp.c
@@ -12,9 +12,11 @@
 #include "xe_gt.h"
 #include "xe_gt_types.h"
 #include "xe_mmio.h"
+#include "xe_pm.h"
 #include "xe_pxp_submit.h"
 #include "xe_pxp_types.h"
 #include "xe_uc_fw.h"
+#include "regs/xe_irq_regs.h"
 #include "regs/xe_pxp_regs.h"
 
 /**
@@ -25,11 +27,132 @@
  * integrated parts.
  */
 
-static bool pxp_is_supported(const struct xe_device *xe)
+#define ARB_SESSION DRM_XE_PXP_HWDRM_DEFAULT_SESSION /* shorter define */
+
+bool xe_pxp_is_supported(const struct xe_device *xe)
 {
 	return xe->info.has_pxp && IS_ENABLED(CONFIG_INTEL_MEI_GSC_PROXY);
 }
 
+static bool pxp_is_enabled(const struct xe_pxp *pxp)
+{
+	return pxp;
+}
+
+static int pxp_wait_for_session_state(struct xe_pxp *pxp, u32 id, bool in_play)
+{
+	struct xe_gt *gt = pxp->gt;
+	u32 mask = BIT(id);
+
+	return xe_mmio_wait32(&gt->mmio, KCR_SIP, mask, in_play ? mask : 0,
+			      250, NULL, false);
+}
+
+static void pxp_terminate(struct xe_pxp *pxp)
+{
+	int ret = 0;
+	struct xe_device *xe = pxp->xe;
+	struct xe_gt *gt = pxp->gt;
+	unsigned int fw_ref;
+
+	drm_dbg(&xe->drm, "Terminating PXP\n");
+
+	fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
+	if (!xe_force_wake_ref_has_domain(fw_ref, XE_FW_GT)) {
+		ret = -EIO;
+		goto out;
+	}
+
+	/* terminate the hw session */
+	ret = xe_pxp_submit_session_termination(pxp, ARB_SESSION);
+	if (ret)
+		goto out;
+
+	ret = pxp_wait_for_session_state(pxp, ARB_SESSION, false);
+	if (ret)
+		goto out;
+
+	/* Trigger full HW cleanup */
+	xe_mmio_write32(&gt->mmio, KCR_GLOBAL_TERMINATE, 1);
+
+	/* now we can tell the GSC to clean up its own state */
+	ret = xe_pxp_submit_session_invalidation(&pxp->gsc_res, ARB_SESSION);
+
+out:
+	xe_force_wake_put(gt_to_fw(gt), fw_ref);
+
+	if (ret)
+		drm_err(&xe->drm, "PXP termination failed: %pe\n", ERR_PTR(ret));
+}
+
+static void pxp_terminate_complete(struct xe_pxp *pxp)
+{
+	/* TODO mark the session as ready to start */
+}
+
+static void pxp_irq_work(struct work_struct *work)
+{
+	struct xe_pxp *pxp = container_of(work, typeof(*pxp), irq.work);
+	struct xe_device *xe = pxp->xe;
+	u32 events = 0;
+
+	spin_lock_irq(&xe->irq.lock);
+	events = pxp->irq.events;
+	pxp->irq.events = 0;
+	spin_unlock_irq(&xe->irq.lock);
+
+	if (!events)
+		return;
+
+	/*
+	 * If we're processing a termination irq while suspending then don't
+	 * bother, we're going to re-init everything on resume anyway.
+	 */
+	if ((events & PXP_TERMINATION_REQUEST) && !xe_pm_runtime_get_if_active(xe))
+		return;
+
+	if (events & PXP_TERMINATION_REQUEST) {
+		events &= ~PXP_TERMINATION_COMPLETE;
+		pxp_terminate(pxp);
+	}
+
+	if (events & PXP_TERMINATION_COMPLETE)
+		pxp_terminate_complete(pxp);
+
+	if (events & PXP_TERMINATION_REQUEST)
+		xe_pm_runtime_put(xe);
+}
+
+/**
+ * xe_pxp_irq_handler - Handles PXP interrupts.
+ * @xe: the xe_device structure
+ * @iir: interrupt vector
+ */
+void xe_pxp_irq_handler(struct xe_device *xe, u16 iir)
+{
+	struct xe_pxp *pxp = xe->pxp;
+
+	if (!pxp_is_enabled(pxp)) {
+		drm_err(&xe->drm, "PXP irq 0x%x received with PXP disabled!\n", iir);
+		return;
+	}
+
+	lockdep_assert_held(&xe->irq.lock);
+
+	if (unlikely(!iir))
+		return;
+
+	if (iir & (KCR_PXP_STATE_TERMINATED_INTERRUPT |
+		   KCR_APP_TERMINATED_PER_FW_REQ_INTERRUPT))
+		pxp->irq.events |= PXP_TERMINATION_REQUEST;
+
+	if (iir & KCR_PXP_STATE_RESET_COMPLETE_INTERRUPT)
+		pxp->irq.events |= PXP_TERMINATION_COMPLETE;
+
+	if (pxp->irq.events)
+		queue_work(pxp->irq.wq, &pxp->irq.work);
+}
+
 static int kcr_pxp_set_status(const struct xe_pxp *pxp, bool enable)
 {
 	u32 val = enable ? _MASKED_BIT_ENABLE(KCR_INIT_ALLOW_DISPLAY_ME_WRITES) :
@@ -60,6 +183,7 @@ static void pxp_fini(void *arg)
 {
 	struct xe_pxp *pxp = arg;
 
+	destroy_workqueue(pxp->irq.wq);
 	xe_pxp_destroy_execution_resources(pxp);
 
 	/* no need to explicitly disable KCR since we're going to do an FLR */
@@ -83,7 +207,7 @@ int xe_pxp_init(struct xe_device *xe)
 	struct xe_pxp *pxp;
 	int err;
 
-	if (!pxp_is_supported(xe))
+	if (!xe_pxp_is_supported(xe))
 		return -EOPNOTSUPP;
 
 	/* we only support PXP on single tile devices with a media GT */
@@ -105,12 +229,19 @@ int xe_pxp_init(struct xe_device *xe)
 	if (!pxp)
 		return -ENOMEM;
 
+	INIT_WORK(&pxp->irq.work, pxp_irq_work);
 	pxp->xe = xe;
 	pxp->gt = gt;
 
+	pxp->irq.wq = alloc_ordered_workqueue("pxp-wq", 0);
+	if (!pxp->irq.wq) {
+		err = -ENOMEM;
+		goto out_free;
+	}
+
 	err = kcr_pxp_enable(pxp);
 	if (err)
-		goto out_free;
+		goto out_wq;
 
 	err = xe_pxp_allocate_execution_resources(pxp);
 	if (err)
@@ -122,6 +253,8 @@ int xe_pxp_init(struct xe_device *xe)
 
 out_kcr_disable:
 	kcr_pxp_disable(pxp);
+out_wq:
+	destroy_workqueue(pxp->irq.wq);
 out_free:
 	drmm_kfree(&xe->drm, pxp);
 	return err;
diff --git a/drivers/gpu/drm/xe/xe_pxp.h b/drivers/gpu/drm/xe/xe_pxp.h
index 00f5e688c0d9..39435c644dcd 100644
--- a/drivers/gpu/drm/xe/xe_pxp.h
+++ b/drivers/gpu/drm/xe/xe_pxp.h
@@ -6,8 +6,15 @@
 #ifndef __XE_PXP_H__
 #define __XE_PXP_H__
 
+#include <linux/types.h>
+
 struct xe_device;
 
+#define DRM_XE_PXP_HWDRM_DEFAULT_SESSION 0xF /* TODO: move to uapi */
+
+bool xe_pxp_is_supported(const struct xe_device *xe);
+
 int xe_pxp_init(struct xe_device *xe);
+void xe_pxp_irq_handler(struct xe_device *xe, u16 iir);
 
 #endif /* __XE_PXP_H__ */
diff --git a/drivers/gpu/drm/xe/xe_pxp_types.h b/drivers/gpu/drm/xe/xe_pxp_types.h
index 0f86b50756cc..311d08111b5f 100644
--- a/drivers/gpu/drm/xe/xe_pxp_types.h
+++ b/drivers/gpu/drm/xe/xe_pxp_types.h
@@ -8,6 +8,7 @@
 
 #include <linux/iosys-map.h>
 #include <linux/types.h>
+#include <linux/workqueue.h>
 
 struct xe_bo;
 struct xe_exec_queue;
@@ -69,6 +70,18 @@ struct xe_pxp {
 
 	/** @gsc_res: kernel-owned objects for PXP submissions to the GSCCS */
 	struct xe_pxp_gsc_client_resources gsc_res;
+
+	/** @irq: wrapper for the worker and queue used for PXP irq support */
+	struct {
+		/** @irq.work: worker that manages irq events. */
+		struct work_struct work;
+		/** @irq.wq: workqueue on which to queue the irq work. */
+		struct workqueue_struct *wq;
+		/** @irq.events: pending events, protected with xe->irq.lock. */
+		u32 events;
+#define PXP_TERMINATION_REQUEST  BIT(0)
+#define PXP_TERMINATION_COMPLETE BIT(1)
+	} irq;
 };
 
 #endif /* __XE_PXP_TYPES_H__ */
-- 
2.43.0


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

* [PATCH v4 06/13] drm/xe/pxp: Add GSC session initialization support
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (4 preceding siblings ...)
  2025-01-06 21:12 ` [PATCH v4 05/13] drm/xe/pxp: Handle the PXP termination interrupt Daniele Ceraolo Spurio
@ 2025-01-06 21:12 ` Daniele Ceraolo Spurio
  2025-01-06 21:12 ` [PATCH v4 07/13] drm/xe/pxp: Add PXP queue tracking and session start Daniele Ceraolo Spurio
                   ` (14 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:12 UTC (permalink / raw)
  To: intel-xe; +Cc: Daniele Ceraolo Spurio, John Harrison

A session is initialized (i.e. started) by sending a message to the GSC.

Note that this patch is meant to be squashed with the follow-up patches
that implement the other pieces of the session initialization and queue
setup flow. It is separate for now for ease of review.

v2: clean up error messages, use new ARB define (John)

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h | 21 +++++++++
 drivers/gpu/drm/xe/xe_pxp_submit.c            | 47 +++++++++++++++++++
 drivers/gpu/drm/xe/xe_pxp_submit.h            |  1 +
 3 files changed, 69 insertions(+)

diff --git a/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h b/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h
index f0da65ccdda2..290e431cf10d 100644
--- a/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h
+++ b/drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h
@@ -51,6 +51,7 @@ struct pxp_cmd_header {
 } __packed;
 
 #define PXP43_CMDID_INVALIDATE_STREAM_KEY 0x00000007
+#define PXP43_CMDID_INIT_SESSION 0x00000036
 #define PXP43_CMDID_NEW_HUC_AUTH 0x0000003F /* MTL+ */
 
 /* PXP-Input-Packet: HUC Auth-only */
@@ -65,6 +66,26 @@ struct pxp43_huc_auth_out {
 	struct pxp_cmd_header header;
 } __packed;
 
+/* PXP-Input-Packet: Init PXP session */
+struct pxp43_create_arb_in {
+	struct pxp_cmd_header header;
+		/* header.stream_id fields for vesion 4.3 of Init PXP session: */
+		#define PXP43_INIT_SESSION_VALID BIT(0)
+		#define PXP43_INIT_SESSION_APPTYPE BIT(1)
+		#define PXP43_INIT_SESSION_APPID GENMASK(17, 2)
+	u32 protection_mode;
+		#define PXP43_INIT_SESSION_PROTECTION_ARB 0x2
+	u32 sub_session_id;
+	u32 init_flags;
+	u32 rsvd[12];
+} __packed;
+
+/* PXP-Input-Packet: Init PXP session */
+struct pxp43_create_arb_out {
+	struct pxp_cmd_header header;
+	u32 rsvd[8];
+} __packed;
+
 /* PXP-Input-Packet: Invalidate Stream Key */
 struct pxp43_inv_stream_key_in {
 	struct pxp_cmd_header header;
diff --git a/drivers/gpu/drm/xe/xe_pxp_submit.c b/drivers/gpu/drm/xe/xe_pxp_submit.c
index f5f6b18c1054..b50fe037c74b 100644
--- a/drivers/gpu/drm/xe/xe_pxp_submit.c
+++ b/drivers/gpu/drm/xe/xe_pxp_submit.c
@@ -16,6 +16,7 @@
 #include "xe_gt.h"
 #include "xe_lrc.h"
 #include "xe_map.h"
+#include "xe_pxp.h"
 #include "xe_pxp_types.h"
 #include "xe_sched_job.h"
 #include "xe_vm.h"
@@ -490,6 +491,52 @@ static int gsccs_send_message(struct xe_pxp_gsc_client_resources *gsc_res,
 	return ret;
 }
 
+/**
+ * xe_pxp_submit_session_init - submits a PXP GSC session initialization
+ * @gsc_res: the pxp client resources
+ * @id: the session to initialize
+ *
+ * Submit a message to the GSC FW to initialize (i.e. start) a PXP session.
+ *
+ * Returns 0 if the submission is successful, an errno value otherwise.
+ */
+int xe_pxp_submit_session_init(struct xe_pxp_gsc_client_resources *gsc_res, u32 id)
+{
+	struct xe_device *xe = gsc_res->vm->xe;
+	struct pxp43_create_arb_in msg_in = {0};
+	struct pxp43_create_arb_out msg_out = {0};
+	int ret;
+
+	msg_in.header.api_version = PXP_APIVER(4, 3);
+	msg_in.header.command_id = PXP43_CMDID_INIT_SESSION;
+	msg_in.header.stream_id = (FIELD_PREP(PXP43_INIT_SESSION_APPID, id) |
+				   FIELD_PREP(PXP43_INIT_SESSION_VALID, 1) |
+				   FIELD_PREP(PXP43_INIT_SESSION_APPTYPE, 0));
+	msg_in.header.buffer_len = sizeof(msg_in) - sizeof(msg_in.header);
+
+	if (id == DRM_XE_PXP_HWDRM_DEFAULT_SESSION)
+		msg_in.protection_mode = PXP43_INIT_SESSION_PROTECTION_ARB;
+
+	ret = gsccs_send_message(gsc_res, &msg_in, sizeof(msg_in),
+				 &msg_out, sizeof(msg_out));
+	if (ret) {
+		drm_err(&xe->drm, "Failed to init PXP session %u (%pe)\n", id, ERR_PTR(ret));
+	} else if (msg_out.header.status != 0) {
+		ret = -EIO;
+
+		if (is_fw_err_platform_config(msg_out.header.status))
+			drm_info_once(&xe->drm,
+				      "Failed to init PXP session %u due to BIOS/SOC, s=0x%x(%s)\n",
+				      id, msg_out.header.status,
+				      fw_err_to_string(msg_out.header.status));
+		else
+			drm_dbg(&xe->drm, "Failed to init PXP session %u, s=0x%x\n",
+				id, msg_out.header.status);
+	}
+
+	return ret;
+}
+
 /**
  * xe_pxp_submit_session_invalidation - submits a PXP GSC invalidation
  * @gsc_res: the pxp client resources
diff --git a/drivers/gpu/drm/xe/xe_pxp_submit.h b/drivers/gpu/drm/xe/xe_pxp_submit.h
index 48fdc9b09116..c9efda02f4b0 100644
--- a/drivers/gpu/drm/xe/xe_pxp_submit.h
+++ b/drivers/gpu/drm/xe/xe_pxp_submit.h
@@ -14,6 +14,7 @@ struct xe_pxp_gsc_client_resources;
 int xe_pxp_allocate_execution_resources(struct xe_pxp *pxp);
 void xe_pxp_destroy_execution_resources(struct xe_pxp *pxp);
 
+int xe_pxp_submit_session_init(struct xe_pxp_gsc_client_resources *gsc_res, u32 id);
 int xe_pxp_submit_session_termination(struct xe_pxp *pxp, u32 id);
 int xe_pxp_submit_session_invalidation(struct xe_pxp_gsc_client_resources *gsc_res,
 				       u32 id);
-- 
2.43.0


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

* [PATCH v4 07/13] drm/xe/pxp: Add PXP queue tracking and session start
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (5 preceding siblings ...)
  2025-01-06 21:12 ` [PATCH v4 06/13] drm/xe/pxp: Add GSC session initialization support Daniele Ceraolo Spurio
@ 2025-01-06 21:12 ` Daniele Ceraolo Spurio
  2025-01-13 22:11   ` John Harrison
  2025-01-06 21:12 ` [PATCH v4 08/13] drm/xe/pxp: Add userspace and LRC support for PXP-using queues Daniele Ceraolo Spurio
                   ` (13 subsequent siblings)
  20 siblings, 1 reply; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:12 UTC (permalink / raw)
  To: intel-xe; +Cc: Daniele Ceraolo Spurio, John Harrison

We expect every queue that uses PXP to be marked as doing so, to allow
the driver to correctly manage the encryption status. The API for doing
this from userspace is coming in the next patch, while this patch
implement the management side of things. When a PXP queue is created,
the driver will do the following:

- Start the default PXP session if it is not already running;
- assign an rpm ref to the queue to keep for its lifetime (this is
  required because PXP HWDRM sessions are killed by the HW suspend flow).

Since PXP start and termination can race each other, this patch also
introduces locking and a state machine to keep track of the pending
operations. Note that since we'll need to take the lock from the
suspend/resume paths as well, we can't do submissions while holding it,
which means we need a slightly more complicated state machine to keep
track of intermediate steps.

v4: new patch in the series, split from the following interface patch to
keep review manageable. Lock and status rework to not do submissions
under lock.

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/xe/xe_exec_queue.c       |   1 +
 drivers/gpu/drm/xe/xe_exec_queue_types.h |   6 +
 drivers/gpu/drm/xe/xe_pxp.c              | 383 ++++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_pxp.h              |   5 +
 drivers/gpu/drm/xe/xe_pxp_types.h        |  30 ++
 5 files changed, 419 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
index 252bfa11cae9..2ec4e2eb6f2a 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue.c
+++ b/drivers/gpu/drm/xe/xe_exec_queue.c
@@ -78,6 +78,7 @@ static struct xe_exec_queue *__xe_exec_queue_alloc(struct xe_device *xe,
 	INIT_LIST_HEAD(&q->lr.link);
 	INIT_LIST_HEAD(&q->multi_gt_link);
 	INIT_LIST_HEAD(&q->hw_engine_group_link);
+	INIT_LIST_HEAD(&q->pxp.link);
 
 	q->sched_props.timeslice_us = hwe->eclass->sched_props.timeslice_us;
 	q->sched_props.preempt_timeout_us =
diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h b/drivers/gpu/drm/xe/xe_exec_queue_types.h
index 5af5419cec7a..6d85a069947f 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
+++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
@@ -130,6 +130,12 @@ struct xe_exec_queue {
 		struct list_head link;
 	} lr;
 
+	/** @pxp: PXP info tracking */
+	struct {
+		/** @pxp.link: link into the list of PXP exec queues */
+		struct list_head link;
+	} pxp;
+
 	/** @ops: submission backend exec queue operations */
 	const struct xe_exec_queue_ops *ops;
 
diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
index 1452a4763ac2..d0471a360d69 100644
--- a/drivers/gpu/drm/xe/xe_pxp.c
+++ b/drivers/gpu/drm/xe/xe_pxp.c
@@ -8,9 +8,13 @@
 #include <drm/drm_managed.h>
 
 #include "xe_device_types.h"
+#include "xe_exec_queue.h"
 #include "xe_force_wake.h"
+#include "xe_guc_submit.h"
+#include "xe_gsc_proxy.h"
 #include "xe_gt.h"
 #include "xe_gt_types.h"
+#include "xe_huc.h"
 #include "xe_mmio.h"
 #include "xe_pm.h"
 #include "xe_pxp_submit.h"
@@ -29,6 +33,15 @@
 
 #define ARB_SESSION DRM_XE_PXP_HWDRM_DEFAULT_SESSION /* shorter define */
 
+/*
+ * A submission to GSC can take up to 250ms to complete, so using a 300ms
+ * timeout for activation where only one of those is involved. Termination
+ * additionally requires a submission to VCS and an interaction with KCR, so
+ * bumping the timeout to 500ms for that.
+ */
+#define PXP_ACTIVATION_TIMEOUT_MS 300
+#define PXP_TERMINATION_TIMEOUT_MS 500
+
 bool xe_pxp_is_supported(const struct xe_device *xe)
 {
 	return xe->info.has_pxp && IS_ENABLED(CONFIG_INTEL_MEI_GSC_PROXY);
@@ -39,6 +52,40 @@ static bool pxp_is_enabled(const struct xe_pxp *pxp)
 	return pxp;
 }
 
+static bool pxp_prerequisites_done(const struct xe_pxp *pxp)
+{
+	struct xe_gt *gt = pxp->gt;
+	unsigned int fw_ref;
+	bool ready;
+
+	fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
+
+	/*
+	 * If force_wake fails we could falsely report the prerequisites as not
+	 * done even if they are; the consequence of this would be that the
+	 * callers won't go ahead with using PXP, but if force_wake doesn't work
+	 * the GT is very likely in a bad state so not really a problem to abort
+	 * PXP. Therefore, we can just log the force_wake error and not escalate
+	 * it.
+	 */
+	XE_WARN_ON(!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL));
+
+	/* PXP requires both HuC authentication via GSC and GSC proxy initialized */
+	ready = xe_huc_is_authenticated(&gt->uc.huc, XE_HUC_AUTH_VIA_GSC) &&
+		xe_gsc_proxy_init_done(&gt->uc.gsc);
+
+	xe_force_wake_put(gt_to_fw(gt), fw_ref);
+
+	return ready;
+}
+
+static bool pxp_session_is_in_play(struct xe_pxp *pxp, u32 id)
+{
+	struct xe_gt *gt = pxp->gt;
+
+	return xe_mmio_read32(&gt->mmio, KCR_SIP) & BIT(id);
+}
+
 static int pxp_wait_for_session_state(struct xe_pxp *pxp, u32 id, bool in_play)
 {
 	struct xe_gt *gt = pxp->gt;
@@ -48,14 +95,15 @@ static int pxp_wait_for_session_state(struct xe_pxp *pxp, u32 id, bool in_play)
 			      250, NULL, false);
 }
 
-static void pxp_terminate(struct xe_pxp *pxp)
+static void pxp_invalidate_queues(struct xe_pxp *pxp);
+
+static int pxp_terminate_hw(struct xe_pxp *pxp)
 {
-	int ret = 0;
-	struct xe_device *xe = pxp->xe;
 	struct xe_gt *gt = pxp->gt;
 	unsigned int fw_ref;
+	int ret = 0;
 
-	drm_dbg(&xe->drm, "Terminating PXP\n");
+	drm_dbg(&pxp->xe->drm, "Terminating PXP\n");
 
 	fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
 	if (!xe_force_wake_ref_has_domain(fw_ref, XE_FW_GT)) {
@@ -80,14 +128,83 @@ static void pxp_terminate(struct xe_pxp *pxp)
 
 out:
 	xe_force_wake_put(gt_to_fw(gt), fw_ref);
+	return ret;
+}
 
-	if (ret)
+static void mark_termination_in_progress(struct xe_pxp *pxp)
+{
+	lockdep_assert_held(&pxp->mutex);
+
+	reinit_completion(&pxp->termination);
+	pxp->status = XE_PXP_TERMINATION_IN_PROGRESS;
+}
+
+static void pxp_terminate(struct xe_pxp *pxp)
+{
+	int ret = 0;
+	struct xe_device *xe = pxp->xe;
+
+	if (!wait_for_completion_timeout(&pxp->activation,
+					 msecs_to_jiffies(PXP_ACTIVATION_TIMEOUT_MS)))
+		drm_err(&xe->drm, "failed to wait for PXP start before termination\n");
+
+	mutex_lock(&pxp->mutex);
+
+	pxp_invalidate_queues(pxp);
+
+	/*
+	 * If we have a termination already in progress, we need to wait for
+	 * it to complete before queueing another one. Once the first
+	 * termination is completed we'll set the state back to
+	 * NEEDS_TERMINATION and leave it to the pxp start code to issue it.
+	 */
+	if (pxp->status == XE_PXP_TERMINATION_IN_PROGRESS) {
+		pxp->status = XE_PXP_NEEDS_ADDITIONAL_TERMINATION;
+		mutex_unlock(&pxp->mutex);
+		return;
+	}
+
+	mark_termination_in_progress(pxp);
+
+	mutex_unlock(&pxp->mutex);
+
+	ret = pxp_terminate_hw(pxp);
+	if (ret) {
 		drm_err(&xe->drm, "PXP termination failed: %pe\n", ERR_PTR(ret));
+		mutex_lock(&pxp->mutex);
+		pxp->status = XE_PXP_ERROR;
+		complete_all(&pxp->termination);
+		mutex_unlock(&pxp->mutex);
+	}
 }
 
 static void pxp_terminate_complete(struct xe_pxp *pxp)
 {
-	/* TODO mark the session as ready to start */
+	/*
+	 * We expect PXP to be in one of 2 states when we get here:
+	 * - XE_PXP_TERMINATION_IN_PROGRESS: a single termination event was
+	 * requested and it is now completing, so we're ready to start.
+	 * - XE_PXP_NEEDS_ADDITIONAL_TERMINATION: a second termination was
+	 * requested while the first one was still being processed.
+	 */
+	mutex_lock(&pxp->mutex);
+
+	switch(pxp->status) {
+	case XE_PXP_TERMINATION_IN_PROGRESS:
+		pxp->status = XE_PXP_READY_TO_START;
+		break;
+	case XE_PXP_NEEDS_ADDITIONAL_TERMINATION:
+		pxp->status = XE_PXP_NEEDS_TERMINATION;
+		break;
+	default:
+		drm_err(&pxp->xe->drm,
+			"PXP termination complete while status was %u\n",
+			pxp->status);
+	}
+
+	complete_all(&pxp->termination);
+
+	mutex_unlock(&pxp->mutex);
 }
 
 static void pxp_irq_work(struct work_struct *work)
@@ -229,10 +346,24 @@ int xe_pxp_init(struct xe_device *xe)
 	if (!pxp)
 		return -ENOMEM;
 
+	INIT_LIST_HEAD(&pxp->queues.list);
+	spin_lock_init(&pxp->queues.lock);
 	INIT_WORK(&pxp->irq.work, pxp_irq_work);
 	pxp->xe = xe;
 	pxp->gt = gt;
 
+	/*
+	 * we'll use the completions to check if there is an action pending,
+	 * so we start them as completed and we reinit it when an action is
+	 * triggered.
+	 */
+	init_completion(&pxp->activation);
+	init_completion(&pxp->termination);
+	complete_all(&pxp->termination);
+	complete_all(&pxp->activation);
+
+	mutex_init(&pxp->mutex);
+
 	pxp->irq.wq = alloc_ordered_workqueue("pxp-wq", 0);
 	if (!pxp->irq.wq) {
 		err = -ENOMEM;
@@ -259,3 +390,243 @@ int xe_pxp_init(struct xe_device *xe)
 	drmm_kfree(&xe->drm, pxp);
 	return err;
 }
+
+static int __pxp_start_arb_session(struct xe_pxp *pxp)
+{
+	int ret;
+	unsigned int fw_ref;
+
+	fw_ref = xe_force_wake_get(gt_to_fw(pxp->gt), XE_FW_GT);
+	if (!xe_force_wake_ref_has_domain(fw_ref, XE_FW_GT))
+		return -EIO;
+
+	if (pxp_session_is_in_play(pxp, ARB_SESSION)) {
+		ret = -EEXIST;
+		goto out_force_wake;
+	}
+
+	ret = xe_pxp_submit_session_init(&pxp->gsc_res, ARB_SESSION);
+	if (ret) {
+		drm_err(&pxp->xe->drm, "Failed to init PXP arb session\n");
+		goto out_force_wake;
+	}
+
+	ret = pxp_wait_for_session_state(pxp, ARB_SESSION, true);
+	if (ret) {
+		drm_err(&pxp->xe->drm, "PXP ARB session failed to go in play\n");
+		goto out_force_wake;
+	}
+
+	drm_dbg(&pxp->xe->drm, "PXP ARB session is active\n");
+
+out_force_wake:
+	xe_force_wake_put(gt_to_fw(pxp->gt), fw_ref);
+	return ret;
+}
+
+static void __exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q)
+{
+	spin_lock_irq(&pxp->queues.lock);
+	list_add_tail(&q->pxp.link, &pxp->queues.list);
+	spin_unlock_irq(&pxp->queues.lock);
+}
+
+/**
+ * xe_pxp_exec_queue_add - add a queue to the PXP list
+ * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
+ * @q: the queue to add to the list
+ *
+ * If PXP is enabled and the prerequisites are done, start the PXP ARB
+ * session (if not already running) and add the queue to the PXP list. Note
+ * that the queue must have previously been marked as using PXP with
+ * xe_pxp_exec_queue_set_type.
+ *
+ * Returns 0 if the PXP ARB session is running and the queue is in the list,
+ * -ENODEV if PXP is disabled, -EBUSY if the PXP prerequisites are not done,
+ * other errno value if something goes wrong during the session start.
+ */
+int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q)
+{
+	int ret = 0;
+
+	if (!pxp_is_enabled(pxp))
+		return -ENODEV;
+
+	/*
+	 * Runtime suspend kills PXP, so we need to turn it off while we have
+	 * active queues that use PXP
+	 */
+	xe_pm_runtime_get(pxp->xe);
+
+	if (!pxp_prerequisites_done(pxp)) {
+		ret = -EBUSY;
+		goto out;
+	}
+
+wait_for_idle:
+	/*
+	 * if there is an action in progress, wait for it. We need to wait
+	 * outside the lock because the completion is done from within the lock.
+	 * Note that the two action should never be pending at the same time.
+	 */
+	if (!wait_for_completion_timeout(&pxp->termination,
+					 msecs_to_jiffies(PXP_TERMINATION_TIMEOUT_MS))) {
+		ret = -ETIMEDOUT;
+		goto out;
+	}
+
+	if (!wait_for_completion_timeout(&pxp->activation,
+					 msecs_to_jiffies(PXP_ACTIVATION_TIMEOUT_MS))) {
+		ret = -ETIMEDOUT;
+		goto out;
+	}
+
+	mutex_lock(&pxp->mutex);
+
+	/* If PXP is not already active, turn it on */
+	switch (pxp->status) {
+	case XE_PXP_ERROR:
+		ret = -EIO;
+		break;
+	case XE_PXP_ACTIVE:
+		__exec_queue_add(pxp, q);
+		mutex_unlock(&pxp->mutex);
+		goto out;
+	case XE_PXP_READY_TO_START:
+		pxp->status = XE_PXP_START_IN_PROGRESS;
+		reinit_completion(&pxp->activation);
+		break;
+	case XE_PXP_START_IN_PROGRESS:
+		/* If a start is in progress then the completion must not be done */
+		XE_WARN_ON(completion_done(&pxp->activation));
+		mutex_unlock(&pxp->mutex);
+		goto wait_for_idle;
+	case XE_PXP_NEEDS_TERMINATION:
+		mark_termination_in_progress(pxp);
+		break;
+	case XE_PXP_TERMINATION_IN_PROGRESS:
+	case XE_PXP_NEEDS_ADDITIONAL_TERMINATION:
+		/* If a termination is in progress then the completion must not be done */
+		XE_WARN_ON(completion_done(&pxp->termination));
+		mutex_unlock(&pxp->mutex);
+		goto wait_for_idle;
+	default:
+		drm_err(&pxp->xe->drm, "unexpected state during PXP start: %u\n", pxp->status);
+		ret = -EIO;
+		break;
+	}
+
+	mutex_unlock(&pxp->mutex);
+
+	if (ret)
+		goto out;
+
+	if (!completion_done(&pxp->termination)) {
+		ret = pxp_terminate_hw(pxp);
+		if (ret) {
+			drm_err(&pxp->xe->drm, "PXP termiantion failed before start\n");
+			mutex_lock(&pxp->mutex);
+			pxp->status = XE_PXP_ERROR;
+			mutex_unlock(&pxp->mutex);
+
+			goto out;
+		}
+
+		goto wait_for_idle;
+	}
+
+	/* All the cases except for start should have exited earlier */
+	XE_WARN_ON(completion_done(&pxp->activation));
+	ret = __pxp_start_arb_session(pxp);
+
+	mutex_lock(&pxp->mutex);
+
+	complete_all(&pxp->activation);
+
+	/*
+	 * Any other process should wait until the state goes away from
+	 * XE_PXP_START_IN_PROGRESS, so if the state is not that something went
+	 * wrong. Mark the status as needing termination and try again.
+	 */
+	if (pxp->status != XE_PXP_START_IN_PROGRESS) {
+		drm_err(&pxp->xe->drm, "unexpected state after PXP start: %u\n", pxp->status);
+		pxp->status = XE_PXP_NEEDS_TERMINATION;
+		mutex_unlock(&pxp->mutex);
+		goto wait_for_idle;
+	}
+
+	/* If everything went ok, update the status and add the queue to the list */
+	if (!ret) {
+		pxp->status = XE_PXP_ACTIVE;
+		__exec_queue_add(pxp, q);
+	} else {
+		pxp->status = XE_PXP_ERROR;
+	}
+
+	mutex_unlock(&pxp->mutex);
+
+out:
+	/*
+	 * in the successful case the PM ref is released from
+	 * xe_pxp_exec_queue_remove
+	 */
+	if (ret)
+		xe_pm_runtime_put(pxp->xe);
+
+	return ret;
+}
+
+/**
+ * xe_pxp_exec_queue_remove - remove a queue from the PXP list
+ * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
+ * @q: the queue to remove from the list
+ *
+ * If PXP is enabled and the exec_queue is in the list, the queue will be
+ * removed from the list and its PM reference will be released. It is safe to
+ * call this function multiple times for the same queue.
+ */
+void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q)
+{
+	bool need_pm_put = false;
+
+	if (!pxp_is_enabled(pxp))
+		return;
+
+	spin_lock_irq(&pxp->queues.lock);
+
+	if (!list_empty(&q->pxp.link)) {
+		list_del_init(&q->pxp.link);
+		need_pm_put = true;
+	}
+
+	spin_unlock_irq(&pxp->queues.lock);
+
+	if (need_pm_put)
+		xe_pm_runtime_put(pxp->xe);
+}
+
+static void pxp_invalidate_queues(struct xe_pxp *pxp)
+{
+	struct xe_exec_queue *tmp, *q;
+
+	spin_lock_irq(&pxp->queues.lock);
+
+	/*
+	 * Removing a queue from the PXP list requires a put of the RPM ref that
+	 * the queue holds to keep the PXP session alive, which can't be done
+	 * under spinlock. Since it is safe to kill a queue multiple times, we
+	 * can leave the invalid queue in the list for now and postpone the
+	 * removal and associated RPM put to when the queue is destroyed.
+	 */
+	list_for_each_entry(tmp, &pxp->queues.list, pxp.link) {
+		q = xe_exec_queue_get_unless_zero(tmp);
+
+		if (!q)
+			continue;
+
+		xe_exec_queue_kill(q);
+		xe_exec_queue_put(q);
+	}
+
+	spin_unlock_irq(&pxp->queues.lock);
+}
diff --git a/drivers/gpu/drm/xe/xe_pxp.h b/drivers/gpu/drm/xe/xe_pxp.h
index 39435c644dcd..f482567c27b5 100644
--- a/drivers/gpu/drm/xe/xe_pxp.h
+++ b/drivers/gpu/drm/xe/xe_pxp.h
@@ -9,6 +9,8 @@
 #include <linux/types.h>
 
 struct xe_device;
+struct xe_exec_queue;
+struct xe_pxp;
 
 #define DRM_XE_PXP_HWDRM_DEFAULT_SESSION 0xF /* TODO: move to uapi */
 
@@ -17,4 +19,7 @@ bool xe_pxp_is_supported(const struct xe_device *xe);
 int xe_pxp_init(struct xe_device *xe);
 void xe_pxp_irq_handler(struct xe_device *xe, u16 iir);
 
+int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q);
+void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q);
+
 #endif /* __XE_PXP_H__ */
diff --git a/drivers/gpu/drm/xe/xe_pxp_types.h b/drivers/gpu/drm/xe/xe_pxp_types.h
index 311d08111b5f..bd741720f67d 100644
--- a/drivers/gpu/drm/xe/xe_pxp_types.h
+++ b/drivers/gpu/drm/xe/xe_pxp_types.h
@@ -6,7 +6,10 @@
 #ifndef __XE_PXP_TYPES_H__
 #define __XE_PXP_TYPES_H__
 
+#include <linux/completion.h>
 #include <linux/iosys-map.h>
+#include <linux/mutex.h>
+#include <linux/spinlock.h>
 #include <linux/types.h>
 #include <linux/workqueue.h>
 
@@ -16,6 +19,16 @@ struct xe_device;
 struct xe_gt;
 struct xe_vm;
 
+enum xe_pxp_status {
+	XE_PXP_ERROR = -1,
+	XE_PXP_NEEDS_TERMINATION = 0, /* starting status */
+	XE_PXP_NEEDS_ADDITIONAL_TERMINATION,
+	XE_PXP_TERMINATION_IN_PROGRESS,
+	XE_PXP_READY_TO_START,
+	XE_PXP_START_IN_PROGRESS,
+	XE_PXP_ACTIVE,
+};
+
 /**
  * struct xe_pxp_gsc_client_resources - resources for GSC submission by a PXP
  * client. The GSC FW supports multiple GSC client active at the same time.
@@ -82,6 +95,23 @@ struct xe_pxp {
 #define PXP_TERMINATION_REQUEST  BIT(0)
 #define PXP_TERMINATION_COMPLETE BIT(1)
 	} irq;
+
+	/** @mutex: protects the pxp status and the queue list */
+	struct mutex mutex;
+	/** @status: the current pxp status */
+	enum xe_pxp_status status;
+	/** @activation: completion struct that tracks pxp start */
+	struct completion activation;
+	/** @termination: completion struct that tracks terminations */
+	struct completion termination;
+
+	/** @queues: management of exec_queues that use PXP */
+	struct {
+		/** @queues.lock: spinlock protecting the queue management */
+		spinlock_t lock;
+		/** @queues.list: list of exec_queues that use PXP */
+		struct list_head list;
+	} queues;
 };
 
 #endif /* __XE_PXP_TYPES_H__ */
-- 
2.43.0


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

* [PATCH v4 08/13] drm/xe/pxp: Add userspace and LRC support for PXP-using queues
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (6 preceding siblings ...)
  2025-01-06 21:12 ` [PATCH v4 07/13] drm/xe/pxp: Add PXP queue tracking and session start Daniele Ceraolo Spurio
@ 2025-01-06 21:12 ` Daniele Ceraolo Spurio
  2025-01-06 21:18   ` Dixit, Ashutosh
  2025-01-13 22:34   ` John Harrison
  2025-01-06 21:12 ` [PATCH v4 09/13] drm/xe/pxp: Add a query for PXP status Daniele Ceraolo Spurio
                   ` (12 subsequent siblings)
  20 siblings, 2 replies; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:12 UTC (permalink / raw)
  To: intel-xe; +Cc: Daniele Ceraolo Spurio, John Harrison

Userspace is required to mark a queue as using PXP to guarantee that the
PXP instructions will work. In addition to managing the PXP sessions,
when a PXP queue is created the driver will set the relevant bits in
its context control register.

On submission of a valid PXP queue, the driver will validate all
encrypted objects mapped to the VM to ensured they were encrypted with
the current key.

v2: Remove pxp_types include outside of PXP code (Jani), better comments
and code cleanup (John)

v3: split the internal PXP management to a separate patch for ease of
review. re-order ioctl checks to always return -EINVAL if parameters are
invalid, rebase on msix changes.

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/xe/regs/xe_engine_regs.h |  1 +
 drivers/gpu/drm/xe/xe_exec_queue.c       | 56 +++++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_exec_queue.h       |  5 +++
 drivers/gpu/drm/xe/xe_exec_queue_types.h |  2 +
 drivers/gpu/drm/xe/xe_execlist.c         |  2 +-
 drivers/gpu/drm/xe/xe_lrc.c              | 18 ++++++--
 drivers/gpu/drm/xe/xe_lrc.h              |  4 +-
 drivers/gpu/drm/xe/xe_pxp.c              | 35 +++++++++++++--
 drivers/gpu/drm/xe/xe_pxp.h              |  4 +-
 include/uapi/drm/xe_drm.h                | 40 ++++++++++++++++-
 10 files changed, 153 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/xe/regs/xe_engine_regs.h b/drivers/gpu/drm/xe/regs/xe_engine_regs.h
index d86219dedde2..c8fd3d5ca502 100644
--- a/drivers/gpu/drm/xe/regs/xe_engine_regs.h
+++ b/drivers/gpu/drm/xe/regs/xe_engine_regs.h
@@ -132,6 +132,7 @@
 #define RING_EXECLIST_STATUS_HI(base)		XE_REG((base) + 0x234 + 4)
 
 #define RING_CONTEXT_CONTROL(base)		XE_REG((base) + 0x244, XE_REG_OPTION_MASKED)
+#define	  CTX_CTRL_PXP_ENABLE			REG_BIT(10)
 #define	  CTX_CTRL_OAC_CONTEXT_ENABLE		REG_BIT(8)
 #define	  CTX_CTRL_RUN_ALONE			REG_BIT(7)
 #define	  CTX_CTRL_INDIRECT_RING_STATE_ENABLE	REG_BIT(4)
diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
index 2ec4e2eb6f2a..6051db78d706 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue.c
+++ b/drivers/gpu/drm/xe/xe_exec_queue.c
@@ -25,6 +25,7 @@
 #include "xe_ring_ops_types.h"
 #include "xe_trace.h"
 #include "xe_vm.h"
+#include "xe_pxp.h"
 
 enum xe_exec_queue_sched_prop {
 	XE_EXEC_QUEUE_JOB_TIMEOUT = 0,
@@ -38,6 +39,8 @@ static int exec_queue_user_extensions(struct xe_device *xe, struct xe_exec_queue
 
 static void __xe_exec_queue_free(struct xe_exec_queue *q)
 {
+	if (xe_exec_queue_uses_pxp(q))
+		xe_pxp_exec_queue_remove(gt_to_xe(q->gt)->pxp, q);
 	if (q->vm)
 		xe_vm_put(q->vm);
 
@@ -113,6 +116,21 @@ static int __xe_exec_queue_init(struct xe_exec_queue *q)
 {
 	struct xe_vm *vm = q->vm;
 	int i, err;
+	u32 flags = 0;
+
+	/*
+	 * PXP workloads executing on RCS or CCS must run in isolation (i.e. no
+	 * other workload can use the EUs at the same time). On MTL this is done
+	 * by setting the RUNALONE bit in the LRC, while starting on Xe2 there
+	 * is a dedicated bit for it.
+	 */
+	if (xe_exec_queue_uses_pxp(q) &&
+	    (q->class == XE_ENGINE_CLASS_RENDER || q->class == XE_ENGINE_CLASS_COMPUTE)) {
+		if (GRAPHICS_VER(gt_to_xe(q->gt)) >= 20)
+			flags |= XE_LRC_CREATE_PXP;
+		else
+			flags |= XE_LRC_CREATE_RUNALONE;
+	}
 
 	if (vm) {
 		err = xe_vm_lock(vm, true);
@@ -121,7 +139,7 @@ static int __xe_exec_queue_init(struct xe_exec_queue *q)
 	}
 
 	for (i = 0; i < q->width; ++i) {
-		q->lrc[i] = xe_lrc_create(q->hwe, q->vm, SZ_16K, q->msix_vec);
+		q->lrc[i] = xe_lrc_create(q->hwe, q->vm, SZ_16K, q->msix_vec, flags);
 		if (IS_ERR(q->lrc[i])) {
 			err = PTR_ERR(q->lrc[i]);
 			goto err_unlock;
@@ -166,6 +184,19 @@ struct xe_exec_queue *xe_exec_queue_create(struct xe_device *xe, struct xe_vm *v
 	if (err)
 		goto err_post_alloc;
 
+	/*
+	 * We can only add the queue to the PXP list after the init is complete,
+	 * because the PXP termination can call exec_queue_kill and that will
+	 * go bad if the queue is only half-initialized. This means that we
+	 * can't do it when we handle the PXP extension in __xe_exec_queue_alloc
+	 * and we need to do it here instead.
+	 */
+	if (xe_exec_queue_uses_pxp(q)) {
+		err = xe_pxp_exec_queue_add(xe->pxp, q);
+		if (err)
+			goto err_post_alloc;
+	}
+
 	return q;
 
 err_post_alloc:
@@ -254,6 +285,9 @@ void xe_exec_queue_destroy(struct kref *ref)
 	struct xe_exec_queue *q = container_of(ref, struct xe_exec_queue, refcount);
 	struct xe_exec_queue *eq, *next;
 
+	if (xe_exec_queue_uses_pxp(q))
+		xe_pxp_exec_queue_remove(gt_to_xe(q->gt)->pxp, q);
+
 	xe_exec_queue_last_fence_put_unlocked(q);
 	if (!(q->flags & EXEC_QUEUE_FLAG_BIND_ENGINE_CHILD)) {
 		list_for_each_entry_safe(eq, next, &q->multi_gt_list,
@@ -409,6 +443,22 @@ static int exec_queue_set_timeslice(struct xe_device *xe, struct xe_exec_queue *
 	return 0;
 }
 
+static int
+exec_queue_set_pxp_type(struct xe_device *xe, struct xe_exec_queue *q, u64 value)
+{
+	if (value == DRM_XE_PXP_TYPE_NONE)
+		return 0;
+
+	/* we only support HWDRM sessions right now */
+	if (XE_IOCTL_DBG(xe, value != DRM_XE_PXP_TYPE_HWDRM))
+		return -EINVAL;
+
+	if (!xe_pxp_is_enabled(xe->pxp))
+		return -ENODEV;
+
+	return xe_pxp_exec_queue_set_type(xe->pxp, q, DRM_XE_PXP_TYPE_HWDRM);
+}
+
 typedef int (*xe_exec_queue_set_property_fn)(struct xe_device *xe,
 					     struct xe_exec_queue *q,
 					     u64 value);
@@ -416,6 +466,7 @@ typedef int (*xe_exec_queue_set_property_fn)(struct xe_device *xe,
 static const xe_exec_queue_set_property_fn exec_queue_set_property_funcs[] = {
 	[DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY] = exec_queue_set_priority,
 	[DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE] = exec_queue_set_timeslice,
+	[DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE] = exec_queue_set_pxp_type,
 };
 
 static int exec_queue_user_ext_set_property(struct xe_device *xe,
@@ -435,7 +486,8 @@ static int exec_queue_user_ext_set_property(struct xe_device *xe,
 			 ARRAY_SIZE(exec_queue_set_property_funcs)) ||
 	    XE_IOCTL_DBG(xe, ext.pad) ||
 	    XE_IOCTL_DBG(xe, ext.property != DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY &&
-			 ext.property != DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE))
+			 ext.property != DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE &&
+			 ext.property != DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE))
 		return -EINVAL;
 
 	idx = array_index_nospec(ext.property, ARRAY_SIZE(exec_queue_set_property_funcs));
diff --git a/drivers/gpu/drm/xe/xe_exec_queue.h b/drivers/gpu/drm/xe/xe_exec_queue.h
index 90c7f73eab88..17bc50a7f05a 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue.h
+++ b/drivers/gpu/drm/xe/xe_exec_queue.h
@@ -57,6 +57,11 @@ static inline bool xe_exec_queue_is_parallel(struct xe_exec_queue *q)
 	return q->width > 1;
 }
 
+static inline bool xe_exec_queue_uses_pxp(struct xe_exec_queue *q)
+{
+	return q->pxp.type;
+}
+
 bool xe_exec_queue_is_lr(struct xe_exec_queue *q);
 
 bool xe_exec_queue_ring_full(struct xe_exec_queue *q);
diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h b/drivers/gpu/drm/xe/xe_exec_queue_types.h
index 6d85a069947f..6eb7ff091534 100644
--- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
+++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
@@ -132,6 +132,8 @@ struct xe_exec_queue {
 
 	/** @pxp: PXP info tracking */
 	struct {
+		/** @pxp.type: PXP session type used by this queue */
+		u8 type;
 		/** @pxp.link: link into the list of PXP exec queues */
 		struct list_head link;
 	} pxp;
diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c
index 5ef96deaa881..779a52daf3d7 100644
--- a/drivers/gpu/drm/xe/xe_execlist.c
+++ b/drivers/gpu/drm/xe/xe_execlist.c
@@ -269,7 +269,7 @@ struct xe_execlist_port *xe_execlist_port_create(struct xe_device *xe,
 
 	port->hwe = hwe;
 
-	port->lrc = xe_lrc_create(hwe, NULL, SZ_16K, XE_IRQ_DEFAULT_MSIX);
+	port->lrc = xe_lrc_create(hwe, NULL, SZ_16K, XE_IRQ_DEFAULT_MSIX, 0);
 	if (IS_ERR(port->lrc)) {
 		err = PTR_ERR(port->lrc);
 		goto err;
diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
index bbb9ffbf6367..df3ceddede07 100644
--- a/drivers/gpu/drm/xe/xe_lrc.c
+++ b/drivers/gpu/drm/xe/xe_lrc.c
@@ -883,7 +883,8 @@ static void xe_lrc_finish(struct xe_lrc *lrc)
 #define PVC_CTX_ACC_CTR_THOLD	(0x2a + 1)
 
 static int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
-		       struct xe_vm *vm, u32 ring_size, u16 msix_vec)
+		       struct xe_vm *vm, u32 ring_size, u16 msix_vec,
+		       u32 init_flags)
 {
 	struct xe_gt *gt = hwe->gt;
 	struct xe_tile *tile = gt_to_tile(gt);
@@ -979,6 +980,16 @@ static int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
 				     RING_CTL_SIZE(lrc->ring.size) | RING_VALID);
 	}
 
+	if (init_flags & XE_LRC_CREATE_RUNALONE)
+		xe_lrc_write_ctx_reg(lrc, CTX_CONTEXT_CONTROL,
+				     xe_lrc_read_ctx_reg(lrc, CTX_CONTEXT_CONTROL) |
+				     _MASKED_BIT_ENABLE(CTX_CTRL_RUN_ALONE));
+
+	if (init_flags & XE_LRC_CREATE_PXP)
+		xe_lrc_write_ctx_reg(lrc, CTX_CONTEXT_CONTROL,
+				     xe_lrc_read_ctx_reg(lrc, CTX_CONTEXT_CONTROL) |
+				     _MASKED_BIT_ENABLE(CTX_CTRL_PXP_ENABLE));
+
 	xe_lrc_write_ctx_reg(lrc, CTX_TIMESTAMP, 0);
 
 	if (xe->info.has_asid && vm)
@@ -1021,6 +1032,7 @@ static int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
  * @vm: The VM (address space)
  * @ring_size: LRC ring size
  * @msix_vec: MSI-X interrupt vector (for platforms that support it)
+ * @flags: LRC initialization flags
  *
  * Allocate and initialize the Logical Ring Context (LRC).
  *
@@ -1028,7 +1040,7 @@ static int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
  * upon failure.
  */
 struct xe_lrc *xe_lrc_create(struct xe_hw_engine *hwe, struct xe_vm *vm,
-			     u32 ring_size, u16 msix_vec)
+			     u32 ring_size, u16 msix_vec, u32 flags)
 {
 	struct xe_lrc *lrc;
 	int err;
@@ -1037,7 +1049,7 @@ struct xe_lrc *xe_lrc_create(struct xe_hw_engine *hwe, struct xe_vm *vm,
 	if (!lrc)
 		return ERR_PTR(-ENOMEM);
 
-	err = xe_lrc_init(lrc, hwe, vm, ring_size, msix_vec);
+	err = xe_lrc_init(lrc, hwe, vm, ring_size, msix_vec, flags);
 	if (err) {
 		kfree(lrc);
 		return ERR_PTR(err);
diff --git a/drivers/gpu/drm/xe/xe_lrc.h b/drivers/gpu/drm/xe/xe_lrc.h
index b27e80cd842a..0b40f349ab95 100644
--- a/drivers/gpu/drm/xe/xe_lrc.h
+++ b/drivers/gpu/drm/xe/xe_lrc.h
@@ -42,8 +42,10 @@ struct xe_lrc_snapshot {
 #define LRC_PPHWSP_FLUSH_INVAL_SCRATCH_ADDR (0x34 * 4)
 #define LRC_PPHWSP_PXP_INVAL_SCRATCH_ADDR (0x40 * 4)
 
+#define XE_LRC_CREATE_RUNALONE 0x1
+#define XE_LRC_CREATE_PXP 0x2
 struct xe_lrc *xe_lrc_create(struct xe_hw_engine *hwe, struct xe_vm *vm,
-			     u32 ring_size, u16 msix_vec);
+			     u32 ring_size, u16 msix_vec, u32 flags);
 void xe_lrc_destroy(struct kref *ref);
 
 /**
diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
index d0471a360d69..05ed2e71be63 100644
--- a/drivers/gpu/drm/xe/xe_pxp.c
+++ b/drivers/gpu/drm/xe/xe_pxp.c
@@ -6,6 +6,7 @@
 #include "xe_pxp.h"
 
 #include <drm/drm_managed.h>
+#include <uapi/drm/xe_drm.h>
 
 #include "xe_device_types.h"
 #include "xe_exec_queue.h"
@@ -47,7 +48,7 @@ bool xe_pxp_is_supported(const struct xe_device *xe)
 	return xe->info.has_pxp && IS_ENABLED(CONFIG_INTEL_MEI_GSC_PROXY);
 }
 
-static bool pxp_is_enabled(const struct xe_pxp *pxp)
+bool xe_pxp_is_enabled(const struct xe_pxp *pxp)
 {
 	return pxp;
 }
@@ -249,7 +250,7 @@ void xe_pxp_irq_handler(struct xe_device *xe, u16 iir)
 {
 	struct xe_pxp *pxp = xe->pxp;
 
-	if (!pxp_is_enabled(pxp)) {
+	if (!xe_pxp_is_enabled(pxp)) {
 		drm_err(&xe->drm, "PXP irq 0x%x received with PXP disabled!\n", iir);
 		return;
 	}
@@ -424,6 +425,27 @@ static int __pxp_start_arb_session(struct xe_pxp *pxp)
 	return ret;
 }
 
+/**
+ * xe_pxp_exec_queue_set_type - Mark a queue as using PXP
+ * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
+ * @q: the queue to mark as using PXP
+ * @type: the type of PXP session this queue will use
+ *
+ * Returns 0 if the selected PXP type is supported, -ENODEV otherwise.
+ */
+int xe_pxp_exec_queue_set_type(struct xe_pxp *pxp, struct xe_exec_queue *q, u8 type)
+{
+	if (!xe_pxp_is_enabled(pxp))
+		return -ENODEV;
+
+	/* we only support HWDRM sessions right now */
+	xe_assert(pxp->xe, type == DRM_XE_PXP_TYPE_HWDRM);
+
+	q->pxp.type = type;
+
+	return 0;
+}
+
 static void __exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q)
 {
 	spin_lock_irq(&pxp->queues.lock);
@@ -449,9 +471,12 @@ int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q)
 {
 	int ret = 0;
 
-	if (!pxp_is_enabled(pxp))
+	if (!xe_pxp_is_enabled(pxp))
 		return -ENODEV;
 
+	/* we only support HWDRM sessions right now */
+	xe_assert(pxp->xe, q->pxp.type == DRM_XE_PXP_TYPE_HWDRM);
+
 	/*
 	 * Runtime suspend kills PXP, so we need to turn it off while we have
 	 * active queues that use PXP
@@ -589,7 +614,7 @@ void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q)
 {
 	bool need_pm_put = false;
 
-	if (!pxp_is_enabled(pxp))
+	if (!xe_pxp_is_enabled(pxp))
 		return;
 
 	spin_lock_irq(&pxp->queues.lock);
@@ -599,6 +624,8 @@ void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q)
 		need_pm_put = true;
 	}
 
+	q->pxp.type = DRM_XE_PXP_TYPE_NONE;
+
 	spin_unlock_irq(&pxp->queues.lock);
 
 	if (need_pm_put)
diff --git a/drivers/gpu/drm/xe/xe_pxp.h b/drivers/gpu/drm/xe/xe_pxp.h
index f482567c27b5..2e0ab186072a 100644
--- a/drivers/gpu/drm/xe/xe_pxp.h
+++ b/drivers/gpu/drm/xe/xe_pxp.h
@@ -12,13 +12,13 @@ struct xe_device;
 struct xe_exec_queue;
 struct xe_pxp;
 
-#define DRM_XE_PXP_HWDRM_DEFAULT_SESSION 0xF /* TODO: move to uapi */
-
 bool xe_pxp_is_supported(const struct xe_device *xe);
+bool xe_pxp_is_enabled(const struct xe_pxp *pxp);
 
 int xe_pxp_init(struct xe_device *xe);
 void xe_pxp_irq_handler(struct xe_device *xe, u16 iir);
 
+int xe_pxp_exec_queue_set_type(struct xe_pxp *pxp, struct xe_exec_queue *q, u8 type);
 int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q);
 void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q);
 
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index f62689ca861a..5c97a758266d 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -1087,6 +1087,24 @@ struct drm_xe_vm_bind {
 /**
  * struct drm_xe_exec_queue_create - Input of &DRM_IOCTL_XE_EXEC_QUEUE_CREATE
  *
+ * This ioctl supports setting the following properties via the
+ * %DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY extension, which uses the
+ * generic @drm_xe_ext_set_property struct:
+ *
+ *  - %DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY - set the queue priority.
+ *    CAP_SYS_NICE is required to set a value above normal.
+ *  - %DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE - set the queue timeslice
+ *    duration in microseconds.
+ *  - %DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE - set the type of PXP session
+ *    this queue will be used with. Valid values are listed in enum
+ *    drm_xe_pxp_session_type. %DRM_XE_PXP_TYPE_NONE is the default behavior, so
+ *    there is no need to explicitly set that. When a queue of type
+ *    %DRM_XE_PXP_TYPE_HWDRM is created, the PXP default HWDRM session
+ *    (%XE_PXP_HWDRM_DEFAULT_SESSION) will be started, if isn't already running.
+ *    Given that going into a power-saving state kills PXP HWDRM sessions,
+ *    runtime PM will be blocked while queues of this type are alive.
+ *    All PXP queues will be killed if a PXP invalidation event occurs.
+ *
  * The example below shows how to use @drm_xe_exec_queue_create to create
  * a simple exec_queue (no parallel submission) of class
  * &DRM_XE_ENGINE_CLASS_RENDER.
@@ -1110,7 +1128,7 @@ struct drm_xe_exec_queue_create {
 #define DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY		0
 #define   DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY		0
 #define   DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE		1
-
+#define   DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE		2
 	/** @extensions: Pointer to the first extension struct, if any */
 	__u64 extensions;
 
@@ -1729,6 +1747,26 @@ struct drm_xe_oa_stream_info {
 	__u64 reserved[3];
 };
 
+/**
+ * enum drm_xe_pxp_session_type - Supported PXP session types.
+ *
+ * We currently only support HWDRM sessions, which are used for protected
+ * content that ends up being displayed, but the HW supports multiple types, so
+ * we might extend support in the future.
+ */
+enum drm_xe_pxp_session_type {
+	/** @DRM_XE_PXP_TYPE_NONE: PXP not used */
+	DRM_XE_PXP_TYPE_NONE = 0,
+	/**
+	 * @DRM_XE_PXP_TYPE_HWDRM: HWDRM sessions are used for content that ends
+	 * up on the display.
+	 */
+	DRM_XE_PXP_TYPE_HWDRM = 1,
+};
+
+/* ID of the protected content session managed by Xe when PXP is active */
+#define DRM_XE_PXP_HWDRM_DEFAULT_SESSION 0xf
+
 #if defined(__cplusplus)
 }
 #endif
-- 
2.43.0


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

* [PATCH v4 09/13] drm/xe/pxp: Add a query for PXP status
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (7 preceding siblings ...)
  2025-01-06 21:12 ` [PATCH v4 08/13] drm/xe/pxp: Add userspace and LRC support for PXP-using queues Daniele Ceraolo Spurio
@ 2025-01-06 21:12 ` Daniele Ceraolo Spurio
  2025-01-06 21:12 ` [PATCH v4 10/13] drm/xe/pxp: Add API to mark a BO as using PXP Daniele Ceraolo Spurio
                   ` (11 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:12 UTC (permalink / raw)
  To: intel-xe
  Cc: Daniele Ceraolo Spurio, José Roberto de Souza, John Harrison

PXP prerequisites (SW proxy and HuC auth via GSC) are completed
asynchronously from driver load, which means that userspace can start
submitting before we're ready to start a PXP session. Therefore, we need
a query that userspace can use to check not only if PXP is supported but
also to wait until the prerequisites are done.

v2: Improve doc, do not report TYPE_NONE as supported (José)
v3: Better comments, remove unneeded copy_from_user (John)

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: José Roberto de Souza <jose.souza@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/xe/xe_pxp.c   | 32 ++++++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_pxp.h   |  1 +
 drivers/gpu/drm/xe/xe_query.c | 29 +++++++++++++++++++++++++++++
 include/uapi/drm/xe_drm.h     | 35 +++++++++++++++++++++++++++++++++++
 4 files changed, 97 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
index 05ed2e71be63..d46b2c0a06ae 100644
--- a/drivers/gpu/drm/xe/xe_pxp.c
+++ b/drivers/gpu/drm/xe/xe_pxp.c
@@ -80,6 +80,38 @@ static bool pxp_prerequisites_done(const struct xe_pxp *pxp)
 	return ready;
 }
 
+/**
+ * xe_pxp_get_readiness_status - check whether PXP is ready for userspace use
+ * @pxp: the xe_pxp pointer (can be NULL if PXP is disabled)
+ *
+ * Returns: 0 if PXP is not ready yet, 1 if it is ready, a negative errno value
+ * if PXP is not supported/enabled or if something went wrong in the
+ * initialization of the prerequisites. Note that the return values of this
+ * function follow the uapi (see drm_xe_query_pxp_status), so they can be used
+ * directly in the query ioctl.
+ */
+int xe_pxp_get_readiness_status(struct xe_pxp *pxp)
+{
+	int ret = 0;
+
+	if (!xe_pxp_is_enabled(pxp))
+		return -ENODEV;
+
+	/* if the GSC or HuC FW are in an error state, PXP will never work */
+	if (xe_uc_fw_status_to_error(pxp->gt->uc.huc.fw.status) ||
+	    xe_uc_fw_status_to_error(pxp->gt->uc.gsc.fw.status))
+		return -EIO;
+
+	xe_pm_runtime_get(pxp->xe);
+
+	/* PXP requires both HuC loaded and GSC proxy initialized */
+	if (pxp_prerequisites_done(pxp))
+		ret = 1;
+
+	xe_pm_runtime_put(pxp->xe);
+	return ret;
+}
+
 static bool pxp_session_is_in_play(struct xe_pxp *pxp, u32 id)
 {
 	struct xe_gt *gt = pxp->gt;
diff --git a/drivers/gpu/drm/xe/xe_pxp.h b/drivers/gpu/drm/xe/xe_pxp.h
index 2e0ab186072a..868813cc84b9 100644
--- a/drivers/gpu/drm/xe/xe_pxp.h
+++ b/drivers/gpu/drm/xe/xe_pxp.h
@@ -14,6 +14,7 @@ struct xe_pxp;
 
 bool xe_pxp_is_supported(const struct xe_device *xe);
 bool xe_pxp_is_enabled(const struct xe_pxp *pxp);
+int xe_pxp_get_readiness_status(struct xe_pxp *pxp);
 
 int xe_pxp_init(struct xe_device *xe);
 void xe_pxp_irq_handler(struct xe_device *xe, u16 iir);
diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
index c059639613f7..042f87a688e7 100644
--- a/drivers/gpu/drm/xe/xe_query.c
+++ b/drivers/gpu/drm/xe/xe_query.c
@@ -24,6 +24,7 @@
 #include "xe_macros.h"
 #include "xe_mmio.h"
 #include "xe_oa.h"
+#include "xe_pxp.h"
 #include "xe_ttm_vram_mgr.h"
 #include "xe_wa.h"
 
@@ -698,6 +699,33 @@ static int query_oa_units(struct xe_device *xe,
 	return ret ? -EFAULT : 0;
 }
 
+static int query_pxp_status(struct xe_device *xe, struct drm_xe_device_query *query)
+{
+	struct drm_xe_query_pxp_status __user *query_ptr = u64_to_user_ptr(query->data);
+	size_t size = sizeof(struct drm_xe_query_pxp_status);
+	struct drm_xe_query_pxp_status resp = { 0 };
+	int ret;
+
+	if (query->size == 0) {
+		query->size = size;
+		return 0;
+	} else if (XE_IOCTL_DBG(xe, query->size != size)) {
+		return -EINVAL;
+	}
+
+	ret = xe_pxp_get_readiness_status(xe->pxp);
+	if (ret < 0)
+		return ret;
+
+	resp.status = ret;
+	resp.supported_session_types = BIT(DRM_XE_PXP_TYPE_HWDRM);
+
+	if (copy_to_user(query_ptr, &resp, size))
+		return -EFAULT;
+
+	return 0;
+}
+
 static int (* const xe_query_funcs[])(struct xe_device *xe,
 				      struct drm_xe_device_query *query) = {
 	query_engines,
@@ -709,6 +737,7 @@ static int (* const xe_query_funcs[])(struct xe_device *xe,
 	query_engine_cycles,
 	query_uc_fw_version,
 	query_oa_units,
+	query_pxp_status,
 };
 
 int xe_query_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index 5c97a758266d..9d1ed07b3130 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -629,6 +629,39 @@ struct drm_xe_query_uc_fw_version {
 	__u64 reserved;
 };
 
+/**
+ * struct drm_xe_query_pxp_status - query if PXP is ready
+ *
+ * If PXP is enabled and no fatal error has occurred, the status will be set to
+ * one of the following values:
+ * 0: PXP init still in progress
+ * 1: PXP init complete
+ *
+ * If PXP is not enabled or something has gone wrong, the query will be failed
+ * with one of the following error codes:
+ * -ENODEV: PXP not supported or disabled;
+ * -EIO: fatal error occurred during init, so PXP will never be enabled;
+ * -EINVAL: incorrect value provided as part of the query;
+ * -EFAULT: error copying the memory between kernel and userspace.
+ *
+ * The status can only be 0 in the first few seconds after driver load. If
+ * everything works as expected, the status will transition to init complete in
+ * less than 1 second, while in case of errors the driver might take longer to
+ * start returning an error code, but it should still take less than 10 seconds.
+ *
+ * The supported session type bitmask is based on the values in
+ * enum drm_xe_pxp_session_type. TYPE_NONE is always supported and therefore
+ * is not reported in the bitmask.
+ *
+ */
+struct drm_xe_query_pxp_status {
+	/** @status: current PXP status */
+	__u32 status;
+
+	/** @supported_session_types: bitmask of supported PXP session types */
+	__u32 supported_session_types;
+};
+
 /**
  * struct drm_xe_device_query - Input of &DRM_IOCTL_XE_DEVICE_QUERY - main
  * structure to query device information
@@ -648,6 +681,7 @@ struct drm_xe_query_uc_fw_version {
  *    attributes.
  *  - %DRM_XE_DEVICE_QUERY_GT_TOPOLOGY
  *  - %DRM_XE_DEVICE_QUERY_ENGINE_CYCLES
+ *  - %DRM_XE_DEVICE_QUERY_PXP_STATUS
  *
  * If size is set to 0, the driver fills it with the required size for
  * the requested type of data to query. If size is equal to the required
@@ -700,6 +734,7 @@ struct drm_xe_device_query {
 #define DRM_XE_DEVICE_QUERY_ENGINE_CYCLES	6
 #define DRM_XE_DEVICE_QUERY_UC_FW_VERSION	7
 #define DRM_XE_DEVICE_QUERY_OA_UNITS		8
+#define DRM_XE_DEVICE_QUERY_PXP_STATUS		9
 	/** @query: The type of data to query */
 	__u32 query;
 
-- 
2.43.0


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

* [PATCH v4 10/13] drm/xe/pxp: Add API to mark a BO as using PXP
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (8 preceding siblings ...)
  2025-01-06 21:12 ` [PATCH v4 09/13] drm/xe/pxp: Add a query for PXP status Daniele Ceraolo Spurio
@ 2025-01-06 21:12 ` Daniele Ceraolo Spurio
  2025-01-13 23:03   ` John Harrison
  2025-01-06 21:12 ` [PATCH v4 11/13] drm/xe/pxp: add PXP PM support Daniele Ceraolo Spurio
                   ` (10 subsequent siblings)
  20 siblings, 1 reply; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:12 UTC (permalink / raw)
  To: intel-xe
  Cc: Daniele Ceraolo Spurio, Matthew Brost, Thomas Hellström,
	John Harrison, Jani Nikula

The driver needs to know if a BO is encrypted with PXP to enable the
display decryption at flip time.
Furthermore, we want to keep track of the status of the encryption and
reject any operation that involves a BO that is encrypted using an old
key. There are two points in time where such checks can kick in:

1 - at VM bind time, all operations except for unmapping will be
    rejected if the key used to encrypt the BO is no longer valid. This
    check is opt-in via a new VM_BIND flag, to avoid a scenario where a
    malicious app purposely shares an invalid BO with a non-PXP aware
    app (such as a compositor). If the VM_BIND was failed, the
    compositor would be unable to display anything at all. Allowing the
    bind to go through means that output still works, it just displays
    garbage data within the bounds of the illegal BO.

2 - at job submission time, if the queue is marked as using PXP, all
    objects bound to the VM will be checked and the submission will be
    rejected if any of them was encrypted with a key that is no longer
    valid.

Note that there is no risk of leaking the encrypted data if a user does
not opt-in to those checks; the only consequence is that the user will
not realize that the encryption key is changed and that the data is no
longer valid.

v2: Better commnnts and descriptions (John), rebase

v3: Properly return the result of key_assign up the stack, do not use
xe_bo in display headers (Jani)

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
---
 .../xe/compat-i915-headers/pxp/intel_pxp.h    | 12 ++-
 drivers/gpu/drm/xe/display/intel_bo.c         |  2 +-
 drivers/gpu/drm/xe/xe_bo.c                    | 98 ++++++++++++++++++-
 drivers/gpu/drm/xe/xe_bo.h                    |  5 +
 drivers/gpu/drm/xe/xe_bo_types.h              |  3 +
 drivers/gpu/drm/xe/xe_exec.c                  |  6 ++
 drivers/gpu/drm/xe/xe_pxp.c                   | 90 +++++++++++++++++
 drivers/gpu/drm/xe/xe_pxp.h                   |  6 ++
 drivers/gpu/drm/xe/xe_pxp_types.h             | 11 +++
 drivers/gpu/drm/xe/xe_vm.c                    | 46 ++++++++-
 drivers/gpu/drm/xe/xe_vm.h                    |  2 +
 include/uapi/drm/xe_drm.h                     | 19 ++++
 12 files changed, 293 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h b/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h
index 419e8e926f00..d2eb8e1f6c4b 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h
@@ -9,6 +9,8 @@
 #include <linux/errno.h>
 #include <linux/types.h>
 
+#include "xe_pxp.h"
+
 struct drm_gem_object;
 struct xe_pxp;
 
@@ -16,7 +18,15 @@ static inline int intel_pxp_key_check(struct xe_pxp *pxp,
 				      struct drm_gem_object *obj,
 				      bool assign)
 {
-	return -ENODEV;
+	/*
+	 * The assign variable is used in i915 to assign the key to the BO at
+	 * first submission time. In Xe the key is instead assigned at BO
+	 * creation time, so the assign variable must always be false.
+	 */
+	if (assign)
+		return -EINVAL;
+
+	return xe_pxp_obj_key_check(pxp, obj);
 }
 
 #endif
diff --git a/drivers/gpu/drm/xe/display/intel_bo.c b/drivers/gpu/drm/xe/display/intel_bo.c
index b463f5bd4eed..27437c22bd70 100644
--- a/drivers/gpu/drm/xe/display/intel_bo.c
+++ b/drivers/gpu/drm/xe/display/intel_bo.c
@@ -25,7 +25,7 @@ bool intel_bo_is_shmem(struct drm_gem_object *obj)
 
 bool intel_bo_is_protected(struct drm_gem_object *obj)
 {
-	return false;
+	return xe_bo_is_protected(gem_to_xe_bo(obj));
 }
 
 void intel_bo_flush_if_display(struct drm_gem_object *obj)
diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index e6c896ad5602..d1be8f5071b9 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -6,6 +6,7 @@
 #include "xe_bo.h"
 
 #include <linux/dma-buf.h>
+#include <linux/nospec.h>
 
 #include <drm/drm_drv.h>
 #include <drm/drm_gem_ttm_helper.h>
@@ -24,6 +25,7 @@
 #include "xe_migrate.h"
 #include "xe_pm.h"
 #include "xe_preempt_fence.h"
+#include "xe_pxp.h"
 #include "xe_res_cursor.h"
 #include "xe_trace_bo.h"
 #include "xe_ttm_stolen_mgr.h"
@@ -2135,6 +2137,93 @@ void xe_bo_vunmap(struct xe_bo *bo)
 	__xe_bo_vunmap(bo);
 }
 
+static int gem_create_set_pxp_type(struct xe_device *xe, struct xe_bo *bo, u64 value)
+{
+	if (value == DRM_XE_PXP_TYPE_NONE)
+		return 0;
+
+	/* we only support DRM_XE_PXP_TYPE_HWDRM for now */
+	if (XE_IOCTL_DBG(xe, value != DRM_XE_PXP_TYPE_HWDRM))
+		return -EINVAL;
+
+	return xe_pxp_key_assign(xe->pxp, bo);
+}
+
+typedef int (*xe_gem_create_set_property_fn)(struct xe_device *xe,
+					     struct xe_bo *bo,
+					     u64 value);
+
+static const xe_gem_create_set_property_fn gem_create_set_property_funcs[] = {
+	[DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY] = gem_create_set_pxp_type,
+};
+
+static int gem_create_user_ext_set_property(struct xe_device *xe,
+					    struct xe_bo *bo,
+					    u64 extension)
+{
+	u64 __user *address = u64_to_user_ptr(extension);
+	struct drm_xe_ext_set_property ext;
+	int err;
+	u32 idx;
+
+	err = __copy_from_user(&ext, address, sizeof(ext));
+	if (XE_IOCTL_DBG(xe, err))
+		return -EFAULT;
+
+	if (XE_IOCTL_DBG(xe, ext.property >=
+			 ARRAY_SIZE(gem_create_set_property_funcs)) ||
+	    XE_IOCTL_DBG(xe, ext.pad) ||
+	    XE_IOCTL_DBG(xe, ext.property != DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY))
+		return -EINVAL;
+
+	idx = array_index_nospec(ext.property, ARRAY_SIZE(gem_create_set_property_funcs));
+	if (!gem_create_set_property_funcs[idx])
+		return -EINVAL;
+
+	return gem_create_set_property_funcs[idx](xe, bo, ext.value);
+}
+
+typedef int (*xe_gem_create_user_extension_fn)(struct xe_device *xe,
+					       struct xe_bo *bo,
+					       u64 extension);
+
+static const xe_gem_create_user_extension_fn gem_create_user_extension_funcs[] = {
+	[DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY] = gem_create_user_ext_set_property,
+};
+
+#define MAX_USER_EXTENSIONS	16
+static int gem_create_user_extensions(struct xe_device *xe, struct xe_bo *bo,
+				      u64 extensions, int ext_number)
+{
+	u64 __user *address = u64_to_user_ptr(extensions);
+	struct drm_xe_user_extension ext;
+	int err;
+	u32 idx;
+
+	if (XE_IOCTL_DBG(xe, ext_number >= MAX_USER_EXTENSIONS))
+		return -E2BIG;
+
+	err = __copy_from_user(&ext, address, sizeof(ext));
+	if (XE_IOCTL_DBG(xe, err))
+		return -EFAULT;
+
+	if (XE_IOCTL_DBG(xe, ext.pad) ||
+	    XE_IOCTL_DBG(xe, ext.name >= ARRAY_SIZE(gem_create_user_extension_funcs)))
+		return -EINVAL;
+
+	idx = array_index_nospec(ext.name,
+				 ARRAY_SIZE(gem_create_user_extension_funcs));
+	err = gem_create_user_extension_funcs[idx](xe, bo, extensions);
+	if (XE_IOCTL_DBG(xe, err))
+		return err;
+
+	if (ext.next_extension)
+		return gem_create_user_extensions(xe, bo, ext.next_extension,
+						  ++ext_number);
+
+	return 0;
+}
+
 int xe_gem_create_ioctl(struct drm_device *dev, void *data,
 			struct drm_file *file)
 {
@@ -2147,8 +2236,7 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
 	u32 handle;
 	int err;
 
-	if (XE_IOCTL_DBG(xe, args->extensions) ||
-	    XE_IOCTL_DBG(xe, args->pad[0] || args->pad[1] || args->pad[2]) ||
+	if (XE_IOCTL_DBG(xe, args->pad[0] || args->pad[1] || args->pad[2]) ||
 	    XE_IOCTL_DBG(xe, args->reserved[0] || args->reserved[1]))
 		return -EINVAL;
 
@@ -2230,6 +2318,12 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
 		goto out_vm;
 	}
 
+	if (args->extensions) {
+		err = gem_create_user_extensions(xe, bo, args->extensions, 0);
+		if (err)
+			goto out_bulk;
+	}
+
 	err = drm_gem_handle_create(file, &bo->ttm.base, &handle);
 	if (err)
 		goto out_bulk;
diff --git a/drivers/gpu/drm/xe/xe_bo.h b/drivers/gpu/drm/xe/xe_bo.h
index d9386ab03140..28479c9bc20e 100644
--- a/drivers/gpu/drm/xe/xe_bo.h
+++ b/drivers/gpu/drm/xe/xe_bo.h
@@ -184,6 +184,11 @@ static inline bool xe_bo_is_pinned(struct xe_bo *bo)
 	return bo->ttm.pin_count;
 }
 
+static inline bool xe_bo_is_protected(const struct xe_bo *bo)
+{
+	return bo->pxp_key_instance;
+}
+
 static inline void xe_bo_unpin_map_no_vm(struct xe_bo *bo)
 {
 	if (likely(bo)) {
diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
index 46dc9e4e3e46..fd98c755ee4d 100644
--- a/drivers/gpu/drm/xe/xe_bo_types.h
+++ b/drivers/gpu/drm/xe/xe_bo_types.h
@@ -57,6 +57,9 @@ struct xe_bo {
 	 */
 	struct list_head client_link;
 #endif
+	/** @pxp_key_instance: key instance this bo was created against (if any) */
+	u32 pxp_key_instance;
+
 	/** @freed: List node for delayed put. */
 	struct llist_node freed;
 	/** @update_index: Update index if PT BO */
diff --git a/drivers/gpu/drm/xe/xe_exec.c b/drivers/gpu/drm/xe/xe_exec.c
index 31cca938956f..1acc6e55efd5 100644
--- a/drivers/gpu/drm/xe/xe_exec.c
+++ b/drivers/gpu/drm/xe/xe_exec.c
@@ -262,6 +262,12 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 		goto err_exec;
 	}
 
+	if (xe_exec_queue_uses_pxp(q)) {
+		err = xe_vm_validate_protected(q->vm);
+		if (err)
+			goto err_exec;
+	}
+
 	job = xe_sched_job_create(q, xe_exec_queue_is_parallel(q) ?
 				  addresses : &args->address);
 	if (IS_ERR(job)) {
diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
index d46b2c0a06ae..ae45c663b81d 100644
--- a/drivers/gpu/drm/xe/xe_pxp.c
+++ b/drivers/gpu/drm/xe/xe_pxp.c
@@ -8,6 +8,8 @@
 #include <drm/drm_managed.h>
 #include <uapi/drm/xe_drm.h>
 
+#include "xe_bo.h"
+#include "xe_bo_types.h"
 #include "xe_device_types.h"
 #include "xe_exec_queue.h"
 #include "xe_force_wake.h"
@@ -185,6 +187,9 @@ static void pxp_terminate(struct xe_pxp *pxp)
 
 	pxp_invalidate_queues(pxp);
 
+	if (pxp->status == XE_PXP_ACTIVE)
+		pxp->key_instance++;
+
 	/*
 	 * If we have a termination already in progress, we need to wait for
 	 * it to complete before queueing another one. Once the first
@@ -385,6 +390,8 @@ int xe_pxp_init(struct xe_device *xe)
 	pxp->xe = xe;
 	pxp->gt = gt;
 
+	pxp->key_instance = 1;
+
 	/*
 	 * we'll use the completions to check if there is an action pending,
 	 * so we start them as completed and we reinit it when an action is
@@ -689,3 +696,86 @@ static void pxp_invalidate_queues(struct xe_pxp *pxp)
 
 	spin_unlock_irq(&pxp->queues.lock);
 }
+
+/**
+ * xe_pxp_key_assign - mark a BO as using the current PXP key iteration
+ * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
+ * @bo: the BO to mark
+ *
+ * Returns: -ENODEV if PXP is disabled, 0 otherwise.
+ */
+int xe_pxp_key_assign(struct xe_pxp *pxp, struct xe_bo *bo)
+{
+	if (!xe_pxp_is_enabled(pxp))
+		return -ENODEV;
+
+	xe_assert(pxp->xe, !bo->pxp_key_instance);
+
+	/*
+	 * Note that the PXP key handling is inherently racey, because the key
+	 * can theoretically change at any time (although it's unlikely to do
+	 * so without triggers), even right after we copy it. Taking a lock
+	 * wouldn't help because the value might still change as soon as we
+	 * release the lock.
+	 * Userspace needs to handle the fact that their BOs can go invalid at
+	 * any point.
+	 */
+	bo->pxp_key_instance = pxp->key_instance;
+
+	return 0;
+}
+
+/**
+ * xe_pxp_bo_key_check - check if the key used by a xe_bo is valid
+ * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
+ * @bo: the BO we want to check
+ *
+ * Checks whether a BO was encrypted with the current key or an obsolete one.
+ *
+ * Returns: 0 if the key is valid, -ENODEV if PXP is disabled, -EINVAL if the
+ * BO is not using PXP,  -ENOEXEC if the key is not valid.
+ */
+int xe_pxp_bo_key_check(struct xe_pxp *pxp, struct xe_bo *bo)
+{
+	if (!xe_pxp_is_enabled(pxp))
+		return -ENODEV;
+
+	if (!xe_bo_is_protected(bo))
+		return -EINVAL;
+
+	xe_assert(pxp->xe, bo->pxp_key_instance);
+
+	/*
+	 * Note that the PXP key handling is inherently racey, because the key
+	 * can theoretically change at any time (although it's unlikely to do
+	 * so without triggers), even right after we check it. Taking a lock
+	 * wouldn't help because the value might still change as soon as we
+	 * release the lock.
+	 * We mitigate the risk by checking the key at multiple points (on each
+	 * submission involving the BO and right before flipping it on the
+	 * display), but there is still a very small chance that we could
+	 * operate on an invalid BO for a single submission or a single frame
+	 * flip. This is a compromise made to protect the encrypted data (which
+	 * is what the key termination is for).
+	 */
+	if (bo->pxp_key_instance != pxp->key_instance)
+		return -ENOEXEC;
+
+	return 0;
+}
+
+/**
+ * xe_pxp_obj_key_check - check if the key used by a drm_gem_obj is valid
+ * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
+ * @obj: the drm_gem_obj we want to check
+ *
+ * Checks whether a drm_gem_obj was encrypted with the current key or an
+ * obsolete one.
+ *
+ * Returns: 0 if the key is valid, -ENODEV if PXP is disabled, -EINVAL if the
+ * obj is not using PXP,  -ENOEXEC if the key is not valid.
+ */
+int xe_pxp_obj_key_check(struct xe_pxp *pxp, struct drm_gem_object *obj)
+{
+	return xe_pxp_bo_key_check(pxp, gem_to_xe_bo(obj));
+}
diff --git a/drivers/gpu/drm/xe/xe_pxp.h b/drivers/gpu/drm/xe/xe_pxp.h
index 868813cc84b9..3dd70eac9da6 100644
--- a/drivers/gpu/drm/xe/xe_pxp.h
+++ b/drivers/gpu/drm/xe/xe_pxp.h
@@ -8,6 +8,8 @@
 
 #include <linux/types.h>
 
+struct drm_gem_object;
+struct xe_bo;
 struct xe_device;
 struct xe_exec_queue;
 struct xe_pxp;
@@ -23,4 +25,8 @@ int xe_pxp_exec_queue_set_type(struct xe_pxp *pxp, struct xe_exec_queue *q, u8 t
 int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q);
 void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q);
 
+int xe_pxp_key_assign(struct xe_pxp *pxp, struct xe_bo *bo);
+int xe_pxp_bo_key_check(struct xe_pxp *pxp, struct xe_bo *bo);
+int xe_pxp_obj_key_check(struct xe_pxp *pxp, struct drm_gem_object *obj);
+
 #endif /* __XE_PXP_H__ */
diff --git a/drivers/gpu/drm/xe/xe_pxp_types.h b/drivers/gpu/drm/xe/xe_pxp_types.h
index bd741720f67d..8e4569f0173d 100644
--- a/drivers/gpu/drm/xe/xe_pxp_types.h
+++ b/drivers/gpu/drm/xe/xe_pxp_types.h
@@ -112,6 +112,17 @@ struct xe_pxp {
 		/** @queues.list: list of exec_queues that use PXP */
 		struct list_head list;
 	} queues;
+
+	/**
+	 * @key_instance: keep track of the current iteration of the PXP key.
+	 * Note that, due to the time needed for PXP termination and re-start
+	 * to complete, the minimum time between 2 subsequent increases of this
+	 * variable is 50ms, and even that only if there is a continuous attack;
+	 * normal behavior is for this to increase much much slower than that.
+	 * This means that we don't expect this to ever wrap and don't implement
+	 * that case in the code.
+	 */
+	u32 key_instance;
 };
 
 #endif /* __XE_PXP_TYPES_H__ */
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 62b1b6ce255b..501f4d9c8d5d 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -33,6 +33,7 @@
 #include "xe_pm.h"
 #include "xe_preempt_fence.h"
 #include "xe_pt.h"
+#include "xe_pxp.h"
 #include "xe_res_cursor.h"
 #include "xe_sync.h"
 #include "xe_trace_bo.h"
@@ -2726,7 +2727,8 @@ ALLOW_ERROR_INJECTION(vm_bind_ioctl_ops_execute, ERRNO);
 	(DRM_XE_VM_BIND_FLAG_READONLY | \
 	 DRM_XE_VM_BIND_FLAG_IMMEDIATE | \
 	 DRM_XE_VM_BIND_FLAG_NULL | \
-	 DRM_XE_VM_BIND_FLAG_DUMPABLE)
+	 DRM_XE_VM_BIND_FLAG_DUMPABLE | \
+	 DRM_XE_VM_BIND_FLAG_CHECK_PXP)
 
 #ifdef TEST_VM_OPS_ERROR
 #define SUPPORTED_FLAGS	(SUPPORTED_FLAGS_STUB | FORCE_OP_ERROR)
@@ -2889,7 +2891,7 @@ static void xe_vma_ops_init(struct xe_vma_ops *vops, struct xe_vm *vm,
 
 static int xe_vm_bind_ioctl_validate_bo(struct xe_device *xe, struct xe_bo *bo,
 					u64 addr, u64 range, u64 obj_offset,
-					u16 pat_index)
+					u16 pat_index, u32 op, u32 bind_flags)
 {
 	u16 coh_mode;
 
@@ -2933,6 +2935,12 @@ static int xe_vm_bind_ioctl_validate_bo(struct xe_device *xe, struct xe_bo *bo,
 		return  -EINVAL;
 	}
 
+	/* If a BO is protected it can only be mapped if the key is still valid */
+	if ((bind_flags & DRM_XE_VM_BIND_FLAG_CHECK_PXP) && xe_bo_is_protected(bo) &&
+	    op != DRM_XE_VM_BIND_OP_UNMAP && op != DRM_XE_VM_BIND_OP_UNMAP_ALL)
+		if (XE_IOCTL_DBG(xe, xe_pxp_bo_key_check(xe->pxp, bo) != 0))
+			return -ENOEXEC;
+
 	return 0;
 }
 
@@ -3022,6 +3030,8 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 		u32 obj = bind_ops[i].obj;
 		u64 obj_offset = bind_ops[i].obj_offset;
 		u16 pat_index = bind_ops[i].pat_index;
+		u32 op = bind_ops[i].op;
+		u32 bind_flags = bind_ops[i].flags;
 
 		if (!obj)
 			continue;
@@ -3034,7 +3044,8 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 		bos[i] = gem_to_xe_bo(gem_obj);
 
 		err = xe_vm_bind_ioctl_validate_bo(xe, bos[i], addr, range,
-						   obj_offset, pat_index);
+						   obj_offset, pat_index, op,
+						   bind_flags);
 		if (err)
 			goto put_obj;
 	}
@@ -3334,6 +3345,35 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
 	return ret;
 }
 
+int xe_vm_validate_protected(struct xe_vm *vm)
+{
+	struct drm_gpuva *gpuva;
+	int err = 0;
+
+	if (!vm)
+		return -ENODEV;
+
+	mutex_lock(&vm->snap_mutex);
+
+	drm_gpuvm_for_each_va(gpuva, &vm->gpuvm) {
+		struct xe_vma *vma = gpuva_to_vma(gpuva);
+		struct xe_bo *bo = vma->gpuva.gem.obj ?
+			gem_to_xe_bo(vma->gpuva.gem.obj) : NULL;
+
+		if (!bo)
+			continue;
+
+		if (xe_bo_is_protected(bo)) {
+			err = xe_pxp_bo_key_check(vm->xe->pxp, bo);
+			if (err)
+				break;
+		}
+	}
+
+	mutex_unlock(&vm->snap_mutex);
+	return err;
+}
+
 struct xe_vm_snapshot {
 	unsigned long num_snaps;
 	struct {
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 0a2fa6c0815b..f66075f8a6fe 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -215,6 +215,8 @@ struct dma_fence *xe_vma_rebind(struct xe_vm *vm, struct xe_vma *vma,
 
 int xe_vm_invalidate_vma(struct xe_vma *vma);
 
+int xe_vm_validate_protected(struct xe_vm *vm);
+
 static inline void xe_vm_queue_rebind_worker(struct xe_vm *vm)
 {
 	xe_assert(vm->xe, xe_vm_in_preempt_fence_mode(vm));
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index 9d1ed07b3130..149adf3cbbce 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -778,8 +778,23 @@ struct drm_xe_device_query {
  *  - %DRM_XE_GEM_CPU_CACHING_WC - Allocate the pages as write-combined. This
  *    is uncached. Scanout surfaces should likely use this. All objects
  *    that can be placed in VRAM must use this.
+ *
+ * This ioctl supports setting the following properties via the
+ * %DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY extension, which uses the
+ * generic @drm_xe_ext_set_property struct:
+ *
+ *  - %DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE - set the type of PXP session
+ *    this object will be used with. Valid values are listed in enum
+ *    drm_xe_pxp_session_type. %DRM_XE_PXP_TYPE_NONE is the default behavior, so
+ *    there is no need to explicitly set that. Objects used with session of type
+ *    %DRM_XE_PXP_TYPE_HWDRM will be marked as invalid if a PXP invalidation
+ *    event occurs after their creation. Attempting to flip an invalid object
+ *    will cause a black frame to be displayed instead. Submissions with invalid
+ *    objects mapped in the VM will be rejected.
  */
 struct drm_xe_gem_create {
+#define DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY	0
+#define   DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE	0
 	/** @extensions: Pointer to the first extension struct, if any */
 	__u64 extensions;
 
@@ -941,6 +956,9 @@ struct drm_xe_vm_destroy {
  *    will only be valid for DRM_XE_VM_BIND_OP_MAP operations, the BO
  *    handle MBZ, and the BO offset MBZ. This flag is intended to
  *    implement VK sparse bindings.
+ *  - %DRM_XE_VM_BIND_FLAG_CHECK_PXP - If the object is encrypted via PXP,
+ *    reject the binding if the encryption key is no longer valid. This
+ *    flag has no effect on BOs that are not marked as using PXP.
  */
 struct drm_xe_vm_bind_op {
 	/** @extensions: Pointer to the first extension struct, if any */
@@ -1031,6 +1049,7 @@ struct drm_xe_vm_bind_op {
 #define DRM_XE_VM_BIND_FLAG_IMMEDIATE	(1 << 1)
 #define DRM_XE_VM_BIND_FLAG_NULL	(1 << 2)
 #define DRM_XE_VM_BIND_FLAG_DUMPABLE	(1 << 3)
+#define DRM_XE_VM_BIND_FLAG_CHECK_PXP	(1 << 4)
 	/** @flags: Bind flags */
 	__u32 flags;
 
-- 
2.43.0


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

* [PATCH v4 11/13] drm/xe/pxp: add PXP PM support
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (9 preceding siblings ...)
  2025-01-06 21:12 ` [PATCH v4 10/13] drm/xe/pxp: Add API to mark a BO as using PXP Daniele Ceraolo Spurio
@ 2025-01-06 21:12 ` Daniele Ceraolo Spurio
  2025-01-13 23:10   ` John Harrison
  2025-01-06 21:12 ` [PATCH v4 12/13] drm/xe/pxp: Add PXP debugfs support Daniele Ceraolo Spurio
                   ` (9 subsequent siblings)
  20 siblings, 1 reply; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:12 UTC (permalink / raw)
  To: intel-xe; +Cc: Daniele Ceraolo Spurio, John Harrison

The HW suspend flow kills all PXP HWDRM sessions, so we need to mark all
the queues and BOs as invalid and do a full termination when PXP is next
used.

v2: rebase
v3: rebase on new status flow, defer termination to next PXP use as it
makes things much easier and allows us to use the same fuction for all
types of suspend.

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/xe/xe_pm.c        |  39 ++++++---
 drivers/gpu/drm/xe/xe_pxp.c       | 128 +++++++++++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_pxp.h       |   3 +
 drivers/gpu/drm/xe/xe_pxp_types.h |   7 ++
 4 files changed, 164 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
index c6e57af0144c..bfd797516a7c 100644
--- a/drivers/gpu/drm/xe/xe_pm.c
+++ b/drivers/gpu/drm/xe/xe_pm.c
@@ -22,6 +22,7 @@
 #include "xe_guc.h"
 #include "xe_irq.h"
 #include "xe_pcode.h"
+#include "xe_pxp.h"
 #include "xe_trace.h"
 #include "xe_wa.h"
 
@@ -122,6 +123,10 @@ int xe_pm_suspend(struct xe_device *xe)
 	drm_dbg(&xe->drm, "Suspending device\n");
 	trace_xe_pm_suspend(xe, __builtin_return_address(0));
 
+	err = xe_pxp_pm_suspend(xe->pxp);
+	if (err)
+		goto err;
+
 	for_each_gt(gt, xe, id)
 		xe_gt_suspend_prepare(gt);
 
@@ -130,14 +135,12 @@ int xe_pm_suspend(struct xe_device *xe)
 	/* FIXME: Super racey... */
 	err = xe_bo_evict_all(xe);
 	if (err)
-		goto err;
+		goto err_pxp;
 
 	for_each_gt(gt, xe, id) {
 		err = xe_gt_suspend(gt);
-		if (err) {
-			xe_display_pm_resume(xe);
-			goto err;
-		}
+		if (err)
+			goto err_display;
 	}
 
 	xe_irq_suspend(xe);
@@ -146,6 +149,11 @@ int xe_pm_suspend(struct xe_device *xe)
 
 	drm_dbg(&xe->drm, "Device suspended\n");
 	return 0;
+
+err_display:
+	xe_display_pm_resume(xe);
+err_pxp:
+	xe_pxp_pm_resume(xe->pxp);
 err:
 	drm_dbg(&xe->drm, "Device suspend failed %d\n", err);
 	return err;
@@ -195,6 +203,8 @@ int xe_pm_resume(struct xe_device *xe)
 	if (err)
 		goto err;
 
+	xe_pxp_pm_resume(xe->pxp);
+
 	drm_dbg(&xe->drm, "Device resumed\n");
 	return 0;
 err:
@@ -389,6 +399,10 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
 	 */
 	xe_rpm_lockmap_acquire(xe);
 
+	err = xe_pxp_pm_suspend(xe->pxp);
+	if (err)
+		goto out;
+
 	/*
 	 * Applying lock for entire list op as xe_ttm_bo_destroy and xe_bo_move_notify
 	 * also checks and delets bo entry from user fault list.
@@ -404,22 +418,27 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
 	if (xe->d3cold.allowed) {
 		err = xe_bo_evict_all(xe);
 		if (err)
-			goto out;
+			goto out_resume;
 	}
 
 	for_each_gt(gt, xe, id) {
 		err = xe_gt_suspend(gt);
 		if (err)
-			goto out;
+			goto out_resume;
 	}
 
 	xe_irq_suspend(xe);
 
 	xe_display_pm_runtime_suspend_late(xe);
 
+	xe_rpm_lockmap_release(xe);
+	xe_pm_write_callback_task(xe, NULL);
+	return 0;
+
+out_resume:
+	xe_display_pm_runtime_resume(xe);
+	xe_pxp_pm_resume(xe->pxp);
 out:
-	if (err)
-		xe_display_pm_runtime_resume(xe);
 	xe_rpm_lockmap_release(xe);
 	xe_pm_write_callback_task(xe, NULL);
 	return err;
@@ -472,6 +491,8 @@ int xe_pm_runtime_resume(struct xe_device *xe)
 			goto out;
 	}
 
+	xe_pxp_pm_resume(xe->pxp);
+
 out:
 	xe_rpm_lockmap_release(xe);
 	xe_pm_write_callback_task(xe, NULL);
diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
index ae45c663b81d..0a36d40152d1 100644
--- a/drivers/gpu/drm/xe/xe_pxp.c
+++ b/drivers/gpu/drm/xe/xe_pxp.c
@@ -132,6 +132,14 @@ static int pxp_wait_for_session_state(struct xe_pxp *pxp, u32 id, bool in_play)
 
 static void pxp_invalidate_queues(struct xe_pxp *pxp);
 
+static void pxp_invalidate_state(struct xe_pxp *pxp)
+{
+	pxp_invalidate_queues(pxp);
+
+	if (pxp->status == XE_PXP_ACTIVE)
+		pxp->key_instance++;
+}
+
 static int pxp_terminate_hw(struct xe_pxp *pxp)
 {
 	struct xe_gt *gt = pxp->gt;
@@ -185,10 +193,16 @@ static void pxp_terminate(struct xe_pxp *pxp)
 
 	mutex_lock(&pxp->mutex);
 
-	pxp_invalidate_queues(pxp);
+	pxp_invalidate_state(pxp);
 
-	if (pxp->status == XE_PXP_ACTIVE)
-		pxp->key_instance++;
+	/*
+	 * we'll mark the status as needing termination on resume, so no need to
+	 * emit a termination now.
+	 */
+	if (pxp->status == XE_PXP_SUSPENDED) {
+		mutex_unlock(&pxp->mutex);
+		return;
+	}
 
 	/*
 	 * If we have a termination already in progress, we need to wait for
@@ -219,11 +233,13 @@ static void pxp_terminate(struct xe_pxp *pxp)
 static void pxp_terminate_complete(struct xe_pxp *pxp)
 {
 	/*
-	 * We expect PXP to be in one of 2 states when we get here:
+	 * We expect PXP to be in one of 3 states when we get here:
 	 * - XE_PXP_TERMINATION_IN_PROGRESS: a single termination event was
 	 * requested and it is now completing, so we're ready to start.
 	 * - XE_PXP_NEEDS_ADDITIONAL_TERMINATION: a second termination was
 	 * requested while the first one was still being processed.
+	 * - XE_PXP_SUSPENDED: PXP is now suspended, so we defer everything to
+	 * when we come back on resume.
 	 */
 	mutex_lock(&pxp->mutex);
 
@@ -234,6 +250,9 @@ static void pxp_terminate_complete(struct xe_pxp *pxp)
 	case XE_PXP_NEEDS_ADDITIONAL_TERMINATION:
 		pxp->status = XE_PXP_NEEDS_TERMINATION;
 		break;
+	case XE_PXP_SUSPENDED:
+		/* Nothing to do */
+		break;
 	default:
 		drm_err(&pxp->xe->drm,
 			"PXP termination complete while status was %u\n",
@@ -391,6 +410,7 @@ int xe_pxp_init(struct xe_device *xe)
 	pxp->gt = gt;
 
 	pxp->key_instance = 1;
+	pxp->last_suspend_key_instance = 1;
 
 	/*
 	 * we'll use the completions to check if there is an action pending,
@@ -574,6 +594,7 @@ int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q)
 		XE_WARN_ON(completion_done(&pxp->termination));
 		mutex_unlock(&pxp->mutex);
 		goto wait_for_idle;
+	case XE_PXP_SUSPENDED:
 	default:
 		drm_err(&pxp->xe->drm, "unexpected state during PXP start: %u\n", pxp->status);
 		ret = -EIO;
@@ -779,3 +800,102 @@ int xe_pxp_obj_key_check(struct xe_pxp *pxp, struct drm_gem_object *obj)
 {
 	return xe_pxp_bo_key_check(pxp, gem_to_xe_bo(obj));
 }
+
+/**
+ * xe_pxp_pm_suspend - prepare PXP for HW suspend
+ * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
+ *
+ * Checks whether a BO was encrypted with the current key or an obsolete one.
+ *
+ * Returns: 0 if successful, a negative errno value otherwise.
+ */
+int xe_pxp_pm_suspend(struct xe_pxp *pxp)
+{
+	int ret = 0;
+
+	if (!xe_pxp_is_enabled(pxp))
+		return 0;
+
+wait_for_activation:
+	if (!wait_for_completion_timeout(&pxp->activation,
+					 msecs_to_jiffies(PXP_ACTIVATION_TIMEOUT_MS)))
+		ret = -ETIMEDOUT;
+
+	mutex_lock(&pxp->mutex);
+
+	switch (pxp->status) {
+	case XE_PXP_ERROR:
+	case XE_PXP_READY_TO_START:
+	case XE_PXP_SUSPENDED:
+	case XE_PXP_TERMINATION_IN_PROGRESS:
+	case XE_PXP_NEEDS_ADDITIONAL_TERMINATION:
+		/*
+		 * If PXP is not running there is nothing to cleanup. If there
+		 * is a termination pending then no need to issue another one.
+		 */
+		break;
+	case XE_PXP_START_IN_PROGRESS:
+		mutex_unlock(&pxp->mutex);
+		goto wait_for_activation;
+	case XE_PXP_NEEDS_TERMINATION:
+		/* If PXP was never used we can skip the cleanup */
+		if (pxp->key_instance == pxp->last_suspend_key_instance)
+			break;
+		fallthrough;
+	case XE_PXP_ACTIVE:
+		pxp_invalidate_state(pxp);
+		break;
+	default:
+		drm_err(&pxp->xe->drm, "unexpected state during PXP suspend: %u",
+			pxp->status);
+		ret = -EIO;
+		goto out;
+	}
+
+	/*
+	 * We set this even if we were in error state, hoping the suspend clears
+	 * the error. Worse case we fail again and go in error state again.
+	 */
+	pxp->status = XE_PXP_SUSPENDED;
+
+	mutex_unlock(&pxp->mutex);
+
+	/*
+	 * if there is a termination in progress, wait for it.
+	 * We need to wait outside the lock because the completion is done from
+	 * within the lock
+	 */
+	if (!wait_for_completion_timeout(&pxp->termination,
+					 msecs_to_jiffies(PXP_TERMINATION_TIMEOUT_MS)))
+		ret = -ETIMEDOUT;
+
+	pxp->last_suspend_key_instance = pxp->key_instance;
+
+out:
+	return ret;
+}
+
+/**
+ * xe_pxp_pm_resume - re-init PXP after HW suspend
+ * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
+ */
+void xe_pxp_pm_resume(struct xe_pxp *pxp)
+{
+	int err;
+
+	if (!xe_pxp_is_enabled(pxp))
+		return;
+
+	err = kcr_pxp_enable(pxp);
+
+	mutex_lock(&pxp->mutex);
+
+	xe_assert(pxp->xe, pxp->status == XE_PXP_SUSPENDED);
+
+	if (err)
+		pxp->status = XE_PXP_ERROR;
+	else
+		pxp->status = XE_PXP_NEEDS_TERMINATION;
+
+	mutex_unlock(&pxp->mutex);
+}
diff --git a/drivers/gpu/drm/xe/xe_pxp.h b/drivers/gpu/drm/xe/xe_pxp.h
index 3dd70eac9da6..546b156d63aa 100644
--- a/drivers/gpu/drm/xe/xe_pxp.h
+++ b/drivers/gpu/drm/xe/xe_pxp.h
@@ -21,6 +21,9 @@ int xe_pxp_get_readiness_status(struct xe_pxp *pxp);
 int xe_pxp_init(struct xe_device *xe);
 void xe_pxp_irq_handler(struct xe_device *xe, u16 iir);
 
+int xe_pxp_pm_suspend(struct xe_pxp *pxp);
+void xe_pxp_pm_resume(struct xe_pxp *pxp);
+
 int xe_pxp_exec_queue_set_type(struct xe_pxp *pxp, struct xe_exec_queue *q, u8 type);
 int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q);
 void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q);
diff --git a/drivers/gpu/drm/xe/xe_pxp_types.h b/drivers/gpu/drm/xe/xe_pxp_types.h
index 8e4569f0173d..53e9d48d10fb 100644
--- a/drivers/gpu/drm/xe/xe_pxp_types.h
+++ b/drivers/gpu/drm/xe/xe_pxp_types.h
@@ -27,6 +27,7 @@ enum xe_pxp_status {
 	XE_PXP_READY_TO_START,
 	XE_PXP_START_IN_PROGRESS,
 	XE_PXP_ACTIVE,
+	XE_PXP_SUSPENDED,
 };
 
 /**
@@ -123,6 +124,12 @@ struct xe_pxp {
 	 * that case in the code.
 	 */
 	u32 key_instance;
+	/**
+	 * @last_suspend_key_instance: value of key_instance at the last
+	 * suspend. Used to check if any PXP session has been created between
+	 * suspend cycles.
+	 */
+	u32 last_suspend_key_instance;
 };
 
 #endif /* __XE_PXP_TYPES_H__ */
-- 
2.43.0


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

* [PATCH v4 12/13] drm/xe/pxp: Add PXP debugfs support
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (10 preceding siblings ...)
  2025-01-06 21:12 ` [PATCH v4 11/13] drm/xe/pxp: add PXP PM support Daniele Ceraolo Spurio
@ 2025-01-06 21:12 ` Daniele Ceraolo Spurio
  2025-01-06 21:12 ` [PATCH v4 13/13] drm/xe/pxp: Enable PXP for MTL and LNL Daniele Ceraolo Spurio
                   ` (8 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:12 UTC (permalink / raw)
  To: intel-xe; +Cc: Daniele Ceraolo Spurio, John Harrison

This patch introduces 2 PXP debugfs entries:

- info: prints the current PXP status and key instance
- terminate: simulate a termination interrupt

The first one is useful for debug, while the second one can be used for
testing the termination flow.

v2: move the info prints inside the lock (John)

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/xe/Makefile         |   1 +
 drivers/gpu/drm/xe/xe_debugfs.c     |   3 +
 drivers/gpu/drm/xe/xe_pxp_debugfs.c | 120 ++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_pxp_debugfs.h |  13 +++
 4 files changed, 137 insertions(+)
 create mode 100644 drivers/gpu/drm/xe/xe_pxp_debugfs.c
 create mode 100644 drivers/gpu/drm/xe/xe_pxp_debugfs.h

diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 970ff5d49ded..9dbab14c7cea 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -87,6 +87,7 @@ xe-y += xe_bb.o \
 	xe_pt.o \
 	xe_pt_walk.o \
 	xe_pxp.o \
+	xe_pxp_debugfs.o \
 	xe_pxp_submit.o \
 	xe_query.o \
 	xe_range_fence.o \
diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index 492b4877433f..56cb3788e752 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -18,6 +18,7 @@
 #include "xe_gt_printk.h"
 #include "xe_guc_ads.h"
 #include "xe_pm.h"
+#include "xe_pxp_debugfs.h"
 #include "xe_sriov.h"
 #include "xe_step.h"
 
@@ -230,5 +231,7 @@ void xe_debugfs_register(struct xe_device *xe)
 	for_each_gt(gt, xe, id)
 		xe_gt_debugfs_register(gt);
 
+	xe_pxp_debugfs_register(xe->pxp);
+
 	fault_create_debugfs_attr("fail_gt_reset", root, &gt_reset_failure);
 }
diff --git a/drivers/gpu/drm/xe/xe_pxp_debugfs.c b/drivers/gpu/drm/xe/xe_pxp_debugfs.c
new file mode 100644
index 000000000000..ccfbacf08efc
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_pxp_debugfs.c
@@ -0,0 +1,120 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include "xe_pxp_debugfs.h"
+
+#include <linux/debugfs.h>
+
+#include <drm/drm_debugfs.h>
+#include <drm/drm_managed.h>
+#include <drm/drm_print.h>
+
+#include "xe_device.h"
+#include "xe_pxp.h"
+#include "xe_pxp_types.h"
+#include "regs/xe_irq_regs.h"
+
+static struct xe_pxp *node_to_pxp(struct drm_info_node *node)
+{
+	return node->info_ent->data;
+}
+
+static const char *pxp_status_to_str(struct xe_pxp *pxp)
+{
+	lockdep_assert_held(&pxp->mutex);
+
+	switch (pxp->status) {
+	case XE_PXP_ERROR:
+		return "error";
+	case XE_PXP_NEEDS_TERMINATION:
+		return "needs termination";
+	case XE_PXP_TERMINATION_IN_PROGRESS:
+		return "termination in progress";
+	case XE_PXP_READY_TO_START:
+		return "ready to start";
+	case XE_PXP_ACTIVE:
+		return "active";
+	case XE_PXP_SUSPENDED:
+		return "suspended";
+	default:
+		return "unknown";
+	}
+};
+
+static int pxp_info(struct seq_file *m, void *data)
+{
+	struct xe_pxp *pxp = node_to_pxp(m->private);
+	struct drm_printer p = drm_seq_file_printer(m);
+	const char *status;
+
+	if (!xe_pxp_is_enabled(pxp))
+		return -ENODEV;
+
+	mutex_lock(&pxp->mutex);
+	status = pxp_status_to_str(pxp);
+
+	drm_printf(&p, "status: %s\n", status);
+	drm_printf(&p, "instance counter: %u\n", pxp->key_instance);
+	mutex_unlock(&pxp->mutex);
+
+	return 0;
+}
+
+static int pxp_terminate(struct seq_file *m, void *data)
+{
+	struct xe_pxp *pxp = node_to_pxp(m->private);
+	struct drm_printer p = drm_seq_file_printer(m);
+
+	if (!xe_pxp_is_enabled(pxp))
+		return -ENODEV;
+
+	/* simulate a termination interrupt */
+	spin_lock_irq(&pxp->xe->irq.lock);
+	xe_pxp_irq_handler(pxp->xe, KCR_PXP_STATE_TERMINATED_INTERRUPT);
+	spin_unlock_irq(&pxp->xe->irq.lock);
+
+	drm_printf(&p, "PXP termination queued\n");
+
+	return 0;
+}
+
+static const struct drm_info_list debugfs_list[] = {
+	{"info", pxp_info, 0},
+	{"terminate", pxp_terminate, 0},
+};
+
+void xe_pxp_debugfs_register(struct xe_pxp *pxp)
+{
+	struct drm_minor *minor;
+	struct drm_info_list *local;
+	struct dentry *root;
+	int i;
+
+	if (!xe_pxp_is_enabled(pxp))
+		return;
+
+	minor = pxp->xe->drm.primary;
+	if (!minor->debugfs_root)
+		return;
+
+#define DEBUGFS_SIZE	(ARRAY_SIZE(debugfs_list) * sizeof(struct drm_info_list))
+	local = drmm_kmalloc(&pxp->xe->drm, DEBUGFS_SIZE, GFP_KERNEL);
+	if (!local)
+		return;
+
+	memcpy(local, debugfs_list, DEBUGFS_SIZE);
+#undef DEBUGFS_SIZE
+
+	for (i = 0; i < ARRAY_SIZE(debugfs_list); ++i)
+		local[i].data = pxp;
+
+	root = debugfs_create_dir("pxp", minor->debugfs_root);
+	if (IS_ERR(root))
+		return;
+
+	drm_debugfs_create_files(local,
+				 ARRAY_SIZE(debugfs_list),
+				 root, minor);
+}
diff --git a/drivers/gpu/drm/xe/xe_pxp_debugfs.h b/drivers/gpu/drm/xe/xe_pxp_debugfs.h
new file mode 100644
index 000000000000..988466aad50b
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_pxp_debugfs.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef __XE_PXP_DEBUGFS_H__
+#define __XE_PXP_DEBUGFS_H__
+
+struct xe_pxp;
+
+void xe_pxp_debugfs_register(struct xe_pxp *pxp);
+
+#endif /* __XE_PXP_DEBUGFS_H__ */
-- 
2.43.0


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

* [PATCH v4 13/13] drm/xe/pxp: Enable PXP for MTL and LNL
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (11 preceding siblings ...)
  2025-01-06 21:12 ` [PATCH v4 12/13] drm/xe/pxp: Add PXP debugfs support Daniele Ceraolo Spurio
@ 2025-01-06 21:12 ` Daniele Ceraolo Spurio
  2025-01-06 21:34 ` ✓ CI.Patch_applied: success for Add PXP HWDRM support (rev4) Patchwork
                   ` (7 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Daniele Ceraolo Spurio @ 2025-01-06 21:12 UTC (permalink / raw)
  To: intel-xe; +Cc: Daniele Ceraolo Spurio, John Harrison

Now that are the pieces are there, we can turn the feature on.

Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
---
 drivers/gpu/drm/xe/xe_pci.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 9c95ecc81b81..b67a6bce0664 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -337,11 +337,13 @@ static const struct xe_device_desc mtl_desc = {
 	.require_force_probe = true,
 	PLATFORM(METEORLAKE),
 	.has_display = true,
+	.has_pxp = true,
 };
 
 static const struct xe_device_desc lnl_desc = {
 	PLATFORM(LUNARLAKE),
 	.has_display = true,
+	.has_pxp = true,
 };
 
 static const struct xe_device_desc bmg_desc = {
-- 
2.43.0


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

* Re: [PATCH v4 08/13] drm/xe/pxp: Add userspace and LRC support for PXP-using queues
  2025-01-06 21:12 ` [PATCH v4 08/13] drm/xe/pxp: Add userspace and LRC support for PXP-using queues Daniele Ceraolo Spurio
@ 2025-01-06 21:18   ` Dixit, Ashutosh
  2025-01-13 22:34   ` John Harrison
  1 sibling, 0 replies; 27+ messages in thread
From: Dixit, Ashutosh @ 2025-01-06 21:18 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio; +Cc: intel-xe, John Harrison

On Mon, 06 Jan 2025 13:12:05 -0800, Daniele Ceraolo Spurio wrote:
>
> Userspace is required to mark a queue as using PXP to guarantee that the
> PXP instructions will work. In addition to managing the PXP sessions,
> when a PXP queue is created the driver will set the relevant bits in
> its context control register.
>
> On submission of a valid PXP queue, the driver will validate all
> encrypted objects mapped to the VM to ensured they were encrypted with
> the current key.
>
> v2: Remove pxp_types include outside of PXP code (Jani), better comments
> and code cleanup (John)
>
> v3: split the internal PXP management to a separate patch for ease of
> review. re-order ioctl checks to always return -EINVAL if parameters are
> invalid, rebase on msix changes.
>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> ---
>  drivers/gpu/drm/xe/regs/xe_engine_regs.h |  1 +
>  drivers/gpu/drm/xe/xe_exec_queue.c       | 56 +++++++++++++++++++++++-
>  drivers/gpu/drm/xe/xe_exec_queue.h       |  5 +++
>  drivers/gpu/drm/xe/xe_exec_queue_types.h |  2 +
>  drivers/gpu/drm/xe/xe_execlist.c         |  2 +-
>  drivers/gpu/drm/xe/xe_lrc.c              | 18 ++++++--
>  drivers/gpu/drm/xe/xe_lrc.h              |  4 +-
>  drivers/gpu/drm/xe/xe_pxp.c              | 35 +++++++++++++--
>  drivers/gpu/drm/xe/xe_pxp.h              |  4 +-
>  include/uapi/drm/xe_drm.h                | 40 ++++++++++++++++-

I believe patches which touch 'include/uapi/drm/xe_drm.h' should be titled
"drm/xe/pxp/uapi: foo" or "drm/xe/uapi: foo".

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

* ✓ CI.Patch_applied: success for Add PXP HWDRM support (rev4)
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (12 preceding siblings ...)
  2025-01-06 21:12 ` [PATCH v4 13/13] drm/xe/pxp: Enable PXP for MTL and LNL Daniele Ceraolo Spurio
@ 2025-01-06 21:34 ` Patchwork
  2025-01-06 21:35 ` ✗ CI.checkpatch: warning " Patchwork
                   ` (6 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2025-01-06 21:34 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio; +Cc: intel-xe

== Series Details ==

Series: Add PXP HWDRM support (rev4)
URL   : https://patchwork.freedesktop.org/series/136052/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: bfe4c6426814 drm-tip: 2025y-01m-06d-19h-18m-49s UTC integration manifest
=== git am output follows ===
Applying: drm/xe/pxp: Initialize PXP structure and KCR reg
Applying: drm/xe/pxp: Allocate PXP execution resources
Applying: drm/xe/pxp: Add VCS inline termination support
Applying: drm/xe/pxp: Add GSC session invalidation support
Applying: drm/xe/pxp: Handle the PXP termination interrupt
Applying: drm/xe/pxp: Add GSC session initialization support
Applying: drm/xe/pxp: Add PXP queue tracking and session start
Applying: drm/xe/pxp: Add userspace and LRC support for PXP-using queues
Applying: drm/xe/pxp: Add a query for PXP status
Applying: drm/xe/pxp: Add API to mark a BO as using PXP
Applying: drm/xe/pxp: add PXP PM support
Applying: drm/xe/pxp: Add PXP debugfs support
Applying: drm/xe/pxp: Enable PXP for MTL and LNL



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

* ✗ CI.checkpatch: warning for Add PXP HWDRM support (rev4)
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (13 preceding siblings ...)
  2025-01-06 21:34 ` ✓ CI.Patch_applied: success for Add PXP HWDRM support (rev4) Patchwork
@ 2025-01-06 21:35 ` Patchwork
  2025-01-06 21:36 ` ✓ CI.KUnit: success " Patchwork
                   ` (5 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2025-01-06 21:35 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio; +Cc: intel-xe

== Series Details ==

Series: Add PXP HWDRM support (rev4)
URL   : https://patchwork.freedesktop.org/series/136052/
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
30ab6715fc09baee6cc14cb3c89ad8858688d474
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit dbf290b3ac20d9b36257793de94f9647f5febc7f
Author: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Date:   Mon Jan 6 13:12:10 2025 -0800

    drm/xe/pxp: Enable PXP for MTL and LNL
    
    Now that are the pieces are there, we can turn the feature on.
    
    Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
+ /mt/dim checkpatch bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd drm-intel
ea943780506d drm/xe/pxp: Initialize PXP structure and KCR reg
-:45: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#45: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 245 lines checked
493e543e220d drm/xe/pxp: Allocate PXP execution resources
-:85: WARNING:LONG_LINE: line length of 108 exceeds 100 columns
#85: FILE: drivers/gpu/drm/xe/xe_exec_queue.c:157:
+	xe_assert(xe, !vm || (!!(vm->flags & XE_VM_FLAG_GSC) == !!(hwe->engine_id == XE_HW_ENGINE_GSCCS0)));

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

total: 0 errors, 2 warnings, 0 checks, 552 lines checked
458801882ed0 drm/xe/pxp: Add VCS inline termination support
-:32: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#32: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 220 lines checked
d9e2a167ffd8 drm/xe/pxp: Add GSC session invalidation support
3e7314df20af drm/xe/pxp: Handle the PXP termination interrupt
36db21284793 drm/xe/pxp: Add GSC session initialization support
87a58f5c7cfa drm/xe/pxp: Add PXP queue tracking and session start
-:221: ERROR:SPACING: space required before the open parenthesis '('
#221: FILE: drivers/gpu/drm/xe/xe_pxp.c:192:
+	switch(pxp->status) {

total: 1 errors, 0 warnings, 0 checks, 522 lines checked
254ade7b399a drm/xe/pxp: Add userspace and LRC support for PXP-using queues
53b984225d9b drm/xe/pxp: Add a query for PXP status
829b42eea4f5 drm/xe/pxp: Add API to mark a BO as using PXP
-:427: WARNING:REPEATED_WORD: Possible repeated word: 'much'
#427: FILE: drivers/gpu/drm/xe/xe_pxp_types.h:121:
+	 * normal behavior is for this to increase much much slower than that.

total: 0 errors, 1 warnings, 0 checks, 471 lines checked
1a335383239a drm/xe/pxp: add PXP PM support
-:12: WARNING:TYPO_SPELLING: 'fuction' may be misspelled - perhaps 'function'?
#12: 
makes things much easier and allows us to use the same fuction for all
                                                       ^^^^^^^

total: 0 errors, 1 warnings, 0 checks, 302 lines checked
a3b67e1e819d drm/xe/pxp: Add PXP debugfs support
-:53: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#53: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 154 lines checked
dbf290b3ac20 drm/xe/pxp: Enable PXP for MTL and LNL



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

* ✓ CI.KUnit: success for Add PXP HWDRM support (rev4)
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (14 preceding siblings ...)
  2025-01-06 21:35 ` ✗ CI.checkpatch: warning " Patchwork
@ 2025-01-06 21:36 ` Patchwork
  2025-01-06 21:54 ` ✓ CI.Build: " Patchwork
                   ` (4 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2025-01-06 21:36 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio; +Cc: intel-xe

== Series Details ==

Series: Add PXP HWDRM support (rev4)
URL   : https://patchwork.freedesktop.org/series/136052/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[21:35:23] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:35:28] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../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)
      |      ^~~~~~~~~~~~~~~~~

[21:35:56] Starting KUnit Kernel (1/1)...
[21:35:56] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:35:56] =================== guc_dbm (7 subtests) ===================
[21:35:56] [PASSED] test_empty
[21:35:56] [PASSED] test_default
[21:35:56] ======================== test_size  ========================
[21:35:56] [PASSED] 4
[21:35:56] [PASSED] 8
[21:35:56] [PASSED] 32
[21:35:56] [PASSED] 256
[21:35:56] ==================== [PASSED] test_size ====================
[21:35:56] ======================= test_reuse  ========================
[21:35:56] [PASSED] 4
[21:35:56] [PASSED] 8
[21:35:56] [PASSED] 32
[21:35:56] [PASSED] 256
[21:35:56] =================== [PASSED] test_reuse ====================
[21:35:56] =================== test_range_overlap  ====================
[21:35:56] [PASSED] 4
[21:35:56] [PASSED] 8
[21:35:56] [PASSED] 32
[21:35:56] [PASSED] 256
[21:35:56] =============== [PASSED] test_range_overlap ================
[21:35:56] =================== test_range_compact  ====================
[21:35:56] [PASSED] 4
[21:35:56] [PASSED] 8
[21:35:56] [PASSED] 32
[21:35:56] [PASSED] 256
[21:35:56] =============== [PASSED] test_range_compact ================
[21:35:56] ==================== test_range_spare  =====================
[21:35:56] [PASSED] 4
[21:35:56] [PASSED] 8
[21:35:56] [PASSED] 32
[21:35:56] [PASSED] 256
[21:35:56] ================ [PASSED] test_range_spare =================
[21:35:56] ===================== [PASSED] guc_dbm =====================
[21:35:56] =================== guc_idm (6 subtests) ===================
[21:35:56] [PASSED] bad_init
[21:35:56] [PASSED] no_init
[21:35:56] [PASSED] init_fini
[21:35:56] [PASSED] check_used
[21:35:56] [PASSED] check_quota
[21:35:56] [PASSED] check_all
[21:35:56] ===================== [PASSED] guc_idm =====================
[21:35:56] ================== no_relay (3 subtests) ===================
[21:35:56] [PASSED] xe_drops_guc2pf_if_not_ready
[21:35:56] [PASSED] xe_drops_guc2vf_if_not_ready
[21:35:56] [PASSED] xe_rejects_send_if_not_ready
[21:35:56] ==================== [PASSED] no_relay =====================
[21:35:56] ================== pf_relay (14 subtests) ==================
[21:35:56] [PASSED] pf_rejects_guc2pf_too_short
[21:35:56] [PASSED] pf_rejects_guc2pf_too_long
[21:35:56] [PASSED] pf_rejects_guc2pf_no_payload
[21:35:56] [PASSED] pf_fails_no_payload
[21:35:56] [PASSED] pf_fails_bad_origin
[21:35:56] [PASSED] pf_fails_bad_type
[21:35:56] [PASSED] pf_txn_reports_error
[21:35:56] [PASSED] pf_txn_sends_pf2guc
[21:35:56] [PASSED] pf_sends_pf2guc
[21:35:56] [SKIPPED] pf_loopback_nop
[21:35:56] [SKIPPED] pf_loopback_echo
[21:35:56] [SKIPPED] pf_loopback_fail
[21:35:56] [SKIPPED] pf_loopback_busy
[21:35:56] [SKIPPED] pf_loopback_retry
[21:35:56] ==================== [PASSED] pf_relay =====================
[21:35:56] ================== vf_relay (3 subtests) ===================
[21:35:56] [PASSED] vf_rejects_guc2vf_too_short
[21:35:56] [PASSED] vf_rejects_guc2vf_too_long
[21:35:56] [PASSED] vf_rejects_guc2vf_no_payload
[21:35:56] ==================== [PASSED] vf_relay =====================
[21:35:56] ================= pf_service (11 subtests) =================
[21:35:56] [PASSED] pf_negotiate_any
[21:35:56] [PASSED] pf_negotiate_base_match
[21:35:56] [PASSED] pf_negotiate_base_newer
[21:35:56] [PASSED] pf_negotiate_base_next
[21:35:56] [SKIPPED] pf_negotiate_base_older
[21:35:56] [PASSED] pf_negotiate_base_prev
[21:35:56] [PASSED] pf_negotiate_latest_match
[21:35:56] [PASSED] pf_negotiate_latest_newer
[21:35:56] [PASSED] pf_negotiate_latest_next
[21:35:56] [SKIPPED] pf_negotiate_latest_older
[21:35:56] [SKIPPED] pf_negotiate_latest_prev
[21:35:56] =================== [PASSED] pf_service ====================
[21:35:56] ===================== lmtt (1 subtest) =====================
[21:35:56] ======================== test_ops  =========================
[21:35:56] [PASSED] 2-level
[21:35:56] [PASSED] multi-level
[21:35:56] ==================== [PASSED] test_ops =====================
[21:35:56] ====================== [PASSED] lmtt =======================
[21:35:56] =================== xe_mocs (2 subtests) ===================
[21:35:56] ================ xe_live_mocs_kernel_kunit  ================
[21:35:56] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[21:35:56] ================ xe_live_mocs_reset_kunit  =================
[21:35:56] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[21:35:56] ==================== [SKIPPED] xe_mocs =====================
[21:35:56] ================= xe_migrate (2 subtests) ==================
[21:35:56] ================= xe_migrate_sanity_kunit  =================
[21:35:56] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[21:35:56] ================== xe_validate_ccs_kunit  ==================
[21:35:56] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[21:35:56] =================== [SKIPPED] xe_migrate ===================
[21:35:56] ================== xe_dma_buf (1 subtest) ==================
[21:35:56] ==================== xe_dma_buf_kunit  =====================
[21:35:56] ================ [SKIPPED] xe_dma_buf_kunit ================
[21:35:56] =================== [SKIPPED] xe_dma_buf ===================
[21:35:56] ================= xe_bo_shrink (1 subtest) =================
[21:35:56] =================== xe_bo_shrink_kunit  ====================
[21:35:56] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[21:35:56] ================== [SKIPPED] xe_bo_shrink ==================
[21:35:56] ==================== xe_bo (2 subtests) ====================
[21:35:56] ================== xe_ccs_migrate_kunit  ===================
[21:35:56] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[21:35:56] ==================== xe_bo_evict_kunit  ====================
[21:35:56] =============== [SKIPPED] xe_bo_evict_kunit ================
[21:35:56] ===================== [SKIPPED] xe_bo ======================
[21:35:56] ==================== args (11 subtests) ====================
[21:35:56] [PASSED] count_args_test
[21:35:56] [PASSED] call_args_example
[21:35:56] [PASSED] call_args_test
[21:35:56] [PASSED] drop_first_arg_example
[21:35:56] [PASSED] drop_first_arg_test
[21:35:56] [PASSED] first_arg_example
[21:35:56] [PASSED] first_arg_test
stty: 'standard input': Inappropriate ioctl for device
[21:35:56] [PASSED] last_arg_example
[21:35:56] [PASSED] last_arg_test
[21:35:56] [PASSED] pick_arg_example
[21:35:56] [PASSED] sep_comma_example
[21:35:56] ====================== [PASSED] args =======================
[21:35:56] =================== xe_pci (2 subtests) ====================
[21:35:56] [PASSED] xe_gmdid_graphics_ip
[21:35:56] [PASSED] xe_gmdid_media_ip
[21:35:56] ===================== [PASSED] xe_pci ======================
[21:35:56] =================== xe_rtp (2 subtests) ====================
[21:35:56] =============== xe_rtp_process_to_sr_tests  ================
[21:35:56] [PASSED] coalesce-same-reg
[21:35:56] [PASSED] no-match-no-add
[21:35:56] [PASSED] match-or
[21:35:56] [PASSED] match-or-xfail
[21:35:56] [PASSED] no-match-no-add-multiple-rules
[21:35:56] [PASSED] two-regs-two-entries
[21:35:56] [PASSED] clr-one-set-other
[21:35:56] [PASSED] set-field
[21:35:56] [PASSED] conflict-duplicate
[21:35:56] [PASSED] conflict-not-disjoint
[21:35:56] [PASSED] conflict-reg-type
[21:35:56] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[21:35:56] ================== xe_rtp_process_tests  ===================
[21:35:56] [PASSED] active1
[21:35:56] [PASSED] active2
[21:35:56] [PASSED] active-inactive
[21:35:56] [PASSED] inactive-active
[21:35:56] [PASSED] inactive-1st_or_active-inactive
[21:35:56] [PASSED] inactive-2nd_or_active-inactive
[21:35:56] [PASSED] inactive-last_or_active-inactive
[21:35:56] [PASSED] inactive-no_or_active-inactive
[21:35:56] ============== [PASSED] xe_rtp_process_tests ===============
[21:35:56] ===================== [PASSED] xe_rtp ======================
[21:35:56] ==================== xe_wa (1 subtest) =====================
[21:35:56] ======================== xe_wa_gt  =========================
[21:35:56] [PASSED] TIGERLAKE (B0)
[21:35:56] [PASSED] DG1 (A0)
[21:35:56] [PASSED] DG1 (B0)
[21:35:56] [PASSED] ALDERLAKE_S (A0)
[21:35:56] [PASSED] ALDERLAKE_S (B0)
[21:35:56] [PASSED] ALDERLAKE_S (C0)
[21:35:56] [PASSED] ALDERLAKE_S (D0)
[21:35:56] [PASSED] ALDERLAKE_P (A0)
[21:35:56] [PASSED] ALDERLAKE_P (B0)
[21:35:56] [PASSED] ALDERLAKE_P (C0)
[21:35:56] [PASSED] ALDERLAKE_S_RPLS (D0)
[21:35:56] [PASSED] ALDERLAKE_P_RPLU (E0)
[21:35:56] [PASSED] DG2_G10 (C0)
[21:35:56] [PASSED] DG2_G11 (B1)
[21:35:56] [PASSED] DG2_G12 (A1)
[21:35:56] [PASSED] METEORLAKE (g:A0, m:A0)
[21:35:56] [PASSED] METEORLAKE (g:A0, m:A0)
[21:35:57] [PASSED] METEORLAKE (g:A0, m:A0)
[21:35:57] [PASSED] LUNARLAKE (g:A0, m:A0)
[21:35:57] [PASSED] LUNARLAKE (g:B0, m:A0)
[21:35:57] [PASSED] BATTLEMAGE (g:A0, m:A1)
[21:35:57] ==================== [PASSED] xe_wa_gt =====================
[21:35:57] ====================== [PASSED] xe_wa ======================
[21:35:57] ============================================================
[21:35:57] Testing complete. Ran 122 tests: passed: 106, skipped: 16
[21:35:57] Elapsed time: 33.356s total, 4.443s configuring, 28.647s building, 0.226s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[21:35:57] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:35:58] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../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)
      |      ^~~~~~~~~~~~~~~~~

[21:36:22] Starting KUnit Kernel (1/1)...
[21:36:22] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:36:22] ================== drm_buddy (7 subtests) ==================
[21:36:22] [PASSED] drm_test_buddy_alloc_limit
[21:36:22] [PASSED] drm_test_buddy_alloc_optimistic
[21:36:22] [PASSED] drm_test_buddy_alloc_pessimistic
[21:36:22] [PASSED] drm_test_buddy_alloc_pathological
[21:36:22] [PASSED] drm_test_buddy_alloc_contiguous
[21:36:22] [PASSED] drm_test_buddy_alloc_clear
[21:36:22] [PASSED] drm_test_buddy_alloc_range_bias
[21:36:22] ==================== [PASSED] drm_buddy ====================
[21:36:22] ============= drm_cmdline_parser (40 subtests) =============
[21:36:22] [PASSED] drm_test_cmdline_force_d_only
[21:36:22] [PASSED] drm_test_cmdline_force_D_only_dvi
[21:36:22] [PASSED] drm_test_cmdline_force_D_only_hdmi
[21:36:22] [PASSED] drm_test_cmdline_force_D_only_not_digital
[21:36:22] [PASSED] drm_test_cmdline_force_e_only
[21:36:22] [PASSED] drm_test_cmdline_res
[21:36:22] [PASSED] drm_test_cmdline_res_vesa
[21:36:22] [PASSED] drm_test_cmdline_res_vesa_rblank
[21:36:22] [PASSED] drm_test_cmdline_res_rblank
[21:36:22] [PASSED] drm_test_cmdline_res_bpp
[21:36:22] [PASSED] drm_test_cmdline_res_refresh
[21:36:22] [PASSED] drm_test_cmdline_res_bpp_refresh
[21:36:22] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[21:36:22] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[21:36:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[21:36:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[21:36:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[21:36:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[21:36:22] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[21:36:22] [PASSED] drm_test_cmdline_res_margins_force_on
[21:36:22] [PASSED] drm_test_cmdline_res_vesa_margins
[21:36:22] [PASSED] drm_test_cmdline_name
[21:36:22] [PASSED] drm_test_cmdline_name_bpp
[21:36:22] [PASSED] drm_test_cmdline_name_option
[21:36:22] [PASSED] drm_test_cmdline_name_bpp_option
[21:36:22] [PASSED] drm_test_cmdline_rotate_0
[21:36:22] [PASSED] drm_test_cmdline_rotate_90
[21:36:22] [PASSED] drm_test_cmdline_rotate_180
[21:36:22] [PASSED] drm_test_cmdline_rotate_270
[21:36:22] [PASSED] drm_test_cmdline_hmirror
[21:36:22] [PASSED] drm_test_cmdline_vmirror
[21:36:22] [PASSED] drm_test_cmdline_margin_options
[21:36:22] [PASSED] drm_test_cmdline_multiple_options
[21:36:22] [PASSED] drm_test_cmdline_bpp_extra_and_option
[21:36:22] [PASSED] drm_test_cmdline_extra_and_option
[21:36:22] [PASSED] drm_test_cmdline_freestanding_options
[21:36:22] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[21:36:22] [PASSED] drm_test_cmdline_panel_orientation
[21:36:22] ================ drm_test_cmdline_invalid  =================
[21:36:22] [PASSED] margin_only
[21:36:22] [PASSED] interlace_only
[21:36:22] [PASSED] res_missing_x
[21:36:22] [PASSED] res_missing_y
[21:36:22] [PASSED] res_bad_y
[21:36:22] [PASSED] res_missing_y_bpp
[21:36:22] [PASSED] res_bad_bpp
[21:36:22] [PASSED] res_bad_refresh
[21:36:22] [PASSED] res_bpp_refresh_force_on_off
[21:36:22] [PASSED] res_invalid_mode
[21:36:22] [PASSED] res_bpp_wrong_place_mode
[21:36:22] [PASSED] name_bpp_refresh
[21:36:22] [PASSED] name_refresh
[21:36:22] [PASSED] name_refresh_wrong_mode
[21:36:22] [PASSED] name_refresh_invalid_mode
[21:36:22] [PASSED] rotate_multiple
[21:36:22] [PASSED] rotate_invalid_val
[21:36:22] [PASSED] rotate_truncated
[21:36:22] [PASSED] invalid_option
[21:36:22] [PASSED] invalid_tv_option
[21:36:22] [PASSED] truncated_tv_option
[21:36:22] ============ [PASSED] drm_test_cmdline_invalid =============
[21:36:22] =============== drm_test_cmdline_tv_options  ===============
[21:36:22] [PASSED] NTSC
[21:36:22] [PASSED] NTSC_443
[21:36:22] [PASSED] NTSC_J
[21:36:22] [PASSED] PAL
[21:36:22] [PASSED] PAL_M
[21:36:22] [PASSED] PAL_N
[21:36:22] [PASSED] SECAM
[21:36:22] [PASSED] MONO_525
[21:36:22] [PASSED] MONO_625
[21:36:22] =========== [PASSED] drm_test_cmdline_tv_options ===========
[21:36:22] =============== [PASSED] drm_cmdline_parser ================
[21:36:22] ========== drmm_connector_hdmi_init (19 subtests) ==========
[21:36:22] [PASSED] drm_test_connector_hdmi_init_valid
[21:36:22] [PASSED] drm_test_connector_hdmi_init_bpc_8
[21:36:22] [PASSED] drm_test_connector_hdmi_init_bpc_10
[21:36:22] [PASSED] drm_test_connector_hdmi_init_bpc_12
[21:36:22] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[21:36:22] [PASSED] drm_test_connector_hdmi_init_bpc_null
[21:36:22] [PASSED] drm_test_connector_hdmi_init_formats_empty
[21:36:22] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[21:36:22] [PASSED] drm_test_connector_hdmi_init_null_ddc
[21:36:22] [PASSED] drm_test_connector_hdmi_init_null_product
[21:36:22] [PASSED] drm_test_connector_hdmi_init_null_vendor
[21:36:22] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[21:36:22] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[21:36:22] [PASSED] drm_test_connector_hdmi_init_product_valid
[21:36:22] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[21:36:22] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[21:36:22] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[21:36:22] ========= drm_test_connector_hdmi_init_type_valid  =========
[21:36:22] [PASSED] HDMI-A
[21:36:22] [PASSED] HDMI-B
[21:36:22] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[21:36:22] ======== drm_test_connector_hdmi_init_type_invalid  ========
[21:36:22] [PASSED] Unknown
[21:36:22] [PASSED] VGA
[21:36:22] [PASSED] DVI-I
[21:36:22] [PASSED] DVI-D
[21:36:22] [PASSED] DVI-A
[21:36:22] [PASSED] Composite
[21:36:22] [PASSED] SVIDEO
[21:36:22] [PASSED] LVDS
[21:36:22] [PASSED] Component
[21:36:22] [PASSED] DIN
[21:36:22] [PASSED] DP
[21:36:22] [PASSED] TV
[21:36:22] [PASSED] eDP
[21:36:22] [PASSED] Virtual
[21:36:22] [PASSED] DSI
[21:36:22] [PASSED] DPI
[21:36:22] [PASSED] Writeback
[21:36:22] [PASSED] SPI
[21:36:22] [PASSED] USB
[21:36:22] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[21:36:22] ============ [PASSED] drmm_connector_hdmi_init =============
[21:36:22] ============= drmm_connector_init (3 subtests) =============
[21:36:22] [PASSED] drm_test_drmm_connector_init
[21:36:22] [PASSED] drm_test_drmm_connector_init_null_ddc
[21:36:22] ========= drm_test_drmm_connector_init_type_valid  =========
[21:36:22] [PASSED] Unknown
[21:36:22] [PASSED] VGA
[21:36:22] [PASSED] DVI-I
[21:36:22] [PASSED] DVI-D
[21:36:22] [PASSED] DVI-A
[21:36:22] [PASSED] Composite
[21:36:22] [PASSED] SVIDEO
[21:36:22] [PASSED] LVDS
[21:36:22] [PASSED] Component
[21:36:22] [PASSED] DIN
[21:36:22] [PASSED] DP
[21:36:22] [PASSED] HDMI-A
[21:36:22] [PASSED] HDMI-B
[21:36:22] [PASSED] TV
[21:36:22] [PASSED] eDP
[21:36:22] [PASSED] Virtual
[21:36:22] [PASSED] DSI
[21:36:22] [PASSED] DPI
[21:36:22] [PASSED] Writeback
[21:36:22] [PASSED] SPI
[21:36:22] [PASSED] USB
[21:36:22] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[21:36:22] =============== [PASSED] drmm_connector_init ===============
[21:36:22] ========= drm_connector_dynamic_init (6 subtests) ==========
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_init
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_init_properties
[21:36:22] ===== drm_test_drm_connector_dynamic_init_type_valid  ======
[21:36:22] [PASSED] Unknown
[21:36:22] [PASSED] VGA
[21:36:22] [PASSED] DVI-I
[21:36:22] [PASSED] DVI-D
[21:36:22] [PASSED] DVI-A
[21:36:22] [PASSED] Composite
[21:36:22] [PASSED] SVIDEO
[21:36:22] [PASSED] LVDS
[21:36:22] [PASSED] Component
[21:36:22] [PASSED] DIN
[21:36:22] [PASSED] DP
[21:36:22] [PASSED] HDMI-A
[21:36:22] [PASSED] HDMI-B
[21:36:22] [PASSED] TV
[21:36:22] [PASSED] eDP
[21:36:22] [PASSED] Virtual
[21:36:22] [PASSED] DSI
[21:36:22] [PASSED] DPI
[21:36:22] [PASSED] Writeback
[21:36:22] [PASSED] SPI
[21:36:22] [PASSED] USB
[21:36:22] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[21:36:22] ======== drm_test_drm_connector_dynamic_init_name  =========
[21:36:22] [PASSED] Unknown
[21:36:22] [PASSED] VGA
[21:36:22] [PASSED] DVI-I
[21:36:22] [PASSED] DVI-D
[21:36:22] [PASSED] DVI-A
[21:36:22] [PASSED] Composite
[21:36:22] [PASSED] SVIDEO
[21:36:22] [PASSED] LVDS
[21:36:22] [PASSED] Component
[21:36:22] [PASSED] DIN
[21:36:22] [PASSED] DP
[21:36:22] [PASSED] HDMI-A
[21:36:22] [PASSED] HDMI-B
[21:36:22] [PASSED] TV
[21:36:22] [PASSED] eDP
[21:36:22] [PASSED] Virtual
[21:36:22] [PASSED] DSI
[21:36:22] [PASSED] DPI
[21:36:22] [PASSED] Writeback
[21:36:22] [PASSED] SPI
[21:36:22] [PASSED] USB
[21:36:22] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[21:36:22] =========== [PASSED] drm_connector_dynamic_init ============
[21:36:22] ==== drm_connector_dynamic_register_early (4 subtests) =====
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[21:36:22] ====== [PASSED] drm_connector_dynamic_register_early =======
[21:36:22] ======= drm_connector_dynamic_register (7 subtests) ========
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[21:36:22] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[21:36:22] ========= [PASSED] drm_connector_dynamic_register ==========
[21:36:22] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[21:36:22] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[21:36:22] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[21:36:22] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[21:36:22] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[21:36:22] ========== drm_test_get_tv_mode_from_name_valid  ===========
[21:36:22] [PASSED] NTSC
[21:36:22] [PASSED] NTSC-443
[21:36:22] [PASSED] NTSC-J
[21:36:22] [PASSED] PAL
[21:36:22] [PASSED] PAL-M
[21:36:22] [PASSED] PAL-N
[21:36:22] [PASSED] SECAM
[21:36:22] [PASSED] Mono
[21:36:22] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[21:36:22] [PASSED] drm_test_get_tv_mode_from_name_truncated
[21:36:22] ============ [PASSED] drm_get_tv_mode_from_name ============
[21:36:22] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[21:36:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[21:36:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[21:36:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[21:36:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[21:36:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[21:36:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[21:36:22] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid  =
[21:36:22] [PASSED] VIC 96
[21:36:22] [PASSED] VIC 97
[21:36:22] [PASSED] VIC 101
[21:36:22] [PASSED] VIC 102
[21:36:22] [PASSED] VIC 106
[21:36:22] [PASSED] VIC 107
[21:36:22] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[21:36:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[21:36:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[21:36:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[21:36:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[21:36:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[21:36:22] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[21:36:22] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[21:36:22] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name  ====
[21:36:22] [PASSED] Automatic
[21:36:22] [PASSED] Full
[21:36:22] [PASSED] Limited 16:235
[21:36:22] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[21:36:22] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[21:36:22] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[21:36:22] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[21:36:22] === drm_test_drm_hdmi_connector_get_output_format_name  ====
[21:36:22] [PASSED] RGB
[21:36:22] [PASSED] YUV 4:2:0
[21:36:22] [PASSED] YUV 4:2:2
[21:36:22] [PASSED] YUV 4:4:4
[21:36:22] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[21:36:22] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[21:36:22] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[21:36:22] ============= drm_damage_helper (21 subtests) ==============
[21:36:22] [PASSED] drm_test_damage_iter_no_damage
[21:36:22] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[21:36:22] [PASSED] drm_test_damage_iter_no_damage_src_moved
[21:36:22] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[21:36:22] [PASSED] drm_test_damage_iter_no_damage_not_visible
[21:36:22] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[21:36:22] [PASSED] drm_test_damage_iter_no_damage_no_fb
[21:36:22] [PASSED] drm_test_damage_iter_simple_damage
[21:36:22] [PASSED] drm_test_damage_iter_single_damage
[21:36:22] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[21:36:22] [PASSED] drm_test_damage_iter_single_damage_outside_src
[21:36:22] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[21:36:22] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[21:36:22] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[21:36:22] [PASSED] drm_test_damage_iter_single_damage_src_moved
[21:36:22] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[21:36:22] [PASSED] drm_test_damage_iter_damage
[21:36:22] [PASSED] drm_test_damage_iter_damage_one_intersect
[21:36:22] [PASSED] drm_test_damage_iter_damage_one_outside
[21:36:22] [PASSED] drm_test_damage_iter_damage_src_moved
[21:36:22] [PASSED] drm_test_damage_iter_damage_not_visible
[21:36:22] ================ [PASSED] drm_damage_helper ================
[21:36:22] ============== drm_dp_mst_helper (3 subtests) ==============
[21:36:22] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[21:36:22] [PASSED] Clock 154000 BPP 30 DSC disabled
[21:36:22] [PASSED] Clock 234000 BPP 30 DSC disabled
[21:36:22] [PASSED] Clock 297000 BPP 24 DSC disabled
[21:36:22] [PASSED] Clock 332880 BPP 24 DSC enabled
[21:36:22] [PASSED] Clock 324540 BPP 24 DSC enabled
[21:36:22] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[21:36:22] ============== drm_test_dp_mst_calc_pbn_div  ===============
[21:36:22] [PASSED] Link rate 2000000 lane count 4
[21:36:22] [PASSED] Link rate 2000000 lane count 2
[21:36:22] [PASSED] Link rate 2000000 lane count 1
[21:36:22] [PASSED] Link rate 1350000 lane count 4
[21:36:22] [PASSED] Link rate 1350000 lane count 2
[21:36:22] [PASSED] Link rate 1350000 lane count 1
[21:36:22] [PASSED] Link rate 1000000 lane count 4
[21:36:22] [PASSED] Link rate 1000000 lane count 2
[21:36:22] [PASSED] Link rate 1000000 lane count 1
[21:36:22] [PASSED] Link rate 810000 lane count 4
[21:36:22] [PASSED] Link rate 810000 lane count 2
[21:36:22] [PASSED] Link rate 810000 lane count 1
[21:36:22] [PASSED] Link rate 540000 lane count 4
[21:36:22] [PASSED] Link rate 540000 lane count 2
[21:36:22] [PASSED] Link rate 540000 lane count 1
[21:36:22] [PASSED] Link rate 270000 lane count 4
[21:36:22] [PASSED] Link rate 270000 lane count 2
[21:36:22] [PASSED] Link rate 270000 lane count 1
[21:36:22] [PASSED] Link rate 162000 lane count 4
[21:36:22] [PASSED] Link rate 162000 lane count 2
[21:36:22] [PASSED] Link rate 162000 lane count 1
[21:36:22] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[21:36:22] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[21:36:22] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[21:36:22] [PASSED] DP_POWER_UP_PHY with port number
[21:36:22] [PASSED] DP_POWER_DOWN_PHY with port number
[21:36:22] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[21:36:22] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[21:36:22] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[21:36:22] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[21:36:22] [PASSED] DP_QUERY_PAYLOAD with port number
[21:36:22] [PASSED] DP_QUERY_PAYLOAD with VCPI
[21:36:22] [PASSED] DP_REMOTE_DPCD_READ with port number
[21:36:22] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[21:36:22] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[21:36:22] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[21:36:22] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[21:36:22] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[21:36:22] [PASSED] DP_REMOTE_I2C_READ with port number
[21:36:22] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[21:36:22] [PASSED] DP_REMOTE_I2C_READ with transactions array
[21:36:22] [PASSED] DP_REMOTE_I2C_WRITE with port number
[21:36:22] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[21:36:22] [PASSED] DP_REMOTE_I2C_WRITE with data array
[21:36:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[21:36:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[21:36:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[21:36:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[21:36:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[21:36:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[21:36:22] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[21:36:22] ================ [PASSED] drm_dp_mst_helper ================
[21:36:22] ================== drm_exec (7 subtests) ===================
[21:36:22] [PASSED] sanitycheck
[21:36:22] [PASSED] test_lock
[21:36:22] [PASSED] test_lock_unlock
[21:36:22] [PASSED] test_duplicates
[21:36:22] [PASSED] test_prepare
[21:36:22] [PASSED] test_prepare_array
[21:36:22] [PASSED] test_multiple_loops
[21:36:22] ==================== [PASSED] drm_exec =====================
[21:36:22] =========== drm_format_helper_test (17 subtests) ===========
[21:36:22] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[21:36:22] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[21:36:22] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[21:36:22] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[21:36:22] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[21:36:22] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[21:36:22] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[21:36:22] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[21:36:22] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[21:36:22] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[21:36:22] ============== drm_test_fb_xrgb8888_to_mono  ===============
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[21:36:22] ==================== drm_test_fb_swab  =====================
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ================ [PASSED] drm_test_fb_swab =================
[21:36:22] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[21:36:22] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[21:36:22] [PASSED] single_pixel_source_buffer
[21:36:22] [PASSED] single_pixel_clip_rectangle
[21:36:22] [PASSED] well_known_colors
[21:36:22] [PASSED] destination_pitch
[21:36:22] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[21:36:22] ================= drm_test_fb_clip_offset  =================
[21:36:22] [PASSED] pass through
[21:36:22] [PASSED] horizontal offset
[21:36:22] [PASSED] vertical offset
[21:36:22] [PASSED] horizontal and vertical offset
[21:36:22] [PASSED] horizontal offset (custom pitch)
[21:36:22] [PASSED] vertical offset (custom pitch)
[21:36:22] [PASSED] horizontal and vertical offset (custom pitch)
[21:36:22] ============= [PASSED] drm_test_fb_clip_offset =============
[21:36:22] ============== drm_test_fb_build_fourcc_list  ==============
[21:36:22] [PASSED] no native formats
[21:36:22] [PASSED] XRGB8888 as native format
[21:36:22] [PASSED] remove duplicates
[21:36:22] [PASSED] convert alpha formats
[21:36:22] [PASSED] random formats
[21:36:22] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[21:36:22] =================== drm_test_fb_memcpy  ====================
[21:36:22] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[21:36:22] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[21:36:22] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[21:36:22] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[21:36:22] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[21:36:22] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[21:36:22] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[21:36:22] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[21:36:22] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[21:36:22] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[21:36:22] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[21:36:22] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[21:36:22] =============== [PASSED] drm_test_fb_memcpy ================
[21:36:22] ============= [PASSED] drm_format_helper_test ==============
[21:36:22] ================= drm_format (18 subtests) =================
[21:36:22] [PASSED] drm_test_format_block_width_invalid
[21:36:22] [PASSED] drm_test_format_block_width_one_plane
[21:36:22] [PASSED] drm_test_format_block_width_two_plane
[21:36:22] [PASSED] drm_test_format_block_width_three_plane
[21:36:22] [PASSED] drm_test_format_block_width_tiled
[21:36:22] [PASSED] drm_test_format_block_height_invalid
[21:36:22] [PASSED] drm_test_format_block_height_one_plane
[21:36:22] [PASSED] drm_test_format_block_height_two_plane
[21:36:22] [PASSED] drm_test_format_block_height_three_plane
[21:36:22] [PASSED] drm_test_format_block_height_tiled
[21:36:22] [PASSED] drm_test_format_min_pitch_invalid
[21:36:22] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[21:36:22] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[21:36:22] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[21:36:22] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[21:36:22] [PASSED] drm_test_format_min_pitch_two_plane
[21:36:22] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[21:36:22] [PASSED] drm_test_format_min_pitch_tiled
[21:36:22] =================== [PASSED] drm_format ====================
[21:36:22] ============== drm_framebuffer (10 subtests) ===============
[21:36:22] ========== drm_test_framebuffer_check_src_coords  ==========
[21:36:22] [PASSED] Success: source fits into fb
[21:36:22] [PASSED] Fail: overflowing fb with x-axis coordinate
[21:36:22] [PASSED] Fail: overflowing fb with y-axis coordinate
[21:36:22] [PASSED] Fail: overflowing fb with source width
[21:36:22] [PASSED] Fail: overflowing fb with source height
[21:36:22] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[21:36:22] [PASSED] drm_test_framebuffer_cleanup
[21:36:22] =============== drm_test_framebuffer_create  ===============
[21:36:22] [PASSED] ABGR8888 normal sizes
[21:36:22] [PASSED] ABGR8888 max sizes
[21:36:22] [PASSED] ABGR8888 pitch greater than min required
[21:36:22] [PASSED] ABGR8888 pitch less than min required
[21:36:22] [PASSED] ABGR8888 Invalid width
[21:36:22] [PASSED] ABGR8888 Invalid buffer handle
[21:36:22] [PASSED] No pixel format
[21:36:22] [PASSED] ABGR8888 Width 0
[21:36:22] [PASSED] ABGR8888 Height 0
[21:36:22] [PASSED] ABGR8888 Out of bound height * pitch combination
[21:36:22] [PASSED] ABGR8888 Large buffer offset
[21:36:22] [PASSED] ABGR8888 Buffer offset for inexistent plane
[21:36:22] [PASSED] ABGR8888 Invalid flag
[21:36:22] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[21:36:22] [PASSED] ABGR8888 Valid buffer modifier
[21:36:22] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[21:36:22] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[21:36:22] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[21:36:22] [PASSED] NV12 Normal sizes
[21:36:22] [PASSED] NV12 Max sizes
[21:36:22] [PASSED] NV12 Invalid pitch
[21:36:22] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[21:36:22] [PASSED] NV12 different  modifier per-plane
[21:36:22] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[21:36:22] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[21:36:22] [PASSED] NV12 Modifier for inexistent plane
[21:36:22] [PASSED] NV12 Handle for inexistent plane
[21:36:22] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[21:36:22] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[21:36:22] [PASSED] YVU420 Normal sizes
[21:36:22] [PASSED] YVU420 Max sizes
[21:36:22] [PASSED] YVU420 Invalid pitch
[21:36:22] [PASSED] YVU420 Different pitches
[21:36:22] [PASSED] YVU420 Different buffer offsets/pitches
[21:36:22] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[21:36:22] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[21:36:22] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[21:36:22] [PASSED] YVU420 Valid modifier
[21:36:22] [PASSED] YVU420 Different modifiers per plane
[21:36:22] [PASSED] YVU420 Modifier for inexistent plane
[21:36:22] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[21:36:22] [PASSED] X0L2 Normal sizes
[21:36:22] [PASSED] X0L2 Max sizes
[21:36:22] [PASSED] X0L2 Invalid pitch
[21:36:22] [PASSED] X0L2 Pitch greater than minimum required
[21:36:22] [PASSED] X0L2 Handle for inexistent plane
[21:36:22] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[21:36:22] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[21:36:22] [PASSED] X0L2 Valid modifier
[21:36:22] [PASSED] X0L2 Modifier for inexistent plane
[21:36:22] =========== [PASSED] drm_test_framebuffer_create ===========
[21:36:22] [PASSED] drm_test_framebuffer_free
[21:36:22] [PASSED] drm_test_framebuffer_init
[21:36:22] [PASSED] drm_test_framebuffer_init_bad_format
[21:36:22] [PASSED] drm_test_framebuffer_init_dev_mismatch
[21:36:22] [PASSED] drm_test_framebuffer_lookup
[21:36:22] [PASSED] drm_test_framebuffer_lookup_inexistent
[21:36:22] [PASSED] drm_test_framebuffer_modifiers_not_supported
[21:36:22] ================= [PASSED] drm_framebuffer =================
[21:36:22] ================ drm_gem_shmem (8 subtests) ================
[21:36:22] [PASSED] drm_gem_shmem_test_obj_create
[21:36:22] [PASSED] drm_gem_shmem_test_obj_create_private
[21:36:22] [PASSED] drm_gem_shmem_test_pin_pages
[21:36:22] [PASSED] drm_gem_shmem_test_vmap
[21:36:22] [PASSED] drm_gem_shmem_test_get_pages_sgt
[21:36:22] [PASSED] drm_gem_shmem_test_get_sg_table
[21:36:22] [PASSED] drm_gem_shmem_test_madvise
[21:36:22] [PASSED] drm_gem_shmem_test_purge
[21:36:22] ================== [PASSED] drm_gem_shmem ==================
[21:36:22] === drm_atomic_helper_connector_hdmi_check (22 subtests) ===
[21:36:22] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[21:36:22] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
stty: 'standard input': Inappropriate ioctl for device
[21:36:22] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[21:36:22] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[21:36:22] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[21:36:22] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[21:36:22] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[21:36:22] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[21:36:22] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[21:36:22] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback
[21:36:22] [PASSED] drm_test_check_max_tmds_rate_format_fallback
[21:36:22] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[21:36:22] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[21:36:22] [PASSED] drm_test_check_output_bpc_dvi
[21:36:22] [PASSED] drm_test_check_output_bpc_format_vic_1
[21:36:22] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[21:36:22] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[21:36:22] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[21:36:22] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[21:36:22] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[21:36:22] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[21:36:22] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[21:36:22] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[21:36:22] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[21:36:22] [PASSED] drm_test_check_broadcast_rgb_value
[21:36:22] [PASSED] drm_test_check_bpc_8_value
[21:36:22] [PASSED] drm_test_check_bpc_10_value
[21:36:22] [PASSED] drm_test_check_bpc_12_value
[21:36:22] [PASSED] drm_test_check_format_value
[21:36:22] [PASSED] drm_test_check_tmds_char_value
[21:36:22] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[21:36:22] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[21:36:22] [PASSED] drm_test_check_mode_valid
[21:36:22] [PASSED] drm_test_check_mode_valid_reject
[21:36:22] [PASSED] drm_test_check_mode_valid_reject_rate
[21:36:22] [PASSED] drm_test_check_mode_valid_reject_max_clock
[21:36:22] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[21:36:22] ================= drm_managed (2 subtests) =================
[21:36:22] [PASSED] drm_test_managed_release_action
[21:36:22] [PASSED] drm_test_managed_run_action
[21:36:22] =================== [PASSED] drm_managed ===================
[21:36:22] =================== drm_mm (6 subtests) ====================
[21:36:22] [PASSED] drm_test_mm_init
[21:36:22] [PASSED] drm_test_mm_debug
[21:36:22] [PASSED] drm_test_mm_align32
[21:36:22] [PASSED] drm_test_mm_align64
[21:36:22] [PASSED] drm_test_mm_lowest
[21:36:22] [PASSED] drm_test_mm_highest
[21:36:22] ===================== [PASSED] drm_mm ======================
[21:36:22] ============= drm_modes_analog_tv (5 subtests) =============
[21:36:22] [PASSED] drm_test_modes_analog_tv_mono_576i
[21:36:22] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[21:36:22] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[21:36:22] [PASSED] drm_test_modes_analog_tv_pal_576i
[21:36:22] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[21:36:22] =============== [PASSED] drm_modes_analog_tv ===============
[21:36:22] ============== drm_plane_helper (2 subtests) ===============
[21:36:22] =============== drm_test_check_plane_state  ================
[21:36:22] [PASSED] clipping_simple
[21:36:22] [PASSED] clipping_rotate_reflect
[21:36:22] [PASSED] positioning_simple
[21:36:22] [PASSED] upscaling
[21:36:22] [PASSED] downscaling
[21:36:22] [PASSED] rounding1
[21:36:22] [PASSED] rounding2
[21:36:22] [PASSED] rounding3
[21:36:22] [PASSED] rounding4
[21:36:22] =========== [PASSED] drm_test_check_plane_state ============
[21:36:22] =========== drm_test_check_invalid_plane_state  ============
[21:36:22] [PASSED] positioning_invalid
[21:36:22] [PASSED] upscaling_invalid
[21:36:22] [PASSED] downscaling_invalid
[21:36:22] ======= [PASSED] drm_test_check_invalid_plane_state ========
[21:36:22] ================ [PASSED] drm_plane_helper =================
[21:36:22] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[21:36:22] ====== drm_test_connector_helper_tv_get_modes_check  =======
[21:36:22] [PASSED] None
[21:36:22] [PASSED] PAL
[21:36:22] [PASSED] NTSC
[21:36:22] [PASSED] Both, NTSC Default
[21:36:22] [PASSED] Both, PAL Default
[21:36:22] [PASSED] Both, NTSC Default, with PAL on command-line
[21:36:22] [PASSED] Both, PAL Default, with NTSC on command-line
[21:36:22] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[21:36:22] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[21:36:22] ================== drm_rect (9 subtests) ===================
[21:36:22] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[21:36:22] [PASSED] drm_test_rect_clip_scaled_not_clipped
[21:36:22] [PASSED] drm_test_rect_clip_scaled_clipped
[21:36:22] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[21:36:22] ================= drm_test_rect_intersect  =================
[21:36:22] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[21:36:22] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[21:36:22] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[21:36:22] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[21:36:22] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[21:36:22] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[21:36:22] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[21:36:22] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[21:36:22] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[21:36:22] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[21:36:22] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[21:36:22] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[21:36:22] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[21:36:22] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[21:36:22] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[21:36:22] ============= [PASSED] drm_test_rect_intersect =============
[21:36:22] ================ drm_test_rect_calc_hscale  ================
[21:36:22] [PASSED] normal use
[21:36:22] [PASSED] out of max range
[21:36:22] [PASSED] out of min range
[21:36:22] [PASSED] zero dst
[21:36:22] [PASSED] negative src
[21:36:22] [PASSED] negative dst
[21:36:22] ============ [PASSED] drm_test_rect_calc_hscale ============
[21:36:22] ================ drm_test_rect_calc_vscale  ================
[21:36:22] [PASSED] normal use
[21:36:22] [PASSED] out of max range
[21:36:22] [PASSED] out of min range
[21:36:22] [PASSED] zero dst
[21:36:22] [PASSED] negative src
[21:36:22] [PASSED] negative dst
[21:36:22] ============ [PASSED] drm_test_rect_calc_vscale ============
[21:36:22] ================== drm_test_rect_rotate  ===================
[21:36:22] [PASSED] reflect-x
[21:36:22] [PASSED] reflect-y
[21:36:22] [PASSED] rotate-0
[21:36:22] [PASSED] rotate-90
[21:36:22] [PASSED] rotate-180
[21:36:22] [PASSED] rotate-270
[21:36:22] ============== [PASSED] drm_test_rect_rotate ===============
[21:36:22] ================ drm_test_rect_rotate_inv  =================
[21:36:22] [PASSED] reflect-x
[21:36:22] [PASSED] reflect-y
[21:36:22] [PASSED] rotate-0
[21:36:22] [PASSED] rotate-90
[21:36:22] [PASSED] rotate-180
[21:36:22] [PASSED] rotate-270
[21:36:22] ============ [PASSED] drm_test_rect_rotate_inv =============
[21:36:22] ==================== [PASSED] drm_rect =====================
[21:36:22] ============================================================
[21:36:22] Testing complete. Ran 587 tests: passed: 587
[21:36:22] Elapsed time: 25.213s total, 1.692s configuring, 23.303s building, 0.180s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[21:36:22] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:36:24] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
[21:36:32] Starting KUnit Kernel (1/1)...
[21:36:32] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:36:32] ================= ttm_device (5 subtests) ==================
[21:36:32] [PASSED] ttm_device_init_basic
[21:36:32] [PASSED] ttm_device_init_multiple
[21:36:32] [PASSED] ttm_device_fini_basic
[21:36:32] [PASSED] ttm_device_init_no_vma_man
[21:36:32] ================== ttm_device_init_pools  ==================
[21:36:32] [PASSED] No DMA allocations, no DMA32 required
[21:36:32] [PASSED] DMA allocations, DMA32 required
[21:36:32] [PASSED] No DMA allocations, DMA32 required
[21:36:32] [PASSED] DMA allocations, no DMA32 required
[21:36:32] ============== [PASSED] ttm_device_init_pools ==============
[21:36:32] =================== [PASSED] ttm_device ====================
[21:36:32] ================== ttm_pool (8 subtests) ===================
[21:36:32] ================== ttm_pool_alloc_basic  ===================
[21:36:32] [PASSED] One page
[21:36:32] [PASSED] More than one page
[21:36:32] [PASSED] Above the allocation limit
[21:36:32] [PASSED] One page, with coherent DMA mappings enabled
[21:36:32] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[21:36:32] ============== [PASSED] ttm_pool_alloc_basic ===============
[21:36:32] ============== ttm_pool_alloc_basic_dma_addr  ==============
[21:36:32] [PASSED] One page
[21:36:32] [PASSED] More than one page
[21:36:32] [PASSED] Above the allocation limit
[21:36:32] [PASSED] One page, with coherent DMA mappings enabled
[21:36:32] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[21:36:32] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[21:36:32] [PASSED] ttm_pool_alloc_order_caching_match
[21:36:32] [PASSED] ttm_pool_alloc_caching_mismatch
[21:36:32] [PASSED] ttm_pool_alloc_order_mismatch
[21:36:32] [PASSED] ttm_pool_free_dma_alloc
[21:36:32] [PASSED] ttm_pool_free_no_dma_alloc
[21:36:32] [PASSED] ttm_pool_fini_basic
[21:36:32] ==================== [PASSED] ttm_pool =====================
[21:36:32] ================ ttm_resource (8 subtests) =================
[21:36:32] ================= ttm_resource_init_basic  =================
[21:36:32] [PASSED] Init resource in TTM_PL_SYSTEM
[21:36:32] [PASSED] Init resource in TTM_PL_VRAM
[21:36:32] [PASSED] Init resource in a private placement
[21:36:32] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[21:36:32] ============= [PASSED] ttm_resource_init_basic =============
[21:36:32] [PASSED] ttm_resource_init_pinned
[21:36:32] [PASSED] ttm_resource_fini_basic
[21:36:32] [PASSED] ttm_resource_manager_init_basic
[21:36:32] [PASSED] ttm_resource_manager_usage_basic
[21:36:32] [PASSED] ttm_resource_manager_set_used_basic
[21:36:32] [PASSED] ttm_sys_man_alloc_basic
[21:36:32] [PASSED] ttm_sys_man_free_basic
[21:36:32] ================== [PASSED] ttm_resource ===================
[21:36:32] =================== ttm_tt (15 subtests) ===================
[21:36:32] ==================== ttm_tt_init_basic  ====================
[21:36:32] [PASSED] Page-aligned size
[21:36:32] [PASSED] Extra pages requested
[21:36:32] ================ [PASSED] ttm_tt_init_basic ================
[21:36:32] [PASSED] ttm_tt_init_misaligned
[21:36:32] [PASSED] ttm_tt_fini_basic
[21:36:32] [PASSED] ttm_tt_fini_sg
[21:36:32] [PASSED] ttm_tt_fini_shmem
[21:36:32] [PASSED] ttm_tt_create_basic
[21:36:32] [PASSED] ttm_tt_create_invalid_bo_type
[21:36:32] [PASSED] ttm_tt_create_ttm_exists
[21:36:32] [PASSED] ttm_tt_create_failed
[21:36:32] [PASSED] ttm_tt_destroy_basic
[21:36:32] [PASSED] ttm_tt_populate_null_ttm
[21:36:32] [PASSED] ttm_tt_populate_populated_ttm
[21:36:32] [PASSED] ttm_tt_unpopulate_basic
[21:36:32] [PASSED] ttm_tt_unpopulate_empty_ttm
[21:36:32] [PASSED] ttm_tt_swapin_basic
[21:36:32] ===================== [PASSED] ttm_tt ======================
[21:36:32] =================== ttm_bo (14 subtests) ===================
[21:36:32] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[21:36:32] [PASSED] Cannot be interrupted and sleeps
[21:36:32] [PASSED] Cannot be interrupted, locks straight away
[21:36:32] [PASSED] Can be interrupted, sleeps
[21:36:32] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[21:36:32] [PASSED] ttm_bo_reserve_locked_no_sleep
[21:36:32] [PASSED] ttm_bo_reserve_no_wait_ticket
[21:36:32] [PASSED] ttm_bo_reserve_double_resv
[21:36:32] [PASSED] ttm_bo_reserve_interrupted
[21:36:32] [PASSED] ttm_bo_reserve_deadlock
[21:36:32] [PASSED] ttm_bo_unreserve_basic
[21:36:32] [PASSED] ttm_bo_unreserve_pinned
[21:36:32] [PASSED] ttm_bo_unreserve_bulk
[21:36:32] [PASSED] ttm_bo_put_basic
[21:36:32] [PASSED] ttm_bo_put_shared_resv
[21:36:32] [PASSED] ttm_bo_pin_basic
[21:36:32] [PASSED] ttm_bo_pin_unpin_resource
[21:36:32] [PASSED] ttm_bo_multiple_pin_one_unpin
[21:36:32] ===================== [PASSED] ttm_bo ======================
[21:36:32] ============== ttm_bo_validate (22 subtests) ===============
[21:36:32] ============== ttm_bo_init_reserved_sys_man  ===============
[21:36:32] [PASSED] Buffer object for userspace
[21:36:32] [PASSED] Kernel buffer object
[21:36:32] [PASSED] Shared buffer object
[21:36:32] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[21:36:32] ============== ttm_bo_init_reserved_mock_man  ==============
[21:36:32] [PASSED] Buffer object for userspace
[21:36:32] [PASSED] Kernel buffer object
[21:36:32] [PASSED] Shared buffer object
[21:36:32] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[21:36:32] [PASSED] ttm_bo_init_reserved_resv
[21:36:32] ================== ttm_bo_validate_basic  ==================
[21:36:32] [PASSED] Buffer object for userspace
[21:36:32] [PASSED] Kernel buffer object
[21:36:32] [PASSED] Shared buffer object
[21:36:32] ============== [PASSED] ttm_bo_validate_basic ==============
[21:36:32] [PASSED] ttm_bo_validate_invalid_placement
[21:36:32] ============= ttm_bo_validate_same_placement  ==============
[21:36:32] [PASSED] System manager
[21:36:32] [PASSED] VRAM manager
[21:36:32] ========= [PASSED] ttm_bo_validate_same_placement ==========
[21:36:32] [PASSED] ttm_bo_validate_failed_alloc
[21:36:32] [PASSED] ttm_bo_validate_pinned
[21:36:32] [PASSED] ttm_bo_validate_busy_placement
[21:36:32] ================ ttm_bo_validate_multihop  =================
[21:36:32] [PASSED] Buffer object for userspace
[21:36:32] [PASSED] Kernel buffer object
[21:36:32] [PASSED] Shared buffer object
[21:36:32] ============ [PASSED] ttm_bo_validate_multihop =============
[21:36:32] ========== ttm_bo_validate_no_placement_signaled  ==========
[21:36:32] [PASSED] Buffer object in system domain, no page vector
[21:36:32] [PASSED] Buffer object in system domain with an existing page vector
[21:36:32] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[21:36:32] ======== ttm_bo_validate_no_placement_not_signaled  ========
[21:36:32] [PASSED] Buffer object for userspace
[21:36:32] [PASSED] Kernel buffer object
[21:36:32] [PASSED] Shared buffer object
[21:36:32] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[21:36:32] [PASSED] ttm_bo_validate_move_fence_signaled
[21:36:32] ========= ttm_bo_validate_move_fence_not_signaled  =========
[21:36:32] [PASSED] Waits for GPU
[21:36:32] [PASSED] Tries to lock straight away
[21:36:32] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[21:36:32] [PASSED] ttm_bo_validate_swapout
[21:36:32] [PASSED] ttm_bo_validate_happy_evict
[21:36:32] [PASSED] ttm_bo_validate_all_pinned_evict
[21:36:32] [PASSED] ttm_bo_validate_allowed_only_evict
[21:36:32] [PASSED] ttm_bo_validate_deleted_evict
[21:36:32] [PASSED] ttm_bo_validate_busy_domain_evict
[21:36:32] [PASSED] ttm_bo_validate_evict_gutting
[21:36:32] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[21:36:32] ================= [PASSED] ttm_bo_validate =================
[21:36:32] ============================================================
[21:36:32] Testing complete. Ran 102 tests: passed: 102
[21:36:32] Elapsed time: 10.180s total, 1.697s configuring, 7.865s building, 0.521s 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 Add PXP HWDRM support (rev4)
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (15 preceding siblings ...)
  2025-01-06 21:36 ` ✓ CI.KUnit: success " Patchwork
@ 2025-01-06 21:54 ` Patchwork
  2025-01-06 21:57 ` ✓ CI.Hooks: " Patchwork
                   ` (3 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2025-01-06 21:54 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio; +Cc: intel-xe

== Series Details ==

Series: Add PXP HWDRM support (rev4)
URL   : https://patchwork.freedesktop.org/series/136052/
State : success

== Summary ==

lib/modules/6.13.0-rc6-xe+/kernel/arch/x86/events/rapl.ko
lib/modules/6.13.0-rc6-xe+/kernel/arch/x86/kvm/
lib/modules/6.13.0-rc6-xe+/kernel/arch/x86/kvm/kvm.ko
lib/modules/6.13.0-rc6-xe+/kernel/arch/x86/kvm/kvm-intel.ko
lib/modules/6.13.0-rc6-xe+/kernel/arch/x86/kvm/kvm-amd.ko
lib/modules/6.13.0-rc6-xe+/kernel/kernel/
lib/modules/6.13.0-rc6-xe+/kernel/kernel/kheaders.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/
lib/modules/6.13.0-rc6-xe+/kernel/crypto/ecrdsa_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/xcbc.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/serpent_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/aria_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/crypto_simd.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/adiantum.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/tcrypt.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/crypto_engine.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/zstd.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/asymmetric_keys/
lib/modules/6.13.0-rc6-xe+/kernel/crypto/asymmetric_keys/pkcs7_test_key.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/asymmetric_keys/pkcs8_key_parser.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/des_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/xctr.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/authenc.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/sm4_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/keywrap.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/camellia_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/sm3.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/pcrypt.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/aegis128.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/af_alg.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/algif_aead.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/cmac.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/sm3_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/aes_ti.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/chacha_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/poly1305_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/nhpoly1305.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/crc32_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/essiv.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/ccm.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/wp512.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/streebog_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/authencesn.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/echainiv.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/lrw.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/cryptd.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/crypto_user.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/algif_hash.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/vmac.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/polyval-generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/hctr2.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/842.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/pcbc.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/ansi_cprng.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/cast6_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/twofish_common.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/twofish_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/lz4hc.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/blowfish_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/md4.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/chacha20poly1305.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/curve25519-generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/lz4.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/rmd160.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/algif_skcipher.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/cast5_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/fcrypt.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/ecdsa_generic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/sm4.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/cast_common.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/blowfish_common.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/michael_mic.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/async_tx/
lib/modules/6.13.0-rc6-xe+/kernel/crypto/async_tx/async_xor.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/async_tx/async_tx.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/async_tx/async_pq.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/6.13.0-rc6-xe+/kernel/crypto/algif_rng.ko
lib/modules/6.13.0-rc6-xe+/kernel/block/
lib/modules/6.13.0-rc6-xe+/kernel/block/bfq.ko
lib/modules/6.13.0-rc6-xe+/kernel/block/kyber-iosched.ko
lib/modules/6.13.0-rc6-xe+/build
lib/modules/6.13.0-rc6-xe+/modules.alias.bin
lib/modules/6.13.0-rc6-xe+/modules.builtin
lib/modules/6.13.0-rc6-xe+/modules.softdep
lib/modules/6.13.0-rc6-xe+/modules.alias
lib/modules/6.13.0-rc6-xe+/modules.order
lib/modules/6.13.0-rc6-xe+/modules.symbols
lib/modules/6.13.0-rc6-xe+/modules.dep.bin
+ mv kernel-nodebug.tar.gz ..
+ cd ..
+ rm -rf archive
++ date +%s
+ echo -e '\e[0Ksection_end:1736200471:package_x86_64_nodebug\r\e[0K'
^[[0Ksection_end:1736200471:package_x86_64_nodebug
^[[0K
+ sync
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✓ CI.Hooks: success for Add PXP HWDRM support (rev4)
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (16 preceding siblings ...)
  2025-01-06 21:54 ` ✓ CI.Build: " Patchwork
@ 2025-01-06 21:57 ` Patchwork
  2025-01-06 21:58 ` ✓ CI.checksparse: " Patchwork
                   ` (2 subsequent siblings)
  20 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2025-01-06 21:57 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio; +Cc: intel-xe

== Series Details ==

Series: Add PXP HWDRM support (rev4)
URL   : https://patchwork.freedesktop.org/series/136052/
State : success

== 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
mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool 
  CALL    ../scripts/checksyscalls.sh
  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_dump.o
  CC      /workspace/kernel/build64-default/tools/objtool/orc_gen.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o
  CC      /workspace/kernel/build64-default/tools/objtool/libctype.o
  CC      /workspace/kernel/build64-default/tools/objtool/libstring.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o
  CC      /workspace/kernel/build64-default/tools/objtool/str_error_r.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o
  CC      /workspace/kernel/build64-default/tools/objtool/librbtree.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 W=1 drivers/gpu/drm/xe
make[1]: Entering directory '/workspace/kernel/build64-default'
make[2]: Nothing to be done for 'drivers/gpu/drm/xe'.
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/menu.o
  HOSTCC  scripts/kconfig/preprocess.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/fragments/10-xe.fragment
Using .config as base
Merging /workspace/ci/kernel/fragments/10-xe.fragment
Value of CONFIG_DRM_XE is redefined by fragment /workspace/ci/kernel/fragments/10-xe.fragment:
Previous value: # CONFIG_DRM_XE is not set
New value: CONFIG_DRM_XE=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 [=m] && HAS_IOPORT [=y]
#
# 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_VMSPLIT_3G not in final .config
Requested value:  CONFIG_VMSPLIT_3G=y
Actual value:     

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

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

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

Value requested for CONFIG_VMSPLIT_1G not in final .config
Requested value:  # CONFIG_VMSPLIT_1G 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_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_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 [=m] && HAS_IOPORT [=y]
#
# 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 [=m] && HAS_IOPORT [=y]

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 [=m] && HAS_IOPORT [=y]

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



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

* ✓ CI.checksparse: success for Add PXP HWDRM support (rev4)
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (17 preceding siblings ...)
  2025-01-06 21:57 ` ✓ CI.Hooks: " Patchwork
@ 2025-01-06 21:58 ` Patchwork
  2025-01-06 22:28 ` ✗ Xe.CI.BAT: failure " Patchwork
  2025-01-07 23:28 ` ✗ Xe.CI.Full: " Patchwork
  20 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2025-01-06 21:58 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio; +Cc: intel-xe

== Series Details ==

Series: Add PXP HWDRM support (rev4)
URL   : https://patchwork.freedesktop.org/series/136052/
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 bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
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

* ✗ Xe.CI.BAT: failure for Add PXP HWDRM support (rev4)
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (18 preceding siblings ...)
  2025-01-06 21:58 ` ✓ CI.checksparse: " Patchwork
@ 2025-01-06 22:28 ` Patchwork
  2025-01-07 23:28 ` ✗ Xe.CI.Full: " Patchwork
  20 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2025-01-06 22:28 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio; +Cc: intel-xe

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

== Series Details ==

Series: Add PXP HWDRM support (rev4)
URL   : https://patchwork.freedesktop.org/series/136052/
State : failure

== Summary ==

CI Bug Log - changes from xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd_BAT -> xe-pw-136052v4_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-136052v4_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-136052v4_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 (9 -> 8)
------------------------------

  Missing    (1): bat-adlp-vm 

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

  Here are the unknown changes that may have been introduced in xe-pw-136052v4_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_create@create-invalid-mbz:
    - bat-atsm-2:         [PASS][1] -> [FAIL][2] +1 other test fail
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/bat-atsm-2/igt@xe_create@create-invalid-mbz.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/bat-atsm-2/igt@xe_create@create-invalid-mbz.html
    - bat-adlp-vf:        [PASS][3] -> [FAIL][4] +1 other test fail
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/bat-adlp-vf/igt@xe_create@create-invalid-mbz.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/bat-adlp-vf/igt@xe_create@create-invalid-mbz.html
    - bat-pvc-2:          [PASS][5] -> [FAIL][6] +1 other test fail
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/bat-pvc-2/igt@xe_create@create-invalid-mbz.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/bat-pvc-2/igt@xe_create@create-invalid-mbz.html
    - bat-bmg-2:          [PASS][7] -> [FAIL][8] +1 other test fail
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/bat-bmg-2/igt@xe_create@create-invalid-mbz.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/bat-bmg-2/igt@xe_create@create-invalid-mbz.html
    - bat-bmg-1:          [PASS][9] -> [FAIL][10] +1 other test fail
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/bat-bmg-1/igt@xe_create@create-invalid-mbz.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/bat-bmg-1/igt@xe_create@create-invalid-mbz.html
    - bat-lnl-2:          [PASS][11] -> [FAIL][12] +1 other test fail
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/bat-lnl-2/igt@xe_create@create-invalid-mbz.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/bat-lnl-2/igt@xe_create@create-invalid-mbz.html

  * igt@xe_exec_queue_property@invalid-property:
    - bat-dg2-oem2:       [PASS][13] -> [FAIL][14] +1 other test fail
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/bat-dg2-oem2/igt@xe_exec_queue_property@invalid-property.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/bat-dg2-oem2/igt@xe_exec_queue_property@invalid-property.html
    - bat-lnl-1:          [PASS][15] -> [FAIL][16] +1 other test fail
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/bat-lnl-1/igt@xe_exec_queue_property@invalid-property.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/bat-lnl-1/igt@xe_exec_queue_property@invalid-property.html

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

  Here are the changes found in xe-pw-136052v4_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@xe_live_ktest@xe_migrate:
    - bat-adlp-vf:        [PASS][17] -> [SKIP][18] ([Intel XE#1192]) +1 other test skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/bat-adlp-vf/igt@xe_live_ktest@xe_migrate.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/bat-adlp-vf/igt@xe_live_ktest@xe_migrate.html

  * igt@xe_pat@pat-index-xelp@render:
    - bat-adlp-vf:        [PASS][19] -> [DMESG-WARN][20] ([Intel XE#3958]) +1 other test dmesg-warn
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/bat-adlp-vf/igt@xe_pat@pat-index-xelp@render.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/bat-adlp-vf/igt@xe_pat@pat-index-xelp@render.html

  
#### Warnings ####

  * igt@xe_live_ktest@xe_bo:
    - bat-adlp-vf:        [SKIP][21] ([Intel XE#2229] / [Intel XE#455]) -> [SKIP][22] ([Intel XE#1192])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html

  
  [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
  [Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
  [Intel XE#3958]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3958
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455


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

  * IGT: IGT_8175 -> IGT_8176
  * Linux: xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd -> xe-pw-136052v4

  IGT_8175: c982ba23a3a3cfda0abe57e18ab16f719ef5de79 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8176: 5e65135d3d7cf5298a58bcd6137c77205704bcf9 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd: bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd
  xe-pw-136052v4: 136052v4

== Logs ==

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

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

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

* ✗ Xe.CI.Full: failure for Add PXP HWDRM support (rev4)
  2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
                   ` (19 preceding siblings ...)
  2025-01-06 22:28 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2025-01-07 23:28 ` Patchwork
  20 siblings, 0 replies; 27+ messages in thread
From: Patchwork @ 2025-01-07 23:28 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio; +Cc: intel-xe

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

== Series Details ==

Series: Add PXP HWDRM support (rev4)
URL   : https://patchwork.freedesktop.org/series/136052/
State : failure

== Summary ==

CI Bug Log - changes from xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd_full -> xe-pw-136052v4_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-136052v4_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-136052v4_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 (4 -> 4)
------------------------------

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-136052v4_full:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_atomic_interruptible@universal-setplane-cursor:
    - shard-dg2-set2:     [PASS][1] -> [INCOMPLETE][2] +3 other tests incomplete
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_atomic_interruptible@universal-setplane-cursor.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_atomic_interruptible@universal-setplane-cursor.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-3:
    - shard-bmg:          [PASS][3] -> [FAIL][4] +2 other tests fail
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-5/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-3.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-b-hdmi-a-3.html

  * igt@xe_create@create-invalid-mbz:
    - shard-adlp:         [PASS][5] -> [FAIL][6] +1 other test fail
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-3/igt@xe_create@create-invalid-mbz.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-8/igt@xe_create@create-invalid-mbz.html

  * igt@xe_exec_queue_property@invalid-property:
    - shard-lnl:          [PASS][7] -> [FAIL][8] +2 other tests fail
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-4/igt@xe_exec_queue_property@invalid-property.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-6/igt@xe_exec_queue_property@invalid-property.html

  * igt@xe_vm@bind-flag-invalid:
    - shard-bmg:          NOTRUN -> [FAIL][9] +1 other test fail
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@xe_vm@bind-flag-invalid.html
    - shard-adlp:         NOTRUN -> [FAIL][10]
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-6/igt@xe_vm@bind-flag-invalid.html

  
#### Warnings ####

  * igt@xe_create@create-invalid-mbz:
    - shard-dg2-set2:     [SKIP][11] ([Intel XE#1130]) -> [FAIL][12]
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_create@create-invalid-mbz.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@xe_create@create-invalid-mbz.html

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

  Here are the changes found in xe-pw-136052v4_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@core_getstats:
    - shard-dg2-set2:     [PASS][13] -> [SKIP][14] ([Intel XE#2423]) +1 other test skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@core_getstats.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@core_getstats.html

  * igt@core_getversion@all-cards:
    - shard-dg2-set2:     [PASS][15] -> [FAIL][16] ([Intel XE#3440])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@core_getversion@all-cards.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@core_getversion@all-cards.html

  * igt@core_hotunplug@hotunplug-rescan:
    - shard-adlp:         NOTRUN -> [ABORT][17] ([Intel XE#3914])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-6/igt@core_hotunplug@hotunplug-rescan.html

  * igt@core_hotunplug@unplug-rescan:
    - shard-dg2-set2:     [PASS][18] -> [SKIP][19] ([Intel XE#1885]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@core_hotunplug@unplug-rescan.html
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@core_hotunplug@unplug-rescan.html

  * igt@fbdev@unaligned-write:
    - shard-dg2-set2:     [PASS][20] -> [SKIP][21] ([Intel XE#2134])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@fbdev@unaligned-write.html
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@fbdev@unaligned-write.html

  * igt@kms_async_flips@crc-atomic@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][22] ([Intel XE#3781])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_async_flips@crc-atomic@pipe-a-hdmi-a-6.html

  * igt@kms_async_flips@invalid-async-flip@pipe-b-hdmi-a-1:
    - shard-adlp:         [PASS][23] -> [DMESG-WARN][24] ([Intel XE#1033]) +1 other test dmesg-warn
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-1/igt@kms_async_flips@invalid-async-flip@pipe-b-hdmi-a-1.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-8/igt@kms_async_flips@invalid-async-flip@pipe-b-hdmi-a-1.html

  * igt@kms_atomic_transition@modeset-transition-nonblocking-fencing:
    - shard-dg2-set2:     NOTRUN -> [SKIP][25] ([Intel XE#2423] / [i915#2575]) +11 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_atomic_transition@modeset-transition-nonblocking-fencing.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#2370])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-90:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#2327]) +1 other test skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][28] ([Intel XE#316]) +1 other test skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-addfb-size-offset-overflow:
    - shard-adlp:         NOTRUN -> [SKIP][29] ([Intel XE#607])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-8/igt@kms_big_fb@4-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@4-tiled-addfb-size-overflow:
    - shard-dg2-set2:     [PASS][30] -> [SKIP][31] ([Intel XE#2136]) +40 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_big_fb@4-tiled-addfb-size-overflow.html
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_big_fb@4-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - shard-lnl:          NOTRUN -> [SKIP][32] ([Intel XE#3658])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

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

  * igt@kms_big_fb@linear-8bpp-rotate-90:
    - shard-lnl:          NOTRUN -> [SKIP][34] ([Intel XE#1407])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-6/igt@kms_big_fb@linear-8bpp-rotate-90.html

  * igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180:
    - shard-bmg:          [PASS][35] -> [SKIP][36] ([Intel XE#2136] / [Intel XE#2231]) +1 other test skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180.html
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-90:
    - shard-adlp:         NOTRUN -> [SKIP][37] ([Intel XE#316])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-16bpp-rotate-180:
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#1124]) +12 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-adlp:         [PASS][39] -> [DMESG-FAIL][40] ([Intel XE#1033]) +8 other tests dmesg-fail
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-bmg:          NOTRUN -> [SKIP][41] ([Intel XE#2328]) +1 other test skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_big_fb@yf-tiled-addfb-size-overflow:
    - shard-bmg:          NOTRUN -> [SKIP][42] ([Intel XE#610])
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-lnl:          NOTRUN -> [SKIP][43] ([Intel XE#1124]) +5 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180:
    - shard-dg2-set2:     NOTRUN -> [SKIP][44] ([Intel XE#1124])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180.html

  * igt@kms_bw@connected-linear-tiling-3-displays-3840x2160p:
    - shard-lnl:          NOTRUN -> [SKIP][45] ([Intel XE#2191])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@kms_bw@connected-linear-tiling-3-displays-3840x2160p.html

  * igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p:
    - shard-adlp:         NOTRUN -> [SKIP][46] ([Intel XE#2191]) +1 other test skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-3/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html
    - shard-lnl:          NOTRUN -> [SKIP][47] ([Intel XE#1512])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html

  * igt@kms_bw@linear-tiling-2-displays-2160x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][48] ([Intel XE#367]) +1 other test skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][49] ([Intel XE#787]) +26 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][50] ([Intel XE#2887]) +9 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-8/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][51] ([Intel XE#2136] / [Intel XE#2351]) +4 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_ccs@ccs-on-another-bo-y-tiled-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][52] ([Intel XE#455] / [Intel XE#787]) +21 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4.html

  * igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][53] ([Intel XE#2887]) +14 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc:
    - shard-lnl:          NOTRUN -> [SKIP][54] ([Intel XE#3432]) +1 other test skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][55] ([Intel XE#3432])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs:
    - shard-adlp:         NOTRUN -> [SKIP][56] ([Intel XE#455] / [Intel XE#787]) +17 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-3/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-mc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs:
    - shard-dg2-set2:     [PASS][57] -> [INCOMPLETE][58] ([Intel XE#2705])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs.html
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
    - shard-adlp:         NOTRUN -> [SKIP][59] ([Intel XE#2907]) +2 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-6/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2:
    - shard-bmg:          NOTRUN -> [SKIP][60] ([Intel XE#2652] / [Intel XE#787]) +17 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [SKIP][61] ([Intel XE#787]) +146 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-mtl-mc-ccs@pipe-b-hdmi-a-6.html

  * igt@kms_cdclk@plane-scaling:
    - shard-lnl:          NOTRUN -> [SKIP][62] ([Intel XE#1152]) +3 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@kms_cdclk@plane-scaling.html

  * igt@kms_chamelium_audio@hdmi-audio-edid:
    - shard-bmg:          NOTRUN -> [SKIP][63] ([Intel XE#2252]) +7 other tests skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_chamelium_audio@hdmi-audio-edid.html

  * igt@kms_chamelium_color@ctm-0-25:
    - shard-bmg:          NOTRUN -> [SKIP][64] ([Intel XE#2325])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_chamelium_color@ctm-0-25.html

  * igt@kms_chamelium_color@ctm-blue-to-red:
    - shard-lnl:          NOTRUN -> [SKIP][65] ([Intel XE#306]) +1 other test skip
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@kms_chamelium_color@ctm-blue-to-red.html
    - shard-adlp:         NOTRUN -> [SKIP][66] ([Intel XE#306])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@kms_chamelium_color@ctm-blue-to-red.html

  * igt@kms_chamelium_color@ctm-limited-range:
    - shard-dg2-set2:     NOTRUN -> [SKIP][67] ([Intel XE#306])
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_chamelium_color@ctm-limited-range.html

  * igt@kms_chamelium_edid@dp-edid-resolution-list:
    - shard-adlp:         NOTRUN -> [SKIP][68] ([Intel XE#373]) +10 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-1/igt@kms_chamelium_edid@dp-edid-resolution-list.html

  * igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe:
    - shard-lnl:          NOTRUN -> [SKIP][69] ([Intel XE#373]) +8 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html

  * igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode:
    - shard-dg2-set2:     NOTRUN -> [SKIP][70] ([Intel XE#373]) +1 other test skip
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode.html

  * igt@kms_content_protection@content-type-change:
    - shard-lnl:          NOTRUN -> [SKIP][71] ([Intel XE#3278])
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-4/igt@kms_content_protection@content-type-change.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-adlp:         NOTRUN -> [SKIP][72] ([Intel XE#307])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-8/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-lnl:          NOTRUN -> [SKIP][73] ([Intel XE#307]) +1 other test skip
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@lic-type-0@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][74] ([Intel XE#1178]) +1 other test fail
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_content_protection@lic-type-0@pipe-a-dp-2.html

  * igt@kms_content_protection@type1:
    - shard-bmg:          NOTRUN -> [SKIP][75] ([Intel XE#2341])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_content_protection@type1.html

  * igt@kms_cursor_crc@cursor-offscreen-128x42:
    - shard-bmg:          NOTRUN -> [SKIP][76] ([Intel XE#2320]) +5 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_cursor_crc@cursor-offscreen-128x42.html

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-bmg:          NOTRUN -> [SKIP][77] ([Intel XE#2321])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_cursor_crc@cursor-rapid-movement-128x42:
    - shard-lnl:          NOTRUN -> [SKIP][78] ([Intel XE#1424]) +4 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@kms_cursor_crc@cursor-rapid-movement-128x42.html

  * igt@kms_cursor_crc@cursor-sliding-64x64:
    - shard-dg2-set2:     [PASS][79] -> [SKIP][80] ([Intel XE#2423] / [i915#2575]) +115 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_cursor_crc@cursor-sliding-64x64.html
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_cursor_crc@cursor-sliding-64x64.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
    - shard-lnl:          NOTRUN -> [SKIP][81] ([Intel XE#309]) +2 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy:
    - shard-adlp:         NOTRUN -> [SKIP][82] ([Intel XE#309])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-3/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
    - shard-bmg:          [PASS][83] -> [DMESG-WARN][84] ([Intel XE#877])
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc:
    - shard-bmg:          NOTRUN -> [SKIP][85] ([Intel XE#2244]) +1 other test skip
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-lnl:          NOTRUN -> [SKIP][86] ([Intel XE#2244])
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@kms_feature_discovery@chamelium:
    - shard-bmg:          NOTRUN -> [SKIP][87] ([Intel XE#2372])
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_feature_discovery@chamelium.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][88] ([Intel XE#701])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_feature_discovery@chamelium.html
    - shard-adlp:         NOTRUN -> [SKIP][89] ([Intel XE#701])
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@kms_feature_discovery@chamelium.html

  * igt@kms_feature_discovery@display-4x:
    - shard-adlp:         NOTRUN -> [SKIP][90] ([Intel XE#1138])
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-6/igt@kms_feature_discovery@display-4x.html
    - shard-lnl:          NOTRUN -> [SKIP][91] ([Intel XE#1138])
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-4/igt@kms_feature_discovery@display-4x.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-adlp:         NOTRUN -> [SKIP][92] ([Intel XE#1137])
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@kms_feature_discovery@dp-mst.html
    - shard-lnl:          NOTRUN -> [SKIP][93] ([Intel XE#1137])
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-6/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible:
    - shard-lnl:          NOTRUN -> [SKIP][94] ([Intel XE#1421]) +7 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-dp2-hdmi-a3:
    - shard-bmg:          NOTRUN -> [FAIL][95] ([Intel XE#2882] / [Intel XE#3288]) +1 other test fail
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-dp2-hdmi-a3.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a6-dp4:
    - shard-dg2-set2:     [PASS][96] -> [FAIL][97] ([Intel XE#3321]) +2 other tests fail
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a6-dp4.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a6-dp4.html

  * igt@kms_flip@2x-flip-vs-expired-vblank@bc-dp2-hdmi-a3:
    - shard-bmg:          [PASS][98] -> [FAIL][99] ([Intel XE#2882]) +1 other test fail
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-5/igt@kms_flip@2x-flip-vs-expired-vblank@bc-dp2-hdmi-a3.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank@bc-dp2-hdmi-a3.html

  * igt@kms_flip@2x-flip-vs-suspend@bc-dp2-hdmi-a3:
    - shard-bmg:          NOTRUN -> [FAIL][100] ([Intel XE#3879]) +6 other tests fail
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_flip@2x-flip-vs-suspend@bc-dp2-hdmi-a3.html

  * igt@kms_flip@2x-plain-flip:
    - shard-adlp:         NOTRUN -> [SKIP][101] ([Intel XE#310]) +6 other tests skip
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-1/igt@kms_flip@2x-plain-flip.html

  * igt@kms_flip@2x-plain-flip-fb-recreate:
    - shard-bmg:          [PASS][102] -> [SKIP][103] ([Intel XE#3007]) +10 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@kms_flip@2x-plain-flip-fb-recreate.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_flip@2x-plain-flip-fb-recreate.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
    - shard-dg2-set2:     [PASS][104] -> [INCOMPLETE][105] ([Intel XE#2049])
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html

  * igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6:
    - shard-dg2-set2:     [PASS][106] -> [FAIL][107] ([Intel XE#301]) +5 other tests fail
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6.html

  * igt@kms_flip@flip-vs-expired-vblank@c-dp4:
    - shard-dg2-set2:     [PASS][108] -> [FAIL][109] ([Intel XE#301] / [Intel XE#3321])
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_flip@flip-vs-expired-vblank@c-dp4.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_flip@flip-vs-expired-vblank@c-dp4.html

  * igt@kms_flip@flip-vs-suspend-interruptible@c-dp4:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][110] ([Intel XE#2597])
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_flip@flip-vs-suspend-interruptible@c-dp4.html

  * igt@kms_flip@plain-flip-fb-recreate@a-edp1:
    - shard-lnl:          [PASS][111] -> [FAIL][112] ([Intel XE#886]) +2 other tests fail
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-6/igt@kms_flip@plain-flip-fb-recreate@a-edp1.html
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-8/igt@kms_flip@plain-flip-fb-recreate@a-edp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling:
    - shard-dg2-set2:     [PASS][113] -> [SKIP][114] ([Intel XE#2136] / [Intel XE#2351]) +17 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-bmg:          NOTRUN -> [SKIP][115] ([Intel XE#2293]) +4 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][116] ([Intel XE#1401]) +3 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][117] ([Intel XE#1401] / [Intel XE#1745]) +3 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-4/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][118] ([Intel XE#1397] / [Intel XE#1745])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-downscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][119] ([Intel XE#1397])
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-16bpp-linear-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
    - shard-adlp:         [PASS][120] -> [DMESG-FAIL][121] ([Intel XE#1033] / [Intel XE#324]) +1 other test dmesg-fail
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-3/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][122] ([Intel XE#2293] / [Intel XE#2380]) +4 other tests skip
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling.html

  * igt@kms_force_connector_basic@force-connector-state:
    - shard-lnl:          NOTRUN -> [SKIP][123] ([Intel XE#352])
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-4/igt@kms_force_connector_basic@force-connector-state.html

  * igt@kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][124] ([Intel XE#2311]) +31 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-1p-offscren-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-plflip-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][125] ([Intel XE#651]) +1 other test skip
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [FAIL][126] ([Intel XE#2333]) +14 other tests fail
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][127] ([Intel XE#656]) +21 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-msflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][128] ([Intel XE#651]) +8 other tests skip
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][129] ([Intel XE#2136] / [Intel XE#2231]) +3 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-suspend:
    - shard-adlp:         NOTRUN -> [SKIP][130] ([Intel XE#651]) +7 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@kms_frontbuffer_tracking@fbcdrrs-suspend.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-adlp:         NOTRUN -> [SKIP][131] ([Intel XE#653]) +6 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][132] ([Intel XE#653]) +2 other tests skip
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen:
    - shard-bmg:          NOTRUN -> [SKIP][133] ([Intel XE#2313]) +25 other tests skip
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-blt:
    - shard-adlp:         NOTRUN -> [SKIP][134] ([Intel XE#656]) +27 other tests skip
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-8/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-blt.html

  * igt@kms_histogram@algo-color:
    - shard-adlp:         NOTRUN -> [SKIP][135] ([Intel XE#3897])
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-6/igt@kms_histogram@algo-color.html

  * igt@kms_histogram@global-basic:
    - shard-lnl:          NOTRUN -> [SKIP][136] ([Intel XE#3898])
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@kms_histogram@global-basic.html

  * igt@kms_histogram@global-color:
    - shard-bmg:          NOTRUN -> [SKIP][137] ([Intel XE#3898])
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_histogram@global-color.html

  * igt@kms_panel_fitting@atomic-fastset:
    - shard-dg2-set2:     NOTRUN -> [SKIP][138] ([Intel XE#455]) +5 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_panel_fitting@atomic-fastset.html
    - shard-bmg:          NOTRUN -> [SKIP][139] ([Intel XE#2486])
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_panel_fitting@atomic-fastset.html

  * igt@kms_plane_lowres@tiling-4:
    - shard-lnl:          NOTRUN -> [SKIP][140] ([Intel XE#599]) +3 other tests skip
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@kms_plane_lowres@tiling-4.html

  * igt@kms_plane_lowres@tiling-y:
    - shard-bmg:          NOTRUN -> [SKIP][141] ([Intel XE#2393])
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_plane_lowres@tiling-y.html

  * igt@kms_plane_lowres@tiling-y@pipe-b-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [DMESG-FAIL][142] ([Intel XE#1033]) +4 other tests dmesg-fail
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@kms_plane_lowres@tiling-y@pipe-b-hdmi-a-1.html

  * igt@kms_plane_lowres@tiling-y@pipe-d-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [FAIL][143] ([Intel XE#1874])
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@kms_plane_lowres@tiling-y@pipe-d-hdmi-a-1.html

  * igt@kms_plane_multiple@tiling-x:
    - shard-bmg:          NOTRUN -> [SKIP][144] ([Intel XE#3007]) +3 other tests skip
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_plane_multiple@tiling-x.html

  * igt@kms_plane_multiple@tiling-yf:
    - shard-bmg:          NOTRUN -> [SKIP][145] ([Intel XE#2493])
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-adlp:         NOTRUN -> [SKIP][146] ([Intel XE#455]) +16 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@kms_plane_scaling@intel-max-src-size.html
    - shard-lnl:          NOTRUN -> [SKIP][147] ([Intel XE#3307])
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-2/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-dp-4:
    - shard-dg2-set2:     NOTRUN -> [FAIL][148] ([Intel XE#361])
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_plane_scaling@intel-max-src-size@pipe-a-dp-4.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b:
    - shard-lnl:          NOTRUN -> [SKIP][149] ([Intel XE#2763]) +11 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-4/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b:
    - shard-bmg:          NOTRUN -> [SKIP][150] ([Intel XE#2763]) +19 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][151] ([Intel XE#870])
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-bmg:          NOTRUN -> [SKIP][152] ([Intel XE#2392])
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_pm_dc@dc5-psr.html
    - shard-adlp:         NOTRUN -> [SKIP][153] ([Intel XE#1129])
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-1/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@deep-pkgc:
    - shard-lnl:          NOTRUN -> [FAIL][154] ([Intel XE#2029])
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@kms_pm_dc@deep-pkgc.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][155] ([Intel XE#2499])
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][156] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#836])
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_pm_rpm@modeset-lpsp.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][157] ([Intel XE#2446])
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@kms_pm_rpm@system-suspend-modeset:
    - shard-dg2-set2:     [PASS][158] -> [SKIP][159] ([Intel XE#2446]) +5 other tests skip
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_pm_rpm@system-suspend-modeset.html
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_pm_rpm@system-suspend-modeset.html

  * igt@kms_pm_rpm@universal-planes:
    - shard-bmg:          NOTRUN -> [SKIP][160] ([Intel XE#2446])
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_pm_rpm@universal-planes.html

  * igt@kms_psr2_sf@pr-plane-move-sf-dmg-area:
    - shard-lnl:          NOTRUN -> [SKIP][161] ([Intel XE#2893]) +3 other tests skip
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@kms_psr2_sf@pr-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area:
    - shard-adlp:         NOTRUN -> [SKIP][162] ([Intel XE#1489]) +4 other tests skip
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-1/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][163] ([Intel XE#1489])
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb:
    - shard-bmg:          NOTRUN -> [SKIP][164] ([Intel XE#1489]) +8 other tests skip
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb.html

  * igt@kms_psr@fbc-pr-cursor-blt:
    - shard-bmg:          NOTRUN -> [SKIP][165] ([Intel XE#2234] / [Intel XE#2850]) +15 other tests skip
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_psr@fbc-pr-cursor-blt.html

  * igt@kms_psr@fbc-psr-sprite-render:
    - shard-dg2-set2:     NOTRUN -> [SKIP][166] ([Intel XE#2136]) +11 other tests skip
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_psr@fbc-psr-sprite-render.html

  * igt@kms_psr@fbc-psr2-primary-render:
    - shard-dg2-set2:     NOTRUN -> [SKIP][167] ([Intel XE#2850] / [Intel XE#929]) +1 other test skip
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_psr@fbc-psr2-primary-render.html

  * igt@kms_psr@pr-no-drrs:
    - shard-lnl:          NOTRUN -> [SKIP][168] ([Intel XE#1406]) +1 other test skip
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@kms_psr@pr-no-drrs.html

  * igt@kms_psr@psr2-no-drrs:
    - shard-adlp:         NOTRUN -> [SKIP][169] ([Intel XE#2850] / [Intel XE#929]) +8 other tests skip
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@kms_psr@psr2-no-drrs.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-bmg:          NOTRUN -> [SKIP][170] ([Intel XE#2414])
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@bad-pixel-format:
    - shard-bmg:          NOTRUN -> [SKIP][171] ([Intel XE#3414] / [Intel XE#3904]) +1 other test skip
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_rotation_crc@bad-pixel-format.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - shard-lnl:          NOTRUN -> [SKIP][172] ([Intel XE#1435])
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-a-edp-1:
    - shard-lnl:          [PASS][173] -> [FAIL][174] ([Intel XE#899])
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-4/igt@kms_universal_plane@cursor-fb-leak@pipe-a-edp-1.html
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-8/igt@kms_universal_plane@cursor-fb-leak@pipe-a-edp-1.html

  * igt@kms_vrr@negative-basic:
    - shard-lnl:          NOTRUN -> [SKIP][175] ([Intel XE#1499])
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@kms_vrr@negative-basic.html

  * igt@kms_vrr@seamless-rr-switch-virtual:
    - shard-bmg:          NOTRUN -> [SKIP][176] ([Intel XE#1499])
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_vrr@seamless-rr-switch-virtual.html

  * igt@xe_ccs@ctrl-surf-copy-new-ctx:
    - shard-adlp:         NOTRUN -> [SKIP][177] ([Intel XE#455] / [Intel XE#488])
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@xe_ccs@ctrl-surf-copy-new-ctx.html

  * igt@xe_ccs@suspend-resume@linear-compressed-compfmt0-vram01-vram01:
    - shard-bmg:          [PASS][178] -> [FAIL][179] ([Intel XE#3664]) +1 other test fail
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-5/igt@xe_ccs@suspend-resume@linear-compressed-compfmt0-vram01-vram01.html
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@xe_ccs@suspend-resume@linear-compressed-compfmt0-vram01-vram01.html

  * igt@xe_ccs@suspend-resume@tile4-compressed-compfmt0-system-vram01:
    - shard-bmg:          [PASS][180] -> [INCOMPLETE][181] ([Intel XE#3918])
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-5/igt@xe_ccs@suspend-resume@tile4-compressed-compfmt0-system-vram01.html
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@xe_ccs@suspend-resume@tile4-compressed-compfmt0-system-vram01.html

  * igt@xe_copy_basic@mem-set-linear-0x369:
    - shard-adlp:         NOTRUN -> [SKIP][182] ([Intel XE#1126])
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@xe_copy_basic@mem-set-linear-0x369.html

  * igt@xe_copy_basic@mem-set-linear-0xfd:
    - shard-dg2-set2:     NOTRUN -> [SKIP][183] ([Intel XE#1130]) +24 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_copy_basic@mem-set-linear-0xfd.html

  * igt@xe_eudebug@basic-close:
    - shard-lnl:          NOTRUN -> [SKIP][184] ([Intel XE#2905]) +5 other tests skip
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-6/igt@xe_eudebug@basic-close.html

  * igt@xe_eudebug@basic-vm-bind-ufence:
    - shard-bmg:          NOTRUN -> [SKIP][185] ([Intel XE#2905]) +11 other tests skip
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@xe_eudebug@basic-vm-bind-ufence.html

  * igt@xe_eudebug_online@interrupt-other:
    - shard-adlp:         NOTRUN -> [SKIP][186] ([Intel XE#2905]) +7 other tests skip
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@xe_eudebug_online@interrupt-other.html

  * igt@xe_evict@evict-beng-mixed-many-threads-large:
    - shard-bmg:          NOTRUN -> [TIMEOUT][187] ([Intel XE#1473])
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@xe_evict@evict-beng-mixed-many-threads-large.html

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-bmg:          [PASS][188] -> [TIMEOUT][189] ([Intel XE#1473])
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@xe_evict@evict-beng-mixed-many-threads-small.html
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * igt@xe_evict@evict-beng-mixed-threads-large:
    - shard-adlp:         NOTRUN -> [SKIP][190] ([Intel XE#261] / [Intel XE#688]) +3 other tests skip
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@xe_evict@evict-beng-mixed-threads-large.html

  * igt@xe_evict_ccs@evict-overcommit-simple:
    - shard-adlp:         NOTRUN -> [SKIP][191] ([Intel XE#688]) +1 other test skip
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@xe_evict_ccs@evict-overcommit-simple.html

  * igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen:
    - shard-lnl:          NOTRUN -> [SKIP][192] ([Intel XE#688]) +4 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@xe_evict_ccs@evict-overcommit-standalone-instantfree-reopen.html

  * igt@xe_exec_basic@many-null-rebind:
    - shard-dg2-set2:     [PASS][193] -> [SKIP][194] ([Intel XE#1130]) +215 other tests skip
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@xe_exec_basic@many-null-rebind.html
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_exec_basic@many-null-rebind.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate:
    - shard-adlp:         NOTRUN -> [SKIP][195] ([Intel XE#1392]) +5 other tests skip
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-invalidate.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate-race:
    - shard-bmg:          NOTRUN -> [SKIP][196] ([Intel XE#2322]) +7 other tests skip
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate-race.html

  * igt@xe_exec_basic@multigpu-no-exec-null-defer-mmap:
    - shard-lnl:          NOTRUN -> [SKIP][197] ([Intel XE#1392]) +7 other tests skip
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-8/igt@xe_exec_basic@multigpu-no-exec-null-defer-mmap.html

  * igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-race:
    - shard-dg2-set2:     NOTRUN -> [SKIP][198] ([Intel XE#288])
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-race.html

  * igt@xe_exec_fault_mode@once-bindexecqueue-userptr-invalidate-race-prefetch:
    - shard-bmg:          NOTRUN -> [SKIP][199] ([Intel XE#1130]) +4 other tests skip
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@xe_exec_fault_mode@once-bindexecqueue-userptr-invalidate-race-prefetch.html

  * igt@xe_exec_fault_mode@twice-userptr-invalidate-imm:
    - shard-adlp:         NOTRUN -> [SKIP][200] ([Intel XE#288]) +17 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-9/igt@xe_exec_fault_mode@twice-userptr-invalidate-imm.html

  * igt@xe_exec_fault_mode@twice-userptr-invalidate-race-imm:
    - shard-bmg:          [PASS][201] -> [SKIP][202] ([Intel XE#1130]) +23 other tests skip
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-5/igt@xe_exec_fault_mode@twice-userptr-invalidate-race-imm.html
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@xe_exec_fault_mode@twice-userptr-invalidate-race-imm.html

  * igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence:
    - shard-adlp:         NOTRUN -> [SKIP][203] ([Intel XE#2360])
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-1/igt@xe_exec_mix_modes@exec-simple-batch-store-dma-fence.html

  * igt@xe_media_fill@media-fill:
    - shard-bmg:          NOTRUN -> [SKIP][204] ([Intel XE#2459] / [Intel XE#2596])
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@xe_media_fill@media-fill.html

  * igt@xe_mmap@small-bar:
    - shard-lnl:          NOTRUN -> [SKIP][205] ([Intel XE#512])
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-8/igt@xe_mmap@small-bar.html

  * igt@xe_module_load@many-reload:
    - shard-dg2-set2:     NOTRUN -> [FAIL][206] ([Intel XE#3546])
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_module_load@many-reload.html

  * igt@xe_module_load@reload-no-display:
    - shard-dg2-set2:     [PASS][207] -> [FAIL][208] ([Intel XE#3546])
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@xe_module_load@reload-no-display.html
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_module_load@reload-no-display.html

  * igt@xe_noexec_ping_pong:
    - shard-lnl:          NOTRUN -> [SKIP][209] ([Intel XE#379])
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@xe_noexec_ping_pong.html

  * igt@xe_oa@create-destroy-userspace-config:
    - shard-adlp:         NOTRUN -> [SKIP][210] ([Intel XE#2541] / [Intel XE#3573]) +4 other tests skip
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-1/igt@xe_oa@create-destroy-userspace-config.html

  * igt@xe_oa@invalid-create-userspace-config:
    - shard-dg2-set2:     NOTRUN -> [SKIP][211] ([Intel XE#2541] / [Intel XE#3573])
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@xe_oa@invalid-create-userspace-config.html

  * igt@xe_oa@oa-tlb-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][212] ([Intel XE#2248])
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@xe_oa@oa-tlb-invalidate.html

  * igt@xe_pm@d3cold-mmap-vram:
    - shard-dg2-set2:     NOTRUN -> [SKIP][213] ([Intel XE#2284] / [Intel XE#366])
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@xe_pm@d3cold-mmap-vram.html
    - shard-adlp:         NOTRUN -> [SKIP][214] ([Intel XE#2284] / [Intel XE#366])
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@xe_pm@d3cold-mmap-vram.html

  * igt@xe_pm@d3cold-mocs:
    - shard-bmg:          NOTRUN -> [SKIP][215] ([Intel XE#2284]) +4 other tests skip
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@xe_pm@d3cold-mocs.html

  * igt@xe_pm@s4-basic:
    - shard-lnl:          [PASS][216] -> [ABORT][217] ([Intel XE#1358] / [Intel XE#1607])
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-4/igt@xe_pm@s4-basic.html
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-2/igt@xe_pm@s4-basic.html

  * igt@xe_pm@vram-d3cold-threshold:
    - shard-lnl:          NOTRUN -> [SKIP][218] ([Intel XE#579])
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-4/igt@xe_pm@vram-d3cold-threshold.html
    - shard-adlp:         NOTRUN -> [SKIP][219] ([Intel XE#579])
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-6/igt@xe_pm@vram-d3cold-threshold.html

  * igt@xe_pm_residency@gt-c6-freeze@gt0:
    - shard-adlp:         [PASS][220] -> [DMESG-WARN][221] ([Intel XE#2953]) +4 other tests dmesg-warn
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-8/igt@xe_pm_residency@gt-c6-freeze@gt0.html
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-8/igt@xe_pm_residency@gt-c6-freeze@gt0.html

  * igt@xe_pm_residency@toggle-gt-c6:
    - shard-lnl:          [PASS][222] -> [FAIL][223] ([Intel XE#958])
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-1/igt@xe_pm_residency@toggle-gt-c6.html
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-2/igt@xe_pm_residency@toggle-gt-c6.html

  * igt@xe_query@multigpu-query-mem-usage:
    - shard-bmg:          NOTRUN -> [SKIP][224] ([Intel XE#944])
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@xe_query@multigpu-query-mem-usage.html

  * igt@xe_query@multigpu-query-topology-l3-bank-mask:
    - shard-lnl:          NOTRUN -> [SKIP][225] ([Intel XE#944]) +1 other test skip
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@xe_query@multigpu-query-topology-l3-bank-mask.html
    - shard-adlp:         NOTRUN -> [SKIP][226] ([Intel XE#944]) +1 other test skip
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-9/igt@xe_query@multigpu-query-topology-l3-bank-mask.html

  
#### Possible fixes ####

  * igt@core_getversion@basic:
    - shard-dg2-set2:     [FAIL][227] ([Intel XE#3440]) -> [PASS][228]
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@core_getversion@basic.html
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@core_getversion@basic.html

  * igt@core_hotunplug@hotreplug-lateclose:
    - shard-dg2-set2:     [SKIP][229] ([Intel XE#1885]) -> [PASS][230] +1 other test pass
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@core_hotunplug@hotreplug-lateclose.html
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@core_hotunplug@hotreplug-lateclose.html

  * igt@fbdev@info:
    - shard-dg2-set2:     [SKIP][231] ([Intel XE#2134]) -> [PASS][232] +1 other test pass
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@fbdev@info.html
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@fbdev@info.html

  * igt@kms_async_flips@async-flip-with-page-flip-events-atomic:
    - shard-lnl:          [FAIL][233] ([Intel XE#3719]) -> [PASS][234] +3 other tests pass
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-1/igt@kms_async_flips@async-flip-with-page-flip-events-atomic.html
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-2/igt@kms_async_flips@async-flip-with-page-flip-events-atomic.html

  * igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-b-hdmi-a-1-y:
    - shard-adlp:         [DMESG-WARN][235] ([Intel XE#1033]) -> [PASS][236] +6 other tests pass
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-9/igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-b-hdmi-a-1-y.html
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-3/igt@kms_async_flips@async-flip-with-page-flip-events-atomic@pipe-b-hdmi-a-1-y.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180:
    - shard-dg2-set2:     [SKIP][237] ([Intel XE#2136] / [Intel XE#2351]) -> [PASS][238] +11 other tests pass
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180.html
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-adlp:         [DMESG-FAIL][239] ([Intel XE#1033]) -> [PASS][240] +8 other tests pass
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-3/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_cursor_crc@cursor-suspend:
    - shard-bmg:          [FAIL][241] -> [PASS][242] +4 other tests pass
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-3/igt@kms_cursor_crc@cursor-suspend.html
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_cursor_crc@cursor-suspend.html

  * igt@kms_flip@2x-flip-vs-absolute-wf_vblank@ab-dp2-hdmi-a3:
    - shard-bmg:          [FAIL][243] ([Intel XE#2882]) -> [PASS][244] +3 other tests pass
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-5/igt@kms_flip@2x-flip-vs-absolute-wf_vblank@ab-dp2-hdmi-a3.html
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_flip@2x-flip-vs-absolute-wf_vblank@ab-dp2-hdmi-a3.html

  * igt@kms_flip@2x-flip-vs-suspend@ad-dp2-hdmi-a3:
    - shard-bmg:          [INCOMPLETE][245] -> [PASS][246]
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-3/igt@kms_flip@2x-flip-vs-suspend@ad-dp2-hdmi-a3.html
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-5/igt@kms_flip@2x-flip-vs-suspend@ad-dp2-hdmi-a3.html

  * igt@kms_flip@blocking-absolute-wf_vblank@d-hdmi-a1:
    - shard-adlp:         [INCOMPLETE][247] -> [PASS][248] +1 other test pass
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-1/igt@kms_flip@blocking-absolute-wf_vblank@d-hdmi-a1.html
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-1/igt@kms_flip@blocking-absolute-wf_vblank@d-hdmi-a1.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-dg2-set2:     [INCOMPLETE][249] ([Intel XE#2049] / [Intel XE#2597]) -> [PASS][250]
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_flip@flip-vs-suspend.html
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_flip@flip-vs-suspend-interruptible@c-dp2:
    - shard-bmg:          [INCOMPLETE][251] ([Intel XE#2597]) -> [PASS][252]
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-5/igt@kms_flip@flip-vs-suspend-interruptible@c-dp2.html
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_flip@flip-vs-suspend-interruptible@c-dp2.html

  * igt@kms_flip@flip-vs-suspend@d-dp4:
    - shard-dg2-set2:     [INCOMPLETE][253] ([Intel XE#2049]) -> [PASS][254]
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_flip@flip-vs-suspend@d-dp4.html
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_flip@flip-vs-suspend@d-dp4.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible@a-hdmi-a1:
    - shard-adlp:         [FAIL][255] ([Intel XE#2882]) -> [PASS][256] +1 other test pass
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-3/igt@kms_flip@wf_vblank-ts-check-interruptible@a-hdmi-a1.html
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@kms_flip@wf_vblank-ts-check-interruptible@a-hdmi-a1.html

  * igt@kms_flip@wf_vblank-ts-check@a-edp1:
    - shard-lnl:          [FAIL][257] ([Intel XE#886]) -> [PASS][258] +1 other test pass
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-5/igt@kms_flip@wf_vblank-ts-check@a-edp1.html
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-4/igt@kms_flip@wf_vblank-ts-check@a-edp1.html

  * igt@kms_frontbuffer_tracking@basic:
    - shard-dg2-set2:     [SKIP][259] ([Intel XE#2351]) -> [PASS][260]
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_frontbuffer_tracking@basic.html
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-wc:
    - shard-dg2-set2:     [SKIP][261] ([Intel XE#2136]) -> [PASS][262] +33 other tests pass
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-wc.html
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-mmap-wc.html

  * igt@kms_getfb@getfb-addfb-different-handles:
    - shard-bmg:          [SKIP][263] ([Intel XE#3007]) -> [PASS][264] +1 other test pass
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-5/igt@kms_getfb@getfb-addfb-different-handles.html
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_getfb@getfb-addfb-different-handles.html

  * igt@kms_lease@setcrtc-implicit-plane:
    - shard-bmg:          [DMESG-WARN][265] ([Intel XE#877]) -> [PASS][266] +3 other tests pass
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@kms_lease@setcrtc-implicit-plane.html
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_lease@setcrtc-implicit-plane.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-dp-2:
    - shard-bmg:          [FAIL][267] ([Intel XE#3974]) -> [PASS][268]
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-5/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-dp-2.html
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-dp-2.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25:
    - shard-dg2-set2:     [SKIP][269] ([Intel XE#2423] / [i915#2575]) -> [PASS][270] +108 other tests pass
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_plane_scaling@planes-upscale-factor-0-25.html
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_plane_scaling@planes-upscale-factor-0-25.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-lnl:          [FAIL][271] ([Intel XE#718]) -> [PASS][272]
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-5/igt@kms_pm_dc@dc5-psr.html
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_rpm@cursor:
    - shard-adlp:         [DMESG-WARN][273] ([Intel XE#2953]) -> [PASS][274] +11 other tests pass
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-3/igt@kms_pm_rpm@cursor.html
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-3/igt@kms_pm_rpm@cursor.html

  * igt@kms_pm_rpm@i2c:
    - shard-dg2-set2:     [SKIP][275] ([Intel XE#2446]) -> [PASS][276] +4 other tests pass
   [275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_pm_rpm@i2c.html
   [276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_pm_rpm@i2c.html

  * igt@kms_setmode@basic:
    - shard-adlp:         [FAIL][277] ([Intel XE#2883]) -> [PASS][278] +1 other test pass
   [277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-1/igt@kms_setmode@basic.html
   [278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@kms_setmode@basic.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1:
    - shard-lnl:          [FAIL][279] ([Intel XE#899]) -> [PASS][280]
   [279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-4/igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1.html
   [280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-8/igt@kms_universal_plane@cursor-fb-leak@pipe-c-edp-1.html

  * igt@xe_exec_threads@threads-hang-fd-basic:
    - shard-lnl:          [ABORT][281] -> [PASS][282]
   [281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-1/igt@xe_exec_threads@threads-hang-fd-basic.html
   [282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@xe_exec_threads@threads-hang-fd-basic.html

  * igt@xe_fault_injection@inject-fault-probe-function-xe_uc_fw_init:
    - shard-adlp:         [DMESG-WARN][283] ([Intel XE#2953] / [Intel XE#3343]) -> [PASS][284]
   [283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-3/igt@xe_fault_injection@inject-fault-probe-function-xe_uc_fw_init.html
   [284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-9/igt@xe_fault_injection@inject-fault-probe-function-xe_uc_fw_init.html

  * igt@xe_module_load@load:
    - shard-lnl:          ([PASS][285], [PASS][286], [PASS][287], [PASS][288], [PASS][289], [PASS][290], [PASS][291], [PASS][292], [SKIP][293], [PASS][294], [PASS][295], [PASS][296], [PASS][297], [PASS][298], [PASS][299], [PASS][300], [PASS][301], [PASS][302], [PASS][303], [PASS][304], [PASS][305], [PASS][306], [PASS][307], [PASS][308], [PASS][309], [PASS][310]) ([Intel XE#378]) -> ([PASS][311], [PASS][312], [PASS][313], [PASS][314], [PASS][315], [PASS][316], [PASS][317], [PASS][318], [PASS][319], [PASS][320], [PASS][321], [PASS][322], [PASS][323], [PASS][324], [PASS][325], [PASS][326], [PASS][327], [PASS][328], [PASS][329], [PASS][330], [PASS][331], [PASS][332], [PASS][333], [PASS][334], [PASS][335])
   [285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-5/igt@xe_module_load@load.html
   [286]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-5/igt@xe_module_load@load.html
   [287]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-5/igt@xe_module_load@load.html
   [288]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-4/igt@xe_module_load@load.html
   [289]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-4/igt@xe_module_load@load.html
   [290]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-2/igt@xe_module_load@load.html
   [291]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-2/igt@xe_module_load@load.html
   [292]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-2/igt@xe_module_load@load.html
   [293]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-4/igt@xe_module_load@load.html
   [294]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-4/igt@xe_module_load@load.html
   [295]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-4/igt@xe_module_load@load.html
   [296]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-5/igt@xe_module_load@load.html
   [297]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-1/igt@xe_module_load@load.html
   [298]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-6/igt@xe_module_load@load.html
   [299]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-8/igt@xe_module_load@load.html
   [300]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-6/igt@xe_module_load@load.html
   [301]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-1/igt@xe_module_load@load.html
   [302]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-1/igt@xe_module_load@load.html
   [303]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-1/igt@xe_module_load@load.html
   [304]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-8/igt@xe_module_load@load.html
   [305]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-8/igt@xe_module_load@load.html
   [306]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-3/igt@xe_module_load@load.html
   [307]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-3/igt@xe_module_load@load.html
   [308]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-3/igt@xe_module_load@load.html
   [309]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-3/igt@xe_module_load@load.html
   [310]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-6/igt@xe_module_load@load.html
   [311]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@xe_module_load@load.html
   [312]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-2/igt@xe_module_load@load.html
   [313]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-2/igt@xe_module_load@load.html
   [314]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@xe_module_load@load.html
   [315]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-8/igt@xe_module_load@load.html
   [316]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-4/igt@xe_module_load@load.html
   [317]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@xe_module_load@load.html
   [318]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-8/igt@xe_module_load@load.html
   [319]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-6/igt@xe_module_load@load.html
   [320]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-6/igt@xe_module_load@load.html
   [321]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-8/igt@xe_module_load@load.html
   [322]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@xe_module_load@load.html
   [323]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-2/igt@xe_module_load@load.html
   [324]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@xe_module_load@load.html
   [325]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-4/igt@xe_module_load@load.html
   [326]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-6/igt@xe_module_load@load.html
   [327]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-6/igt@xe_module_load@load.html
   [328]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@xe_module_load@load.html
   [329]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-5/igt@xe_module_load@load.html
   [330]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@xe_module_load@load.html
   [331]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-4/igt@xe_module_load@load.html
   [332]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@xe_module_load@load.html
   [333]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@xe_module_load@load.html
   [334]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-4/igt@xe_module_load@load.html
   [335]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-1/igt@xe_module_load@load.html
    - shard-adlp:         ([PASS][336], [PASS][337], [PASS][338], [PASS][339], [SKIP][340], [PASS][341], [PASS][342], [PASS][343], [PASS][344], [PASS][345], [PASS][346], [PASS][347], [PASS][348], [PASS][349], [PASS][350], [PASS][351], [PASS][352], [PASS][353], [PASS][354], [PASS][355], [PASS][356], [PASS][357], [PASS][358], [PASS][359], [PASS][360], [PASS][361]) ([Intel XE#378]) -> ([PASS][362], [PASS][363], [PASS][364], [PASS][365], [PASS][366], [PASS][367], [PASS][368], [PASS][369], [PASS][370], [PASS][371], [PASS][372], [PASS][373], [PASS][374], [PASS][375], [PASS][376], [PASS][377], [PASS][378], [PASS][379], [PASS][380], [PASS][381], [PASS][382], [PASS][383], [PASS][384], [PASS][385], [PASS][386])
   [336]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-1/igt@xe_module_load@load.html
   [337]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-1/igt@xe_module_load@load.html
   [338]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-8/igt@xe_module_load@load.html
   [339]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-2/igt@xe_module_load@load.html
   [340]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-3/igt@xe_module_load@load.html
   [341]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-6/igt@xe_module_load@load.html
   [342]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-6/igt@xe_module_load@load.html
   [343]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-3/igt@xe_module_load@load.html
   [344]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-9/igt@xe_module_load@load.html
   [345]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-8/igt@xe_module_load@load.html
   [346]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-9/igt@xe_module_load@load.html
   [347]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-9/igt@xe_module_load@load.html
   [348]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-9/igt@xe_module_load@load.html
   [349]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-8/igt@xe_module_load@load.html
   [350]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-8/igt@xe_module_load@load.html
   [351]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-6/igt@xe_module_load@load.html
   [352]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-3/igt@xe_module_load@load.html
   [353]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-4/igt@xe_module_load@load.html
   [354]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-4/igt@xe_module_load@load.html
   [355]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-2/igt@xe_module_load@load.html
   [356]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-4/igt@xe_module_load@load.html
   [357]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-4/igt@xe_module_load@load.html
   [358]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-2/igt@xe_module_load@load.html
   [359]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-3/igt@xe_module_load@load.html
   [360]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-1/igt@xe_module_load@load.html
   [361]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-1/igt@xe_module_load@load.html
   [362]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@xe_module_load@load.html
   [363]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-8/igt@xe_module_load@load.html
   [364]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-8/igt@xe_module_load@load.html
   [365]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-6/igt@xe_module_load@load.html
   [366]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@xe_module_load@load.html
   [367]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-1/igt@xe_module_load@load.html
   [368]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@xe_module_load@load.html
   [369]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-1/igt@xe_module_load@load.html
   [370]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-1/igt@xe_module_load@load.html
   [371]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-9/igt@xe_module_load@load.html
   [372]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@xe_module_load@load.html
   [373]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@xe_module_load@load.html
   [374]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-3/igt@xe_module_load@load.html
   [375]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-3/igt@xe_module_load@load.html
   [376]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-6/igt@xe_module_load@load.html
   [377]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-6/igt@xe_module_load@load.html
   [378]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-6/igt@xe_module_load@load.html
   [379]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@xe_module_load@load.html
   [380]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@xe_module_load@load.html
   [381]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-3/igt@xe_module_load@load.html
   [382]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-8/igt@xe_module_load@load.html
   [383]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-9/igt@xe_module_load@load.html
   [384]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-9/igt@xe_module_load@load.html
   [385]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-9/igt@xe_module_load@load.html
   [386]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-2/igt@xe_module_load@load.html

  * igt@xe_module_load@reload:
    - shard-dg2-set2:     [FAIL][387] ([Intel XE#3546]) -> [PASS][388]
   [387]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_module_load@reload.html
   [388]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@xe_module_load@reload.html

  * igt@xe_pm@s4-basic:
    - shard-adlp:         [ABORT][389] ([Intel XE#1358] / [Intel XE#1607]) -> [PASS][390]
   [389]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-adlp-9/igt@xe_pm@s4-basic.html
   [390]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-adlp-4/igt@xe_pm@s4-basic.html

  * igt@xe_pm@s4-vm-bind-userptr:
    - shard-lnl:          [ABORT][391] ([Intel XE#1358] / [Intel XE#1794]) -> [PASS][392]
   [391]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-lnl-2/igt@xe_pm@s4-vm-bind-userptr.html
   [392]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-lnl-3/igt@xe_pm@s4-vm-bind-userptr.html

  * igt@xe_vm@munmap-style-unbind-many-either-side-partial:
    - shard-dg2-set2:     [SKIP][393] ([Intel XE#1130]) -> [PASS][394] +189 other tests pass
   [393]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_vm@munmap-style-unbind-many-either-side-partial.html
   [394]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@xe_vm@munmap-style-unbind-many-either-side-partial.html

  
#### Warnings ####

  * igt@kms_async_flips@crc-atomic:
    - shard-dg2-set2:     [SKIP][395] ([Intel XE#2423] / [i915#2575]) -> [INCOMPLETE][396] ([Intel XE#3781] / [Intel XE#3946])
   [395]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_async_flips@crc-atomic.html
   [396]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_async_flips@crc-atomic.html

  * igt@kms_atomic@plane-primary-overlay-mutable-zpos:
    - shard-bmg:          [SKIP][397] ([Intel XE#2385]) -> [SKIP][398] ([Intel XE#3007])
   [397]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-3/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html
   [398]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html

  * igt@kms_big_fb@linear-16bpp-rotate-90:
    - shard-dg2-set2:     [SKIP][399] ([Intel XE#316]) -> [SKIP][400] ([Intel XE#2136] / [Intel XE#2351]) +1 other test skip
   [399]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_big_fb@linear-16bpp-rotate-90.html
   [400]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_big_fb@linear-16bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-90:
    - shard-dg2-set2:     [SKIP][401] ([Intel XE#2136]) -> [SKIP][402] ([Intel XE#316]) +2 other tests skip
   [401]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html
   [402]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-270:
    - shard-dg2-set2:     [SKIP][403] ([Intel XE#316]) -> [SKIP][404] ([Intel XE#2136]) +4 other tests skip
   [403]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html
   [404]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-addfb-size-overflow:
    - shard-dg2-set2:     [SKIP][405] ([Intel XE#610]) -> [SKIP][406] ([Intel XE#2136])
   [405]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
   [406]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_big_fb@y-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0:
    - shard-dg2-set2:     [SKIP][407] ([Intel XE#1124]) -> [SKIP][408] ([Intel XE#2136]) +9 other tests skip
   [407]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0.html
   [408]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
    - shard-dg2-set2:     [SKIP][409] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][410] ([Intel XE#1124]) +1 other test skip
   [409]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
   [410]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-bmg:          [SKIP][411] ([Intel XE#1124]) -> [SKIP][412] ([Intel XE#2136] / [Intel XE#2231])
   [411]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
   [412]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
    - shard-dg2-set2:     [SKIP][413] ([Intel XE#1124]) -> [SKIP][414] ([Intel XE#2136] / [Intel XE#2351]) +2 other tests skip
   [413]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
   [414]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-180:
    - shard-dg2-set2:     [SKIP][415] ([Intel XE#2136]) -> [SKIP][416] ([Intel XE#1124]) +7 other tests skip
   [415]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html
   [416]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_big_fb@yf-tiled-32bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-dg2-set2:     [SKIP][417] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][418] ([Intel XE#619]) +1 other test skip
   [417]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_big_fb@yf-tiled-addfb.html
   [418]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-dg2-set2:     [SKIP][419] ([Intel XE#607]) -> [SKIP][420] ([Intel XE#2136])
   [419]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html
   [420]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_bw@connected-linear-tiling-3-displays-2160x1440p:
    - shard-dg2-set2:     [SKIP][421] ([Intel XE#2191]) -> [SKIP][422] ([Intel XE#2423] / [i915#2575])
   [421]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_bw@connected-linear-tiling-3-displays-2160x1440p.html
   [422]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_bw@connected-linear-tiling-3-displays-2160x1440p.html

  * igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p:
    - shard-dg2-set2:     [SKIP][423] ([Intel XE#2423] / [i915#2575]) -> [SKIP][424] ([Intel XE#2191]) +2 other tests skip
   [423]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p.html
   [424]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p.html

  * igt@kms_bw@linear-tiling-2-displays-3840x2160p:
    - shard-dg2-set2:     [SKIP][425] ([Intel XE#367]) -> [SKIP][426] ([Intel XE#2423] / [i915#2575]) +8 other tests skip
   [425]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_bw@linear-tiling-2-displays-3840x2160p.html
   [426]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_bw@linear-tiling-2-displays-3840x2160p.html

  * igt@kms_bw@linear-tiling-3-displays-2160x1440p:
    - shard-dg2-set2:     [SKIP][427] ([Intel XE#2423] / [i915#2575]) -> [SKIP][428] ([Intel XE#367]) +3 other tests skip
   [427]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html
   [428]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc:
    - shard-dg2-set2:     [SKIP][429] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][430] ([Intel XE#2136] / [Intel XE#2351]) +1 other test skip
   [429]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc.html
   [430]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@bad-pixel-format-yf-tiled-ccs:
    - shard-dg2-set2:     [SKIP][431] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][432] ([Intel XE#2136]) +16 other tests skip
   [431]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html
   [432]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_ccs@bad-pixel-format-yf-tiled-ccs.html

  * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs:
    - shard-dg2-set2:     [SKIP][433] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][434] ([Intel XE#455] / [Intel XE#787])
   [433]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs.html
   [434]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs.html

  * igt@kms_ccs@crc-primary-basic-y-tiled-ccs:
    - shard-bmg:          [SKIP][435] ([Intel XE#2887]) -> [SKIP][436] ([Intel XE#2136] / [Intel XE#2231]) +2 other tests skip
   [435]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@kms_ccs@crc-primary-basic-y-tiled-ccs.html
   [436]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_ccs@crc-primary-basic-y-tiled-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
    - shard-dg2-set2:     [SKIP][437] ([Intel XE#2136]) -> [SKIP][438] ([Intel XE#2907])
   [437]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html
   [438]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
    - shard-dg2-set2:     [SKIP][439] ([Intel XE#2136]) -> [SKIP][440] ([Intel XE#3442]) +1 other test skip
   [439]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
   [440]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs:
    - shard-dg2-set2:     [SKIP][441] ([Intel XE#2907]) -> [SKIP][442] ([Intel XE#2136])
   [441]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html
   [442]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-bmg-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-mc-ccs:
    - shard-dg2-set2:     [SKIP][443] ([Intel XE#2136]) -> [SKIP][444] ([Intel XE#455] / [Intel XE#787]) +18 other tests skip
   [443]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-mtl-mc-ccs.html
   [444]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-mtl-mc-ccs.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-dg2-set2:     [SKIP][445] ([Intel XE#314]) -> [SKIP][446] ([Intel XE#2136] / [Intel XE#2351])
   [445]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_cdclk@mode-transition-all-outputs.html
   [446]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_chamelium_audio@dp-audio:
    - shard-dg2-set2:     [SKIP][447] ([Intel XE#2423] / [i915#2575]) -> [SKIP][448] ([Intel XE#373]) +11 other tests skip
   [447]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_chamelium_audio@dp-audio.html
   [448]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_chamelium_audio@dp-audio.html

  * igt@kms_chamelium_color@degamma:
    - shard-dg2-set2:     [SKIP][449] ([Intel XE#306]) -> [SKIP][450] ([Intel XE#2423] / [i915#2575]) +2 other tests skip
   [449]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_chamelium_color@degamma.html
   [450]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_chamelium_color@degamma.html

  * igt@kms_chamelium_color@gamma:
    - shard-dg2-set2:     [SKIP][451] ([Intel XE#2423] / [i915#2575]) -> [SKIP][452] ([Intel XE#306]) +1 other test skip
   [451]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_chamelium_color@gamma.html
   [452]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_chamelium_color@gamma.html

  * igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode:
    - shard-bmg:          [SKIP][453] ([Intel XE#2252]) -> [SKIP][454] ([Intel XE#3007])
   [453]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-3/igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode.html
   [454]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_chamelium_hpd@dp-hpd-enable-disable-mode.html

  * igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode:
    - shard-dg2-set2:     [SKIP][455] ([Intel XE#373]) -> [SKIP][456] ([Intel XE#2423] / [i915#2575]) +12 other tests skip
   [455]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html
   [456]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html

  * igt@kms_color@ctm-0-25:
    - shard-dg2-set2:     [INCOMPLETE][457] -> [SKIP][458] ([Intel XE#2423] / [i915#2575])
   [457]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_color@ctm-0-25.html
   [458]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_color@ctm-0-25.html

  * igt@kms_content_protection@atomic:
    - shard-dg2-set2:     [FAIL][459] ([Intel XE#1178]) -> [SKIP][460] ([Intel XE#2423] / [i915#2575])
   [459]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_content_protection@atomic.html
   [460]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_content_protection@atomic.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-dg2-set2:     [SKIP][461] ([Intel XE#2423] / [i915#2575]) -> [SKIP][462] ([Intel XE#307]) +1 other test skip
   [461]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_content_protection@dp-mst-type-0.html
   [462]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-dg2-set2:     [SKIP][463] ([Intel XE#307]) -> [SKIP][464] ([Intel XE#2423] / [i915#2575])
   [463]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_content_protection@dp-mst-type-1.html
   [464]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_content_protection@lic-type-0:
    - shard-dg2-set2:     [INCOMPLETE][465] ([Intel XE#2715]) -> [SKIP][466] ([Intel XE#2423] / [i915#2575])
   [465]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_content_protection@lic-type-0.html
   [466]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_content_protection@lic-type-0.html

  * igt@kms_cursor_crc@cursor-random-32x10:
    - shard-dg2-set2:     [SKIP][467] ([Intel XE#2423] / [i915#2575]) -> [SKIP][468] ([Intel XE#455]) +9 other tests skip
   [467]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_cursor_crc@cursor-random-32x10.html
   [468]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_cursor_crc@cursor-random-32x10.html

  * igt@kms_cursor_crc@cursor-rapid-movement-32x10:
    - shard-bmg:          [SKIP][469] ([Intel XE#2320]) -> [SKIP][470] ([Intel XE#3007])
   [469]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-3/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html
   [470]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x170:
    - shard-dg2-set2:     [SKIP][471] ([Intel XE#308]) -> [SKIP][472] ([Intel XE#2423] / [i915#2575]) +2 other tests skip
   [471]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
   [472]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - shard-dg2-set2:     [SKIP][473] ([Intel XE#323]) -> [SKIP][474] ([Intel XE#2423] / [i915#2575]) +2 other tests skip
   [473]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [474]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
    - shard-dg2-set2:     [SKIP][475] ([Intel XE#2423] / [i915#2575]) -> [SKIP][476] ([Intel XE#323]) +1 other test skip
   [475]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
   [476]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html

  * igt@kms_dsc@dsc-basic:
    - shard-dg2-set2:     [SKIP][477] ([Intel XE#2351]) -> [SKIP][478] ([Intel XE#455])
   [477]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_dsc@dsc-basic.html
   [478]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_dsc@dsc-basic.html

  * igt@kms_dsc@dsc-with-bpc:
    - shard-dg2-set2:     [SKIP][479] ([Intel XE#455]) -> [SKIP][480] ([Intel XE#2136]) +6 other tests skip
   [479]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_dsc@dsc-with-bpc.html
   [480]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_dsc@dsc-with-bpc.html

  * igt@kms_dsc@dsc-with-formats:
    - shard-dg2-set2:     [SKIP][481] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][482] ([Intel XE#455]) +1 other test skip
   [481]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_dsc@dsc-with-formats.html
   [482]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_dsc@dsc-with-formats.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-dg2-set2:     [SKIP][483] ([Intel XE#2423] / [i915#2575]) -> [SKIP][484] ([Intel XE#1137])
   [483]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_feature_discovery@dp-mst.html
   [484]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_feature_discovery@psr1:
    - shard-dg2-set2:     [SKIP][485] ([Intel XE#1135]) -> [SKIP][486] ([Intel XE#2423] / [i915#2575])
   [485]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_feature_discovery@psr1.html
   [486]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip@2x-flip-vs-expired-vblank:
    - shard-dg2-set2:     [FAIL][487] ([Intel XE#301]) -> [SKIP][488] ([Intel XE#2423] / [i915#2575])
   [487]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_flip@2x-flip-vs-expired-vblank.html
   [488]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_flip@2x-flip-vs-expired-vblank.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-bmg:          [INCOMPLETE][489] ([Intel XE#2597]) -> [FAIL][490] ([Intel XE#3879]) +1 other test fail
   [489]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-5/igt@kms_flip@flip-vs-suspend-interruptible.html
   [490]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@kms_flip@flip-vs-suspend-interruptible.html
    - shard-dg2-set2:     [SKIP][491] ([Intel XE#2423] / [i915#2575]) -> [INCOMPLETE][492] ([Intel XE#2049] / [Intel XE#2597])
   [491]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_flip@flip-vs-suspend-interruptible.html
   [492]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling:
    - shard-dg2-set2:     [SKIP][493] ([Intel XE#455]) -> [SKIP][494] ([Intel XE#2136] / [Intel XE#2351]) +3 other tests skip
   [493]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html
   [494]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
    - shard-dg2-set2:     [SKIP][495] ([Intel XE#2136]) -> [SKIP][496] ([Intel XE#455]) +3 other tests skip
   [495]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html
   [496]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
    - shard-bmg:          [SKIP][497] ([Intel XE#2380]) -> [SKIP][498] ([Intel XE#2136] / [Intel XE#2231])
   [497]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
   [498]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - shard-dg2-set2:     [SKIP][499] ([i915#5274]) -> [SKIP][500] ([Intel XE#2423] / [i915#2575])
   [499]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_force_connector_basic@prune-stale-modes.html
   [500]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff:
    - shard-bmg:          [SKIP][501] ([Intel XE#2311]) -> [SKIP][502] ([Intel XE#2136] / [Intel XE#2231]) +1 other test skip
   [501]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-3/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff.html
   [502]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-onoff:
    - shard-dg2-set2:     [SKIP][503] ([Intel XE#651]) -> [SKIP][504] ([Intel XE#2136]) +18 other tests skip
   [503]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-onoff.html
   [504]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw:
    - shard-bmg:          [FAIL][505] ([Intel XE#2333]) -> [SKIP][506] ([Intel XE#2136] / [Intel XE#2231]) +2 other tests skip
   [505]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html
   [506]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render:
    - shard-dg2-set2:     [SKIP][507] ([Intel XE#2136]) -> [SKIP][508] ([Intel XE#651]) +21 other tests skip
   [507]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html
   [508]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff:
    - shard-dg2-set2:     [SKIP][509] ([Intel XE#651]) -> [SKIP][510] ([Intel XE#2136] / [Intel XE#2351]) +13 other tests skip
   [509]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff.html
   [510]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt:
    - shard-dg2-set2:     [SKIP][511] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][512] ([Intel XE#651]) +8 other tests skip
   [511]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt.html
   [512]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt:
    - shard-dg2-set2:     [SKIP][513] ([Intel XE#2136]) -> [SKIP][514] ([Intel XE#653]) +30 other tests skip
   [513]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html
   [514]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt:
    - shard-bmg:          [SKIP][515] ([Intel XE#2313]) -> [SKIP][516] ([Intel XE#2136] / [Intel XE#2231]) +5 other tests skip
   [515]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt.html
   [516]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt:
    - shard-dg2-set2:     [SKIP][517] ([Intel XE#653]) -> [SKIP][518] ([Intel XE#2136] / [Intel XE#2351]) +11 other tests skip
   [517]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt.html
   [518]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-2p-primscrn-shrfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render:
    - shard-dg2-set2:     [SKIP][519] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][520] ([Intel XE#653]) +8 other tests skip
   [519]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html
   [520]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-slowdraw:
    - shard-dg2-set2:     [SKIP][521] ([Intel XE#653]) -> [SKIP][522] ([Intel XE#2136]) +35 other tests skip
   [521]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_frontbuffer_tracking@psr-slowdraw.html
   [522]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-slowdraw.html

  * igt@kms_getfb@getfb-reject-ccs:
    - shard-dg2-set2:     [SKIP][523] ([Intel XE#2423] / [i915#2575]) -> [SKIP][524] ([Intel XE#605])
   [523]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_getfb@getfb-reject-ccs.html
   [524]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_getfb@getfb-reject-ccs.html

  * igt@kms_hdr@invalid-hdr:
    - shard-dg2-set2:     [SKIP][525] ([Intel XE#455]) -> [SKIP][526] ([Intel XE#2423] / [i915#2575]) +17 other tests skip
   [525]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_hdr@invalid-hdr.html
   [526]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_hdr@invalid-hdr.html

  * igt@kms_histogram@algo-basic:
    - shard-dg2-set2:     [SKIP][527] ([Intel XE#3897]) -> [SKIP][528] ([Intel XE#2423] / [i915#2575])
   [527]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_histogram@algo-basic.html
   [528]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_histogram@algo-basic.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-dg2-set2:     [SKIP][529] ([Intel XE#2136]) -> [SKIP][530] ([Intel XE#346])
   [529]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_joiner@basic-big-joiner.html
   [530]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@basic-force-ultra-joiner:
    - shard-dg2-set2:     [SKIP][531] ([Intel XE#2136]) -> [SKIP][532] ([Intel XE#2925])
   [531]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_joiner@basic-force-ultra-joiner.html
   [532]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_joiner@basic-force-ultra-joiner.html

  * igt@kms_joiner@invalid-modeset-big-joiner:
    - shard-dg2-set2:     [SKIP][533] ([Intel XE#346]) -> [SKIP][534] ([Intel XE#2136])
   [533]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_joiner@invalid-modeset-big-joiner.html
   [534]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_joiner@invalid-modeset-big-joiner.html

  * igt@kms_joiner@invalid-modeset-ultra-joiner:
    - shard-dg2-set2:     [SKIP][535] ([Intel XE#2136]) -> [SKIP][536] ([Intel XE#2927])
   [535]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_joiner@invalid-modeset-ultra-joiner.html
   [536]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_joiner@invalid-modeset-ultra-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-dg2-set2:     [SKIP][537] ([Intel XE#356]) -> [SKIP][538] ([Intel XE#2423] / [i915#2575])
   [537]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
   [538]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-dg2-set2:     [SKIP][539] ([Intel XE#2423] / [i915#2575]) -> [FAIL][540] ([Intel XE#361])
   [539]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_plane_scaling@intel-max-src-size.html
   [540]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling:
    - shard-dg2-set2:     [SKIP][541] ([Intel XE#2763] / [Intel XE#455]) -> [SKIP][542] ([Intel XE#2423] / [i915#2575]) +3 other tests skip
   [541]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html
   [542]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling.html

  * igt@kms_pm_backlight@fade:
    - shard-dg2-set2:     [SKIP][543] ([Intel XE#2136]) -> [SKIP][544] ([Intel XE#870]) +1 other test skip
   [543]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_pm_backlight@fade.html
   [544]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_pm_backlight@fade.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-dg2-set2:     [SKIP][545] ([Intel XE#1129]) -> [SKIP][546] ([Intel XE#2136])
   [545]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_pm_dc@dc5-psr.html
   [546]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-dg2-set2:     [SKIP][547] ([Intel XE#3309]) -> [SKIP][548] ([Intel XE#2136])
   [547]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_pm_dc@dc5-retention-flops.html
   [548]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-dg2-set2:     [SKIP][549] ([Intel XE#908]) -> [SKIP][550] ([Intel XE#2136] / [Intel XE#2351])
   [549]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_pm_dc@dc6-dpms.html
   [550]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-dg2-set2:     [SKIP][551] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][552] ([Intel XE#1129])
   [551]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_pm_dc@dc6-psr.html
   [552]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-bmg:          [SKIP][553] ([Intel XE#1439] / [Intel XE#836]) -> [SKIP][554] ([Intel XE#2446])
   [553]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-3/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
   [554]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf:
    - shard-dg2-set2:     [SKIP][555] ([Intel XE#2136]) -> [SKIP][556] ([Intel XE#1489]) +11 other tests skip
   [555]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html
   [556]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area:
    - shard-dg2-set2:     [SKIP][557] ([Intel XE#1489]) -> [SKIP][558] ([Intel XE#2136]) +11 other tests skip
   [557]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area.html
   [558]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_psr2_sf@fbc-psr2-primary-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb:
    - shard-bmg:          [SKIP][559] ([Intel XE#1489]) -> [SKIP][560] ([Intel XE#2136] / [Intel XE#2231])
   [559]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb.html
   [560]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_psr2_sf@pr-primary-plane-update-sf-dmg-area-big-fb.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-dg2-set2:     [SKIP][561] ([Intel XE#2136]) -> [SKIP][562] ([Intel XE#1122])
   [561]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_psr2_su@page_flip-nv12.html
   [562]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr@fbc-psr-no-drrs:
    - shard-dg2-set2:     [SKIP][563] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][564] ([Intel XE#2136] / [Intel XE#2351]) +4 other tests skip
   [563]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_psr@fbc-psr-no-drrs.html
   [564]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_psr@fbc-psr-no-drrs.html

  * igt@kms_psr@fbc-psr2-sprite-plane-move:
    - shard-dg2-set2:     [SKIP][565] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][566] ([Intel XE#2136]) +15 other tests skip
   [565]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_psr@fbc-psr2-sprite-plane-move.html
   [566]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_psr@fbc-psr2-sprite-plane-move.html

  * igt@kms_psr@pr-cursor-render:
    - shard-bmg:          [SKIP][567] ([Intel XE#2234] / [Intel XE#2850]) -> [SKIP][568] ([Intel XE#2136] / [Intel XE#2231]) +1 other test skip
   [567]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@kms_psr@pr-cursor-render.html
   [568]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_psr@pr-cursor-render.html

  * igt@kms_psr@psr-dpms:
    - shard-dg2-set2:     [SKIP][569] ([Intel XE#2136] / [Intel XE#2351]) -> [SKIP][570] ([Intel XE#2850] / [Intel XE#929]) +5 other tests skip
   [569]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_psr@psr-dpms.html
   [570]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_psr@psr-dpms.html

  * igt@kms_psr@psr-primary-page-flip:
    - shard-dg2-set2:     [SKIP][571] ([Intel XE#2850] / [Intel XE#929]) -> [SKIP][572] ([Intel XE#2351])
   [571]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_psr@psr-primary-page-flip.html
   [572]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_psr@psr-primary-page-flip.html

  * igt@kms_psr@psr-sprite-plane-onoff:
    - shard-dg2-set2:     [SKIP][573] ([Intel XE#2351]) -> [SKIP][574] ([Intel XE#2850] / [Intel XE#929])
   [573]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_psr@psr-sprite-plane-onoff.html
   [574]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@kms_psr@psr2-sprite-plane-move:
    - shard-dg2-set2:     [SKIP][575] ([Intel XE#2136]) -> [SKIP][576] ([Intel XE#2850] / [Intel XE#929]) +10 other tests skip
   [575]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_psr@psr2-sprite-plane-move.html
   [576]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@kms_psr@psr2-sprite-plane-move.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-dg2-set2:     [SKIP][577] ([Intel XE#2939]) -> [SKIP][578] ([Intel XE#2136] / [Intel XE#2351])
   [577]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [578]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-0:
    - shard-dg2-set2:     [SKIP][579] ([Intel XE#1127]) -> [SKIP][580] ([Intel XE#2423] / [i915#2575])
   [579]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html
   [580]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@sprite-rotation-270:
    - shard-dg2-set2:     [SKIP][581] ([Intel XE#2423] / [i915#2575]) -> [SKIP][582] ([Intel XE#3414]) +1 other test skip
   [581]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_rotation_crc@sprite-rotation-270.html
   [582]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@kms_rotation_crc@sprite-rotation-270.html

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
    - shard-dg2-set2:     [SKIP][583] ([Intel XE#3414]) -> [SKIP][584] ([Intel XE#2423] / [i915#2575]) +2 other tests skip
   [583]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html
   [584]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html

  * igt@kms_scaling_modes@scaling-mode-full:
    - shard-bmg:          [SKIP][585] ([Intel XE#2413]) -> [SKIP][586] ([Intel XE#3007])
   [585]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@kms_scaling_modes@scaling-mode-full.html
   [586]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_scaling_modes@scaling-mode-full.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-dg2-set2:     [FAIL][587] ([Intel XE#1729]) -> [SKIP][588] ([Intel XE#2423] / [i915#2575])
   [587]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_tiled_display@basic-test-pattern.html
   [588]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_vrr@cmrr:
    - shard-dg2-set2:     [SKIP][589] ([Intel XE#2168]) -> [SKIP][590] ([Intel XE#2423] / [i915#2575])
   [589]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@kms_vrr@cmrr.html
   [590]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_vrr@cmrr.html

  * igt@kms_vrr@lobf:
    - shard-dg2-set2:     [SKIP][591] ([Intel XE#2423] / [i915#2575]) -> [SKIP][592] ([Intel XE#2168])
   [591]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_vrr@lobf.html
   [592]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_vrr@lobf.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-dg2-set2:     [SKIP][593] ([Intel XE#2423] / [i915#2575]) -> [SKIP][594] ([Intel XE#756]) +1 other test skip
   [593]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@kms_writeback@writeback-fb-id.html
   [594]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@kms_writeback@writeback-fb-id.html

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - shard-bmg:          [SKIP][595] ([Intel XE#756]) -> [SKIP][596] ([Intel XE#3007])
   [595]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
   [596]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
    - shard-dg2-set2:     [SKIP][597] ([Intel XE#756]) -> [SKIP][598] ([Intel XE#2423] / [i915#2575]) +1 other test skip
   [597]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@kms_writeback@writeback-fb-id-xrgb2101010.html
   [598]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
    - shard-dg2-set2:     [SKIP][599] ([Intel XE#2423] / [i915#2575]) -> [SKIP][600] ([Intel XE#1091] / [Intel XE#2849])
   [599]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html
   [600]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html

  * igt@xe_compute_preempt@compute-preempt-many:
    - shard-dg2-set2:     [SKIP][601] ([Intel XE#1280] / [Intel XE#455]) -> [SKIP][602] ([Intel XE#1130]) +1 other test skip
   [601]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@xe_compute_preempt@compute-preempt-many.html
   [602]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_compute_preempt@compute-preempt-many.html

  * igt@xe_copy_basic@mem-copy-linear-0x369:
    - shard-dg2-set2:     [SKIP][603] ([Intel XE#1130]) -> [SKIP][604] ([Intel XE#1123])
   [603]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_copy_basic@mem-copy-linear-0x369.html
   [604]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@xe_copy_basic@mem-copy-linear-0x369.html

  * igt@xe_copy_basic@mem-copy-linear-0xfffe:
    - shard-dg2-set2:     [SKIP][605] ([Intel XE#1123]) -> [SKIP][606] ([Intel XE#1130])
   [605]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@xe_copy_basic@mem-copy-linear-0xfffe.html
   [606]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_copy_basic@mem-copy-linear-0xfffe.html

  * igt@xe_copy_basic@mem-set-linear-0x369:
    - shard-dg2-set2:     [SKIP][607] ([Intel XE#1130]) -> [SKIP][608] ([Intel XE#1126])
   [607]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_copy_basic@mem-set-linear-0x369.html
   [608]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@xe_copy_basic@mem-set-linear-0x369.html

  * igt@xe_copy_basic@mem-set-linear-0xfffe:
    - shard-dg2-set2:     [SKIP][609] ([Intel XE#1126]) -> [SKIP][610] ([Intel XE#1130])
   [609]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@xe_copy_basic@mem-set-linear-0xfffe.html
   [610]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_copy_basic@mem-set-linear-0xfffe.html

  * igt@xe_eudebug@basic-close:
    - shard-dg2-set2:     [SKIP][611] ([Intel XE#1130]) -> [SKIP][612] ([Intel XE#2905]) +11 other tests skip
   [611]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_eudebug@basic-close.html
   [612]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@xe_eudebug@basic-close.html

  * igt@xe_eudebug@basic-vm-bind-ufence-delay-ack:
    - shard-dg2-set2:     [SKIP][613] ([Intel XE#3889]) -> [SKIP][614] ([Intel XE#1130])
   [613]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-435/igt@xe_eudebug@basic-vm-bind-ufence-delay-ack.html
   [614]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_eudebug@basic-vm-bind-ufence-delay-ack.html

  * igt@xe_eudebug@basic-vm-bind-ufence-reconnect:
    - shard-dg2-set2:     [SKIP][615] ([Intel XE#1130]) -> [SKIP][616] ([Intel XE#3889])
   [615]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_eudebug@basic-vm-bind-ufence-reconnect.html
   [616]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@xe_eudebug@basic-vm-bind-ufence-reconnect.html

  * igt@xe_eudebug_online@resume-dss:
    - shard-dg2-set2:     [SKIP][617] ([Intel XE#2905]) -> [SKIP][618] ([Intel XE#1130]) +14 other tests skip
   [617]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@xe_eudebug_online@resume-dss.html
   [618]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_eudebug_online@resume-dss.html
    - shard-bmg:          [SKIP][619] ([Intel XE#2905]) -> [SKIP][620] ([Intel XE#1130])
   [619]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@xe_eudebug_online@resume-dss.html
   [620]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@xe_eudebug_online@resume-dss.html

  * igt@xe_evict@evict-beng-mixed-threads-large:
    - shard-bmg:          [FAIL][621] ([Intel XE#1000]) -> [TIMEOUT][622] ([Intel XE#1473])
   [621]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@xe_evict@evict-beng-mixed-threads-large.html
   [622]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@xe_evict@evict-beng-mixed-threads-large.html

  * igt@xe_evict@evict-beng-threads-large:
    - shard-bmg:          [TIMEOUT][623] ([Intel XE#1473]) -> [FAIL][624] ([Intel XE#1000])
   [623]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@xe_evict@evict-beng-threads-large.html
   [624]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-3/igt@xe_evict@evict-beng-threads-large.html

  * igt@xe_evict@evict-large-multi-vm-cm:
    - shard-dg2-set2:     [SKIP][625] ([Intel XE#1130]) -> [FAIL][626] ([Intel XE#1600])
   [625]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_evict@evict-large-multi-vm-cm.html
   [626]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@xe_evict@evict-large-multi-vm-cm.html

  * igt@xe_exec_basic@multigpu-no-exec-userptr-rebind:
    - shard-bmg:          [SKIP][627] ([Intel XE#2322]) -> [SKIP][628] ([Intel XE#1130])
   [627]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-7/igt@xe_exec_basic@multigpu-no-exec-userptr-rebind.html
   [628]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@xe_exec_basic@multigpu-no-exec-userptr-rebind.html

  * igt@xe_exec_fault_mode@once-invalid-userptr-fault:
    - shard-dg2-set2:     [SKIP][629] ([Intel XE#288]) -> [SKIP][630] ([Intel XE#1130]) +35 other tests skip
   [629]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@xe_exec_fault_mode@once-invalid-userptr-fault.html
   [630]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_exec_fault_mode@once-invalid-userptr-fault.html

  * igt@xe_exec_fault_mode@twice-userptr-invalidate-race:
    - shard-dg2-set2:     [SKIP][631] ([Intel XE#1130]) -> [SKIP][632] ([Intel XE#288]) +30 other tests skip
   [631]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_exec_fault_mode@twice-userptr-invalidate-race.html
   [632]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@xe_exec_fault_mode@twice-userptr-invalidate-race.html

  * igt@xe_exec_mix_modes@exec-spinner-interrupted-lr:
    - shard-dg2-set2:     [SKIP][633] ([Intel XE#1130]) -> [SKIP][634] ([Intel XE#2360])
   [633]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_exec_mix_modes@exec-spinner-interrupted-lr.html
   [634]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@xe_exec_mix_modes@exec-spinner-interrupted-lr.html

  * igt@xe_oa@missing-sample-flags:
    - shard-dg2-set2:     [SKIP][635] ([Intel XE#2541] / [Intel XE#3573]) -> [SKIP][636] ([Intel XE#1130]) +7 other tests skip
   [635]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@xe_oa@missing-sample-flags.html
   [636]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_oa@missing-sample-flags.html

  * igt@xe_oa@oa-unit-exclusive-stream-sample-oa:
    - shard-dg2-set2:     [SKIP][637] ([Intel XE#1130]) -> [SKIP][638] ([Intel XE#2541] / [Intel XE#3573]) +7 other tests skip
   [637]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_oa@oa-unit-exclusive-stream-sample-oa.html
   [638]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-436/igt@xe_oa@oa-unit-exclusive-stream-sample-oa.html

  * igt@xe_pat@pat-index-xehpc:
    - shard-dg2-set2:     [SKIP][639] ([Intel XE#1130]) -> [SKIP][640] ([Intel XE#2838] / [Intel XE#979])
   [639]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_pat@pat-index-xehpc.html
   [640]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_peer2peer@read:
    - shard-dg2-set2:     [FAIL][641] ([Intel XE#1173]) -> [SKIP][642] ([Intel XE#1061]) +1 other test skip
   [641]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@xe_peer2peer@read.html
   [642]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_peer2peer@read.html

  * igt@xe_pm@d3cold-mocs:
    - shard-dg2-set2:     [SKIP][643] ([Intel XE#1130]) -> [SKIP][644] ([Intel XE#2284])
   [643]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_pm@d3cold-mocs.html
   [644]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@xe_pm@d3cold-mocs.html

  * igt@xe_pm@s2idle-d3cold-basic-exec:
    - shard-dg2-set2:     [SKIP][645] ([Intel XE#2284] / [Intel XE#366]) -> [SKIP][646] ([Intel XE#1130]) +1 other test skip
   [645]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-436/igt@xe_pm@s2idle-d3cold-basic-exec.html
   [646]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_pm@s2idle-d3cold-basic-exec.html

  * igt@xe_pm@s3-d3cold-basic-exec:
    - shard-dg2-set2:     [SKIP][647] ([Intel XE#1130]) -> [SKIP][648] ([Intel XE#2284] / [Intel XE#366])
   [647]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_pm@s3-d3cold-basic-exec.html
   [648]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@xe_pm@s3-d3cold-basic-exec.html

  * igt@xe_query@multigpu-query-engines:
    - shard-dg2-set2:     [SKIP][649] ([Intel XE#944]) -> [SKIP][650] ([Intel XE#1130]) +4 other tests skip
   [649]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-434/igt@xe_query@multigpu-query-engines.html
   [650]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-466/igt@xe_query@multigpu-query-engines.html

  * igt@xe_query@multigpu-query-invalid-cs-cycles:
    - shard-dg2-set2:     [SKIP][651] ([Intel XE#1130]) -> [SKIP][652] ([Intel XE#944]) +2 other tests skip
   [651]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_query@multigpu-query-invalid-cs-cycles.html
   [652]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-434/igt@xe_query@multigpu-query-invalid-cs-cycles.html

  * igt@xe_query@multigpu-query-topology:
    - shard-bmg:          [SKIP][653] ([Intel XE#944]) -> [SKIP][654] ([Intel XE#1130])
   [653]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-bmg-3/igt@xe_query@multigpu-query-topology.html
   [654]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-bmg-7/igt@xe_query@multigpu-query-topology.html

  * igt@xe_wedged@wedged-mode-toggle:
    - shard-dg2-set2:     [SKIP][655] ([Intel XE#1130]) -> [ABORT][656] ([Intel XE#3075] / [Intel XE#3084])
   [655]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd/shard-dg2-466/igt@xe_wedged@wedged-mode-toggle.html
   [656]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-136052v4/shard-dg2-435/igt@xe_wedged@wedged-mode-toggle.html

  
  [Intel XE#1000]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1000
  [Intel XE#1033]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1033
  [Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
  [Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
  [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#1130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1130
  [Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
  [Intel XE#1137]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1137
  [Intel XE#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
  [Intel XE#1152]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1152
  [Intel XE#1173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1173
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
  [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#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#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#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
  [Intel XE#1600]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1600
  [Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607
  [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
  [Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
  [Intel XE#1885]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1885
  [Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029
  [Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
  [Intel XE#2134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2134
  [Intel XE#2136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2136
  [Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
  [Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
  [Intel XE#2231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2231
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
  [Intel XE#2248]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2248
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2328
  [Intel XE#2333]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2333
  [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
  [Intel XE#2351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2351
  [Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
  [Intel XE#2370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2370
  [Intel XE#2372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2372
  [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
  [Intel XE#2385]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2385
  [Intel XE#2392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2392
  [Intel XE#2393]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2393
  [Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
  [Intel XE#2414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2414
  [Intel XE#2423]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2423
  [Intel XE#2446]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2446
  [Intel XE#2459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2459
  [Intel XE#2486]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2486
  [Intel XE#2493]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2493
  [Intel XE#2499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2499
  [Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
  [Intel XE#2596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2596
  [Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
  [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
  [Intel XE#2715]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2715
  [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
  [Intel XE#2838]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2838
  [Intel XE#2849]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2849
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#2882]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2882
  [Intel XE#2883]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2883
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
  [Intel XE#2905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2905
  [Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
  [Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
  [Intel XE#2927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2927
  [Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939
  [Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
  [Intel XE#3007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3007
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#3075]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3075
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#3084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3084
  [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#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
  [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#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
  [Intel XE#3288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3288
  [Intel XE#3307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3307
  [Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309
  [Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
  [Intel XE#3343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3343
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#3440]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3440
  [Intel XE#3442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3442
  [Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
  [Intel XE#352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/352
  [Intel XE#3546]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3546
  [Intel XE#356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/356
  [Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
  [Intel XE#361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/361
  [Intel XE#3658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3658
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#3664]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3664
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#3719]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3719
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
  [Intel XE#3781]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3781
  [Intel XE#379]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/379
  [Intel XE#3879]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3879
  [Intel XE#3889]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3889
  [Intel XE#3897]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3897
  [Intel XE#3898]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3898
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#3914]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3914
  [Intel XE#3918]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3918
  [Intel XE#3946]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3946
  [Intel XE#3974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3974
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#488]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/488
  [Intel XE#512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/512
  [Intel XE#579]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/579
  [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
  [Intel XE#605]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/605
  [Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
  [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
  [Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619
  [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#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#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
  [Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
  [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#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
  [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#908]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/908
  [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
  [i915#2575]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2575
  [i915#5274]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5274


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

  * IGT: IGT_8175 -> IGT_8176
  * Linux: xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd -> xe-pw-136052v4

  IGT_8175: c982ba23a3a3cfda0abe57e18ab16f719ef5de79 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8176: 5e65135d3d7cf5298a58bcd6137c77205704bcf9 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-2443-bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd: bfe4c642681436f4512b15ef6d6f3b2e2bcdf3bd
  xe-pw-136052v4: 136052v4

== Logs ==

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

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

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

* Re: [PATCH v4 07/13] drm/xe/pxp: Add PXP queue tracking and session start
  2025-01-06 21:12 ` [PATCH v4 07/13] drm/xe/pxp: Add PXP queue tracking and session start Daniele Ceraolo Spurio
@ 2025-01-13 22:11   ` John Harrison
  0 siblings, 0 replies; 27+ messages in thread
From: John Harrison @ 2025-01-13 22:11 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio, intel-xe

On 1/6/2025 13:12, Daniele Ceraolo Spurio wrote:
> We expect every queue that uses PXP to be marked as doing so, to allow
> the driver to correctly manage the encryption status. The API for doing
> this from userspace is coming in the next patch, while this patch
> implement the management side of things. When a PXP queue is created,
> the driver will do the following:
>
> - Start the default PXP session if it is not already running;
> - assign an rpm ref to the queue to keep for its lifetime (this is
>    required because PXP HWDRM sessions are killed by the HW suspend flow).
>
> Since PXP start and termination can race each other, this patch also
> introduces locking and a state machine to keep track of the pending
> operations. Note that since we'll need to take the lock from the
> suspend/resume paths as well, we can't do submissions while holding it,
> which means we need a slightly more complicated state machine to keep
> track of intermediate steps.
>
> v4: new patch in the series, split from the following interface patch to
> keep review manageable. Lock and status rework to not do submissions
> under lock.
>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> ---
>   drivers/gpu/drm/xe/xe_exec_queue.c       |   1 +
>   drivers/gpu/drm/xe/xe_exec_queue_types.h |   6 +
>   drivers/gpu/drm/xe/xe_pxp.c              | 383 ++++++++++++++++++++++-
>   drivers/gpu/drm/xe/xe_pxp.h              |   5 +
>   drivers/gpu/drm/xe/xe_pxp_types.h        |  30 ++
>   5 files changed, 419 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
> index 252bfa11cae9..2ec4e2eb6f2a 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue.c
> +++ b/drivers/gpu/drm/xe/xe_exec_queue.c
> @@ -78,6 +78,7 @@ static struct xe_exec_queue *__xe_exec_queue_alloc(struct xe_device *xe,
>   	INIT_LIST_HEAD(&q->lr.link);
>   	INIT_LIST_HEAD(&q->multi_gt_link);
>   	INIT_LIST_HEAD(&q->hw_engine_group_link);
> +	INIT_LIST_HEAD(&q->pxp.link);
>   
>   	q->sched_props.timeslice_us = hwe->eclass->sched_props.timeslice_us;
>   	q->sched_props.preempt_timeout_us =
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> index 5af5419cec7a..6d85a069947f 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
> +++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> @@ -130,6 +130,12 @@ struct xe_exec_queue {
>   		struct list_head link;
>   	} lr;
>   
> +	/** @pxp: PXP info tracking */
> +	struct {
> +		/** @pxp.link: link into the list of PXP exec queues */
> +		struct list_head link;
> +	} pxp;
> +
>   	/** @ops: submission backend exec queue operations */
>   	const struct xe_exec_queue_ops *ops;
>   
> diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
> index 1452a4763ac2..d0471a360d69 100644
> --- a/drivers/gpu/drm/xe/xe_pxp.c
> +++ b/drivers/gpu/drm/xe/xe_pxp.c
> @@ -8,9 +8,13 @@
>   #include <drm/drm_managed.h>
>   
>   #include "xe_device_types.h"
> +#include "xe_exec_queue.h"
>   #include "xe_force_wake.h"
> +#include "xe_guc_submit.h"
> +#include "xe_gsc_proxy.h"
>   #include "xe_gt.h"
>   #include "xe_gt_types.h"
> +#include "xe_huc.h"
>   #include "xe_mmio.h"
>   #include "xe_pm.h"
>   #include "xe_pxp_submit.h"
> @@ -29,6 +33,15 @@
>   
>   #define ARB_SESSION DRM_XE_PXP_HWDRM_DEFAULT_SESSION /* shorter define */
>   
> +/*
> + * A submission to GSC can take up to 250ms to complete, so using a 300ms
use would be better than using

> + * timeout for activation where only one of those is involved. Termination
> + * additionally requires a submission to VCS and an interaction with KCR, so
> + * bumping the timeout to 500ms for that.
likewise bump

> + */
> +#define PXP_ACTIVATION_TIMEOUT_MS 300
> +#define PXP_TERMINATION_TIMEOUT_MS 500
> +
>   bool xe_pxp_is_supported(const struct xe_device *xe)
>   {
>   	return xe->info.has_pxp && IS_ENABLED(CONFIG_INTEL_MEI_GSC_PROXY);
> @@ -39,6 +52,40 @@ static bool pxp_is_enabled(const struct xe_pxp *pxp)
>   	return pxp;
>   }
>   
> +static bool pxp_prerequisites_done(const struct xe_pxp *pxp)
> +{
> +	struct xe_gt *gt = pxp->gt;
> +	unsigned int fw_ref;
> +	bool ready;
> +
> +	fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
> +
> +	/*
> +	 * If force_wake fails we could falsely report the prerequisites as not
> +	 * done even if they are; the consequence of this would be that the
> +	 * callers won't go ahead with using PXP, but if force_wake doesn't work
> +	 * the GT is very likely in a bad state so not really a problem to abort
> +	 * PXP. Therefore, we can just log the force_wake error and not escalate
> +	 * it.
> +	 */
> +	XE_WARN_ON(!xe_force_wake_ref_has_domain(fw_ref, XE_FORCEWAKE_ALL));
> +
> +	/* PXP requires both HuC authentication via GSC and GSC proxy initialized */
> +	ready = xe_huc_is_authenticated(&gt->uc.huc, XE_HUC_AUTH_VIA_GSC) &&
> +		xe_gsc_proxy_init_done(&gt->uc.gsc);
> +
> +	xe_force_wake_put(gt_to_fw(gt), fw_ref);
> +
> +	return ready;
> +}
> +
> +static bool pxp_session_is_in_play(struct xe_pxp *pxp, u32 id)
> +{
> +	struct xe_gt *gt = pxp->gt;
> +
> +	return xe_mmio_read32(&gt->mmio, KCR_SIP) & BIT(id);
> +}
> +
>   static int pxp_wait_for_session_state(struct xe_pxp *pxp, u32 id, bool in_play)
>   {
>   	struct xe_gt *gt = pxp->gt;
> @@ -48,14 +95,15 @@ static int pxp_wait_for_session_state(struct xe_pxp *pxp, u32 id, bool in_play)
>   			      250, NULL, false);
>   }
>   
> -static void pxp_terminate(struct xe_pxp *pxp)
> +static void pxp_invalidate_queues(struct xe_pxp *pxp);
> +
> +static int pxp_terminate_hw(struct xe_pxp *pxp)
>   {
> -	int ret = 0;
> -	struct xe_device *xe = pxp->xe;
>   	struct xe_gt *gt = pxp->gt;
>   	unsigned int fw_ref;
> +	int ret = 0;
>   
> -	drm_dbg(&xe->drm, "Terminating PXP\n");
> +	drm_dbg(&pxp->xe->drm, "Terminating PXP\n");
>   
>   	fw_ref = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
>   	if (!xe_force_wake_ref_has_domain(fw_ref, XE_FW_GT)) {
> @@ -80,14 +128,83 @@ static void pxp_terminate(struct xe_pxp *pxp)
>   
>   out:
>   	xe_force_wake_put(gt_to_fw(gt), fw_ref);
> +	return ret;
> +}
>   
> -	if (ret)
> +static void mark_termination_in_progress(struct xe_pxp *pxp)
> +{
> +	lockdep_assert_held(&pxp->mutex);
> +
> +	reinit_completion(&pxp->termination);
> +	pxp->status = XE_PXP_TERMINATION_IN_PROGRESS;
> +}
> +
> +static void pxp_terminate(struct xe_pxp *pxp)
> +{
> +	int ret = 0;
> +	struct xe_device *xe = pxp->xe;
> +
> +	if (!wait_for_completion_timeout(&pxp->activation,
> +					 msecs_to_jiffies(PXP_ACTIVATION_TIMEOUT_MS)))
> +		drm_err(&xe->drm, "failed to wait for PXP start before termination\n");
> +
> +	mutex_lock(&pxp->mutex);
> +
> +	pxp_invalidate_queues(pxp);
> +
> +	/*
> +	 * If we have a termination already in progress, we need to wait for
> +	 * it to complete before queueing another one. Once the first
> +	 * termination is completed we'll set the state back to
> +	 * NEEDS_TERMINATION and leave it to the pxp start code to issue it.
> +	 */
> +	if (pxp->status == XE_PXP_TERMINATION_IN_PROGRESS) {
> +		pxp->status = XE_PXP_NEEDS_ADDITIONAL_TERMINATION;
> +		mutex_unlock(&pxp->mutex);
> +		return;
> +	}
> +
> +	mark_termination_in_progress(pxp);
> +
> +	mutex_unlock(&pxp->mutex);
> +
> +	ret = pxp_terminate_hw(pxp);
> +	if (ret) {
>   		drm_err(&xe->drm, "PXP termination failed: %pe\n", ERR_PTR(ret));
> +		mutex_lock(&pxp->mutex);
> +		pxp->status = XE_PXP_ERROR;
> +		complete_all(&pxp->termination);
> +		mutex_unlock(&pxp->mutex);
> +	}
>   }
>   
>   static void pxp_terminate_complete(struct xe_pxp *pxp)
>   {
> -	/* TODO mark the session as ready to start */
> +	/*
> +	 * We expect PXP to be in one of 2 states when we get here:
> +	 * - XE_PXP_TERMINATION_IN_PROGRESS: a single termination event was
> +	 * requested and it is now completing, so we're ready to start.
> +	 * - XE_PXP_NEEDS_ADDITIONAL_TERMINATION: a second termination was
> +	 * requested while the first one was still being processed.
> +	 */
> +	mutex_lock(&pxp->mutex);
> +
> +	switch(pxp->status) {
> +	case XE_PXP_TERMINATION_IN_PROGRESS:
> +		pxp->status = XE_PXP_READY_TO_START;
> +		break;
> +	case XE_PXP_NEEDS_ADDITIONAL_TERMINATION:
> +		pxp->status = XE_PXP_NEEDS_TERMINATION;
> +		break;
> +	default:
> +		drm_err(&pxp->xe->drm,
> +			"PXP termination complete while status was %u\n",
> +			pxp->status);
> +	}
> +
> +	complete_all(&pxp->termination);
> +
> +	mutex_unlock(&pxp->mutex);
>   }
>   
>   static void pxp_irq_work(struct work_struct *work)
> @@ -229,10 +346,24 @@ int xe_pxp_init(struct xe_device *xe)
>   	if (!pxp)
>   		return -ENOMEM;
>   
> +	INIT_LIST_HEAD(&pxp->queues.list);
> +	spin_lock_init(&pxp->queues.lock);
>   	INIT_WORK(&pxp->irq.work, pxp_irq_work);
>   	pxp->xe = xe;
>   	pxp->gt = gt;
>   
> +	/*
> +	 * we'll use the completions to check if there is an action pending,
> +	 * so we start them as completed and we reinit it when an action is
> +	 * triggered.
> +	 */
> +	init_completion(&pxp->activation);
> +	init_completion(&pxp->termination);
> +	complete_all(&pxp->termination);
> +	complete_all(&pxp->activation);
> +
> +	mutex_init(&pxp->mutex);
> +
>   	pxp->irq.wq = alloc_ordered_workqueue("pxp-wq", 0);
>   	if (!pxp->irq.wq) {
>   		err = -ENOMEM;
> @@ -259,3 +390,243 @@ int xe_pxp_init(struct xe_device *xe)
>   	drmm_kfree(&xe->drm, pxp);
>   	return err;
>   }
> +
> +static int __pxp_start_arb_session(struct xe_pxp *pxp)
> +{
> +	int ret;
> +	unsigned int fw_ref;
> +
> +	fw_ref = xe_force_wake_get(gt_to_fw(pxp->gt), XE_FW_GT);
> +	if (!xe_force_wake_ref_has_domain(fw_ref, XE_FW_GT))
> +		return -EIO;
> +
> +	if (pxp_session_is_in_play(pxp, ARB_SESSION)) {
> +		ret = -EEXIST;
> +		goto out_force_wake;
> +	}
> +
> +	ret = xe_pxp_submit_session_init(&pxp->gsc_res, ARB_SESSION);
> +	if (ret) {
> +		drm_err(&pxp->xe->drm, "Failed to init PXP arb session\n");
Didn't see an answer on the question from the previous rev - why not 
print the value of ret? Same for the second error print below.

> +		goto out_force_wake;
> +	}
> +
> +	ret = pxp_wait_for_session_state(pxp, ARB_SESSION, true);
> +	if (ret) {
> +		drm_err(&pxp->xe->drm, "PXP ARB session failed to go in play\n");
> +		goto out_force_wake;
> +	}
> +
> +	drm_dbg(&pxp->xe->drm, "PXP ARB session is active\n");
> +
> +out_force_wake:
> +	xe_force_wake_put(gt_to_fw(pxp->gt), fw_ref);
> +	return ret;
> +}
> +
> +static void __exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q)
> +{
> +	spin_lock_irq(&pxp->queues.lock);
> +	list_add_tail(&q->pxp.link, &pxp->queues.list);
> +	spin_unlock_irq(&pxp->queues.lock);
> +}
> +
> +/**
> + * xe_pxp_exec_queue_add - add a queue to the PXP list
> + * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
> + * @q: the queue to add to the list
> + *
> + * If PXP is enabled and the prerequisites are done, start the PXP ARB
> + * session (if not already running) and add the queue to the PXP list. Note
> + * that the queue must have previously been marked as using PXP with
> + * xe_pxp_exec_queue_set_type.
> + *
> + * Returns 0 if the PXP ARB session is running and the queue is in the list,
> + * -ENODEV if PXP is disabled, -EBUSY if the PXP prerequisites are not done,
> + * other errno value if something goes wrong during the session start.
> + */
> +int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q)
> +{
> +	int ret = 0;
> +
> +	if (!pxp_is_enabled(pxp))
> +		return -ENODEV;
> +
> +	/*
> +	 * Runtime suspend kills PXP, so we need to turn it off while we have
> +	 * active queues that use PXP
Technically, this is not turning anything off. It would be more accurate 
to say 'hold a reference to prevent suspend happening'.

> +	 */
> +	xe_pm_runtime_get(pxp->xe);
> +
> +	if (!pxp_prerequisites_done(pxp)) {
> +		ret = -EBUSY;
> +		goto out;
> +	}
> +
> +wait_for_idle:
> +	/*
> +	 * if there is an action in progress, wait for it. We need to wait
> +	 * outside the lock because the completion is done from within the lock.
> +	 * Note that the two action should never be pending at the same time.
> +	 */
> +	if (!wait_for_completion_timeout(&pxp->termination,
> +					 msecs_to_jiffies(PXP_TERMINATION_TIMEOUT_MS))) {
> +		ret = -ETIMEDOUT;
> +		goto out;
> +	}
> +
> +	if (!wait_for_completion_timeout(&pxp->activation,
> +					 msecs_to_jiffies(PXP_ACTIVATION_TIMEOUT_MS))) {
> +		ret = -ETIMEDOUT;
> +		goto out;
> +	}
> +
> +	mutex_lock(&pxp->mutex);
> +
> +	/* If PXP is not already active, turn it on */
> +	switch (pxp->status) {
> +	case XE_PXP_ERROR:
> +		ret = -EIO;
> +		break;
> +	case XE_PXP_ACTIVE:
> +		__exec_queue_add(pxp, q);
> +		mutex_unlock(&pxp->mutex);
> +		goto out;
> +	case XE_PXP_READY_TO_START:
> +		pxp->status = XE_PXP_START_IN_PROGRESS;
> +		reinit_completion(&pxp->activation);
> +		break;
> +	case XE_PXP_START_IN_PROGRESS:
> +		/* If a start is in progress then the completion must not be done */
> +		XE_WARN_ON(completion_done(&pxp->activation));
> +		mutex_unlock(&pxp->mutex);
> +		goto wait_for_idle;
> +	case XE_PXP_NEEDS_TERMINATION:
> +		mark_termination_in_progress(pxp);
> +		break;
> +	case XE_PXP_TERMINATION_IN_PROGRESS:
> +	case XE_PXP_NEEDS_ADDITIONAL_TERMINATION:
> +		/* If a termination is in progress then the completion must not be done */
> +		XE_WARN_ON(completion_done(&pxp->termination));
> +		mutex_unlock(&pxp->mutex);
> +		goto wait_for_idle;
> +	default:
> +		drm_err(&pxp->xe->drm, "unexpected state during PXP start: %u\n", pxp->status);
> +		ret = -EIO;
> +		break;
> +	}
> +
> +	mutex_unlock(&pxp->mutex);
> +
> +	if (ret)
> +		goto out;
> +
> +	if (!completion_done(&pxp->termination)) {
> +		ret = pxp_terminate_hw(pxp);
> +		if (ret) {
> +			drm_err(&pxp->xe->drm, "PXP termiantion failed before start\n");
termiantion -> termination

John.

> +			mutex_lock(&pxp->mutex);
> +			pxp->status = XE_PXP_ERROR;
> +			mutex_unlock(&pxp->mutex);
> +
> +			goto out;
> +		}
> +
> +		goto wait_for_idle;
> +	}
> +
> +	/* All the cases except for start should have exited earlier */
> +	XE_WARN_ON(completion_done(&pxp->activation));
> +	ret = __pxp_start_arb_session(pxp);
> +
> +	mutex_lock(&pxp->mutex);
> +
> +	complete_all(&pxp->activation);
> +
> +	/*
> +	 * Any other process should wait until the state goes away from
> +	 * XE_PXP_START_IN_PROGRESS, so if the state is not that something went
> +	 * wrong. Mark the status as needing termination and try again.
> +	 */
> +	if (pxp->status != XE_PXP_START_IN_PROGRESS) {
> +		drm_err(&pxp->xe->drm, "unexpected state after PXP start: %u\n", pxp->status);
> +		pxp->status = XE_PXP_NEEDS_TERMINATION;
> +		mutex_unlock(&pxp->mutex);
> +		goto wait_for_idle;
> +	}
> +
> +	/* If everything went ok, update the status and add the queue to the list */
> +	if (!ret) {
> +		pxp->status = XE_PXP_ACTIVE;
> +		__exec_queue_add(pxp, q);
> +	} else {
> +		pxp->status = XE_PXP_ERROR;
> +	}
> +
> +	mutex_unlock(&pxp->mutex);
> +
> +out:
> +	/*
> +	 * in the successful case the PM ref is released from
> +	 * xe_pxp_exec_queue_remove
> +	 */
> +	if (ret)
> +		xe_pm_runtime_put(pxp->xe);
> +
> +	return ret;
> +}
> +
> +/**
> + * xe_pxp_exec_queue_remove - remove a queue from the PXP list
> + * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
> + * @q: the queue to remove from the list
> + *
> + * If PXP is enabled and the exec_queue is in the list, the queue will be
> + * removed from the list and its PM reference will be released. It is safe to
> + * call this function multiple times for the same queue.
> + */
> +void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q)
> +{
> +	bool need_pm_put = false;
> +
> +	if (!pxp_is_enabled(pxp))
> +		return;
> +
> +	spin_lock_irq(&pxp->queues.lock);
> +
> +	if (!list_empty(&q->pxp.link)) {
> +		list_del_init(&q->pxp.link);
> +		need_pm_put = true;
> +	}
> +
> +	spin_unlock_irq(&pxp->queues.lock);
> +
> +	if (need_pm_put)
> +		xe_pm_runtime_put(pxp->xe);
> +}
> +
> +static void pxp_invalidate_queues(struct xe_pxp *pxp)
> +{
> +	struct xe_exec_queue *tmp, *q;
> +
> +	spin_lock_irq(&pxp->queues.lock);
> +
> +	/*
> +	 * Removing a queue from the PXP list requires a put of the RPM ref that
> +	 * the queue holds to keep the PXP session alive, which can't be done
> +	 * under spinlock. Since it is safe to kill a queue multiple times, we
> +	 * can leave the invalid queue in the list for now and postpone the
> +	 * removal and associated RPM put to when the queue is destroyed.
> +	 */
> +	list_for_each_entry(tmp, &pxp->queues.list, pxp.link) {
> +		q = xe_exec_queue_get_unless_zero(tmp);
> +
> +		if (!q)
> +			continue;
> +
> +		xe_exec_queue_kill(q);
> +		xe_exec_queue_put(q);
> +	}
> +
> +	spin_unlock_irq(&pxp->queues.lock);
> +}
> diff --git a/drivers/gpu/drm/xe/xe_pxp.h b/drivers/gpu/drm/xe/xe_pxp.h
> index 39435c644dcd..f482567c27b5 100644
> --- a/drivers/gpu/drm/xe/xe_pxp.h
> +++ b/drivers/gpu/drm/xe/xe_pxp.h
> @@ -9,6 +9,8 @@
>   #include <linux/types.h>
>   
>   struct xe_device;
> +struct xe_exec_queue;
> +struct xe_pxp;
>   
>   #define DRM_XE_PXP_HWDRM_DEFAULT_SESSION 0xF /* TODO: move to uapi */
>   
> @@ -17,4 +19,7 @@ bool xe_pxp_is_supported(const struct xe_device *xe);
>   int xe_pxp_init(struct xe_device *xe);
>   void xe_pxp_irq_handler(struct xe_device *xe, u16 iir);
>   
> +int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q);
> +void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q);
> +
>   #endif /* __XE_PXP_H__ */
> diff --git a/drivers/gpu/drm/xe/xe_pxp_types.h b/drivers/gpu/drm/xe/xe_pxp_types.h
> index 311d08111b5f..bd741720f67d 100644
> --- a/drivers/gpu/drm/xe/xe_pxp_types.h
> +++ b/drivers/gpu/drm/xe/xe_pxp_types.h
> @@ -6,7 +6,10 @@
>   #ifndef __XE_PXP_TYPES_H__
>   #define __XE_PXP_TYPES_H__
>   
> +#include <linux/completion.h>
>   #include <linux/iosys-map.h>
> +#include <linux/mutex.h>
> +#include <linux/spinlock.h>
>   #include <linux/types.h>
>   #include <linux/workqueue.h>
>   
> @@ -16,6 +19,16 @@ struct xe_device;
>   struct xe_gt;
>   struct xe_vm;
>   
> +enum xe_pxp_status {
> +	XE_PXP_ERROR = -1,
> +	XE_PXP_NEEDS_TERMINATION = 0, /* starting status */
> +	XE_PXP_NEEDS_ADDITIONAL_TERMINATION,
> +	XE_PXP_TERMINATION_IN_PROGRESS,
> +	XE_PXP_READY_TO_START,
> +	XE_PXP_START_IN_PROGRESS,
> +	XE_PXP_ACTIVE,
> +};
> +
>   /**
>    * struct xe_pxp_gsc_client_resources - resources for GSC submission by a PXP
>    * client. The GSC FW supports multiple GSC client active at the same time.
> @@ -82,6 +95,23 @@ struct xe_pxp {
>   #define PXP_TERMINATION_REQUEST  BIT(0)
>   #define PXP_TERMINATION_COMPLETE BIT(1)
>   	} irq;
> +
> +	/** @mutex: protects the pxp status and the queue list */
> +	struct mutex mutex;
> +	/** @status: the current pxp status */
> +	enum xe_pxp_status status;
> +	/** @activation: completion struct that tracks pxp start */
> +	struct completion activation;
> +	/** @termination: completion struct that tracks terminations */
> +	struct completion termination;
> +
> +	/** @queues: management of exec_queues that use PXP */
> +	struct {
> +		/** @queues.lock: spinlock protecting the queue management */
> +		spinlock_t lock;
> +		/** @queues.list: list of exec_queues that use PXP */
> +		struct list_head list;
> +	} queues;
>   };
>   
>   #endif /* __XE_PXP_TYPES_H__ */


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

* Re: [PATCH v4 08/13] drm/xe/pxp: Add userspace and LRC support for PXP-using queues
  2025-01-06 21:12 ` [PATCH v4 08/13] drm/xe/pxp: Add userspace and LRC support for PXP-using queues Daniele Ceraolo Spurio
  2025-01-06 21:18   ` Dixit, Ashutosh
@ 2025-01-13 22:34   ` John Harrison
  1 sibling, 0 replies; 27+ messages in thread
From: John Harrison @ 2025-01-13 22:34 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio, intel-xe

On 1/6/2025 13:12, Daniele Ceraolo Spurio wrote:
> Userspace is required to mark a queue as using PXP to guarantee that the
> PXP instructions will work. In addition to managing the PXP sessions,
> when a PXP queue is created the driver will set the relevant bits in
> its context control register.
>
> On submission of a valid PXP queue, the driver will validate all
> encrypted objects mapped to the VM to ensured they were encrypted with
> the current key.
>
> v2: Remove pxp_types include outside of PXP code (Jani), better comments
> and code cleanup (John)
>
> v3: split the internal PXP management to a separate patch for ease of
> review. re-order ioctl checks to always return -EINVAL if parameters are
> invalid, rebase on msix changes.
>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>

> ---
>   drivers/gpu/drm/xe/regs/xe_engine_regs.h |  1 +
>   drivers/gpu/drm/xe/xe_exec_queue.c       | 56 +++++++++++++++++++++++-
>   drivers/gpu/drm/xe/xe_exec_queue.h       |  5 +++
>   drivers/gpu/drm/xe/xe_exec_queue_types.h |  2 +
>   drivers/gpu/drm/xe/xe_execlist.c         |  2 +-
>   drivers/gpu/drm/xe/xe_lrc.c              | 18 ++++++--
>   drivers/gpu/drm/xe/xe_lrc.h              |  4 +-
>   drivers/gpu/drm/xe/xe_pxp.c              | 35 +++++++++++++--
>   drivers/gpu/drm/xe/xe_pxp.h              |  4 +-
>   include/uapi/drm/xe_drm.h                | 40 ++++++++++++++++-
>   10 files changed, 153 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/regs/xe_engine_regs.h b/drivers/gpu/drm/xe/regs/xe_engine_regs.h
> index d86219dedde2..c8fd3d5ca502 100644
> --- a/drivers/gpu/drm/xe/regs/xe_engine_regs.h
> +++ b/drivers/gpu/drm/xe/regs/xe_engine_regs.h
> @@ -132,6 +132,7 @@
>   #define RING_EXECLIST_STATUS_HI(base)		XE_REG((base) + 0x234 + 4)
>   
>   #define RING_CONTEXT_CONTROL(base)		XE_REG((base) + 0x244, XE_REG_OPTION_MASKED)
> +#define	  CTX_CTRL_PXP_ENABLE			REG_BIT(10)
>   #define	  CTX_CTRL_OAC_CONTEXT_ENABLE		REG_BIT(8)
>   #define	  CTX_CTRL_RUN_ALONE			REG_BIT(7)
>   #define	  CTX_CTRL_INDIRECT_RING_STATE_ENABLE	REG_BIT(4)
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
> index 2ec4e2eb6f2a..6051db78d706 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue.c
> +++ b/drivers/gpu/drm/xe/xe_exec_queue.c
> @@ -25,6 +25,7 @@
>   #include "xe_ring_ops_types.h"
>   #include "xe_trace.h"
>   #include "xe_vm.h"
> +#include "xe_pxp.h"
>   
>   enum xe_exec_queue_sched_prop {
>   	XE_EXEC_QUEUE_JOB_TIMEOUT = 0,
> @@ -38,6 +39,8 @@ static int exec_queue_user_extensions(struct xe_device *xe, struct xe_exec_queue
>   
>   static void __xe_exec_queue_free(struct xe_exec_queue *q)
>   {
> +	if (xe_exec_queue_uses_pxp(q))
> +		xe_pxp_exec_queue_remove(gt_to_xe(q->gt)->pxp, q);
>   	if (q->vm)
>   		xe_vm_put(q->vm);
>   
> @@ -113,6 +116,21 @@ static int __xe_exec_queue_init(struct xe_exec_queue *q)
>   {
>   	struct xe_vm *vm = q->vm;
>   	int i, err;
> +	u32 flags = 0;
> +
> +	/*
> +	 * PXP workloads executing on RCS or CCS must run in isolation (i.e. no
> +	 * other workload can use the EUs at the same time). On MTL this is done
> +	 * by setting the RUNALONE bit in the LRC, while starting on Xe2 there
> +	 * is a dedicated bit for it.
> +	 */
> +	if (xe_exec_queue_uses_pxp(q) &&
> +	    (q->class == XE_ENGINE_CLASS_RENDER || q->class == XE_ENGINE_CLASS_COMPUTE)) {
> +		if (GRAPHICS_VER(gt_to_xe(q->gt)) >= 20)
> +			flags |= XE_LRC_CREATE_PXP;
> +		else
> +			flags |= XE_LRC_CREATE_RUNALONE;
> +	}
>   
>   	if (vm) {
>   		err = xe_vm_lock(vm, true);
> @@ -121,7 +139,7 @@ static int __xe_exec_queue_init(struct xe_exec_queue *q)
>   	}
>   
>   	for (i = 0; i < q->width; ++i) {
> -		q->lrc[i] = xe_lrc_create(q->hwe, q->vm, SZ_16K, q->msix_vec);
> +		q->lrc[i] = xe_lrc_create(q->hwe, q->vm, SZ_16K, q->msix_vec, flags);
>   		if (IS_ERR(q->lrc[i])) {
>   			err = PTR_ERR(q->lrc[i]);
>   			goto err_unlock;
> @@ -166,6 +184,19 @@ struct xe_exec_queue *xe_exec_queue_create(struct xe_device *xe, struct xe_vm *v
>   	if (err)
>   		goto err_post_alloc;
>   
> +	/*
> +	 * We can only add the queue to the PXP list after the init is complete,
> +	 * because the PXP termination can call exec_queue_kill and that will
> +	 * go bad if the queue is only half-initialized. This means that we
> +	 * can't do it when we handle the PXP extension in __xe_exec_queue_alloc
> +	 * and we need to do it here instead.
> +	 */
> +	if (xe_exec_queue_uses_pxp(q)) {
> +		err = xe_pxp_exec_queue_add(xe->pxp, q);
> +		if (err)
> +			goto err_post_alloc;
> +	}
> +
>   	return q;
>   
>   err_post_alloc:
> @@ -254,6 +285,9 @@ void xe_exec_queue_destroy(struct kref *ref)
>   	struct xe_exec_queue *q = container_of(ref, struct xe_exec_queue, refcount);
>   	struct xe_exec_queue *eq, *next;
>   
> +	if (xe_exec_queue_uses_pxp(q))
> +		xe_pxp_exec_queue_remove(gt_to_xe(q->gt)->pxp, q);
> +
>   	xe_exec_queue_last_fence_put_unlocked(q);
>   	if (!(q->flags & EXEC_QUEUE_FLAG_BIND_ENGINE_CHILD)) {
>   		list_for_each_entry_safe(eq, next, &q->multi_gt_list,
> @@ -409,6 +443,22 @@ static int exec_queue_set_timeslice(struct xe_device *xe, struct xe_exec_queue *
>   	return 0;
>   }
>   
> +static int
> +exec_queue_set_pxp_type(struct xe_device *xe, struct xe_exec_queue *q, u64 value)
> +{
> +	if (value == DRM_XE_PXP_TYPE_NONE)
> +		return 0;
> +
> +	/* we only support HWDRM sessions right now */
> +	if (XE_IOCTL_DBG(xe, value != DRM_XE_PXP_TYPE_HWDRM))
> +		return -EINVAL;
> +
> +	if (!xe_pxp_is_enabled(xe->pxp))
> +		return -ENODEV;
> +
> +	return xe_pxp_exec_queue_set_type(xe->pxp, q, DRM_XE_PXP_TYPE_HWDRM);
> +}
> +
>   typedef int (*xe_exec_queue_set_property_fn)(struct xe_device *xe,
>   					     struct xe_exec_queue *q,
>   					     u64 value);
> @@ -416,6 +466,7 @@ typedef int (*xe_exec_queue_set_property_fn)(struct xe_device *xe,
>   static const xe_exec_queue_set_property_fn exec_queue_set_property_funcs[] = {
>   	[DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY] = exec_queue_set_priority,
>   	[DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE] = exec_queue_set_timeslice,
> +	[DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE] = exec_queue_set_pxp_type,
>   };
>   
>   static int exec_queue_user_ext_set_property(struct xe_device *xe,
> @@ -435,7 +486,8 @@ static int exec_queue_user_ext_set_property(struct xe_device *xe,
>   			 ARRAY_SIZE(exec_queue_set_property_funcs)) ||
>   	    XE_IOCTL_DBG(xe, ext.pad) ||
>   	    XE_IOCTL_DBG(xe, ext.property != DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY &&
> -			 ext.property != DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE))
> +			 ext.property != DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE &&
> +			 ext.property != DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE))
>   		return -EINVAL;
>   
>   	idx = array_index_nospec(ext.property, ARRAY_SIZE(exec_queue_set_property_funcs));
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue.h b/drivers/gpu/drm/xe/xe_exec_queue.h
> index 90c7f73eab88..17bc50a7f05a 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue.h
> +++ b/drivers/gpu/drm/xe/xe_exec_queue.h
> @@ -57,6 +57,11 @@ static inline bool xe_exec_queue_is_parallel(struct xe_exec_queue *q)
>   	return q->width > 1;
>   }
>   
> +static inline bool xe_exec_queue_uses_pxp(struct xe_exec_queue *q)
> +{
> +	return q->pxp.type;
> +}
> +
>   bool xe_exec_queue_is_lr(struct xe_exec_queue *q);
>   
>   bool xe_exec_queue_ring_full(struct xe_exec_queue *q);
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue_types.h b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> index 6d85a069947f..6eb7ff091534 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue_types.h
> +++ b/drivers/gpu/drm/xe/xe_exec_queue_types.h
> @@ -132,6 +132,8 @@ struct xe_exec_queue {
>   
>   	/** @pxp: PXP info tracking */
>   	struct {
> +		/** @pxp.type: PXP session type used by this queue */
> +		u8 type;
>   		/** @pxp.link: link into the list of PXP exec queues */
>   		struct list_head link;
>   	} pxp;
> diff --git a/drivers/gpu/drm/xe/xe_execlist.c b/drivers/gpu/drm/xe/xe_execlist.c
> index 5ef96deaa881..779a52daf3d7 100644
> --- a/drivers/gpu/drm/xe/xe_execlist.c
> +++ b/drivers/gpu/drm/xe/xe_execlist.c
> @@ -269,7 +269,7 @@ struct xe_execlist_port *xe_execlist_port_create(struct xe_device *xe,
>   
>   	port->hwe = hwe;
>   
> -	port->lrc = xe_lrc_create(hwe, NULL, SZ_16K, XE_IRQ_DEFAULT_MSIX);
> +	port->lrc = xe_lrc_create(hwe, NULL, SZ_16K, XE_IRQ_DEFAULT_MSIX, 0);
>   	if (IS_ERR(port->lrc)) {
>   		err = PTR_ERR(port->lrc);
>   		goto err;
> diff --git a/drivers/gpu/drm/xe/xe_lrc.c b/drivers/gpu/drm/xe/xe_lrc.c
> index bbb9ffbf6367..df3ceddede07 100644
> --- a/drivers/gpu/drm/xe/xe_lrc.c
> +++ b/drivers/gpu/drm/xe/xe_lrc.c
> @@ -883,7 +883,8 @@ static void xe_lrc_finish(struct xe_lrc *lrc)
>   #define PVC_CTX_ACC_CTR_THOLD	(0x2a + 1)
>   
>   static int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
> -		       struct xe_vm *vm, u32 ring_size, u16 msix_vec)
> +		       struct xe_vm *vm, u32 ring_size, u16 msix_vec,
> +		       u32 init_flags)
>   {
>   	struct xe_gt *gt = hwe->gt;
>   	struct xe_tile *tile = gt_to_tile(gt);
> @@ -979,6 +980,16 @@ static int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
>   				     RING_CTL_SIZE(lrc->ring.size) | RING_VALID);
>   	}
>   
> +	if (init_flags & XE_LRC_CREATE_RUNALONE)
> +		xe_lrc_write_ctx_reg(lrc, CTX_CONTEXT_CONTROL,
> +				     xe_lrc_read_ctx_reg(lrc, CTX_CONTEXT_CONTROL) |
> +				     _MASKED_BIT_ENABLE(CTX_CTRL_RUN_ALONE));
> +
> +	if (init_flags & XE_LRC_CREATE_PXP)
> +		xe_lrc_write_ctx_reg(lrc, CTX_CONTEXT_CONTROL,
> +				     xe_lrc_read_ctx_reg(lrc, CTX_CONTEXT_CONTROL) |
> +				     _MASKED_BIT_ENABLE(CTX_CTRL_PXP_ENABLE));
> +
>   	xe_lrc_write_ctx_reg(lrc, CTX_TIMESTAMP, 0);
>   
>   	if (xe->info.has_asid && vm)
> @@ -1021,6 +1032,7 @@ static int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
>    * @vm: The VM (address space)
>    * @ring_size: LRC ring size
>    * @msix_vec: MSI-X interrupt vector (for platforms that support it)
> + * @flags: LRC initialization flags
>    *
>    * Allocate and initialize the Logical Ring Context (LRC).
>    *
> @@ -1028,7 +1040,7 @@ static int xe_lrc_init(struct xe_lrc *lrc, struct xe_hw_engine *hwe,
>    * upon failure.
>    */
>   struct xe_lrc *xe_lrc_create(struct xe_hw_engine *hwe, struct xe_vm *vm,
> -			     u32 ring_size, u16 msix_vec)
> +			     u32 ring_size, u16 msix_vec, u32 flags)
>   {
>   	struct xe_lrc *lrc;
>   	int err;
> @@ -1037,7 +1049,7 @@ struct xe_lrc *xe_lrc_create(struct xe_hw_engine *hwe, struct xe_vm *vm,
>   	if (!lrc)
>   		return ERR_PTR(-ENOMEM);
>   
> -	err = xe_lrc_init(lrc, hwe, vm, ring_size, msix_vec);
> +	err = xe_lrc_init(lrc, hwe, vm, ring_size, msix_vec, flags);
>   	if (err) {
>   		kfree(lrc);
>   		return ERR_PTR(err);
> diff --git a/drivers/gpu/drm/xe/xe_lrc.h b/drivers/gpu/drm/xe/xe_lrc.h
> index b27e80cd842a..0b40f349ab95 100644
> --- a/drivers/gpu/drm/xe/xe_lrc.h
> +++ b/drivers/gpu/drm/xe/xe_lrc.h
> @@ -42,8 +42,10 @@ struct xe_lrc_snapshot {
>   #define LRC_PPHWSP_FLUSH_INVAL_SCRATCH_ADDR (0x34 * 4)
>   #define LRC_PPHWSP_PXP_INVAL_SCRATCH_ADDR (0x40 * 4)
>   
> +#define XE_LRC_CREATE_RUNALONE 0x1
> +#define XE_LRC_CREATE_PXP 0x2
>   struct xe_lrc *xe_lrc_create(struct xe_hw_engine *hwe, struct xe_vm *vm,
> -			     u32 ring_size, u16 msix_vec);
> +			     u32 ring_size, u16 msix_vec, u32 flags);
>   void xe_lrc_destroy(struct kref *ref);
>   
>   /**
> diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
> index d0471a360d69..05ed2e71be63 100644
> --- a/drivers/gpu/drm/xe/xe_pxp.c
> +++ b/drivers/gpu/drm/xe/xe_pxp.c
> @@ -6,6 +6,7 @@
>   #include "xe_pxp.h"
>   
>   #include <drm/drm_managed.h>
> +#include <uapi/drm/xe_drm.h>
>   
>   #include "xe_device_types.h"
>   #include "xe_exec_queue.h"
> @@ -47,7 +48,7 @@ bool xe_pxp_is_supported(const struct xe_device *xe)
>   	return xe->info.has_pxp && IS_ENABLED(CONFIG_INTEL_MEI_GSC_PROXY);
>   }
>   
> -static bool pxp_is_enabled(const struct xe_pxp *pxp)
> +bool xe_pxp_is_enabled(const struct xe_pxp *pxp)
>   {
>   	return pxp;
>   }
> @@ -249,7 +250,7 @@ void xe_pxp_irq_handler(struct xe_device *xe, u16 iir)
>   {
>   	struct xe_pxp *pxp = xe->pxp;
>   
> -	if (!pxp_is_enabled(pxp)) {
> +	if (!xe_pxp_is_enabled(pxp)) {
>   		drm_err(&xe->drm, "PXP irq 0x%x received with PXP disabled!\n", iir);
>   		return;
>   	}
> @@ -424,6 +425,27 @@ static int __pxp_start_arb_session(struct xe_pxp *pxp)
>   	return ret;
>   }
>   
> +/**
> + * xe_pxp_exec_queue_set_type - Mark a queue as using PXP
> + * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
> + * @q: the queue to mark as using PXP
> + * @type: the type of PXP session this queue will use
> + *
> + * Returns 0 if the selected PXP type is supported, -ENODEV otherwise.
> + */
> +int xe_pxp_exec_queue_set_type(struct xe_pxp *pxp, struct xe_exec_queue *q, u8 type)
> +{
> +	if (!xe_pxp_is_enabled(pxp))
> +		return -ENODEV;
> +
> +	/* we only support HWDRM sessions right now */
> +	xe_assert(pxp->xe, type == DRM_XE_PXP_TYPE_HWDRM);
> +
> +	q->pxp.type = type;
> +
> +	return 0;
> +}
> +
>   static void __exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q)
>   {
>   	spin_lock_irq(&pxp->queues.lock);
> @@ -449,9 +471,12 @@ int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q)
>   {
>   	int ret = 0;
>   
> -	if (!pxp_is_enabled(pxp))
> +	if (!xe_pxp_is_enabled(pxp))
>   		return -ENODEV;
>   
> +	/* we only support HWDRM sessions right now */
> +	xe_assert(pxp->xe, q->pxp.type == DRM_XE_PXP_TYPE_HWDRM);
> +
>   	/*
>   	 * Runtime suspend kills PXP, so we need to turn it off while we have
>   	 * active queues that use PXP
> @@ -589,7 +614,7 @@ void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q)
>   {
>   	bool need_pm_put = false;
>   
> -	if (!pxp_is_enabled(pxp))
> +	if (!xe_pxp_is_enabled(pxp))
>   		return;
>   
>   	spin_lock_irq(&pxp->queues.lock);
> @@ -599,6 +624,8 @@ void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q)
>   		need_pm_put = true;
>   	}
>   
> +	q->pxp.type = DRM_XE_PXP_TYPE_NONE;
> +
>   	spin_unlock_irq(&pxp->queues.lock);
>   
>   	if (need_pm_put)
> diff --git a/drivers/gpu/drm/xe/xe_pxp.h b/drivers/gpu/drm/xe/xe_pxp.h
> index f482567c27b5..2e0ab186072a 100644
> --- a/drivers/gpu/drm/xe/xe_pxp.h
> +++ b/drivers/gpu/drm/xe/xe_pxp.h
> @@ -12,13 +12,13 @@ struct xe_device;
>   struct xe_exec_queue;
>   struct xe_pxp;
>   
> -#define DRM_XE_PXP_HWDRM_DEFAULT_SESSION 0xF /* TODO: move to uapi */
> -
>   bool xe_pxp_is_supported(const struct xe_device *xe);
> +bool xe_pxp_is_enabled(const struct xe_pxp *pxp);
>   
>   int xe_pxp_init(struct xe_device *xe);
>   void xe_pxp_irq_handler(struct xe_device *xe, u16 iir);
>   
> +int xe_pxp_exec_queue_set_type(struct xe_pxp *pxp, struct xe_exec_queue *q, u8 type);
>   int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q);
>   void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q);
>   
> diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
> index f62689ca861a..5c97a758266d 100644
> --- a/include/uapi/drm/xe_drm.h
> +++ b/include/uapi/drm/xe_drm.h
> @@ -1087,6 +1087,24 @@ struct drm_xe_vm_bind {
>   /**
>    * struct drm_xe_exec_queue_create - Input of &DRM_IOCTL_XE_EXEC_QUEUE_CREATE
>    *
> + * This ioctl supports setting the following properties via the
> + * %DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY extension, which uses the
> + * generic @drm_xe_ext_set_property struct:
> + *
> + *  - %DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY - set the queue priority.
> + *    CAP_SYS_NICE is required to set a value above normal.
> + *  - %DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE - set the queue timeslice
> + *    duration in microseconds.
> + *  - %DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE - set the type of PXP session
> + *    this queue will be used with. Valid values are listed in enum
> + *    drm_xe_pxp_session_type. %DRM_XE_PXP_TYPE_NONE is the default behavior, so
> + *    there is no need to explicitly set that. When a queue of type
> + *    %DRM_XE_PXP_TYPE_HWDRM is created, the PXP default HWDRM session
> + *    (%XE_PXP_HWDRM_DEFAULT_SESSION) will be started, if isn't already running.
> + *    Given that going into a power-saving state kills PXP HWDRM sessions,
> + *    runtime PM will be blocked while queues of this type are alive.
> + *    All PXP queues will be killed if a PXP invalidation event occurs.
> + *
>    * The example below shows how to use @drm_xe_exec_queue_create to create
>    * a simple exec_queue (no parallel submission) of class
>    * &DRM_XE_ENGINE_CLASS_RENDER.
> @@ -1110,7 +1128,7 @@ struct drm_xe_exec_queue_create {
>   #define DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY		0
>   #define   DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY		0
>   #define   DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE		1
> -
> +#define   DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE		2
>   	/** @extensions: Pointer to the first extension struct, if any */
>   	__u64 extensions;
>   
> @@ -1729,6 +1747,26 @@ struct drm_xe_oa_stream_info {
>   	__u64 reserved[3];
>   };
>   
> +/**
> + * enum drm_xe_pxp_session_type - Supported PXP session types.
> + *
> + * We currently only support HWDRM sessions, which are used for protected
> + * content that ends up being displayed, but the HW supports multiple types, so
> + * we might extend support in the future.
> + */
> +enum drm_xe_pxp_session_type {
> +	/** @DRM_XE_PXP_TYPE_NONE: PXP not used */
> +	DRM_XE_PXP_TYPE_NONE = 0,
> +	/**
> +	 * @DRM_XE_PXP_TYPE_HWDRM: HWDRM sessions are used for content that ends
> +	 * up on the display.
> +	 */
> +	DRM_XE_PXP_TYPE_HWDRM = 1,
> +};
> +
> +/* ID of the protected content session managed by Xe when PXP is active */
> +#define DRM_XE_PXP_HWDRM_DEFAULT_SESSION 0xf
> +
>   #if defined(__cplusplus)
>   }
>   #endif


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

* Re: [PATCH v4 10/13] drm/xe/pxp: Add API to mark a BO as using PXP
  2025-01-06 21:12 ` [PATCH v4 10/13] drm/xe/pxp: Add API to mark a BO as using PXP Daniele Ceraolo Spurio
@ 2025-01-13 23:03   ` John Harrison
  0 siblings, 0 replies; 27+ messages in thread
From: John Harrison @ 2025-01-13 23:03 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio, intel-xe
  Cc: Matthew Brost, Thomas Hellström, Jani Nikula

On 1/6/2025 13:12, Daniele Ceraolo Spurio wrote:
> The driver needs to know if a BO is encrypted with PXP to enable the
> display decryption at flip time.
> Furthermore, we want to keep track of the status of the encryption and
> reject any operation that involves a BO that is encrypted using an old
> key. There are two points in time where such checks can kick in:
>
> 1 - at VM bind time, all operations except for unmapping will be
>      rejected if the key used to encrypt the BO is no longer valid. This
>      check is opt-in via a new VM_BIND flag, to avoid a scenario where a
>      malicious app purposely shares an invalid BO with a non-PXP aware
>      app (such as a compositor). If the VM_BIND was failed, the
>      compositor would be unable to display anything at all. Allowing the
>      bind to go through means that output still works, it just displays
>      garbage data within the bounds of the illegal BO.
>
> 2 - at job submission time, if the queue is marked as using PXP, all
>      objects bound to the VM will be checked and the submission will be
>      rejected if any of them was encrypted with a key that is no longer
>      valid.
>
> Note that there is no risk of leaking the encrypted data if a user does
> not opt-in to those checks; the only consequence is that the user will
> not realize that the encryption key is changed and that the data is no
> longer valid.
>
> v2: Better commnnts and descriptions (John), rebase
>
> v3: Properly return the result of key_assign up the stack, do not use
> xe_bo in display headers (Jani)
>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> Cc: Jani Nikula <jani.nikula@intel.com>
> ---
>   .../xe/compat-i915-headers/pxp/intel_pxp.h    | 12 ++-
>   drivers/gpu/drm/xe/display/intel_bo.c         |  2 +-
>   drivers/gpu/drm/xe/xe_bo.c                    | 98 ++++++++++++++++++-
>   drivers/gpu/drm/xe/xe_bo.h                    |  5 +
>   drivers/gpu/drm/xe/xe_bo_types.h              |  3 +
>   drivers/gpu/drm/xe/xe_exec.c                  |  6 ++
>   drivers/gpu/drm/xe/xe_pxp.c                   | 90 +++++++++++++++++
>   drivers/gpu/drm/xe/xe_pxp.h                   |  6 ++
>   drivers/gpu/drm/xe/xe_pxp_types.h             | 11 +++
>   drivers/gpu/drm/xe/xe_vm.c                    | 46 ++++++++-
>   drivers/gpu/drm/xe/xe_vm.h                    |  2 +
>   include/uapi/drm/xe_drm.h                     | 19 ++++
>   12 files changed, 293 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h b/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h
> index 419e8e926f00..d2eb8e1f6c4b 100644
> --- a/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/pxp/intel_pxp.h
> @@ -9,6 +9,8 @@
>   #include <linux/errno.h>
>   #include <linux/types.h>
>   
> +#include "xe_pxp.h"
> +
>   struct drm_gem_object;
>   struct xe_pxp;
>   
> @@ -16,7 +18,15 @@ static inline int intel_pxp_key_check(struct xe_pxp *pxp,
>   				      struct drm_gem_object *obj,
>   				      bool assign)
>   {
> -	return -ENODEV;
> +	/*
> +	 * The assign variable is used in i915 to assign the key to the BO at
> +	 * first submission time. In Xe the key is instead assigned at BO
> +	 * creation time, so the assign variable must always be false.
> +	 */
> +	if (assign)
> +		return -EINVAL;
> +
> +	return xe_pxp_obj_key_check(pxp, obj);
>   }
>   
>   #endif
> diff --git a/drivers/gpu/drm/xe/display/intel_bo.c b/drivers/gpu/drm/xe/display/intel_bo.c
> index b463f5bd4eed..27437c22bd70 100644
> --- a/drivers/gpu/drm/xe/display/intel_bo.c
> +++ b/drivers/gpu/drm/xe/display/intel_bo.c
> @@ -25,7 +25,7 @@ bool intel_bo_is_shmem(struct drm_gem_object *obj)
>   
>   bool intel_bo_is_protected(struct drm_gem_object *obj)
>   {
> -	return false;
> +	return xe_bo_is_protected(gem_to_xe_bo(obj));
>   }
>   
>   void intel_bo_flush_if_display(struct drm_gem_object *obj)
> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
> index e6c896ad5602..d1be8f5071b9 100644
> --- a/drivers/gpu/drm/xe/xe_bo.c
> +++ b/drivers/gpu/drm/xe/xe_bo.c
> @@ -6,6 +6,7 @@
>   #include "xe_bo.h"
>   
>   #include <linux/dma-buf.h>
> +#include <linux/nospec.h>
>   
>   #include <drm/drm_drv.h>
>   #include <drm/drm_gem_ttm_helper.h>
> @@ -24,6 +25,7 @@
>   #include "xe_migrate.h"
>   #include "xe_pm.h"
>   #include "xe_preempt_fence.h"
> +#include "xe_pxp.h"
>   #include "xe_res_cursor.h"
>   #include "xe_trace_bo.h"
>   #include "xe_ttm_stolen_mgr.h"
> @@ -2135,6 +2137,93 @@ void xe_bo_vunmap(struct xe_bo *bo)
>   	__xe_bo_vunmap(bo);
>   }
>   
> +static int gem_create_set_pxp_type(struct xe_device *xe, struct xe_bo *bo, u64 value)
> +{
> +	if (value == DRM_XE_PXP_TYPE_NONE)
> +		return 0;
> +
> +	/* we only support DRM_XE_PXP_TYPE_HWDRM for now */
> +	if (XE_IOCTL_DBG(xe, value != DRM_XE_PXP_TYPE_HWDRM))
> +		return -EINVAL;
> +
> +	return xe_pxp_key_assign(xe->pxp, bo);
> +}
> +
> +typedef int (*xe_gem_create_set_property_fn)(struct xe_device *xe,
> +					     struct xe_bo *bo,
> +					     u64 value);
> +
> +static const xe_gem_create_set_property_fn gem_create_set_property_funcs[] = {
> +	[DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY] = gem_create_set_pxp_type,
> +};
> +
> +static int gem_create_user_ext_set_property(struct xe_device *xe,
> +					    struct xe_bo *bo,
> +					    u64 extension)
> +{
> +	u64 __user *address = u64_to_user_ptr(extension);
> +	struct drm_xe_ext_set_property ext;
> +	int err;
> +	u32 idx;
> +
> +	err = __copy_from_user(&ext, address, sizeof(ext));
> +	if (XE_IOCTL_DBG(xe, err))
> +		return -EFAULT;
> +
> +	if (XE_IOCTL_DBG(xe, ext.property >=
> +			 ARRAY_SIZE(gem_create_set_property_funcs)) ||
> +	    XE_IOCTL_DBG(xe, ext.pad) ||
> +	    XE_IOCTL_DBG(xe, ext.property != DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY))
> +		return -EINVAL;
> +
> +	idx = array_index_nospec(ext.property, ARRAY_SIZE(gem_create_set_property_funcs));
> +	if (!gem_create_set_property_funcs[idx])
> +		return -EINVAL;
> +
> +	return gem_create_set_property_funcs[idx](xe, bo, ext.value);
> +}
> +
> +typedef int (*xe_gem_create_user_extension_fn)(struct xe_device *xe,
> +					       struct xe_bo *bo,
> +					       u64 extension);
> +
> +static const xe_gem_create_user_extension_fn gem_create_user_extension_funcs[] = {
> +	[DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY] = gem_create_user_ext_set_property,
> +};
> +
> +#define MAX_USER_EXTENSIONS	16
> +static int gem_create_user_extensions(struct xe_device *xe, struct xe_bo *bo,
> +				      u64 extensions, int ext_number)
> +{
> +	u64 __user *address = u64_to_user_ptr(extensions);
> +	struct drm_xe_user_extension ext;
> +	int err;
> +	u32 idx;
> +
> +	if (XE_IOCTL_DBG(xe, ext_number >= MAX_USER_EXTENSIONS))
> +		return -E2BIG;
> +
> +	err = __copy_from_user(&ext, address, sizeof(ext));
> +	if (XE_IOCTL_DBG(xe, err))
> +		return -EFAULT;
> +
> +	if (XE_IOCTL_DBG(xe, ext.pad) ||
> +	    XE_IOCTL_DBG(xe, ext.name >= ARRAY_SIZE(gem_create_user_extension_funcs)))
> +		return -EINVAL;
> +
> +	idx = array_index_nospec(ext.name,
> +				 ARRAY_SIZE(gem_create_user_extension_funcs));
> +	err = gem_create_user_extension_funcs[idx](xe, bo, extensions);
> +	if (XE_IOCTL_DBG(xe, err))
> +		return err;
> +
> +	if (ext.next_extension)
> +		return gem_create_user_extensions(xe, bo, ext.next_extension,
> +						  ++ext_number);
> +
> +	return 0;
> +}
> +
>   int xe_gem_create_ioctl(struct drm_device *dev, void *data,
>   			struct drm_file *file)
>   {
> @@ -2147,8 +2236,7 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
>   	u32 handle;
>   	int err;
>   
> -	if (XE_IOCTL_DBG(xe, args->extensions) ||
> -	    XE_IOCTL_DBG(xe, args->pad[0] || args->pad[1] || args->pad[2]) ||
> +	if (XE_IOCTL_DBG(xe, args->pad[0] || args->pad[1] || args->pad[2]) ||
>   	    XE_IOCTL_DBG(xe, args->reserved[0] || args->reserved[1]))
>   		return -EINVAL;
>   
> @@ -2230,6 +2318,12 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
>   		goto out_vm;
>   	}
>   
> +	if (args->extensions) {
> +		err = gem_create_user_extensions(xe, bo, args->extensions, 0);
> +		if (err)
> +			goto out_bulk;
> +	}
> +
>   	err = drm_gem_handle_create(file, &bo->ttm.base, &handle);
>   	if (err)
>   		goto out_bulk;
> diff --git a/drivers/gpu/drm/xe/xe_bo.h b/drivers/gpu/drm/xe/xe_bo.h
> index d9386ab03140..28479c9bc20e 100644
> --- a/drivers/gpu/drm/xe/xe_bo.h
> +++ b/drivers/gpu/drm/xe/xe_bo.h
> @@ -184,6 +184,11 @@ static inline bool xe_bo_is_pinned(struct xe_bo *bo)
>   	return bo->ttm.pin_count;
>   }
>   
> +static inline bool xe_bo_is_protected(const struct xe_bo *bo)
> +{
> +	return bo->pxp_key_instance;
> +}
> +
>   static inline void xe_bo_unpin_map_no_vm(struct xe_bo *bo)
>   {
>   	if (likely(bo)) {
> diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
> index 46dc9e4e3e46..fd98c755ee4d 100644
> --- a/drivers/gpu/drm/xe/xe_bo_types.h
> +++ b/drivers/gpu/drm/xe/xe_bo_types.h
> @@ -57,6 +57,9 @@ struct xe_bo {
>   	 */
>   	struct list_head client_link;
>   #endif
> +	/** @pxp_key_instance: key instance this bo was created against (if any) */
Given that this is not a pointer, maybe explicitly say that zero means 
none? It is pretty obvious from the usage but it is generally better to 
validate usage against spec rather than infer spec from usage.

With that updated:
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>


> +	u32 pxp_key_instance;
> +
>   	/** @freed: List node for delayed put. */
>   	struct llist_node freed;
>   	/** @update_index: Update index if PT BO */
> diff --git a/drivers/gpu/drm/xe/xe_exec.c b/drivers/gpu/drm/xe/xe_exec.c
> index 31cca938956f..1acc6e55efd5 100644
> --- a/drivers/gpu/drm/xe/xe_exec.c
> +++ b/drivers/gpu/drm/xe/xe_exec.c
> @@ -262,6 +262,12 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>   		goto err_exec;
>   	}
>   
> +	if (xe_exec_queue_uses_pxp(q)) {
> +		err = xe_vm_validate_protected(q->vm);
> +		if (err)
> +			goto err_exec;
> +	}
> +
>   	job = xe_sched_job_create(q, xe_exec_queue_is_parallel(q) ?
>   				  addresses : &args->address);
>   	if (IS_ERR(job)) {
> diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
> index d46b2c0a06ae..ae45c663b81d 100644
> --- a/drivers/gpu/drm/xe/xe_pxp.c
> +++ b/drivers/gpu/drm/xe/xe_pxp.c
> @@ -8,6 +8,8 @@
>   #include <drm/drm_managed.h>
>   #include <uapi/drm/xe_drm.h>
>   
> +#include "xe_bo.h"
> +#include "xe_bo_types.h"
>   #include "xe_device_types.h"
>   #include "xe_exec_queue.h"
>   #include "xe_force_wake.h"
> @@ -185,6 +187,9 @@ static void pxp_terminate(struct xe_pxp *pxp)
>   
>   	pxp_invalidate_queues(pxp);
>   
> +	if (pxp->status == XE_PXP_ACTIVE)
> +		pxp->key_instance++;
> +
>   	/*
>   	 * If we have a termination already in progress, we need to wait for
>   	 * it to complete before queueing another one. Once the first
> @@ -385,6 +390,8 @@ int xe_pxp_init(struct xe_device *xe)
>   	pxp->xe = xe;
>   	pxp->gt = gt;
>   
> +	pxp->key_instance = 1;
> +
>   	/*
>   	 * we'll use the completions to check if there is an action pending,
>   	 * so we start them as completed and we reinit it when an action is
> @@ -689,3 +696,86 @@ static void pxp_invalidate_queues(struct xe_pxp *pxp)
>   
>   	spin_unlock_irq(&pxp->queues.lock);
>   }
> +
> +/**
> + * xe_pxp_key_assign - mark a BO as using the current PXP key iteration
> + * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
> + * @bo: the BO to mark
> + *
> + * Returns: -ENODEV if PXP is disabled, 0 otherwise.
> + */
> +int xe_pxp_key_assign(struct xe_pxp *pxp, struct xe_bo *bo)
> +{
> +	if (!xe_pxp_is_enabled(pxp))
> +		return -ENODEV;
> +
> +	xe_assert(pxp->xe, !bo->pxp_key_instance);
> +
> +	/*
> +	 * Note that the PXP key handling is inherently racey, because the key
> +	 * can theoretically change at any time (although it's unlikely to do
> +	 * so without triggers), even right after we copy it. Taking a lock
> +	 * wouldn't help because the value might still change as soon as we
> +	 * release the lock.
> +	 * Userspace needs to handle the fact that their BOs can go invalid at
> +	 * any point.
> +	 */
> +	bo->pxp_key_instance = pxp->key_instance;
> +
> +	return 0;
> +}
> +
> +/**
> + * xe_pxp_bo_key_check - check if the key used by a xe_bo is valid
> + * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
> + * @bo: the BO we want to check
> + *
> + * Checks whether a BO was encrypted with the current key or an obsolete one.
> + *
> + * Returns: 0 if the key is valid, -ENODEV if PXP is disabled, -EINVAL if the
> + * BO is not using PXP,  -ENOEXEC if the key is not valid.
> + */
> +int xe_pxp_bo_key_check(struct xe_pxp *pxp, struct xe_bo *bo)
> +{
> +	if (!xe_pxp_is_enabled(pxp))
> +		return -ENODEV;
> +
> +	if (!xe_bo_is_protected(bo))
> +		return -EINVAL;
> +
> +	xe_assert(pxp->xe, bo->pxp_key_instance);
> +
> +	/*
> +	 * Note that the PXP key handling is inherently racey, because the key
> +	 * can theoretically change at any time (although it's unlikely to do
> +	 * so without triggers), even right after we check it. Taking a lock
> +	 * wouldn't help because the value might still change as soon as we
> +	 * release the lock.
> +	 * We mitigate the risk by checking the key at multiple points (on each
> +	 * submission involving the BO and right before flipping it on the
> +	 * display), but there is still a very small chance that we could
> +	 * operate on an invalid BO for a single submission or a single frame
> +	 * flip. This is a compromise made to protect the encrypted data (which
> +	 * is what the key termination is for).
> +	 */
> +	if (bo->pxp_key_instance != pxp->key_instance)
> +		return -ENOEXEC;
> +
> +	return 0;
> +}
> +
> +/**
> + * xe_pxp_obj_key_check - check if the key used by a drm_gem_obj is valid
> + * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
> + * @obj: the drm_gem_obj we want to check
> + *
> + * Checks whether a drm_gem_obj was encrypted with the current key or an
> + * obsolete one.
> + *
> + * Returns: 0 if the key is valid, -ENODEV if PXP is disabled, -EINVAL if the
> + * obj is not using PXP,  -ENOEXEC if the key is not valid.
> + */
> +int xe_pxp_obj_key_check(struct xe_pxp *pxp, struct drm_gem_object *obj)
> +{
> +	return xe_pxp_bo_key_check(pxp, gem_to_xe_bo(obj));
> +}
> diff --git a/drivers/gpu/drm/xe/xe_pxp.h b/drivers/gpu/drm/xe/xe_pxp.h
> index 868813cc84b9..3dd70eac9da6 100644
> --- a/drivers/gpu/drm/xe/xe_pxp.h
> +++ b/drivers/gpu/drm/xe/xe_pxp.h
> @@ -8,6 +8,8 @@
>   
>   #include <linux/types.h>
>   
> +struct drm_gem_object;
> +struct xe_bo;
>   struct xe_device;
>   struct xe_exec_queue;
>   struct xe_pxp;
> @@ -23,4 +25,8 @@ int xe_pxp_exec_queue_set_type(struct xe_pxp *pxp, struct xe_exec_queue *q, u8 t
>   int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q);
>   void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q);
>   
> +int xe_pxp_key_assign(struct xe_pxp *pxp, struct xe_bo *bo);
> +int xe_pxp_bo_key_check(struct xe_pxp *pxp, struct xe_bo *bo);
> +int xe_pxp_obj_key_check(struct xe_pxp *pxp, struct drm_gem_object *obj);
> +
>   #endif /* __XE_PXP_H__ */
> diff --git a/drivers/gpu/drm/xe/xe_pxp_types.h b/drivers/gpu/drm/xe/xe_pxp_types.h
> index bd741720f67d..8e4569f0173d 100644
> --- a/drivers/gpu/drm/xe/xe_pxp_types.h
> +++ b/drivers/gpu/drm/xe/xe_pxp_types.h
> @@ -112,6 +112,17 @@ struct xe_pxp {
>   		/** @queues.list: list of exec_queues that use PXP */
>   		struct list_head list;
>   	} queues;
> +
> +	/**
> +	 * @key_instance: keep track of the current iteration of the PXP key.
> +	 * Note that, due to the time needed for PXP termination and re-start
> +	 * to complete, the minimum time between 2 subsequent increases of this
> +	 * variable is 50ms, and even that only if there is a continuous attack;
> +	 * normal behavior is for this to increase much much slower than that.
> +	 * This means that we don't expect this to ever wrap and don't implement
> +	 * that case in the code.
> +	 */
> +	u32 key_instance;
>   };
>   
>   #endif /* __XE_PXP_TYPES_H__ */
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index 62b1b6ce255b..501f4d9c8d5d 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -33,6 +33,7 @@
>   #include "xe_pm.h"
>   #include "xe_preempt_fence.h"
>   #include "xe_pt.h"
> +#include "xe_pxp.h"
>   #include "xe_res_cursor.h"
>   #include "xe_sync.h"
>   #include "xe_trace_bo.h"
> @@ -2726,7 +2727,8 @@ ALLOW_ERROR_INJECTION(vm_bind_ioctl_ops_execute, ERRNO);
>   	(DRM_XE_VM_BIND_FLAG_READONLY | \
>   	 DRM_XE_VM_BIND_FLAG_IMMEDIATE | \
>   	 DRM_XE_VM_BIND_FLAG_NULL | \
> -	 DRM_XE_VM_BIND_FLAG_DUMPABLE)
> +	 DRM_XE_VM_BIND_FLAG_DUMPABLE | \
> +	 DRM_XE_VM_BIND_FLAG_CHECK_PXP)
>   
>   #ifdef TEST_VM_OPS_ERROR
>   #define SUPPORTED_FLAGS	(SUPPORTED_FLAGS_STUB | FORCE_OP_ERROR)
> @@ -2889,7 +2891,7 @@ static void xe_vma_ops_init(struct xe_vma_ops *vops, struct xe_vm *vm,
>   
>   static int xe_vm_bind_ioctl_validate_bo(struct xe_device *xe, struct xe_bo *bo,
>   					u64 addr, u64 range, u64 obj_offset,
> -					u16 pat_index)
> +					u16 pat_index, u32 op, u32 bind_flags)
>   {
>   	u16 coh_mode;
>   
> @@ -2933,6 +2935,12 @@ static int xe_vm_bind_ioctl_validate_bo(struct xe_device *xe, struct xe_bo *bo,
>   		return  -EINVAL;
>   	}
>   
> +	/* If a BO is protected it can only be mapped if the key is still valid */
> +	if ((bind_flags & DRM_XE_VM_BIND_FLAG_CHECK_PXP) && xe_bo_is_protected(bo) &&
> +	    op != DRM_XE_VM_BIND_OP_UNMAP && op != DRM_XE_VM_BIND_OP_UNMAP_ALL)
> +		if (XE_IOCTL_DBG(xe, xe_pxp_bo_key_check(xe->pxp, bo) != 0))
> +			return -ENOEXEC;
> +
>   	return 0;
>   }
>   
> @@ -3022,6 +3030,8 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>   		u32 obj = bind_ops[i].obj;
>   		u64 obj_offset = bind_ops[i].obj_offset;
>   		u16 pat_index = bind_ops[i].pat_index;
> +		u32 op = bind_ops[i].op;
> +		u32 bind_flags = bind_ops[i].flags;
>   
>   		if (!obj)
>   			continue;
> @@ -3034,7 +3044,8 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>   		bos[i] = gem_to_xe_bo(gem_obj);
>   
>   		err = xe_vm_bind_ioctl_validate_bo(xe, bos[i], addr, range,
> -						   obj_offset, pat_index);
> +						   obj_offset, pat_index, op,
> +						   bind_flags);
>   		if (err)
>   			goto put_obj;
>   	}
> @@ -3334,6 +3345,35 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
>   	return ret;
>   }
>   
> +int xe_vm_validate_protected(struct xe_vm *vm)
> +{
> +	struct drm_gpuva *gpuva;
> +	int err = 0;
> +
> +	if (!vm)
> +		return -ENODEV;
> +
> +	mutex_lock(&vm->snap_mutex);
> +
> +	drm_gpuvm_for_each_va(gpuva, &vm->gpuvm) {
> +		struct xe_vma *vma = gpuva_to_vma(gpuva);
> +		struct xe_bo *bo = vma->gpuva.gem.obj ?
> +			gem_to_xe_bo(vma->gpuva.gem.obj) : NULL;
> +
> +		if (!bo)
> +			continue;
> +
> +		if (xe_bo_is_protected(bo)) {
> +			err = xe_pxp_bo_key_check(vm->xe->pxp, bo);
> +			if (err)
> +				break;
> +		}
> +	}
> +
> +	mutex_unlock(&vm->snap_mutex);
> +	return err;
> +}
> +
>   struct xe_vm_snapshot {
>   	unsigned long num_snaps;
>   	struct {
> diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
> index 0a2fa6c0815b..f66075f8a6fe 100644
> --- a/drivers/gpu/drm/xe/xe_vm.h
> +++ b/drivers/gpu/drm/xe/xe_vm.h
> @@ -215,6 +215,8 @@ struct dma_fence *xe_vma_rebind(struct xe_vm *vm, struct xe_vma *vma,
>   
>   int xe_vm_invalidate_vma(struct xe_vma *vma);
>   
> +int xe_vm_validate_protected(struct xe_vm *vm);
> +
>   static inline void xe_vm_queue_rebind_worker(struct xe_vm *vm)
>   {
>   	xe_assert(vm->xe, xe_vm_in_preempt_fence_mode(vm));
> diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
> index 9d1ed07b3130..149adf3cbbce 100644
> --- a/include/uapi/drm/xe_drm.h
> +++ b/include/uapi/drm/xe_drm.h
> @@ -778,8 +778,23 @@ struct drm_xe_device_query {
>    *  - %DRM_XE_GEM_CPU_CACHING_WC - Allocate the pages as write-combined. This
>    *    is uncached. Scanout surfaces should likely use this. All objects
>    *    that can be placed in VRAM must use this.
> + *
> + * This ioctl supports setting the following properties via the
> + * %DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY extension, which uses the
> + * generic @drm_xe_ext_set_property struct:
> + *
> + *  - %DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE - set the type of PXP session
> + *    this object will be used with. Valid values are listed in enum
> + *    drm_xe_pxp_session_type. %DRM_XE_PXP_TYPE_NONE is the default behavior, so
> + *    there is no need to explicitly set that. Objects used with session of type
> + *    %DRM_XE_PXP_TYPE_HWDRM will be marked as invalid if a PXP invalidation
> + *    event occurs after their creation. Attempting to flip an invalid object
> + *    will cause a black frame to be displayed instead. Submissions with invalid
> + *    objects mapped in the VM will be rejected.
>    */
>   struct drm_xe_gem_create {
> +#define DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY	0
> +#define   DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE	0
>   	/** @extensions: Pointer to the first extension struct, if any */
>   	__u64 extensions;
>   
> @@ -941,6 +956,9 @@ struct drm_xe_vm_destroy {
>    *    will only be valid for DRM_XE_VM_BIND_OP_MAP operations, the BO
>    *    handle MBZ, and the BO offset MBZ. This flag is intended to
>    *    implement VK sparse bindings.
> + *  - %DRM_XE_VM_BIND_FLAG_CHECK_PXP - If the object is encrypted via PXP,
> + *    reject the binding if the encryption key is no longer valid. This
> + *    flag has no effect on BOs that are not marked as using PXP.
>    */
>   struct drm_xe_vm_bind_op {
>   	/** @extensions: Pointer to the first extension struct, if any */
> @@ -1031,6 +1049,7 @@ struct drm_xe_vm_bind_op {
>   #define DRM_XE_VM_BIND_FLAG_IMMEDIATE	(1 << 1)
>   #define DRM_XE_VM_BIND_FLAG_NULL	(1 << 2)
>   #define DRM_XE_VM_BIND_FLAG_DUMPABLE	(1 << 3)
> +#define DRM_XE_VM_BIND_FLAG_CHECK_PXP	(1 << 4)
>   	/** @flags: Bind flags */
>   	__u32 flags;
>   


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

* Re: [PATCH v4 11/13] drm/xe/pxp: add PXP PM support
  2025-01-06 21:12 ` [PATCH v4 11/13] drm/xe/pxp: add PXP PM support Daniele Ceraolo Spurio
@ 2025-01-13 23:10   ` John Harrison
  0 siblings, 0 replies; 27+ messages in thread
From: John Harrison @ 2025-01-13 23:10 UTC (permalink / raw)
  To: Daniele Ceraolo Spurio, intel-xe

On 1/6/2025 13:12, Daniele Ceraolo Spurio wrote:
> The HW suspend flow kills all PXP HWDRM sessions, so we need to mark all
> the queues and BOs as invalid and do a full termination when PXP is next
> used.
>
> v2: rebase
> v3: rebase on new status flow, defer termination to next PXP use as it
> makes things much easier and allows us to use the same fuction for all
> types of suspend.
>
> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
> Cc: John Harrison <John.C.Harrison@Intel.com>
> ---
>   drivers/gpu/drm/xe/xe_pm.c        |  39 ++++++---
>   drivers/gpu/drm/xe/xe_pxp.c       | 128 +++++++++++++++++++++++++++++-
>   drivers/gpu/drm/xe/xe_pxp.h       |   3 +
>   drivers/gpu/drm/xe/xe_pxp_types.h |   7 ++
>   4 files changed, 164 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> index c6e57af0144c..bfd797516a7c 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -22,6 +22,7 @@
>   #include "xe_guc.h"
>   #include "xe_irq.h"
>   #include "xe_pcode.h"
> +#include "xe_pxp.h"
>   #include "xe_trace.h"
>   #include "xe_wa.h"
>   
> @@ -122,6 +123,10 @@ int xe_pm_suspend(struct xe_device *xe)
>   	drm_dbg(&xe->drm, "Suspending device\n");
>   	trace_xe_pm_suspend(xe, __builtin_return_address(0));
>   
> +	err = xe_pxp_pm_suspend(xe->pxp);
> +	if (err)
> +		goto err;
> +
>   	for_each_gt(gt, xe, id)
>   		xe_gt_suspend_prepare(gt);
>   
> @@ -130,14 +135,12 @@ int xe_pm_suspend(struct xe_device *xe)
>   	/* FIXME: Super racey... */
>   	err = xe_bo_evict_all(xe);
>   	if (err)
> -		goto err;
> +		goto err_pxp;
>   
>   	for_each_gt(gt, xe, id) {
>   		err = xe_gt_suspend(gt);
> -		if (err) {
> -			xe_display_pm_resume(xe);
> -			goto err;
> -		}
> +		if (err)
> +			goto err_display;
>   	}
>   
>   	xe_irq_suspend(xe);
> @@ -146,6 +149,11 @@ int xe_pm_suspend(struct xe_device *xe)
>   
>   	drm_dbg(&xe->drm, "Device suspended\n");
>   	return 0;
> +
> +err_display:
> +	xe_display_pm_resume(xe);
> +err_pxp:
> +	xe_pxp_pm_resume(xe->pxp);
>   err:
>   	drm_dbg(&xe->drm, "Device suspend failed %d\n", err);
>   	return err;
> @@ -195,6 +203,8 @@ int xe_pm_resume(struct xe_device *xe)
>   	if (err)
>   		goto err;
>   
> +	xe_pxp_pm_resume(xe->pxp);
> +
>   	drm_dbg(&xe->drm, "Device resumed\n");
>   	return 0;
>   err:
> @@ -389,6 +399,10 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
>   	 */
>   	xe_rpm_lockmap_acquire(xe);
>   
> +	err = xe_pxp_pm_suspend(xe->pxp);
> +	if (err)
> +		goto out;
> +
>   	/*
>   	 * Applying lock for entire list op as xe_ttm_bo_destroy and xe_bo_move_notify
>   	 * also checks and delets bo entry from user fault list.
> @@ -404,22 +418,27 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
>   	if (xe->d3cold.allowed) {
>   		err = xe_bo_evict_all(xe);
>   		if (err)
> -			goto out;
> +			goto out_resume;
>   	}
>   
>   	for_each_gt(gt, xe, id) {
>   		err = xe_gt_suspend(gt);
>   		if (err)
> -			goto out;
> +			goto out_resume;
>   	}
>   
>   	xe_irq_suspend(xe);
>   
>   	xe_display_pm_runtime_suspend_late(xe);
>   
> +	xe_rpm_lockmap_release(xe);
> +	xe_pm_write_callback_task(xe, NULL);
> +	return 0;
> +
> +out_resume:
> +	xe_display_pm_runtime_resume(xe);
> +	xe_pxp_pm_resume(xe->pxp);
>   out:
> -	if (err)
> -		xe_display_pm_runtime_resume(xe);
>   	xe_rpm_lockmap_release(xe);
>   	xe_pm_write_callback_task(xe, NULL);
>   	return err;
> @@ -472,6 +491,8 @@ int xe_pm_runtime_resume(struct xe_device *xe)
>   			goto out;
>   	}
>   
> +	xe_pxp_pm_resume(xe->pxp);
> +
>   out:
>   	xe_rpm_lockmap_release(xe);
>   	xe_pm_write_callback_task(xe, NULL);
> diff --git a/drivers/gpu/drm/xe/xe_pxp.c b/drivers/gpu/drm/xe/xe_pxp.c
> index ae45c663b81d..0a36d40152d1 100644
> --- a/drivers/gpu/drm/xe/xe_pxp.c
> +++ b/drivers/gpu/drm/xe/xe_pxp.c
> @@ -132,6 +132,14 @@ static int pxp_wait_for_session_state(struct xe_pxp *pxp, u32 id, bool in_play)
>   
>   static void pxp_invalidate_queues(struct xe_pxp *pxp);
>   
> +static void pxp_invalidate_state(struct xe_pxp *pxp)
> +{
> +	pxp_invalidate_queues(pxp);
> +
> +	if (pxp->status == XE_PXP_ACTIVE)
> +		pxp->key_instance++;
> +}
> +
>   static int pxp_terminate_hw(struct xe_pxp *pxp)
>   {
>   	struct xe_gt *gt = pxp->gt;
> @@ -185,10 +193,16 @@ static void pxp_terminate(struct xe_pxp *pxp)
>   
>   	mutex_lock(&pxp->mutex);
>   
> -	pxp_invalidate_queues(pxp);
> +	pxp_invalidate_state(pxp);
>   
> -	if (pxp->status == XE_PXP_ACTIVE)
> -		pxp->key_instance++;
> +	/*
> +	 * we'll mark the status as needing termination on resume, so no need to
> +	 * emit a termination now.
> +	 */
> +	if (pxp->status == XE_PXP_SUSPENDED) {
> +		mutex_unlock(&pxp->mutex);
> +		return;
> +	}
>   
>   	/*
>   	 * If we have a termination already in progress, we need to wait for
> @@ -219,11 +233,13 @@ static void pxp_terminate(struct xe_pxp *pxp)
>   static void pxp_terminate_complete(struct xe_pxp *pxp)
>   {
>   	/*
> -	 * We expect PXP to be in one of 2 states when we get here:
> +	 * We expect PXP to be in one of 3 states when we get here:
>   	 * - XE_PXP_TERMINATION_IN_PROGRESS: a single termination event was
>   	 * requested and it is now completing, so we're ready to start.
>   	 * - XE_PXP_NEEDS_ADDITIONAL_TERMINATION: a second termination was
>   	 * requested while the first one was still being processed.
> +	 * - XE_PXP_SUSPENDED: PXP is now suspended, so we defer everything to
> +	 * when we come back on resume.
>   	 */
>   	mutex_lock(&pxp->mutex);
>   
> @@ -234,6 +250,9 @@ static void pxp_terminate_complete(struct xe_pxp *pxp)
>   	case XE_PXP_NEEDS_ADDITIONAL_TERMINATION:
>   		pxp->status = XE_PXP_NEEDS_TERMINATION;
>   		break;
> +	case XE_PXP_SUSPENDED:
> +		/* Nothing to do */
> +		break;
>   	default:
>   		drm_err(&pxp->xe->drm,
>   			"PXP termination complete while status was %u\n",
> @@ -391,6 +410,7 @@ int xe_pxp_init(struct xe_device *xe)
>   	pxp->gt = gt;
>   
>   	pxp->key_instance = 1;
> +	pxp->last_suspend_key_instance = 1;
>   
>   	/*
>   	 * we'll use the completions to check if there is an action pending,
> @@ -574,6 +594,7 @@ int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q)
>   		XE_WARN_ON(completion_done(&pxp->termination));
>   		mutex_unlock(&pxp->mutex);
>   		goto wait_for_idle;
> +	case XE_PXP_SUSPENDED:
>   	default:
>   		drm_err(&pxp->xe->drm, "unexpected state during PXP start: %u\n", pxp->status);
>   		ret = -EIO;
> @@ -779,3 +800,102 @@ int xe_pxp_obj_key_check(struct xe_pxp *pxp, struct drm_gem_object *obj)
>   {
>   	return xe_pxp_bo_key_check(pxp, gem_to_xe_bo(obj));
>   }
> +
> +/**
> + * xe_pxp_pm_suspend - prepare PXP for HW suspend
> + * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
> + *
> + * Checks whether a BO was encrypted with the current key or an obsolete one.
No it doesn't! Cut and paste from a previous function?

With a more accurate description:
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>

> + *
> + * Returns: 0 if successful, a negative errno value otherwise.
> + */
> +int xe_pxp_pm_suspend(struct xe_pxp *pxp)
> +{
> +	int ret = 0;
> +
> +	if (!xe_pxp_is_enabled(pxp))
> +		return 0;
> +
> +wait_for_activation:
> +	if (!wait_for_completion_timeout(&pxp->activation,
> +					 msecs_to_jiffies(PXP_ACTIVATION_TIMEOUT_MS)))
> +		ret = -ETIMEDOUT;
> +
> +	mutex_lock(&pxp->mutex);
> +
> +	switch (pxp->status) {
> +	case XE_PXP_ERROR:
> +	case XE_PXP_READY_TO_START:
> +	case XE_PXP_SUSPENDED:
> +	case XE_PXP_TERMINATION_IN_PROGRESS:
> +	case XE_PXP_NEEDS_ADDITIONAL_TERMINATION:
> +		/*
> +		 * If PXP is not running there is nothing to cleanup. If there
> +		 * is a termination pending then no need to issue another one.
> +		 */
> +		break;
> +	case XE_PXP_START_IN_PROGRESS:
> +		mutex_unlock(&pxp->mutex);
> +		goto wait_for_activation;
> +	case XE_PXP_NEEDS_TERMINATION:
> +		/* If PXP was never used we can skip the cleanup */
> +		if (pxp->key_instance == pxp->last_suspend_key_instance)
> +			break;
> +		fallthrough;
> +	case XE_PXP_ACTIVE:
> +		pxp_invalidate_state(pxp);
> +		break;
> +	default:
> +		drm_err(&pxp->xe->drm, "unexpected state during PXP suspend: %u",
> +			pxp->status);
> +		ret = -EIO;
> +		goto out;
> +	}
> +
> +	/*
> +	 * We set this even if we were in error state, hoping the suspend clears
> +	 * the error. Worse case we fail again and go in error state again.
> +	 */
> +	pxp->status = XE_PXP_SUSPENDED;
> +
> +	mutex_unlock(&pxp->mutex);
> +
> +	/*
> +	 * if there is a termination in progress, wait for it.
> +	 * We need to wait outside the lock because the completion is done from
> +	 * within the lock
> +	 */
> +	if (!wait_for_completion_timeout(&pxp->termination,
> +					 msecs_to_jiffies(PXP_TERMINATION_TIMEOUT_MS)))
> +		ret = -ETIMEDOUT;
> +
> +	pxp->last_suspend_key_instance = pxp->key_instance;
> +
> +out:
> +	return ret;
> +}
> +
> +/**
> + * xe_pxp_pm_resume - re-init PXP after HW suspend
> + * @pxp: the xe->pxp pointer (it will be NULL if PXP is disabled)
> + */
> +void xe_pxp_pm_resume(struct xe_pxp *pxp)
> +{
> +	int err;
> +
> +	if (!xe_pxp_is_enabled(pxp))
> +		return;
> +
> +	err = kcr_pxp_enable(pxp);
> +
> +	mutex_lock(&pxp->mutex);
> +
> +	xe_assert(pxp->xe, pxp->status == XE_PXP_SUSPENDED);
> +
> +	if (err)
> +		pxp->status = XE_PXP_ERROR;
> +	else
> +		pxp->status = XE_PXP_NEEDS_TERMINATION;
> +
> +	mutex_unlock(&pxp->mutex);
> +}
> diff --git a/drivers/gpu/drm/xe/xe_pxp.h b/drivers/gpu/drm/xe/xe_pxp.h
> index 3dd70eac9da6..546b156d63aa 100644
> --- a/drivers/gpu/drm/xe/xe_pxp.h
> +++ b/drivers/gpu/drm/xe/xe_pxp.h
> @@ -21,6 +21,9 @@ int xe_pxp_get_readiness_status(struct xe_pxp *pxp);
>   int xe_pxp_init(struct xe_device *xe);
>   void xe_pxp_irq_handler(struct xe_device *xe, u16 iir);
>   
> +int xe_pxp_pm_suspend(struct xe_pxp *pxp);
> +void xe_pxp_pm_resume(struct xe_pxp *pxp);
> +
>   int xe_pxp_exec_queue_set_type(struct xe_pxp *pxp, struct xe_exec_queue *q, u8 type);
>   int xe_pxp_exec_queue_add(struct xe_pxp *pxp, struct xe_exec_queue *q);
>   void xe_pxp_exec_queue_remove(struct xe_pxp *pxp, struct xe_exec_queue *q);
> diff --git a/drivers/gpu/drm/xe/xe_pxp_types.h b/drivers/gpu/drm/xe/xe_pxp_types.h
> index 8e4569f0173d..53e9d48d10fb 100644
> --- a/drivers/gpu/drm/xe/xe_pxp_types.h
> +++ b/drivers/gpu/drm/xe/xe_pxp_types.h
> @@ -27,6 +27,7 @@ enum xe_pxp_status {
>   	XE_PXP_READY_TO_START,
>   	XE_PXP_START_IN_PROGRESS,
>   	XE_PXP_ACTIVE,
> +	XE_PXP_SUSPENDED,
>   };
>   
>   /**
> @@ -123,6 +124,12 @@ struct xe_pxp {
>   	 * that case in the code.
>   	 */
>   	u32 key_instance;
> +	/**
> +	 * @last_suspend_key_instance: value of key_instance at the last
> +	 * suspend. Used to check if any PXP session has been created between
> +	 * suspend cycles.
> +	 */
> +	u32 last_suspend_key_instance;
>   };
>   
>   #endif /* __XE_PXP_TYPES_H__ */


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

end of thread, other threads:[~2025-01-13 23:10 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-06 21:11 [PATCH v4 00/13] Add PXP HWDRM support Daniele Ceraolo Spurio
2025-01-06 21:11 ` [PATCH v4 01/13] drm/xe/pxp: Initialize PXP structure and KCR reg Daniele Ceraolo Spurio
2025-01-06 21:11 ` [PATCH v4 02/13] drm/xe/pxp: Allocate PXP execution resources Daniele Ceraolo Spurio
2025-01-06 21:12 ` [PATCH v4 03/13] drm/xe/pxp: Add VCS inline termination support Daniele Ceraolo Spurio
2025-01-06 21:12 ` [PATCH v4 04/13] drm/xe/pxp: Add GSC session invalidation support Daniele Ceraolo Spurio
2025-01-06 21:12 ` [PATCH v4 05/13] drm/xe/pxp: Handle the PXP termination interrupt Daniele Ceraolo Spurio
2025-01-06 21:12 ` [PATCH v4 06/13] drm/xe/pxp: Add GSC session initialization support Daniele Ceraolo Spurio
2025-01-06 21:12 ` [PATCH v4 07/13] drm/xe/pxp: Add PXP queue tracking and session start Daniele Ceraolo Spurio
2025-01-13 22:11   ` John Harrison
2025-01-06 21:12 ` [PATCH v4 08/13] drm/xe/pxp: Add userspace and LRC support for PXP-using queues Daniele Ceraolo Spurio
2025-01-06 21:18   ` Dixit, Ashutosh
2025-01-13 22:34   ` John Harrison
2025-01-06 21:12 ` [PATCH v4 09/13] drm/xe/pxp: Add a query for PXP status Daniele Ceraolo Spurio
2025-01-06 21:12 ` [PATCH v4 10/13] drm/xe/pxp: Add API to mark a BO as using PXP Daniele Ceraolo Spurio
2025-01-13 23:03   ` John Harrison
2025-01-06 21:12 ` [PATCH v4 11/13] drm/xe/pxp: add PXP PM support Daniele Ceraolo Spurio
2025-01-13 23:10   ` John Harrison
2025-01-06 21:12 ` [PATCH v4 12/13] drm/xe/pxp: Add PXP debugfs support Daniele Ceraolo Spurio
2025-01-06 21:12 ` [PATCH v4 13/13] drm/xe/pxp: Enable PXP for MTL and LNL Daniele Ceraolo Spurio
2025-01-06 21:34 ` ✓ CI.Patch_applied: success for Add PXP HWDRM support (rev4) Patchwork
2025-01-06 21:35 ` ✗ CI.checkpatch: warning " Patchwork
2025-01-06 21:36 ` ✓ CI.KUnit: success " Patchwork
2025-01-06 21:54 ` ✓ CI.Build: " Patchwork
2025-01-06 21:57 ` ✓ CI.Hooks: " Patchwork
2025-01-06 21:58 ` ✓ CI.checksparse: " Patchwork
2025-01-06 22:28 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-01-07 23:28 ` ✗ Xe.CI.Full: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox