Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 00/20] Prefetch Support for svm ranges
@ 2025-04-30 12:18 Himal Prasad Ghimiray
  2025-04-30 12:18 ` [PATCH v6 01/20] drm/gpusvm: Introduce devmem_only flag for allocation Himal Prasad Ghimiray
                   ` (27 more replies)
  0 siblings, 28 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:18 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

This series builds upon the SVM work by Matt Brost and introduces the
ability to prefetch SVM ranges. The prefetch functionality utilizes the
existing ioctl vm_bind for the user interface.

Prefetching ensures that pages are populated in the requested region and
that PTEs are updated, thereby preventing GPU page faults.

Region 0: Ranges will remain in SMEM, and only PTE updates will occur.
Region 1: Ranges will migrate to VRAM, and PTEs will be updated
accordingly

Patches[1 - 5] are part of https://patchwork.freedesktop.org/series/147846/
and are already under review.

v3:
  - Separate out madvise and Prefetch series
  - Rebase on top of atomic fixes for svm
  - address comments from Matthew Brost

v4:
  - CI fixes

v5
  - Move finding start addr of cpu vma to drm gpusvm layer

v6
  - Rebase on top of latest SVM ATOMIC Fixes
  - move eviction logic to prefetch_ranges
  - Rename functions properly

Himal Prasad Ghimiray (16):
  drm/gpusvm: Introduce devmem_only flag for allocation
  drm/xe: Introduce xe_vma_op_prefetch_range struct for prefetch of
    ranges
  drm/xe: Make xe_svm_alloc_vram public
  drm/xe/svm: Helper to add tile masks to svm ranges
  drm/xe/svm: Make to_xe_range a public function
  drm/xe/svm: Make xe_svm_range_* end/start/size public
  drm/xe/vm: Update xe_vma_ops_incr_pt_update_ops to take an increment
    value
  drm/xe/vm: Add an identifier in xe_vma_ops for svm prefetch
  drm/xe: Rename lookup_vma function to xe_find_vma_by_addr
  drm/xe/svm: Refactor usage of drm_gpusvm* function in xe_svm
  drm/xe/svm: Make xe_svm_range_needs_migrate_to_vram() public
  drm/xe/svm: Add xe_svm_range_validate() and
    xe_svm_range_migrate_to_smem()
  drm/gpusvm: Introduce drm_gpusvm_find_vma_start() function
  drm/xe/svm: Add xe_svm_find_vma_start() helper
  drm/xe/svm: Implement prefetch support for SVM ranges
  drm/xe/vm: Add debug prints for SVM range prefetch

Matthew Brost (4):
  drm/xe: Strict migration policy for atomic SVM faults
  drm/gpusvm: Add timeslicing support to GPU SVM
  drm/xe: Timeslice GPU on atomic SVM fault
  drm/xe: Add atomic_svm_timeslice_ms debugfs entry

 drivers/gpu/drm/drm_gpusvm.c         |  46 +++++
 drivers/gpu/drm/xe/xe_debugfs.c      |  38 ++++
 drivers/gpu/drm/xe/xe_device.c       |   1 +
 drivers/gpu/drm/xe/xe_device_types.h |   3 +
 drivers/gpu/drm/xe/xe_gt_pagefault.c |  24 +--
 drivers/gpu/drm/xe/xe_module.c       |   3 -
 drivers/gpu/drm/xe/xe_module.h       |   1 -
 drivers/gpu/drm/xe/xe_pt.c           |  77 +++++--
 drivers/gpu/drm/xe/xe_svm.c          | 293 +++++++++++++++++++++------
 drivers/gpu/drm/xe/xe_svm.h          | 143 ++++++++++++-
 drivers/gpu/drm/xe/xe_vm.c           | 260 ++++++++++++++++++++++--
 drivers/gpu/drm/xe/xe_vm.h           |   2 +
 drivers/gpu/drm/xe/xe_vm_types.h     |  15 ++
 include/drm/drm_gpusvm.h             |  52 +++--
 14 files changed, 812 insertions(+), 146 deletions(-)

-- 
2.34.1


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

* [PATCH v6 01/20] drm/gpusvm: Introduce devmem_only flag for allocation
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
@ 2025-04-30 12:18 ` Himal Prasad Ghimiray
  2025-04-30 12:18 ` [PATCH v6 02/20] drm/xe: Strict migration policy for atomic SVM faults Himal Prasad Ghimiray
                   ` (26 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:18 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray, stable

This commit adds a new flag, devmem_only, to the drm_gpusvm structure. The
purpose of this flag is to ensure that the get_pages function allocates
memory exclusively from the device's memory. If the allocation from
device memory fails, the function will return an -EFAULT error.

Required for shared CPU and GPU atomics on certain devices.

v3:
 - s/vram_only/devmem_only/

Fixes: 99624bdff867 ("drm/gpusvm: Add support for GPU Shared Virtual Memory")
Cc: stable@vger.kernel.org
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
 drivers/gpu/drm/drm_gpusvm.c | 5 +++++
 include/drm/drm_gpusvm.h     | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index de424e670995..a58d03e6cac2 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -1454,6 +1454,11 @@ int drm_gpusvm_range_get_pages(struct drm_gpusvm *gpusvm,
 				goto err_unmap;
 			}
 
+			if (ctx->devmem_only) {
+				err = -EFAULT;
+				goto err_unmap;
+			}
+
 			addr = dma_map_page(gpusvm->drm->dev,
 					    page, 0,
 					    PAGE_SIZE << order,
diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
index df120b4d1f83..9fd25fc880a4 100644
--- a/include/drm/drm_gpusvm.h
+++ b/include/drm/drm_gpusvm.h
@@ -286,6 +286,7 @@ struct drm_gpusvm {
  * @in_notifier: entering from a MMU notifier
  * @read_only: operating on read-only memory
  * @devmem_possible: possible to use device memory
+ * @devmem_only: use only device memory
  *
  * Context that is DRM GPUSVM is operating in (i.e. user arguments).
  */
@@ -294,6 +295,7 @@ struct drm_gpusvm_ctx {
 	unsigned int in_notifier :1;
 	unsigned int read_only :1;
 	unsigned int devmem_possible :1;
+	unsigned int devmem_only :1;
 };
 
 int drm_gpusvm_init(struct drm_gpusvm *gpusvm,
-- 
2.34.1


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

* [PATCH v6 02/20] drm/xe: Strict migration policy for atomic SVM faults
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
  2025-04-30 12:18 ` [PATCH v6 01/20] drm/gpusvm: Introduce devmem_only flag for allocation Himal Prasad Ghimiray
@ 2025-04-30 12:18 ` Himal Prasad Ghimiray
  2025-05-05 15:20   ` Thomas Hellström
  2025-04-30 12:18 ` [PATCH v6 03/20] drm/gpusvm: Add timeslicing support to GPU SVM Himal Prasad Ghimiray
                   ` (25 subsequent siblings)
  27 siblings, 1 reply; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:18 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, stable, Himal Prasad Ghimiray

From: Matthew Brost <matthew.brost@intel.com>

Mixing GPU and CPU atomics does not work unless a strict migration
policy of GPU atomics must be device memory. Enforce a policy of must be
in VRAM with a retry loop of 3 attempts, if retry loop fails abort
fault.

Removing always_migrate_to_vram modparam as we now have real migration
policy.

v2:
 - Only retry migration on atomics
 - Drop alway migrate modparam
v3:
 - Only set vram_only on DGFX (Himal)
 - Bail on get_pages failure if vram_only and retry count exceeded (Himal)
 - s/vram_only/devmem_only
 - Update xe_svm_range_is_valid to accept devmem_only argument
v4:
 - Fix logic bug get_pages failure
v5:
 - Fix commit message (Himal)
 - Mention removing always_migrate_to_vram in commit message (Lucas)
 - Fix xe_svm_range_is_valid to check for devmem pages
 - Bail on devmem_only && !migrate_devmem (Thomas)
v6:
 - Add READ_ONCE barriers for opportunistic checks (Thomas)

Fixes: 2f118c949160 ("drm/xe: Add SVM VRAM migration")
Cc: stable@vger.kernel.org
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Acked-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
 drivers/gpu/drm/xe/xe_module.c |   3 -
 drivers/gpu/drm/xe/xe_module.h |   1 -
 drivers/gpu/drm/xe/xe_svm.c    | 103 ++++++++++++++++++++++++---------
 drivers/gpu/drm/xe/xe_svm.h    |   5 --
 include/drm/drm_gpusvm.h       |  40 ++++++++-----
 5 files changed, 103 insertions(+), 49 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_module.c b/drivers/gpu/drm/xe/xe_module.c
index 64bf46646544..e4742e27e2cd 100644
--- a/drivers/gpu/drm/xe/xe_module.c
+++ b/drivers/gpu/drm/xe/xe_module.c
@@ -30,9 +30,6 @@ struct xe_modparam xe_modparam = {
 module_param_named(svm_notifier_size, xe_modparam.svm_notifier_size, uint, 0600);
 MODULE_PARM_DESC(svm_notifier_size, "Set the svm notifier size(in MiB), must be power of 2");
 
-module_param_named(always_migrate_to_vram, xe_modparam.always_migrate_to_vram, bool, 0444);
-MODULE_PARM_DESC(always_migrate_to_vram, "Always migrate to VRAM on GPU fault");
-
 module_param_named_unsafe(force_execlist, xe_modparam.force_execlist, bool, 0444);
 MODULE_PARM_DESC(force_execlist, "Force Execlist submission");
 
diff --git a/drivers/gpu/drm/xe/xe_module.h b/drivers/gpu/drm/xe/xe_module.h
index 84339e509c80..5a3bfea8b7b4 100644
--- a/drivers/gpu/drm/xe/xe_module.h
+++ b/drivers/gpu/drm/xe/xe_module.h
@@ -12,7 +12,6 @@
 struct xe_modparam {
 	bool force_execlist;
 	bool probe_display;
-	bool always_migrate_to_vram;
 	u32 force_vram_bar_size;
 	int guc_log_level;
 	char *guc_firmware_path;
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index 890f6b2f40e9..dcc84e65ca96 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -16,8 +16,12 @@
 
 static bool xe_svm_range_in_vram(struct xe_svm_range *range)
 {
-	/* Not reliable without notifier lock */
-	return range->base.flags.has_devmem_pages;
+	/* Not reliable without notifier lock, opportunistic only */
+	struct drm_gpusvm_range_flags flags = {
+		.__flags = READ_ONCE(range->base.flags.__flags),
+	};
+
+	return flags.has_devmem_pages;
 }
 
 static bool xe_svm_range_has_vram_binding(struct xe_svm_range *range)
@@ -650,9 +654,13 @@ void xe_svm_fini(struct xe_vm *vm)
 }
 
 static bool xe_svm_range_is_valid(struct xe_svm_range *range,
-				  struct xe_tile *tile)
+				  struct xe_tile *tile,
+				  bool devmem_only)
 {
-	return (range->tile_present & ~range->tile_invalidated) & BIT(tile->id);
+	/* Not reliable without notifier lock, opportunistic only */
+	return ((READ_ONCE(range->tile_present) &
+		 ~READ_ONCE(range->tile_invalidated)) & BIT(tile->id)) &&
+		(!devmem_only || xe_svm_range_in_vram(range));
 }
 
 #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
@@ -726,6 +734,36 @@ static int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
 }
 #endif
 
+static bool supports_4K_migration(struct xe_device *xe)
+{
+	if (xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
+		return false;
+
+	return true;
+}
+
+static bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range,
+					       struct xe_vma *vma)
+{
+	struct xe_vm *vm = range_to_vm(&range->base);
+	u64 range_size = xe_svm_range_size(range);
+
+	if (!range->base.flags.migrate_devmem)
+		return false;
+
+	/* Not reliable without notifier lock, opportunistic only */
+	if (xe_svm_range_in_vram(range)) {
+		drm_dbg(&vm->xe->drm, "Range is already in VRAM\n");
+		return false;
+	}
+
+	if (range_size <= SZ_64K && !supports_4K_migration(vm->xe)) {
+		drm_dbg(&vm->xe->drm, "Platform doesn't support SZ_4K range migration\n");
+		return false;
+	}
+
+	return true;
+}
 
 /**
  * xe_svm_handle_pagefault() - SVM handle page fault
@@ -750,12 +788,15 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
 		.check_pages_threshold = IS_DGFX(vm->xe) &&
 			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR) ? SZ_64K : 0,
+		.devmem_only = atomic && IS_DGFX(vm->xe) &&
+			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
 	};
 	struct xe_svm_range *range;
 	struct drm_gpusvm_range *r;
 	struct drm_exec exec;
 	struct dma_fence *fence;
 	struct xe_tile *tile = gt_to_tile(gt);
+	int migrate_try_count = ctx.devmem_only ? 3 : 1;
 	ktime_t end = 0;
 	int err;
 
@@ -776,24 +817,30 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 	if (IS_ERR(r))
 		return PTR_ERR(r);
 
+	if (ctx.devmem_only && !r->flags.migrate_devmem)
+		return -EACCES;
+
 	range = to_xe_range(r);
-	if (xe_svm_range_is_valid(range, tile))
+	if (xe_svm_range_is_valid(range, tile, ctx.devmem_only))
 		return 0;
 
 	range_debug(range, "PAGE FAULT");
 
-	/* XXX: Add migration policy, for now migrate range once */
-	if (!range->skip_migrate && range->base.flags.migrate_devmem &&
-	    xe_svm_range_size(range) >= SZ_64K) {
-		range->skip_migrate = true;
-
+	if (--migrate_try_count >= 0 &&
+	    xe_svm_range_needs_migrate_to_vram(range, vma)) {
 		err = xe_svm_alloc_vram(vm, tile, range, &ctx);
 		if (err) {
-			drm_dbg(&vm->xe->drm,
-				"VRAM allocation failed, falling back to "
-				"retrying fault, asid=%u, errno=%pe\n",
-				vm->usm.asid, ERR_PTR(err));
-			goto retry;
+			if (migrate_try_count || !ctx.devmem_only) {
+				drm_dbg(&vm->xe->drm,
+					"VRAM allocation failed, falling back to retrying fault, asid=%u, errno=%pe\n",
+					vm->usm.asid, ERR_PTR(err));
+				goto retry;
+			} else {
+				drm_err(&vm->xe->drm,
+					"VRAM allocation failed, retry count exceeded, asid=%u, errno=%pe\n",
+					vm->usm.asid, ERR_PTR(err));
+				return err;
+			}
 		}
 	}
 
@@ -801,15 +848,22 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 	err = drm_gpusvm_range_get_pages(&vm->svm.gpusvm, r, &ctx);
 	/* Corner where CPU mappings have changed */
 	if (err == -EOPNOTSUPP || err == -EFAULT || err == -EPERM) {
-		if (err == -EOPNOTSUPP) {
-			range_debug(range, "PAGE FAULT - EVICT PAGES");
-			drm_gpusvm_range_evict(&vm->svm.gpusvm, &range->base);
+		if (migrate_try_count > 0 || !ctx.devmem_only) {
+			if (err == -EOPNOTSUPP) {
+				range_debug(range, "PAGE FAULT - EVICT PAGES");
+				drm_gpusvm_range_evict(&vm->svm.gpusvm,
+						       &range->base);
+			}
+			drm_dbg(&vm->xe->drm,
+				"Get pages failed, falling back to retrying, asid=%u, gpusvm=%p, errno=%pe\n",
+				vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
+			range_debug(range, "PAGE FAULT - RETRY PAGES");
+			goto retry;
+		} else {
+			drm_err(&vm->xe->drm,
+				"Get pages failed, retry count exceeded, asid=%u, gpusvm=%p, errno=%pe\n",
+				vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
 		}
-		drm_dbg(&vm->xe->drm,
-			"Get pages failed, falling back to retrying, asid=%u, gpusvm=%p, errno=%pe\n",
-			vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
-		range_debug(range, "PAGE FAULT - RETRY PAGES");
-		goto retry;
 	}
 	if (err) {
 		range_debug(range, "PAGE FAULT - FAIL PAGE COLLECT");
@@ -843,9 +897,6 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 	}
 	drm_exec_fini(&exec);
 
-	if (xe_modparam.always_migrate_to_vram)
-		range->skip_migrate = false;
-
 	dma_fence_wait(fence, false);
 	dma_fence_put(fence);
 
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 3d441eb1f7ea..0e1f376a7471 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -39,11 +39,6 @@ struct xe_svm_range {
 	 * range. Protected by GPU SVM notifier lock.
 	 */
 	u8 tile_invalidated;
-	/**
-	 * @skip_migrate: Skip migration to VRAM, protected by GPU fault handler
-	 * locking.
-	 */
-	u8 skip_migrate	:1;
 };
 
 /**
diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
index 9fd25fc880a4..653d48dbe1c1 100644
--- a/include/drm/drm_gpusvm.h
+++ b/include/drm/drm_gpusvm.h
@@ -185,6 +185,31 @@ struct drm_gpusvm_notifier {
 	} flags;
 };
 
+/**
+ * struct drm_gpusvm_range_flags - Structure representing a GPU SVM range flags
+ *
+ * @migrate_devmem: Flag indicating whether the range can be migrated to device memory
+ * @unmapped: Flag indicating if the range has been unmapped
+ * @partial_unmap: Flag indicating if the range has been partially unmapped
+ * @has_devmem_pages: Flag indicating if the range has devmem pages
+ * @has_dma_mapping: Flag indicating if the range has a DMA mapping
+ * @__flags: Flags for range in u16 form (used for READ_ONCE)
+ */
+struct drm_gpusvm_range_flags {
+	union {
+		struct {
+			/* All flags below must be set upon creation */
+			u16 migrate_devmem : 1;
+			/* All flags below must be set / cleared under notifier lock */
+			u16 unmapped : 1;
+			u16 partial_unmap : 1;
+			u16 has_devmem_pages : 1;
+			u16 has_dma_mapping : 1;
+		};
+		u16 __flags;
+	};
+};
+
 /**
  * struct drm_gpusvm_range - Structure representing a GPU SVM range
  *
@@ -198,11 +223,6 @@ struct drm_gpusvm_notifier {
  * @dpagemap: The struct drm_pagemap of the device pages we're dma-mapping.
  *            Note this is assuming only one drm_pagemap per range is allowed.
  * @flags: Flags for range
- * @flags.migrate_devmem: Flag indicating whether the range can be migrated to device memory
- * @flags.unmapped: Flag indicating if the range has been unmapped
- * @flags.partial_unmap: Flag indicating if the range has been partially unmapped
- * @flags.has_devmem_pages: Flag indicating if the range has devmem pages
- * @flags.has_dma_mapping: Flag indicating if the range has a DMA mapping
  *
  * This structure represents a GPU SVM range used for tracking memory ranges
  * mapped in a DRM device.
@@ -216,15 +236,7 @@ struct drm_gpusvm_range {
 	unsigned long notifier_seq;
 	struct drm_pagemap_device_addr *dma_addr;
 	struct drm_pagemap *dpagemap;
-	struct {
-		/* All flags below must be set upon creation */
-		u16 migrate_devmem : 1;
-		/* All flags below must be set / cleared under notifier lock */
-		u16 unmapped : 1;
-		u16 partial_unmap : 1;
-		u16 has_devmem_pages : 1;
-		u16 has_dma_mapping : 1;
-	} flags;
+	struct drm_gpusvm_range_flags flags;
 };
 
 /**
-- 
2.34.1


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

* [PATCH v6 03/20] drm/gpusvm: Add timeslicing support to GPU SVM
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
  2025-04-30 12:18 ` [PATCH v6 01/20] drm/gpusvm: Introduce devmem_only flag for allocation Himal Prasad Ghimiray
  2025-04-30 12:18 ` [PATCH v6 02/20] drm/xe: Strict migration policy for atomic SVM faults Himal Prasad Ghimiray
@ 2025-04-30 12:18 ` Himal Prasad Ghimiray
  2025-04-30 12:18 ` [PATCH v6 04/20] drm/xe: Timeslice GPU on atomic SVM fault Himal Prasad Ghimiray
                   ` (24 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:18 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, stable

From: Matthew Brost <matthew.brost@intel.com>

Add timeslicing support to GPU SVM which will guarantee the GPU a
minimum execution time on piece of physical memory before migration back
to CPU. Intended to implement strict migration policies which require
memory to be in a certain placement for correct execution.

Required for shared CPU and GPU atomics on certain devices.

Fixes: 99624bdff867 ("drm/gpusvm: Add support for GPU Shared Virtual Memory")
Cc: stable@vger.kernel.org
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/drm_gpusvm.c | 9 +++++++++
 include/drm/drm_gpusvm.h     | 5 +++++
 2 files changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index a58d03e6cac2..c94a8d7a293d 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -1770,6 +1770,8 @@ int drm_gpusvm_migrate_to_devmem(struct drm_gpusvm *gpusvm,
 		goto err_finalize;
 
 	/* Upon success bind devmem allocation to range and zdd */
+	devmem_allocation->timeslice_expiration = get_jiffies_64() +
+		msecs_to_jiffies(ctx->timeslice_ms);
 	zdd->devmem_allocation = devmem_allocation;	/* Owns ref */
 
 err_finalize:
@@ -1990,6 +1992,13 @@ static int __drm_gpusvm_migrate_to_ram(struct vm_area_struct *vas,
 	void *buf;
 	int i, err = 0;
 
+	if (page) {
+		zdd = page->zone_device_data;
+		if (time_before64(get_jiffies_64(),
+				  zdd->devmem_allocation->timeslice_expiration))
+			return 0;
+	}
+
 	start = ALIGN_DOWN(fault_addr, size);
 	end = ALIGN(fault_addr + 1, size);
 
diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
index 653d48dbe1c1..eaf704d3d05e 100644
--- a/include/drm/drm_gpusvm.h
+++ b/include/drm/drm_gpusvm.h
@@ -89,6 +89,7 @@ struct drm_gpusvm_devmem_ops {
  * @ops: Pointer to the operations structure for GPU SVM device memory
  * @dpagemap: The struct drm_pagemap of the pages this allocation belongs to.
  * @size: Size of device memory allocation
+ * @timeslice_expiration: Timeslice expiration in jiffies
  */
 struct drm_gpusvm_devmem {
 	struct device *dev;
@@ -97,6 +98,7 @@ struct drm_gpusvm_devmem {
 	const struct drm_gpusvm_devmem_ops *ops;
 	struct drm_pagemap *dpagemap;
 	size_t size;
+	u64 timeslice_expiration;
 };
 
 /**
@@ -295,6 +297,8 @@ struct drm_gpusvm {
  * @check_pages_threshold: Check CPU pages for present if chunk is less than or
  *                         equal to threshold. If not present, reduce chunk
  *                         size.
+ * @timeslice_ms: The timeslice MS which in minimum time a piece of memory
+ *		  remains with either exclusive GPU or CPU access.
  * @in_notifier: entering from a MMU notifier
  * @read_only: operating on read-only memory
  * @devmem_possible: possible to use device memory
@@ -304,6 +308,7 @@ struct drm_gpusvm {
  */
 struct drm_gpusvm_ctx {
 	unsigned long check_pages_threshold;
+	unsigned long timeslice_ms;
 	unsigned int in_notifier :1;
 	unsigned int read_only :1;
 	unsigned int devmem_possible :1;
-- 
2.34.1


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

* [PATCH v6 04/20] drm/xe: Timeslice GPU on atomic SVM fault
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (2 preceding siblings ...)
  2025-04-30 12:18 ` [PATCH v6 03/20] drm/gpusvm: Add timeslicing support to GPU SVM Himal Prasad Ghimiray
@ 2025-04-30 12:18 ` Himal Prasad Ghimiray
  2025-04-30 12:18 ` [PATCH v6 05/20] drm/xe: Add atomic_svm_timeslice_ms debugfs entry Himal Prasad Ghimiray
                   ` (23 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:18 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, stable

From: Matthew Brost <matthew.brost@intel.com>

Ensure GPU can make forward progress on an atomic SVM GPU fault by
giving the GPU a timeslice of 5ms

v2:
 - Reduce timeslice to 5ms
 - Double timeslice on retry
 - Split out GPU SVM changes into independent patch
v5:
 - Double timeslice in a few more places

Fixes: 2f118c949160 ("drm/xe: Add SVM VRAM migration")
Cc: stable@vger.kernel.org
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_svm.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index dcc84e65ca96..f967caabc895 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -790,6 +790,8 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR) ? SZ_64K : 0,
 		.devmem_only = atomic && IS_DGFX(vm->xe) &&
 			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
+		.timeslice_ms = atomic && IS_DGFX(vm->xe) &&
+			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR) ? 5 : 0,
 	};
 	struct xe_svm_range *range;
 	struct drm_gpusvm_range *r;
@@ -829,6 +831,7 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 	if (--migrate_try_count >= 0 &&
 	    xe_svm_range_needs_migrate_to_vram(range, vma)) {
 		err = xe_svm_alloc_vram(vm, tile, range, &ctx);
+		ctx.timeslice_ms <<= 1;	/* Double timeslice if we have to retry */
 		if (err) {
 			if (migrate_try_count || !ctx.devmem_only) {
 				drm_dbg(&vm->xe->drm,
@@ -848,6 +851,7 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 	err = drm_gpusvm_range_get_pages(&vm->svm.gpusvm, r, &ctx);
 	/* Corner where CPU mappings have changed */
 	if (err == -EOPNOTSUPP || err == -EFAULT || err == -EPERM) {
+		ctx.timeslice_ms <<= 1;	/* Double timeslice if we have to retry */
 		if (migrate_try_count > 0 || !ctx.devmem_only) {
 			if (err == -EOPNOTSUPP) {
 				range_debug(range, "PAGE FAULT - EVICT PAGES");
@@ -887,6 +891,7 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 			drm_exec_fini(&exec);
 			err = PTR_ERR(fence);
 			if (err == -EAGAIN) {
+				ctx.timeslice_ms <<= 1;	/* Double timeslice if we have to retry */
 				range_debug(range, "PAGE FAULT - RETRY BIND");
 				goto retry;
 			}
-- 
2.34.1


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

* [PATCH v6 05/20] drm/xe: Add atomic_svm_timeslice_ms debugfs entry
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (3 preceding siblings ...)
  2025-04-30 12:18 ` [PATCH v6 04/20] drm/xe: Timeslice GPU on atomic SVM fault Himal Prasad Ghimiray
@ 2025-04-30 12:18 ` Himal Prasad Ghimiray
  2025-04-30 12:18 ` [PATCH v6 06/20] drm/xe: Introduce xe_vma_op_prefetch_range struct for prefetch of ranges Himal Prasad Ghimiray
                   ` (22 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:18 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom

From: Matthew Brost <matthew.brost@intel.com>

Add some informal control for atomic SVM fault GPU timeslice to be able
to play around with values and tweak performance.

v2:
 - Reduce timeslice default value to 5ms

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_debugfs.c      | 38 ++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_device.c       |  1 +
 drivers/gpu/drm/xe/xe_device_types.h |  3 +++
 drivers/gpu/drm/xe/xe_svm.c          |  3 ++-
 4 files changed, 44 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index d0503959a8ed..d83cd6ed3fa8 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -191,6 +191,41 @@ static const struct file_operations wedged_mode_fops = {
 	.write = wedged_mode_set,
 };
 
+static ssize_t atomic_svm_timeslice_ms_show(struct file *f, char __user *ubuf,
+					    size_t size, loff_t *pos)
+{
+	struct xe_device *xe = file_inode(f)->i_private;
+	char buf[32];
+	int len = 0;
+
+	len = scnprintf(buf, sizeof(buf), "%d\n", xe->atomic_svm_timeslice_ms);
+
+	return simple_read_from_buffer(ubuf, size, pos, buf, len);
+}
+
+static ssize_t atomic_svm_timeslice_ms_set(struct file *f,
+					   const char __user *ubuf,
+					   size_t size, loff_t *pos)
+{
+	struct xe_device *xe = file_inode(f)->i_private;
+	u32 atomic_svm_timeslice_ms;
+	ssize_t ret;
+
+	ret = kstrtouint_from_user(ubuf, size, 0, &atomic_svm_timeslice_ms);
+	if (ret)
+		return ret;
+
+	xe->atomic_svm_timeslice_ms = atomic_svm_timeslice_ms;
+
+	return size;
+}
+
+static const struct file_operations atomic_svm_timeslice_ms_fops = {
+	.owner = THIS_MODULE,
+	.read = atomic_svm_timeslice_ms_show,
+	.write = atomic_svm_timeslice_ms_set,
+};
+
 void xe_debugfs_register(struct xe_device *xe)
 {
 	struct ttm_device *bdev = &xe->ttm;
@@ -211,6 +246,9 @@ void xe_debugfs_register(struct xe_device *xe)
 	debugfs_create_file("wedged_mode", 0600, root, xe,
 			    &wedged_mode_fops);
 
+	debugfs_create_file("atomic_svm_timeslice_ms", 0600, root, xe,
+			    &atomic_svm_timeslice_ms_fops);
+
 	for (mem_type = XE_PL_VRAM0; mem_type <= XE_PL_VRAM1; ++mem_type) {
 		man = ttm_manager_type(bdev, mem_type);
 
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 75e753e0a682..abf3c72baaa6 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -444,6 +444,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
 	xe->info.devid = pdev->device;
 	xe->info.revid = pdev->revision;
 	xe->info.force_execlist = xe_modparam.force_execlist;
+	xe->atomic_svm_timeslice_ms = 5;
 
 	err = xe_irq_init(xe);
 	if (err)
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 495bc00ebed4..59babadeb9d1 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -571,6 +571,9 @@ struct xe_device {
 	/** @pmu: performance monitoring unit */
 	struct xe_pmu pmu;
 
+	/** @atomic_svm_timeslice_ms: Atomic SVM fault timeslice MS */
+	u32 atomic_svm_timeslice_ms;
+
 #ifdef TEST_VM_OPS_ERROR
 	/**
 	 * @vm_inject_error_position: inject errors at different places in VM
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index f967caabc895..81298a8aabfb 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -791,7 +791,8 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 		.devmem_only = atomic && IS_DGFX(vm->xe) &&
 			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
 		.timeslice_ms = atomic && IS_DGFX(vm->xe) &&
-			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR) ? 5 : 0,
+			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR) ?
+			vm->xe->atomic_svm_timeslice_ms : 0,
 	};
 	struct xe_svm_range *range;
 	struct drm_gpusvm_range *r;
-- 
2.34.1


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

* [PATCH v6 06/20] drm/xe: Introduce xe_vma_op_prefetch_range struct for prefetch of ranges
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (4 preceding siblings ...)
  2025-04-30 12:18 ` [PATCH v6 05/20] drm/xe: Add atomic_svm_timeslice_ms debugfs entry Himal Prasad Ghimiray
@ 2025-04-30 12:18 ` Himal Prasad Ghimiray
  2025-04-30 12:18 ` [PATCH v6 07/20] drm/xe: Make xe_svm_alloc_vram public Himal Prasad Ghimiray
                   ` (21 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:18 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

Add xe_vma_op_prefetch_range struct for svm ranges prefetching, including
an xarray of SVM range pointers, range count, and target memory region.

-v2: Fix doc

Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_vm_types.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 1662604c4486..0afd0296a57e 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -374,6 +374,16 @@ struct xe_vma_op_unmap_range {
 	struct xe_svm_range *range;
 };
 
+/** struct xe_vma_op_prefetch_range - VMA prefetch range operation */
+struct xe_vma_op_prefetch_range {
+	/** @range: xarray for SVM ranges data */
+	struct xarray range;
+	/** @ranges_count: number of svm ranges to map */
+	u32 ranges_count;
+	/** @region: memory region to prefetch to */
+	u32 region;
+};
+
 /** enum xe_vma_op_flags - flags for VMA operation */
 enum xe_vma_op_flags {
 	/** @XE_VMA_OP_COMMITTED: VMA operation committed */
@@ -416,6 +426,8 @@ struct xe_vma_op {
 		struct xe_vma_op_map_range map_range;
 		/** @unmap_range: VMA unmap range operation specific data */
 		struct xe_vma_op_unmap_range unmap_range;
+		/** @prefetch_range: VMA prefetch range operation specific data */
+		struct xe_vma_op_prefetch_range prefetch_range;
 	};
 };
 
-- 
2.34.1


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

* [PATCH v6 07/20] drm/xe: Make xe_svm_alloc_vram public
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (5 preceding siblings ...)
  2025-04-30 12:18 ` [PATCH v6 06/20] drm/xe: Introduce xe_vma_op_prefetch_range struct for prefetch of ranges Himal Prasad Ghimiray
@ 2025-04-30 12:18 ` Himal Prasad Ghimiray
  2025-04-30 12:19 ` [PATCH v6 08/20] drm/xe/svm: Helper to add tile masks to svm ranges Himal Prasad Ghimiray
                   ` (20 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:18 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

This function will be used in prefetch too, hence make it public.

v2:
  - Add kernel-doc (Matthew Brost)
  - Rebase

v3:
 - Move CONFIG_DRM_XE_DEVMEM_MIRROR stub out to xe_svm.c (Matthew Brost)

Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_svm.c | 30 ++++++++++++++++++++----------
 drivers/gpu/drm/xe/xe_svm.h | 12 ++++++++++++
 2 files changed, 32 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index 81298a8aabfb..1a6a59e4be5d 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -669,9 +669,19 @@ static struct xe_vram_region *tile_to_vr(struct xe_tile *tile)
 	return &tile->mem.vram;
 }
 
-static int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
-			     struct xe_svm_range *range,
-			     const struct drm_gpusvm_ctx *ctx)
+/**
+ * xe_svm_alloc_vram()- Allocate device memory pages for range,
+ * migrating existing data.
+ * @vm: The VM.
+ * @tile: tile to allocate vram from
+ * @range: SVM range
+ * @ctx: DRM GPU SVM context
+ *
+ * Return: 0 on success, error code on failure.
+ */
+int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
+		      struct xe_svm_range *range,
+		      const struct drm_gpusvm_ctx *ctx)
 {
 	struct mm_struct *mm = vm->svm.gpusvm.mm;
 	struct xe_vram_region *vr = tile_to_vr(tile);
@@ -725,13 +735,6 @@ static int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
 
 	return err;
 }
-#else
-static int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
-			     struct xe_svm_range *range,
-			     const struct drm_gpusvm_ctx *ctx)
-{
-	return -EOPNOTSUPP;
-}
 #endif
 
 static bool supports_4K_migration(struct xe_device *xe)
@@ -1018,6 +1021,13 @@ int xe_devm_add(struct xe_tile *tile, struct xe_vram_region *vr)
 	return 0;
 }
 #else
+int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
+		      struct xe_svm_range *range,
+		      const struct drm_gpusvm_ctx *ctx)
+{
+	return -EOPNOTSUPP;
+}
+
 int xe_devm_add(struct xe_tile *tile, struct xe_vram_region *vr)
 {
 	return 0;
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 0e1f376a7471..55695097a8d1 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -70,6 +70,9 @@ int xe_svm_bo_evict(struct xe_bo *bo);
 
 void xe_svm_range_debug(struct xe_svm_range *range, const char *operation);
 
+int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
+		      struct xe_svm_range *range,
+		      const struct drm_gpusvm_ctx *ctx);
 /**
  * xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
  * @range: SVM range
@@ -95,6 +98,7 @@ static inline bool xe_svm_range_has_dma_mapping(struct xe_svm_range *range)
 #include <linux/interval_tree.h>
 
 struct drm_pagemap_device_addr;
+struct drm_gpusvm_ctx;
 struct xe_bo;
 struct xe_gt;
 struct xe_vm;
@@ -165,6 +169,14 @@ void xe_svm_range_debug(struct xe_svm_range *range, const char *operation)
 {
 }
 
+static inline
+int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
+		      struct xe_svm_range *range,
+		      const struct drm_gpusvm_ctx *ctx)
+{
+	return -EOPNOTSUPP;
+}
+
 #define xe_svm_assert_in_notifier(...) do {} while (0)
 #define xe_svm_range_has_dma_mapping(...) false
 
-- 
2.34.1


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

* [PATCH v6 08/20] drm/xe/svm: Helper to add tile masks to svm ranges
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (6 preceding siblings ...)
  2025-04-30 12:18 ` [PATCH v6 07/20] drm/xe: Make xe_svm_alloc_vram public Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 12:19 ` [PATCH v6 09/20] drm/xe/svm: Make to_xe_range a public function Himal Prasad Ghimiray
                   ` (19 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

Introduce a helper to add tile mask of binding present and invalidated
for the range. Add a lockdep_assert to ensure it is protected by GPU SVM
notifier lock.

Suggested-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_pt.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index b42cf5d1b20c..de4e3edda758 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -2216,6 +2216,16 @@ static void unbind_op_commit(struct xe_vm *vm, struct xe_tile *tile,
 	}
 }
 
+static void range_present_and_invalidated_tile(struct xe_vm *vm,
+					       struct xe_svm_range *range,
+					       u8 tile_id)
+{
+	lockdep_assert_held(&vm->svm.gpusvm.notifier_lock);
+
+	range->tile_present |= BIT(tile_id);
+	range->tile_invalidated &= ~BIT(tile_id);
+}
+
 static void op_commit(struct xe_vm *vm,
 		      struct xe_tile *tile,
 		      struct xe_vm_pgtable_update_ops *pt_update_ops,
@@ -2270,12 +2280,11 @@ static void op_commit(struct xe_vm *vm,
 	}
 	case DRM_GPUVA_OP_DRIVER:
 	{
-		if (op->subop == XE_VMA_SUBOP_MAP_RANGE) {
-			op->map_range.range->tile_present |= BIT(tile->id);
-			op->map_range.range->tile_invalidated &= ~BIT(tile->id);
-		} else if (op->subop == XE_VMA_SUBOP_UNMAP_RANGE) {
+		if (op->subop == XE_VMA_SUBOP_MAP_RANGE)
+			range_present_and_invalidated_tile(vm, op->map_range.range, tile->id);
+		else if (op->subop == XE_VMA_SUBOP_UNMAP_RANGE)
 			op->unmap_range.range->tile_present &= ~BIT(tile->id);
-		}
+
 		break;
 	}
 	default:
-- 
2.34.1


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

* [PATCH v6 09/20] drm/xe/svm: Make to_xe_range a public function
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (7 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 08/20] drm/xe/svm: Helper to add tile masks to svm ranges Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 12:19 ` [PATCH v6 10/20] drm/xe/svm: Make xe_svm_range_* end/start/size public Himal Prasad Ghimiray
                   ` (18 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

The to_xe_range function will be used in other files. Therefore, make it
public and add kernel-doc documentation

Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_svm.c |  5 -----
 drivers/gpu/drm/xe/xe_svm.h | 20 ++++++++++++++++++++
 2 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index 1a6a59e4be5d..a16e0c2902c1 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -98,11 +98,6 @@ static void xe_svm_range_free(struct drm_gpusvm_range *range)
 	kfree(range);
 }
 
-static struct xe_svm_range *to_xe_range(struct drm_gpusvm_range *r)
-{
-	return container_of(r, struct xe_svm_range, base);
-}
-
 static void
 xe_svm_garbage_collector_add_range(struct xe_vm *vm, struct xe_svm_range *range,
 				   const struct mmu_notifier_range *mmu_range)
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 55695097a8d1..2b52bc20ad46 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -85,6 +85,20 @@ static inline bool xe_svm_range_has_dma_mapping(struct xe_svm_range *range)
 	return range->base.flags.has_dma_mapping;
 }
 
+/**
+ * to_xe_range - Convert a drm_gpusvm_range pointer to a xe_svm_range
+ * @r: Pointer to the drm_gpusvm_range structure
+ *
+ * This function takes a pointer to a drm_gpusvm_range structure and
+ * converts it to a pointer to the containing xe_svm_range structure.
+ *
+ * Return: Pointer to the xe_svm_range structure
+ */
+static inline struct xe_svm_range *to_xe_range(struct drm_gpusvm_range *r)
+{
+	return container_of(r, struct xe_svm_range, base);
+}
+
 #define xe_svm_assert_in_notifier(vm__) \
 	lockdep_assert_held_write(&(vm__)->svm.gpusvm.notifier_lock)
 
@@ -99,6 +113,7 @@ static inline bool xe_svm_range_has_dma_mapping(struct xe_svm_range *range)
 
 struct drm_pagemap_device_addr;
 struct drm_gpusvm_ctx;
+struct drm_gpusvm_range;
 struct xe_bo;
 struct xe_gt;
 struct xe_vm;
@@ -177,6 +192,11 @@ int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
 	return -EOPNOTSUPP;
 }
 
+static inline struct xe_svm_range *to_xe_range(struct drm_gpusvm_range *r)
+{
+	return NULL;
+}
+
 #define xe_svm_assert_in_notifier(...) do {} while (0)
 #define xe_svm_range_has_dma_mapping(...) false
 
-- 
2.34.1


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

* [PATCH v6 10/20] drm/xe/svm: Make xe_svm_range_* end/start/size public
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (8 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 09/20] drm/xe/svm: Make to_xe_range a public function Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 12:19 ` [PATCH v6 11/20] drm/xe/vm: Update xe_vma_ops_incr_pt_update_ops to take an increment value Himal Prasad Ghimiray
                   ` (17 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

These functions will be used in prefetch too, therefore make them public.

v2
  - Fix kernel doc

Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_svm.c | 15 ------------
 drivers/gpu/drm/xe/xe_svm.h | 48 +++++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index a16e0c2902c1..08e05afb8b18 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -40,21 +40,6 @@ static struct xe_vm *range_to_vm(struct drm_gpusvm_range *r)
 	return gpusvm_to_vm(r->gpusvm);
 }
 
-static unsigned long xe_svm_range_start(struct xe_svm_range *range)
-{
-	return drm_gpusvm_range_start(&range->base);
-}
-
-static unsigned long xe_svm_range_end(struct xe_svm_range *range)
-{
-	return drm_gpusvm_range_end(&range->base);
-}
-
-static unsigned long xe_svm_range_size(struct xe_svm_range *range)
-{
-	return drm_gpusvm_range_size(&range->base);
-}
-
 #define range_debug(r__, operaton__)					\
 	vm_dbg(&range_to_vm(&(r__)->base)->xe->drm,			\
 	       "%s: asid=%u, gpusvm=%p, vram=%d,%d, seqno=%lu, " \
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 2b52bc20ad46..642da7acf986 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -99,6 +99,39 @@ static inline struct xe_svm_range *to_xe_range(struct drm_gpusvm_range *r)
 	return container_of(r, struct xe_svm_range, base);
 }
 
+/**
+ * xe_svm_range_start() - SVM range start address
+ * @range: SVM range
+ *
+ * Return: start address of range.
+ */
+static inline unsigned long xe_svm_range_start(struct xe_svm_range *range)
+{
+	return drm_gpusvm_range_start(&range->base);
+}
+
+/**
+ * xe_svm_range_end() - SVM range end address
+ * @range: SVM range
+ *
+ * Return: end address of range.
+ */
+static inline unsigned long xe_svm_range_end(struct xe_svm_range *range)
+{
+	return drm_gpusvm_range_end(&range->base);
+}
+
+/**
+ * xe_svm_range_size() - SVM range size
+ * @range: SVM range
+ *
+ * Return: Size of range.
+ */
+static inline unsigned long xe_svm_range_size(struct xe_svm_range *range)
+{
+	return drm_gpusvm_range_size(&range->base);
+}
+
 #define xe_svm_assert_in_notifier(vm__) \
 	lockdep_assert_held_write(&(vm__)->svm.gpusvm.notifier_lock)
 
@@ -197,6 +230,21 @@ static inline struct xe_svm_range *to_xe_range(struct drm_gpusvm_range *r)
 	return NULL;
 }
 
+static inline unsigned long xe_svm_range_start(struct xe_svm_range *range)
+{
+	return 0;
+}
+
+static inline unsigned long xe_svm_range_end(struct xe_svm_range *range)
+{
+	return 0;
+}
+
+static inline unsigned long xe_svm_range_size(struct xe_svm_range *range)
+{
+	return 0;
+}
+
 #define xe_svm_assert_in_notifier(...) do {} while (0)
 #define xe_svm_range_has_dma_mapping(...) false
 
-- 
2.34.1


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

* [PATCH v6 11/20] drm/xe/vm: Update xe_vma_ops_incr_pt_update_ops to take an increment value
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (9 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 10/20] drm/xe/svm: Make xe_svm_range_* end/start/size public Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 12:19 ` [PATCH v6 12/20] drm/xe/vm: Add an identifier in xe_vma_ops for svm prefetch Himal Prasad Ghimiray
                   ` (16 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

Prefetch for SVM ranges can have more than one operation to increment,
hence modify the function to accept an increment value as input.

v2:
  - Call xe_vma_ops_incr_pt_update_ops only once for REMAP (Matthew Brost)
  - Add check for 0 ops

v3:
  - s/u8/int for inc_val and num_remap_ops (Matthew Brost)

Suggested-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_vm.c | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 80e56e232685..2ce91aebf39a 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -806,13 +806,16 @@ static void xe_vma_ops_fini(struct xe_vma_ops *vops)
 		kfree(vops->pt_update_ops[i].ops);
 }
 
-static void xe_vma_ops_incr_pt_update_ops(struct xe_vma_ops *vops, u8 tile_mask)
+static void xe_vma_ops_incr_pt_update_ops(struct xe_vma_ops *vops, u8 tile_mask, int inc_val)
 {
 	int i;
 
+	if (!inc_val)
+		return;
+
 	for (i = 0; i < XE_MAX_TILES_PER_DEVICE; ++i)
 		if (BIT(i) & tile_mask)
-			++vops->pt_update_ops[i].num_ops;
+			vops->pt_update_ops[i].num_ops += inc_val;
 }
 
 static void xe_vm_populate_rebind(struct xe_vma_op *op, struct xe_vma *vma,
@@ -842,7 +845,7 @@ static int xe_vm_ops_add_rebind(struct xe_vma_ops *vops, struct xe_vma *vma,
 
 	xe_vm_populate_rebind(op, vma, tile_mask);
 	list_add_tail(&op->link, &vops->list);
-	xe_vma_ops_incr_pt_update_ops(vops, tile_mask);
+	xe_vma_ops_incr_pt_update_ops(vops, tile_mask, 1);
 
 	return 0;
 }
@@ -977,7 +980,7 @@ xe_vm_ops_add_range_rebind(struct xe_vma_ops *vops,
 
 	xe_vm_populate_range_rebind(op, vma, range, tile_mask);
 	list_add_tail(&op->link, &vops->list);
-	xe_vma_ops_incr_pt_update_ops(vops, tile_mask);
+	xe_vma_ops_incr_pt_update_ops(vops, tile_mask, 1);
 
 	return 0;
 }
@@ -1062,7 +1065,7 @@ xe_vm_ops_add_range_unbind(struct xe_vma_ops *vops,
 
 	xe_vm_populate_range_unbind(op, range);
 	list_add_tail(&op->link, &vops->list);
-	xe_vma_ops_incr_pt_update_ops(vops, range->tile_present);
+	xe_vma_ops_incr_pt_update_ops(vops, range->tile_present, 1);
 
 	return 0;
 }
@@ -2493,7 +2496,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 			     !op->map.is_cpu_addr_mirror) ||
 			    op->map.invalidate_on_bind)
 				xe_vma_ops_incr_pt_update_ops(vops,
-							      op->tile_mask);
+							      op->tile_mask, 1);
 			break;
 		}
 		case DRM_GPUVA_OP_REMAP:
@@ -2502,6 +2505,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 				gpuva_to_vma(op->base.remap.unmap->va);
 			bool skip = xe_vma_is_cpu_addr_mirror(old);
 			u64 start = xe_vma_start(old), end = xe_vma_end(old);
+			int num_remap_ops = 0;
 
 			if (op->base.remap.prev)
 				start = op->base.remap.prev->va.addr +
@@ -2554,7 +2558,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 					       (ULL)op->remap.start,
 					       (ULL)op->remap.range);
 				} else {
-					xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
+					num_remap_ops++;
 				}
 			}
 
@@ -2583,11 +2587,13 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 					       (ULL)op->remap.start,
 					       (ULL)op->remap.range);
 				} else {
-					xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
+					num_remap_ops++;
 				}
 			}
 			if (!skip)
-				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
+				num_remap_ops++;
+
+			xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask, num_remap_ops);
 			break;
 		}
 		case DRM_GPUVA_OP_UNMAP:
@@ -2599,7 +2605,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 				return -EBUSY;
 
 			if (!xe_vma_is_cpu_addr_mirror(vma))
-				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
+				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask, 1);
 			break;
 		case DRM_GPUVA_OP_PREFETCH:
 			vma = gpuva_to_vma(op->base.prefetch.va);
@@ -2611,7 +2617,7 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 			}
 
 			if (!xe_vma_is_cpu_addr_mirror(vma))
-				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
+				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask, 1);
 			break;
 		default:
 			drm_warn(&vm->xe->drm, "NOT POSSIBLE");
-- 
2.34.1


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

* [PATCH v6 12/20] drm/xe/vm: Add an identifier in xe_vma_ops for svm prefetch
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (10 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 11/20] drm/xe/vm: Update xe_vma_ops_incr_pt_update_ops to take an increment value Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 12:19 ` [PATCH v6 13/20] drm/xe: Rename lookup_vma function to xe_find_vma_by_addr Himal Prasad Ghimiray
                   ` (15 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

Add a flag in xe_vma_ops to determine whether it has svm prefetch ops or
not.

v2:
 - s/false/0 (Matthew Brost)

v3:
 - s/XE_VMA_OPS_HAS_SVM_PREFETCH/XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH

Suggested-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_vm.c       | 1 +
 drivers/gpu/drm/xe/xe_vm_types.h | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 2ce91aebf39a..655bcf88f760 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -3240,6 +3240,7 @@ static void xe_vma_ops_init(struct xe_vma_ops *vops, struct xe_vm *vm,
 	vops->q = q;
 	vops->syncs = syncs;
 	vops->num_syncs = num_syncs;
+	vops->flags = 0;
 }
 
 static int xe_vm_bind_ioctl_validate_bo(struct xe_device *xe, struct xe_bo *bo,
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 0afd0296a57e..bfc145baad49 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -445,6 +445,9 @@ struct xe_vma_ops {
 	u32 num_syncs;
 	/** @pt_update_ops: page table update operations */
 	struct xe_vm_pgtable_update_ops pt_update_ops[XE_MAX_TILES_PER_DEVICE];
+	/** @flag: signify the properties within xe_vma_ops*/
+#define XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH BIT(0)
+	u32 flags;
 #ifdef TEST_VM_OPS_ERROR
 	/** @inject_error: inject error to test error handling */
 	bool inject_error;
-- 
2.34.1


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

* [PATCH v6 13/20] drm/xe: Rename lookup_vma function to xe_find_vma_by_addr
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (11 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 12/20] drm/xe/vm: Add an identifier in xe_vma_ops for svm prefetch Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 12:19 ` [PATCH v6 14/20] drm/xe/svm: Refactor usage of drm_gpusvm* function in xe_svm Himal Prasad Ghimiray
                   ` (14 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

This update renames the lookup_vma function to xe_vm_find_vma_by_addr and
makes it accessible externally. The function, which looks up a VMA by
its address within a specified VM, will be utilized in upcoming patches.

v2
 - Fix doc

Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_gt_pagefault.c | 24 +----------------------
 drivers/gpu/drm/xe/xe_vm.c           | 29 ++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_vm.h           |  2 ++
 3 files changed, 32 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
index 10622ca471a2..7a8f87709e39 100644
--- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
@@ -72,28 +72,6 @@ static bool vma_is_valid(struct xe_tile *tile, struct xe_vma *vma)
 		!(BIT(tile->id) & vma->tile_invalidated);
 }
 
-static bool vma_matches(struct xe_vma *vma, u64 page_addr)
-{
-	if (page_addr > xe_vma_end(vma) - 1 ||
-	    page_addr + SZ_4K - 1 < xe_vma_start(vma))
-		return false;
-
-	return true;
-}
-
-static struct xe_vma *lookup_vma(struct xe_vm *vm, u64 page_addr)
-{
-	struct xe_vma *vma = NULL;
-
-	if (vm->usm.last_fault_vma) {   /* Fast lookup */
-		if (vma_matches(vm->usm.last_fault_vma, page_addr))
-			vma = vm->usm.last_fault_vma;
-	}
-	if (!vma)
-		vma = xe_vm_find_overlapping_vma(vm, page_addr, SZ_4K);
-
-	return vma;
-}
 
 static int xe_pf_begin(struct drm_exec *exec, struct xe_vma *vma,
 		       bool atomic, unsigned int id)
@@ -231,7 +209,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
 		goto unlock_vm;
 	}
 
-	vma = lookup_vma(vm, pf->page_addr);
+	vma = xe_vm_find_vma_by_addr(vm, pf->page_addr);
 	if (!vma) {
 		err = -EINVAL;
 		goto unlock_vm;
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 655bcf88f760..555ed10dac85 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -2139,6 +2139,35 @@ int xe_vm_destroy_ioctl(struct drm_device *dev, void *data,
 	return err;
 }
 
+static bool vma_matches(struct xe_vma *vma, u64 page_addr)
+{
+	if (page_addr > xe_vma_end(vma) - 1 ||
+	    page_addr + SZ_4K - 1 < xe_vma_start(vma))
+		return false;
+
+	return true;
+}
+
+/**
+ * xe_vm_find_vma_by_addr() - Find a VMA by its address
+ *
+ * @vm: the xe_vm the vma belongs to
+ * @page_addr: address to look up
+ */
+struct xe_vma *xe_vm_find_vma_by_addr(struct xe_vm *vm, u64 page_addr)
+{
+	struct xe_vma *vma = NULL;
+
+	if (vm->usm.last_fault_vma) {   /* Fast lookup */
+		if (vma_matches(vm->usm.last_fault_vma, page_addr))
+			vma = vm->usm.last_fault_vma;
+	}
+	if (!vma)
+		vma = xe_vm_find_overlapping_vma(vm, page_addr, SZ_4K);
+
+	return vma;
+}
+
 static const u32 region_to_mem_type[] = {
 	XE_PL_TT,
 	XE_PL_VRAM0,
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 0ef811fc2bde..99e164852f63 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -169,6 +169,8 @@ static inline bool xe_vma_is_userptr(struct xe_vma *vma)
 		!xe_vma_is_cpu_addr_mirror(vma);
 }
 
+struct xe_vma *xe_vm_find_vma_by_addr(struct xe_vm *vm, u64 page_addr);
+
 /**
  * to_userptr_vma() - Return a pointer to an embedding userptr vma
  * @vma: Pointer to the embedded struct xe_vma
-- 
2.34.1


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

* [PATCH v6 14/20] drm/xe/svm: Refactor usage of drm_gpusvm* function in xe_svm
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (12 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 13/20] drm/xe: Rename lookup_vma function to xe_find_vma_by_addr Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 12:19 ` [PATCH v6 15/20] drm/xe/svm: Make xe_svm_range_needs_migrate_to_vram() public Himal Prasad Ghimiray
                   ` (13 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

Define xe_svm_range_find_or_insert function wrapping
drm_gpusvm_range_find_or_insert for reusing in prefetch.

Define xe_svm_range_get_pages function wrapping
drm_gpusvm_range_get_pages for reusing in prefetch.

-v2 pass pagefault defined drm_gpu_svm context as parameter
in xe_svm_range_find_or_insert(Matthew Brost)

Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_svm.c | 65 ++++++++++++++++++++++++++++++++-----
 drivers/gpu/drm/xe/xe_svm.h | 21 ++++++++++++
 2 files changed, 77 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index 08e05afb8b18..bdbd0495b1a4 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -778,7 +778,6 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 			vm->xe->atomic_svm_timeslice_ms : 0,
 	};
 	struct xe_svm_range *range;
-	struct drm_gpusvm_range *r;
 	struct drm_exec exec;
 	struct dma_fence *fence;
 	struct xe_tile *tile = gt_to_tile(gt);
@@ -797,16 +796,14 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 	if (err)
 		return err;
 
-	r = drm_gpusvm_range_find_or_insert(&vm->svm.gpusvm, fault_addr,
-					    xe_vma_start(vma), xe_vma_end(vma),
-					    &ctx);
-	if (IS_ERR(r))
-		return PTR_ERR(r);
+	range = xe_svm_range_find_or_insert(vm, fault_addr, vma, &ctx);
 
-	if (ctx.devmem_only && !r->flags.migrate_devmem)
+	if (IS_ERR(range))
+		return PTR_ERR(range);
+
+	if (ctx.devmem_only && !range->base.flags.migrate_devmem)
 		return -EACCES;
 
-	range = to_xe_range(r);
 	if (xe_svm_range_is_valid(range, tile, ctx.devmem_only))
 		return 0;
 
@@ -832,7 +829,7 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 	}
 
 	range_debug(range, "GET PAGES");
-	err = drm_gpusvm_range_get_pages(&vm->svm.gpusvm, r, &ctx);
+	err = xe_svm_range_get_pages(vm, range, &ctx);
 	/* Corner where CPU mappings have changed */
 	if (err == -EOPNOTSUPP || err == -EFAULT || err == -EPERM) {
 		ctx.timeslice_ms <<= 1;	/* Double timeslice if we have to retry */
@@ -923,6 +920,56 @@ int xe_svm_bo_evict(struct xe_bo *bo)
 	return drm_gpusvm_evict_to_ram(&bo->devmem_allocation);
 }
 
+/**
+ * xe_svm_range_find_or_insert- Find or insert GPU SVM range
+ * @vm: xe_vm pointer
+ * @addr: address for which range needs to be found/inserted
+ * @vma:  Pointer to struct xe_vma which mirrors CPU
+ * @ctx: GPU SVM context
+ *
+ * This function finds or inserts a newly allocated a SVM range based on the
+ * address.
+ *
+ * Return: Pointer to the SVM range on success, ERR_PTR() on failure.
+ */
+struct xe_svm_range *xe_svm_range_find_or_insert(struct xe_vm *vm, u64 addr,
+						 struct xe_vma *vma, struct drm_gpusvm_ctx *ctx)
+{
+	struct drm_gpusvm_range *r;
+
+	r = drm_gpusvm_range_find_or_insert(&vm->svm.gpusvm, max(addr, xe_vma_start(vma)),
+					    xe_vma_start(vma), xe_vma_end(vma), ctx);
+	if (IS_ERR(r))
+		return ERR_PTR(PTR_ERR(r));
+
+	return to_xe_range(r);
+}
+
+/**
+ * xe_svm_range_get_pages() - Get pages for a SVM range
+ * @vm: Pointer to the struct xe_vm
+ * @range: Pointer to the xe SVM range structure
+ * @ctx: GPU SVM context
+ *
+ * This function gets pages for a SVM range and ensures they are mapped for
+ * DMA access. In case of failure with -EOPNOTSUPP, it evicts the range.
+ *
+ * Return: 0 on success, negative error code on failure.
+ */
+int xe_svm_range_get_pages(struct xe_vm *vm, struct xe_svm_range *range,
+			   struct drm_gpusvm_ctx *ctx)
+{
+	int err = 0;
+
+	err = drm_gpusvm_range_get_pages(&vm->svm.gpusvm, &range->base, ctx);
+	if (err == -EOPNOTSUPP) {
+		range_debug(range, "PAGE FAULT - EVICT PAGES");
+		drm_gpusvm_range_evict(&vm->svm.gpusvm, &range->base);
+	}
+
+	return err;
+}
+
 #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
 
 static struct drm_pagemap_device_addr
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 642da7acf986..cafca625bba9 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -73,6 +73,13 @@ void xe_svm_range_debug(struct xe_svm_range *range, const char *operation);
 int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
 		      struct xe_svm_range *range,
 		      const struct drm_gpusvm_ctx *ctx);
+
+struct xe_svm_range *xe_svm_range_find_or_insert(struct xe_vm *vm, u64 addr,
+						 struct xe_vma *vma, struct drm_gpusvm_ctx *ctx);
+
+int xe_svm_range_get_pages(struct xe_vm *vm, struct xe_svm_range *range,
+			   struct drm_gpusvm_ctx *ctx);
+
 /**
  * xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
  * @range: SVM range
@@ -225,6 +232,20 @@ int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
 	return -EOPNOTSUPP;
 }
 
+static inline
+struct xe_svm_range *xe_svm_range_find_or_insert(struct xe_vm *vm, u64 addr,
+						 struct xe_vma *vma, struct drm_gpusvm_ctx *ctx)
+{
+	return ERR_PTR(-EINVAL);
+}
+
+static inline
+int xe_svm_range_get_pages(struct xe_vm *vm, struct xe_svm_range *range,
+			   struct drm_gpusvm_ctx *ctx)
+{
+	return -EINVAL;
+}
+
 static inline struct xe_svm_range *to_xe_range(struct drm_gpusvm_range *r)
 {
 	return NULL;
-- 
2.34.1


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

* [PATCH v6 15/20] drm/xe/svm: Make xe_svm_range_needs_migrate_to_vram() public
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (13 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 14/20] drm/xe/svm: Refactor usage of drm_gpusvm* function in xe_svm Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 12:19 ` [PATCH v6 16/20] drm/xe/svm: Add xe_svm_range_validate() and xe_svm_range_migrate_to_smem() Himal Prasad Ghimiray
                   ` (12 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

xe_svm_range_needs_migrate_to_vram() determines whether range needs
migration to vram or not, modify it to accept region preference parameter
too, so we can use it in prefetch too.

v2
- add assert instead of warn (Matthew Brost)

Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_svm.c | 26 ++++++++++++++++++--------
 drivers/gpu/drm/xe/xe_svm.h | 10 ++++++++++
 2 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index bdbd0495b1a4..cb4a849c018b 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -725,23 +725,33 @@ static bool supports_4K_migration(struct xe_device *xe)
 	return true;
 }
 
-static bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range,
-					       struct xe_vma *vma)
+/**
+ * xe_svm_range_needs_migrate_to_vram() - SVM range needs migrate to VRAM or not
+ * @range: SVM range for which migration needs to be decided
+ * @vma: vma which has range
+ * @preferred_region_is_vram: preferred region for range is vram
+ *
+ * Return: True for range needing migration and migration is supported else false
+ */
+bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range, struct xe_vma *vma,
+					bool preferred_region_is_vram)
 {
 	struct xe_vm *vm = range_to_vm(&range->base);
 	u64 range_size = xe_svm_range_size(range);
 
-	if (!range->base.flags.migrate_devmem)
+	if (!range->base.flags.migrate_devmem || !preferred_region_is_vram)
 		return false;
 
+	xe_assert(vm->xe, IS_DGFX(vm->xe));
+
 	/* Not reliable without notifier lock, opportunistic only */
-	if (xe_svm_range_in_vram(range)) {
-		drm_dbg(&vm->xe->drm, "Range is already in VRAM\n");
+	if (preferred_region_is_vram && xe_svm_range_in_vram(range)) {
+		drm_info(&vm->xe->drm, "Range is already in VRAM\n");
 		return false;
 	}
 
-	if (range_size <= SZ_64K && !supports_4K_migration(vm->xe)) {
-		drm_dbg(&vm->xe->drm, "Platform doesn't support SZ_4K range migration\n");
+	if (preferred_region_is_vram && range_size <= SZ_64K && !supports_4K_migration(vm->xe)) {
+		drm_warn(&vm->xe->drm, "Platform doesn't support SZ_4K range migration\n");
 		return false;
 	}
 
@@ -810,7 +820,7 @@ int xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
 	range_debug(range, "PAGE FAULT");
 
 	if (--migrate_try_count >= 0 &&
-	    xe_svm_range_needs_migrate_to_vram(range, vma)) {
+	    xe_svm_range_needs_migrate_to_vram(range, vma, IS_DGFX(vm->xe))) {
 		err = xe_svm_alloc_vram(vm, tile, range, &ctx);
 		ctx.timeslice_ms <<= 1;	/* Double timeslice if we have to retry */
 		if (err) {
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index cafca625bba9..9be7bb25725c 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -80,6 +80,9 @@ struct xe_svm_range *xe_svm_range_find_or_insert(struct xe_vm *vm, u64 addr,
 int xe_svm_range_get_pages(struct xe_vm *vm, struct xe_svm_range *range,
 			   struct drm_gpusvm_ctx *ctx);
 
+bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range, struct xe_vma *vma,
+					bool preferred_region_is_vram);
+
 /**
  * xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
  * @range: SVM range
@@ -266,6 +269,13 @@ static inline unsigned long xe_svm_range_size(struct xe_svm_range *range)
 	return 0;
 }
 
+static inline
+bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range, struct xe_vma *vma,
+					u32 region)
+{
+	return false;
+}
+
 #define xe_svm_assert_in_notifier(...) do {} while (0)
 #define xe_svm_range_has_dma_mapping(...) false
 
-- 
2.34.1


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

* [PATCH v6 16/20] drm/xe/svm: Add xe_svm_range_validate() and xe_svm_range_migrate_to_smem()
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (14 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 15/20] drm/xe/svm: Make xe_svm_range_needs_migrate_to_vram() public Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 14:50   ` Matthew Brost
  2025-04-30 12:19 ` [PATCH v6 17/20] drm/gpusvm: Introduce drm_gpusvm_find_vma_start() function Himal Prasad Ghimiray
                   ` (11 subsequent siblings)
  27 siblings, 1 reply; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

The xe_svm_range_validate() function checks if a range is
valid and located in the desired memory region.

xe_svm_range_migrate_to_smem() checks if range have pages in devmem and
migrate them to smem.

v2
- Fix function stub in xe_svm.h
- Fix doc

v3 (Matthew Brost)
- Remove extra new line
- s/range->base.flags.has_devmem_pages/xe_svm_range_in_vram

v4 (Matthew Brost)
- s/xe_svm_range_in_vram/range->base.flags.has_devmem_pages
- Move eviction logic to separate function

Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
 drivers/gpu/drm/xe/xe_svm.c | 41 +++++++++++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_svm.h | 19 +++++++++++++++++
 2 files changed, 60 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index cb4a849c018b..fff3a279e232 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -643,6 +643,47 @@ static bool xe_svm_range_is_valid(struct xe_svm_range *range,
 		(!devmem_only || xe_svm_range_in_vram(range));
 }
 
+/** xe_svm_range_migrate_to_smem() - Move range pages from VRAM to SMEM
+ * @vm: xe_vm pointer
+ * @range: Pointer to the SVM range structure
+ *
+ * The xe_svm_range_migrate_to_smem() checks range has pages in VRAM
+ * and migrates them to SMEM
+ */
+void xe_svm_range_migrate_to_smem(struct xe_vm *vm, struct xe_svm_range *range)
+{
+	if (xe_svm_range_in_vram(range))
+		drm_gpusvm_range_evict(&vm->svm.gpusvm, &range->base);
+}
+
+/**
+ * xe_svm_range_validate() - Check if the SVM range is valid
+ * @vm: xe_vm pointer
+ * @range: Pointer to the SVM range structure
+ * @tile_mask: Mask representing the tiles to be checked
+ * @devmem_preferred : if true range needs to be in devmem
+ *
+ * The xe_svm_range_validate() function checks if a range is
+ * valid and located in the desired memory region.
+ *
+ * Return: true if the range is valid, false otherwise
+ */
+bool xe_svm_range_validate(struct xe_vm *vm,
+			   struct xe_svm_range *range,
+			   u8 tile_mask, bool devmem_preferred)
+{
+	bool ret;
+
+	xe_svm_notifier_lock(vm);
+
+	ret = (range->tile_present & ~range->tile_invalidated & tile_mask) == tile_mask &&
+	       (devmem_preferred == range->base.flags.has_devmem_pages);
+
+	xe_svm_notifier_unlock(vm);
+
+	return ret;
+}
+
 #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
 static struct xe_vram_region *tile_to_vr(struct xe_tile *tile)
 {
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 9be7bb25725c..3f8c82f9c363 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -83,6 +83,12 @@ int xe_svm_range_get_pages(struct xe_vm *vm, struct xe_svm_range *range,
 bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range, struct xe_vma *vma,
 					bool preferred_region_is_vram);
 
+void xe_svm_range_migrate_to_smem(struct xe_vm *vm, struct xe_svm_range *range);
+
+bool xe_svm_range_validate(struct xe_vm *vm,
+			   struct xe_svm_range *range,
+			   u8 tile_mask, bool devmem_preferred);
+
 /**
  * xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
  * @range: SVM range
@@ -276,6 +282,19 @@ bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range, struct xe_vm
 	return false;
 }
 
+static inline
+void xe_svm_range_migrate_to_smem(struct xe_vm *vm, struct xe_svm_range *range)
+{
+}
+
+static inline
+bool xe_svm_range_validate(struct xe_vm *vm,
+			   struct xe_svm_range *range,
+			   u8 tile_mask, bool devmem_preferred)
+{
+	return false;
+}
+
 #define xe_svm_assert_in_notifier(...) do {} while (0)
 #define xe_svm_range_has_dma_mapping(...) false
 
-- 
2.34.1


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

* [PATCH v6 17/20] drm/gpusvm: Introduce drm_gpusvm_find_vma_start() function
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (15 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 16/20] drm/xe/svm: Add xe_svm_range_validate() and xe_svm_range_migrate_to_smem() Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 15:03   ` Matthew Brost
  2025-04-30 12:19 ` [PATCH v6 18/20] drm/xe/svm: Add xe_svm_find_vma_start() helper Himal Prasad Ghimiray
                   ` (10 subsequent siblings)
  27 siblings, 1 reply; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

The drm_gpusvm_find_vma_start() function is used to determine the starting
address of a CPU VMA within a specified user range. If the range does not
contain any VMA, the function returns ULONG_MAX.

v2
- Rename function as drm_gpusvm_find_vma_start() (Matthew Brost)
- mmget/mmput

Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
 drivers/gpu/drm/drm_gpusvm.c | 32 ++++++++++++++++++++++++++++++++
 include/drm/drm_gpusvm.h     |  5 +++++
 2 files changed, 37 insertions(+)

diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index c94a8d7a293d..48bb29b78b96 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -980,6 +980,38 @@ static void drm_gpusvm_driver_lock_held(struct drm_gpusvm *gpusvm)
 }
 #endif
 
+/**
+ * drm_gpusvm_find_vma_start() - Find start address for first VMA in range
+ * @gpusvm: Pointer to the GPU SVM structure
+ * @start: The inclusive start user address.
+ * @end: The exclusive end user address.
+ *
+ * Returns: The start address of first VMA within the provided range,
+ * ULONG_MAX otherwise. Assumes start_addr < end_addr.
+ */
+unsigned long
+drm_gpusvm_find_vma_start(struct drm_gpusvm *gpusvm,
+			  unsigned long start,
+			  unsigned long end)
+{
+	struct mm_struct *mm = gpusvm->mm;
+	struct vm_area_struct *vma;
+	unsigned long addr = ULONG_MAX;
+
+	mmget(mm);
+	mmap_read_lock(mm);
+
+	vma = find_vma_intersection(mm, start, end);
+	if (vma)
+		addr =  vma->vm_start;
+
+	mmap_read_unlock(mm);
+	mmput(mm);
+
+	return addr;
+}
+EXPORT_SYMBOL_GPL(drm_gpusvm_find_vma_start);
+
 /**
  * drm_gpusvm_range_find_or_insert() - Find or insert GPU SVM range
  * @gpusvm: Pointer to the GPU SVM structure
diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
index eaf704d3d05e..6a5156476bf4 100644
--- a/include/drm/drm_gpusvm.h
+++ b/include/drm/drm_gpusvm.h
@@ -327,6 +327,11 @@ void drm_gpusvm_fini(struct drm_gpusvm *gpusvm);
 
 void drm_gpusvm_free(struct drm_gpusvm *gpusvm);
 
+unsigned long
+drm_gpusvm_find_vma_start(struct drm_gpusvm *gpusvm,
+			  unsigned long start,
+			  unsigned long end);
+
 struct drm_gpusvm_range *
 drm_gpusvm_range_find_or_insert(struct drm_gpusvm *gpusvm,
 				unsigned long fault_addr,
-- 
2.34.1


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

* [PATCH v6 18/20] drm/xe/svm: Add xe_svm_find_vma_start() helper
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (16 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 17/20] drm/gpusvm: Introduce drm_gpusvm_find_vma_start() function Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 16:35   ` Matthew Brost
  2025-04-30 12:19 ` [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges Himal Prasad Ghimiray
                   ` (9 subsequent siblings)
  27 siblings, 1 reply; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

Add helper xe_svm_find_vma_start() function to determine start of cpu
vma in input range.

Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
 drivers/gpu/drm/xe/xe_svm.c | 22 ++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_svm.h |  8 ++++++++
 2 files changed, 30 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index fff3a279e232..727c393d19b8 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -684,6 +684,28 @@ bool xe_svm_range_validate(struct xe_vm *vm,
 	return ret;
 }
 
+/**
+ * xe_svm_find_vma_start - Find start of CPU VMA
+ * @vm: xe_vm pointer
+ * @start: start address
+ * @end: end address
+ * @vma: Pointer to struct xe_vma
+ *
+ *
+ * This function searches for a cpu vma, within the specified
+ * range [start, end] in the given VM. It adjusts the range based on the
+ * xe_vma start and end addresses. If no cpu VMA is found, it returns ULONG_MAX.
+ *
+ * Return: The starting address of the VMA within the range,
+ * or ULONG_MAX if no VMA is found
+ */
+u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 start, u64 end, struct xe_vma *vma)
+{
+	return drm_gpusvm_find_vma_start(&vm->svm.gpusvm,
+					 max(start, xe_vma_start(vma)),
+					 min(end, xe_vma_end(vma)));
+}
+
 #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
 static struct xe_vram_region *tile_to_vr(struct xe_tile *tile)
 {
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 3f8c82f9c363..fe9f6fcaeb3a 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -89,6 +89,8 @@ bool xe_svm_range_validate(struct xe_vm *vm,
 			   struct xe_svm_range *range,
 			   u8 tile_mask, bool devmem_preferred);
 
+u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 addr, u64 end,  struct xe_vma *vma);
+
 /**
  * xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
  * @range: SVM range
@@ -295,6 +297,12 @@ bool xe_svm_range_validate(struct xe_vm *vm,
 	return false;
 }
 
+static inline
+u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 addr, u64 end, struct xe_vma *vma)
+{
+	return ULONG_MAX;
+}
+
 #define xe_svm_assert_in_notifier(...) do {} while (0)
 #define xe_svm_range_has_dma_mapping(...) false
 
-- 
2.34.1


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

* [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (17 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 18/20] drm/xe/svm: Add xe_svm_find_vma_start() helper Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-05-02 13:42   ` Thomas Hellström
  2025-05-12 12:48   ` Matthew Brost
  2025-04-30 12:19 ` [PATCH v6 20/20] drm/xe/vm: Add debug prints for SVM range prefetch Himal Prasad Ghimiray
                   ` (8 subsequent siblings)
  27 siblings, 2 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

This commit adds prefetch support for SVM ranges, utilizing the
existing ioctl vm_bind functionality to achieve this.

v2: rebase

v3:
   - use xa_for_each() instead of manual loop
   - check range is valid and in preferred location before adding to
     xarray
   - Fix naming conventions
   - Fix return condition as -ENODATA instead of -EAGAIN (Matthew Brost)
   - Handle sparsely populated cpu vma range (Matthew Brost)

v4:
   - fix end address to find next cpu vma in case of -ENOENT

v5:
   - Move find next vma logic to drm gpusvm layer
   - Avoid mixing declaration and logic

v6:
  - Use new function names
  - Move eviction logic to prefetch_ranges

Cc: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
 drivers/gpu/drm/xe/xe_pt.c |  58 ++++++++---
 drivers/gpu/drm/xe/xe_vm.c | 197 +++++++++++++++++++++++++++++++++++--
 2 files changed, 234 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index de4e3edda758..f3a99ee4f733 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -1458,6 +1458,7 @@ static int xe_pt_svm_pre_commit(struct xe_migrate_pt_update *pt_update)
 	struct xe_vm *vm = pt_update->vops->vm;
 	struct xe_vma_ops *vops = pt_update->vops;
 	struct xe_vma_op *op;
+	unsigned long i;
 	int err;
 
 	err = xe_pt_pre_commit(pt_update);
@@ -1467,20 +1468,35 @@ static int xe_pt_svm_pre_commit(struct xe_migrate_pt_update *pt_update)
 	xe_svm_notifier_lock(vm);
 
 	list_for_each_entry(op, &vops->list, link) {
-		struct xe_svm_range *range = op->map_range.range;
+		struct xe_svm_range *range = NULL;
 
 		if (op->subop == XE_VMA_SUBOP_UNMAP_RANGE)
 			continue;
 
-		xe_svm_range_debug(range, "PRE-COMMIT");
+		if (op->base.op == DRM_GPUVA_OP_PREFETCH) {
+			xe_assert(vm->xe,
+				  xe_vma_is_cpu_addr_mirror(gpuva_to_vma(op->base.prefetch.va)));
+			xa_for_each(&op->prefetch_range.range, i, range) {
+				xe_svm_range_debug(range, "PRE-COMMIT");
 
-		xe_assert(vm->xe, xe_vma_is_cpu_addr_mirror(op->map_range.vma));
-		xe_assert(vm->xe, op->subop == XE_VMA_SUBOP_MAP_RANGE);
+				if (!xe_svm_range_pages_valid(range)) {
+					xe_svm_range_debug(range, "PRE-COMMIT - RETRY");
+					xe_svm_notifier_unlock(vm);
+					return -ENODATA;
+				}
+			}
+		} else {
+			xe_assert(vm->xe, xe_vma_is_cpu_addr_mirror(op->map_range.vma));
+			xe_assert(vm->xe, op->subop == XE_VMA_SUBOP_MAP_RANGE);
+			range = op->map_range.range;
 
-		if (!xe_svm_range_pages_valid(range)) {
-			xe_svm_range_debug(range, "PRE-COMMIT - RETRY");
-			xe_svm_notifier_unlock(vm);
-			return -EAGAIN;
+			xe_svm_range_debug(range, "PRE-COMMIT");
+
+			if (!xe_svm_range_pages_valid(range)) {
+				xe_svm_range_debug(range, "PRE-COMMIT - RETRY");
+				xe_svm_notifier_unlock(vm);
+				return -EAGAIN;
+			}
 		}
 	}
 
@@ -2065,11 +2081,20 @@ static int op_prepare(struct xe_vm *vm,
 	{
 		struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
 
-		if (xe_vma_is_cpu_addr_mirror(vma))
-			break;
+		if (xe_vma_is_cpu_addr_mirror(vma)) {
+			struct xe_svm_range *range;
+			unsigned long i;
 
-		err = bind_op_prepare(vm, tile, pt_update_ops, vma, false);
-		pt_update_ops->wait_vm_kernel = true;
+			xa_for_each(&op->prefetch_range.range, i, range) {
+				err = bind_range_prepare(vm, tile, pt_update_ops,
+							 vma, range);
+				if (err)
+					return err;
+			}
+		} else {
+			err = bind_op_prepare(vm, tile, pt_update_ops, vma, false);
+			pt_update_ops->wait_vm_kernel = true;
+		}
 		break;
 	}
 	case DRM_GPUVA_OP_DRIVER:
@@ -2273,9 +2298,16 @@ static void op_commit(struct xe_vm *vm,
 	{
 		struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
 
-		if (!xe_vma_is_cpu_addr_mirror(vma))
+		if (xe_vma_is_cpu_addr_mirror(vma)) {
+			struct xe_svm_range *range = NULL;
+			unsigned long i;
+
+			xa_for_each(&op->prefetch_range.range, i, range)
+				range_present_and_invalidated_tile(vm, range, tile->id);
+		} else {
 			bind_op_commit(vm, tile, pt_update_ops, vma, fence,
 				       fence2, false);
+		}
 		break;
 	}
 	case DRM_GPUVA_OP_DRIVER:
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 555ed10dac85..dd5c63ee8720 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -798,10 +798,33 @@ static int xe_vma_ops_alloc(struct xe_vma_ops *vops, bool array_of_binds)
 }
 ALLOW_ERROR_INJECTION(xe_vma_ops_alloc, ERRNO);
 
+static void xe_vma_svm_prefetch_op_fini(struct xe_vma_op *op)
+{
+	struct xe_vma *vma;
+
+	vma = gpuva_to_vma(op->base.prefetch.va);
+
+	if (op->base.op == DRM_GPUVA_OP_PREFETCH && xe_vma_is_cpu_addr_mirror(vma))
+		xa_destroy(&op->prefetch_range.range);
+}
+
+static void xe_vma_svm_prefetch_ops_fini(struct xe_vma_ops *vops)
+{
+	struct xe_vma_op *op;
+
+	if (!(vops->flags & XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH))
+		return;
+
+	list_for_each_entry(op, &vops->list, link)
+		xe_vma_svm_prefetch_op_fini(op);
+}
+
 static void xe_vma_ops_fini(struct xe_vma_ops *vops)
 {
 	int i;
 
+	xe_vma_svm_prefetch_ops_fini(vops);
+
 	for (i = 0; i < XE_MAX_TILES_PER_DEVICE; ++i)
 		kfree(vops->pt_update_ops[i].ops);
 }
@@ -2248,13 +2271,25 @@ static bool __xe_vm_needs_clear_scratch_pages(struct xe_vm *vm, u32 bind_flags)
 	return true;
 }
 
+static void xe_svm_prefetch_gpuva_ops_fini(struct drm_gpuva_ops *ops)
+{
+	struct drm_gpuva_op *__op;
+
+	drm_gpuva_for_each_op(__op, ops) {
+		struct xe_vma_op *op = gpuva_op_to_vma_op(__op);
+
+		xe_vma_svm_prefetch_op_fini(op);
+	}
+}
+
 /*
  * Create operations list from IOCTL arguments, setup operations fields so parse
  * and commit steps are decoupled from IOCTL arguments. This step can fail.
  */
 static struct drm_gpuva_ops *
-vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
-			 u64 bo_offset_or_userptr, u64 addr, u64 range,
+vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_vma_ops *vops,
+			 struct xe_bo *bo, u64 bo_offset_or_userptr,
+			 u64 addr, u64 range,
 			 u32 operation, u32 flags,
 			 u32 prefetch_region, u16 pat_index)
 {
@@ -2262,6 +2297,7 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
 	struct drm_gpuva_ops *ops;
 	struct drm_gpuva_op *__op;
 	struct drm_gpuvm_bo *vm_bo;
+	u64 range_end = addr + range;
 	int err;
 
 	lockdep_assert_held_write(&vm->lock);
@@ -2323,14 +2359,77 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
 			op->map.invalidate_on_bind =
 				__xe_vm_needs_clear_scratch_pages(vm, flags);
 		} else if (__op->op == DRM_GPUVA_OP_PREFETCH) {
-			op->prefetch.region = prefetch_region;
-		}
+			struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
+			struct xe_svm_range *svm_range;
+			struct drm_gpusvm_ctx ctx;
+			struct xe_tile *tile;
+			u8 id, tile_mask = 0;
+			u32 i;
+
+			if (!xe_vma_is_cpu_addr_mirror(vma)) {
+				op->prefetch.region = prefetch_region;
+				break;
+			}
+
+			ctx.read_only = xe_vma_read_only(vma);
+			ctx.devmem_possible = IS_DGFX(vm->xe) &&
+					      IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR);
+
+			for_each_tile(tile, vm->xe, id)
+				tile_mask |= 0x1 << id;
+
+			xa_init_flags(&op->prefetch_range.range, XA_FLAGS_ALLOC);
+			op->prefetch_range.region = prefetch_region;
+			op->prefetch_range.ranges_count = 0;
+alloc_next_range:
+			svm_range = xe_svm_range_find_or_insert(vm, addr, vma, &ctx);
+
+			if (PTR_ERR(svm_range) == -ENOENT) {
+				u64 ret = xe_svm_find_vma_start(vm, addr, range_end, vma);
+
+				addr = ret == ULONG_MAX ? 0 : ret;
+				if (addr)
+					goto alloc_next_range;
+				else
+					goto print_op_label;
+			}
+
+			if (IS_ERR(svm_range)) {
+				err = PTR_ERR(svm_range);
+				goto unwind_prefetch_ops;
+			}
+
+			if (xe_svm_range_validate(vm, svm_range, tile_mask, !!prefetch_region))
+				goto check_next_range;
+
+			err = xa_alloc(&op->prefetch_range.range,
+				       &i, svm_range, xa_limit_32b,
+				       GFP_KERNEL);
 
+			if (err)
+				goto unwind_prefetch_ops;
+
+			op->prefetch_range.ranges_count++;
+			vops->flags |= XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH;
+check_next_range:
+			if (range_end > xe_svm_range_end(svm_range) &&
+			    xe_svm_range_end(svm_range) < xe_vma_end(vma)) {
+				addr = xe_svm_range_end(svm_range);
+				goto alloc_next_range;
+			}
+		}
+print_op_label:
 		print_op(vm->xe, __op);
 	}
 
 	return ops;
+
+unwind_prefetch_ops:
+	xe_svm_prefetch_gpuva_ops_fini(ops);
+	drm_gpuva_ops_free(&vm->gpuvm, ops);
+	return ERR_PTR(err);
 }
+
 ALLOW_ERROR_INJECTION(vm_bind_ioctl_ops_create, ERRNO);
 
 static struct xe_vma *new_vma(struct xe_vm *vm, struct drm_gpuva_op_map *op,
@@ -2645,8 +2744,12 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 					return err;
 			}
 
-			if (!xe_vma_is_cpu_addr_mirror(vma))
+			if (xe_vma_is_cpu_addr_mirror(vma))
+				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask,
+							      op->prefetch_range.ranges_count);
+			else
 				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask, 1);
+
 			break;
 		default:
 			drm_warn(&vm->xe->drm, "NOT POSSIBLE");
@@ -2772,6 +2875,56 @@ static int check_ufence(struct xe_vma *vma)
 	return 0;
 }
 
+static int prefetch_ranges(struct xe_vm *vm, struct xe_vma_op *op)
+{
+	bool devmem_possible = IS_DGFX(vm->xe) && IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR);
+	struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
+	int err = 0;
+
+	struct xe_svm_range *svm_range;
+	struct drm_gpusvm_ctx ctx;
+	struct xe_tile *tile;
+	unsigned long i;
+	u32 region;
+
+	if (!xe_vma_is_cpu_addr_mirror(vma))
+		return 0;
+
+	region = op->prefetch_range.region;
+
+	ctx.read_only = xe_vma_read_only(vma);
+	ctx.devmem_possible = devmem_possible;
+	ctx.check_pages_threshold = devmem_possible ? SZ_64K : 0;
+	ctx.devmem_only = region && devmem_possible;
+	ctx.timeslice_ms = 0;
+
+	/* TODO: Threading the migration */
+	xa_for_each(&op->prefetch_range.range, i, svm_range) {
+		if (!region)
+			xe_svm_range_migrate_to_smem(vm, svm_range);
+
+		if (xe_svm_range_needs_migrate_to_vram(svm_range, vma, region)) {
+			tile = &vm->xe->tiles[region_to_mem_type[region] - XE_PL_VRAM0];
+			err = xe_svm_alloc_vram(vm, tile, svm_range, &ctx);
+			if (err) {
+				drm_dbg(&vm->xe->drm, "VRAM allocation failed, retry from userspace, asid=%u, gpusvm=%p, errno=%pe\n",
+					vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
+				return -ENODATA;
+			}
+		}
+
+		err = xe_svm_range_get_pages(vm, svm_range, &ctx);
+		if (err) {
+			if (err == -EOPNOTSUPP || err == -EFAULT || err == -EPERM)
+				err = -ENODATA;
+			drm_dbg(&vm->xe->drm, "Get pages failed, asid=%u, gpusvm=%p, errno=%pe\n",
+				vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
+			return err;
+		}
+	}
+	return err;
+}
+
 static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm,
 			    struct xe_vma_op *op)
 {
@@ -2809,7 +2962,12 @@ static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm,
 	case DRM_GPUVA_OP_PREFETCH:
 	{
 		struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
-		u32 region = op->prefetch.region;
+		u32 region;
+
+		if (xe_vma_is_cpu_addr_mirror(vma))
+			region = op->prefetch_range.region;
+		else
+			region = op->prefetch.region;
 
 		xe_assert(vm->xe, region <= ARRAY_SIZE(region_to_mem_type));
 
@@ -2828,6 +2986,25 @@ static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm,
 	return err;
 }
 
+static int vm_bind_ioctl_ops_prefetch_ranges(struct xe_vm *vm, struct xe_vma_ops *vops)
+{
+	struct xe_vma_op *op;
+	int err;
+
+	if (!(vops->flags & XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH))
+		return 0;
+
+	list_for_each_entry(op, &vops->list, link) {
+		if (op->base.op  == DRM_GPUVA_OP_PREFETCH) {
+			err = prefetch_ranges(vm, op);
+			if (err)
+				return err;
+		}
+	}
+
+	return 0;
+}
+
 static int vm_bind_ioctl_ops_lock_and_prep(struct drm_exec *exec,
 					   struct xe_vm *vm,
 					   struct xe_vma_ops *vops)
@@ -3478,7 +3655,7 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 		u32 prefetch_region = bind_ops[i].prefetch_mem_region_instance;
 		u16 pat_index = bind_ops[i].pat_index;
 
-		ops[i] = vm_bind_ioctl_ops_create(vm, bos[i], obj_offset,
+		ops[i] = vm_bind_ioctl_ops_create(vm, &vops, bos[i], obj_offset,
 						  addr, range, op, flags,
 						  prefetch_region, pat_index);
 		if (IS_ERR(ops[i])) {
@@ -3511,6 +3688,10 @@ 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_prefetch_ranges(vm, &vops);
+	if (err)
+		goto unwind_ops;
+
 	fence = vm_bind_ioctl_ops_execute(vm, &vops);
 	if (IS_ERR(fence))
 		err = PTR_ERR(fence);
@@ -3580,7 +3761,7 @@ struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo,
 
 	xe_vma_ops_init(&vops, vm, q, NULL, 0);
 
-	ops = vm_bind_ioctl_ops_create(vm, bo, 0, addr, bo->size,
+	ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, bo->size,
 				       DRM_XE_VM_BIND_OP_MAP, 0, 0,
 				       vm->xe->pat.idx[cache_lvl]);
 	if (IS_ERR(ops)) {
-- 
2.34.1


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

* [PATCH v6 20/20] drm/xe/vm: Add debug prints for SVM range prefetch
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (18 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges Himal Prasad Ghimiray
@ 2025-04-30 12:19 ` Himal Prasad Ghimiray
  2025-04-30 12:45 ` ✓ CI.Patch_applied: success for Prefetch Support for svm ranges (rev5) Patchwork
                   ` (7 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Himal Prasad Ghimiray @ 2025-04-30 12:19 UTC (permalink / raw)
  To: intel-xe; +Cc: matthew.brost, thomas.hellstrom, Himal Prasad Ghimiray

Introduce debug logs for the prefetch operation of SVM ranges.

Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_vm.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index dd5c63ee8720..abadd2097d13 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -2399,8 +2399,10 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_vma_ops *vops,
 				goto unwind_prefetch_ops;
 			}
 
-			if (xe_svm_range_validate(vm, svm_range, tile_mask, !!prefetch_region))
+			if (xe_svm_range_validate(vm, svm_range, tile_mask, !!prefetch_region)) {
+				xe_svm_range_debug(svm_range, "PREFETCH - RANGE IS VALID");
 				goto check_next_range;
+			}
 
 			err = xa_alloc(&op->prefetch_range.range,
 				       &i, svm_range, xa_limit_32b,
@@ -2411,6 +2413,7 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_vma_ops *vops,
 
 			op->prefetch_range.ranges_count++;
 			vops->flags |= XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH;
+			xe_svm_range_debug(svm_range, "PREFETCH - RANGE CREATED");
 check_next_range:
 			if (range_end > xe_svm_range_end(svm_range) &&
 			    xe_svm_range_end(svm_range) < xe_vma_end(vma)) {
@@ -2911,6 +2914,7 @@ static int prefetch_ranges(struct xe_vm *vm, struct xe_vma_op *op)
 					vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
 				return -ENODATA;
 			}
+			xe_svm_range_debug(svm_range, "PREFETCH - RANGE MIGRATED TO VRAM");
 		}
 
 		err = xe_svm_range_get_pages(vm, svm_range, &ctx);
@@ -2921,6 +2925,7 @@ static int prefetch_ranges(struct xe_vm *vm, struct xe_vma_op *op)
 				vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
 			return err;
 		}
+		xe_svm_range_debug(svm_range, "PREFETCH - RANGE GET PAGES DONE");
 	}
 	return err;
 }
-- 
2.34.1


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

* ✓ CI.Patch_applied: success for Prefetch Support for svm ranges (rev5)
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (19 preceding siblings ...)
  2025-04-30 12:19 ` [PATCH v6 20/20] drm/xe/vm: Add debug prints for SVM range prefetch Himal Prasad Ghimiray
@ 2025-04-30 12:45 ` Patchwork
  2025-04-30 12:45 ` ✓ CI.checkpatch: " Patchwork
                   ` (6 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Patchwork @ 2025-04-30 12:45 UTC (permalink / raw)
  To: Himal Prasad Ghimiray; +Cc: intel-xe

== Series Details ==

Series: Prefetch Support for svm ranges (rev5)
URL   : https://patchwork.freedesktop.org/series/146079/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: fc3ad0830399 drm-tip: 2025y-04m-30d-09h-29m-59s UTC integration manifest
=== git am output follows ===
Applying: drm/gpusvm: Introduce devmem_only flag for allocation
Applying: drm/xe: Strict migration policy for atomic SVM faults
Applying: drm/gpusvm: Add timeslicing support to GPU SVM
Applying: drm/xe: Timeslice GPU on atomic SVM fault
Applying: drm/xe: Add atomic_svm_timeslice_ms debugfs entry
Applying: drm/xe: Introduce xe_vma_op_prefetch_range struct for prefetch of ranges
Applying: drm/xe: Make xe_svm_alloc_vram public
Applying: drm/xe/svm: Helper to add tile masks to svm ranges
Applying: drm/xe/svm: Make to_xe_range a public function
Applying: drm/xe/svm: Make xe_svm_range_* end/start/size public
Applying: drm/xe/vm: Update xe_vma_ops_incr_pt_update_ops to take an increment value
Applying: drm/xe/vm: Add an identifier in xe_vma_ops for svm prefetch
Applying: drm/xe: Rename lookup_vma function to xe_find_vma_by_addr
Applying: drm/xe/svm: Refactor usage of drm_gpusvm* function in xe_svm
Applying: drm/xe/svm: Make xe_svm_range_needs_migrate_to_vram() public
Applying: drm/xe/svm: Add xe_svm_range_validate() and xe_svm_range_migrate_to_smem()
Applying: drm/gpusvm: Introduce drm_gpusvm_find_vma_start() function
Applying: drm/xe/svm: Add xe_svm_find_vma_start() helper
Applying: drm/xe/svm: Implement prefetch support for SVM ranges
Applying: drm/xe/vm: Add debug prints for SVM range prefetch



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

* ✓ CI.checkpatch: success for Prefetch Support for svm ranges (rev5)
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (20 preceding siblings ...)
  2025-04-30 12:45 ` ✓ CI.Patch_applied: success for Prefetch Support for svm ranges (rev5) Patchwork
@ 2025-04-30 12:45 ` Patchwork
  2025-04-30 12:46 ` ✓ CI.KUnit: " Patchwork
                   ` (5 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Patchwork @ 2025-04-30 12:45 UTC (permalink / raw)
  To: Himal Prasad Ghimiray; +Cc: intel-xe

== Series Details ==

Series: Prefetch Support for svm ranges (rev5)
URL   : https://patchwork.freedesktop.org/series/146079/
State : success

== 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
202708c00696422fd217223bb679a353a5936e23
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit ad4263b95434473e51e8a915ab881accb326b05d
Author: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Date:   Wed Apr 30 17:49:12 2025 +0530

    drm/xe/vm: Add debug prints for SVM range prefetch
    
    Introduce debug logs for the prefetch operation of SVM ranges.
    
    Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
    Reviewed-by: Matthew Brost <matthew.brost@intel.com>
+ /mt/dim checkpatch fc3ad08303990b2481cc45a6103ed79935dd3797 drm-intel
f99c0c7397c4 drm/gpusvm: Introduce devmem_only flag for allocation
26ab9204de1b drm/xe: Strict migration policy for atomic SVM faults
3b2f5a7523fc drm/gpusvm: Add timeslicing support to GPU SVM
5613134d3e80 drm/xe: Timeslice GPU on atomic SVM fault
5d1d88ed2eba drm/xe: Add atomic_svm_timeslice_ms debugfs entry
3e898445edd4 drm/xe: Introduce xe_vma_op_prefetch_range struct for prefetch of ranges
727bd3546f1f drm/xe: Make xe_svm_alloc_vram public
4a5d61f89957 drm/xe/svm: Helper to add tile masks to svm ranges
5cacebc64875 drm/xe/svm: Make to_xe_range a public function
4404f14b1e92 drm/xe/svm: Make xe_svm_range_* end/start/size public
fe4826930ba1 drm/xe/vm: Update xe_vma_ops_incr_pt_update_ops to take an increment value
092f9241b204 drm/xe/vm: Add an identifier in xe_vma_ops for svm prefetch
d458f95ab493 drm/xe: Rename lookup_vma function to xe_find_vma_by_addr
a51fc110257f drm/xe/svm: Refactor usage of drm_gpusvm* function in xe_svm
6353c2903565 drm/xe/svm: Make xe_svm_range_needs_migrate_to_vram() public
b90712b21a82 drm/xe/svm: Add xe_svm_range_validate() and xe_svm_range_migrate_to_smem()
2da12c0a7937 drm/gpusvm: Introduce drm_gpusvm_find_vma_start() function
71ece3db9f5b drm/xe/svm: Add xe_svm_find_vma_start() helper
bd9d1baba3dd drm/xe/svm: Implement prefetch support for SVM ranges
ad4263b95434 drm/xe/vm: Add debug prints for SVM range prefetch



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

* ✓ CI.KUnit: success for Prefetch Support for svm ranges (rev5)
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (21 preceding siblings ...)
  2025-04-30 12:45 ` ✓ CI.checkpatch: " Patchwork
@ 2025-04-30 12:46 ` Patchwork
  2025-04-30 13:06 ` ✓ CI.Build: " Patchwork
                   ` (4 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Patchwork @ 2025-04-30 12:46 UTC (permalink / raw)
  To: Himal Prasad Ghimiray; +Cc: intel-xe

== Series Details ==

Series: Prefetch Support for svm ranges (rev5)
URL   : https://patchwork.freedesktop.org/series/146079/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[12:45:42] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:45:46] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[12:46:13] Starting KUnit Kernel (1/1)...
[12:46:13] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:46:13] ================== guc_buf (11 subtests) ===================
[12:46:13] [PASSED] test_smallest
[12:46:13] [PASSED] test_largest
[12:46:13] [PASSED] test_granular
[12:46:13] [PASSED] test_unique
[12:46:13] [PASSED] test_overlap
[12:46:13] [PASSED] test_reusable
[12:46:13] [PASSED] test_too_big
[12:46:13] [PASSED] test_flush
[12:46:13] [PASSED] test_lookup
[12:46:13] [PASSED] test_data
[12:46:13] [PASSED] test_class
[12:46:13] ===================== [PASSED] guc_buf =====================
[12:46:13] =================== guc_dbm (7 subtests) ===================
[12:46:13] [PASSED] test_empty
[12:46:13] [PASSED] test_default
[12:46:13] ======================== test_size  ========================
[12:46:13] [PASSED] 4
[12:46:13] [PASSED] 8
[12:46:13] [PASSED] 32
[12:46:13] [PASSED] 256
[12:46:13] ==================== [PASSED] test_size ====================
[12:46:13] ======================= test_reuse  ========================
[12:46:13] [PASSED] 4
[12:46:13] [PASSED] 8
[12:46:13] [PASSED] 32
[12:46:13] [PASSED] 256
[12:46:13] =================== [PASSED] test_reuse ====================
[12:46:13] =================== test_range_overlap  ====================
[12:46:13] [PASSED] 4
[12:46:13] [PASSED] 8
[12:46:13] [PASSED] 32
[12:46:13] [PASSED] 256
[12:46:13] =============== [PASSED] test_range_overlap ================
[12:46:13] =================== test_range_compact  ====================
[12:46:13] [PASSED] 4
[12:46:13] [PASSED] 8
[12:46:13] [PASSED] 32
[12:46:13] [PASSED] 256
[12:46:13] =============== [PASSED] test_range_compact ================
[12:46:13] ==================== test_range_spare  =====================
[12:46:13] [PASSED] 4
[12:46:13] [PASSED] 8
[12:46:13] [PASSED] 32
[12:46:13] [PASSED] 256
[12:46:13] ================ [PASSED] test_range_spare =================
[12:46:13] ===================== [PASSED] guc_dbm =====================
[12:46:13] =================== guc_idm (6 subtests) ===================
[12:46:13] [PASSED] bad_init
[12:46:13] [PASSED] no_init
[12:46:13] [PASSED] init_fini
[12:46:13] [PASSED] check_used
[12:46:13] [PASSED] check_quota
[12:46:13] [PASSED] check_all
[12:46:13] ===================== [PASSED] guc_idm =====================
[12:46:13] ================== no_relay (3 subtests) ===================
[12:46:13] [PASSED] xe_drops_guc2pf_if_not_ready
[12:46:13] [PASSED] xe_drops_guc2vf_if_not_ready
[12:46:13] [PASSED] xe_rejects_send_if_not_ready
[12:46:13] ==================== [PASSED] no_relay =====================
[12:46:13] ================== pf_relay (14 subtests) ==================
[12:46:13] [PASSED] pf_rejects_guc2pf_too_short
[12:46:13] [PASSED] pf_rejects_guc2pf_too_long
[12:46:13] [PASSED] pf_rejects_guc2pf_no_payload
[12:46:13] [PASSED] pf_fails_no_payload
[12:46:13] [PASSED] pf_fails_bad_origin
[12:46:13] [PASSED] pf_fails_bad_type
[12:46:13] [PASSED] pf_txn_reports_error
[12:46:13] [PASSED] pf_txn_sends_pf2guc
[12:46:13] [PASSED] pf_sends_pf2guc
[12:46:13] [SKIPPED] pf_loopback_nop
[12:46:13] [SKIPPED] pf_loopback_echo
[12:46:13] [SKIPPED] pf_loopback_fail
[12:46:13] [SKIPPED] pf_loopback_busy
[12:46:13] [SKIPPED] pf_loopback_retry
[12:46:13] ==================== [PASSED] pf_relay =====================
[12:46:13] ================== vf_relay (3 subtests) ===================
[12:46:13] [PASSED] vf_rejects_guc2vf_too_short
[12:46:13] [PASSED] vf_rejects_guc2vf_too_long
[12:46:13] [PASSED] vf_rejects_guc2vf_no_payload
[12:46:13] ==================== [PASSED] vf_relay =====================
[12:46:13] ================= pf_service (11 subtests) =================
[12:46:13] [PASSED] pf_negotiate_any
[12:46:13] [PASSED] pf_negotiate_base_match
[12:46:13] [PASSED] pf_negotiate_base_newer
[12:46:13] [PASSED] pf_negotiate_base_next
[12:46:13] [SKIPPED] pf_negotiate_base_older
[12:46:13] [PASSED] pf_negotiate_base_prev
[12:46:13] [PASSED] pf_negotiate_latest_match
[12:46:13] [PASSED] pf_negotiate_latest_newer
[12:46:13] [PASSED] pf_negotiate_latest_next
[12:46:13] [SKIPPED] pf_negotiate_latest_older
[12:46:13] [SKIPPED] pf_negotiate_latest_prev
[12:46:13] =================== [PASSED] pf_service ====================
[12:46:13] ===================== lmtt (1 subtest) =====================
[12:46:13] ======================== test_ops  =========================
[12:46:13] [PASSED] 2-level
[12:46:13] [PASSED] multi-level
[12:46:13] ==================== [PASSED] test_ops =====================
[12:46:13] ====================== [PASSED] lmtt =======================
[12:46:13] =================== xe_mocs (2 subtests) ===================
[12:46:13] ================ xe_live_mocs_kernel_kunit  ================
[12:46:13] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[12:46:13] ================ xe_live_mocs_reset_kunit  =================
[12:46:13] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[12:46:13] ==================== [SKIPPED] xe_mocs =====================
[12:46:13] ================= xe_migrate (2 subtests) ==================
[12:46:13] ================= xe_migrate_sanity_kunit  =================
[12:46:13] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[12:46:13] ================== xe_validate_ccs_kunit  ==================
[12:46:13] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[12:46:13] =================== [SKIPPED] xe_migrate ===================
[12:46:13] ================== xe_dma_buf (1 subtest) ==================
[12:46:13] ==================== xe_dma_buf_kunit  =====================
[12:46:13] ================ [SKIPPED] xe_dma_buf_kunit ================
[12:46:13] =================== [SKIPPED] xe_dma_buf ===================
[12:46:13] ================= xe_bo_shrink (1 subtest) =================
[12:46:13] =================== xe_bo_shrink_kunit  ====================
[12:46:13] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[12:46:13] ================== [SKIPPED] xe_bo_shrink ==================
[12:46:13] ==================== xe_bo (2 subtests) ====================
[12:46:13] ================== xe_ccs_migrate_kunit  ===================
[12:46:13] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[12:46:13] ==================== xe_bo_evict_kunit  ====================
[12:46:13] =============== [SKIPPED] xe_bo_evict_kunit ================
[12:46:13] ===================== [SKIPPED] xe_bo ======================
[12:46:13] ==================== args (11 subtests) ====================
[12:46:13] [PASSED] count_args_test
[12:46:13] [PASSED] call_args_example
[12:46:13] [PASSED] call_args_test
[12:46:13] [PASSED] drop_first_arg_example
[12:46:13] [PASSED] drop_first_arg_test
[12:46:13] [PASSED] first_arg_example
[12:46:13] [PASSED] first_arg_test
[12:46:13] [PASSED] last_arg_example
[12:46:13] [PASSED] last_arg_test
[12:46:13] [PASSED] pick_arg_example
[12:46:13] [PASSED] sep_comma_example
[12:46:13] ====================== [PASSED] args =======================
[12:46:13] =================== xe_pci (2 subtests) ====================
[12:46:13] [PASSED] xe_gmdid_graphics_ip
[12:46:13] [PASSED] xe_gmdid_media_ip
[12:46:13] ===================== [PASSED] xe_pci ======================
[12:46:13] =================== xe_rtp (2 subtests) ====================
[12:46:13] =============== xe_rtp_process_to_sr_tests  ================
[12:46:13] [PASSED] coalesce-same-reg
[12:46:13] [PASSED] no-match-no-add
[12:46:13] [PASSED] match-or
[12:46:13] [PASSED] match-or-xfail
[12:46:13] [PASSED] no-match-no-add-multiple-rules
[12:46:13] [PASSED] two-regs-two-entries
[12:46:13] [PASSED] clr-one-set-other
[12:46:13] [PASSED] set-field
[12:46:13] [PASSED] conflict-duplicate
[12:46:13] [PASSED] conflict-not-disjoint
stty: 'standard input': Inappropriate ioctl for device
[12:46:13] [PASSED] conflict-reg-type
[12:46:13] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[12:46:13] ================== xe_rtp_process_tests  ===================
[12:46:13] [PASSED] active1
[12:46:13] [PASSED] active2
[12:46:13] [PASSED] active-inactive
[12:46:13] [PASSED] inactive-active
[12:46:13] [PASSED] inactive-1st_or_active-inactive
[12:46:13] [PASSED] inactive-2nd_or_active-inactive
[12:46:13] [PASSED] inactive-last_or_active-inactive
[12:46:13] [PASSED] inactive-no_or_active-inactive
[12:46:13] ============== [PASSED] xe_rtp_process_tests ===============
[12:46:13] ===================== [PASSED] xe_rtp ======================
[12:46:13] ==================== xe_wa (1 subtest) =====================
[12:46:13] ======================== xe_wa_gt  =========================
[12:46:13] [PASSED] TIGERLAKE (B0)
[12:46:13] [PASSED] DG1 (A0)
[12:46:13] [PASSED] DG1 (B0)
[12:46:13] [PASSED] ALDERLAKE_S (A0)
[12:46:13] [PASSED] ALDERLAKE_S (B0)
[12:46:13] [PASSED] ALDERLAKE_S (C0)
[12:46:13] [PASSED] ALDERLAKE_S (D0)
[12:46:13] [PASSED] ALDERLAKE_P (A0)
[12:46:13] [PASSED] ALDERLAKE_P (B0)
[12:46:13] [PASSED] ALDERLAKE_P (C0)
[12:46:13] [PASSED] ALDERLAKE_S_RPLS (D0)
[12:46:13] [PASSED] ALDERLAKE_P_RPLU (E0)
[12:46:13] [PASSED] DG2_G10 (C0)
[12:46:13] [PASSED] DG2_G11 (B1)
[12:46:13] [PASSED] DG2_G12 (A1)
[12:46:13] [PASSED] METEORLAKE (g:A0, m:A0)
[12:46:13] [PASSED] METEORLAKE (g:A0, m:A0)
[12:46:13] [PASSED] METEORLAKE (g:A0, m:A0)
[12:46:13] [PASSED] LUNARLAKE (g:A0, m:A0)
[12:46:13] [PASSED] LUNARLAKE (g:B0, m:A0)
[12:46:13] [PASSED] BATTLEMAGE (g:A0, m:A1)
[12:46:13] ==================== [PASSED] xe_wa_gt =====================
[12:46:13] ====================== [PASSED] xe_wa ======================
[12:46:13] ============================================================
[12:46:13] Testing complete. Ran 133 tests: passed: 117, skipped: 16
[12:46:13] Elapsed time: 30.924s total, 4.240s configuring, 26.317s building, 0.320s running

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

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[12:46:36] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:46:38] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[12:46:46] Starting KUnit Kernel (1/1)...
[12:46:46] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:46:46] ================= ttm_device (5 subtests) ==================
[12:46:46] [PASSED] ttm_device_init_basic
[12:46:46] [PASSED] ttm_device_init_multiple
[12:46:46] [PASSED] ttm_device_fini_basic
[12:46:46] [PASSED] ttm_device_init_no_vma_man
[12:46:46] ================== ttm_device_init_pools  ==================
[12:46:46] [PASSED] No DMA allocations, no DMA32 required
[12:46:46] [PASSED] DMA allocations, DMA32 required
[12:46:46] [PASSED] No DMA allocations, DMA32 required
[12:46:46] [PASSED] DMA allocations, no DMA32 required
[12:46:46] ============== [PASSED] ttm_device_init_pools ==============
[12:46:46] =================== [PASSED] ttm_device ====================
[12:46:46] ================== ttm_pool (8 subtests) ===================
[12:46:46] ================== ttm_pool_alloc_basic  ===================
[12:46:46] [PASSED] One page
[12:46:46] [PASSED] More than one page
[12:46:46] [PASSED] Above the allocation limit
[12:46:46] [PASSED] One page, with coherent DMA mappings enabled
[12:46:46] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[12:46:46] ============== [PASSED] ttm_pool_alloc_basic ===============
[12:46:46] ============== ttm_pool_alloc_basic_dma_addr  ==============
[12:46:46] [PASSED] One page
[12:46:46] [PASSED] More than one page
[12:46:46] [PASSED] Above the allocation limit
[12:46:46] [PASSED] One page, with coherent DMA mappings enabled
[12:46:46] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[12:46:46] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[12:46:46] [PASSED] ttm_pool_alloc_order_caching_match
[12:46:46] [PASSED] ttm_pool_alloc_caching_mismatch
[12:46:46] [PASSED] ttm_pool_alloc_order_mismatch
[12:46:46] [PASSED] ttm_pool_free_dma_alloc
[12:46:46] [PASSED] ttm_pool_free_no_dma_alloc
[12:46:46] [PASSED] ttm_pool_fini_basic
[12:46:46] ==================== [PASSED] ttm_pool =====================
[12:46:46] ================ ttm_resource (8 subtests) =================
[12:46:46] ================= ttm_resource_init_basic  =================
[12:46:46] [PASSED] Init resource in TTM_PL_SYSTEM
[12:46:46] [PASSED] Init resource in TTM_PL_VRAM
[12:46:46] [PASSED] Init resource in a private placement
[12:46:46] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[12:46:46] ============= [PASSED] ttm_resource_init_basic =============
[12:46:46] [PASSED] ttm_resource_init_pinned
[12:46:46] [PASSED] ttm_resource_fini_basic
[12:46:46] [PASSED] ttm_resource_manager_init_basic
[12:46:46] [PASSED] ttm_resource_manager_usage_basic
[12:46:46] [PASSED] ttm_resource_manager_set_used_basic
[12:46:46] [PASSED] ttm_sys_man_alloc_basic
[12:46:46] [PASSED] ttm_sys_man_free_basic
[12:46:46] ================== [PASSED] ttm_resource ===================
[12:46:46] =================== ttm_tt (15 subtests) ===================
[12:46:46] ==================== ttm_tt_init_basic  ====================
[12:46:46] [PASSED] Page-aligned size
[12:46:46] [PASSED] Extra pages requested
[12:46:46] ================ [PASSED] ttm_tt_init_basic ================
[12:46:46] [PASSED] ttm_tt_init_misaligned
[12:46:46] [PASSED] ttm_tt_fini_basic
[12:46:46] [PASSED] ttm_tt_fini_sg
[12:46:46] [PASSED] ttm_tt_fini_shmem
[12:46:46] [PASSED] ttm_tt_create_basic
[12:46:46] [PASSED] ttm_tt_create_invalid_bo_type
[12:46:46] [PASSED] ttm_tt_create_ttm_exists
[12:46:46] [PASSED] ttm_tt_create_failed
[12:46:46] [PASSED] ttm_tt_destroy_basic
[12:46:46] [PASSED] ttm_tt_populate_null_ttm
[12:46:46] [PASSED] ttm_tt_populate_populated_ttm
[12:46:46] [PASSED] ttm_tt_unpopulate_basic
[12:46:46] [PASSED] ttm_tt_unpopulate_empty_ttm
[12:46:46] [PASSED] ttm_tt_swapin_basic
[12:46:46] ===================== [PASSED] ttm_tt ======================
[12:46:46] =================== ttm_bo (14 subtests) ===================
[12:46:46] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[12:46:46] [PASSED] Cannot be interrupted and sleeps
[12:46:46] [PASSED] Cannot be interrupted, locks straight away
[12:46:46] [PASSED] Can be interrupted, sleeps
[12:46:46] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[12:46:46] [PASSED] ttm_bo_reserve_locked_no_sleep
[12:46:46] [PASSED] ttm_bo_reserve_no_wait_ticket
[12:46:46] [PASSED] ttm_bo_reserve_double_resv
[12:46:46] [PASSED] ttm_bo_reserve_interrupted
[12:46:46] [PASSED] ttm_bo_reserve_deadlock
[12:46:46] [PASSED] ttm_bo_unreserve_basic
[12:46:46] [PASSED] ttm_bo_unreserve_pinned
[12:46:46] [PASSED] ttm_bo_unreserve_bulk
[12:46:46] [PASSED] ttm_bo_put_basic
[12:46:46] [PASSED] ttm_bo_put_shared_resv
[12:46:46] [PASSED] ttm_bo_pin_basic
[12:46:46] [PASSED] ttm_bo_pin_unpin_resource
[12:46:46] [PASSED] ttm_bo_multiple_pin_one_unpin
[12:46:46] ===================== [PASSED] ttm_bo ======================
[12:46:46] ============== ttm_bo_validate (22 subtests) ===============
[12:46:46] ============== ttm_bo_init_reserved_sys_man  ===============
[12:46:46] [PASSED] Buffer object for userspace
[12:46:46] [PASSED] Kernel buffer object
[12:46:46] [PASSED] Shared buffer object
[12:46:46] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[12:46:46] ============== ttm_bo_init_reserved_mock_man  ==============
[12:46:46] [PASSED] Buffer object for userspace
[12:46:46] [PASSED] Kernel buffer object
[12:46:46] [PASSED] Shared buffer object
[12:46:46] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[12:46:46] [PASSED] ttm_bo_init_reserved_resv
[12:46:46] ================== ttm_bo_validate_basic  ==================
[12:46:46] [PASSED] Buffer object for userspace
[12:46:46] [PASSED] Kernel buffer object
[12:46:46] [PASSED] Shared buffer object
[12:46:46] ============== [PASSED] ttm_bo_validate_basic ==============
[12:46:46] [PASSED] ttm_bo_validate_invalid_placement
[12:46:46] ============= ttm_bo_validate_same_placement  ==============
[12:46:46] [PASSED] System manager
[12:46:46] [PASSED] VRAM manager
[12:46:46] ========= [PASSED] ttm_bo_validate_same_placement ==========
[12:46:46] [PASSED] ttm_bo_validate_failed_alloc
[12:46:46] [PASSED] ttm_bo_validate_pinned
[12:46:46] [PASSED] ttm_bo_validate_busy_placement
[12:46:46] ================ ttm_bo_validate_multihop  =================
[12:46:46] [PASSED] Buffer object for userspace
[12:46:46] [PASSED] Kernel buffer object
[12:46:46] [PASSED] Shared buffer object
[12:46:46] ============ [PASSED] ttm_bo_validate_multihop =============
[12:46:46] ========== ttm_bo_validate_no_placement_signaled  ==========
[12:46:46] [PASSED] Buffer object in system domain, no page vector
[12:46:46] [PASSED] Buffer object in system domain with an existing page vector
[12:46:46] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[12:46:46] ======== ttm_bo_validate_no_placement_not_signaled  ========
[12:46:46] [PASSED] Buffer object for userspace
[12:46:46] [PASSED] Kernel buffer object
[12:46:46] [PASSED] Shared buffer object
[12:46:46] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[12:46:46] [PASSED] ttm_bo_validate_move_fence_signaled
[12:46:46] ========= ttm_bo_validate_move_fence_not_signaled  =========
[12:46:46] [PASSED] Waits for GPU
[12:46:46] [PASSED] Tries to lock straight away
[12:46:46] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[12:46:46] [PASSED] ttm_bo_validate_swapout
[12:46:46] [PASSED] ttm_bo_validate_happy_evict
[12:46:46] [PASSED] ttm_bo_validate_all_pinned_evict
[12:46:46] [PASSED] ttm_bo_validate_allowed_only_evict
[12:46:46] [PASSED] ttm_bo_validate_deleted_evict
[12:46:46] [PASSED] ttm_bo_validate_busy_domain_evict
[12:46:46] [PASSED] ttm_bo_validate_evict_gutting
[12:46:46] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[12:46:46] ================= [PASSED] ttm_bo_validate =================
[12:46:46] ============================================================
[12:46:46] Testing complete. Ran 102 tests: passed: 102
[12:46:46] Elapsed time: 10.234s total, 1.683s configuring, 7.934s building, 0.532s running

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



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

* ✓ CI.Build: success for Prefetch Support for svm ranges (rev5)
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (22 preceding siblings ...)
  2025-04-30 12:46 ` ✓ CI.KUnit: " Patchwork
@ 2025-04-30 13:06 ` Patchwork
  2025-04-30 13:08 ` ✓ CI.Hooks: " Patchwork
                   ` (3 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Patchwork @ 2025-04-30 13:06 UTC (permalink / raw)
  To: Himal Prasad Ghimiray; +Cc: intel-xe

== Series Details ==

Series: Prefetch Support for svm ranges (rev5)
URL   : https://patchwork.freedesktop.org/series/146079/
State : success

== Summary ==

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



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

* ✓ CI.Hooks: success for Prefetch Support for svm ranges (rev5)
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (23 preceding siblings ...)
  2025-04-30 13:06 ` ✓ CI.Build: " Patchwork
@ 2025-04-30 13:08 ` Patchwork
  2025-04-30 13:10 ` ✓ CI.checksparse: " Patchwork
                   ` (2 subsequent siblings)
  27 siblings, 0 replies; 43+ messages in thread
From: Patchwork @ 2025-04-30 13:08 UTC (permalink / raw)
  To: Himal Prasad Ghimiray; +Cc: intel-xe

== Series Details ==

Series: Prefetch Support for svm ranges (rev5)
URL   : https://patchwork.freedesktop.org/series/146079/
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-debug"
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-debug ']'
+ BUILD_DIR=/workspace/kernel/build64-debug
+ cd /workspace/kernel
++ nproc
+ make -j48 O=/workspace/kernel/build64-debug modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-debug'
  GEN     Makefile
  DESCEND objtool
  CALL    ../scripts/checksyscalls.sh
  INSTALL libsubcmd_headers
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/exec-cmd.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/help.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/pager.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/parse-options.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/run-command.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/sigchain.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/subcmd-config.o
  LD      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/libsubcmd-in.o
  AR      /workspace/kernel/build64-debug/tools/objtool/libsubcmd/libsubcmd.a
  CC      /workspace/kernel/build64-debug/tools/objtool/weak.o
  CC      /workspace/kernel/build64-debug/tools/objtool/check.o
  CC      /workspace/kernel/build64-debug/tools/objtool/special.o
  CC      /workspace/kernel/build64-debug/tools/objtool/builtin-check.o
  CC      /workspace/kernel/build64-debug/tools/objtool/arch/x86/special.o
  CC      /workspace/kernel/build64-debug/tools/objtool/elf.o
  CC      /workspace/kernel/build64-debug/tools/objtool/arch/x86/decode.o
  CC      /workspace/kernel/build64-debug/tools/objtool/objtool.o
  CC      /workspace/kernel/build64-debug/tools/objtool/arch/x86/orc.o
  CC      /workspace/kernel/build64-debug/tools/objtool/orc_gen.o
  CC      /workspace/kernel/build64-debug/tools/objtool/orc_dump.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libstring.o
  CC      /workspace/kernel/build64-debug/tools/objtool/libctype.o
  CC      /workspace/kernel/build64-debug/tools/objtool/str_error_r.o
  CC      /workspace/kernel/build64-debug/tools/objtool/librbtree.o
  LD      /workspace/kernel/build64-debug/tools/objtool/arch/x86/objtool-in.o
  LD      /workspace/kernel/build64-debug/tools/objtool/objtool-in.o
  LINK    /workspace/kernel/build64-debug/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64-debug'
++ nproc
+ make -j48 O=/workspace/kernel/build64-debug W=1 drivers/gpu/drm/xe
make[1]: Entering directory '/workspace/kernel/build64-debug'
make[2]: Nothing to be done for 'drivers/gpu/drm/xe'.
make[1]: Leaving directory '/workspace/kernel/build64-debug'
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-debug ']'
+ BUILD_DIR=/workspace/kernel/build64-debug
+ BUILD_DIR=/workspace/kernel/build64-debug/build32
+ cd /workspace/kernel
+ mkdir -p /workspace/kernel/build64-debug/build32
++ nproc
+ make -j48 ARCH=i386 O=/workspace/kernel/build64-debug/build32 defconfig
make[1]: Entering directory '/workspace/kernel/build64-debug/build32'
  GEN     Makefile
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/confdata.o
  LEX     scripts/kconfig/lexer.lex.c
  HOSTCC  scripts/kconfig/expr.o
  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-debug/build32'
+ cd /workspace/kernel/build64-debug/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
#
# 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_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_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_MATOM not in final .config
Requested value:  # CONFIG_MATOM 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_HIGHMEM4G not in final .config
Requested value:  # CONFIG_HIGHMEM4G 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_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_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_X86_DISABLED_FEATURE_PCID not in final .config
Requested value:  CONFIG_X86_DISABLED_FEATURE_PCID=y
Actual value:     

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

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

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

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

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

Value requested for CONFIG_X86_DISABLED_FEATURE_INVLPGB not in final .config
Requested value:  CONFIG_X86_DISABLED_FEATURE_INVLPGB=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_KMAP_LOCAL not in final .config
Requested value:  CONFIG_KMAP_LOCAL=y
Actual value:     

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

Value requested for CONFIG_EISA not in final .config
Requested value:  # CONFIG_EISA is not set
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_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_FREGS not in final .config
Requested value:  CONFIG_HAVE_FUNCTION_GRAPH_FREGS=y
Actual value:     

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

* ✓ CI.checksparse: success for Prefetch Support for svm ranges (rev5)
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (24 preceding siblings ...)
  2025-04-30 13:08 ` ✓ CI.Hooks: " Patchwork
@ 2025-04-30 13:10 ` Patchwork
  2025-04-30 20:06 ` ✗ Xe.CI.Full: failure " Patchwork
  2025-05-06  7:55 ` ✓ Xe.CI.BAT: success " Patchwork
  27 siblings, 0 replies; 43+ messages in thread
From: Patchwork @ 2025-04-30 13:10 UTC (permalink / raw)
  To: Himal Prasad Ghimiray; +Cc: intel-xe

== Series Details ==

Series: Prefetch Support for svm ranges (rev5)
URL   : https://patchwork.freedesktop.org/series/146079/
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 fc3ad08303990b2481cc45a6103ed79935dd3797
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] 43+ messages in thread

* Re: [PATCH v6 16/20] drm/xe/svm: Add xe_svm_range_validate() and xe_svm_range_migrate_to_smem()
  2025-04-30 12:19 ` [PATCH v6 16/20] drm/xe/svm: Add xe_svm_range_validate() and xe_svm_range_migrate_to_smem() Himal Prasad Ghimiray
@ 2025-04-30 14:50   ` Matthew Brost
  0 siblings, 0 replies; 43+ messages in thread
From: Matthew Brost @ 2025-04-30 14:50 UTC (permalink / raw)
  To: Himal Prasad Ghimiray; +Cc: intel-xe, thomas.hellstrom

On Wed, Apr 30, 2025 at 05:49:08PM +0530, Himal Prasad Ghimiray wrote:
> The xe_svm_range_validate() function checks if a range is
> valid and located in the desired memory region.
> 
> xe_svm_range_migrate_to_smem() checks if range have pages in devmem and
> migrate them to smem.
> 
> v2
> - Fix function stub in xe_svm.h
> - Fix doc
> 
> v3 (Matthew Brost)
> - Remove extra new line
> - s/range->base.flags.has_devmem_pages/xe_svm_range_in_vram
> 
> v4 (Matthew Brost)
> - s/xe_svm_range_in_vram/range->base.flags.has_devmem_pages
> - Move eviction logic to separate function
> 
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>

Reviewed-by: Matthew Brost <matthew.brost@intel.com>

> ---
>  drivers/gpu/drm/xe/xe_svm.c | 41 +++++++++++++++++++++++++++++++++++++
>  drivers/gpu/drm/xe/xe_svm.h | 19 +++++++++++++++++
>  2 files changed, 60 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
> index cb4a849c018b..fff3a279e232 100644
> --- a/drivers/gpu/drm/xe/xe_svm.c
> +++ b/drivers/gpu/drm/xe/xe_svm.c
> @@ -643,6 +643,47 @@ static bool xe_svm_range_is_valid(struct xe_svm_range *range,
>  		(!devmem_only || xe_svm_range_in_vram(range));
>  }
>  
> +/** xe_svm_range_migrate_to_smem() - Move range pages from VRAM to SMEM
> + * @vm: xe_vm pointer
> + * @range: Pointer to the SVM range structure
> + *
> + * The xe_svm_range_migrate_to_smem() checks range has pages in VRAM
> + * and migrates them to SMEM
> + */
> +void xe_svm_range_migrate_to_smem(struct xe_vm *vm, struct xe_svm_range *range)
> +{
> +	if (xe_svm_range_in_vram(range))
> +		drm_gpusvm_range_evict(&vm->svm.gpusvm, &range->base);
> +}
> +
> +/**
> + * xe_svm_range_validate() - Check if the SVM range is valid
> + * @vm: xe_vm pointer
> + * @range: Pointer to the SVM range structure
> + * @tile_mask: Mask representing the tiles to be checked
> + * @devmem_preferred : if true range needs to be in devmem
> + *
> + * The xe_svm_range_validate() function checks if a range is
> + * valid and located in the desired memory region.
> + *
> + * Return: true if the range is valid, false otherwise
> + */
> +bool xe_svm_range_validate(struct xe_vm *vm,
> +			   struct xe_svm_range *range,
> +			   u8 tile_mask, bool devmem_preferred)
> +{
> +	bool ret;
> +
> +	xe_svm_notifier_lock(vm);
> +
> +	ret = (range->tile_present & ~range->tile_invalidated & tile_mask) == tile_mask &&
> +	       (devmem_preferred == range->base.flags.has_devmem_pages);
> +
> +	xe_svm_notifier_unlock(vm);
> +
> +	return ret;
> +}
> +
>  #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
>  static struct xe_vram_region *tile_to_vr(struct xe_tile *tile)
>  {
> diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
> index 9be7bb25725c..3f8c82f9c363 100644
> --- a/drivers/gpu/drm/xe/xe_svm.h
> +++ b/drivers/gpu/drm/xe/xe_svm.h
> @@ -83,6 +83,12 @@ int xe_svm_range_get_pages(struct xe_vm *vm, struct xe_svm_range *range,
>  bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range, struct xe_vma *vma,
>  					bool preferred_region_is_vram);
>  
> +void xe_svm_range_migrate_to_smem(struct xe_vm *vm, struct xe_svm_range *range);
> +
> +bool xe_svm_range_validate(struct xe_vm *vm,
> +			   struct xe_svm_range *range,
> +			   u8 tile_mask, bool devmem_preferred);
> +
>  /**
>   * xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
>   * @range: SVM range
> @@ -276,6 +282,19 @@ bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range, struct xe_vm
>  	return false;
>  }
>  
> +static inline
> +void xe_svm_range_migrate_to_smem(struct xe_vm *vm, struct xe_svm_range *range)
> +{
> +}
> +
> +static inline
> +bool xe_svm_range_validate(struct xe_vm *vm,
> +			   struct xe_svm_range *range,
> +			   u8 tile_mask, bool devmem_preferred)
> +{
> +	return false;
> +}
> +
>  #define xe_svm_assert_in_notifier(...) do {} while (0)
>  #define xe_svm_range_has_dma_mapping(...) false
>  
> -- 
> 2.34.1
> 

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

* Re: [PATCH v6 17/20] drm/gpusvm: Introduce drm_gpusvm_find_vma_start() function
  2025-04-30 12:19 ` [PATCH v6 17/20] drm/gpusvm: Introduce drm_gpusvm_find_vma_start() function Himal Prasad Ghimiray
@ 2025-04-30 15:03   ` Matthew Brost
  0 siblings, 0 replies; 43+ messages in thread
From: Matthew Brost @ 2025-04-30 15:03 UTC (permalink / raw)
  To: Himal Prasad Ghimiray; +Cc: intel-xe, thomas.hellstrom

On Wed, Apr 30, 2025 at 05:49:09PM +0530, Himal Prasad Ghimiray wrote:
> The drm_gpusvm_find_vma_start() function is used to determine the starting
> address of a CPU VMA within a specified user range. If the range does not
> contain any VMA, the function returns ULONG_MAX.
> 
> v2
> - Rename function as drm_gpusvm_find_vma_start() (Matthew Brost)
> - mmget/mmput
> 
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
>  drivers/gpu/drm/drm_gpusvm.c | 32 ++++++++++++++++++++++++++++++++
>  include/drm/drm_gpusvm.h     |  5 +++++
>  2 files changed, 37 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
> index c94a8d7a293d..48bb29b78b96 100644
> --- a/drivers/gpu/drm/drm_gpusvm.c
> +++ b/drivers/gpu/drm/drm_gpusvm.c
> @@ -980,6 +980,38 @@ static void drm_gpusvm_driver_lock_held(struct drm_gpusvm *gpusvm)
>  }
>  #endif
>  
> +/**
> + * drm_gpusvm_find_vma_start() - Find start address for first VMA in range
> + * @gpusvm: Pointer to the GPU SVM structure
> + * @start: The inclusive start user address.
> + * @end: The exclusive end user address.
> + *
> + * Returns: The start address of first VMA within the provided range,
> + * ULONG_MAX otherwise. Assumes start_addr < end_addr.
> + */
> +unsigned long
> +drm_gpusvm_find_vma_start(struct drm_gpusvm *gpusvm,
> +			  unsigned long start,
> +			  unsigned long end)
> +{
> +	struct mm_struct *mm = gpusvm->mm;
> +	struct vm_area_struct *vma;
> +	unsigned long addr = ULONG_MAX;
> +
> +	mmget(mm);

The MM could be closed here, so:

if (!mmget_not_zero(mm))
	return addr;

Matt

> +	mmap_read_lock(mm);
> +
> +	vma = find_vma_intersection(mm, start, end);
> +	if (vma)
> +		addr =  vma->vm_start;
> +
> +	mmap_read_unlock(mm);
> +	mmput(mm);
> +
> +	return addr;
> +}
> +EXPORT_SYMBOL_GPL(drm_gpusvm_find_vma_start);
> +
>  /**
>   * drm_gpusvm_range_find_or_insert() - Find or insert GPU SVM range
>   * @gpusvm: Pointer to the GPU SVM structure
> diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
> index eaf704d3d05e..6a5156476bf4 100644
> --- a/include/drm/drm_gpusvm.h
> +++ b/include/drm/drm_gpusvm.h
> @@ -327,6 +327,11 @@ void drm_gpusvm_fini(struct drm_gpusvm *gpusvm);
>  
>  void drm_gpusvm_free(struct drm_gpusvm *gpusvm);
>  
> +unsigned long
> +drm_gpusvm_find_vma_start(struct drm_gpusvm *gpusvm,
> +			  unsigned long start,
> +			  unsigned long end);
> +
>  struct drm_gpusvm_range *
>  drm_gpusvm_range_find_or_insert(struct drm_gpusvm *gpusvm,
>  				unsigned long fault_addr,
> -- 
> 2.34.1
> 

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

* Re: [PATCH v6 18/20] drm/xe/svm: Add xe_svm_find_vma_start() helper
  2025-04-30 12:19 ` [PATCH v6 18/20] drm/xe/svm: Add xe_svm_find_vma_start() helper Himal Prasad Ghimiray
@ 2025-04-30 16:35   ` Matthew Brost
  0 siblings, 0 replies; 43+ messages in thread
From: Matthew Brost @ 2025-04-30 16:35 UTC (permalink / raw)
  To: Himal Prasad Ghimiray; +Cc: intel-xe, thomas.hellstrom

On Wed, Apr 30, 2025 at 05:49:10PM +0530, Himal Prasad Ghimiray wrote:
> Add helper xe_svm_find_vma_start() function to determine start of cpu
> vma in input range.
> 
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>

Reviewed-by: Matthew Brost <matthew.brost@intel.com>

> ---
>  drivers/gpu/drm/xe/xe_svm.c | 22 ++++++++++++++++++++++
>  drivers/gpu/drm/xe/xe_svm.h |  8 ++++++++
>  2 files changed, 30 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
> index fff3a279e232..727c393d19b8 100644
> --- a/drivers/gpu/drm/xe/xe_svm.c
> +++ b/drivers/gpu/drm/xe/xe_svm.c
> @@ -684,6 +684,28 @@ bool xe_svm_range_validate(struct xe_vm *vm,
>  	return ret;
>  }
>  
> +/**
> + * xe_svm_find_vma_start - Find start of CPU VMA
> + * @vm: xe_vm pointer
> + * @start: start address
> + * @end: end address
> + * @vma: Pointer to struct xe_vma
> + *
> + *
> + * This function searches for a cpu vma, within the specified
> + * range [start, end] in the given VM. It adjusts the range based on the
> + * xe_vma start and end addresses. If no cpu VMA is found, it returns ULONG_MAX.
> + *
> + * Return: The starting address of the VMA within the range,
> + * or ULONG_MAX if no VMA is found
> + */
> +u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 start, u64 end, struct xe_vma *vma)
> +{
> +	return drm_gpusvm_find_vma_start(&vm->svm.gpusvm,
> +					 max(start, xe_vma_start(vma)),
> +					 min(end, xe_vma_end(vma)));
> +}
> +
>  #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
>  static struct xe_vram_region *tile_to_vr(struct xe_tile *tile)
>  {
> diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
> index 3f8c82f9c363..fe9f6fcaeb3a 100644
> --- a/drivers/gpu/drm/xe/xe_svm.h
> +++ b/drivers/gpu/drm/xe/xe_svm.h
> @@ -89,6 +89,8 @@ bool xe_svm_range_validate(struct xe_vm *vm,
>  			   struct xe_svm_range *range,
>  			   u8 tile_mask, bool devmem_preferred);
>  
> +u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 addr, u64 end,  struct xe_vma *vma);
> +
>  /**
>   * xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
>   * @range: SVM range
> @@ -295,6 +297,12 @@ bool xe_svm_range_validate(struct xe_vm *vm,
>  	return false;
>  }
>  
> +static inline
> +u64 xe_svm_find_vma_start(struct xe_vm *vm, u64 addr, u64 end, struct xe_vma *vma)
> +{
> +	return ULONG_MAX;
> +}
> +
>  #define xe_svm_assert_in_notifier(...) do {} while (0)
>  #define xe_svm_range_has_dma_mapping(...) false
>  
> -- 
> 2.34.1
> 

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

* ✗ Xe.CI.Full: failure for Prefetch Support for svm ranges (rev5)
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (25 preceding siblings ...)
  2025-04-30 13:10 ` ✓ CI.checksparse: " Patchwork
@ 2025-04-30 20:06 ` Patchwork
  2025-05-06  7:55 ` ✓ Xe.CI.BAT: success " Patchwork
  27 siblings, 0 replies; 43+ messages in thread
From: Patchwork @ 2025-04-30 20:06 UTC (permalink / raw)
  To: Himal Prasad Ghimiray; +Cc: intel-xe

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

== Series Details ==

Series: Prefetch Support for svm ranges (rev5)
URL   : https://patchwork.freedesktop.org/series/146079/
State : failure

== Summary ==

CI Bug Log - changes from xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797_FULL -> xe-pw-146079v5_FULL
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-146079v5_FULL absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-146079v5_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-146079v5_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_exec_fault_mode@many-rebind:
    - shard-bmg:          [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-7/igt@xe_exec_fault_mode@many-rebind.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-7/igt@xe_exec_fault_mode@many-rebind.html

  * igt@xe_exec_system_allocator@many-mmap-free-huge:
    - shard-lnl:          NOTRUN -> [SKIP][3] +4 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@xe_exec_system_allocator@many-mmap-free-huge.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-mmap-huge:
    - shard-bmg:          NOTRUN -> [SKIP][4] +5 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-mmap-huge.html

  
#### Warnings ####

  * igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset:
    - shard-bmg:          [FAIL][5] ([Intel XE#4914]) -> [SKIP][6] +112 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-5/igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-7/igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-free-huge:
    - shard-lnl:          [FAIL][7] ([Intel XE#4914]) -> [SKIP][8] +102 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-8/igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-free-huge.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-free-huge.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-new-bo-map-nomemset:
    - shard-lnl:          [FAIL][9] ([Intel XE#4929]) -> [FAIL][10]
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-2/igt@xe_exec_system_allocator@threads-shared-vm-many-large-new-bo-map-nomemset.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-3/igt@xe_exec_system_allocator@threads-shared-vm-many-large-new-bo-map-nomemset.html

  
#### Suppressed ####

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

  * {igt@xe_exec_system_allocator@once-large-mmap-free-huge-nomemset}:
    - shard-lnl:          [FAIL][11] ([Intel XE#4914]) -> [SKIP][12] +10 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-5/igt@xe_exec_system_allocator@once-large-mmap-free-huge-nomemset.html
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@xe_exec_system_allocator@once-large-mmap-free-huge-nomemset.html

  * {igt@xe_exec_system_allocator@twice-large-mmap-huge}:
    - shard-bmg:          [FAIL][13] ([Intel XE#4914]) -> [SKIP][14] +10 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-7/igt@xe_exec_system_allocator@twice-large-mmap-huge.html
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@xe_exec_system_allocator@twice-large-mmap-huge.html

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

  Here are the changes found in xe-pw-146079v5_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1:
    - shard-lnl:          [PASS][15] -> [FAIL][16] ([Intel XE#911]) +3 other tests fail
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-5/igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1.html
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-4/igt@kms_async_flips@async-flip-with-page-flip-events-linear@pipe-c-edp-1.html

  * igt@kms_async_flips@async-flip-with-page-flip-events-tiled@pipe-b-hdmi-a-1-y:
    - shard-adlp:         [PASS][17] -> [DMESG-WARN][18] ([Intel XE#4543]) +10 other tests dmesg-warn
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-3/igt@kms_async_flips@async-flip-with-page-flip-events-tiled@pipe-b-hdmi-a-1-y.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@kms_async_flips@async-flip-with-page-flip-events-tiled@pipe-b-hdmi-a-1-y.html

  * igt@kms_async_flips@invalid-async-flip:
    - shard-bmg:          NOTRUN -> [SKIP][19] ([Intel XE#873])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-7/igt@kms_async_flips@invalid-async-flip.html
    - shard-lnl:          NOTRUN -> [SKIP][20] ([Intel XE#873])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-4/igt@kms_async_flips@invalid-async-flip.html

  * igt@kms_big_fb@4-tiled-16bpp-rotate-90:
    - shard-bmg:          NOTRUN -> [SKIP][21] ([Intel XE#2327])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@kms_big_fb@4-tiled-16bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-adlp:         NOTRUN -> [SKIP][22] ([Intel XE#1124]) +1 other test skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@x-tiled-32bpp-rotate-90:
    - shard-lnl:          NOTRUN -> [SKIP][23] ([Intel XE#1407])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-5/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-16bpp-rotate-180:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#1124]) +2 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][25] ([Intel XE#1124]) +1 other test skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html
    - shard-lnl:          NOTRUN -> [SKIP][26] ([Intel XE#1124]) +1 other test skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html

  * igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p:
    - shard-bmg:          [PASS][27] -> [SKIP][28] ([Intel XE#2314] / [Intel XE#2894])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-3/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html

  * igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p:
    - shard-adlp:         NOTRUN -> [SKIP][29] ([Intel XE#2191])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][30] ([Intel XE#2191])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@kms_bw@connected-linear-tiling-4-displays-2560x1440p.html

  * igt@kms_bw@linear-tiling-4-displays-2160x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][31] ([Intel XE#367])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-8/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html
    - shard-adlp:         NOTRUN -> [SKIP][32] ([Intel XE#367])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][33] ([Intel XE#367])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html
    - shard-lnl:          NOTRUN -> [SKIP][34] ([Intel XE#1512]) +1 other test skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-8/igt@kms_bw@linear-tiling-4-displays-2160x1440p.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc:
    - shard-adlp:         NOTRUN -> [SKIP][35] ([Intel XE#455] / [Intel XE#787]) +3 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-9/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][36] ([Intel XE#2887])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs.html

  * igt@kms_ccs@crc-primary-basic-y-tiled-ccs@pipe-d-hdmi-a-2:
    - shard-dg2-set2:     NOTRUN -> [SKIP][37] ([Intel XE#787]) +125 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@kms_ccs@crc-primary-basic-y-tiled-ccs@pipe-d-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-2:
    - shard-dg2-set2:     NOTRUN -> [SKIP][38] ([Intel XE#455] / [Intel XE#787]) +18 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@kms_ccs@crc-primary-basic-yf-tiled-ccs@pipe-d-dp-2.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs:
    - shard-adlp:         NOTRUN -> [SKIP][39] ([Intel XE#3442])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][40] ([Intel XE#3442])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][41] ([Intel XE#2887])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][42] ([Intel XE#787]) +5 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-4/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc@pipe-b-hdmi-a-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs:
    - shard-dg2-set2:     [PASS][43] -> [INCOMPLETE][44] ([Intel XE#2705] / [Intel XE#4212])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-432/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-dp-4:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][45] ([Intel XE#2705] / [Intel XE#4212])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
    - shard-dg2-set2:     [PASS][46] -> [INCOMPLETE][47] ([Intel XE#1727] / [Intel XE#3113]) +1 other test incomplete
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-433/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_cdclk@mode-transition:
    - shard-adlp:         NOTRUN -> [SKIP][48] ([Intel XE#4417] / [Intel XE#455])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-6/igt@kms_cdclk@mode-transition.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-lnl:          NOTRUN -> [SKIP][49] ([Intel XE#4418])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_cdclk@mode-transition@pipe-a-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][50] ([Intel XE#4417]) +2 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-6/igt@kms_cdclk@mode-transition@pipe-a-hdmi-a-1.html

  * igt@kms_cdclk@mode-transition@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][51] ([Intel XE#4417]) +3 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@kms_cdclk@mode-transition@pipe-d-dp-4.html

  * igt@kms_cdclk@plane-scaling@pipe-b-dp-2:
    - shard-dg2-set2:     NOTRUN -> [SKIP][52] ([Intel XE#4416]) +3 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@kms_cdclk@plane-scaling@pipe-b-dp-2.html

  * igt@kms_chamelium_color@ctm-limited-range:
    - shard-bmg:          NOTRUN -> [SKIP][53] ([Intel XE#2325])
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-2/igt@kms_chamelium_color@ctm-limited-range.html

  * igt@kms_chamelium_hpd@vga-hpd-enable-disable-mode:
    - shard-adlp:         NOTRUN -> [SKIP][54] ([Intel XE#373])
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-4/igt@kms_chamelium_hpd@vga-hpd-enable-disable-mode.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][55] ([Intel XE#373])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@kms_chamelium_hpd@vga-hpd-enable-disable-mode.html

  * igt@kms_chamelium_hpd@vga-hpd-for-each-pipe:
    - shard-lnl:          NOTRUN -> [SKIP][56] ([Intel XE#373])
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-8/igt@kms_chamelium_hpd@vga-hpd-for-each-pipe.html

  * igt@kms_content_protection@legacy:
    - shard-adlp:         NOTRUN -> [SKIP][57] ([Intel XE#455]) +9 other tests skip
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@kms_content_protection@legacy.html
    - shard-bmg:          NOTRUN -> [SKIP][58] ([Intel XE#2341])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@kms_content_protection@legacy.html
    - shard-dg2-set2:     NOTRUN -> [FAIL][59] ([Intel XE#1178]) +2 other tests fail
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@kms_content_protection@legacy.html
    - shard-lnl:          NOTRUN -> [SKIP][60] ([Intel XE#3278])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@srm@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][61] ([Intel XE#1178])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@kms_content_protection@srm@pipe-a-dp-2.html

  * igt@kms_cursor_crc@cursor-onscreen-32x32:
    - shard-bmg:          NOTRUN -> [SKIP][62] ([Intel XE#2320]) +1 other test skip
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-6/igt@kms_cursor_crc@cursor-onscreen-32x32.html
    - shard-lnl:          NOTRUN -> [SKIP][63] ([Intel XE#1424])
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-3/igt@kms_cursor_crc@cursor-onscreen-32x32.html

  * igt@kms_cursor_crc@cursor-random-512x512:
    - shard-lnl:          NOTRUN -> [SKIP][64] ([Intel XE#2321])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-2/igt@kms_cursor_crc@cursor-random-512x512.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
    - shard-adlp:         NOTRUN -> [SKIP][65] ([Intel XE#323])
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
    - shard-bmg:          NOTRUN -> [SKIP][66] ([Intel XE#2286])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][67] ([Intel XE#323])
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
    - shard-lnl:          NOTRUN -> [SKIP][68] ([Intel XE#323])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-toggle:
    - shard-lnl:          NOTRUN -> [SKIP][69] ([Intel XE#309])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-4/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic:
    - shard-bmg:          [PASS][70] -> [SKIP][71] ([Intel XE#2291])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-2/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic.html
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions:
    - shard-adlp:         NOTRUN -> [SKIP][72] ([Intel XE#309])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions.html

  * igt@kms_cursor_legacy@flip-vs-cursor-legacy:
    - shard-bmg:          [PASS][73] -> [FAIL][74] ([Intel XE#4633])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-1/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - shard-bmg:          NOTRUN -> [SKIP][75] ([Intel XE#2244])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@kms_dsc@dsc-basic.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-adlp:         [PASS][76] -> [DMESG-WARN][77] ([Intel XE#4173])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-9/igt@kms_fbcon_fbt@fbc-suspend.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_feature_discovery@display-2x:
    - shard-bmg:          [PASS][78] -> [SKIP][79] ([Intel XE#2373])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-6/igt@kms_feature_discovery@display-2x.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@kms_feature_discovery@display-2x.html

  * igt@kms_feature_discovery@display-4x:
    - shard-adlp:         NOTRUN -> [SKIP][80] ([Intel XE#1138])
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@kms_feature_discovery@display-4x.html
    - shard-bmg:          NOTRUN -> [SKIP][81] ([Intel XE#1138])
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-2/igt@kms_feature_discovery@display-4x.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][82] ([Intel XE#1138])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@kms_feature_discovery@display-4x.html
    - shard-lnl:          NOTRUN -> [SKIP][83] ([Intel XE#1138])
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-5/igt@kms_feature_discovery@display-4x.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-dp2-hdmi-a3:
    - shard-bmg:          [PASS][84] -> [FAIL][85] ([Intel XE#3321]) +1 other test fail
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-dp2-hdmi-a3.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-8/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-dp2-hdmi-a3.html

  * igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3:
    - shard-bmg:          NOTRUN -> [FAIL][86] ([Intel XE#3321]) +3 other tests fail
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank@ab-dp2-hdmi-a3.html

  * igt@kms_flip@2x-nonexisting-fb:
    - shard-bmg:          [PASS][87] -> [SKIP][88] ([Intel XE#2316]) +8 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-2/igt@kms_flip@2x-nonexisting-fb.html
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@kms_flip@2x-nonexisting-fb.html

  * igt@kms_flip@2x-plain-flip-fb-recreate:
    - shard-bmg:          [PASS][89] -> [DMESG-FAIL][90] ([Intel XE#3428]) +1 other test dmesg-fail
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-6/igt@kms_flip@2x-plain-flip-fb-recreate.html
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-6/igt@kms_flip@2x-plain-flip-fb-recreate.html

  * igt@kms_flip@2x-plain-flip-interruptible:
    - shard-adlp:         NOTRUN -> [SKIP][91] ([Intel XE#310])
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@kms_flip@2x-plain-flip-interruptible.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ab-dp2-hdmi-a3:
    - shard-bmg:          [PASS][92] -> [FAIL][93] ([Intel XE#2882]) +1 other test fail
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-7/igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ab-dp2-hdmi-a3.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-6/igt@kms_flip@2x-wf_vblank-ts-check-interruptible@ab-dp2-hdmi-a3.html

  * igt@kms_flip@2x-wf_vblank-ts-check@ab-dp2-hdmi-a3:
    - shard-bmg:          NOTRUN -> [FAIL][94] ([Intel XE#2882])
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-6/igt@kms_flip@2x-wf_vblank-ts-check@ab-dp2-hdmi-a3.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp4:
    - shard-dg2-set2:     [PASS][95] -> [FAIL][96] ([Intel XE#301]) +5 other tests fail
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-433/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp4.html
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-dp4.html

  * igt@kms_flip@flip-vs-suspend@b-hdmi-a1:
    - shard-adlp:         NOTRUN -> [DMESG-WARN][97] ([Intel XE#2953] / [Intel XE#4173]) +2 other tests dmesg-warn
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-4/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html

  * igt@kms_flip@flip-vs-suspend@b-hdmi-a3:
    - shard-bmg:          [PASS][98] -> [ABORT][99] ([Intel XE#4056]) +1 other test abort
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-5/igt@kms_flip@flip-vs-suspend@b-hdmi-a3.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-6/igt@kms_flip@flip-vs-suspend@b-hdmi-a3.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][100] ([Intel XE#1401] / [Intel XE#1745])
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][101] ([Intel XE#1401])
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling:
    - shard-bmg:          NOTRUN -> [SKIP][102] ([Intel XE#2293] / [Intel XE#2380])
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode:
    - shard-adlp:         [PASS][103] -> [DMESG-FAIL][104] ([Intel XE#4543]) +9 other tests dmesg-fail
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-4/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode.html
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode.html
    - shard-bmg:          NOTRUN -> [SKIP][105] ([Intel XE#2293])
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-bmg:          NOTRUN -> [SKIP][106] ([Intel XE#2311]) +2 other tests skip
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-2/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-bmg:          NOTRUN -> [SKIP][107] ([Intel XE#2312]) +2 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move:
    - shard-bmg:          NOTRUN -> [SKIP][108] ([Intel XE#4141]) +3 other tests skip
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][109] ([Intel XE#656]) +8 other tests skip
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-plflip-blt:
    - shard-adlp:         NOTRUN -> [SKIP][110] ([Intel XE#651])
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render:
    - shard-adlp:         NOTRUN -> [SKIP][111] ([Intel XE#656]) +9 other tests skip
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-onoff:
    - shard-dg2-set2:     NOTRUN -> [SKIP][112] ([Intel XE#651]) +3 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy:
    - shard-lnl:          NOTRUN -> [SKIP][113] ([Intel XE#651]) +1 other test skip
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcdrrs-modesetfrombusy.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-adlp:         NOTRUN -> [SKIP][114] ([Intel XE#653]) +4 other tests skip
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
    - shard-bmg:          NOTRUN -> [SKIP][115] ([Intel XE#2352]) +1 other test skip
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
    - shard-lnl:          NOTRUN -> [SKIP][116] ([Intel XE#1469])
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc:
    - shard-bmg:          NOTRUN -> [SKIP][117] ([Intel XE#2313]) +6 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-slowdraw:
    - shard-dg2-set2:     NOTRUN -> [SKIP][118] ([Intel XE#653]) +7 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@kms_frontbuffer_tracking@psr-slowdraw.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-dg2-set2:     NOTRUN -> [SKIP][119] ([Intel XE#455]) +4 other tests skip
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_hdr@static-swap:
    - shard-lnl:          NOTRUN -> [SKIP][120] ([Intel XE#1503])
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@kms_hdr@static-swap.html

  * igt@kms_hdr@static-toggle-dpms:
    - shard-bmg:          [PASS][121] -> [SKIP][122] ([Intel XE#1503])
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-8/igt@kms_hdr@static-toggle-dpms.html
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@kms_hdr@static-toggle-dpms.html

  * igt@kms_joiner@invalid-modeset-big-joiner:
    - shard-adlp:         NOTRUN -> [SKIP][123] ([Intel XE#346])
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@kms_joiner@invalid-modeset-big-joiner.html
    - shard-bmg:          NOTRUN -> [SKIP][124] ([Intel XE#346])
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-2/igt@kms_joiner@invalid-modeset-big-joiner.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][125] ([Intel XE#346])
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@kms_joiner@invalid-modeset-big-joiner.html
    - shard-lnl:          NOTRUN -> [SKIP][126] ([Intel XE#346])
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-5/igt@kms_joiner@invalid-modeset-big-joiner.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][127] ([Intel XE#4090])
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
    - shard-adlp:         NOTRUN -> [SKIP][128] ([Intel XE#2925])
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][129] ([Intel XE#2925])
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-433/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
    - shard-lnl:          NOTRUN -> [SKIP][130] ([Intel XE#4090])
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-4/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_plane_cursor@viewport:
    - shard-dg2-set2:     [PASS][131] -> [FAIL][132] ([Intel XE#616]) +1 other test fail
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-433/igt@kms_plane_cursor@viewport.html
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@kms_plane_cursor@viewport.html

  * igt@kms_plane_lowres@tiling-yf:
    - shard-bmg:          NOTRUN -> [SKIP][133] ([Intel XE#2393])
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-3/igt@kms_plane_lowres@tiling-yf.html
    - shard-lnl:          NOTRUN -> [SKIP][134] ([Intel XE#599])
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@kms_plane_lowres@tiling-yf.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-dp-4:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][135] ([Intel XE#4212])
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@kms_plane_scaling@intel-max-src-size@pipe-a-dp-4.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     NOTRUN -> [ABORT][136] ([Intel XE#4760])
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html

  * igt@kms_pm_dc@dc5-psr:
    - shard-lnl:          [PASS][137] -> [FAIL][138] ([Intel XE#718])
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-6/igt@kms_pm_dc@dc5-psr.html
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-4/igt@kms_pm_dc@dc5-psr.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-adlp:         NOTRUN -> [SKIP][139] ([Intel XE#836])
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][140] ([Intel XE#4608])
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1.html

  * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf:
    - shard-adlp:         NOTRUN -> [SKIP][141] ([Intel XE#1489])
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][142] ([Intel XE#1489])
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf:
    - shard-lnl:          NOTRUN -> [SKIP][143] ([Intel XE#2893]) +1 other test skip
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-2/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf:
    - shard-bmg:          NOTRUN -> [SKIP][144] ([Intel XE#1489]) +1 other test skip
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-6/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-sf.html

  * igt@kms_psr@fbc-pr-dpms:
    - shard-lnl:          NOTRUN -> [SKIP][145] ([Intel XE#1406]) +2 other tests skip
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-4/igt@kms_psr@fbc-pr-dpms.html

  * igt@kms_psr@fbc-psr2-suspend@edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][146] ([Intel XE#4609])
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-1/igt@kms_psr@fbc-psr2-suspend@edp-1.html

  * igt@kms_psr@pr-cursor-render:
    - shard-adlp:         NOTRUN -> [SKIP][147] ([Intel XE#2850] / [Intel XE#929]) +3 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@kms_psr@pr-cursor-render.html
    - shard-bmg:          NOTRUN -> [SKIP][148] ([Intel XE#2234] / [Intel XE#2850]) +1 other test skip
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@kms_psr@pr-cursor-render.html

  * igt@kms_psr@psr-dpms:
    - shard-dg2-set2:     NOTRUN -> [SKIP][149] ([Intel XE#2850] / [Intel XE#929]) +3 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-433/igt@kms_psr@psr-dpms.html

  * igt@kms_vblank@ts-continuation-dpms-suspend:
    - shard-adlp:         [PASS][150] -> [DMESG-WARN][151] ([Intel XE#2953] / [Intel XE#4173]) +1 other test dmesg-warn
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@kms_vblank@ts-continuation-dpms-suspend.html
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@kms_vblank@ts-continuation-dpms-suspend.html

  * igt@kms_vblank@ts-continuation-suspend:
    - shard-dg2-set2:     [PASS][152] -> [INCOMPLETE][153] ([Intel XE#4488]) +1 other test incomplete
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-436/igt@kms_vblank@ts-continuation-suspend.html
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@kms_vblank@ts-continuation-suspend.html

  * igt@kms_writeback@writeback-check-output-xrgb2101010:
    - shard-adlp:         NOTRUN -> [SKIP][154] ([Intel XE#756])
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@kms_writeback@writeback-check-output-xrgb2101010.html
    - shard-bmg:          NOTRUN -> [SKIP][155] ([Intel XE#756])
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@kms_writeback@writeback-check-output-xrgb2101010.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][156] ([Intel XE#756])
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@kms_writeback@writeback-check-output-xrgb2101010.html
    - shard-lnl:          NOTRUN -> [SKIP][157] ([Intel XE#756])
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@kms_writeback@writeback-check-output-xrgb2101010.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-lnl:          NOTRUN -> [SKIP][158] ([Intel XE#1091] / [Intel XE#2849])
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-4/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@testdisplay:
    - shard-dg2-set2:     [PASS][159] -> [ABORT][160] ([Intel XE#2705])
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-436/igt@testdisplay.html
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@testdisplay.html

  * igt@xe_copy_basic@mem-set-linear-0xfd:
    - shard-dg2-set2:     NOTRUN -> [SKIP][161] ([Intel XE#1126])
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@xe_copy_basic@mem-set-linear-0xfd.html
    - shard-adlp:         NOTRUN -> [SKIP][162] ([Intel XE#1126])
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@xe_copy_basic@mem-set-linear-0xfd.html

  * igt@xe_eudebug@basic-client:
    - shard-lnl:          NOTRUN -> [SKIP][163] ([Intel XE#4837]) +3 other tests skip
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-8/igt@xe_eudebug@basic-client.html

  * igt@xe_eudebug@basic-vm-access-parameters-userptr-faultable:
    - shard-bmg:          NOTRUN -> [SKIP][164] ([Intel XE#4837]) +4 other tests skip
   [164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-2/igt@xe_eudebug@basic-vm-access-parameters-userptr-faultable.html

  * igt@xe_eudebug@basic-vm-bind-metadata-discovery:
    - shard-adlp:         NOTRUN -> [SKIP][165] ([Intel XE#4837]) +4 other tests skip
   [165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@xe_eudebug@basic-vm-bind-metadata-discovery.html

  * igt@xe_eudebug@sysfs-toggle:
    - shard-dg2-set2:     NOTRUN -> [SKIP][166] ([Intel XE#4837]) +4 other tests skip
   [166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@xe_eudebug@sysfs-toggle.html

  * igt@xe_evict@evict-beng-small-cm:
    - shard-adlp:         NOTRUN -> [SKIP][167] ([Intel XE#261] / [Intel XE#688])
   [167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@xe_evict@evict-beng-small-cm.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap:
    - shard-adlp:         NOTRUN -> [SKIP][168] ([Intel XE#1392]) +1 other test skip
   [168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][169] ([Intel XE#1392])
   [169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap.html

  * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][170] ([Intel XE#1392])
   [170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-rebind.html

  * igt@xe_exec_basic@multigpu-no-exec-rebind:
    - shard-dg2-set2:     [PASS][171] -> [SKIP][172] ([Intel XE#1392]) +2 other tests skip
   [171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-434/igt@xe_exec_basic@multigpu-no-exec-rebind.html
   [172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-rebind.html

  * igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-invalidate:
    - shard-dg2-set2:     NOTRUN -> [SKIP][173] ([Intel XE#288]) +6 other tests skip
   [173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-invalidate.html

  * igt@xe_exec_fault_mode@once-userptr-invalidate-race-prefetch:
    - shard-adlp:         NOTRUN -> [SKIP][174] ([Intel XE#288]) +6 other tests skip
   [174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-4/igt@xe_exec_fault_mode@once-userptr-invalidate-race-prefetch.html

  * igt@xe_exec_system_allocator@process-many-execqueues-mmap-nomemset:
    - shard-adlp:         NOTRUN -> [SKIP][175] ([Intel XE#4915]) +35 other tests skip
   [175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@xe_exec_system_allocator@process-many-execqueues-mmap-nomemset.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-free-race-nomemset:
    - shard-bmg:          [PASS][176] -> [DMESG-WARN][177] ([Intel XE#3428])
   [176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-3/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-free-race-nomemset.html
   [177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-6/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-free-race-nomemset.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-malloc-race-nomemset:
    - shard-dg2-set2:     NOTRUN -> [SKIP][178] ([Intel XE#4915]) +28 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-433/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-malloc-race-nomemset.html

  * igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit:
    - shard-bmg:          NOTRUN -> [SKIP][179] ([Intel XE#2229])
   [179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html

  * igt@xe_mmap@pci-membarrier-parallel:
    - shard-adlp:         NOTRUN -> [SKIP][180] ([Intel XE#4045])
   [180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@xe_mmap@pci-membarrier-parallel.html
    - shard-lnl:          NOTRUN -> [SKIP][181] ([Intel XE#4045])
   [181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-8/igt@xe_mmap@pci-membarrier-parallel.html

  * igt@xe_oa@buffer-fill@rcs-0:
    - shard-lnl:          [PASS][182] -> [FAIL][183] ([Intel XE#4565]) +1 other test fail
   [182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-2/igt@xe_oa@buffer-fill@rcs-0.html
   [183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@xe_oa@buffer-fill@rcs-0.html

  * igt@xe_oa@invalid-oa-metric-set-id:
    - shard-adlp:         NOTRUN -> [SKIP][184] ([Intel XE#2541] / [Intel XE#3573]) +1 other test skip
   [184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@xe_oa@invalid-oa-metric-set-id.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][185] ([Intel XE#2541] / [Intel XE#3573])
   [185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@xe_oa@invalid-oa-metric-set-id.html

  * igt@xe_oa@syncs-userptr-wait-cfg:
    - shard-dg2-set2:     NOTRUN -> [SKIP][186] ([Intel XE#2541] / [Intel XE#3573] / [Intel XE#4501])
   [186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@xe_oa@syncs-userptr-wait-cfg.html
    - shard-adlp:         NOTRUN -> [SKIP][187] ([Intel XE#2541] / [Intel XE#3573] / [Intel XE#4501])
   [187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-9/igt@xe_oa@syncs-userptr-wait-cfg.html

  * igt@xe_pm@s4-d3hot-basic-exec:
    - shard-lnl:          [PASS][188] -> [ABORT][189] ([Intel XE#1794]) +2 other tests abort
   [188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-1/igt@xe_pm@s4-d3hot-basic-exec.html
   [189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-2/igt@xe_pm@s4-d3hot-basic-exec.html

  * igt@xe_pm@s4-vm-bind-unbind-all:
    - shard-adlp:         [PASS][190] -> [ABORT][191] ([Intel XE#1794])
   [190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-2/igt@xe_pm@s4-vm-bind-unbind-all.html
   [191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-9/igt@xe_pm@s4-vm-bind-unbind-all.html

  * igt@xe_pmu@all-fn-engine-activity-load:
    - shard-bmg:          NOTRUN -> [SKIP][192] ([Intel XE#4650])
   [192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@xe_pmu@all-fn-engine-activity-load.html

  * igt@xe_pmu@fn-engine-activity-load:
    - shard-dg2-set2:     NOTRUN -> [SKIP][193] ([Intel XE#4650])
   [193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@xe_pmu@fn-engine-activity-load.html

  * igt@xe_query@multigpu-query-invalid-cs-cycles:
    - shard-bmg:          NOTRUN -> [SKIP][194] ([Intel XE#944])
   [194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@xe_query@multigpu-query-invalid-cs-cycles.html
    - shard-dg2-set2:     NOTRUN -> [SKIP][195] ([Intel XE#944])
   [195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@xe_query@multigpu-query-invalid-cs-cycles.html
    - shard-lnl:          NOTRUN -> [SKIP][196] ([Intel XE#944]) +1 other test skip
   [196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@xe_query@multigpu-query-invalid-cs-cycles.html
    - shard-adlp:         NOTRUN -> [SKIP][197] ([Intel XE#944])
   [197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-4/igt@xe_query@multigpu-query-invalid-cs-cycles.html

  * igt@xe_sriov_auto_provisioning@fair-allocation:
    - shard-dg2-set2:     NOTRUN -> [SKIP][198] ([Intel XE#4130])
   [198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@xe_sriov_auto_provisioning@fair-allocation.html

  
#### Possible fixes ####

  * igt@kms_async_flips@alternate-sync-async-flip-atomic:
    - shard-bmg:          [FAIL][199] ([Intel XE#3701] / [Intel XE#3718] / [Intel XE#827]) -> [PASS][200]
   [199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-6/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
   [200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@kms_async_flips@alternate-sync-async-flip-atomic.html

  * igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-dp-2:
    - shard-bmg:          [FAIL][201] ([Intel XE#3718] / [Intel XE#827]) -> [PASS][202]
   [201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-6/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-dp-2.html
   [202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-dp-2.html

  * igt@kms_atomic_transition@plane-toggle-modeset-transition:
    - shard-adlp:         [FAIL][203] ([Intel XE#3908]) -> [PASS][204] +1 other test pass
   [203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-4/igt@kms_atomic_transition@plane-toggle-modeset-transition.html
   [204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@kms_atomic_transition@plane-toggle-modeset-transition.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-adlp:         [DMESG-FAIL][205] ([Intel XE#4543]) -> [PASS][206] +6 other tests pass
   [205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-3/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
   [206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
    - shard-bmg:          [FAIL][207] ([Intel XE#4828]) -> [PASS][208]
   [207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
   [208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-7/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size:
    - shard-bmg:          [SKIP][209] ([Intel XE#2291]) -> [PASS][210] +3 other tests pass
   [209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-4/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size.html
   [210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-2/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@cd-dp2-hdmi-a3:
    - shard-bmg:          [FAIL][211] ([Intel XE#3321]) -> [PASS][212]
   [211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@cd-dp2-hdmi-a3.html
   [212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-8/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@cd-dp2-hdmi-a3.html

  * igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
    - shard-bmg:          [SKIP][213] ([Intel XE#2316]) -> [PASS][214] +7 other tests pass
   [213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-4/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
   [214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-7/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp4:
    - shard-dg2-set2:     [FAIL][215] ([Intel XE#301]) -> [PASS][216] +2 other tests pass
   [215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-433/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp4.html
   [216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp4.html

  * igt@kms_flip@flip-vs-expired-vblank@a-dp4:
    - shard-dg2-set2:     [FAIL][217] ([Intel XE#301] / [Intel XE#3321]) -> [PASS][218] +2 other tests pass
   [217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-464/igt@kms_flip@flip-vs-expired-vblank@a-dp4.html
   [218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@kms_flip@flip-vs-expired-vblank@a-dp4.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
    - shard-adlp:         [DMESG-FAIL][219] ([Intel XE#4543] / [Intel XE#4921]) -> [PASS][220] +1 other test pass
   [219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-4/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
   [220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html

  * igt@kms_joiner@invalid-modeset-force-big-joiner:
    - shard-bmg:          [SKIP][221] ([Intel XE#3012]) -> [PASS][222] +1 other test pass
   [221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-4/igt@kms_joiner@invalid-modeset-force-big-joiner.html
   [222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@kms_joiner@invalid-modeset-force-big-joiner.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12:
    - shard-dg2-set2:     [SKIP][223] ([Intel XE#4208] / [i915#2575]) -> [PASS][224]
   [223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12.html
   [224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12.html

  * igt@kms_plane_scaling@planes-scaler-unity-scaling:
    - shard-adlp:         [DMESG-WARN][225] ([Intel XE#4173]) -> [PASS][226] +7 other tests pass
   [225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-3/igt@kms_plane_scaling@planes-scaler-unity-scaling.html
   [226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-6/igt@kms_plane_scaling@planes-scaler-unity-scaling.html

  * igt@kms_pm_dc@dc5-dpms:
    - shard-lnl:          [FAIL][227] ([Intel XE#718]) -> [PASS][228]
   [227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-6/igt@kms_pm_dc@dc5-dpms.html
   [228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@kms_pm_dc@dc5-dpms.html

  * igt@kms_vrr@cmrr@pipe-a-edp-1:
    - shard-lnl:          [FAIL][229] ([Intel XE#4459]) -> [PASS][230] +1 other test pass
   [229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-3/igt@kms_vrr@cmrr@pipe-a-edp-1.html
   [230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@kms_vrr@cmrr@pipe-a-edp-1.html

  * igt@kms_vrr@flipline:
    - shard-lnl:          [FAIL][231] ([Intel XE#4227]) -> [PASS][232] +1 other test pass
   [231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-3/igt@kms_vrr@flipline.html
   [232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-8/igt@kms_vrr@flipline.html

  * igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap:
    - shard-dg2-set2:     [SKIP][233] ([Intel XE#1392]) -> [PASS][234] +7 other tests pass
   [233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html
   [234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html

  * igt@xe_module_load@load:
    - shard-lnl:          ([PASS][235], [PASS][236], [PASS][237], [PASS][238], [PASS][239], [PASS][240], [PASS][241], [PASS][242], [PASS][243], [PASS][244], [PASS][245], [PASS][246], [PASS][247], [PASS][248], [PASS][249], [PASS][250], [SKIP][251], [PASS][252], [PASS][253], [PASS][254], [PASS][255], [PASS][256], [PASS][257], [PASS][258], [PASS][259], [PASS][260]) ([Intel XE#378]) -> ([PASS][261], [PASS][262], [PASS][263], [PASS][264], [PASS][265], [PASS][266], [PASS][267], [PASS][268], [PASS][269], [PASS][270], [PASS][271], [PASS][272], [PASS][273], [PASS][274], [PASS][275], [PASS][276], [PASS][277], [PASS][278], [PASS][279], [PASS][280], [PASS][281], [PASS][282], [PASS][283], [PASS][284], [PASS][285])
   [235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-4/igt@xe_module_load@load.html
   [236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-1/igt@xe_module_load@load.html
   [237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-6/igt@xe_module_load@load.html
   [238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-7/igt@xe_module_load@load.html
   [239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-5/igt@xe_module_load@load.html
   [240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-5/igt@xe_module_load@load.html
   [241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-5/igt@xe_module_load@load.html
   [242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-6/igt@xe_module_load@load.html
   [243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-8/igt@xe_module_load@load.html
   [244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-6/igt@xe_module_load@load.html
   [245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-3/igt@xe_module_load@load.html
   [246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-3/igt@xe_module_load@load.html
   [247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-8/igt@xe_module_load@load.html
   [248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-8/igt@xe_module_load@load.html
   [249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-3/igt@xe_module_load@load.html
   [250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-7/igt@xe_module_load@load.html
   [251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-4/igt@xe_module_load@load.html
   [252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-4/igt@xe_module_load@load.html
   [253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-4/igt@xe_module_load@load.html
   [254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-5/igt@xe_module_load@load.html
   [255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-2/igt@xe_module_load@load.html
   [256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-2/igt@xe_module_load@load.html
   [257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-2/igt@xe_module_load@load.html
   [258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-7/igt@xe_module_load@load.html
   [259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-1/igt@xe_module_load@load.html
   [260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-lnl-1/igt@xe_module_load@load.html
   [261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-8/igt@xe_module_load@load.html
   [262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-3/igt@xe_module_load@load.html
   [263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-5/igt@xe_module_load@load.html
   [264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-5/igt@xe_module_load@load.html
   [265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-1/igt@xe_module_load@load.html
   [266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-1/igt@xe_module_load@load.html
   [267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-4/igt@xe_module_load@load.html
   [268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-4/igt@xe_module_load@load.html
   [269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-5/igt@xe_module_load@load.html
   [270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-2/igt@xe_module_load@load.html
   [271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-2/igt@xe_module_load@load.html
   [272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@xe_module_load@load.html
   [273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@xe_module_load@load.html
   [274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-7/igt@xe_module_load@load.html
   [275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-4/igt@xe_module_load@load.html
   [276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@xe_module_load@load.html
   [277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@xe_module_load@load.html
   [278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-3/igt@xe_module_load@load.html
   [279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-1/igt@xe_module_load@load.html
   [280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-2/igt@xe_module_load@load.html
   [281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-8/igt@xe_module_load@load.html
   [282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-8/igt@xe_module_load@load.html
   [283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-3/igt@xe_module_load@load.html
   [284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@xe_module_load@load.html
   [285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-lnl-6/igt@xe_module_load@load.html
    - shard-bmg:          ([PASS][286], [PASS][287], [PASS][288], [PASS][289], [PASS][290], [PASS][291], [PASS][292], [PASS][293], [PASS][294], [PASS][295], [PASS][296], [PASS][297], [PASS][298], [SKIP][299], [PASS][300], [PASS][301], [PASS][302], [PASS][303], [PASS][304], [PASS][305], [PASS][306], [PASS][307], [PASS][308], [PASS][309], [PASS][310], [PASS][311]) ([Intel XE#2457]) -> ([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])
   [286]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-8/igt@xe_module_load@load.html
   [287]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-8/igt@xe_module_load@load.html
   [288]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-2/igt@xe_module_load@load.html
   [289]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-2/igt@xe_module_load@load.html
   [290]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-6/igt@xe_module_load@load.html
   [291]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-8/igt@xe_module_load@load.html
   [292]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-6/igt@xe_module_load@load.html
   [293]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-6/igt@xe_module_load@load.html
   [294]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-5/igt@xe_module_load@load.html
   [295]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-5/igt@xe_module_load@load.html
   [296]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-3/igt@xe_module_load@load.html
   [297]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-3/igt@xe_module_load@load.html
   [298]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-3/igt@xe_module_load@load.html
   [299]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-1/igt@xe_module_load@load.html
   [300]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-5/igt@xe_module_load@load.html
   [301]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-7/igt@xe_module_load@load.html
   [302]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-1/igt@xe_module_load@load.html
   [303]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-7/igt@xe_module_load@load.html
   [304]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-7/igt@xe_module_load@load.html
   [305]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-1/igt@xe_module_load@load.html
   [306]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-4/igt@xe_module_load@load.html
   [307]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-4/igt@xe_module_load@load.html
   [308]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-4/igt@xe_module_load@load.html
   [309]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-4/igt@xe_module_load@load.html
   [310]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-1/igt@xe_module_load@load.html
   [311]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-5/igt@xe_module_load@load.html
   [312]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-3/igt@xe_module_load@load.html
   [313]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@xe_module_load@load.html
   [314]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@xe_module_load@load.html
   [315]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@xe_module_load@load.html
   [316]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@xe_module_load@load.html
   [317]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@xe_module_load@load.html
   [318]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@xe_module_load@load.html
   [319]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@xe_module_load@load.html
   [320]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@xe_module_load@load.html
   [321]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@xe_module_load@load.html
   [322]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@xe_module_load@load.html
   [323]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-3/igt@xe_module_load@load.html
   [324]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-3/igt@xe_module_load@load.html
   [325]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-2/igt@xe_module_load@load.html
   [326]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-2/igt@xe_module_load@load.html
   [327]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-8/igt@xe_module_load@load.html
   [328]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-2/igt@xe_module_load@load.html
   [329]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-6/igt@xe_module_load@load.html
   [330]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-7/igt@xe_module_load@load.html
   [331]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-8/igt@xe_module_load@load.html
   [332]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-8/igt@xe_module_load@load.html
   [333]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-7/igt@xe_module_load@load.html
   [334]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@xe_module_load@load.html
   [335]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-6/igt@xe_module_load@load.html
    - shard-adlp:         ([PASS][336], [PASS][337], [PASS][338], [SKIP][339], [PASS][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-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-2/igt@xe_module_load@load.html
   [337]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-2/igt@xe_module_load@load.html
   [338]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-2/igt@xe_module_load@load.html
   [339]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-2/igt@xe_module_load@load.html
   [340]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-1/igt@xe_module_load@load.html
   [341]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-9/igt@xe_module_load@load.html
   [342]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-9/igt@xe_module_load@load.html
   [343]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-6/igt@xe_module_load@load.html
   [344]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-6/igt@xe_module_load@load.html
   [345]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-3/igt@xe_module_load@load.html
   [346]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-3/igt@xe_module_load@load.html
   [347]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-3/igt@xe_module_load@load.html
   [348]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-1/igt@xe_module_load@load.html
   [349]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-1/igt@xe_module_load@load.html
   [350]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@xe_module_load@load.html
   [351]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@xe_module_load@load.html
   [352]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-6/igt@xe_module_load@load.html
   [353]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-6/igt@xe_module_load@load.html
   [354]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-3/igt@xe_module_load@load.html
   [355]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@xe_module_load@load.html
   [356]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@xe_module_load@load.html
   [357]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-4/igt@xe_module_load@load.html
   [358]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-4/igt@xe_module_load@load.html
   [359]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-4/igt@xe_module_load@load.html
   [360]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-4/igt@xe_module_load@load.html
   [361]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-9/igt@xe_module_load@load.html
   [362]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@xe_module_load@load.html
   [363]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@xe_module_load@load.html
   [364]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@xe_module_load@load.html
   [365]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-4/igt@xe_module_load@load.html
   [366]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-4/igt@xe_module_load@load.html
   [367]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@xe_module_load@load.html
   [368]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@xe_module_load@load.html
   [369]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-4/igt@xe_module_load@load.html
   [370]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-6/igt@xe_module_load@load.html
   [371]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-6/igt@xe_module_load@load.html
   [372]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@xe_module_load@load.html
   [373]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-9/igt@xe_module_load@load.html
   [374]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@xe_module_load@load.html
   [375]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-6/igt@xe_module_load@load.html
   [376]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@xe_module_load@load.html
   [377]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@xe_module_load@load.html
   [378]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-6/igt@xe_module_load@load.html
   [379]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@xe_module_load@load.html
   [380]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@xe_module_load@load.html
   [381]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-2/igt@xe_module_load@load.html
   [382]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-9/igt@xe_module_load@load.html
   [383]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@xe_module_load@load.html
   [384]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@xe_module_load@load.html
   [385]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@xe_module_load@load.html
   [386]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@xe_module_load@load.html
    - shard-dg2-set2:     ([PASS][387], [PASS][388], [PASS][389], [PASS][390], [PASS][391], [PASS][392], [PASS][393], [PASS][394], [PASS][395], [PASS][396], [PASS][397], [PASS][398], [PASS][399], [SKIP][400], [PASS][401], [PASS][402], [PASS][403], [PASS][404], [PASS][405], [PASS][406], [PASS][407], [PASS][408], [PASS][409], [PASS][410], [PASS][411], [PASS][412]) ([Intel XE#378]) -> ([PASS][413], [PASS][414], [PASS][415], [PASS][416], [PASS][417], [PASS][418], [PASS][419], [PASS][420], [PASS][421], [PASS][422], [PASS][423], [PASS][424], [PASS][425], [PASS][426], [PASS][427], [PASS][428], [PASS][429], [PASS][430], [PASS][431], [PASS][432], [PASS][433], [PASS][434], [PASS][435], [PASS][436], [PASS][437])
   [387]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-432/igt@xe_module_load@load.html
   [388]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-432/igt@xe_module_load@load.html
   [389]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-436/igt@xe_module_load@load.html
   [390]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-436/igt@xe_module_load@load.html
   [391]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-436/igt@xe_module_load@load.html
   [392]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-436/igt@xe_module_load@load.html
   [393]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-433/igt@xe_module_load@load.html
   [394]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-433/igt@xe_module_load@load.html
   [395]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-433/igt@xe_module_load@load.html
   [396]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-464/igt@xe_module_load@load.html
   [397]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-464/igt@xe_module_load@load.html
   [398]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-464/igt@xe_module_load@load.html
   [399]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-464/igt@xe_module_load@load.html
   [400]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-464/igt@xe_module_load@load.html
   [401]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-432/igt@xe_module_load@load.html
   [402]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-434/igt@xe_module_load@load.html
   [403]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-434/igt@xe_module_load@load.html
   [404]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-432/igt@xe_module_load@load.html
   [405]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-434/igt@xe_module_load@load.html
   [406]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-434/igt@xe_module_load@load.html
   [407]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-432/igt@xe_module_load@load.html
   [408]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@xe_module_load@load.html
   [409]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@xe_module_load@load.html
   [410]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@xe_module_load@load.html
   [411]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@xe_module_load@load.html
   [412]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@xe_module_load@load.html
   [413]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@xe_module_load@load.html
   [414]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@xe_module_load@load.html
   [415]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@xe_module_load@load.html
   [416]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@xe_module_load@load.html
   [417]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@xe_module_load@load.html
   [418]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@xe_module_load@load.html
   [419]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-433/igt@xe_module_load@load.html
   [420]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@xe_module_load@load.html
   [421]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@xe_module_load@load.html
   [422]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-433/igt@xe_module_load@load.html
   [423]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@xe_module_load@load.html
   [424]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@xe_module_load@load.html
   [425]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@xe_module_load@load.html
   [426]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@xe_module_load@load.html
   [427]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@xe_module_load@load.html
   [428]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@xe_module_load@load.html
   [429]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@xe_module_load@load.html
   [430]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@xe_module_load@load.html
   [431]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@xe_module_load@load.html
   [432]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@xe_module_load@load.html
   [433]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@xe_module_load@load.html
   [434]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-434/igt@xe_module_load@load.html
   [435]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-433/igt@xe_module_load@load.html
   [436]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@xe_module_load@load.html
   [437]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@xe_module_load@load.html

  * igt@xe_module_load@many-reload:
    - shard-adlp:         [DMESG-WARN][438] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][439] +1 other test pass
   [438]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-3/igt@xe_module_load@many-reload.html
   [439]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@xe_module_load@many-reload.html

  * igt@xe_pm@s4-basic-exec:
    - shard-adlp:         [ABORT][440] ([Intel XE#1794]) -> [PASS][441]
   [440]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-9/igt@xe_pm@s4-basic-exec.html
   [441]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-3/igt@xe_pm@s4-basic-exec.html

  * igt@xe_pm_residency@cpg-basic:
    - shard-bmg:          [DMESG-WARN][442] ([Intel XE#3428]) -> [PASS][443] +4 other tests pass
   [442]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-6/igt@xe_pm_residency@cpg-basic.html
   [443]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@xe_pm_residency@cpg-basic.html

  * igt@xe_query@query-invalid-extension:
    - shard-adlp:         [SKIP][444] -> [PASS][445] +8 other tests pass
   [444]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@xe_query@query-invalid-extension.html
   [445]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@xe_query@query-invalid-extension.html
    - shard-dg2-set2:     [SKIP][446] ([Intel XE#4208]) -> [PASS][447] +5 other tests pass
   [446]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@xe_query@query-invalid-extension.html
   [447]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@xe_query@query-invalid-extension.html

  
#### Warnings ####

  * igt@kms_async_flips@invalid-async-flip:
    - shard-dg2-set2:     [SKIP][448] ([Intel XE#4208] / [i915#2575]) -> [SKIP][449] ([Intel XE#873])
   [448]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@kms_async_flips@invalid-async-flip.html
   [449]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-436/igt@kms_async_flips@invalid-async-flip.html

  * igt@kms_content_protection@srm:
    - shard-bmg:          [SKIP][450] ([Intel XE#2341]) -> [FAIL][451] ([Intel XE#1178])
   [450]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-4/igt@kms_content_protection@srm.html
   [451]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@kms_content_protection@srm.html

  * igt@kms_flip@2x-flip-vs-expired-vblank:
    - shard-bmg:          [SKIP][452] ([Intel XE#2316]) -> [FAIL][453] ([Intel XE#3321])
   [452]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-5/igt@kms_flip@2x-flip-vs-expired-vblank.html
   [453]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank.html

  * igt@kms_flip@2x-wf_vblank-ts-check:
    - shard-bmg:          [SKIP][454] ([Intel XE#2316]) -> [FAIL][455] ([Intel XE#2882])
   [454]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-5/igt@kms_flip@2x-wf_vblank-ts-check.html
   [455]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-6/igt@kms_flip@2x-wf_vblank-ts-check.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render:
    - shard-bmg:          [SKIP][456] ([Intel XE#2311]) -> [SKIP][457] ([Intel XE#2312]) +15 other tests skip
   [456]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-8/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render.html
   [457]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt:
    - shard-adlp:         [SKIP][458] -> [SKIP][459] ([Intel XE#656]) +1 other test skip
   [458]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt.html
   [459]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render:
    - shard-bmg:          [SKIP][460] ([Intel XE#2312]) -> [SKIP][461] ([Intel XE#4141]) +12 other tests skip
   [460]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html
   [461]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
    - shard-bmg:          [SKIP][462] ([Intel XE#4141]) -> [SKIP][463] ([Intel XE#2312]) +7 other tests skip
   [462]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
   [463]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc:
    - shard-bmg:          [SKIP][464] ([Intel XE#2312]) -> [SKIP][465] ([Intel XE#2311]) +19 other tests skip
   [464]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
   [465]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render:
    - shard-bmg:          [SKIP][466] ([Intel XE#2313]) -> [SKIP][467] ([Intel XE#2312]) +15 other tests skip
   [466]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-3/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html
   [467]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt:
    - shard-bmg:          [SKIP][468] ([Intel XE#2312]) -> [SKIP][469] ([Intel XE#2313]) +16 other tests skip
   [468]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt.html
   [469]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
    - shard-adlp:         [SKIP][470] ([Intel XE#2351]) -> [SKIP][471] ([Intel XE#653])
   [470]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
   [471]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-6/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
    - shard-dg2-set2:     [SKIP][472] ([Intel XE#2351] / [Intel XE#4208]) -> [SKIP][473] ([Intel XE#658])
   [472]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
   [473]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html

  * igt@kms_plane_multiple@2x-tiling-yf:
    - shard-bmg:          [SKIP][474] ([Intel XE#2493]) -> [SKIP][475] ([Intel XE#4596])
   [474]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-bmg-7/igt@kms_plane_multiple@2x-tiling-yf.html
   [475]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-bmg-5/igt@kms_plane_multiple@2x-tiling-yf.html

  * igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf:
    - shard-dg2-set2:     [SKIP][476] ([Intel XE#4208]) -> [SKIP][477] ([Intel XE#1489])
   [476]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf.html
   [477]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-464/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf.html
    - shard-adlp:         [SKIP][478] -> [SKIP][479] ([Intel XE#1489])
   [478]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf.html
   [479]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-6/igt@kms_psr2_sf@pr-cursor-plane-move-continuous-sf.html

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom:
    - shard-adlp:         [DMESG-FAIL][480] ([Intel XE#4173]) -> [FAIL][481] ([Intel XE#1874])
   [480]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-3/igt@kms_rotation_crc@multiplane-rotation-cropping-bottom.html
   [481]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@kms_rotation_crc@multiplane-rotation-cropping-bottom.html

  * igt@xe_eudebug@read-metadata:
    - shard-adlp:         [SKIP][482] -> [SKIP][483] ([Intel XE#4837]) +1 other test skip
   [482]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@xe_eudebug@read-metadata.html
   [483]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@xe_eudebug@read-metadata.html
    - shard-dg2-set2:     [SKIP][484] ([Intel XE#4208]) -> [SKIP][485] ([Intel XE#4837]) +1 other test skip
   [484]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@xe_eudebug@read-metadata.html
   [485]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@xe_eudebug@read-metadata.html

  * igt@xe_exec_fault_mode@many-userptr-rebind-imm:
    - shard-dg2-set2:     [SKIP][486] ([Intel XE#4208]) -> [SKIP][487] ([Intel XE#288])
   [486]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@xe_exec_fault_mode@many-userptr-rebind-imm.html
   [487]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-432/igt@xe_exec_fault_mode@many-userptr-rebind-imm.html
    - shard-adlp:         [SKIP][488] -> [SKIP][489] ([Intel XE#288])
   [488]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@xe_exec_fault_mode@many-userptr-rebind-imm.html
   [489]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-1/igt@xe_exec_fault_mode@many-userptr-rebind-imm.html

  * igt@xe_exec_system_allocator@twice-mmap-new-race-nomemset:
    - shard-adlp:         [SKIP][490] -> [SKIP][491] ([Intel XE#4915]) +1 other test skip
   [490]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-adlp-8/igt@xe_exec_system_allocator@twice-mmap-new-race-nomemset.html
   [491]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-adlp-8/igt@xe_exec_system_allocator@twice-mmap-new-race-nomemset.html
    - shard-dg2-set2:     [SKIP][492] ([Intel XE#4208]) -> [SKIP][493] ([Intel XE#4915]) +1 other test skip
   [492]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797/shard-dg2-435/igt@xe_exec_system_allocator@twice-mmap-new-race-nomemset.html
   [493]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/shard-dg2-435/igt@xe_exec_system_allocator@twice-mmap-new-race-nomemset.html

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

  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [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#1138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1138
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [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#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1469]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1469
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
  [Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
  [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#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
  [Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
  [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#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
  [Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
  [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#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
  [Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
  [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#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [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#2352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2352
  [Intel XE#2373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2373
  [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
  [Intel XE#2393]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2393
  [Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
  [Intel XE#2493]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2493
  [Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
  [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
  [Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
  [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#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
  [Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
  [Intel XE#2925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2925
  [Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#3012]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3012
  [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#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
  [Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
  [Intel XE#3428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3428
  [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#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#3701]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3701
  [Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#3767]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3767
  [Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
  [Intel XE#3908]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3908
  [Intel XE#4045]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4045
  [Intel XE#4056]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4056
  [Intel XE#4090]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4090
  [Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
  [Intel XE#4208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4208
  [Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
  [Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
  [Intel XE#4416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4416
  [Intel XE#4417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4417
  [Intel XE#4418]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4418
  [Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
  [Intel XE#4488]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4488
  [Intel XE#4501]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4501
  [Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#4565]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4565
  [Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
  [Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
  [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#4633]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4633
  [Intel XE#4650]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4650
  [Intel XE#4760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4760
  [Intel XE#4828]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4828
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4914]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4914
  [Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
  [Intel XE#4921]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4921
  [Intel XE#4929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4929
  [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
  [Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#658]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/658
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [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#827]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/827
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#873]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/873
  [Intel XE#911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/911
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [i915#2575]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2575


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

  * IGT: IGT_8345 -> IGT_8346
  * Linux: xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797 -> xe-pw-146079v5

  IGT_8345: b0aa259fb34bc85fd27a2a710a862e6ebea02d30 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8346: df3036dadc729bf68aaf85ec697c9a9df797af43 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797: fc3ad08303990b2481cc45a6103ed79935dd3797
  xe-pw-146079v5: 146079v5

== Logs ==

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

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

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

* Re: [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges
  2025-04-30 12:19 ` [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges Himal Prasad Ghimiray
@ 2025-05-02 13:42   ` Thomas Hellström
  2025-05-02 14:35     ` Ghimiray, Himal Prasad
  2025-05-12 12:48   ` Matthew Brost
  1 sibling, 1 reply; 43+ messages in thread
From: Thomas Hellström @ 2025-05-02 13:42 UTC (permalink / raw)
  To: Himal Prasad Ghimiray, intel-xe; +Cc: matthew.brost

On Wed, 2025-04-30 at 17:49 +0530, Himal Prasad Ghimiray wrote:
> This commit adds prefetch support for SVM ranges, utilizing the
> existing ioctl vm_bind functionality to achieve this.
> 
> v2: rebase
> 
> v3:
>    - use xa_for_each() instead of manual loop
>    - check range is valid and in preferred location before adding to
>      xarray
>    - Fix naming conventions
>    - Fix return condition as -ENODATA instead of -EAGAIN (Matthew
> Brost)
>    - Handle sparsely populated cpu vma range (Matthew Brost)
> 
> v4:
>    - fix end address to find next cpu vma in case of -ENOENT
> 
> v5:
>    - Move find next vma logic to drm gpusvm layer
>    - Avoid mixing declaration and logic
> 
> v6:
>   - Use new function names
>   - Move eviction logic to prefetch_ranges
> 
> Cc: Matthew Brost <matthew.brost@intel.com>
> Signed-off-by: Himal Prasad Ghimiray
> <himal.prasad.ghimiray@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_pt.c |  58 ++++++++---
>  drivers/gpu/drm/xe/xe_vm.c | 197
> +++++++++++++++++++++++++++++++++++--
>  2 files changed, 234 insertions(+), 21 deletions(-)
> 

I was thinking a bit around the UAPI, and prefetching foreign device
regions. That doesn't really fit into the current UAPI.

What are your thoughts here. IMO this should align somewhat to what we
do for madvise().

Let's say we want to prefetch into a foreign device memory region
identified by an fd? I figure we could add that later as an extension. 

But how does the UMD API for this look? Do we cover current usage with
the existing UAPI syntax?

/Thomas


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

* Re: [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges
  2025-05-02 13:42   ` Thomas Hellström
@ 2025-05-02 14:35     ` Ghimiray, Himal Prasad
  2025-05-02 14:39       ` Thomas Hellström
  0 siblings, 1 reply; 43+ messages in thread
From: Ghimiray, Himal Prasad @ 2025-05-02 14:35 UTC (permalink / raw)
  To: Thomas Hellström, intel-xe; +Cc: matthew.brost



On 02-05-2025 19:12, Thomas Hellström wrote:
> On Wed, 2025-04-30 at 17:49 +0530, Himal Prasad Ghimiray wrote:
>> This commit adds prefetch support for SVM ranges, utilizing the
>> existing ioctl vm_bind functionality to achieve this.
>>
>> v2: rebase
>>
>> v3:
>>     - use xa_for_each() instead of manual loop
>>     - check range is valid and in preferred location before adding to
>>       xarray
>>     - Fix naming conventions
>>     - Fix return condition as -ENODATA instead of -EAGAIN (Matthew
>> Brost)
>>     - Handle sparsely populated cpu vma range (Matthew Brost)
>>
>> v4:
>>     - fix end address to find next cpu vma in case of -ENOENT
>>
>> v5:
>>     - Move find next vma logic to drm gpusvm layer
>>     - Avoid mixing declaration and logic
>>
>> v6:
>>    - Use new function names
>>    - Move eviction logic to prefetch_ranges
>>
>> Cc: Matthew Brost <matthew.brost@intel.com>
>> Signed-off-by: Himal Prasad Ghimiray
>> <himal.prasad.ghimiray@intel.com>
>> ---
>>   drivers/gpu/drm/xe/xe_pt.c |  58 ++++++++---
>>   drivers/gpu/drm/xe/xe_vm.c | 197
>> +++++++++++++++++++++++++++++++++++--
>>   2 files changed, 234 insertions(+), 21 deletions(-)
>>
> 
> I was thinking a bit around the UAPI, and prefetching foreign device
> regions. That doesn't really fit into the current UAPI.
> 
> What are your thoughts here. IMO this should align somewhat to what we
> do for madvise().
> 
> Let's say we want to prefetch into a foreign device memory region
> identified by an fd? I figure we could add that later as an extension.
> 
> But how does the UMD API for this look? Do we cover current usage with
> the existing UAPI syntax?

During Initial discussions one of the way we discussed was using a flag 
something like DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC for prefetch to 
madvise assigned preferred location.

so it will be two step process from UMD perspective:
1) madvise sets up preferred location: which should also be used in 
pagefault handler.

2) If user wants to prefetch to same location, user passes region as 
DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC to vm_bind ioctl.

https://patchwork.freedesktop.org/patch/647180/?series=146290&rev=4

or we can simply pass u32 devmem_fd as prefetch_mem_region_instance to 
vm_bind ioctl, if we want it to be single step, but w/o madvise that 
wont work for pf handler.

/Himal>
> /Thomas
> 


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

* Re: [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges
  2025-05-02 14:35     ` Ghimiray, Himal Prasad
@ 2025-05-02 14:39       ` Thomas Hellström
  2025-05-02 16:11         ` Ghimiray, Himal Prasad
  0 siblings, 1 reply; 43+ messages in thread
From: Thomas Hellström @ 2025-05-02 14:39 UTC (permalink / raw)
  To: Ghimiray, Himal Prasad, intel-xe; +Cc: matthew.brost

On Fri, 2025-05-02 at 20:05 +0530, Ghimiray, Himal Prasad wrote:
> 
> 
> On 02-05-2025 19:12, Thomas Hellström wrote:
> > On Wed, 2025-04-30 at 17:49 +0530, Himal Prasad Ghimiray wrote:
> > > This commit adds prefetch support for SVM ranges, utilizing the
> > > existing ioctl vm_bind functionality to achieve this.
> > > 
> > > v2: rebase
> > > 
> > > v3:
> > >     - use xa_for_each() instead of manual loop
> > >     - check range is valid and in preferred location before
> > > adding to
> > >       xarray
> > >     - Fix naming conventions
> > >     - Fix return condition as -ENODATA instead of -EAGAIN
> > > (Matthew
> > > Brost)
> > >     - Handle sparsely populated cpu vma range (Matthew Brost)
> > > 
> > > v4:
> > >     - fix end address to find next cpu vma in case of -ENOENT
> > > 
> > > v5:
> > >     - Move find next vma logic to drm gpusvm layer
> > >     - Avoid mixing declaration and logic
> > > 
> > > v6:
> > >    - Use new function names
> > >    - Move eviction logic to prefetch_ranges
> > > 
> > > Cc: Matthew Brost <matthew.brost@intel.com>
> > > Signed-off-by: Himal Prasad Ghimiray
> > > <himal.prasad.ghimiray@intel.com>
> > > ---
> > >   drivers/gpu/drm/xe/xe_pt.c |  58 ++++++++---
> > >   drivers/gpu/drm/xe/xe_vm.c | 197
> > > +++++++++++++++++++++++++++++++++++--
> > >   2 files changed, 234 insertions(+), 21 deletions(-)
> > > 
> > 
> > I was thinking a bit around the UAPI, and prefetching foreign
> > device
> > regions. That doesn't really fit into the current UAPI.
> > 
> > What are your thoughts here. IMO this should align somewhat to what
> > we
> > do for madvise().
> > 
> > Let's say we want to prefetch into a foreign device memory region
> > identified by an fd? I figure we could add that later as an
> > extension.
> > 
> > But how does the UMD API for this look? Do we cover current usage
> > with
> > the existing UAPI syntax?
> 
> During Initial discussions one of the way we discussed was using a
> flag 
> something like DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC for prefetch to 
> madvise assigned preferred location.
> 
> so it will be two step process from UMD perspective:
> 1) madvise sets up preferred location: which should also be used in 
> pagefault handler.
> 
> 2) If user wants to prefetch to same location, user passes region as 
> DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC to vm_bind ioctl.
> 
> https://patchwork.freedesktop.org/patch/647180/?series=146290&rev=4

Indeed, thanks for reminding me.

> 
> or we can simply pass u32 devmem_fd as prefetch_mem_region_instance
> to 
> vm_bind ioctl,

But that wouldn't work if we have published UMD using the
mem_region_instance as the local mem_region_instance, right?

So if we want that we'd need an extension?

/Thomas



>  if we want it to be single step, but w/o madvise that 
> wont work for pf handler.



> 
> /Himal>
> > /Thomas
> > 
> 


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

* Re: [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges
  2025-05-02 14:39       ` Thomas Hellström
@ 2025-05-02 16:11         ` Ghimiray, Himal Prasad
  2025-05-07 11:39           ` Thomas Hellström
  0 siblings, 1 reply; 43+ messages in thread
From: Ghimiray, Himal Prasad @ 2025-05-02 16:11 UTC (permalink / raw)
  To: Thomas Hellström, intel-xe; +Cc: matthew.brost



On 02-05-2025 20:09, Thomas Hellström wrote:
> On Fri, 2025-05-02 at 20:05 +0530, Ghimiray, Himal Prasad wrote:
>>
>>
>> On 02-05-2025 19:12, Thomas Hellström wrote:
>>> On Wed, 2025-04-30 at 17:49 +0530, Himal Prasad Ghimiray wrote:
>>>> This commit adds prefetch support for SVM ranges, utilizing the
>>>> existing ioctl vm_bind functionality to achieve this.
>>>>
>>>> v2: rebase
>>>>
>>>> v3:
>>>>      - use xa_for_each() instead of manual loop
>>>>      - check range is valid and in preferred location before
>>>> adding to
>>>>        xarray
>>>>      - Fix naming conventions
>>>>      - Fix return condition as -ENODATA instead of -EAGAIN
>>>> (Matthew
>>>> Brost)
>>>>      - Handle sparsely populated cpu vma range (Matthew Brost)
>>>>
>>>> v4:
>>>>      - fix end address to find next cpu vma in case of -ENOENT
>>>>
>>>> v5:
>>>>      - Move find next vma logic to drm gpusvm layer
>>>>      - Avoid mixing declaration and logic
>>>>
>>>> v6:
>>>>     - Use new function names
>>>>     - Move eviction logic to prefetch_ranges
>>>>
>>>> Cc: Matthew Brost <matthew.brost@intel.com>
>>>> Signed-off-by: Himal Prasad Ghimiray
>>>> <himal.prasad.ghimiray@intel.com>
>>>> ---
>>>>    drivers/gpu/drm/xe/xe_pt.c |  58 ++++++++---
>>>>    drivers/gpu/drm/xe/xe_vm.c | 197
>>>> +++++++++++++++++++++++++++++++++++--
>>>>    2 files changed, 234 insertions(+), 21 deletions(-)
>>>>
>>>
>>> I was thinking a bit around the UAPI, and prefetching foreign
>>> device
>>> regions. That doesn't really fit into the current UAPI.
>>>
>>> What are your thoughts here. IMO this should align somewhat to what
>>> we
>>> do for madvise().
>>>
>>> Let's say we want to prefetch into a foreign device memory region
>>> identified by an fd? I figure we could add that later as an
>>> extension.
>>>
>>> But how does the UMD API for this look? Do we cover current usage
>>> with
>>> the existing UAPI syntax?
>>
>> During Initial discussions one of the way we discussed was using a
>> flag
>> something like DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC for prefetch to
>> madvise assigned preferred location.
>>
>> so it will be two step process from UMD perspective:
>> 1) madvise sets up preferred location: which should also be used in
>> pagefault handler.
>>
>> 2) If user wants to prefetch to same location, user passes region as
>> DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC to vm_bind ioctl.
>>
>> https://patchwork.freedesktop.org/patch/647180/?series=146290&rev=4
> 
> Indeed, thanks for reminding me.
> 
>>
>> or we can simply pass u32 devmem_fd as prefetch_mem_region_instance
>> to
>> vm_bind ioctl,
> 
> But that wouldn't work if we have published UMD using the
> mem_region_instance as the local mem_region_instance, right?

Thats correct.

> 
> So if we want that we'd need an extension?

True. IMO sticking to DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC  makes more sense.

> 
> /Thomas
> 
> 
> 
>>   if we want it to be single step, but w/o madvise that
>> wont work for pf handler.
> 
> 
> 
>>
>> /Himal>
>>> /Thomas
>>>
>>
> 


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

* Re: [PATCH v6 02/20] drm/xe: Strict migration policy for atomic SVM faults
  2025-04-30 12:18 ` [PATCH v6 02/20] drm/xe: Strict migration policy for atomic SVM faults Himal Prasad Ghimiray
@ 2025-05-05 15:20   ` Thomas Hellström
  2025-05-05 20:18     ` Matthew Brost
  0 siblings, 1 reply; 43+ messages in thread
From: Thomas Hellström @ 2025-05-05 15:20 UTC (permalink / raw)
  To: Himal Prasad Ghimiray, intel-xe; +Cc: matthew.brost, stable

Hi, Himal,

On Wed, 2025-04-30 at 17:48 +0530, Himal Prasad Ghimiray wrote:
> From: Matthew Brost <matthew.brost@intel.com>
> 
> Mixing GPU and CPU atomics does not work unless a strict migration
> policy of GPU atomics must be device memory. Enforce a policy of must
> be
> in VRAM with a retry loop of 3 attempts, if retry loop fails abort
> fault.
> 
> Removing always_migrate_to_vram modparam as we now have real
> migration
> policy.
> 
> v2:
>  - Only retry migration on atomics
>  - Drop alway migrate modparam
> v3:
>  - Only set vram_only on DGFX (Himal)
>  - Bail on get_pages failure if vram_only and retry count exceeded
> (Himal)
>  - s/vram_only/devmem_only
>  - Update xe_svm_range_is_valid to accept devmem_only argument
> v4:
>  - Fix logic bug get_pages failure
> v5:
>  - Fix commit message (Himal)
>  - Mention removing always_migrate_to_vram in commit message (Lucas)
>  - Fix xe_svm_range_is_valid to check for devmem pages
>  - Bail on devmem_only && !migrate_devmem (Thomas)
> v6:
>  - Add READ_ONCE barriers for opportunistic checks (Thomas)
> 
> Fixes: 2f118c949160 ("drm/xe: Add SVM VRAM migration")
> Cc: stable@vger.kernel.org
> Signed-off-by: Himal Prasad Ghimiray
> <himal.prasad.ghimiray@intel.com>
> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> Acked-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_module.c |   3 -
>  drivers/gpu/drm/xe/xe_module.h |   1 -
>  drivers/gpu/drm/xe/xe_svm.c    | 103 ++++++++++++++++++++++++-------
> --
>  drivers/gpu/drm/xe/xe_svm.h    |   5 --
>  include/drm/drm_gpusvm.h       |  40 ++++++++-----
>  5 files changed, 103 insertions(+), 49 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_module.c
> b/drivers/gpu/drm/xe/xe_module.c
> index 64bf46646544..e4742e27e2cd 100644
> --- a/drivers/gpu/drm/xe/xe_module.c
> +++ b/drivers/gpu/drm/xe/xe_module.c
> @@ -30,9 +30,6 @@ struct xe_modparam xe_modparam = {
>  module_param_named(svm_notifier_size, xe_modparam.svm_notifier_size,
> uint, 0600);
>  MODULE_PARM_DESC(svm_notifier_size, "Set the svm notifier size(in
> MiB), must be power of 2");
>  
> -module_param_named(always_migrate_to_vram,
> xe_modparam.always_migrate_to_vram, bool, 0444);
> -MODULE_PARM_DESC(always_migrate_to_vram, "Always migrate to VRAM on
> GPU fault");
> -
>  module_param_named_unsafe(force_execlist,
> xe_modparam.force_execlist, bool, 0444);
>  MODULE_PARM_DESC(force_execlist, "Force Execlist submission");
>  
> diff --git a/drivers/gpu/drm/xe/xe_module.h
> b/drivers/gpu/drm/xe/xe_module.h
> index 84339e509c80..5a3bfea8b7b4 100644
> --- a/drivers/gpu/drm/xe/xe_module.h
> +++ b/drivers/gpu/drm/xe/xe_module.h
> @@ -12,7 +12,6 @@
>  struct xe_modparam {
>  	bool force_execlist;
>  	bool probe_display;
> -	bool always_migrate_to_vram;
>  	u32 force_vram_bar_size;
>  	int guc_log_level;
>  	char *guc_firmware_path;
> diff --git a/drivers/gpu/drm/xe/xe_svm.c
> b/drivers/gpu/drm/xe/xe_svm.c
> index 890f6b2f40e9..dcc84e65ca96 100644
> --- a/drivers/gpu/drm/xe/xe_svm.c
> +++ b/drivers/gpu/drm/xe/xe_svm.c
> @@ -16,8 +16,12 @@
>  
>  static bool xe_svm_range_in_vram(struct xe_svm_range *range)
>  {
> -	/* Not reliable without notifier lock */
> -	return range->base.flags.has_devmem_pages;
> +	/* Not reliable without notifier lock, opportunistic only */
> +	struct drm_gpusvm_range_flags flags = {
> +		.__flags = READ_ONCE(range->base.flags.__flags),
> +	};
> +
> +	return flags.has_devmem_pages;
>  }
>  
>  static bool xe_svm_range_has_vram_binding(struct xe_svm_range
> *range)
> @@ -650,9 +654,13 @@ void xe_svm_fini(struct xe_vm *vm)
>  }
>  
>  static bool xe_svm_range_is_valid(struct xe_svm_range *range,
> -				  struct xe_tile *tile)
> +				  struct xe_tile *tile,
> +				  bool devmem_only)
>  {
> -	return (range->tile_present & ~range->tile_invalidated) &
> BIT(tile->id);
> +	/* Not reliable without notifier lock, opportunistic only */
> +	return ((READ_ONCE(range->tile_present) &
> +		 ~READ_ONCE(range->tile_invalidated)) & BIT(tile-
> >id)) &&
> +		(!devmem_only || xe_svm_range_in_vram(range));
>  }

Hmm, TBH I had something more elaborate in mind:

https://lore.kernel.org/intel-xe/b5569de8cc036e23b976f21a51c4eb5ca104d4bb.camel@linux.intel.com/

(Separate function for lockless access and a lockdep assert for locked
access + similar documentation as the functions I mentioned there + a
"Pairs with" comment.

Thanks,
Thomas



>  
>  #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
> @@ -726,6 +734,36 @@ static int xe_svm_alloc_vram(struct xe_vm *vm,
> struct xe_tile *tile,
>  }
>  #endif
>  
> +static bool supports_4K_migration(struct xe_device *xe)
> +{
> +	if (xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
> +		return false;
> +
> +	return true;
> +}
> +
> +static bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range
> *range,
> +					       struct xe_vma *vma)
> +{
> +	struct xe_vm *vm = range_to_vm(&range->base);
> +	u64 range_size = xe_svm_range_size(range);
> +
> +	if (!range->base.flags.migrate_devmem)
> +		return false;
> +
> +	/* Not reliable without notifier lock, opportunistic only */
> +	if (xe_svm_range_in_vram(range)) {
> +		drm_dbg(&vm->xe->drm, "Range is already in VRAM\n");
> +		return false;
> +	}
> +
> +	if (range_size <= SZ_64K && !supports_4K_migration(vm->xe))
> {
> +		drm_dbg(&vm->xe->drm, "Platform doesn't support
> SZ_4K range migration\n");
> +		return false;
> +	}
> +
> +	return true;
> +}
>  
>  /**
>   * xe_svm_handle_pagefault() - SVM handle page fault
> @@ -750,12 +788,15 @@ int xe_svm_handle_pagefault(struct xe_vm *vm,
> struct xe_vma *vma,
>  			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
>  		.check_pages_threshold = IS_DGFX(vm->xe) &&
>  			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR) ?
> SZ_64K : 0,
> +		.devmem_only = atomic && IS_DGFX(vm->xe) &&
> +			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
>  	};
>  	struct xe_svm_range *range;
>  	struct drm_gpusvm_range *r;
>  	struct drm_exec exec;
>  	struct dma_fence *fence;
>  	struct xe_tile *tile = gt_to_tile(gt);
> +	int migrate_try_count = ctx.devmem_only ? 3 : 1;
>  	ktime_t end = 0;
>  	int err;
>  
> @@ -776,24 +817,30 @@ int xe_svm_handle_pagefault(struct xe_vm *vm,
> struct xe_vma *vma,
>  	if (IS_ERR(r))
>  		return PTR_ERR(r);
>  
> +	if (ctx.devmem_only && !r->flags.migrate_devmem)
> +		return -EACCES;
> +
>  	range = to_xe_range(r);
> -	if (xe_svm_range_is_valid(range, tile))
> +	if (xe_svm_range_is_valid(range, tile, ctx.devmem_only))
>  		return 0;
>  
>  	range_debug(range, "PAGE FAULT");
>  
> -	/* XXX: Add migration policy, for now migrate range once */
> -	if (!range->skip_migrate && range->base.flags.migrate_devmem
> &&
> -	    xe_svm_range_size(range) >= SZ_64K) {
> -		range->skip_migrate = true;
> -
> +	if (--migrate_try_count >= 0 &&
> +	    xe_svm_range_needs_migrate_to_vram(range, vma)) {
>  		err = xe_svm_alloc_vram(vm, tile, range, &ctx);
>  		if (err) {
> -			drm_dbg(&vm->xe->drm,
> -				"VRAM allocation failed, falling
> back to "
> -				"retrying fault, asid=%u,
> errno=%pe\n",
> -				vm->usm.asid, ERR_PTR(err));
> -			goto retry;
> +			if (migrate_try_count || !ctx.devmem_only) {
> +				drm_dbg(&vm->xe->drm,
> +					"VRAM allocation failed,
> falling back to retrying fault, asid=%u, errno=%pe\n",
> +					vm->usm.asid, ERR_PTR(err));
> +				goto retry;
> +			} else {
> +				drm_err(&vm->xe->drm,
> +					"VRAM allocation failed,
> retry count exceeded, asid=%u, errno=%pe\n",
> +					vm->usm.asid, ERR_PTR(err));
> +				return err;
> +			}
>  		}
>  	}
>  
> @@ -801,15 +848,22 @@ int xe_svm_handle_pagefault(struct xe_vm *vm,
> struct xe_vma *vma,
>  	err = drm_gpusvm_range_get_pages(&vm->svm.gpusvm, r, &ctx);
>  	/* Corner where CPU mappings have changed */
>  	if (err == -EOPNOTSUPP || err == -EFAULT || err == -EPERM) {
> -		if (err == -EOPNOTSUPP) {
> -			range_debug(range, "PAGE FAULT - EVICT
> PAGES");
> -			drm_gpusvm_range_evict(&vm->svm.gpusvm,
> &range->base);
> +		if (migrate_try_count > 0 || !ctx.devmem_only) {
> +			if (err == -EOPNOTSUPP) {
> +				range_debug(range, "PAGE FAULT -
> EVICT PAGES");
> +				drm_gpusvm_range_evict(&vm-
> >svm.gpusvm,
> +						       &range-
> >base);
> +			}
> +			drm_dbg(&vm->xe->drm,
> +				"Get pages failed, falling back to
> retrying, asid=%u, gpusvm=%p, errno=%pe\n",
> +				vm->usm.asid, &vm->svm.gpusvm,
> ERR_PTR(err));
> +			range_debug(range, "PAGE FAULT - RETRY
> PAGES");
> +			goto retry;
> +		} else {
> +			drm_err(&vm->xe->drm,
> +				"Get pages failed, retry count
> exceeded, asid=%u, gpusvm=%p, errno=%pe\n",
> +				vm->usm.asid, &vm->svm.gpusvm,
> ERR_PTR(err));
>  		}
> -		drm_dbg(&vm->xe->drm,
> -			"Get pages failed, falling back to retrying,
> asid=%u, gpusvm=%p, errno=%pe\n",
> -			vm->usm.asid, &vm->svm.gpusvm,
> ERR_PTR(err));
> -		range_debug(range, "PAGE FAULT - RETRY PAGES");
> -		goto retry;
>  	}
>  	if (err) {
>  		range_debug(range, "PAGE FAULT - FAIL PAGE
> COLLECT");
> @@ -843,9 +897,6 @@ int xe_svm_handle_pagefault(struct xe_vm *vm,
> struct xe_vma *vma,
>  	}
>  	drm_exec_fini(&exec);
>  
> -	if (xe_modparam.always_migrate_to_vram)
> -		range->skip_migrate = false;
> -
>  	dma_fence_wait(fence, false);
>  	dma_fence_put(fence);
>  
> diff --git a/drivers/gpu/drm/xe/xe_svm.h
> b/drivers/gpu/drm/xe/xe_svm.h
> index 3d441eb1f7ea..0e1f376a7471 100644
> --- a/drivers/gpu/drm/xe/xe_svm.h
> +++ b/drivers/gpu/drm/xe/xe_svm.h
> @@ -39,11 +39,6 @@ struct xe_svm_range {
>  	 * range. Protected by GPU SVM notifier lock.
>  	 */
>  	u8 tile_invalidated;
> -	/**
> -	 * @skip_migrate: Skip migration to VRAM, protected by GPU
> fault handler
> -	 * locking.
> -	 */
> -	u8 skip_migrate	:1;
>  };
>  
>  /**
> diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
> index 9fd25fc880a4..653d48dbe1c1 100644
> --- a/include/drm/drm_gpusvm.h
> +++ b/include/drm/drm_gpusvm.h
> @@ -185,6 +185,31 @@ struct drm_gpusvm_notifier {
>  	} flags;
>  };
>  
> +/**
> + * struct drm_gpusvm_range_flags - Structure representing a GPU SVM
> range flags
> + *
> + * @migrate_devmem: Flag indicating whether the range can be
> migrated to device memory
> + * @unmapped: Flag indicating if the range has been unmapped
> + * @partial_unmap: Flag indicating if the range has been partially
> unmapped
> + * @has_devmem_pages: Flag indicating if the range has devmem pages
> + * @has_dma_mapping: Flag indicating if the range has a DMA mapping
> + * @__flags: Flags for range in u16 form (used for READ_ONCE)
> + */
> +struct drm_gpusvm_range_flags {
> +	union {
> +		struct {
> +			/* All flags below must be set upon creation
> */
> +			u16 migrate_devmem : 1;
> +			/* All flags below must be set / cleared
> under notifier lock */
> +			u16 unmapped : 1;
> +			u16 partial_unmap : 1;
> +			u16 has_devmem_pages : 1;
> +			u16 has_dma_mapping : 1;
> +		};
> +		u16 __flags;
> +	};
> +};
> +
>  /**
>   * struct drm_gpusvm_range - Structure representing a GPU SVM range
>   *
> @@ -198,11 +223,6 @@ struct drm_gpusvm_notifier {
>   * @dpagemap: The struct drm_pagemap of the device pages we're dma-
> mapping.
>   *            Note this is assuming only one drm_pagemap per range
> is allowed.
>   * @flags: Flags for range
> - * @flags.migrate_devmem: Flag indicating whether the range can be
> migrated to device memory
> - * @flags.unmapped: Flag indicating if the range has been unmapped
> - * @flags.partial_unmap: Flag indicating if the range has been
> partially unmapped
> - * @flags.has_devmem_pages: Flag indicating if the range has devmem
> pages
> - * @flags.has_dma_mapping: Flag indicating if the range has a DMA
> mapping
>   *
>   * This structure represents a GPU SVM range used for tracking
> memory ranges
>   * mapped in a DRM device.
> @@ -216,15 +236,7 @@ struct drm_gpusvm_range {
>  	unsigned long notifier_seq;
>  	struct drm_pagemap_device_addr *dma_addr;
>  	struct drm_pagemap *dpagemap;
> -	struct {
> -		/* All flags below must be set upon creation */
> -		u16 migrate_devmem : 1;
> -		/* All flags below must be set / cleared under
> notifier lock */
> -		u16 unmapped : 1;
> -		u16 partial_unmap : 1;
> -		u16 has_devmem_pages : 1;
> -		u16 has_dma_mapping : 1;
> -	} flags;
> +	struct drm_gpusvm_range_flags flags;
>  };
>  
>  /**


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

* Re: [PATCH v6 02/20] drm/xe: Strict migration policy for atomic SVM faults
  2025-05-05 15:20   ` Thomas Hellström
@ 2025-05-05 20:18     ` Matthew Brost
  2025-05-06 10:13       ` Thomas Hellström
  0 siblings, 1 reply; 43+ messages in thread
From: Matthew Brost @ 2025-05-05 20:18 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: Himal Prasad Ghimiray, intel-xe, stable

On Mon, May 05, 2025 at 05:20:00PM +0200, Thomas Hellström wrote:
> Hi, Himal,
> 
> On Wed, 2025-04-30 at 17:48 +0530, Himal Prasad Ghimiray wrote:
> > From: Matthew Brost <matthew.brost@intel.com>
> > 
> > Mixing GPU and CPU atomics does not work unless a strict migration
> > policy of GPU atomics must be device memory. Enforce a policy of must
> > be
> > in VRAM with a retry loop of 3 attempts, if retry loop fails abort
> > fault.
> > 
> > Removing always_migrate_to_vram modparam as we now have real
> > migration
> > policy.
> > 
> > v2:
> >  - Only retry migration on atomics
> >  - Drop alway migrate modparam
> > v3:
> >  - Only set vram_only on DGFX (Himal)
> >  - Bail on get_pages failure if vram_only and retry count exceeded
> > (Himal)
> >  - s/vram_only/devmem_only
> >  - Update xe_svm_range_is_valid to accept devmem_only argument
> > v4:
> >  - Fix logic bug get_pages failure
> > v5:
> >  - Fix commit message (Himal)
> >  - Mention removing always_migrate_to_vram in commit message (Lucas)
> >  - Fix xe_svm_range_is_valid to check for devmem pages
> >  - Bail on devmem_only && !migrate_devmem (Thomas)
> > v6:
> >  - Add READ_ONCE barriers for opportunistic checks (Thomas)
> > 
> > Fixes: 2f118c949160 ("drm/xe: Add SVM VRAM migration")
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Himal Prasad Ghimiray
> > <himal.prasad.ghimiray@intel.com>
> > Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> > Acked-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> > ---
> >  drivers/gpu/drm/xe/xe_module.c |   3 -
> >  drivers/gpu/drm/xe/xe_module.h |   1 -
> >  drivers/gpu/drm/xe/xe_svm.c    | 103 ++++++++++++++++++++++++-------
> > --
> >  drivers/gpu/drm/xe/xe_svm.h    |   5 --
> >  include/drm/drm_gpusvm.h       |  40 ++++++++-----
> >  5 files changed, 103 insertions(+), 49 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/xe_module.c
> > b/drivers/gpu/drm/xe/xe_module.c
> > index 64bf46646544..e4742e27e2cd 100644
> > --- a/drivers/gpu/drm/xe/xe_module.c
> > +++ b/drivers/gpu/drm/xe/xe_module.c
> > @@ -30,9 +30,6 @@ struct xe_modparam xe_modparam = {
> >  module_param_named(svm_notifier_size, xe_modparam.svm_notifier_size,
> > uint, 0600);
> >  MODULE_PARM_DESC(svm_notifier_size, "Set the svm notifier size(in
> > MiB), must be power of 2");
> >  
> > -module_param_named(always_migrate_to_vram,
> > xe_modparam.always_migrate_to_vram, bool, 0444);
> > -MODULE_PARM_DESC(always_migrate_to_vram, "Always migrate to VRAM on
> > GPU fault");
> > -
> >  module_param_named_unsafe(force_execlist,
> > xe_modparam.force_execlist, bool, 0444);
> >  MODULE_PARM_DESC(force_execlist, "Force Execlist submission");
> >  
> > diff --git a/drivers/gpu/drm/xe/xe_module.h
> > b/drivers/gpu/drm/xe/xe_module.h
> > index 84339e509c80..5a3bfea8b7b4 100644
> > --- a/drivers/gpu/drm/xe/xe_module.h
> > +++ b/drivers/gpu/drm/xe/xe_module.h
> > @@ -12,7 +12,6 @@
> >  struct xe_modparam {
> >  	bool force_execlist;
> >  	bool probe_display;
> > -	bool always_migrate_to_vram;
> >  	u32 force_vram_bar_size;
> >  	int guc_log_level;
> >  	char *guc_firmware_path;
> > diff --git a/drivers/gpu/drm/xe/xe_svm.c
> > b/drivers/gpu/drm/xe/xe_svm.c
> > index 890f6b2f40e9..dcc84e65ca96 100644
> > --- a/drivers/gpu/drm/xe/xe_svm.c
> > +++ b/drivers/gpu/drm/xe/xe_svm.c
> > @@ -16,8 +16,12 @@
> >  
> >  static bool xe_svm_range_in_vram(struct xe_svm_range *range)
> >  {
> > -	/* Not reliable without notifier lock */
> > -	return range->base.flags.has_devmem_pages;
> > +	/* Not reliable without notifier lock, opportunistic only */
> > +	struct drm_gpusvm_range_flags flags = {
> > +		.__flags = READ_ONCE(range->base.flags.__flags),
> > +	};
> > +
> > +	return flags.has_devmem_pages;
> >  }
> >  
> >  static bool xe_svm_range_has_vram_binding(struct xe_svm_range
> > *range)
> > @@ -650,9 +654,13 @@ void xe_svm_fini(struct xe_vm *vm)
> >  }
> >  
> >  static bool xe_svm_range_is_valid(struct xe_svm_range *range,
> > -				  struct xe_tile *tile)
> > +				  struct xe_tile *tile,
> > +				  bool devmem_only)
> >  {
> > -	return (range->tile_present & ~range->tile_invalidated) &
> > BIT(tile->id);
> > +	/* Not reliable without notifier lock, opportunistic only */
> > +	return ((READ_ONCE(range->tile_present) &
> > +		 ~READ_ONCE(range->tile_invalidated)) & BIT(tile-
> > >id)) &&
> > +		(!devmem_only || xe_svm_range_in_vram(range));
> >  }
> 
> Hmm, TBH I had something more elaborate in mind:
> 
> https://lore.kernel.org/intel-xe/b5569de8cc036e23b976f21a51c4eb5ca104d4bb.camel@linux.intel.com/
> 
> (Separate function for lockless access and a lockdep assert for locked
> access + similar documentation as the functions I mentioned there + a
> "Pairs with" comment.
> 

But if the locked functions are unused wouldn't the compiler complain?

Matt

> Thanks,
> Thomas
> 
> 
> 
> >  
> >  #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
> > @@ -726,6 +734,36 @@ static int xe_svm_alloc_vram(struct xe_vm *vm,
> > struct xe_tile *tile,
> >  }
> >  #endif
> >  
> > +static bool supports_4K_migration(struct xe_device *xe)
> > +{
> > +	if (xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
> > +		return false;
> > +
> > +	return true;
> > +}
> > +
> > +static bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range
> > *range,
> > +					       struct xe_vma *vma)
> > +{
> > +	struct xe_vm *vm = range_to_vm(&range->base);
> > +	u64 range_size = xe_svm_range_size(range);
> > +
> > +	if (!range->base.flags.migrate_devmem)
> > +		return false;
> > +
> > +	/* Not reliable without notifier lock, opportunistic only */
> > +	if (xe_svm_range_in_vram(range)) {
> > +		drm_dbg(&vm->xe->drm, "Range is already in VRAM\n");
> > +		return false;
> > +	}
> > +
> > +	if (range_size <= SZ_64K && !supports_4K_migration(vm->xe))
> > {
> > +		drm_dbg(&vm->xe->drm, "Platform doesn't support
> > SZ_4K range migration\n");
> > +		return false;
> > +	}
> > +
> > +	return true;
> > +}
> >  
> >  /**
> >   * xe_svm_handle_pagefault() - SVM handle page fault
> > @@ -750,12 +788,15 @@ int xe_svm_handle_pagefault(struct xe_vm *vm,
> > struct xe_vma *vma,
> >  			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
> >  		.check_pages_threshold = IS_DGFX(vm->xe) &&
> >  			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR) ?
> > SZ_64K : 0,
> > +		.devmem_only = atomic && IS_DGFX(vm->xe) &&
> > +			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
> >  	};
> >  	struct xe_svm_range *range;
> >  	struct drm_gpusvm_range *r;
> >  	struct drm_exec exec;
> >  	struct dma_fence *fence;
> >  	struct xe_tile *tile = gt_to_tile(gt);
> > +	int migrate_try_count = ctx.devmem_only ? 3 : 1;
> >  	ktime_t end = 0;
> >  	int err;
> >  
> > @@ -776,24 +817,30 @@ int xe_svm_handle_pagefault(struct xe_vm *vm,
> > struct xe_vma *vma,
> >  	if (IS_ERR(r))
> >  		return PTR_ERR(r);
> >  
> > +	if (ctx.devmem_only && !r->flags.migrate_devmem)
> > +		return -EACCES;
> > +
> >  	range = to_xe_range(r);
> > -	if (xe_svm_range_is_valid(range, tile))
> > +	if (xe_svm_range_is_valid(range, tile, ctx.devmem_only))
> >  		return 0;
> >  
> >  	range_debug(range, "PAGE FAULT");
> >  
> > -	/* XXX: Add migration policy, for now migrate range once */
> > -	if (!range->skip_migrate && range->base.flags.migrate_devmem
> > &&
> > -	    xe_svm_range_size(range) >= SZ_64K) {
> > -		range->skip_migrate = true;
> > -
> > +	if (--migrate_try_count >= 0 &&
> > +	    xe_svm_range_needs_migrate_to_vram(range, vma)) {
> >  		err = xe_svm_alloc_vram(vm, tile, range, &ctx);
> >  		if (err) {
> > -			drm_dbg(&vm->xe->drm,
> > -				"VRAM allocation failed, falling
> > back to "
> > -				"retrying fault, asid=%u,
> > errno=%pe\n",
> > -				vm->usm.asid, ERR_PTR(err));
> > -			goto retry;
> > +			if (migrate_try_count || !ctx.devmem_only) {
> > +				drm_dbg(&vm->xe->drm,
> > +					"VRAM allocation failed,
> > falling back to retrying fault, asid=%u, errno=%pe\n",
> > +					vm->usm.asid, ERR_PTR(err));
> > +				goto retry;
> > +			} else {
> > +				drm_err(&vm->xe->drm,
> > +					"VRAM allocation failed,
> > retry count exceeded, asid=%u, errno=%pe\n",
> > +					vm->usm.asid, ERR_PTR(err));
> > +				return err;
> > +			}
> >  		}
> >  	}
> >  
> > @@ -801,15 +848,22 @@ int xe_svm_handle_pagefault(struct xe_vm *vm,
> > struct xe_vma *vma,
> >  	err = drm_gpusvm_range_get_pages(&vm->svm.gpusvm, r, &ctx);
> >  	/* Corner where CPU mappings have changed */
> >  	if (err == -EOPNOTSUPP || err == -EFAULT || err == -EPERM) {
> > -		if (err == -EOPNOTSUPP) {
> > -			range_debug(range, "PAGE FAULT - EVICT
> > PAGES");
> > -			drm_gpusvm_range_evict(&vm->svm.gpusvm,
> > &range->base);
> > +		if (migrate_try_count > 0 || !ctx.devmem_only) {
> > +			if (err == -EOPNOTSUPP) {
> > +				range_debug(range, "PAGE FAULT -
> > EVICT PAGES");
> > +				drm_gpusvm_range_evict(&vm-
> > >svm.gpusvm,
> > +						       &range-
> > >base);
> > +			}
> > +			drm_dbg(&vm->xe->drm,
> > +				"Get pages failed, falling back to
> > retrying, asid=%u, gpusvm=%p, errno=%pe\n",
> > +				vm->usm.asid, &vm->svm.gpusvm,
> > ERR_PTR(err));
> > +			range_debug(range, "PAGE FAULT - RETRY
> > PAGES");
> > +			goto retry;
> > +		} else {
> > +			drm_err(&vm->xe->drm,
> > +				"Get pages failed, retry count
> > exceeded, asid=%u, gpusvm=%p, errno=%pe\n",
> > +				vm->usm.asid, &vm->svm.gpusvm,
> > ERR_PTR(err));
> >  		}
> > -		drm_dbg(&vm->xe->drm,
> > -			"Get pages failed, falling back to retrying,
> > asid=%u, gpusvm=%p, errno=%pe\n",
> > -			vm->usm.asid, &vm->svm.gpusvm,
> > ERR_PTR(err));
> > -		range_debug(range, "PAGE FAULT - RETRY PAGES");
> > -		goto retry;
> >  	}
> >  	if (err) {
> >  		range_debug(range, "PAGE FAULT - FAIL PAGE
> > COLLECT");
> > @@ -843,9 +897,6 @@ int xe_svm_handle_pagefault(struct xe_vm *vm,
> > struct xe_vma *vma,
> >  	}
> >  	drm_exec_fini(&exec);
> >  
> > -	if (xe_modparam.always_migrate_to_vram)
> > -		range->skip_migrate = false;
> > -
> >  	dma_fence_wait(fence, false);
> >  	dma_fence_put(fence);
> >  
> > diff --git a/drivers/gpu/drm/xe/xe_svm.h
> > b/drivers/gpu/drm/xe/xe_svm.h
> > index 3d441eb1f7ea..0e1f376a7471 100644
> > --- a/drivers/gpu/drm/xe/xe_svm.h
> > +++ b/drivers/gpu/drm/xe/xe_svm.h
> > @@ -39,11 +39,6 @@ struct xe_svm_range {
> >  	 * range. Protected by GPU SVM notifier lock.
> >  	 */
> >  	u8 tile_invalidated;
> > -	/**
> > -	 * @skip_migrate: Skip migration to VRAM, protected by GPU
> > fault handler
> > -	 * locking.
> > -	 */
> > -	u8 skip_migrate	:1;
> >  };
> >  
> >  /**
> > diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
> > index 9fd25fc880a4..653d48dbe1c1 100644
> > --- a/include/drm/drm_gpusvm.h
> > +++ b/include/drm/drm_gpusvm.h
> > @@ -185,6 +185,31 @@ struct drm_gpusvm_notifier {
> >  	} flags;
> >  };
> >  
> > +/**
> > + * struct drm_gpusvm_range_flags - Structure representing a GPU SVM
> > range flags
> > + *
> > + * @migrate_devmem: Flag indicating whether the range can be
> > migrated to device memory
> > + * @unmapped: Flag indicating if the range has been unmapped
> > + * @partial_unmap: Flag indicating if the range has been partially
> > unmapped
> > + * @has_devmem_pages: Flag indicating if the range has devmem pages
> > + * @has_dma_mapping: Flag indicating if the range has a DMA mapping
> > + * @__flags: Flags for range in u16 form (used for READ_ONCE)
> > + */
> > +struct drm_gpusvm_range_flags {
> > +	union {
> > +		struct {
> > +			/* All flags below must be set upon creation
> > */
> > +			u16 migrate_devmem : 1;
> > +			/* All flags below must be set / cleared
> > under notifier lock */
> > +			u16 unmapped : 1;
> > +			u16 partial_unmap : 1;
> > +			u16 has_devmem_pages : 1;
> > +			u16 has_dma_mapping : 1;
> > +		};
> > +		u16 __flags;
> > +	};
> > +};
> > +
> >  /**
> >   * struct drm_gpusvm_range - Structure representing a GPU SVM range
> >   *
> > @@ -198,11 +223,6 @@ struct drm_gpusvm_notifier {
> >   * @dpagemap: The struct drm_pagemap of the device pages we're dma-
> > mapping.
> >   *            Note this is assuming only one drm_pagemap per range
> > is allowed.
> >   * @flags: Flags for range
> > - * @flags.migrate_devmem: Flag indicating whether the range can be
> > migrated to device memory
> > - * @flags.unmapped: Flag indicating if the range has been unmapped
> > - * @flags.partial_unmap: Flag indicating if the range has been
> > partially unmapped
> > - * @flags.has_devmem_pages: Flag indicating if the range has devmem
> > pages
> > - * @flags.has_dma_mapping: Flag indicating if the range has a DMA
> > mapping
> >   *
> >   * This structure represents a GPU SVM range used for tracking
> > memory ranges
> >   * mapped in a DRM device.
> > @@ -216,15 +236,7 @@ struct drm_gpusvm_range {
> >  	unsigned long notifier_seq;
> >  	struct drm_pagemap_device_addr *dma_addr;
> >  	struct drm_pagemap *dpagemap;
> > -	struct {
> > -		/* All flags below must be set upon creation */
> > -		u16 migrate_devmem : 1;
> > -		/* All flags below must be set / cleared under
> > notifier lock */
> > -		u16 unmapped : 1;
> > -		u16 partial_unmap : 1;
> > -		u16 has_devmem_pages : 1;
> > -		u16 has_dma_mapping : 1;
> > -	} flags;
> > +	struct drm_gpusvm_range_flags flags;
> >  };
> >  
> >  /**
> 

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

* ✓ Xe.CI.BAT: success for Prefetch Support for svm ranges (rev5)
  2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
                   ` (26 preceding siblings ...)
  2025-04-30 20:06 ` ✗ Xe.CI.Full: failure " Patchwork
@ 2025-05-06  7:55 ` Patchwork
  27 siblings, 0 replies; 43+ messages in thread
From: Patchwork @ 2025-05-06  7:55 UTC (permalink / raw)
  To: Ghimiray, Himal Prasad; +Cc: intel-xe

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

== Series Details ==

Series: Prefetch Support for svm ranges (rev5)
URL   : https://patchwork.freedesktop.org/series/146079/
State : success

== Summary ==

CI Bug Log - changes from xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797_BAT -> xe-pw-146079v5_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (0 -> 8)
------------------------------

  Additional (8): bat-bmg-1 bat-lnl-2 bat-adlp-vf bat-lnl-1 bat-dg2-oem2 bat-atsm-2 bat-bmg-2 bat-adlp-7 

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

  Here are the changes found in xe-pw-146079v5_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@fbdev@eof:
    - bat-adlp-vf:        NOTRUN -> [SKIP][1] ([Intel XE#2134]) +4 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@fbdev@eof.html
    - bat-lnl-2:          NOTRUN -> [SKIP][2] ([Intel XE#2134]) +4 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-2/igt@fbdev@eof.html

  * igt@fbdev@nullptr:
    - bat-bmg-2:          NOTRUN -> [SKIP][3] ([Intel XE#2134]) +4 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-2/igt@fbdev@nullptr.html

  * igt@intel_sysfs_debugfs@xe-debugfs-read-all-entries:
    - bat-lnl-2:          NOTRUN -> [ABORT][4] ([Intel XE#4830] / [Intel XE#4899])
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-2/igt@intel_sysfs_debugfs@xe-debugfs-read-all-entries.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-bmg-2:          NOTRUN -> [SKIP][5] ([Intel XE#2233])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-bmg-1:          NOTRUN -> [SKIP][6] ([Intel XE#2233])
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-lnl-1:          NOTRUN -> [SKIP][7] ([Intel XE#1466])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][8] ([Intel XE#623])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-dg2-oem2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

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

  * igt@kms_addfb_basic@unused-offsets:
    - bat-adlp-vf:        NOTRUN -> [SKIP][10] ([Intel XE#2461]) +30 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@kms_addfb_basic@unused-offsets.html

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

  * igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
    - bat-bmg-2:          NOTRUN -> [SKIP][12] ([Intel XE#2489] / [Intel XE#3419]) +13 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-2/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-bmg-1:          NOTRUN -> [SKIP][13] ([Intel XE#2244])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-1/igt@kms_dsc@dsc-basic.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][14] ([Intel XE#455])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-dg2-oem2/igt@kms_dsc@dsc-basic.html
    - bat-atsm-2:         NOTRUN -> [SKIP][15] ([Intel XE#1024] / [Intel XE#784])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@kms_dsc@dsc-basic.html
    - bat-lnl-1:          NOTRUN -> [SKIP][16] ([Intel XE#2244])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@kms_dsc@dsc-basic.html
    - bat-adlp-7:         NOTRUN -> [SKIP][17] ([Intel XE#455])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-7/igt@kms_dsc@dsc-basic.html

  * igt@kms_flip@basic-flip-vs-modeset:
    - bat-adlp-vf:        NOTRUN -> [SKIP][18] ([Intel XE#2463]) +14 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@kms_flip@basic-flip-vs-modeset.html
    - bat-atsm-2:         NOTRUN -> [SKIP][19] ([Intel XE#1024] / [Intel XE#947]) +3 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@kms_flip@basic-flip-vs-modeset.html
    - bat-bmg-2:          NOTRUN -> [SKIP][20] ([Intel XE#2482]) +3 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-2/igt@kms_flip@basic-flip-vs-modeset.html

  * igt@kms_force_connector_basic@force-connector-state:
    - bat-lnl-1:          NOTRUN -> [SKIP][21] ([Intel XE#352]) +2 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@kms_force_connector_basic@force-connector-state.html
    - bat-atsm-2:         NOTRUN -> [SKIP][22] ([Intel XE#540]) +3 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@kms_force_connector_basic@force-connector-state.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-adlp-vf:        NOTRUN -> [SKIP][23] ([Intel XE#540]) +3 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-bmg-2:          NOTRUN -> [SKIP][24] ([Intel XE#2434] / [Intel XE#2548])
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-2/igt@kms_frontbuffer_tracking@basic.html
    - bat-atsm-2:         NOTRUN -> [SKIP][25] ([Intel XE#1024] / [Intel XE#783])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_hdmi_inject@inject-audio:
    - bat-lnl-1:          NOTRUN -> [SKIP][26] ([Intel XE#1470] / [Intel XE#2853])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_pipe_crc_basic@nonblocking-crc:
    - bat-atsm-2:         NOTRUN -> [SKIP][27] ([i915#1836]) +6 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@kms_pipe_crc_basic@nonblocking-crc.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-adlp-vf:        NOTRUN -> [SKIP][28] ([Intel XE#829]) +6 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  * igt@kms_prop_blob@basic:
    - bat-adlp-vf:        NOTRUN -> [SKIP][29] ([Intel XE#780])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@kms_prop_blob@basic.html
    - bat-atsm-2:         NOTRUN -> [SKIP][30] ([Intel XE#780])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@kms_prop_blob@basic.html

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

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

  * igt@kms_psr@psr-sprite-plane-onoff:
    - bat-bmg-1:          NOTRUN -> [SKIP][34] ([Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-1/igt@kms_psr@psr-sprite-plane-onoff.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - bat-bmg-1:          NOTRUN -> [SKIP][35] ([Intel XE#1091] / [Intel XE#2849]) +1 other test skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-1/igt@sriov_basic@enable-vfs-autoprobe-off.html
    - bat-adlp-vf:        NOTRUN -> [SKIP][36] ([Intel XE#2460] / [Intel XE#2849]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@sriov_basic@enable-vfs-autoprobe-off.html
    - bat-lnl-1:          NOTRUN -> [SKIP][37] ([Intel XE#1091] / [Intel XE#2849]) +1 other test skip
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@sriov_basic@enable-vfs-autoprobe-off.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][38] ([Intel XE#1091] / [Intel XE#2849]) +1 other test skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-dg2-oem2/igt@sriov_basic@enable-vfs-autoprobe-off.html
    - bat-bmg-2:          NOTRUN -> [SKIP][39] ([Intel XE#1091] / [Intel XE#2849]) +1 other test skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-2/igt@sriov_basic@enable-vfs-autoprobe-off.html

  * igt@xe_evict@evict-beng-small:
    - bat-adlp-vf:        NOTRUN -> [SKIP][40] ([Intel XE#261] / [Intel XE#688]) +9 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@xe_evict@evict-beng-small.html

  * igt@xe_evict@evict-small-cm:
    - bat-adlp-7:         NOTRUN -> [SKIP][41] ([Intel XE#261] / [Intel XE#688]) +9 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-7/igt@xe_evict@evict-small-cm.html

  * igt@xe_evict@evict-small-external-cm:
    - bat-lnl-1:          NOTRUN -> [SKIP][42] ([Intel XE#688]) +11 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@xe_evict@evict-small-external-cm.html

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

  * igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][45] ([Intel XE#288]) +32 other tests skip
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-dg2-oem2/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-invalidate.html

  * igt@xe_exec_fault_mode@twice-rebind-prefetch:
    - bat-adlp-vf:        NOTRUN -> [SKIP][46] ([Intel XE#288]) +32 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@xe_exec_fault_mode@twice-rebind-prefetch.html

  * igt@xe_exec_fault_mode@twice-userptr-invalidate-imm:
    - bat-atsm-2:         NOTRUN -> [SKIP][47] ([Intel XE#288]) +32 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@xe_exec_fault_mode@twice-userptr-invalidate-imm.html

  * igt@xe_exec_fault_mode@twice-userptr-invalidate-prefetch:
    - bat-adlp-7:         NOTRUN -> [SKIP][48] ([Intel XE#288]) +32 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-7/igt@xe_exec_fault_mode@twice-userptr-invalidate-prefetch.html

  * igt@xe_gt_freq@freq_range_idle:
    - bat-adlp-vf:        NOTRUN -> [SKIP][49] ([Intel XE#2464]) +2 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@xe_gt_freq@freq_range_idle.html

  * igt@xe_huc_copy@huc_copy:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][50] ([Intel XE#255])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-dg2-oem2/igt@xe_huc_copy@huc_copy.html
    - bat-atsm-2:         NOTRUN -> [SKIP][51] ([Intel XE#255])
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@xe_huc_copy@huc_copy.html

  * igt@xe_live_ktest@xe_bo:
    - bat-adlp-7:         NOTRUN -> [SKIP][52] ([Intel XE#2229] / [Intel XE#455]) +2 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-7/igt@xe_live_ktest@xe_bo.html
    - bat-adlp-vf:        NOTRUN -> [SKIP][53] ([Intel XE#2229] / [Intel XE#455]) +2 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html

  * igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit:
    - bat-bmg-2:          NOTRUN -> [SKIP][54] ([Intel XE#2229])
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-2/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html
    - bat-bmg-1:          NOTRUN -> [SKIP][55] ([Intel XE#2229])
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-1/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html

  * igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][56] ([Intel XE#2229])
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-dg2-oem2/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html
    - bat-atsm-2:         NOTRUN -> [SKIP][57] ([Intel XE#2229])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html
    - bat-lnl-1:          NOTRUN -> [SKIP][58] ([Intel XE#2229]) +2 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html
    - bat-adlp-vf:        NOTRUN -> [SKIP][59] ([Intel XE#2229])
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html
    - bat-adlp-7:         NOTRUN -> [SKIP][60] ([Intel XE#2229])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-7/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html

  * igt@xe_mmap@vram:
    - bat-adlp-vf:        NOTRUN -> [SKIP][61] ([Intel XE#1008])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@xe_mmap@vram.html
    - bat-lnl-1:          NOTRUN -> [SKIP][62] ([Intel XE#1416])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@xe_mmap@vram.html
    - bat-adlp-7:         NOTRUN -> [SKIP][63] ([Intel XE#1008])
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-7/igt@xe_mmap@vram.html

  * igt@xe_pat@pat-index-xe2:
    - bat-atsm-2:         NOTRUN -> [SKIP][64] ([Intel XE#977])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@xe_pat@pat-index-xe2.html
    - bat-adlp-7:         NOTRUN -> [SKIP][65] ([Intel XE#977])
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-7/igt@xe_pat@pat-index-xe2.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][66] ([Intel XE#977])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-dg2-oem2/igt@xe_pat@pat-index-xe2.html
    - bat-adlp-vf:        NOTRUN -> [SKIP][67] ([Intel XE#977])
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pat@pat-index-xehpc:
    - bat-lnl-1:          NOTRUN -> [SKIP][68] ([Intel XE#1420] / [Intel XE#2838])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@xe_pat@pat-index-xehpc.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][69] ([Intel XE#2838] / [Intel XE#979])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-dg2-oem2/igt@xe_pat@pat-index-xehpc.html
    - bat-atsm-2:         NOTRUN -> [SKIP][70] ([Intel XE#2838] / [Intel XE#979])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@xe_pat@pat-index-xehpc.html
    - bat-bmg-2:          NOTRUN -> [SKIP][71] ([Intel XE#1420])
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-2/igt@xe_pat@pat-index-xehpc.html
    - bat-bmg-1:          NOTRUN -> [SKIP][72] ([Intel XE#1420])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-1/igt@xe_pat@pat-index-xehpc.html
    - bat-adlp-7:         NOTRUN -> [SKIP][73] ([Intel XE#2838] / [Intel XE#979])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-7/igt@xe_pat@pat-index-xehpc.html
    - bat-adlp-vf:        NOTRUN -> [SKIP][74] ([Intel XE#2838] / [Intel XE#979])
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xelp:
    - bat-bmg-2:          NOTRUN -> [SKIP][75] ([Intel XE#2245])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-2/igt@xe_pat@pat-index-xelp.html
    - bat-bmg-1:          NOTRUN -> [SKIP][76] ([Intel XE#2245])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-1/igt@xe_pat@pat-index-xelp.html
    - bat-lnl-1:          NOTRUN -> [SKIP][77] ([Intel XE#977])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pat@pat-index-xelpg:
    - bat-adlp-vf:        NOTRUN -> [SKIP][78] ([Intel XE#979])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@xe_pat@pat-index-xelpg.html
    - bat-lnl-1:          NOTRUN -> [SKIP][79] ([Intel XE#979])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@xe_pat@pat-index-xelpg.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][80] ([Intel XE#979])
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-dg2-oem2/igt@xe_pat@pat-index-xelpg.html
    - bat-atsm-2:         NOTRUN -> [SKIP][81] ([Intel XE#979])
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-atsm-2/igt@xe_pat@pat-index-xelpg.html
    - bat-bmg-2:          NOTRUN -> [SKIP][82] ([Intel XE#2236])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-2/igt@xe_pat@pat-index-xelpg.html
    - bat-bmg-1:          NOTRUN -> [SKIP][83] ([Intel XE#2236])
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-1/igt@xe_pat@pat-index-xelpg.html
    - bat-adlp-7:         NOTRUN -> [SKIP][84] ([Intel XE#979])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-7/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_pm_residency@gt-c6-on-idle:
    - bat-adlp-vf:        NOTRUN -> [SKIP][85] ([Intel XE#2468])
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@xe_pm_residency@gt-c6-on-idle.html

  * igt@xe_sriov_flr@flr-vf1-clear:
    - bat-bmg-1:          NOTRUN -> [SKIP][86] ([Intel XE#3342])
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-1/igt@xe_sriov_flr@flr-vf1-clear.html
    - bat-adlp-vf:        NOTRUN -> [SKIP][87] ([Intel XE#3342])
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-adlp-vf/igt@xe_sriov_flr@flr-vf1-clear.html
    - bat-lnl-1:          NOTRUN -> [SKIP][88] ([Intel XE#3342])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-lnl-1/igt@xe_sriov_flr@flr-vf1-clear.html
    - bat-dg2-oem2:       NOTRUN -> [SKIP][89] ([Intel XE#3342])
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-dg2-oem2/igt@xe_sriov_flr@flr-vf1-clear.html
    - bat-bmg-2:          NOTRUN -> [SKIP][90] ([Intel XE#3342])
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-146079v5/bat-bmg-2/igt@xe_sriov_flr@flr-vf1-clear.html

  
  [Intel XE#1008]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1008
  [Intel XE#1024]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1024
  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1416
  [Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
  [Intel XE#1466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1466
  [Intel XE#1470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1470
  [Intel XE#2134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2134
  [Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
  [Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2236]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2236
  [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
  [Intel XE#2245]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2245
  [Intel XE#2434]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2434
  [Intel XE#2460]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2460
  [Intel XE#2461]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2461
  [Intel XE#2463]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2463
  [Intel XE#2464]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2464
  [Intel XE#2468]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2468
  [Intel XE#2482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2482
  [Intel XE#2489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2489
  [Intel XE#2548]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2548
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
  [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#2853]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2853
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
  [Intel XE#3419]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3419
  [Intel XE#352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/352
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#4830]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4830
  [Intel XE#4899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4899
  [Intel XE#540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/540
  [Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#780]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/780
  [Intel XE#782]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/782
  [Intel XE#783]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/783
  [Intel XE#784]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/784
  [Intel XE#829]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/829
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#947]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/947
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
  [i915#1836]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1836
  [i915#6077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6077


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

  * IGT: IGT_8345 -> IGT_8346
  * Linux: xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797 -> xe-pw-146079v5

  IGT_8345: b0aa259fb34bc85fd27a2a710a862e6ebea02d30 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_8346: df3036dadc729bf68aaf85ec697c9a9df797af43 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-3012-fc3ad08303990b2481cc45a6103ed79935dd3797: fc3ad08303990b2481cc45a6103ed79935dd3797
  xe-pw-146079v5: 146079v5

== Logs ==

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

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

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

* Re: [PATCH v6 02/20] drm/xe: Strict migration policy for atomic SVM faults
  2025-05-05 20:18     ` Matthew Brost
@ 2025-05-06 10:13       ` Thomas Hellström
  2025-05-06 14:59         ` Matthew Brost
  0 siblings, 1 reply; 43+ messages in thread
From: Thomas Hellström @ 2025-05-06 10:13 UTC (permalink / raw)
  To: Matthew Brost; +Cc: Himal Prasad Ghimiray, intel-xe, stable

On Mon, 2025-05-05 at 13:18 -0700, Matthew Brost wrote:
> On Mon, May 05, 2025 at 05:20:00PM +0200, Thomas Hellström wrote:
> > Hi, Himal,
> > 
> > On Wed, 2025-04-30 at 17:48 +0530, Himal Prasad Ghimiray wrote:
> > > From: Matthew Brost <matthew.brost@intel.com>
> > > 
> > > Mixing GPU and CPU atomics does not work unless a strict
> > > migration
> > > policy of GPU atomics must be device memory. Enforce a policy of
> > > must
> > > be
> > > in VRAM with a retry loop of 3 attempts, if retry loop fails
> > > abort
> > > fault.
> > > 
> > > Removing always_migrate_to_vram modparam as we now have real
> > > migration
> > > policy.
> > > 
> > > v2:
> > >  - Only retry migration on atomics
> > >  - Drop alway migrate modparam
> > > v3:
> > >  - Only set vram_only on DGFX (Himal)
> > >  - Bail on get_pages failure if vram_only and retry count
> > > exceeded
> > > (Himal)
> > >  - s/vram_only/devmem_only
> > >  - Update xe_svm_range_is_valid to accept devmem_only argument
> > > v4:
> > >  - Fix logic bug get_pages failure
> > > v5:
> > >  - Fix commit message (Himal)
> > >  - Mention removing always_migrate_to_vram in commit message
> > > (Lucas)
> > >  - Fix xe_svm_range_is_valid to check for devmem pages
> > >  - Bail on devmem_only && !migrate_devmem (Thomas)
> > > v6:
> > >  - Add READ_ONCE barriers for opportunistic checks (Thomas)
> > > 
> > > Fixes: 2f118c949160 ("drm/xe: Add SVM VRAM migration")
> > > Cc: stable@vger.kernel.org
> > > Signed-off-by: Himal Prasad Ghimiray
> > > <himal.prasad.ghimiray@intel.com>
> > > Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> > > Acked-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> > > ---
> > >  drivers/gpu/drm/xe/xe_module.c |   3 -
> > >  drivers/gpu/drm/xe/xe_module.h |   1 -
> > >  drivers/gpu/drm/xe/xe_svm.c    | 103 ++++++++++++++++++++++++---
> > > ----
> > > --
> > >  drivers/gpu/drm/xe/xe_svm.h    |   5 --
> > >  include/drm/drm_gpusvm.h       |  40 ++++++++-----
> > >  5 files changed, 103 insertions(+), 49 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/xe/xe_module.c
> > > b/drivers/gpu/drm/xe/xe_module.c
> > > index 64bf46646544..e4742e27e2cd 100644
> > > --- a/drivers/gpu/drm/xe/xe_module.c
> > > +++ b/drivers/gpu/drm/xe/xe_module.c
> > > @@ -30,9 +30,6 @@ struct xe_modparam xe_modparam = {
> > >  module_param_named(svm_notifier_size,
> > > xe_modparam.svm_notifier_size,
> > > uint, 0600);
> > >  MODULE_PARM_DESC(svm_notifier_size, "Set the svm notifier
> > > size(in
> > > MiB), must be power of 2");
> > >  
> > > -module_param_named(always_migrate_to_vram,
> > > xe_modparam.always_migrate_to_vram, bool, 0444);
> > > -MODULE_PARM_DESC(always_migrate_to_vram, "Always migrate to VRAM
> > > on
> > > GPU fault");
> > > -
> > >  module_param_named_unsafe(force_execlist,
> > > xe_modparam.force_execlist, bool, 0444);
> > >  MODULE_PARM_DESC(force_execlist, "Force Execlist submission");
> > >  
> > > diff --git a/drivers/gpu/drm/xe/xe_module.h
> > > b/drivers/gpu/drm/xe/xe_module.h
> > > index 84339e509c80..5a3bfea8b7b4 100644
> > > --- a/drivers/gpu/drm/xe/xe_module.h
> > > +++ b/drivers/gpu/drm/xe/xe_module.h
> > > @@ -12,7 +12,6 @@
> > >  struct xe_modparam {
> > >  	bool force_execlist;
> > >  	bool probe_display;
> > > -	bool always_migrate_to_vram;
> > >  	u32 force_vram_bar_size;
> > >  	int guc_log_level;
> > >  	char *guc_firmware_path;
> > > diff --git a/drivers/gpu/drm/xe/xe_svm.c
> > > b/drivers/gpu/drm/xe/xe_svm.c
> > > index 890f6b2f40e9..dcc84e65ca96 100644
> > > --- a/drivers/gpu/drm/xe/xe_svm.c
> > > +++ b/drivers/gpu/drm/xe/xe_svm.c
> > > @@ -16,8 +16,12 @@
> > >  
> > >  static bool xe_svm_range_in_vram(struct xe_svm_range *range)
> > >  {
> > > -	/* Not reliable without notifier lock */
> > > -	return range->base.flags.has_devmem_pages;
> > > +	/* Not reliable without notifier lock, opportunistic
> > > only */
> > > +	struct drm_gpusvm_range_flags flags = {
> > > +		.__flags = READ_ONCE(range->base.flags.__flags),
> > > +	};
> > > +
> > > +	return flags.has_devmem_pages;
> > >  }
> > >  
> > >  static bool xe_svm_range_has_vram_binding(struct xe_svm_range
> > > *range)
> > > @@ -650,9 +654,13 @@ void xe_svm_fini(struct xe_vm *vm)
> > >  }
> > >  
> > >  static bool xe_svm_range_is_valid(struct xe_svm_range *range,
> > > -				  struct xe_tile *tile)
> > > +				  struct xe_tile *tile,
> > > +				  bool devmem_only)
> > >  {
> > > -	return (range->tile_present & ~range->tile_invalidated)
> > > &
> > > BIT(tile->id);
> > > +	/* Not reliable without notifier lock, opportunistic
> > > only */
> > > +	return ((READ_ONCE(range->tile_present) &
> > > +		 ~READ_ONCE(range->tile_invalidated)) &
> > > BIT(tile-
> > > > id)) &&
> > > +		(!devmem_only || xe_svm_range_in_vram(range));
> > >  }
> > 
> > Hmm, TBH I had something more elaborate in mind:
> > 
> > https://lore.kernel.org/intel-xe/b5569de8cc036e23b976f21a51c4eb5ca104d4bb.camel@linux.intel.com/
> > 
> > (Separate function for lockless access and a lockdep assert for
> > locked
> > access + similar documentation as the functions I mentioned there +
> > a
> > "Pairs with" comment.
> > 
> 
> But if the locked functions are unused wouldn't the compiler
> complain?

Oh, I was under the impression we had multiple ose of those. My bad.

But still IMO we should move that comment about opportunistic from
within the function to the header to clarify the usage of the function
interface, and close to the READ_ONCE we should add a comment about a
pairing WRITE_ONCE.

It actually looks like (for a future patch unless done in this one) the
atomic bitops is a good fit for this.

/Thomas



> 
> Matt
> 
> > Thanks,
> > Thomas
> > 
> > 
> > 
> > >  
> > >  #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
> > > @@ -726,6 +734,36 @@ static int xe_svm_alloc_vram(struct xe_vm
> > > *vm,
> > > struct xe_tile *tile,
> > >  }
> > >  #endif
> > >  
> > > +static bool supports_4K_migration(struct xe_device *xe)
> > > +{
> > > +	if (xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
> > > +		return false;
> > > +
> > > +	return true;
> > > +}
> > > +
> > > +static bool xe_svm_range_needs_migrate_to_vram(struct
> > > xe_svm_range
> > > *range,
> > > +					       struct xe_vma
> > > *vma)
> > > +{
> > > +	struct xe_vm *vm = range_to_vm(&range->base);
> > > +	u64 range_size = xe_svm_range_size(range);
> > > +
> > > +	if (!range->base.flags.migrate_devmem)
> > > +		return false;
> > > +
> > > +	/* Not reliable without notifier lock, opportunistic
> > > only */
> > > +	if (xe_svm_range_in_vram(range)) {
> > > +		drm_dbg(&vm->xe->drm, "Range is already in
> > > VRAM\n");
> > > +		return false;
> > > +	}
> > > +
> > > +	if (range_size <= SZ_64K && !supports_4K_migration(vm-
> > > >xe))
> > > {
> > > +		drm_dbg(&vm->xe->drm, "Platform doesn't support
> > > SZ_4K range migration\n");
> > > +		return false;
> > > +	}
> > > +
> > > +	return true;
> > > +}
> > >  
> > >  /**
> > >   * xe_svm_handle_pagefault() - SVM handle page fault
> > > @@ -750,12 +788,15 @@ int xe_svm_handle_pagefault(struct xe_vm
> > > *vm,
> > > struct xe_vma *vma,
> > >  			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
> > >  		.check_pages_threshold = IS_DGFX(vm->xe) &&
> > >  			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
> > > ?
> > > SZ_64K : 0,
> > > +		.devmem_only = atomic && IS_DGFX(vm->xe) &&
> > > +			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
> > >  	};
> > >  	struct xe_svm_range *range;
> > >  	struct drm_gpusvm_range *r;
> > >  	struct drm_exec exec;
> > >  	struct dma_fence *fence;
> > >  	struct xe_tile *tile = gt_to_tile(gt);
> > > +	int migrate_try_count = ctx.devmem_only ? 3 : 1;
> > >  	ktime_t end = 0;
> > >  	int err;
> > >  
> > > @@ -776,24 +817,30 @@ int xe_svm_handle_pagefault(struct xe_vm
> > > *vm,
> > > struct xe_vma *vma,
> > >  	if (IS_ERR(r))
> > >  		return PTR_ERR(r);
> > >  
> > > +	if (ctx.devmem_only && !r->flags.migrate_devmem)
> > > +		return -EACCES;
> > > +
> > >  	range = to_xe_range(r);
> > > -	if (xe_svm_range_is_valid(range, tile))
> > > +	if (xe_svm_range_is_valid(range, tile, ctx.devmem_only))
> > >  		return 0;
> > >  
> > >  	range_debug(range, "PAGE FAULT");
> > >  
> > > -	/* XXX: Add migration policy, for now migrate range once
> > > */
> > > -	if (!range->skip_migrate && range-
> > > >base.flags.migrate_devmem
> > > &&
> > > -	    xe_svm_range_size(range) >= SZ_64K) {
> > > -		range->skip_migrate = true;
> > > -
> > > +	if (--migrate_try_count >= 0 &&
> > > +	    xe_svm_range_needs_migrate_to_vram(range, vma)) {
> > >  		err = xe_svm_alloc_vram(vm, tile, range, &ctx);
> > >  		if (err) {
> > > -			drm_dbg(&vm->xe->drm,
> > > -				"VRAM allocation failed, falling
> > > back to "
> > > -				"retrying fault, asid=%u,
> > > errno=%pe\n",
> > > -				vm->usm.asid, ERR_PTR(err));
> > > -			goto retry;
> > > +			if (migrate_try_count ||
> > > !ctx.devmem_only) {
> > > +				drm_dbg(&vm->xe->drm,
> > > +					"VRAM allocation failed,
> > > falling back to retrying fault, asid=%u, errno=%pe\n",
> > > +					vm->usm.asid,
> > > ERR_PTR(err));
> > > +				goto retry;
> > > +			} else {
> > > +				drm_err(&vm->xe->drm,
> > > +					"VRAM allocation failed,
> > > retry count exceeded, asid=%u, errno=%pe\n",
> > > +					vm->usm.asid,
> > > ERR_PTR(err));
> > > +				return err;
> > > +			}
> > >  		}
> > >  	}
> > >  
> > > @@ -801,15 +848,22 @@ int xe_svm_handle_pagefault(struct xe_vm
> > > *vm,
> > > struct xe_vma *vma,
> > >  	err = drm_gpusvm_range_get_pages(&vm->svm.gpusvm, r,
> > > &ctx);
> > >  	/* Corner where CPU mappings have changed */
> > >  	if (err == -EOPNOTSUPP || err == -EFAULT || err == -
> > > EPERM) {
> > > -		if (err == -EOPNOTSUPP) {
> > > -			range_debug(range, "PAGE FAULT - EVICT
> > > PAGES");
> > > -			drm_gpusvm_range_evict(&vm->svm.gpusvm,
> > > &range->base);
> > > +		if (migrate_try_count > 0 || !ctx.devmem_only) {
> > > +			if (err == -EOPNOTSUPP) {
> > > +				range_debug(range, "PAGE FAULT -
> > > EVICT PAGES");
> > > +				drm_gpusvm_range_evict(&vm-
> > > > svm.gpusvm,
> > > +						       &range-
> > > > base);
> > > +			}
> > > +			drm_dbg(&vm->xe->drm,
> > > +				"Get pages failed, falling back
> > > to
> > > retrying, asid=%u, gpusvm=%p, errno=%pe\n",
> > > +				vm->usm.asid, &vm->svm.gpusvm,
> > > ERR_PTR(err));
> > > +			range_debug(range, "PAGE FAULT - RETRY
> > > PAGES");
> > > +			goto retry;
> > > +		} else {
> > > +			drm_err(&vm->xe->drm,
> > > +				"Get pages failed, retry count
> > > exceeded, asid=%u, gpusvm=%p, errno=%pe\n",
> > > +				vm->usm.asid, &vm->svm.gpusvm,
> > > ERR_PTR(err));
> > >  		}
> > > -		drm_dbg(&vm->xe->drm,
> > > -			"Get pages failed, falling back to
> > > retrying,
> > > asid=%u, gpusvm=%p, errno=%pe\n",
> > > -			vm->usm.asid, &vm->svm.gpusvm,
> > > ERR_PTR(err));
> > > -		range_debug(range, "PAGE FAULT - RETRY PAGES");
> > > -		goto retry;
> > >  	}
> > >  	if (err) {
> > >  		range_debug(range, "PAGE FAULT - FAIL PAGE
> > > COLLECT");
> > > @@ -843,9 +897,6 @@ int xe_svm_handle_pagefault(struct xe_vm *vm,
> > > struct xe_vma *vma,
> > >  	}
> > >  	drm_exec_fini(&exec);
> > >  
> > > -	if (xe_modparam.always_migrate_to_vram)
> > > -		range->skip_migrate = false;
> > > -
> > >  	dma_fence_wait(fence, false);
> > >  	dma_fence_put(fence);
> > >  
> > > diff --git a/drivers/gpu/drm/xe/xe_svm.h
> > > b/drivers/gpu/drm/xe/xe_svm.h
> > > index 3d441eb1f7ea..0e1f376a7471 100644
> > > --- a/drivers/gpu/drm/xe/xe_svm.h
> > > +++ b/drivers/gpu/drm/xe/xe_svm.h
> > > @@ -39,11 +39,6 @@ struct xe_svm_range {
> > >  	 * range. Protected by GPU SVM notifier lock.
> > >  	 */
> > >  	u8 tile_invalidated;
> > > -	/**
> > > -	 * @skip_migrate: Skip migration to VRAM, protected by
> > > GPU
> > > fault handler
> > > -	 * locking.
> > > -	 */
> > > -	u8 skip_migrate	:1;
> > >  };
> > >  
> > >  /**
> > > diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
> > > index 9fd25fc880a4..653d48dbe1c1 100644
> > > --- a/include/drm/drm_gpusvm.h
> > > +++ b/include/drm/drm_gpusvm.h
> > > @@ -185,6 +185,31 @@ struct drm_gpusvm_notifier {
> > >  	} flags;
> > >  };
> > >  
> > > +/**
> > > + * struct drm_gpusvm_range_flags - Structure representing a GPU
> > > SVM
> > > range flags
> > > + *
> > > + * @migrate_devmem: Flag indicating whether the range can be
> > > migrated to device memory
> > > + * @unmapped: Flag indicating if the range has been unmapped
> > > + * @partial_unmap: Flag indicating if the range has been
> > > partially
> > > unmapped
> > > + * @has_devmem_pages: Flag indicating if the range has devmem
> > > pages
> > > + * @has_dma_mapping: Flag indicating if the range has a DMA
> > > mapping
> > > + * @__flags: Flags for range in u16 form (used for READ_ONCE)
> > > + */
> > > +struct drm_gpusvm_range_flags {
> > > +	union {
> > > +		struct {
> > > +			/* All flags below must be set upon
> > > creation
> > > */
> > > +			u16 migrate_devmem : 1;
> > > +			/* All flags below must be set / cleared
> > > under notifier lock */
> > > +			u16 unmapped : 1;
> > > +			u16 partial_unmap : 1;
> > > +			u16 has_devmem_pages : 1;
> > > +			u16 has_dma_mapping : 1;
> > > +		};
> > > +		u16 __flags;
> > > +	};
> > > +};
> > > +
> > >  /**
> > >   * struct drm_gpusvm_range - Structure representing a GPU SVM
> > > range
> > >   *
> > > @@ -198,11 +223,6 @@ struct drm_gpusvm_notifier {
> > >   * @dpagemap: The struct drm_pagemap of the device pages we're
> > > dma-
> > > mapping.
> > >   *            Note this is assuming only one drm_pagemap per
> > > range
> > > is allowed.
> > >   * @flags: Flags for range
> > > - * @flags.migrate_devmem: Flag indicating whether the range can
> > > be
> > > migrated to device memory
> > > - * @flags.unmapped: Flag indicating if the range has been
> > > unmapped
> > > - * @flags.partial_unmap: Flag indicating if the range has been
> > > partially unmapped
> > > - * @flags.has_devmem_pages: Flag indicating if the range has
> > > devmem
> > > pages
> > > - * @flags.has_dma_mapping: Flag indicating if the range has a
> > > DMA
> > > mapping
> > >   *
> > >   * This structure represents a GPU SVM range used for tracking
> > > memory ranges
> > >   * mapped in a DRM device.
> > > @@ -216,15 +236,7 @@ struct drm_gpusvm_range {
> > >  	unsigned long notifier_seq;
> > >  	struct drm_pagemap_device_addr *dma_addr;
> > >  	struct drm_pagemap *dpagemap;
> > > -	struct {
> > > -		/* All flags below must be set upon creation */
> > > -		u16 migrate_devmem : 1;
> > > -		/* All flags below must be set / cleared under
> > > notifier lock */
> > > -		u16 unmapped : 1;
> > > -		u16 partial_unmap : 1;
> > > -		u16 has_devmem_pages : 1;
> > > -		u16 has_dma_mapping : 1;
> > > -	} flags;
> > > +	struct drm_gpusvm_range_flags flags;
> > >  };
> > >  
> > >  /**
> > 


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

* Re: [PATCH v6 02/20] drm/xe: Strict migration policy for atomic SVM faults
  2025-05-06 10:13       ` Thomas Hellström
@ 2025-05-06 14:59         ` Matthew Brost
  0 siblings, 0 replies; 43+ messages in thread
From: Matthew Brost @ 2025-05-06 14:59 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: Himal Prasad Ghimiray, intel-xe, stable

On Tue, May 06, 2025 at 12:13:34PM +0200, Thomas Hellström wrote:
> On Mon, 2025-05-05 at 13:18 -0700, Matthew Brost wrote:
> > On Mon, May 05, 2025 at 05:20:00PM +0200, Thomas Hellström wrote:
> > > Hi, Himal,
> > > 
> > > On Wed, 2025-04-30 at 17:48 +0530, Himal Prasad Ghimiray wrote:
> > > > From: Matthew Brost <matthew.brost@intel.com>
> > > > 
> > > > Mixing GPU and CPU atomics does not work unless a strict
> > > > migration
> > > > policy of GPU atomics must be device memory. Enforce a policy of
> > > > must
> > > > be
> > > > in VRAM with a retry loop of 3 attempts, if retry loop fails
> > > > abort
> > > > fault.
> > > > 
> > > > Removing always_migrate_to_vram modparam as we now have real
> > > > migration
> > > > policy.
> > > > 
> > > > v2:
> > > >  - Only retry migration on atomics
> > > >  - Drop alway migrate modparam
> > > > v3:
> > > >  - Only set vram_only on DGFX (Himal)
> > > >  - Bail on get_pages failure if vram_only and retry count
> > > > exceeded
> > > > (Himal)
> > > >  - s/vram_only/devmem_only
> > > >  - Update xe_svm_range_is_valid to accept devmem_only argument
> > > > v4:
> > > >  - Fix logic bug get_pages failure
> > > > v5:
> > > >  - Fix commit message (Himal)
> > > >  - Mention removing always_migrate_to_vram in commit message
> > > > (Lucas)
> > > >  - Fix xe_svm_range_is_valid to check for devmem pages
> > > >  - Bail on devmem_only && !migrate_devmem (Thomas)
> > > > v6:
> > > >  - Add READ_ONCE barriers for opportunistic checks (Thomas)
> > > > 
> > > > Fixes: 2f118c949160 ("drm/xe: Add SVM VRAM migration")
> > > > Cc: stable@vger.kernel.org
> > > > Signed-off-by: Himal Prasad Ghimiray
> > > > <himal.prasad.ghimiray@intel.com>
> > > > Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> > > > Acked-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/xe/xe_module.c |   3 -
> > > >  drivers/gpu/drm/xe/xe_module.h |   1 -
> > > >  drivers/gpu/drm/xe/xe_svm.c    | 103 ++++++++++++++++++++++++---
> > > > ----
> > > > --
> > > >  drivers/gpu/drm/xe/xe_svm.h    |   5 --
> > > >  include/drm/drm_gpusvm.h       |  40 ++++++++-----
> > > >  5 files changed, 103 insertions(+), 49 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/xe/xe_module.c
> > > > b/drivers/gpu/drm/xe/xe_module.c
> > > > index 64bf46646544..e4742e27e2cd 100644
> > > > --- a/drivers/gpu/drm/xe/xe_module.c
> > > > +++ b/drivers/gpu/drm/xe/xe_module.c
> > > > @@ -30,9 +30,6 @@ struct xe_modparam xe_modparam = {
> > > >  module_param_named(svm_notifier_size,
> > > > xe_modparam.svm_notifier_size,
> > > > uint, 0600);
> > > >  MODULE_PARM_DESC(svm_notifier_size, "Set the svm notifier
> > > > size(in
> > > > MiB), must be power of 2");
> > > >  
> > > > -module_param_named(always_migrate_to_vram,
> > > > xe_modparam.always_migrate_to_vram, bool, 0444);
> > > > -MODULE_PARM_DESC(always_migrate_to_vram, "Always migrate to VRAM
> > > > on
> > > > GPU fault");
> > > > -
> > > >  module_param_named_unsafe(force_execlist,
> > > > xe_modparam.force_execlist, bool, 0444);
> > > >  MODULE_PARM_DESC(force_execlist, "Force Execlist submission");
> > > >  
> > > > diff --git a/drivers/gpu/drm/xe/xe_module.h
> > > > b/drivers/gpu/drm/xe/xe_module.h
> > > > index 84339e509c80..5a3bfea8b7b4 100644
> > > > --- a/drivers/gpu/drm/xe/xe_module.h
> > > > +++ b/drivers/gpu/drm/xe/xe_module.h
> > > > @@ -12,7 +12,6 @@
> > > >  struct xe_modparam {
> > > >  	bool force_execlist;
> > > >  	bool probe_display;
> > > > -	bool always_migrate_to_vram;
> > > >  	u32 force_vram_bar_size;
> > > >  	int guc_log_level;
> > > >  	char *guc_firmware_path;
> > > > diff --git a/drivers/gpu/drm/xe/xe_svm.c
> > > > b/drivers/gpu/drm/xe/xe_svm.c
> > > > index 890f6b2f40e9..dcc84e65ca96 100644
> > > > --- a/drivers/gpu/drm/xe/xe_svm.c
> > > > +++ b/drivers/gpu/drm/xe/xe_svm.c
> > > > @@ -16,8 +16,12 @@
> > > >  
> > > >  static bool xe_svm_range_in_vram(struct xe_svm_range *range)
> > > >  {
> > > > -	/* Not reliable without notifier lock */
> > > > -	return range->base.flags.has_devmem_pages;
> > > > +	/* Not reliable without notifier lock, opportunistic
> > > > only */
> > > > +	struct drm_gpusvm_range_flags flags = {
> > > > +		.__flags = READ_ONCE(range->base.flags.__flags),
> > > > +	};
> > > > +
> > > > +	return flags.has_devmem_pages;
> > > >  }
> > > >  
> > > >  static bool xe_svm_range_has_vram_binding(struct xe_svm_range
> > > > *range)
> > > > @@ -650,9 +654,13 @@ void xe_svm_fini(struct xe_vm *vm)
> > > >  }
> > > >  
> > > >  static bool xe_svm_range_is_valid(struct xe_svm_range *range,
> > > > -				  struct xe_tile *tile)
> > > > +				  struct xe_tile *tile,
> > > > +				  bool devmem_only)
> > > >  {
> > > > -	return (range->tile_present & ~range->tile_invalidated)
> > > > &
> > > > BIT(tile->id);
> > > > +	/* Not reliable without notifier lock, opportunistic
> > > > only */
> > > > +	return ((READ_ONCE(range->tile_present) &
> > > > +		 ~READ_ONCE(range->tile_invalidated)) &
> > > > BIT(tile-
> > > > > id)) &&
> > > > +		(!devmem_only || xe_svm_range_in_vram(range));
> > > >  }
> > > 
> > > Hmm, TBH I had something more elaborate in mind:
> > > 
> > > https://lore.kernel.org/intel-xe/b5569de8cc036e23b976f21a51c4eb5ca104d4bb.camel@linux.intel.com/
> > > 
> > > (Separate function for lockless access and a lockdep assert for
> > > locked
> > > access + similar documentation as the functions I mentioned there +
> > > a
> > > "Pairs with" comment.
> > > 
> > 
> > But if the locked functions are unused wouldn't the compiler
> > complain?
> 
> Oh, I was under the impression we had multiple ose of those. My bad.
> 
> But still IMO we should move that comment about opportunistic from
> within the function to the header to clarify the usage of the function
> interface, and close to the READ_ONCE we should add a comment about a
> pairing WRITE_ONCE.
> 

Ah, ok. I missed the WRITE_ONCE side of this + comment.

> It actually looks like (for a future patch unless done in this one) the
> atomic bitops is a good fit for this.

Maybe? I'll probably stick with WRITE_ONCE pairing for now.

Matt

> 
> /Thomas
> 
> 
> 
> > 
> > Matt
> > 
> > > Thanks,
> > > Thomas
> > > 
> > > 
> > > 
> > > >  
> > > >  #if IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
> > > > @@ -726,6 +734,36 @@ static int xe_svm_alloc_vram(struct xe_vm
> > > > *vm,
> > > > struct xe_tile *tile,
> > > >  }
> > > >  #endif
> > > >  
> > > > +static bool supports_4K_migration(struct xe_device *xe)
> > > > +{
> > > > +	if (xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
> > > > +		return false;
> > > > +
> > > > +	return true;
> > > > +}
> > > > +
> > > > +static bool xe_svm_range_needs_migrate_to_vram(struct
> > > > xe_svm_range
> > > > *range,
> > > > +					       struct xe_vma
> > > > *vma)
> > > > +{
> > > > +	struct xe_vm *vm = range_to_vm(&range->base);
> > > > +	u64 range_size = xe_svm_range_size(range);
> > > > +
> > > > +	if (!range->base.flags.migrate_devmem)
> > > > +		return false;
> > > > +
> > > > +	/* Not reliable without notifier lock, opportunistic
> > > > only */
> > > > +	if (xe_svm_range_in_vram(range)) {
> > > > +		drm_dbg(&vm->xe->drm, "Range is already in
> > > > VRAM\n");
> > > > +		return false;
> > > > +	}
> > > > +
> > > > +	if (range_size <= SZ_64K && !supports_4K_migration(vm-
> > > > >xe))
> > > > {
> > > > +		drm_dbg(&vm->xe->drm, "Platform doesn't support
> > > > SZ_4K range migration\n");
> > > > +		return false;
> > > > +	}
> > > > +
> > > > +	return true;
> > > > +}
> > > >  
> > > >  /**
> > > >   * xe_svm_handle_pagefault() - SVM handle page fault
> > > > @@ -750,12 +788,15 @@ int xe_svm_handle_pagefault(struct xe_vm
> > > > *vm,
> > > > struct xe_vma *vma,
> > > >  			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
> > > >  		.check_pages_threshold = IS_DGFX(vm->xe) &&
> > > >  			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR)
> > > > ?
> > > > SZ_64K : 0,
> > > > +		.devmem_only = atomic && IS_DGFX(vm->xe) &&
> > > > +			IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR),
> > > >  	};
> > > >  	struct xe_svm_range *range;
> > > >  	struct drm_gpusvm_range *r;
> > > >  	struct drm_exec exec;
> > > >  	struct dma_fence *fence;
> > > >  	struct xe_tile *tile = gt_to_tile(gt);
> > > > +	int migrate_try_count = ctx.devmem_only ? 3 : 1;
> > > >  	ktime_t end = 0;
> > > >  	int err;
> > > >  
> > > > @@ -776,24 +817,30 @@ int xe_svm_handle_pagefault(struct xe_vm
> > > > *vm,
> > > > struct xe_vma *vma,
> > > >  	if (IS_ERR(r))
> > > >  		return PTR_ERR(r);
> > > >  
> > > > +	if (ctx.devmem_only && !r->flags.migrate_devmem)
> > > > +		return -EACCES;
> > > > +
> > > >  	range = to_xe_range(r);
> > > > -	if (xe_svm_range_is_valid(range, tile))
> > > > +	if (xe_svm_range_is_valid(range, tile, ctx.devmem_only))
> > > >  		return 0;
> > > >  
> > > >  	range_debug(range, "PAGE FAULT");
> > > >  
> > > > -	/* XXX: Add migration policy, for now migrate range once
> > > > */
> > > > -	if (!range->skip_migrate && range-
> > > > >base.flags.migrate_devmem
> > > > &&
> > > > -	    xe_svm_range_size(range) >= SZ_64K) {
> > > > -		range->skip_migrate = true;
> > > > -
> > > > +	if (--migrate_try_count >= 0 &&
> > > > +	    xe_svm_range_needs_migrate_to_vram(range, vma)) {
> > > >  		err = xe_svm_alloc_vram(vm, tile, range, &ctx);
> > > >  		if (err) {
> > > > -			drm_dbg(&vm->xe->drm,
> > > > -				"VRAM allocation failed, falling
> > > > back to "
> > > > -				"retrying fault, asid=%u,
> > > > errno=%pe\n",
> > > > -				vm->usm.asid, ERR_PTR(err));
> > > > -			goto retry;
> > > > +			if (migrate_try_count ||
> > > > !ctx.devmem_only) {
> > > > +				drm_dbg(&vm->xe->drm,
> > > > +					"VRAM allocation failed,
> > > > falling back to retrying fault, asid=%u, errno=%pe\n",
> > > > +					vm->usm.asid,
> > > > ERR_PTR(err));
> > > > +				goto retry;
> > > > +			} else {
> > > > +				drm_err(&vm->xe->drm,
> > > > +					"VRAM allocation failed,
> > > > retry count exceeded, asid=%u, errno=%pe\n",
> > > > +					vm->usm.asid,
> > > > ERR_PTR(err));
> > > > +				return err;
> > > > +			}
> > > >  		}
> > > >  	}
> > > >  
> > > > @@ -801,15 +848,22 @@ int xe_svm_handle_pagefault(struct xe_vm
> > > > *vm,
> > > > struct xe_vma *vma,
> > > >  	err = drm_gpusvm_range_get_pages(&vm->svm.gpusvm, r,
> > > > &ctx);
> > > >  	/* Corner where CPU mappings have changed */
> > > >  	if (err == -EOPNOTSUPP || err == -EFAULT || err == -
> > > > EPERM) {
> > > > -		if (err == -EOPNOTSUPP) {
> > > > -			range_debug(range, "PAGE FAULT - EVICT
> > > > PAGES");
> > > > -			drm_gpusvm_range_evict(&vm->svm.gpusvm,
> > > > &range->base);
> > > > +		if (migrate_try_count > 0 || !ctx.devmem_only) {
> > > > +			if (err == -EOPNOTSUPP) {
> > > > +				range_debug(range, "PAGE FAULT -
> > > > EVICT PAGES");
> > > > +				drm_gpusvm_range_evict(&vm-
> > > > > svm.gpusvm,
> > > > +						       &range-
> > > > > base);
> > > > +			}
> > > > +			drm_dbg(&vm->xe->drm,
> > > > +				"Get pages failed, falling back
> > > > to
> > > > retrying, asid=%u, gpusvm=%p, errno=%pe\n",
> > > > +				vm->usm.asid, &vm->svm.gpusvm,
> > > > ERR_PTR(err));
> > > > +			range_debug(range, "PAGE FAULT - RETRY
> > > > PAGES");
> > > > +			goto retry;
> > > > +		} else {
> > > > +			drm_err(&vm->xe->drm,
> > > > +				"Get pages failed, retry count
> > > > exceeded, asid=%u, gpusvm=%p, errno=%pe\n",
> > > > +				vm->usm.asid, &vm->svm.gpusvm,
> > > > ERR_PTR(err));
> > > >  		}
> > > > -		drm_dbg(&vm->xe->drm,
> > > > -			"Get pages failed, falling back to
> > > > retrying,
> > > > asid=%u, gpusvm=%p, errno=%pe\n",
> > > > -			vm->usm.asid, &vm->svm.gpusvm,
> > > > ERR_PTR(err));
> > > > -		range_debug(range, "PAGE FAULT - RETRY PAGES");
> > > > -		goto retry;
> > > >  	}
> > > >  	if (err) {
> > > >  		range_debug(range, "PAGE FAULT - FAIL PAGE
> > > > COLLECT");
> > > > @@ -843,9 +897,6 @@ int xe_svm_handle_pagefault(struct xe_vm *vm,
> > > > struct xe_vma *vma,
> > > >  	}
> > > >  	drm_exec_fini(&exec);
> > > >  
> > > > -	if (xe_modparam.always_migrate_to_vram)
> > > > -		range->skip_migrate = false;
> > > > -
> > > >  	dma_fence_wait(fence, false);
> > > >  	dma_fence_put(fence);
> > > >  
> > > > diff --git a/drivers/gpu/drm/xe/xe_svm.h
> > > > b/drivers/gpu/drm/xe/xe_svm.h
> > > > index 3d441eb1f7ea..0e1f376a7471 100644
> > > > --- a/drivers/gpu/drm/xe/xe_svm.h
> > > > +++ b/drivers/gpu/drm/xe/xe_svm.h
> > > > @@ -39,11 +39,6 @@ struct xe_svm_range {
> > > >  	 * range. Protected by GPU SVM notifier lock.
> > > >  	 */
> > > >  	u8 tile_invalidated;
> > > > -	/**
> > > > -	 * @skip_migrate: Skip migration to VRAM, protected by
> > > > GPU
> > > > fault handler
> > > > -	 * locking.
> > > > -	 */
> > > > -	u8 skip_migrate	:1;
> > > >  };
> > > >  
> > > >  /**
> > > > diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
> > > > index 9fd25fc880a4..653d48dbe1c1 100644
> > > > --- a/include/drm/drm_gpusvm.h
> > > > +++ b/include/drm/drm_gpusvm.h
> > > > @@ -185,6 +185,31 @@ struct drm_gpusvm_notifier {
> > > >  	} flags;
> > > >  };
> > > >  
> > > > +/**
> > > > + * struct drm_gpusvm_range_flags - Structure representing a GPU
> > > > SVM
> > > > range flags
> > > > + *
> > > > + * @migrate_devmem: Flag indicating whether the range can be
> > > > migrated to device memory
> > > > + * @unmapped: Flag indicating if the range has been unmapped
> > > > + * @partial_unmap: Flag indicating if the range has been
> > > > partially
> > > > unmapped
> > > > + * @has_devmem_pages: Flag indicating if the range has devmem
> > > > pages
> > > > + * @has_dma_mapping: Flag indicating if the range has a DMA
> > > > mapping
> > > > + * @__flags: Flags for range in u16 form (used for READ_ONCE)
> > > > + */
> > > > +struct drm_gpusvm_range_flags {
> > > > +	union {
> > > > +		struct {
> > > > +			/* All flags below must be set upon
> > > > creation
> > > > */
> > > > +			u16 migrate_devmem : 1;
> > > > +			/* All flags below must be set / cleared
> > > > under notifier lock */
> > > > +			u16 unmapped : 1;
> > > > +			u16 partial_unmap : 1;
> > > > +			u16 has_devmem_pages : 1;
> > > > +			u16 has_dma_mapping : 1;
> > > > +		};
> > > > +		u16 __flags;
> > > > +	};
> > > > +};
> > > > +
> > > >  /**
> > > >   * struct drm_gpusvm_range - Structure representing a GPU SVM
> > > > range
> > > >   *
> > > > @@ -198,11 +223,6 @@ struct drm_gpusvm_notifier {
> > > >   * @dpagemap: The struct drm_pagemap of the device pages we're
> > > > dma-
> > > > mapping.
> > > >   *            Note this is assuming only one drm_pagemap per
> > > > range
> > > > is allowed.
> > > >   * @flags: Flags for range
> > > > - * @flags.migrate_devmem: Flag indicating whether the range can
> > > > be
> > > > migrated to device memory
> > > > - * @flags.unmapped: Flag indicating if the range has been
> > > > unmapped
> > > > - * @flags.partial_unmap: Flag indicating if the range has been
> > > > partially unmapped
> > > > - * @flags.has_devmem_pages: Flag indicating if the range has
> > > > devmem
> > > > pages
> > > > - * @flags.has_dma_mapping: Flag indicating if the range has a
> > > > DMA
> > > > mapping
> > > >   *
> > > >   * This structure represents a GPU SVM range used for tracking
> > > > memory ranges
> > > >   * mapped in a DRM device.
> > > > @@ -216,15 +236,7 @@ struct drm_gpusvm_range {
> > > >  	unsigned long notifier_seq;
> > > >  	struct drm_pagemap_device_addr *dma_addr;
> > > >  	struct drm_pagemap *dpagemap;
> > > > -	struct {
> > > > -		/* All flags below must be set upon creation */
> > > > -		u16 migrate_devmem : 1;
> > > > -		/* All flags below must be set / cleared under
> > > > notifier lock */
> > > > -		u16 unmapped : 1;
> > > > -		u16 partial_unmap : 1;
> > > > -		u16 has_devmem_pages : 1;
> > > > -		u16 has_dma_mapping : 1;
> > > > -	} flags;
> > > > +	struct drm_gpusvm_range_flags flags;
> > > >  };
> > > >  
> > > >  /**
> > > 
> 

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

* Re: [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges
  2025-05-02 16:11         ` Ghimiray, Himal Prasad
@ 2025-05-07 11:39           ` Thomas Hellström
  0 siblings, 0 replies; 43+ messages in thread
From: Thomas Hellström @ 2025-05-07 11:39 UTC (permalink / raw)
  To: Ghimiray, Himal Prasad, intel-xe; +Cc: matthew.brost

On Fri, 2025-05-02 at 21:41 +0530, Ghimiray, Himal Prasad wrote:
> 
> 
> On 02-05-2025 20:09, Thomas Hellström wrote:
> > On Fri, 2025-05-02 at 20:05 +0530, Ghimiray, Himal Prasad wrote:
> > > 
> > > 
> > > On 02-05-2025 19:12, Thomas Hellström wrote:
> > > > On Wed, 2025-04-30 at 17:49 +0530, Himal Prasad Ghimiray wrote:
> > > > > This commit adds prefetch support for SVM ranges, utilizing
> > > > > the
> > > > > existing ioctl vm_bind functionality to achieve this.
> > > > > 
> > > > > v2: rebase
> > > > > 
> > > > > v3:
> > > > >      - use xa_for_each() instead of manual loop
> > > > >      - check range is valid and in preferred location before
> > > > > adding to
> > > > >        xarray
> > > > >      - Fix naming conventions
> > > > >      - Fix return condition as -ENODATA instead of -EAGAIN
> > > > > (Matthew
> > > > > Brost)
> > > > >      - Handle sparsely populated cpu vma range (Matthew
> > > > > Brost)
> > > > > 
> > > > > v4:
> > > > >      - fix end address to find next cpu vma in case of -
> > > > > ENOENT
> > > > > 
> > > > > v5:
> > > > >      - Move find next vma logic to drm gpusvm layer
> > > > >      - Avoid mixing declaration and logic
> > > > > 
> > > > > v6:
> > > > >     - Use new function names
> > > > >     - Move eviction logic to prefetch_ranges
> > > > > 
> > > > > Cc: Matthew Brost <matthew.brost@intel.com>
> > > > > Signed-off-by: Himal Prasad Ghimiray
> > > > > <himal.prasad.ghimiray@intel.com>
> > > > > ---
> > > > >    drivers/gpu/drm/xe/xe_pt.c |  58 ++++++++---
> > > > >    drivers/gpu/drm/xe/xe_vm.c | 197
> > > > > +++++++++++++++++++++++++++++++++++--
> > > > >    2 files changed, 234 insertions(+), 21 deletions(-)
> > > > > 
> > > > 
> > > > I was thinking a bit around the UAPI, and prefetching foreign
> > > > device
> > > > regions. That doesn't really fit into the current UAPI.
> > > > 
> > > > What are your thoughts here. IMO this should align somewhat to
> > > > what
> > > > we
> > > > do for madvise().
> > > > 
> > > > Let's say we want to prefetch into a foreign device memory
> > > > region
> > > > identified by an fd? I figure we could add that later as an
> > > > extension.
> > > > 
> > > > But how does the UMD API for this look? Do we cover current
> > > > usage
> > > > with
> > > > the existing UAPI syntax?
> > > 
> > > During Initial discussions one of the way we discussed was using
> > > a
> > > flag
> > > something like DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC for prefetch to
> > > madvise assigned preferred location.
> > > 
> > > so it will be two step process from UMD perspective:
> > > 1) madvise sets up preferred location: which should also be used
> > > in
> > > pagefault handler.
> > > 
> > > 2) If user wants to prefetch to same location, user passes region
> > > as
> > > DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC to vm_bind ioctl.
> > > 
> > > https://patchwork.freedesktop.org/patch/647180/?series=146290&rev=4
> > 
> > Indeed, thanks for reminding me.
> > 
> > > 
> > > or we can simply pass u32 devmem_fd as
> > > prefetch_mem_region_instance
> > > to
> > > vm_bind ioctl,
> > 
> > But that wouldn't work if we have published UMD using the
> > mem_region_instance as the local mem_region_instance, right?
> 
> Thats correct.
> 
> > 
> > So if we want that we'd need an extension?
> 
> True. IMO sticking to DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC  makes more
> sense.

OK, then for the uapi part
Acked-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>


> 
> > 
> > /Thomas
> > 
> > 
> > 
> > >   if we want it to be single step, but w/o madvise that
> > > wont work for pf handler.
> > 
> > 
> > 
> > > 
> > > /Himal>
> > > > /Thomas
> > > > 
> > > 
> > 
> 


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

* Re: [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges
  2025-04-30 12:19 ` [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges Himal Prasad Ghimiray
  2025-05-02 13:42   ` Thomas Hellström
@ 2025-05-12 12:48   ` Matthew Brost
  2025-05-12 12:56     ` Ghimiray, Himal Prasad
  1 sibling, 1 reply; 43+ messages in thread
From: Matthew Brost @ 2025-05-12 12:48 UTC (permalink / raw)
  To: Himal Prasad Ghimiray; +Cc: intel-xe, thomas.hellstrom

On Wed, Apr 30, 2025 at 05:49:11PM +0530, Himal Prasad Ghimiray wrote:
> This commit adds prefetch support for SVM ranges, utilizing the
> existing ioctl vm_bind functionality to achieve this.
> 
> v2: rebase
> 
> v3:
>    - use xa_for_each() instead of manual loop
>    - check range is valid and in preferred location before adding to
>      xarray
>    - Fix naming conventions
>    - Fix return condition as -ENODATA instead of -EAGAIN (Matthew Brost)
>    - Handle sparsely populated cpu vma range (Matthew Brost)
> 
> v4:
>    - fix end address to find next cpu vma in case of -ENOENT
> 
> v5:
>    - Move find next vma logic to drm gpusvm layer
>    - Avoid mixing declaration and logic
> 
> v6:
>   - Use new function names
>   - Move eviction logic to prefetch_ranges
> 
> Cc: Matthew Brost <matthew.brost@intel.com>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_pt.c |  58 ++++++++---
>  drivers/gpu/drm/xe/xe_vm.c | 197 +++++++++++++++++++++++++++++++++++--
>  2 files changed, 234 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
> index de4e3edda758..f3a99ee4f733 100644
> --- a/drivers/gpu/drm/xe/xe_pt.c
> +++ b/drivers/gpu/drm/xe/xe_pt.c
> @@ -1458,6 +1458,7 @@ static int xe_pt_svm_pre_commit(struct xe_migrate_pt_update *pt_update)
>  	struct xe_vm *vm = pt_update->vops->vm;
>  	struct xe_vma_ops *vops = pt_update->vops;
>  	struct xe_vma_op *op;
> +	unsigned long i;
>  	int err;
>  
>  	err = xe_pt_pre_commit(pt_update);
> @@ -1467,20 +1468,35 @@ static int xe_pt_svm_pre_commit(struct xe_migrate_pt_update *pt_update)
>  	xe_svm_notifier_lock(vm);
>  
>  	list_for_each_entry(op, &vops->list, link) {
> -		struct xe_svm_range *range = op->map_range.range;
> +		struct xe_svm_range *range = NULL;
>  
>  		if (op->subop == XE_VMA_SUBOP_UNMAP_RANGE)
>  			continue;
>  
> -		xe_svm_range_debug(range, "PRE-COMMIT");
> +		if (op->base.op == DRM_GPUVA_OP_PREFETCH) {
> +			xe_assert(vm->xe,
> +				  xe_vma_is_cpu_addr_mirror(gpuva_to_vma(op->base.prefetch.va)));
> +			xa_for_each(&op->prefetch_range.range, i, range) {
> +				xe_svm_range_debug(range, "PRE-COMMIT");
>  
> -		xe_assert(vm->xe, xe_vma_is_cpu_addr_mirror(op->map_range.vma));
> -		xe_assert(vm->xe, op->subop == XE_VMA_SUBOP_MAP_RANGE);
> +				if (!xe_svm_range_pages_valid(range)) {
> +					xe_svm_range_debug(range, "PRE-COMMIT - RETRY");
> +					xe_svm_notifier_unlock(vm);
> +					return -ENODATA;
> +				}
> +			}
> +		} else {
> +			xe_assert(vm->xe, xe_vma_is_cpu_addr_mirror(op->map_range.vma));
> +			xe_assert(vm->xe, op->subop == XE_VMA_SUBOP_MAP_RANGE);
> +			range = op->map_range.range;
>  
> -		if (!xe_svm_range_pages_valid(range)) {
> -			xe_svm_range_debug(range, "PRE-COMMIT - RETRY");
> -			xe_svm_notifier_unlock(vm);
> -			return -EAGAIN;
> +			xe_svm_range_debug(range, "PRE-COMMIT");
> +
> +			if (!xe_svm_range_pages_valid(range)) {
> +				xe_svm_range_debug(range, "PRE-COMMIT - RETRY");
> +				xe_svm_notifier_unlock(vm);
> +				return -EAGAIN;
> +			}
>  		}
>  	}
>  
> @@ -2065,11 +2081,20 @@ static int op_prepare(struct xe_vm *vm,
>  	{
>  		struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
>  
> -		if (xe_vma_is_cpu_addr_mirror(vma))
> -			break;
> +		if (xe_vma_is_cpu_addr_mirror(vma)) {
> +			struct xe_svm_range *range;
> +			unsigned long i;
>  
> -		err = bind_op_prepare(vm, tile, pt_update_ops, vma, false);
> -		pt_update_ops->wait_vm_kernel = true;
> +			xa_for_each(&op->prefetch_range.range, i, range) {
> +				err = bind_range_prepare(vm, tile, pt_update_ops,
> +							 vma, range);
> +				if (err)
> +					return err;
> +			}
> +		} else {
> +			err = bind_op_prepare(vm, tile, pt_update_ops, vma, false);
> +			pt_update_ops->wait_vm_kernel = true;
> +		}
>  		break;
>  	}
>  	case DRM_GPUVA_OP_DRIVER:
> @@ -2273,9 +2298,16 @@ static void op_commit(struct xe_vm *vm,
>  	{
>  		struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
>  
> -		if (!xe_vma_is_cpu_addr_mirror(vma))
> +		if (xe_vma_is_cpu_addr_mirror(vma)) {
> +			struct xe_svm_range *range = NULL;
> +			unsigned long i;
> +
> +			xa_for_each(&op->prefetch_range.range, i, range)
> +				range_present_and_invalidated_tile(vm, range, tile->id);
> +		} else {
>  			bind_op_commit(vm, tile, pt_update_ops, vma, fence,
>  				       fence2, false);
> +		}
>  		break;
>  	}
>  	case DRM_GPUVA_OP_DRIVER:
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index 555ed10dac85..dd5c63ee8720 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -798,10 +798,33 @@ static int xe_vma_ops_alloc(struct xe_vma_ops *vops, bool array_of_binds)
>  }
>  ALLOW_ERROR_INJECTION(xe_vma_ops_alloc, ERRNO);
>  
> +static void xe_vma_svm_prefetch_op_fini(struct xe_vma_op *op)
> +{
> +	struct xe_vma *vma;
> +
> +	vma = gpuva_to_vma(op->base.prefetch.va);
> +
> +	if (op->base.op == DRM_GPUVA_OP_PREFETCH && xe_vma_is_cpu_addr_mirror(vma))
> +		xa_destroy(&op->prefetch_range.range);
> +}
> +
> +static void xe_vma_svm_prefetch_ops_fini(struct xe_vma_ops *vops)
> +{
> +	struct xe_vma_op *op;
> +
> +	if (!(vops->flags & XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH))
> +		return;
> +
> +	list_for_each_entry(op, &vops->list, link)
> +		xe_vma_svm_prefetch_op_fini(op);
> +}
> +
>  static void xe_vma_ops_fini(struct xe_vma_ops *vops)
>  {
>  	int i;
>  
> +	xe_vma_svm_prefetch_ops_fini(vops);
> +
>  	for (i = 0; i < XE_MAX_TILES_PER_DEVICE; ++i)
>  		kfree(vops->pt_update_ops[i].ops);
>  }
> @@ -2248,13 +2271,25 @@ static bool __xe_vm_needs_clear_scratch_pages(struct xe_vm *vm, u32 bind_flags)
>  	return true;
>  }
>  
> +static void xe_svm_prefetch_gpuva_ops_fini(struct drm_gpuva_ops *ops)
> +{
> +	struct drm_gpuva_op *__op;
> +
> +	drm_gpuva_for_each_op(__op, ops) {
> +		struct xe_vma_op *op = gpuva_op_to_vma_op(__op);
> +
> +		xe_vma_svm_prefetch_op_fini(op);
> +	}
> +}
> +
>  /*
>   * Create operations list from IOCTL arguments, setup operations fields so parse
>   * and commit steps are decoupled from IOCTL arguments. This step can fail.
>   */
>  static struct drm_gpuva_ops *
> -vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
> -			 u64 bo_offset_or_userptr, u64 addr, u64 range,
> +vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_vma_ops *vops,
> +			 struct xe_bo *bo, u64 bo_offset_or_userptr,
> +			 u64 addr, u64 range,
>  			 u32 operation, u32 flags,
>  			 u32 prefetch_region, u16 pat_index)
>  {
> @@ -2262,6 +2297,7 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
>  	struct drm_gpuva_ops *ops;
>  	struct drm_gpuva_op *__op;
>  	struct drm_gpuvm_bo *vm_bo;
> +	u64 range_end = addr + range;
>  	int err;
>  
>  	lockdep_assert_held_write(&vm->lock);
> @@ -2323,14 +2359,77 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
>  			op->map.invalidate_on_bind =
>  				__xe_vm_needs_clear_scratch_pages(vm, flags);
>  		} else if (__op->op == DRM_GPUVA_OP_PREFETCH) {
> -			op->prefetch.region = prefetch_region;
> -		}
> +			struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
> +			struct xe_svm_range *svm_range;
> +			struct drm_gpusvm_ctx ctx;
> +			struct xe_tile *tile;
> +			u8 id, tile_mask = 0;
> +			u32 i;
> +
> +			if (!xe_vma_is_cpu_addr_mirror(vma)) {
> +				op->prefetch.region = prefetch_region;
> +				break;
> +			}
> +
> +			ctx.read_only = xe_vma_read_only(vma);
> +			ctx.devmem_possible = IS_DGFX(vm->xe) &&
> +					      IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR);
> +
> +			for_each_tile(tile, vm->xe, id)
> +				tile_mask |= 0x1 << id;
> +
> +			xa_init_flags(&op->prefetch_range.range, XA_FLAGS_ALLOC);
> +			op->prefetch_range.region = prefetch_region;
> +			op->prefetch_range.ranges_count = 0;
> +alloc_next_range:
> +			svm_range = xe_svm_range_find_or_insert(vm, addr, vma, &ctx);
> +
> +			if (PTR_ERR(svm_range) == -ENOENT) {
> +				u64 ret = xe_svm_find_vma_start(vm, addr, range_end, vma);
> +
> +				addr = ret == ULONG_MAX ? 0 : ret;
> +				if (addr)
> +					goto alloc_next_range;
> +				else
> +					goto print_op_label;
> +			}
> +
> +			if (IS_ERR(svm_range)) {
> +				err = PTR_ERR(svm_range);
> +				goto unwind_prefetch_ops;
> +			}
> +
> +			if (xe_svm_range_validate(vm, svm_range, tile_mask, !!prefetch_region))
> +				goto check_next_range;
> +
> +			err = xa_alloc(&op->prefetch_range.range,
> +				       &i, svm_range, xa_limit_32b,
> +				       GFP_KERNEL);
>  
> +			if (err)
> +				goto unwind_prefetch_ops;
> +
> +			op->prefetch_range.ranges_count++;
> +			vops->flags |= XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH;
> +check_next_range:
> +			if (range_end > xe_svm_range_end(svm_range) &&
> +			    xe_svm_range_end(svm_range) < xe_vma_end(vma)) {
> +				addr = xe_svm_range_end(svm_range);
> +				goto alloc_next_range;
> +			}
> +		}
> +print_op_label:
>  		print_op(vm->xe, __op);
>  	}
>  
>  	return ops;
> +
> +unwind_prefetch_ops:
> +	xe_svm_prefetch_gpuva_ops_fini(ops);
> +	drm_gpuva_ops_free(&vm->gpuvm, ops);
> +	return ERR_PTR(err);
>  }
> +
>  ALLOW_ERROR_INJECTION(vm_bind_ioctl_ops_create, ERRNO);
>  
>  static struct xe_vma *new_vma(struct xe_vm *vm, struct drm_gpuva_op_map *op,
> @@ -2645,8 +2744,12 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
>  					return err;
>  			}
>  
> -			if (!xe_vma_is_cpu_addr_mirror(vma))
> +			if (xe_vma_is_cpu_addr_mirror(vma))
> +				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask,
> +							      op->prefetch_range.ranges_count);
> +			else
>  				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask, 1);
> +
>  			break;
>  		default:
>  			drm_warn(&vm->xe->drm, "NOT POSSIBLE");
> @@ -2772,6 +2875,56 @@ static int check_ufence(struct xe_vma *vma)
>  	return 0;
>  }
>  
> +static int prefetch_ranges(struct xe_vm *vm, struct xe_vma_op *op)
> +{
> +	bool devmem_possible = IS_DGFX(vm->xe) && IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR);
> +	struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
> +	int err = 0;
> +
> +	struct xe_svm_range *svm_range;
> +	struct drm_gpusvm_ctx ctx;
> +	struct xe_tile *tile;
> +	unsigned long i;
> +	u32 region;
> +
> +	if (!xe_vma_is_cpu_addr_mirror(vma))
> +		return 0;
> +
> +	region = op->prefetch_range.region;
> +
> +	ctx.read_only = xe_vma_read_only(vma);
> +	ctx.devmem_possible = devmem_possible;
> +	ctx.check_pages_threshold = devmem_possible ? SZ_64K : 0;
> +	ctx.devmem_only = region && devmem_possible;

I don't think this is right. In the latest series we only set
devmem_only on atomic faults. Also if user prefetches a shared mapping
(migration not possible due to core MM limitations) get_pages is always
going to fail and abort the prefetch. I just wouldn't set devmem_only
here.    

> +	ctx.timeslice_ms = 0;
> +
> +	/* TODO: Threading the migration */
> +	xa_for_each(&op->prefetch_range.range, i, svm_range) {
> +		if (!region)
> +			xe_svm_range_migrate_to_smem(vm, svm_range);
> +
> +		if (xe_svm_range_needs_migrate_to_vram(svm_range, vma, region)) {
> +			tile = &vm->xe->tiles[region_to_mem_type[region] - XE_PL_VRAM0];
> +			err = xe_svm_alloc_vram(vm, tile, svm_range, &ctx);
> +			if (err) {
> +				drm_dbg(&vm->xe->drm, "VRAM allocation failed, retry from userspace, asid=%u, gpusvm=%p, errno=%pe\n",
> +					vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
> +				return -ENODATA;
> +			}
> +		}
> +
> +		err = xe_svm_range_get_pages(vm, svm_range, &ctx);
> +		if (err) {
> +			if (err == -EOPNOTSUPP || err == -EFAULT || err == -EPERM)
> +				err = -ENODATA;
> +			drm_dbg(&vm->xe->drm, "Get pages failed, asid=%u, gpusvm=%p, errno=%pe\n",
> +				vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
> +			return err;
> +		}
> +	}

Nit: I'd add a newline.

Matt

> +	return err;
> +}
> +
>  static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm,
>  			    struct xe_vma_op *op)
>  {
> @@ -2809,7 +2962,12 @@ static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm,
>  	case DRM_GPUVA_OP_PREFETCH:
>  	{
>  		struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
> -		u32 region = op->prefetch.region;
> +		u32 region;
> +
> +		if (xe_vma_is_cpu_addr_mirror(vma))
> +			region = op->prefetch_range.region;
> +		else
> +			region = op->prefetch.region;
>  
>  		xe_assert(vm->xe, region <= ARRAY_SIZE(region_to_mem_type));
>  
> @@ -2828,6 +2986,25 @@ static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm,
>  	return err;
>  }
>  
> +static int vm_bind_ioctl_ops_prefetch_ranges(struct xe_vm *vm, struct xe_vma_ops *vops)
> +{
> +	struct xe_vma_op *op;
> +	int err;
> +
> +	if (!(vops->flags & XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH))
> +		return 0;
> +
> +	list_for_each_entry(op, &vops->list, link) {
> +		if (op->base.op  == DRM_GPUVA_OP_PREFETCH) {
> +			err = prefetch_ranges(vm, op);
> +			if (err)
> +				return err;
> +		}
> +	}
> +
> +	return 0;
> +}
> +
>  static int vm_bind_ioctl_ops_lock_and_prep(struct drm_exec *exec,
>  					   struct xe_vm *vm,
>  					   struct xe_vma_ops *vops)
> @@ -3478,7 +3655,7 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>  		u32 prefetch_region = bind_ops[i].prefetch_mem_region_instance;
>  		u16 pat_index = bind_ops[i].pat_index;
>  
> -		ops[i] = vm_bind_ioctl_ops_create(vm, bos[i], obj_offset,
> +		ops[i] = vm_bind_ioctl_ops_create(vm, &vops, bos[i], obj_offset,
>  						  addr, range, op, flags,
>  						  prefetch_region, pat_index);
>  		if (IS_ERR(ops[i])) {
> @@ -3511,6 +3688,10 @@ 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_prefetch_ranges(vm, &vops);
> +	if (err)
> +		goto unwind_ops;
> +
>  	fence = vm_bind_ioctl_ops_execute(vm, &vops);
>  	if (IS_ERR(fence))
>  		err = PTR_ERR(fence);
> @@ -3580,7 +3761,7 @@ struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo,
>  
>  	xe_vma_ops_init(&vops, vm, q, NULL, 0);
>  
> -	ops = vm_bind_ioctl_ops_create(vm, bo, 0, addr, bo->size,
> +	ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, bo->size,
>  				       DRM_XE_VM_BIND_OP_MAP, 0, 0,
>  				       vm->xe->pat.idx[cache_lvl]);
>  	if (IS_ERR(ops)) {
> -- 
> 2.34.1
> 

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

* Re: [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges
  2025-05-12 12:48   ` Matthew Brost
@ 2025-05-12 12:56     ` Ghimiray, Himal Prasad
  0 siblings, 0 replies; 43+ messages in thread
From: Ghimiray, Himal Prasad @ 2025-05-12 12:56 UTC (permalink / raw)
  To: Matthew Brost; +Cc: intel-xe, thomas.hellstrom



On 12-05-2025 18:18, Matthew Brost wrote:
> On Wed, Apr 30, 2025 at 05:49:11PM +0530, Himal Prasad Ghimiray wrote:
>> This commit adds prefetch support for SVM ranges, utilizing the
>> existing ioctl vm_bind functionality to achieve this.
>>
>> v2: rebase
>>
>> v3:
>>     - use xa_for_each() instead of manual loop
>>     - check range is valid and in preferred location before adding to
>>       xarray
>>     - Fix naming conventions
>>     - Fix return condition as -ENODATA instead of -EAGAIN (Matthew Brost)
>>     - Handle sparsely populated cpu vma range (Matthew Brost)
>>
>> v4:
>>     - fix end address to find next cpu vma in case of -ENOENT
>>
>> v5:
>>     - Move find next vma logic to drm gpusvm layer
>>     - Avoid mixing declaration and logic
>>
>> v6:
>>    - Use new function names
>>    - Move eviction logic to prefetch_ranges
>>
>> Cc: Matthew Brost <matthew.brost@intel.com>
>> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
>> ---
>>   drivers/gpu/drm/xe/xe_pt.c |  58 ++++++++---
>>   drivers/gpu/drm/xe/xe_vm.c | 197 +++++++++++++++++++++++++++++++++++--
>>   2 files changed, 234 insertions(+), 21 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
>> index de4e3edda758..f3a99ee4f733 100644
>> --- a/drivers/gpu/drm/xe/xe_pt.c
>> +++ b/drivers/gpu/drm/xe/xe_pt.c
>> @@ -1458,6 +1458,7 @@ static int xe_pt_svm_pre_commit(struct xe_migrate_pt_update *pt_update)
>>   	struct xe_vm *vm = pt_update->vops->vm;
>>   	struct xe_vma_ops *vops = pt_update->vops;
>>   	struct xe_vma_op *op;
>> +	unsigned long i;
>>   	int err;
>>   
>>   	err = xe_pt_pre_commit(pt_update);
>> @@ -1467,20 +1468,35 @@ static int xe_pt_svm_pre_commit(struct xe_migrate_pt_update *pt_update)
>>   	xe_svm_notifier_lock(vm);
>>   
>>   	list_for_each_entry(op, &vops->list, link) {
>> -		struct xe_svm_range *range = op->map_range.range;
>> +		struct xe_svm_range *range = NULL;
>>   
>>   		if (op->subop == XE_VMA_SUBOP_UNMAP_RANGE)
>>   			continue;
>>   
>> -		xe_svm_range_debug(range, "PRE-COMMIT");
>> +		if (op->base.op == DRM_GPUVA_OP_PREFETCH) {
>> +			xe_assert(vm->xe,
>> +				  xe_vma_is_cpu_addr_mirror(gpuva_to_vma(op->base.prefetch.va)));
>> +			xa_for_each(&op->prefetch_range.range, i, range) {
>> +				xe_svm_range_debug(range, "PRE-COMMIT");
>>   
>> -		xe_assert(vm->xe, xe_vma_is_cpu_addr_mirror(op->map_range.vma));
>> -		xe_assert(vm->xe, op->subop == XE_VMA_SUBOP_MAP_RANGE);
>> +				if (!xe_svm_range_pages_valid(range)) {
>> +					xe_svm_range_debug(range, "PRE-COMMIT - RETRY");
>> +					xe_svm_notifier_unlock(vm);
>> +					return -ENODATA;
>> +				}
>> +			}
>> +		} else {
>> +			xe_assert(vm->xe, xe_vma_is_cpu_addr_mirror(op->map_range.vma));
>> +			xe_assert(vm->xe, op->subop == XE_VMA_SUBOP_MAP_RANGE);
>> +			range = op->map_range.range;
>>   
>> -		if (!xe_svm_range_pages_valid(range)) {
>> -			xe_svm_range_debug(range, "PRE-COMMIT - RETRY");
>> -			xe_svm_notifier_unlock(vm);
>> -			return -EAGAIN;
>> +			xe_svm_range_debug(range, "PRE-COMMIT");
>> +
>> +			if (!xe_svm_range_pages_valid(range)) {
>> +				xe_svm_range_debug(range, "PRE-COMMIT - RETRY");
>> +				xe_svm_notifier_unlock(vm);
>> +				return -EAGAIN;
>> +			}
>>   		}
>>   	}
>>   
>> @@ -2065,11 +2081,20 @@ static int op_prepare(struct xe_vm *vm,
>>   	{
>>   		struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
>>   
>> -		if (xe_vma_is_cpu_addr_mirror(vma))
>> -			break;
>> +		if (xe_vma_is_cpu_addr_mirror(vma)) {
>> +			struct xe_svm_range *range;
>> +			unsigned long i;
>>   
>> -		err = bind_op_prepare(vm, tile, pt_update_ops, vma, false);
>> -		pt_update_ops->wait_vm_kernel = true;
>> +			xa_for_each(&op->prefetch_range.range, i, range) {
>> +				err = bind_range_prepare(vm, tile, pt_update_ops,
>> +							 vma, range);
>> +				if (err)
>> +					return err;
>> +			}
>> +		} else {
>> +			err = bind_op_prepare(vm, tile, pt_update_ops, vma, false);
>> +			pt_update_ops->wait_vm_kernel = true;
>> +		}
>>   		break;
>>   	}
>>   	case DRM_GPUVA_OP_DRIVER:
>> @@ -2273,9 +2298,16 @@ static void op_commit(struct xe_vm *vm,
>>   	{
>>   		struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
>>   
>> -		if (!xe_vma_is_cpu_addr_mirror(vma))
>> +		if (xe_vma_is_cpu_addr_mirror(vma)) {
>> +			struct xe_svm_range *range = NULL;
>> +			unsigned long i;
>> +
>> +			xa_for_each(&op->prefetch_range.range, i, range)
>> +				range_present_and_invalidated_tile(vm, range, tile->id);
>> +		} else {
>>   			bind_op_commit(vm, tile, pt_update_ops, vma, fence,
>>   				       fence2, false);
>> +		}
>>   		break;
>>   	}
>>   	case DRM_GPUVA_OP_DRIVER:
>> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
>> index 555ed10dac85..dd5c63ee8720 100644
>> --- a/drivers/gpu/drm/xe/xe_vm.c
>> +++ b/drivers/gpu/drm/xe/xe_vm.c
>> @@ -798,10 +798,33 @@ static int xe_vma_ops_alloc(struct xe_vma_ops *vops, bool array_of_binds)
>>   }
>>   ALLOW_ERROR_INJECTION(xe_vma_ops_alloc, ERRNO);
>>   
>> +static void xe_vma_svm_prefetch_op_fini(struct xe_vma_op *op)
>> +{
>> +	struct xe_vma *vma;
>> +
>> +	vma = gpuva_to_vma(op->base.prefetch.va);
>> +
>> +	if (op->base.op == DRM_GPUVA_OP_PREFETCH && xe_vma_is_cpu_addr_mirror(vma))
>> +		xa_destroy(&op->prefetch_range.range);
>> +}
>> +
>> +static void xe_vma_svm_prefetch_ops_fini(struct xe_vma_ops *vops)
>> +{
>> +	struct xe_vma_op *op;
>> +
>> +	if (!(vops->flags & XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH))
>> +		return;
>> +
>> +	list_for_each_entry(op, &vops->list, link)
>> +		xe_vma_svm_prefetch_op_fini(op);
>> +}
>> +
>>   static void xe_vma_ops_fini(struct xe_vma_ops *vops)
>>   {
>>   	int i;
>>   
>> +	xe_vma_svm_prefetch_ops_fini(vops);
>> +
>>   	for (i = 0; i < XE_MAX_TILES_PER_DEVICE; ++i)
>>   		kfree(vops->pt_update_ops[i].ops);
>>   }
>> @@ -2248,13 +2271,25 @@ static bool __xe_vm_needs_clear_scratch_pages(struct xe_vm *vm, u32 bind_flags)
>>   	return true;
>>   }
>>   
>> +static void xe_svm_prefetch_gpuva_ops_fini(struct drm_gpuva_ops *ops)
>> +{
>> +	struct drm_gpuva_op *__op;
>> +
>> +	drm_gpuva_for_each_op(__op, ops) {
>> +		struct xe_vma_op *op = gpuva_op_to_vma_op(__op);
>> +
>> +		xe_vma_svm_prefetch_op_fini(op);
>> +	}
>> +}
>> +
>>   /*
>>    * Create operations list from IOCTL arguments, setup operations fields so parse
>>    * and commit steps are decoupled from IOCTL arguments. This step can fail.
>>    */
>>   static struct drm_gpuva_ops *
>> -vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
>> -			 u64 bo_offset_or_userptr, u64 addr, u64 range,
>> +vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_vma_ops *vops,
>> +			 struct xe_bo *bo, u64 bo_offset_or_userptr,
>> +			 u64 addr, u64 range,
>>   			 u32 operation, u32 flags,
>>   			 u32 prefetch_region, u16 pat_index)
>>   {
>> @@ -2262,6 +2297,7 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
>>   	struct drm_gpuva_ops *ops;
>>   	struct drm_gpuva_op *__op;
>>   	struct drm_gpuvm_bo *vm_bo;
>> +	u64 range_end = addr + range;
>>   	int err;
>>   
>>   	lockdep_assert_held_write(&vm->lock);
>> @@ -2323,14 +2359,77 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
>>   			op->map.invalidate_on_bind =
>>   				__xe_vm_needs_clear_scratch_pages(vm, flags);
>>   		} else if (__op->op == DRM_GPUVA_OP_PREFETCH) {
>> -			op->prefetch.region = prefetch_region;
>> -		}
>> +			struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
>> +			struct xe_svm_range *svm_range;
>> +			struct drm_gpusvm_ctx ctx;
>> +			struct xe_tile *tile;
>> +			u8 id, tile_mask = 0;
>> +			u32 i;
>> +
>> +			if (!xe_vma_is_cpu_addr_mirror(vma)) {
>> +				op->prefetch.region = prefetch_region;
>> +				break;
>> +			}
>> +
>> +			ctx.read_only = xe_vma_read_only(vma);
>> +			ctx.devmem_possible = IS_DGFX(vm->xe) &&
>> +					      IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR);
>> +
>> +			for_each_tile(tile, vm->xe, id)
>> +				tile_mask |= 0x1 << id;
>> +
>> +			xa_init_flags(&op->prefetch_range.range, XA_FLAGS_ALLOC);
>> +			op->prefetch_range.region = prefetch_region;
>> +			op->prefetch_range.ranges_count = 0;
>> +alloc_next_range:
>> +			svm_range = xe_svm_range_find_or_insert(vm, addr, vma, &ctx);
>> +
>> +			if (PTR_ERR(svm_range) == -ENOENT) {
>> +				u64 ret = xe_svm_find_vma_start(vm, addr, range_end, vma);
>> +
>> +				addr = ret == ULONG_MAX ? 0 : ret;
>> +				if (addr)
>> +					goto alloc_next_range;
>> +				else
>> +					goto print_op_label;
>> +			}
>> +
>> +			if (IS_ERR(svm_range)) {
>> +				err = PTR_ERR(svm_range);
>> +				goto unwind_prefetch_ops;
>> +			}
>> +
>> +			if (xe_svm_range_validate(vm, svm_range, tile_mask, !!prefetch_region))
>> +				goto check_next_range;
>> +
>> +			err = xa_alloc(&op->prefetch_range.range,
>> +				       &i, svm_range, xa_limit_32b,
>> +				       GFP_KERNEL);
>>   
>> +			if (err)
>> +				goto unwind_prefetch_ops;
>> +
>> +			op->prefetch_range.ranges_count++;
>> +			vops->flags |= XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH;
>> +check_next_range:
>> +			if (range_end > xe_svm_range_end(svm_range) &&
>> +			    xe_svm_range_end(svm_range) < xe_vma_end(vma)) {
>> +				addr = xe_svm_range_end(svm_range);
>> +				goto alloc_next_range;
>> +			}
>> +		}
>> +print_op_label:
>>   		print_op(vm->xe, __op);
>>   	}
>>   
>>   	return ops;
>> +
>> +unwind_prefetch_ops:
>> +	xe_svm_prefetch_gpuva_ops_fini(ops);
>> +	drm_gpuva_ops_free(&vm->gpuvm, ops);
>> +	return ERR_PTR(err);
>>   }
>> +
>>   ALLOW_ERROR_INJECTION(vm_bind_ioctl_ops_create, ERRNO);
>>   
>>   static struct xe_vma *new_vma(struct xe_vm *vm, struct drm_gpuva_op_map *op,
>> @@ -2645,8 +2744,12 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
>>   					return err;
>>   			}
>>   
>> -			if (!xe_vma_is_cpu_addr_mirror(vma))
>> +			if (xe_vma_is_cpu_addr_mirror(vma))
>> +				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask,
>> +							      op->prefetch_range.ranges_count);
>> +			else
>>   				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask, 1);
>> +
>>   			break;
>>   		default:
>>   			drm_warn(&vm->xe->drm, "NOT POSSIBLE");
>> @@ -2772,6 +2875,56 @@ static int check_ufence(struct xe_vma *vma)
>>   	return 0;
>>   }
>>   
>> +static int prefetch_ranges(struct xe_vm *vm, struct xe_vma_op *op)
>> +{
>> +	bool devmem_possible = IS_DGFX(vm->xe) && IS_ENABLED(CONFIG_DRM_XE_DEVMEM_MIRROR);
>> +	struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
>> +	int err = 0;
>> +
>> +	struct xe_svm_range *svm_range;
>> +	struct drm_gpusvm_ctx ctx;
>> +	struct xe_tile *tile;
>> +	unsigned long i;
>> +	u32 region;
>> +
>> +	if (!xe_vma_is_cpu_addr_mirror(vma))
>> +		return 0;
>> +
>> +	region = op->prefetch_range.region;
>> +
>> +	ctx.read_only = xe_vma_read_only(vma);
>> +	ctx.devmem_possible = devmem_possible;
>> +	ctx.check_pages_threshold = devmem_possible ? SZ_64K : 0;
>> +	ctx.devmem_only = region && devmem_possible;
> 
> I don't think this is right. In the latest series we only set
> devmem_only on atomic faults. Also if user prefetches a shared mapping
> (migration not possible due to core MM limitations) get_pages is always
> going to fail and abort the prefetch. I just wouldn't set devmem_only
> here.

Thats true. Will assign 0 here.

> 
>> +	ctx.timeslice_ms = 0;
>> +
>> +	/* TODO: Threading the migration */
>> +	xa_for_each(&op->prefetch_range.range, i, svm_range) {
>> +		if (!region)
>> +			xe_svm_range_migrate_to_smem(vm, svm_range);
>> +
>> +		if (xe_svm_range_needs_migrate_to_vram(svm_range, vma, region)) {
>> +			tile = &vm->xe->tiles[region_to_mem_type[region] - XE_PL_VRAM0];
>> +			err = xe_svm_alloc_vram(vm, tile, svm_range, &ctx);
>> +			if (err) {
>> +				drm_dbg(&vm->xe->drm, "VRAM allocation failed, retry from userspace, asid=%u, gpusvm=%p, errno=%pe\n",
>> +					vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
>> +				return -ENODATA;
>> +			}
>> +		}
>> +
>> +		err = xe_svm_range_get_pages(vm, svm_range, &ctx);
>> +		if (err) {
>> +			if (err == -EOPNOTSUPP || err == -EFAULT || err == -EPERM)
>> +				err = -ENODATA;
>> +			drm_dbg(&vm->xe->drm, "Get pages failed, asid=%u, gpusvm=%p, errno=%pe\n",
>> +				vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
>> +			return err;
>> +		}
>> +	}
> 
> Nit: I'd add a newline.

Sure

> 
> Matt
> 
>> +	return err;
>> +}
>> +
>>   static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm,
>>   			    struct xe_vma_op *op)
>>   {
>> @@ -2809,7 +2962,12 @@ static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm,
>>   	case DRM_GPUVA_OP_PREFETCH:
>>   	{
>>   		struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
>> -		u32 region = op->prefetch.region;
>> +		u32 region;
>> +
>> +		if (xe_vma_is_cpu_addr_mirror(vma))
>> +			region = op->prefetch_range.region;
>> +		else
>> +			region = op->prefetch.region;
>>   
>>   		xe_assert(vm->xe, region <= ARRAY_SIZE(region_to_mem_type));
>>   
>> @@ -2828,6 +2986,25 @@ static int op_lock_and_prep(struct drm_exec *exec, struct xe_vm *vm,
>>   	return err;
>>   }
>>   
>> +static int vm_bind_ioctl_ops_prefetch_ranges(struct xe_vm *vm, struct xe_vma_ops *vops)
>> +{
>> +	struct xe_vma_op *op;
>> +	int err;
>> +
>> +	if (!(vops->flags & XE_VMA_OPS_FLAG_HAS_SVM_PREFETCH))
>> +		return 0;
>> +
>> +	list_for_each_entry(op, &vops->list, link) {
>> +		if (op->base.op  == DRM_GPUVA_OP_PREFETCH) {
>> +			err = prefetch_ranges(vm, op);
>> +			if (err)
>> +				return err;
>> +		}
>> +	}
>> +
>> +	return 0;
>> +}
>> +
>>   static int vm_bind_ioctl_ops_lock_and_prep(struct drm_exec *exec,
>>   					   struct xe_vm *vm,
>>   					   struct xe_vma_ops *vops)
>> @@ -3478,7 +3655,7 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>>   		u32 prefetch_region = bind_ops[i].prefetch_mem_region_instance;
>>   		u16 pat_index = bind_ops[i].pat_index;
>>   
>> -		ops[i] = vm_bind_ioctl_ops_create(vm, bos[i], obj_offset,
>> +		ops[i] = vm_bind_ioctl_ops_create(vm, &vops, bos[i], obj_offset,
>>   						  addr, range, op, flags,
>>   						  prefetch_region, pat_index);
>>   		if (IS_ERR(ops[i])) {
>> @@ -3511,6 +3688,10 @@ 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_prefetch_ranges(vm, &vops);
>> +	if (err)
>> +		goto unwind_ops;
>> +
>>   	fence = vm_bind_ioctl_ops_execute(vm, &vops);
>>   	if (IS_ERR(fence))
>>   		err = PTR_ERR(fence);
>> @@ -3580,7 +3761,7 @@ struct dma_fence *xe_vm_bind_kernel_bo(struct xe_vm *vm, struct xe_bo *bo,
>>   
>>   	xe_vma_ops_init(&vops, vm, q, NULL, 0);
>>   
>> -	ops = vm_bind_ioctl_ops_create(vm, bo, 0, addr, bo->size,
>> +	ops = vm_bind_ioctl_ops_create(vm, &vops, bo, 0, addr, bo->size,
>>   				       DRM_XE_VM_BIND_OP_MAP, 0, 0,
>>   				       vm->xe->pat.idx[cache_lvl]);
>>   	if (IS_ERR(ops)) {
>> -- 
>> 2.34.1
>>


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

end of thread, other threads:[~2025-05-12 12:58 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-30 12:18 [PATCH v6 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
2025-04-30 12:18 ` [PATCH v6 01/20] drm/gpusvm: Introduce devmem_only flag for allocation Himal Prasad Ghimiray
2025-04-30 12:18 ` [PATCH v6 02/20] drm/xe: Strict migration policy for atomic SVM faults Himal Prasad Ghimiray
2025-05-05 15:20   ` Thomas Hellström
2025-05-05 20:18     ` Matthew Brost
2025-05-06 10:13       ` Thomas Hellström
2025-05-06 14:59         ` Matthew Brost
2025-04-30 12:18 ` [PATCH v6 03/20] drm/gpusvm: Add timeslicing support to GPU SVM Himal Prasad Ghimiray
2025-04-30 12:18 ` [PATCH v6 04/20] drm/xe: Timeslice GPU on atomic SVM fault Himal Prasad Ghimiray
2025-04-30 12:18 ` [PATCH v6 05/20] drm/xe: Add atomic_svm_timeslice_ms debugfs entry Himal Prasad Ghimiray
2025-04-30 12:18 ` [PATCH v6 06/20] drm/xe: Introduce xe_vma_op_prefetch_range struct for prefetch of ranges Himal Prasad Ghimiray
2025-04-30 12:18 ` [PATCH v6 07/20] drm/xe: Make xe_svm_alloc_vram public Himal Prasad Ghimiray
2025-04-30 12:19 ` [PATCH v6 08/20] drm/xe/svm: Helper to add tile masks to svm ranges Himal Prasad Ghimiray
2025-04-30 12:19 ` [PATCH v6 09/20] drm/xe/svm: Make to_xe_range a public function Himal Prasad Ghimiray
2025-04-30 12:19 ` [PATCH v6 10/20] drm/xe/svm: Make xe_svm_range_* end/start/size public Himal Prasad Ghimiray
2025-04-30 12:19 ` [PATCH v6 11/20] drm/xe/vm: Update xe_vma_ops_incr_pt_update_ops to take an increment value Himal Prasad Ghimiray
2025-04-30 12:19 ` [PATCH v6 12/20] drm/xe/vm: Add an identifier in xe_vma_ops for svm prefetch Himal Prasad Ghimiray
2025-04-30 12:19 ` [PATCH v6 13/20] drm/xe: Rename lookup_vma function to xe_find_vma_by_addr Himal Prasad Ghimiray
2025-04-30 12:19 ` [PATCH v6 14/20] drm/xe/svm: Refactor usage of drm_gpusvm* function in xe_svm Himal Prasad Ghimiray
2025-04-30 12:19 ` [PATCH v6 15/20] drm/xe/svm: Make xe_svm_range_needs_migrate_to_vram() public Himal Prasad Ghimiray
2025-04-30 12:19 ` [PATCH v6 16/20] drm/xe/svm: Add xe_svm_range_validate() and xe_svm_range_migrate_to_smem() Himal Prasad Ghimiray
2025-04-30 14:50   ` Matthew Brost
2025-04-30 12:19 ` [PATCH v6 17/20] drm/gpusvm: Introduce drm_gpusvm_find_vma_start() function Himal Prasad Ghimiray
2025-04-30 15:03   ` Matthew Brost
2025-04-30 12:19 ` [PATCH v6 18/20] drm/xe/svm: Add xe_svm_find_vma_start() helper Himal Prasad Ghimiray
2025-04-30 16:35   ` Matthew Brost
2025-04-30 12:19 ` [PATCH v6 19/20] drm/xe/svm: Implement prefetch support for SVM ranges Himal Prasad Ghimiray
2025-05-02 13:42   ` Thomas Hellström
2025-05-02 14:35     ` Ghimiray, Himal Prasad
2025-05-02 14:39       ` Thomas Hellström
2025-05-02 16:11         ` Ghimiray, Himal Prasad
2025-05-07 11:39           ` Thomas Hellström
2025-05-12 12:48   ` Matthew Brost
2025-05-12 12:56     ` Ghimiray, Himal Prasad
2025-04-30 12:19 ` [PATCH v6 20/20] drm/xe/vm: Add debug prints for SVM range prefetch Himal Prasad Ghimiray
2025-04-30 12:45 ` ✓ CI.Patch_applied: success for Prefetch Support for svm ranges (rev5) Patchwork
2025-04-30 12:45 ` ✓ CI.checkpatch: " Patchwork
2025-04-30 12:46 ` ✓ CI.KUnit: " Patchwork
2025-04-30 13:06 ` ✓ CI.Build: " Patchwork
2025-04-30 13:08 ` ✓ CI.Hooks: " Patchwork
2025-04-30 13:10 ` ✓ CI.checksparse: " Patchwork
2025-04-30 20:06 ` ✗ Xe.CI.Full: failure " Patchwork
2025-05-06  7:55 ` ✓ Xe.CI.BAT: success " Patchwork

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