Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node.
@ 2026-01-08 10:10 Maarten Lankhorst
  2026-01-08 10:10 ` [PATCH v2 1/7] drm/xe: Start using ggtt->start in preparation of balloon removal Maarten Lankhorst
                   ` (10 more replies)
  0 siblings, 11 replies; 15+ messages in thread
From: Maarten Lankhorst @ 2026-01-08 10:10 UTC (permalink / raw)
  To: intel-xe; +Cc: Maarten Lankhorst

I'm trying to fix the problem that GGTT can be moved on VF's. The easiest
solution is resizing the GGTT to be as big as can be allowed, and provide
a variable ggtt->start. To facilitate this, the first step is avoid
the rest of the code from looking at drm_mm_node directly,
this will make it possible to change its start offset in the next series.

Maarten Lankhorst (7):
  drm/xe: Start using ggtt->start in preparation of balloon removal
  drm/xe: Convert xe_fb_pin to use a callback for insertion into GGTT
  drm/xe: Add xe_ggtt_node_addr() to avoid dereferencing xe_ggtt_node
  drm/xe/display: Avoid dereferencing xe_ggtt_node
  drm/xe: Do not dereference ggtt_node in xe_bo.c
  drm/xe: Improve xe_gt_sriov_pf_config GGTT handling
  drm/xe: Privatize xe_ggtt_node

 .../gpu/drm/xe/compat-i915-headers/i915_vma.h |   4 +-
 drivers/gpu/drm/xe/display/xe_fb_pin.c        | 104 ++++-----
 drivers/gpu/drm/xe/display/xe_stolen.c        |   2 +-
 drivers/gpu/drm/xe/tests/xe_guc_buf_kunit.c   |   2 +-
 drivers/gpu/drm/xe/xe_bo.c                    |   6 +-
 drivers/gpu/drm/xe/xe_bo.h                    |   8 +-
 drivers/gpu/drm/xe/xe_ggtt.c                  | 212 +++++++++++++-----
 drivers/gpu/drm/xe/xe_ggtt.h                  |  14 +-
 drivers/gpu/drm/xe/xe_ggtt_types.h            |  32 +--
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c    |  19 +-
 10 files changed, 254 insertions(+), 149 deletions(-)

-- 
2.51.0


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

* [PATCH v2 1/7] drm/xe: Start using ggtt->start in preparation of balloon removal
  2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
@ 2026-01-08 10:10 ` Maarten Lankhorst
  2026-01-08 10:10 ` [PATCH v2 2/7] drm/xe: Convert xe_fb_pin to use a callback for insertion into GGTT Maarten Lankhorst
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Maarten Lankhorst @ 2026-01-08 10:10 UTC (permalink / raw)
  To: intel-xe; +Cc: Maarten Lankhorst, Stuart Summers

Instead of having ggtt->size point to the end of ggtt, have ggtt->size
be the actual size of the GGTT, and introduce ggtt->start to point to
the beginning of GGTT.

This will allow a massive cleanup of GGTT in case of SRIOV-VF.

Reviewed-by: Stuart Summers <stuart.summers@intel.com>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/tests/xe_guc_buf_kunit.c |  2 +-
 drivers/gpu/drm/xe/xe_ggtt.c                | 82 +++++++++++++--------
 drivers/gpu/drm/xe/xe_ggtt.h                |  2 +
 drivers/gpu/drm/xe/xe_ggtt_types.h          |  4 +-
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c  |  4 +-
 5 files changed, 60 insertions(+), 34 deletions(-)

diff --git a/drivers/gpu/drm/xe/tests/xe_guc_buf_kunit.c b/drivers/gpu/drm/xe/tests/xe_guc_buf_kunit.c
index d266882adc0e0..acddbedcf17cb 100644
--- a/drivers/gpu/drm/xe/tests/xe_guc_buf_kunit.c
+++ b/drivers/gpu/drm/xe/tests/xe_guc_buf_kunit.c
@@ -67,7 +67,7 @@ static int guc_buf_test_init(struct kunit *test)
 
 	KUNIT_ASSERT_EQ(test, 0,
 			xe_ggtt_init_kunit(ggtt, DUT_GGTT_START,
-					   DUT_GGTT_START + DUT_GGTT_SIZE));
+					   DUT_GGTT_SIZE));
 
 	kunit_activate_static_stub(test, xe_managed_bo_create_pin_map,
 				   replacement_xe_managed_bo_create_pin_map);
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 48ab8b43fcd01..6be89363f591f 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -137,10 +137,32 @@ static void ggtt_update_access_counter(struct xe_ggtt *ggtt)
 	}
 }
 
+/**
+ * xe_ggtt_start - Get starting offset of GGTT.
+ * @ggtt: &xe_ggtt
+ *
+ * Returns: Starting offset for this &xe_ggtt.
+ */
+u64 xe_ggtt_start(struct xe_ggtt *ggtt)
+{
+	return ggtt->start;
+}
+
+/**
+ * xe_ggtt_size - Get size of GGTT.
+ * @ggtt: &xe_ggtt
+ *
+ * Returns: Total usable size of this &xe_ggtt.
+ */
+u64 xe_ggtt_size(struct xe_ggtt *ggtt)
+{
+	return ggtt->size;
+}
+
 static void xe_ggtt_set_pte(struct xe_ggtt *ggtt, u64 addr, u64 pte)
 {
 	xe_tile_assert(ggtt->tile, !(addr & XE_PTE_MASK));
-	xe_tile_assert(ggtt->tile, addr < ggtt->size);
+	xe_tile_assert(ggtt->tile, addr < ggtt->start + ggtt->size);
 
 	writeq(pte, &ggtt->gsm[addr >> XE_PTE_SHIFT]);
 }
@@ -256,16 +278,16 @@ static const struct xe_ggtt_pt_ops xelpg_pt_wa_ops = {
 	.ggtt_get_pte = xe_ggtt_get_pte,
 };
 
-static void __xe_ggtt_init_early(struct xe_ggtt *ggtt, u32 reserved)
+static void __xe_ggtt_init_early(struct xe_ggtt *ggtt, u64 start, u64 size)
 {
-	drm_mm_init(&ggtt->mm, reserved,
-		    ggtt->size - reserved);
+	ggtt->start = start;
+	ggtt->size = size;
+	drm_mm_init(&ggtt->mm, start, size);
 }
 
-int xe_ggtt_init_kunit(struct xe_ggtt *ggtt, u32 reserved, u32 size)
+int xe_ggtt_init_kunit(struct xe_ggtt *ggtt, u32 start, u32 size)
 {
-	ggtt->size = size;
-	__xe_ggtt_init_early(ggtt, reserved);
+	__xe_ggtt_init_early(ggtt, start, size);
 	return 0;
 }
 EXPORT_SYMBOL_IF_KUNIT(xe_ggtt_init_kunit);
@@ -293,26 +315,32 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
 	struct xe_device *xe = tile_to_xe(ggtt->tile);
 	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
 	unsigned int gsm_size;
+	u64 ggtt_start, wopcm = xe_wopcm_size(xe), ggtt_size;
 	int err;
 
-	if (IS_SRIOV_VF(xe) || GRAPHICS_VERx100(xe) >= 1250)
-		gsm_size = SZ_8M; /* GGTT is expected to be 4GiB */
-	else
-		gsm_size = probe_gsm_size(pdev);
-
-	if (gsm_size == 0) {
-		xe_tile_err(ggtt->tile, "Hardware reported no preallocated GSM\n");
-		return -ENOMEM;
+	if (!IS_SRIOV_VF(xe)) {
+		if (GRAPHICS_VERx100(xe) >= 1250)
+			gsm_size = SZ_8M; /* GGTT is expected to be 4GiB */
+		else
+			gsm_size = probe_gsm_size(pdev);
+		if (gsm_size == 0) {
+			xe_tile_err(ggtt->tile, "Hardware reported no preallocated GSM\n");
+			return -ENOMEM;
+		}
+		ggtt_start = wopcm;
+		ggtt_size = (gsm_size / 8) * (u64) XE_PAGE_SIZE - ggtt_start;
+	} else {
+		/* GGTT is expected to be 4GiB */
+		ggtt_start = wopcm;
+		ggtt_size = SZ_4G - ggtt_start;
 	}
 
 	ggtt->gsm = ggtt->tile->mmio.regs + SZ_8M;
-	ggtt->size = (gsm_size / 8) * (u64) XE_PAGE_SIZE;
-
 	if (IS_DGFX(xe) && xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
 		ggtt->flags |= XE_GGTT_FLAGS_64K;
 
-	if (ggtt->size > GUC_GGTT_TOP)
-		ggtt->size = GUC_GGTT_TOP;
+	if (ggtt_size + ggtt_start > GUC_GGTT_TOP)
+		ggtt_size = GUC_GGTT_TOP - ggtt_start;
 
 	if (GRAPHICS_VERx100(xe) >= 1270)
 		ggtt->pt_ops =
@@ -326,7 +354,7 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
 	if (!ggtt->wq)
 		return -ENOMEM;
 
-	__xe_ggtt_init_early(ggtt, xe_wopcm_size(xe));
+	__xe_ggtt_init_early(ggtt, ggtt_start, ggtt_size);
 
 	err = drmm_add_action_or_reset(&xe->drm, ggtt_fini_early, ggtt);
 	if (err)
@@ -563,11 +591,9 @@ void xe_ggtt_node_remove_balloon_locked(struct xe_ggtt_node *node)
 static void xe_ggtt_assert_fit(struct xe_ggtt *ggtt, u64 start, u64 size)
 {
 	struct xe_tile *tile = ggtt->tile;
-	struct xe_device *xe = tile_to_xe(tile);
-	u64 __maybe_unused wopcm = xe_wopcm_size(xe);
 
-	xe_tile_assert(tile, start >= wopcm);
-	xe_tile_assert(tile, start + size < ggtt->size - wopcm);
+	xe_tile_assert(tile, start >= ggtt->start);
+	xe_tile_assert(tile, start + size <= ggtt->start + ggtt->size);
 }
 
 /**
@@ -890,14 +916,12 @@ u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare)
 {
 	const struct drm_mm *mm = &ggtt->mm;
 	const struct drm_mm_node *entry;
-	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
 	u64 hole_start, hole_end, hole_size;
 	u64 max_hole = 0;
 
 	mutex_lock(&ggtt->lock);
-
 	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
-		hole_start = max(hole_start, hole_min_start);
+		hole_start = max(hole_start, ggtt->start);
 		hole_start = ALIGN(hole_start, alignment);
 		hole_end = ALIGN_DOWN(hole_end, alignment);
 		if (hole_start >= hole_end)
@@ -1069,15 +1093,13 @@ u64 xe_ggtt_print_holes(struct xe_ggtt *ggtt, u64 alignment, struct drm_printer
 {
 	const struct drm_mm *mm = &ggtt->mm;
 	const struct drm_mm_node *entry;
-	u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
 	u64 hole_start, hole_end, hole_size;
 	u64 total = 0;
 	char buf[10];
 
 	mutex_lock(&ggtt->lock);
-
 	drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
-		hole_start = max(hole_start, hole_min_start);
+		hole_start = max(hole_start, ggtt->start);
 		hole_start = ALIGN(hole_start, alignment);
 		hole_end = ALIGN_DOWN(hole_end, alignment);
 		if (hole_start >= hole_end)
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 93fea4b6079ce..df7196ec4696e 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -23,6 +23,8 @@ int xe_ggtt_node_insert_balloon_locked(struct xe_ggtt_node *node,
 				       u64 start, u64 size);
 void xe_ggtt_node_remove_balloon_locked(struct xe_ggtt_node *node);
 void xe_ggtt_shift_nodes_locked(struct xe_ggtt *ggtt, s64 shift);
+u64 xe_ggtt_start(struct xe_ggtt *ggtt);
+u64 xe_ggtt_size(struct xe_ggtt *ggtt);
 
 int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32 align);
 int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
index dacd796f81844..d773cf284c032 100644
--- a/drivers/gpu/drm/xe/xe_ggtt_types.h
+++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
@@ -22,7 +22,9 @@ struct xe_gt;
 struct xe_ggtt {
 	/** @tile: Back pointer to tile where this GGTT belongs */
 	struct xe_tile *tile;
-	/** @size: Total size of this GGTT */
+	/** @start: Start offset of GGTT */
+	u64 start;
+	/** @size: Total usable size of this GGTT */
 	u64 size;
 
 #define XE_GGTT_FLAGS_64K BIT(0)
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 5a870914b102c..bed6580d8d090 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -393,8 +393,8 @@ static int pf_push_full_vf_config(struct xe_gt *gt, unsigned int vfid)
 	xe_gt_assert(gt, num_dwords <= max_cfg_dwords);
 
 	if (vfid == PFID) {
-		u64 ggtt_start = xe_wopcm_size(gt_to_xe(gt));
-		u64 ggtt_size = gt_to_tile(gt)->mem.ggtt->size - ggtt_start;
+		u64 ggtt_start = xe_ggtt_start(gt_to_tile(gt)->mem.ggtt);
+		u64 ggtt_size = xe_ggtt_size(gt_to_tile(gt)->mem.ggtt);
 
 		/* plain PF config data will never include a real GGTT region */
 		xe_gt_assert(gt, !encode_config_ggtt(cfg + num_dwords, config, true));
-- 
2.51.0


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

* [PATCH v2 2/7] drm/xe: Convert xe_fb_pin to use a callback for insertion into GGTT
  2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
  2026-01-08 10:10 ` [PATCH v2 1/7] drm/xe: Start using ggtt->start in preparation of balloon removal Maarten Lankhorst
@ 2026-01-08 10:10 ` Maarten Lankhorst
  2026-01-08 10:10 ` [PATCH v2 3/7] drm/xe: Add xe_ggtt_node_addr() to avoid dereferencing xe_ggtt_node Maarten Lankhorst
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Maarten Lankhorst @ 2026-01-08 10:10 UTC (permalink / raw)
  To: intel-xe
  Cc: Maarten Lankhorst, Maarten Lankhorst, Matthew Brost,
	Juha-Pekka Heikkila

The rotation details belong in xe_fb_pin.c, while the operations involving
GGTT belong to xe_ggtt.c. As directly locking xe_ggtt etc results in
exposing all of xe_ggtt details anyway, create a special function that
allocates a ggtt_node, and allow display to populate it using a callback
as a compromise.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/display/xe_fb_pin.c | 102 ++++++++++++-------------
 drivers/gpu/drm/xe/xe_ggtt.c           |  90 ++++++++++++++++------
 drivers/gpu/drm/xe/xe_ggtt.h           |   9 ++-
 drivers/gpu/drm/xe/xe_ggtt_types.h     |   9 ++-
 4 files changed, 130 insertions(+), 80 deletions(-)

diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index a22a9182dadb0..a1cd42001f442 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -171,12 +171,13 @@ static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
 }
 
 static void
-write_ggtt_rotated(struct xe_bo *bo, struct xe_ggtt *ggtt, u32 *ggtt_ofs, u32 bo_ofs,
+write_ggtt_rotated(struct xe_ggtt *ggtt, u32 *ggtt_ofs,
+		   u64 pte_flags,
+		   xe_ggtt_set_pte_fn write_pte,
+		   struct xe_bo *bo, u32 bo_ofs,
 		   u32 width, u32 height, u32 src_stride, u32 dst_stride)
 {
-	struct xe_device *xe = xe_bo_device(bo);
 	u32 column, row;
-	u64 pte = ggtt->pt_ops->pte_encode_flags(bo, xe->pat.idx[XE_CACHE_NONE]);
 
 	for (column = 0; column < width; column++) {
 		u32 src_idx = src_stride * (height - 1) + column + bo_ofs;
@@ -184,7 +185,7 @@ write_ggtt_rotated(struct xe_bo *bo, struct xe_ggtt *ggtt, u32 *ggtt_ofs, u32 bo
 		for (row = 0; row < height; row++) {
 			u64 addr = xe_bo_addr(bo, src_idx * XE_PAGE_SIZE, XE_PAGE_SIZE);
 
-			ggtt->pt_ops->ggtt_set_pte(ggtt, *ggtt_ofs, pte | addr);
+			write_pte(ggtt, *ggtt_ofs, pte_flags | addr);
 			*ggtt_ofs += XE_PAGE_SIZE;
 			src_idx -= src_stride;
 		}
@@ -194,6 +195,28 @@ write_ggtt_rotated(struct xe_bo *bo, struct xe_ggtt *ggtt, u32 *ggtt_ofs, u32 bo
 	}
 }
 
+struct fb_rotate_args {
+	const struct i915_gtt_view *view;
+	struct xe_bo *bo;
+};
+
+static void write_ggtt_rotated_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+				    u64 pte_flags, xe_ggtt_set_pte_fn write_pte, void *data)
+{
+	struct fb_rotate_args *args = data;
+	struct xe_bo *bo = args->bo;
+	const struct intel_rotation_info *rot_info = &args->view->rotated;
+	u32 ggtt_ofs = node->base.start;
+
+	for (u32 i = 0; i < ARRAY_SIZE(rot_info->plane); i++)
+		write_ggtt_rotated(ggtt, &ggtt_ofs, pte_flags, write_pte,
+				   bo, rot_info->plane[i].offset,
+				   rot_info->plane[i].width,
+				   rot_info->plane[i].height,
+				   rot_info->plane[i].src_stride,
+				   rot_info->plane[i].dst_stride);
+}
+
 static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 				const struct i915_gtt_view *view,
 				struct i915_vma *vma,
@@ -204,66 +227,43 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
 	struct xe_device *xe = to_xe_device(fb->base.dev);
 	struct xe_tile *tile0 = xe_device_get_root_tile(xe);
 	struct xe_ggtt *ggtt = tile0->mem.ggtt;
+	u64 pte, size;
 	u32 align;
-	int ret;
+	int ret = 0;
 
 	/* TODO: Consider sharing framebuffer mapping?
 	 * embed i915_vma inside intel_framebuffer
 	 */
 	guard(xe_pm_runtime_noresume)(xe);
-	ACQUIRE(mutex_intr, lock)(&ggtt->lock);
-	ret = ACQUIRE_ERR(mutex_intr, &lock);
-	if (ret)
-		return ret;
 
 	align = XE_PAGE_SIZE;
-	if (xe_bo_is_vram(bo) && ggtt->flags & XE_GGTT_FLAGS_64K)
-		align = max_t(u32, align, SZ_64K);
+	if (xe_bo_is_vram(bo) && xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
+		align = max(align, SZ_64K);
 
+	/* Fast case, preallocated GGTT view? */
 	if (bo->ggtt_node[tile0->id] && view->type == I915_GTT_VIEW_NORMAL) {
 		vma->node = bo->ggtt_node[tile0->id];
-	} else if (view->type == I915_GTT_VIEW_NORMAL) {
-		vma->node = xe_ggtt_node_init(ggtt);
-		if (IS_ERR(vma->node))
-			return PTR_ERR(vma->node);
-
-		ret = xe_ggtt_node_insert_locked(vma->node, xe_bo_size(bo), align, 0);
-		if (ret) {
-			xe_ggtt_node_fini(vma->node);
-			return ret;
-		}
-
-		xe_ggtt_map_bo(ggtt, vma->node, bo, xe->pat.idx[XE_CACHE_NONE]);
-	} else {
-		u32 i, ggtt_ofs;
-		const struct intel_rotation_info *rot_info = &view->rotated;
-
-		/* display seems to use tiles instead of bytes here, so convert it back.. */
-		u32 size = intel_rotation_info_size(rot_info) * XE_PAGE_SIZE;
-
-		vma->node = xe_ggtt_node_init(ggtt);
-		if (IS_ERR(vma->node)) {
-			ret = PTR_ERR(vma->node);
-			return ret;
-		}
-
-		ret = xe_ggtt_node_insert_locked(vma->node, size, align, 0);
-		if (ret) {
-			xe_ggtt_node_fini(vma->node);
-			return ret;
-		}
-
-		ggtt_ofs = vma->node->base.start;
-
-		for (i = 0; i < ARRAY_SIZE(rot_info->plane); i++)
-			write_ggtt_rotated(bo, ggtt, &ggtt_ofs,
-					   rot_info->plane[i].offset,
-					   rot_info->plane[i].width,
-					   rot_info->plane[i].height,
-					   rot_info->plane[i].src_stride,
-					   rot_info->plane[i].dst_stride);
+		return 0;
 	}
 
+	/* TODO: Consider sharing framebuffer mapping?
+	 * embed i915_vma inside intel_framebuffer
+	 */
+	if (view->type == I915_GTT_VIEW_NORMAL)
+		size = xe_bo_size(bo);
+	else
+		/* display uses tiles instead of bytes here, so convert it back.. */
+		size = intel_rotation_info_size(&view->rotated) * XE_PAGE_SIZE;
+
+	pte = xe_ggtt_encode_pte_flags(ggtt, bo, xe->pat.idx[XE_CACHE_NONE]);
+	vma->node = xe_ggtt_node_insert_transform(ggtt, bo, pte,
+						  ALIGN(size, align), align,
+						  view->type == I915_GTT_VIEW_NORMAL ?
+						  NULL : write_ggtt_rotated_node,
+						  &(struct fb_rotate_args){view, bo});
+	if (IS_ERR(vma->node))
+		ret = PTR_ERR(vma->node);
+
 	return ret;
 }
 
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 6be89363f591f..6bb6dcb0419ad 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -636,19 +636,7 @@ void xe_ggtt_shift_nodes_locked(struct xe_ggtt *ggtt, s64 shift)
 	}
 }
 
-/**
- * xe_ggtt_node_insert_locked - Locked version to insert a &xe_ggtt_node into the GGTT
- * @node: the &xe_ggtt_node to be inserted
- * @size: size of the node
- * @align: alignment constrain of the node
- * @mm_flags: flags to control the node behavior
- *
- * It cannot be called without first having called xe_ggtt_init() once.
- * To be used in cases where ggtt->lock is already taken.
- *
- * Return: 0 on success or a negative error code on failure.
- */
-int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
+static int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
 			       u32 size, u32 align, u32 mm_flags)
 {
 	return drm_mm_insert_node_generic(&node->ggtt->mm, &node->base, size, align, 0,
@@ -687,9 +675,11 @@ int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32 align)
  * This function will allocate the struct %xe_ggtt_node and return its pointer.
  * This struct will then be freed after the node removal upon xe_ggtt_node_remove()
  * or xe_ggtt_node_remove_balloon_locked().
- * Having %xe_ggtt_node struct allocated doesn't mean that the node is already allocated
- * in GGTT. Only the xe_ggtt_node_insert(), xe_ggtt_node_insert_locked(),
- * xe_ggtt_node_insert_balloon_locked() will ensure the node is inserted or reserved in GGTT.
+ *
+ * Having %xe_ggtt_node struct allocated doesn't mean that the node is already
+ * allocated in GGTT. Only xe_ggtt_node_insert(), allocation through
+ * xe_ggtt_node_insert_transform(), or xe_ggtt_node_insert_balloon_locked() will ensure the node is inserted or reserved
+ * in GGTT.
  *
  * Return: A pointer to %xe_ggtt_node struct on success. An ERR_PTR otherwise.
  **/
@@ -752,13 +742,12 @@ size_t xe_ggtt_node_pt_size(const struct xe_ggtt_node *node)
  * @ggtt: the &xe_ggtt where node will be mapped
  * @node: the &xe_ggtt_node where this BO is mapped
  * @bo: the &xe_bo to be mapped
- * @pat_index: Which pat_index to use.
+ * @pte: The pte flags to append.
  */
-void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
-		    struct xe_bo *bo, u16 pat_index)
+static void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+			   struct xe_bo *bo, u64 pte)
 {
-
-	u64 start, pte, end;
+	u64 start, end;
 	struct xe_res_cursor cur;
 
 	if (XE_WARN_ON(!node))
@@ -767,7 +756,6 @@ void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
 	start = node->base.start;
 	end = start + xe_bo_size(bo);
 
-	pte = ggtt->pt_ops->pte_encode_flags(bo, pat_index);
 	if (!xe_bo_is_vram(bo) && !xe_bo_is_stolen(bo)) {
 		xe_assert(xe_bo_device(bo), bo->ttm.ttm);
 
@@ -797,10 +785,63 @@ void xe_ggtt_map_bo_unlocked(struct xe_ggtt *ggtt, struct xe_bo *bo)
 {
 	u16 cache_mode = bo->flags & XE_BO_FLAG_NEEDS_UC ? XE_CACHE_NONE : XE_CACHE_WB;
 	u16 pat_index = tile_to_xe(ggtt->tile)->pat.idx[cache_mode];
+	u64 pte;
 
 	mutex_lock(&ggtt->lock);
-	xe_ggtt_map_bo(ggtt, bo->ggtt_node[ggtt->tile->id], bo, pat_index);
+	pte = ggtt->pt_ops->pte_encode_flags(bo, pat_index);
+	xe_ggtt_map_bo(ggtt, bo->ggtt_node[ggtt->tile->id], bo, pte);
+	mutex_unlock(&ggtt->lock);
+}
+
+/**
+ * xe_ggtt_node_insert_transform - Insert a newly allocated &xe_ggtt_node into the GGTT
+ * @ggtt: the &xe_ggtt where the node will inserted/reserved.
+ * @bo: The bo to be transformed
+ * @pte_flags: The extra GGTT flags to add to mapping.
+ * @size: size of the node
+ * @align: required alignment for node
+ * @transform: transformation function that will populate the GGTT node, or NULL for linear mapping.
+ * @arg: Extra argument to pass to the transformation function.
+ *
+ * This function allows inserting a GGTT node with a custom transformation function.
+ * This is useful for display to allow inserting rotated framebuffers to GGTT.
+ *
+ * Return: A pointer to %xe_ggtt_node struct on success. An ERR_PTR otherwise.
+ */
+struct xe_ggtt_node *xe_ggtt_node_insert_transform(struct xe_ggtt *ggtt,
+						   struct xe_bo *bo, u64 pte_flags,
+						   u64 size, u32 align,
+						   xe_ggtt_transform_cb transform, void *arg)
+{
+	struct xe_ggtt_node *node;
+	int ret;
+
+	node = xe_ggtt_node_init(ggtt);
+	if (IS_ERR(node))
+		return ERR_CAST(node);
+
+	if (mutex_lock_interruptible(&ggtt->lock) < 0) {
+		ret = -ERESTARTSYS;
+		goto err;
+	}
+
+	ret = xe_ggtt_node_insert_locked(node, size, align, 0);
+	if (ret)
+		goto err_unlock;
+
+	if (transform)
+		transform(ggtt, node, pte_flags, ggtt->pt_ops->ggtt_set_pte, arg);
+	else
+		xe_ggtt_map_bo(ggtt, node, bo, pte_flags);
+
 	mutex_unlock(&ggtt->lock);
+	return node;
+
+err_unlock:
+	mutex_unlock(&ggtt->lock);
+err:
+	xe_ggtt_node_fini(node);
+	return ERR_PTR(ret);
 }
 
 static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
@@ -841,8 +882,9 @@ static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
 	} else {
 		u16 cache_mode = bo->flags & XE_BO_FLAG_NEEDS_UC ? XE_CACHE_NONE : XE_CACHE_WB;
 		u16 pat_index = tile_to_xe(ggtt->tile)->pat.idx[cache_mode];
+		u64 pte = ggtt->pt_ops->pte_encode_flags(bo, pat_index);
 
-		xe_ggtt_map_bo(ggtt, bo->ggtt_node[tile_id], bo, pat_index);
+		xe_ggtt_map_bo(ggtt, bo->ggtt_node[tile_id], bo, pte);
 	}
 	mutex_unlock(&ggtt->lock);
 
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index df7196ec4696e..9adfc58edf581 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -27,13 +27,14 @@ u64 xe_ggtt_start(struct xe_ggtt *ggtt);
 u64 xe_ggtt_size(struct xe_ggtt *ggtt);
 
 int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32 align);
-int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
-			       u32 size, u32 align, u32 mm_flags);
+struct xe_ggtt_node *
+xe_ggtt_node_insert_transform(struct xe_ggtt *ggtt,
+			      struct xe_bo *bo, u64 pte,
+			      u64 size, u32 align,
+			      xe_ggtt_transform_cb transform, void *arg);
 void xe_ggtt_node_remove(struct xe_ggtt_node *node, bool invalidate);
 bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node);
 size_t xe_ggtt_node_pt_size(const struct xe_ggtt_node *node);
-void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
-		    struct xe_bo *bo, u16 pat_index);
 void xe_ggtt_map_bo_unlocked(struct xe_ggtt *ggtt, struct xe_bo *bo);
 int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo, struct drm_exec *exec);
 int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
index d773cf284c032..5fd723ce81087 100644
--- a/drivers/gpu/drm/xe/xe_ggtt_types.h
+++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
@@ -71,6 +71,11 @@ struct xe_ggtt_node {
 	bool invalidate_on_remove;
 };
 
+typedef void (*xe_ggtt_set_pte_fn)(struct xe_ggtt *ggtt, u64 addr, u64 pte);
+typedef void (*xe_ggtt_transform_cb)(struct xe_ggtt *ggtt,
+				     struct xe_ggtt_node *node,
+				     u64 pte_flags,
+				     xe_ggtt_set_pte_fn set_pte, void *arg);
 /**
  * struct xe_ggtt_pt_ops - GGTT Page table operations
  * Which can vary from platform to platform.
@@ -78,8 +83,10 @@ struct xe_ggtt_node {
 struct xe_ggtt_pt_ops {
 	/** @pte_encode_flags: Encode PTE flags for a given BO */
 	u64 (*pte_encode_flags)(struct xe_bo *bo, u16 pat_index);
+
 	/** @ggtt_set_pte: Directly write into GGTT's PTE */
-	void (*ggtt_set_pte)(struct xe_ggtt *ggtt, u64 addr, u64 pte);
+	xe_ggtt_set_pte_fn ggtt_set_pte;
+
 	/** @ggtt_get_pte: Directly read from GGTT's PTE */
 	u64 (*ggtt_get_pte)(struct xe_ggtt *ggtt, u64 addr);
 };
-- 
2.51.0


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

* [PATCH v2 3/7] drm/xe: Add xe_ggtt_node_addr() to avoid dereferencing xe_ggtt_node
  2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
  2026-01-08 10:10 ` [PATCH v2 1/7] drm/xe: Start using ggtt->start in preparation of balloon removal Maarten Lankhorst
  2026-01-08 10:10 ` [PATCH v2 2/7] drm/xe: Convert xe_fb_pin to use a callback for insertion into GGTT Maarten Lankhorst
@ 2026-01-08 10:10 ` Maarten Lankhorst
  2026-01-08 16:15   ` Matthew Brost
  2026-01-08 10:10 ` [PATCH v2 4/7] drm/xe/display: Avoid " Maarten Lankhorst
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 15+ messages in thread
From: Maarten Lankhorst @ 2026-01-08 10:10 UTC (permalink / raw)
  To: intel-xe; +Cc: Maarten Lankhorst

This function makes it possible to add an offset that is applied to
all xe_ggtt_node's, and hides the internals from all its users.

Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/xe_bo.h   |  8 +++++---
 drivers/gpu/drm/xe/xe_ggtt.c | 11 +++++++++++
 drivers/gpu/drm/xe/xe_ggtt.h |  2 ++
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.h b/drivers/gpu/drm/xe/xe_bo.h
index 8ab4474129c3d..c914ab719f20e 100644
--- a/drivers/gpu/drm/xe/xe_bo.h
+++ b/drivers/gpu/drm/xe/xe_bo.h
@@ -9,6 +9,7 @@
 #include <drm/ttm/ttm_tt.h>
 
 #include "xe_bo_types.h"
+#include "xe_ggtt.h"
 #include "xe_macros.h"
 #include "xe_validation.h"
 #include "xe_vm_types.h"
@@ -252,13 +253,14 @@ static inline u32
 __xe_bo_ggtt_addr(struct xe_bo *bo, u8 tile_id)
 {
 	struct xe_ggtt_node *ggtt_node = bo->ggtt_node[tile_id];
+	u64 offset;
 
 	if (XE_WARN_ON(!ggtt_node))
 		return 0;
 
-	XE_WARN_ON(ggtt_node->base.size > xe_bo_size(bo));
-	XE_WARN_ON(ggtt_node->base.start + ggtt_node->base.size > (1ull << 32));
-	return ggtt_node->base.start;
+	offset = xe_ggtt_node_addr(ggtt_node);
+	XE_WARN_ON(offset + xe_bo_size(bo) > (1ull << 32));
+	return offset;
 }
 
 static inline u32
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 6bb6dcb0419ad..7f45bcd0c56b0 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -1185,3 +1185,14 @@ u64 xe_ggtt_read_pte(struct xe_ggtt *ggtt, u64 offset)
 {
 	return ioread64(ggtt->gsm + (offset / XE_PAGE_SIZE));
 }
+
+/**
+ * xe_ggtt_node_addr - Get @node offset in GGTT.
+ * @node: &xe_ggtt_node
+ *
+ * Get the GGTT offset for allocated node.
+ */
+u64 xe_ggtt_node_addr(const struct xe_ggtt_node *node)
+{
+	return node->base.start;
+}
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 9adfc58edf581..76336a6296c45 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -61,4 +61,6 @@ void xe_ggtt_might_lock(struct xe_ggtt *ggtt);
 u64 xe_ggtt_encode_pte_flags(struct xe_ggtt *ggtt, struct xe_bo *bo, u16 pat_index);
 u64 xe_ggtt_read_pte(struct xe_ggtt *ggtt, u64 offset);
 
+u64 xe_ggtt_node_addr(const struct xe_ggtt_node *node);
+
 #endif
-- 
2.51.0


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

* [PATCH v2 4/7] drm/xe/display: Avoid dereferencing xe_ggtt_node
  2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
                   ` (2 preceding siblings ...)
  2026-01-08 10:10 ` [PATCH v2 3/7] drm/xe: Add xe_ggtt_node_addr() to avoid dereferencing xe_ggtt_node Maarten Lankhorst
@ 2026-01-08 10:10 ` Maarten Lankhorst
  2026-01-12 14:46   ` Rodrigo Vivi
  2026-01-08 10:10 ` [PATCH v2 5/7] drm/xe: Do not dereference ggtt_node in xe_bo.c Maarten Lankhorst
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 15+ messages in thread
From: Maarten Lankhorst @ 2026-01-08 10:10 UTC (permalink / raw)
  To: intel-xe; +Cc: Maarten Lankhorst, Matthew Brost

Start using xe_ggtt_node_addr, and avoid comparing the base offset
as vma->node is dynamically allocated.

Also sneak in a xe_bo_size() for stolen, too small to put as separate commit.

Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h | 4 ++--
 drivers/gpu/drm/xe/display/xe_fb_pin.c            | 4 ++--
 drivers/gpu/drm/xe/display/xe_stolen.c            | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
index b17e3bab23d58..c4b5adaaa99a3 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
@@ -8,7 +8,7 @@
 
 #include <uapi/drm/i915_drm.h>
 
-#include "xe_ggtt_types.h"
+#include "xe_ggtt.h"
 
 #include <linux/refcount.h>
 
@@ -30,7 +30,7 @@ struct i915_vma {
 
 static inline u32 i915_ggtt_offset(const struct i915_vma *vma)
 {
-	return vma->node->base.start;
+	return xe_ggtt_node_addr(vma->node);
 }
 
 #endif
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index a1cd42001f442..d2c4e94180fa3 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -206,7 +206,7 @@ static void write_ggtt_rotated_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *n
 	struct fb_rotate_args *args = data;
 	struct xe_bo *bo = args->bo;
 	const struct intel_rotation_info *rot_info = &args->view->rotated;
-	u32 ggtt_ofs = node->base.start;
+	u32 ggtt_ofs = xe_ggtt_node_addr(node);
 
 	for (u32 i = 0; i < ARRAY_SIZE(rot_info->plane); i++)
 		write_ggtt_rotated(ggtt, &ggtt_ofs, pte_flags, write_pte,
@@ -353,7 +353,7 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
 	if (vma->dpt)
 		xe_bo_unpin_map_no_vm(vma->dpt);
 	else if (!xe_ggtt_node_allocated(vma->bo->ggtt_node[tile_id]) ||
-		 vma->bo->ggtt_node[tile_id]->base.start != vma->node->base.start)
+		 vma->bo->ggtt_node[tile_id] != vma->node)
 		xe_ggtt_node_remove(vma->node, false);
 
 	ttm_bo_reserve(&vma->bo->ttm, false, false, NULL);
diff --git a/drivers/gpu/drm/xe/display/xe_stolen.c b/drivers/gpu/drm/xe/display/xe_stolen.c
index 12771709183ad..8dc2f86ec6023 100644
--- a/drivers/gpu/drm/xe/display/xe_stolen.c
+++ b/drivers/gpu/drm/xe/display/xe_stolen.c
@@ -78,7 +78,7 @@ static u64 xe_stolen_node_address(const struct intel_stolen_node *node)
 
 static u64 xe_stolen_node_size(const struct intel_stolen_node *node)
 {
-	return node->bo->ttm.base.size;
+	return xe_bo_size(node->bo);
 }
 
 static struct intel_stolen_node *xe_stolen_node_alloc(struct drm_device *drm)
-- 
2.51.0


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

* [PATCH v2 5/7] drm/xe: Do not dereference ggtt_node in xe_bo.c
  2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
                   ` (3 preceding siblings ...)
  2026-01-08 10:10 ` [PATCH v2 4/7] drm/xe/display: Avoid " Maarten Lankhorst
@ 2026-01-08 10:10 ` Maarten Lankhorst
  2026-01-08 16:16   ` Matthew Brost
  2026-01-08 10:10 ` [PATCH v2 6/7] drm/xe: Improve xe_gt_sriov_pf_config GGTT handling Maarten Lankhorst
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 15+ messages in thread
From: Maarten Lankhorst @ 2026-01-08 10:10 UTC (permalink / raw)
  To: intel-xe; +Cc: Maarten Lankhorst

A careful inspection of __xe_ggtt_insert_bo_at() shows that
the ggtt_node can always be seen as inserted from xe_bo.c
due to the way error handling is performed.

The checks are also a little bit too paranoid, since we
never create a bo with ggtt_node[id] initialised but not
inserted into the GGTT, which can be seen by looking at
__xe_ggtt_insert_bo_at()

Additionally, the size of the GGTT is never bigger than 4 GB,
so adding a check at that level is incorrect.

Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/xe_bo.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 8b6474cd3eaf2..21e7a738cfed8 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -1709,7 +1709,7 @@ static void xe_ttm_bo_destroy(struct ttm_buffer_object *ttm_bo)
 	xe_assert(xe, list_empty(&ttm_bo->base.gpuva.list));
 
 	for_each_tile(tile, xe, id)
-		if (bo->ggtt_node[id] && bo->ggtt_node[id]->base.size)
+		if (bo->ggtt_node[id])
 			xe_ggtt_remove_bo(tile->mem.ggtt, bo);
 
 #ifdef CONFIG_PROC_FS
@@ -3603,8 +3603,8 @@ void xe_bo_put(struct xe_bo *bo)
 			might_lock(&bo->client->bos_lock);
 #endif
 		for_each_tile(tile, xe_bo_device(bo), id)
-			if (bo->ggtt_node[id] && bo->ggtt_node[id]->ggtt)
-				xe_ggtt_might_lock(bo->ggtt_node[id]->ggtt);
+			if (bo->ggtt_node[id])
+				xe_ggtt_might_lock(tile->mem.ggtt);
 		drm_gem_object_put(&bo->ttm.base);
 	}
 }
-- 
2.51.0


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

* [PATCH v2 6/7] drm/xe: Improve xe_gt_sriov_pf_config GGTT handling
  2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
                   ` (4 preceding siblings ...)
  2026-01-08 10:10 ` [PATCH v2 5/7] drm/xe: Do not dereference ggtt_node in xe_bo.c Maarten Lankhorst
@ 2026-01-08 10:10 ` Maarten Lankhorst
  2026-01-08 10:10 ` [PATCH v2 7/7] drm/xe: Privatize xe_ggtt_node Maarten Lankhorst
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Maarten Lankhorst @ 2026-01-08 10:10 UTC (permalink / raw)
  To: intel-xe; +Cc: Maarten Lankhorst, Matthew.brost, Michal Wajdeczko

Do not directly dereference xe_ggtt_node, and add
a function to retrieve the allocated GGTT size.

Reviewed-by: Matthew.brost@intel.com
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/xe_ggtt.c               | 11 +++++++++++
 drivers/gpu/drm/xe/xe_ggtt.h               |  1 +
 drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 15 ++++++++-------
 3 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 7f45bcd0c56b0..e396f33e2c5c9 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -1196,3 +1196,14 @@ u64 xe_ggtt_node_addr(const struct xe_ggtt_node *node)
 {
 	return node->base.start;
 }
+
+/**
+ * xe_ggtt_node_size - Get @node allocation size.
+ * @node: &xe_ggtt_node
+ *
+ * Get the allocated node's size.
+ */
+u64 xe_ggtt_node_size(const struct xe_ggtt_node *node)
+{
+	return node->base.size;
+}
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 76336a6296c45..70d5e07ac4b66 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -62,5 +62,6 @@ u64 xe_ggtt_encode_pte_flags(struct xe_ggtt *ggtt, struct xe_bo *bo, u16 pat_ind
 u64 xe_ggtt_read_pte(struct xe_ggtt *ggtt, u64 offset);
 
 u64 xe_ggtt_node_addr(const struct xe_ggtt_node *node);
+u64 xe_ggtt_node_size(const struct xe_ggtt_node *node);
 
 #endif
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index bed6580d8d090..9f2525f3cb379 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -284,7 +284,7 @@ static u32 encode_config_ggtt(u32 *cfg, const struct xe_gt_sriov_config *config,
 	if (!xe_ggtt_node_allocated(node))
 		return 0;
 
-	return encode_ggtt(cfg, node->base.start, node->base.size, details);
+	return encode_ggtt(cfg, xe_ggtt_node_addr(node), xe_ggtt_node_size(node), details);
 }
 
 static u32 encode_config_sched(struct xe_gt *gt, u32 *cfg, u32 n,
@@ -545,9 +545,9 @@ static int pf_provision_vf_ggtt(struct xe_gt *gt, unsigned int vfid, u64 size)
 
 	xe_ggtt_assign(node, vfid);
 	xe_gt_sriov_dbg_verbose(gt, "VF%u assigned GGTT %llx-%llx\n",
-				vfid, node->base.start, node->base.start + node->base.size - 1);
+				vfid, xe_ggtt_node_addr(node), xe_ggtt_node_addr(node) + size - 1);
 
-	err = pf_distribute_config_ggtt(gt->tile, vfid, node->base.start, node->base.size);
+	err = pf_distribute_config_ggtt(gt->tile, vfid, xe_ggtt_node_addr(node), size);
 	if (unlikely(err))
 		goto err;
 
@@ -564,7 +564,7 @@ static u64 pf_get_vf_config_ggtt(struct xe_gt *gt, unsigned int vfid)
 	struct xe_ggtt_node *node = config->ggtt_region;
 
 	xe_gt_assert(gt, xe_gt_is_main_type(gt));
-	return xe_ggtt_node_allocated(node) ? node->base.size : 0;
+	return xe_ggtt_node_allocated(node) ? xe_ggtt_node_size(node) : 0;
 }
 
 /**
@@ -3040,11 +3040,12 @@ int xe_gt_sriov_pf_config_print_ggtt(struct xe_gt *gt, struct drm_printer *p)
 		if (!xe_ggtt_node_allocated(config->ggtt_region))
 			continue;
 
-		string_get_size(config->ggtt_region->base.size, 1, STRING_UNITS_2,
+		string_get_size(xe_ggtt_node_size(config->ggtt_region), 1, STRING_UNITS_2,
 				buf, sizeof(buf));
 		drm_printf(p, "VF%u:\t%#0llx-%#llx\t(%s)\n",
-			   n, config->ggtt_region->base.start,
-			   config->ggtt_region->base.start + config->ggtt_region->base.size - 1,
+			   n, xe_ggtt_node_addr(config->ggtt_region),
+			   xe_ggtt_node_addr(config->ggtt_region) +
+			   xe_ggtt_node_size(config->ggtt_region) - 1,
 			   buf);
 	}
 
-- 
2.51.0


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

* [PATCH v2 7/7] drm/xe: Privatize xe_ggtt_node
  2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
                   ` (5 preceding siblings ...)
  2026-01-08 10:10 ` [PATCH v2 6/7] drm/xe: Improve xe_gt_sriov_pf_config GGTT handling Maarten Lankhorst
@ 2026-01-08 10:10 ` Maarten Lankhorst
  2026-01-08 10:40 ` ✗ CI.checkpatch: warning for drm/xe: Privatize struct xe_ggtt_node. (rev2) Patchwork
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Maarten Lankhorst @ 2026-01-08 10:10 UTC (permalink / raw)
  To: intel-xe; +Cc: Maarten Lankhorst, Matthew Brost

Nothing requires it any more, make the member private.

Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
 drivers/gpu/drm/xe/xe_ggtt.c       | 18 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_ggtt_types.h | 19 +------------------
 2 files changed, 19 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index e396f33e2c5c9..7d191c68629c6 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -67,6 +67,24 @@
  * give us the correct placement for free.
  */
 
+/**
+ * struct xe_ggtt_node - A node in GGTT.
+ *
+ * This struct needs to be initialized (only-once) with xe_ggtt_node_init() before any node
+ * insertion, reservation, or 'ballooning'.
+ * It will, then, be finalized by either xe_ggtt_node_remove() or xe_ggtt_node_deballoon().
+ */
+struct xe_ggtt_node {
+	/** @ggtt: Back pointer to xe_ggtt where this region will be inserted at */
+	struct xe_ggtt *ggtt;
+	/** @base: A drm_mm_node */
+	struct drm_mm_node base;
+	/** @delayed_removal_work: The work struct for the delayed removal */
+	struct work_struct delayed_removal_work;
+	/** @invalidate_on_remove: If it needs invalidation upon removal */
+	bool invalidate_on_remove;
+};
+
 static u64 xelp_ggtt_pte_flags(struct xe_bo *bo, u16 pat_index)
 {
 	u64 pte = XE_PAGE_PRESENT;
diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
index 5fd723ce81087..d82b71a198bc2 100644
--- a/drivers/gpu/drm/xe/xe_ggtt_types.h
+++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
@@ -11,6 +11,7 @@
 #include "xe_pt_types.h"
 
 struct xe_bo;
+struct xe_ggtt_node;
 struct xe_gt;
 
 /**
@@ -53,24 +54,6 @@ struct xe_ggtt {
 	struct workqueue_struct *wq;
 };
 
-/**
- * struct xe_ggtt_node - A node in GGTT.
- *
- * This struct needs to be initialized (only-once) with xe_ggtt_node_init() before any node
- * insertion, reservation, or 'ballooning'.
- * It will, then, be finalized by either xe_ggtt_node_remove() or xe_ggtt_node_deballoon().
- */
-struct xe_ggtt_node {
-	/** @ggtt: Back pointer to xe_ggtt where this region will be inserted at */
-	struct xe_ggtt *ggtt;
-	/** @base: A drm_mm_node */
-	struct drm_mm_node base;
-	/** @delayed_removal_work: The work struct for the delayed removal */
-	struct work_struct delayed_removal_work;
-	/** @invalidate_on_remove: If it needs invalidation upon removal */
-	bool invalidate_on_remove;
-};
-
 typedef void (*xe_ggtt_set_pte_fn)(struct xe_ggtt *ggtt, u64 addr, u64 pte);
 typedef void (*xe_ggtt_transform_cb)(struct xe_ggtt *ggtt,
 				     struct xe_ggtt_node *node,
-- 
2.51.0


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

* ✗ CI.checkpatch: warning for drm/xe: Privatize struct xe_ggtt_node. (rev2)
  2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
                   ` (6 preceding siblings ...)
  2026-01-08 10:10 ` [PATCH v2 7/7] drm/xe: Privatize xe_ggtt_node Maarten Lankhorst
@ 2026-01-08 10:40 ` Patchwork
  2026-01-08 10:41 ` ✓ CI.KUnit: success " Patchwork
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-01-08 10:40 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Privatize struct xe_ggtt_node. (rev2)
URL   : https://patchwork.freedesktop.org/series/156258/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
9f1cb6875f3f9eb0925ed50c16100322a2df513c
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit c2bf49c644f02ef78be452d1f5fe481537217804
Author: Maarten Lankhorst <dev@lankhorst.se>
Date:   Thu Jan 8 11:10:22 2026 +0100

    drm/xe: Privatize xe_ggtt_node
    
    Nothing requires it any more, make the member private.
    
    Reviewed-by: Matthew Brost <matthew.brost@intel.com>
    Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
+ /mt/dim checkpatch 580c8957e96b7372e82590d1b1e6c2842c245077 drm-intel
04e0c5a6b4e3 drm/xe: Start using ggtt->start in preparation of balloon removal
-:115: CHECK:SPACING: No space is necessary after a cast
#115: FILE: drivers/gpu/drm/xe/xe_ggtt.c:331:
+		ggtt_size = (gsm_size / 8) * (u64) XE_PAGE_SIZE - ggtt_start;

total: 0 errors, 0 warnings, 1 checks, 187 lines checked
4a461e0a0d7a drm/xe: Convert xe_fb_pin to use a callback for insertion into GGTT
-:190: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#190: FILE: drivers/gpu/drm/xe/xe_ggtt.c:640:
+static int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
 			       u32 size, u32 align, u32 mm_flags)

-:203: WARNING:LONG_LINE_COMMENT: line length of 120 exceeds 100 columns
#203: FILE: drivers/gpu/drm/xe/xe_ggtt.c:681:
+ * xe_ggtt_node_insert_transform(), or xe_ggtt_node_insert_balloon_locked() will ensure the node is inserted or reserved

total: 0 errors, 1 warnings, 1 checks, 314 lines checked
513cc38e3a97 drm/xe: Add xe_ggtt_node_addr() to avoid dereferencing xe_ggtt_node
770cabb5eb17 drm/xe/display: Avoid dereferencing xe_ggtt_node
-:9: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#9: 
Also sneak in a xe_bo_size() for stolen, too small to put as separate commit.

total: 0 errors, 1 warnings, 0 checks, 40 lines checked
d57dd1e5fa35 drm/xe: Do not dereference ggtt_node in xe_bo.c
ae5ee32ffe07 drm/xe: Improve xe_gt_sriov_pf_config GGTT handling
c2bf49c644f0 drm/xe: Privatize xe_ggtt_node



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

* ✓ CI.KUnit: success for drm/xe: Privatize struct xe_ggtt_node. (rev2)
  2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
                   ` (7 preceding siblings ...)
  2026-01-08 10:40 ` ✗ CI.checkpatch: warning for drm/xe: Privatize struct xe_ggtt_node. (rev2) Patchwork
@ 2026-01-08 10:41 ` Patchwork
  2026-01-08 11:40 ` ✓ Xe.CI.BAT: " Patchwork
  2026-01-08 14:19 ` ✓ Xe.CI.Full: " Patchwork
  10 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-01-08 10:41 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-xe

== Series Details ==

Series: drm/xe: Privatize struct xe_ggtt_node. (rev2)
URL   : https://patchwork.freedesktop.org/series/156258/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[10:40:42] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[10:40: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
[10:41:17] Starting KUnit Kernel (1/1)...
[10:41:17] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[10:41:17] ================== guc_buf (11 subtests) ===================
[10:41:17] [PASSED] test_smallest
[10:41:17] [PASSED] test_largest
[10:41:17] [PASSED] test_granular
[10:41:17] [PASSED] test_unique
[10:41:17] [PASSED] test_overlap
[10:41:17] [PASSED] test_reusable
[10:41:17] [PASSED] test_too_big
[10:41:17] [PASSED] test_flush
[10:41:17] [PASSED] test_lookup
[10:41:17] [PASSED] test_data
[10:41:17] [PASSED] test_class
[10:41:17] ===================== [PASSED] guc_buf =====================
[10:41:17] =================== guc_dbm (7 subtests) ===================
[10:41:17] [PASSED] test_empty
[10:41:17] [PASSED] test_default
[10:41:17] ======================== test_size  ========================
[10:41:17] [PASSED] 4
[10:41:17] [PASSED] 8
[10:41:17] [PASSED] 32
[10:41:17] [PASSED] 256
[10:41:17] ==================== [PASSED] test_size ====================
[10:41:17] ======================= test_reuse  ========================
[10:41:17] [PASSED] 4
[10:41:17] [PASSED] 8
[10:41:17] [PASSED] 32
[10:41:17] [PASSED] 256
[10:41:17] =================== [PASSED] test_reuse ====================
[10:41:17] =================== test_range_overlap  ====================
[10:41:17] [PASSED] 4
[10:41:17] [PASSED] 8
[10:41:17] [PASSED] 32
[10:41:17] [PASSED] 256
[10:41:17] =============== [PASSED] test_range_overlap ================
[10:41:17] =================== test_range_compact  ====================
[10:41:17] [PASSED] 4
[10:41:17] [PASSED] 8
[10:41:17] [PASSED] 32
[10:41:17] [PASSED] 256
[10:41:17] =============== [PASSED] test_range_compact ================
[10:41:17] ==================== test_range_spare  =====================
[10:41:17] [PASSED] 4
[10:41:17] [PASSED] 8
[10:41:17] [PASSED] 32
[10:41:17] [PASSED] 256
[10:41:17] ================ [PASSED] test_range_spare =================
[10:41:17] ===================== [PASSED] guc_dbm =====================
[10:41:17] =================== guc_idm (6 subtests) ===================
[10:41:17] [PASSED] bad_init
[10:41:17] [PASSED] no_init
[10:41:17] [PASSED] init_fini
[10:41:17] [PASSED] check_used
[10:41:17] [PASSED] check_quota
[10:41:17] [PASSED] check_all
[10:41:17] ===================== [PASSED] guc_idm =====================
[10:41:17] ================== no_relay (3 subtests) ===================
[10:41:17] [PASSED] xe_drops_guc2pf_if_not_ready
[10:41:17] [PASSED] xe_drops_guc2vf_if_not_ready
[10:41:17] [PASSED] xe_rejects_send_if_not_ready
[10:41:17] ==================== [PASSED] no_relay =====================
[10:41:17] ================== pf_relay (14 subtests) ==================
[10:41:17] [PASSED] pf_rejects_guc2pf_too_short
[10:41:17] [PASSED] pf_rejects_guc2pf_too_long
[10:41:17] [PASSED] pf_rejects_guc2pf_no_payload
[10:41:17] [PASSED] pf_fails_no_payload
[10:41:17] [PASSED] pf_fails_bad_origin
[10:41:17] [PASSED] pf_fails_bad_type
[10:41:17] [PASSED] pf_txn_reports_error
[10:41:17] [PASSED] pf_txn_sends_pf2guc
[10:41:17] [PASSED] pf_sends_pf2guc
[10:41:17] [SKIPPED] pf_loopback_nop
[10:41:17] [SKIPPED] pf_loopback_echo
[10:41:17] [SKIPPED] pf_loopback_fail
[10:41:17] [SKIPPED] pf_loopback_busy
[10:41:17] [SKIPPED] pf_loopback_retry
[10:41:17] ==================== [PASSED] pf_relay =====================
[10:41:17] ================== vf_relay (3 subtests) ===================
[10:41:17] [PASSED] vf_rejects_guc2vf_too_short
[10:41:17] [PASSED] vf_rejects_guc2vf_too_long
[10:41:17] [PASSED] vf_rejects_guc2vf_no_payload
[10:41:17] ==================== [PASSED] vf_relay =====================
[10:41:17] ================ pf_gt_config (6 subtests) =================
[10:41:17] [PASSED] fair_contexts_1vf
[10:41:17] [PASSED] fair_doorbells_1vf
[10:41:17] [PASSED] fair_ggtt_1vf
[10:41:17] ====================== fair_contexts  ======================
[10:41:17] [PASSED] 1 VF
[10:41:17] [PASSED] 2 VFs
[10:41:17] [PASSED] 3 VFs
[10:41:17] [PASSED] 4 VFs
[10:41:17] [PASSED] 5 VFs
[10:41:17] [PASSED] 6 VFs
[10:41:17] [PASSED] 7 VFs
[10:41:17] [PASSED] 8 VFs
[10:41:17] [PASSED] 9 VFs
[10:41:17] [PASSED] 10 VFs
[10:41:17] [PASSED] 11 VFs
[10:41:17] [PASSED] 12 VFs
[10:41:17] [PASSED] 13 VFs
[10:41:17] [PASSED] 14 VFs
[10:41:17] [PASSED] 15 VFs
[10:41:17] [PASSED] 16 VFs
[10:41:17] [PASSED] 17 VFs
[10:41:17] [PASSED] 18 VFs
[10:41:17] [PASSED] 19 VFs
[10:41:17] [PASSED] 20 VFs
[10:41:17] [PASSED] 21 VFs
[10:41:17] [PASSED] 22 VFs
[10:41:17] [PASSED] 23 VFs
[10:41:17] [PASSED] 24 VFs
[10:41:17] [PASSED] 25 VFs
[10:41:17] [PASSED] 26 VFs
[10:41:17] [PASSED] 27 VFs
[10:41:17] [PASSED] 28 VFs
[10:41:17] [PASSED] 29 VFs
[10:41:17] [PASSED] 30 VFs
[10:41:17] [PASSED] 31 VFs
[10:41:17] [PASSED] 32 VFs
[10:41:17] [PASSED] 33 VFs
[10:41:17] [PASSED] 34 VFs
[10:41:17] [PASSED] 35 VFs
[10:41:17] [PASSED] 36 VFs
[10:41:17] [PASSED] 37 VFs
[10:41:17] [PASSED] 38 VFs
[10:41:17] [PASSED] 39 VFs
[10:41:17] [PASSED] 40 VFs
[10:41:17] [PASSED] 41 VFs
[10:41:17] [PASSED] 42 VFs
[10:41:17] [PASSED] 43 VFs
[10:41:17] [PASSED] 44 VFs
[10:41:17] [PASSED] 45 VFs
[10:41:17] [PASSED] 46 VFs
[10:41:17] [PASSED] 47 VFs
[10:41:17] [PASSED] 48 VFs
[10:41:17] [PASSED] 49 VFs
[10:41:17] [PASSED] 50 VFs
[10:41:17] [PASSED] 51 VFs
[10:41:17] [PASSED] 52 VFs
[10:41:17] [PASSED] 53 VFs
[10:41:17] [PASSED] 54 VFs
[10:41:17] [PASSED] 55 VFs
[10:41:17] [PASSED] 56 VFs
[10:41:17] [PASSED] 57 VFs
[10:41:17] [PASSED] 58 VFs
[10:41:17] [PASSED] 59 VFs
[10:41:17] [PASSED] 60 VFs
[10:41:17] [PASSED] 61 VFs
[10:41:17] [PASSED] 62 VFs
[10:41:17] [PASSED] 63 VFs
[10:41:17] ================== [PASSED] fair_contexts ==================
[10:41:17] ===================== fair_doorbells  ======================
[10:41:17] [PASSED] 1 VF
[10:41:17] [PASSED] 2 VFs
[10:41:17] [PASSED] 3 VFs
[10:41:17] [PASSED] 4 VFs
[10:41:17] [PASSED] 5 VFs
[10:41:17] [PASSED] 6 VFs
[10:41:17] [PASSED] 7 VFs
[10:41:17] [PASSED] 8 VFs
[10:41:17] [PASSED] 9 VFs
[10:41:17] [PASSED] 10 VFs
[10:41:17] [PASSED] 11 VFs
[10:41:17] [PASSED] 12 VFs
[10:41:17] [PASSED] 13 VFs
[10:41:17] [PASSED] 14 VFs
[10:41:17] [PASSED] 15 VFs
[10:41:17] [PASSED] 16 VFs
[10:41:17] [PASSED] 17 VFs
[10:41:17] [PASSED] 18 VFs
[10:41:17] [PASSED] 19 VFs
[10:41:17] [PASSED] 20 VFs
[10:41:17] [PASSED] 21 VFs
[10:41:17] [PASSED] 22 VFs
[10:41:17] [PASSED] 23 VFs
[10:41:17] [PASSED] 24 VFs
[10:41:17] [PASSED] 25 VFs
[10:41:17] [PASSED] 26 VFs
[10:41:17] [PASSED] 27 VFs
[10:41:17] [PASSED] 28 VFs
[10:41:17] [PASSED] 29 VFs
[10:41:17] [PASSED] 30 VFs
[10:41:17] [PASSED] 31 VFs
[10:41:17] [PASSED] 32 VFs
[10:41:17] [PASSED] 33 VFs
[10:41:17] [PASSED] 34 VFs
[10:41:17] [PASSED] 35 VFs
[10:41:17] [PASSED] 36 VFs
[10:41:17] [PASSED] 37 VFs
[10:41:17] [PASSED] 38 VFs
[10:41:17] [PASSED] 39 VFs
[10:41:17] [PASSED] 40 VFs
[10:41:17] [PASSED] 41 VFs
[10:41:17] [PASSED] 42 VFs
[10:41:17] [PASSED] 43 VFs
[10:41:17] [PASSED] 44 VFs
[10:41:17] [PASSED] 45 VFs
[10:41:17] [PASSED] 46 VFs
[10:41:18] [PASSED] 47 VFs
[10:41:18] [PASSED] 48 VFs
[10:41:18] [PASSED] 49 VFs
[10:41:18] [PASSED] 50 VFs
[10:41:18] [PASSED] 51 VFs
[10:41:18] [PASSED] 52 VFs
[10:41:18] [PASSED] 53 VFs
[10:41:18] [PASSED] 54 VFs
[10:41:18] [PASSED] 55 VFs
[10:41:18] [PASSED] 56 VFs
[10:41:18] [PASSED] 57 VFs
[10:41:18] [PASSED] 58 VFs
[10:41:18] [PASSED] 59 VFs
[10:41:18] [PASSED] 60 VFs
[10:41:18] [PASSED] 61 VFs
[10:41:18] [PASSED] 62 VFs
[10:41:18] [PASSED] 63 VFs
[10:41:18] ================= [PASSED] fair_doorbells ==================
[10:41:18] ======================== fair_ggtt  ========================
[10:41:18] [PASSED] 1 VF
[10:41:18] [PASSED] 2 VFs
[10:41:18] [PASSED] 3 VFs
[10:41:18] [PASSED] 4 VFs
[10:41:18] [PASSED] 5 VFs
[10:41:18] [PASSED] 6 VFs
[10:41:18] [PASSED] 7 VFs
[10:41:18] [PASSED] 8 VFs
[10:41:18] [PASSED] 9 VFs
[10:41:18] [PASSED] 10 VFs
[10:41:18] [PASSED] 11 VFs
[10:41:18] [PASSED] 12 VFs
[10:41:18] [PASSED] 13 VFs
[10:41:18] [PASSED] 14 VFs
[10:41:18] [PASSED] 15 VFs
[10:41:18] [PASSED] 16 VFs
[10:41:18] [PASSED] 17 VFs
[10:41:18] [PASSED] 18 VFs
[10:41:18] [PASSED] 19 VFs
[10:41:18] [PASSED] 20 VFs
[10:41:18] [PASSED] 21 VFs
[10:41:18] [PASSED] 22 VFs
[10:41:18] [PASSED] 23 VFs
[10:41:18] [PASSED] 24 VFs
[10:41:18] [PASSED] 25 VFs
[10:41:18] [PASSED] 26 VFs
[10:41:18] [PASSED] 27 VFs
[10:41:18] [PASSED] 28 VFs
[10:41:18] [PASSED] 29 VFs
[10:41:18] [PASSED] 30 VFs
[10:41:18] [PASSED] 31 VFs
[10:41:18] [PASSED] 32 VFs
[10:41:18] [PASSED] 33 VFs
[10:41:18] [PASSED] 34 VFs
[10:41:18] [PASSED] 35 VFs
[10:41:18] [PASSED] 36 VFs
[10:41:18] [PASSED] 37 VFs
[10:41:18] [PASSED] 38 VFs
[10:41:18] [PASSED] 39 VFs
[10:41:18] [PASSED] 40 VFs
[10:41:18] [PASSED] 41 VFs
[10:41:18] [PASSED] 42 VFs
[10:41:18] [PASSED] 43 VFs
[10:41:18] [PASSED] 44 VFs
[10:41:18] [PASSED] 45 VFs
[10:41:18] [PASSED] 46 VFs
[10:41:18] [PASSED] 47 VFs
[10:41:18] [PASSED] 48 VFs
[10:41:18] [PASSED] 49 VFs
[10:41:18] [PASSED] 50 VFs
[10:41:18] [PASSED] 51 VFs
[10:41:18] [PASSED] 52 VFs
[10:41:18] [PASSED] 53 VFs
[10:41:18] [PASSED] 54 VFs
[10:41:18] [PASSED] 55 VFs
[10:41:18] [PASSED] 56 VFs
[10:41:18] [PASSED] 57 VFs
[10:41:18] [PASSED] 58 VFs
[10:41:18] [PASSED] 59 VFs
[10:41:18] [PASSED] 60 VFs
[10:41:18] [PASSED] 61 VFs
[10:41:18] [PASSED] 62 VFs
[10:41:18] [PASSED] 63 VFs
[10:41:18] ==================== [PASSED] fair_ggtt ====================
[10:41:18] ================== [PASSED] pf_gt_config ===================
[10:41:18] ===================== lmtt (1 subtest) =====================
[10:41:18] ======================== test_ops  =========================
[10:41:18] [PASSED] 2-level
[10:41:18] [PASSED] multi-level
[10:41:18] ==================== [PASSED] test_ops =====================
[10:41:18] ====================== [PASSED] lmtt =======================
[10:41:18] ================= pf_service (11 subtests) =================
[10:41:18] [PASSED] pf_negotiate_any
[10:41:18] [PASSED] pf_negotiate_base_match
[10:41:18] [PASSED] pf_negotiate_base_newer
[10:41:18] [PASSED] pf_negotiate_base_next
[10:41:18] [SKIPPED] pf_negotiate_base_older
[10:41:18] [PASSED] pf_negotiate_base_prev
[10:41:18] [PASSED] pf_negotiate_latest_match
[10:41:18] [PASSED] pf_negotiate_latest_newer
[10:41:18] [PASSED] pf_negotiate_latest_next
[10:41:18] [SKIPPED] pf_negotiate_latest_older
[10:41:18] [SKIPPED] pf_negotiate_latest_prev
[10:41:18] =================== [PASSED] pf_service ====================
[10:41:18] ================= xe_guc_g2g (2 subtests) ==================
[10:41:18] ============== xe_live_guc_g2g_kunit_default  ==============
[10:41:18] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[10:41:18] ============== xe_live_guc_g2g_kunit_allmem  ===============
[10:41:18] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[10:41:18] =================== [SKIPPED] xe_guc_g2g ===================
[10:41:18] =================== xe_mocs (2 subtests) ===================
[10:41:18] ================ xe_live_mocs_kernel_kunit  ================
[10:41:18] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[10:41:18] ================ xe_live_mocs_reset_kunit  =================
[10:41:18] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[10:41:18] ==================== [SKIPPED] xe_mocs =====================
[10:41:18] ================= xe_migrate (2 subtests) ==================
[10:41:18] ================= xe_migrate_sanity_kunit  =================
[10:41:18] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[10:41:18] ================== xe_validate_ccs_kunit  ==================
[10:41:18] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[10:41:18] =================== [SKIPPED] xe_migrate ===================
[10:41:18] ================== xe_dma_buf (1 subtest) ==================
[10:41:18] ==================== xe_dma_buf_kunit  =====================
[10:41:18] ================ [SKIPPED] xe_dma_buf_kunit ================
[10:41:18] =================== [SKIPPED] xe_dma_buf ===================
[10:41:18] ================= xe_bo_shrink (1 subtest) =================
[10:41:18] =================== xe_bo_shrink_kunit  ====================
[10:41:18] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[10:41:18] ================== [SKIPPED] xe_bo_shrink ==================
[10:41:18] ==================== xe_bo (2 subtests) ====================
[10:41:18] ================== xe_ccs_migrate_kunit  ===================
[10:41:18] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[10:41:18] ==================== xe_bo_evict_kunit  ====================
[10:41:18] =============== [SKIPPED] xe_bo_evict_kunit ================
[10:41:18] ===================== [SKIPPED] xe_bo ======================
[10:41:18] ==================== args (13 subtests) ====================
[10:41:18] [PASSED] count_args_test
[10:41:18] [PASSED] call_args_example
[10:41:18] [PASSED] call_args_test
[10:41:18] [PASSED] drop_first_arg_example
[10:41:18] [PASSED] drop_first_arg_test
[10:41:18] [PASSED] first_arg_example
[10:41:18] [PASSED] first_arg_test
[10:41:18] [PASSED] last_arg_example
[10:41:18] [PASSED] last_arg_test
[10:41:18] [PASSED] pick_arg_example
[10:41:18] [PASSED] if_args_example
[10:41:18] [PASSED] if_args_test
[10:41:18] [PASSED] sep_comma_example
[10:41:18] ====================== [PASSED] args =======================
[10:41:18] =================== xe_pci (3 subtests) ====================
[10:41:18] ==================== check_graphics_ip  ====================
[10:41:18] [PASSED] 12.00 Xe_LP
[10:41:18] [PASSED] 12.10 Xe_LP+
[10:41:18] [PASSED] 12.55 Xe_HPG
[10:41:18] [PASSED] 12.60 Xe_HPC
[10:41:18] [PASSED] 12.70 Xe_LPG
[10:41:18] [PASSED] 12.71 Xe_LPG
[10:41:18] [PASSED] 12.74 Xe_LPG+
[10:41:18] [PASSED] 20.01 Xe2_HPG
[10:41:18] [PASSED] 20.02 Xe2_HPG
[10:41:18] [PASSED] 20.04 Xe2_LPG
[10:41:18] [PASSED] 30.00 Xe3_LPG
[10:41:18] [PASSED] 30.01 Xe3_LPG
[10:41:18] [PASSED] 30.03 Xe3_LPG
[10:41:18] [PASSED] 30.04 Xe3_LPG
[10:41:18] [PASSED] 30.05 Xe3_LPG
[10:41:18] [PASSED] 35.11 Xe3p_XPC
[10:41:18] ================ [PASSED] check_graphics_ip ================
[10:41:18] ===================== check_media_ip  ======================
[10:41:18] [PASSED] 12.00 Xe_M
[10:41:18] [PASSED] 12.55 Xe_HPM
[10:41:18] [PASSED] 13.00 Xe_LPM+
[10:41:18] [PASSED] 13.01 Xe2_HPM
[10:41:18] [PASSED] 20.00 Xe2_LPM
[10:41:18] [PASSED] 30.00 Xe3_LPM
[10:41:18] [PASSED] 30.02 Xe3_LPM
[10:41:18] [PASSED] 35.00 Xe3p_LPM
[10:41:18] [PASSED] 35.03 Xe3p_HPM
[10:41:18] ================= [PASSED] check_media_ip ==================
[10:41:18] =================== check_platform_desc  ===================
[10:41:18] [PASSED] 0x9A60 (TIGERLAKE)
[10:41:18] [PASSED] 0x9A68 (TIGERLAKE)
[10:41:18] [PASSED] 0x9A70 (TIGERLAKE)
[10:41:18] [PASSED] 0x9A40 (TIGERLAKE)
[10:41:18] [PASSED] 0x9A49 (TIGERLAKE)
[10:41:18] [PASSED] 0x9A59 (TIGERLAKE)
[10:41:18] [PASSED] 0x9A78 (TIGERLAKE)
[10:41:18] [PASSED] 0x9AC0 (TIGERLAKE)
[10:41:18] [PASSED] 0x9AC9 (TIGERLAKE)
[10:41:18] [PASSED] 0x9AD9 (TIGERLAKE)
[10:41:18] [PASSED] 0x9AF8 (TIGERLAKE)
[10:41:18] [PASSED] 0x4C80 (ROCKETLAKE)
[10:41:18] [PASSED] 0x4C8A (ROCKETLAKE)
[10:41:18] [PASSED] 0x4C8B (ROCKETLAKE)
[10:41:18] [PASSED] 0x4C8C (ROCKETLAKE)
[10:41:18] [PASSED] 0x4C90 (ROCKETLAKE)
[10:41:18] [PASSED] 0x4C9A (ROCKETLAKE)
[10:41:18] [PASSED] 0x4680 (ALDERLAKE_S)
[10:41:18] [PASSED] 0x4682 (ALDERLAKE_S)
[10:41:18] [PASSED] 0x4688 (ALDERLAKE_S)
[10:41:18] [PASSED] 0x468A (ALDERLAKE_S)
[10:41:18] [PASSED] 0x468B (ALDERLAKE_S)
[10:41:18] [PASSED] 0x4690 (ALDERLAKE_S)
[10:41:18] [PASSED] 0x4692 (ALDERLAKE_S)
[10:41:18] [PASSED] 0x4693 (ALDERLAKE_S)
[10:41:18] [PASSED] 0x46A0 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46A1 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46A2 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46A3 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46A6 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46A8 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46AA (ALDERLAKE_P)
[10:41:18] [PASSED] 0x462A (ALDERLAKE_P)
[10:41:18] [PASSED] 0x4626 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x4628 (ALDERLAKE_P)
stty: 'standard input': Inappropriate ioctl for device
[10:41:18] [PASSED] 0x46B0 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46B1 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46B2 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46B3 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46C0 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46C1 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46C2 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46C3 (ALDERLAKE_P)
[10:41:18] [PASSED] 0x46D0 (ALDERLAKE_N)
[10:41:18] [PASSED] 0x46D1 (ALDERLAKE_N)
[10:41:18] [PASSED] 0x46D2 (ALDERLAKE_N)
[10:41:18] [PASSED] 0x46D3 (ALDERLAKE_N)
[10:41:18] [PASSED] 0x46D4 (ALDERLAKE_N)
[10:41:18] [PASSED] 0xA721 (ALDERLAKE_P)
[10:41:18] [PASSED] 0xA7A1 (ALDERLAKE_P)
[10:41:18] [PASSED] 0xA7A9 (ALDERLAKE_P)
[10:41:18] [PASSED] 0xA7AC (ALDERLAKE_P)
[10:41:18] [PASSED] 0xA7AD (ALDERLAKE_P)
[10:41:18] [PASSED] 0xA720 (ALDERLAKE_P)
[10:41:18] [PASSED] 0xA7A0 (ALDERLAKE_P)
[10:41:18] [PASSED] 0xA7A8 (ALDERLAKE_P)
[10:41:18] [PASSED] 0xA7AA (ALDERLAKE_P)
[10:41:18] [PASSED] 0xA7AB (ALDERLAKE_P)
[10:41:18] [PASSED] 0xA780 (ALDERLAKE_S)
[10:41:18] [PASSED] 0xA781 (ALDERLAKE_S)
[10:41:18] [PASSED] 0xA782 (ALDERLAKE_S)
[10:41:18] [PASSED] 0xA783 (ALDERLAKE_S)
[10:41:18] [PASSED] 0xA788 (ALDERLAKE_S)
[10:41:18] [PASSED] 0xA789 (ALDERLAKE_S)
[10:41:18] [PASSED] 0xA78A (ALDERLAKE_S)
[10:41:18] [PASSED] 0xA78B (ALDERLAKE_S)
[10:41:18] [PASSED] 0x4905 (DG1)
[10:41:18] [PASSED] 0x4906 (DG1)
[10:41:18] [PASSED] 0x4907 (DG1)
[10:41:18] [PASSED] 0x4908 (DG1)
[10:41:18] [PASSED] 0x4909 (DG1)
[10:41:18] [PASSED] 0x56C0 (DG2)
[10:41:18] [PASSED] 0x56C2 (DG2)
[10:41:18] [PASSED] 0x56C1 (DG2)
[10:41:18] [PASSED] 0x7D51 (METEORLAKE)
[10:41:18] [PASSED] 0x7DD1 (METEORLAKE)
[10:41:18] [PASSED] 0x7D41 (METEORLAKE)
[10:41:18] [PASSED] 0x7D67 (METEORLAKE)
[10:41:18] [PASSED] 0xB640 (METEORLAKE)
[10:41:18] [PASSED] 0x56A0 (DG2)
[10:41:18] [PASSED] 0x56A1 (DG2)
[10:41:18] [PASSED] 0x56A2 (DG2)
[10:41:18] [PASSED] 0x56BE (DG2)
[10:41:18] [PASSED] 0x56BF (DG2)
[10:41:18] [PASSED] 0x5690 (DG2)
[10:41:18] [PASSED] 0x5691 (DG2)
[10:41:18] [PASSED] 0x5692 (DG2)
[10:41:18] [PASSED] 0x56A5 (DG2)
[10:41:18] [PASSED] 0x56A6 (DG2)
[10:41:18] [PASSED] 0x56B0 (DG2)
[10:41:18] [PASSED] 0x56B1 (DG2)
[10:41:18] [PASSED] 0x56BA (DG2)
[10:41:18] [PASSED] 0x56BB (DG2)
[10:41:18] [PASSED] 0x56BC (DG2)
[10:41:18] [PASSED] 0x56BD (DG2)
[10:41:18] [PASSED] 0x5693 (DG2)
[10:41:18] [PASSED] 0x5694 (DG2)
[10:41:18] [PASSED] 0x5695 (DG2)
[10:41:18] [PASSED] 0x56A3 (DG2)
[10:41:18] [PASSED] 0x56A4 (DG2)
[10:41:18] [PASSED] 0x56B2 (DG2)
[10:41:18] [PASSED] 0x56B3 (DG2)
[10:41:18] [PASSED] 0x5696 (DG2)
[10:41:18] [PASSED] 0x5697 (DG2)
[10:41:18] [PASSED] 0xB69 (PVC)
[10:41:18] [PASSED] 0xB6E (PVC)
[10:41:18] [PASSED] 0xBD4 (PVC)
[10:41:18] [PASSED] 0xBD5 (PVC)
[10:41:18] [PASSED] 0xBD6 (PVC)
[10:41:18] [PASSED] 0xBD7 (PVC)
[10:41:18] [PASSED] 0xBD8 (PVC)
[10:41:18] [PASSED] 0xBD9 (PVC)
[10:41:18] [PASSED] 0xBDA (PVC)
[10:41:18] [PASSED] 0xBDB (PVC)
[10:41:18] [PASSED] 0xBE0 (PVC)
[10:41:18] [PASSED] 0xBE1 (PVC)
[10:41:18] [PASSED] 0xBE5 (PVC)
[10:41:18] [PASSED] 0x7D40 (METEORLAKE)
[10:41:18] [PASSED] 0x7D45 (METEORLAKE)
[10:41:18] [PASSED] 0x7D55 (METEORLAKE)
[10:41:18] [PASSED] 0x7D60 (METEORLAKE)
[10:41:18] [PASSED] 0x7DD5 (METEORLAKE)
[10:41:18] [PASSED] 0x6420 (LUNARLAKE)
[10:41:18] [PASSED] 0x64A0 (LUNARLAKE)
[10:41:18] [PASSED] 0x64B0 (LUNARLAKE)
[10:41:18] [PASSED] 0xE202 (BATTLEMAGE)
[10:41:18] [PASSED] 0xE209 (BATTLEMAGE)
[10:41:18] [PASSED] 0xE20B (BATTLEMAGE)
[10:41:18] [PASSED] 0xE20C (BATTLEMAGE)
[10:41:18] [PASSED] 0xE20D (BATTLEMAGE)
[10:41:18] [PASSED] 0xE210 (BATTLEMAGE)
[10:41:18] [PASSED] 0xE211 (BATTLEMAGE)
[10:41:18] [PASSED] 0xE212 (BATTLEMAGE)
[10:41:18] [PASSED] 0xE216 (BATTLEMAGE)
[10:41:18] [PASSED] 0xE220 (BATTLEMAGE)
[10:41:18] [PASSED] 0xE221 (BATTLEMAGE)
[10:41:18] [PASSED] 0xE222 (BATTLEMAGE)
[10:41:18] [PASSED] 0xE223 (BATTLEMAGE)
[10:41:18] [PASSED] 0xB080 (PANTHERLAKE)
[10:41:18] [PASSED] 0xB081 (PANTHERLAKE)
[10:41:18] [PASSED] 0xB082 (PANTHERLAKE)
[10:41:18] [PASSED] 0xB083 (PANTHERLAKE)
[10:41:18] [PASSED] 0xB084 (PANTHERLAKE)
[10:41:18] [PASSED] 0xB085 (PANTHERLAKE)
[10:41:18] [PASSED] 0xB086 (PANTHERLAKE)
[10:41:18] [PASSED] 0xB087 (PANTHERLAKE)
[10:41:18] [PASSED] 0xB08F (PANTHERLAKE)
[10:41:18] [PASSED] 0xB090 (PANTHERLAKE)
[10:41:18] [PASSED] 0xB0A0 (PANTHERLAKE)
[10:41:18] [PASSED] 0xB0B0 (PANTHERLAKE)
[10:41:18] [PASSED] 0xFD80 (PANTHERLAKE)
[10:41:18] [PASSED] 0xFD81 (PANTHERLAKE)
[10:41:18] [PASSED] 0xD740 (NOVALAKE_S)
[10:41:18] [PASSED] 0xD741 (NOVALAKE_S)
[10:41:18] [PASSED] 0xD742 (NOVALAKE_S)
[10:41:18] [PASSED] 0xD743 (NOVALAKE_S)
[10:41:18] [PASSED] 0xD744 (NOVALAKE_S)
[10:41:18] [PASSED] 0xD745 (NOVALAKE_S)
[10:41:18] [PASSED] 0x674C (CRESCENTISLAND)
[10:41:18] =============== [PASSED] check_platform_desc ===============
[10:41:18] ===================== [PASSED] xe_pci ======================
[10:41:18] =================== xe_rtp (2 subtests) ====================
[10:41:18] =============== xe_rtp_process_to_sr_tests  ================
[10:41:18] [PASSED] coalesce-same-reg
[10:41:18] [PASSED] no-match-no-add
[10:41:18] [PASSED] match-or
[10:41:18] [PASSED] match-or-xfail
[10:41:18] [PASSED] no-match-no-add-multiple-rules
[10:41:18] [PASSED] two-regs-two-entries
[10:41:18] [PASSED] clr-one-set-other
[10:41:18] [PASSED] set-field
[10:41:18] [PASSED] conflict-duplicate
[10:41:18] [PASSED] conflict-not-disjoint
[10:41:18] [PASSED] conflict-reg-type
[10:41:18] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[10:41:18] ================== xe_rtp_process_tests  ===================
[10:41:18] [PASSED] active1
[10:41:18] [PASSED] active2
[10:41:18] [PASSED] active-inactive
[10:41:18] [PASSED] inactive-active
[10:41:18] [PASSED] inactive-1st_or_active-inactive
[10:41:18] [PASSED] inactive-2nd_or_active-inactive
[10:41:18] [PASSED] inactive-last_or_active-inactive
[10:41:18] [PASSED] inactive-no_or_active-inactive
[10:41:18] ============== [PASSED] xe_rtp_process_tests ===============
[10:41:18] ===================== [PASSED] xe_rtp ======================
[10:41:18] ==================== xe_wa (1 subtest) =====================
[10:41:18] ======================== xe_wa_gt  =========================
[10:41:18] [PASSED] TIGERLAKE B0
[10:41:18] [PASSED] DG1 A0
[10:41:18] [PASSED] DG1 B0
[10:41:18] [PASSED] ALDERLAKE_S A0
[10:41:18] [PASSED] ALDERLAKE_S B0
[10:41:18] [PASSED] ALDERLAKE_S C0
[10:41:18] [PASSED] ALDERLAKE_S D0
[10:41:18] [PASSED] ALDERLAKE_P A0
[10:41:18] [PASSED] ALDERLAKE_P B0
[10:41:18] [PASSED] ALDERLAKE_P C0
[10:41:18] [PASSED] ALDERLAKE_S RPLS D0
[10:41:18] [PASSED] ALDERLAKE_P RPLU E0
[10:41:18] [PASSED] DG2 G10 C0
[10:41:18] [PASSED] DG2 G11 B1
[10:41:18] [PASSED] DG2 G12 A1
[10:41:18] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[10:41:18] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[10:41:18] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[10:41:18] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[10:41:18] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[10:41:18] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[10:41:18] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[10:41:18] ==================== [PASSED] xe_wa_gt =====================
[10:41:18] ====================== [PASSED] xe_wa ======================
[10:41:18] ============================================================
[10:41:18] Testing complete. Ran 512 tests: passed: 494, skipped: 18
[10:41:18] Elapsed time: 36.051s total, 4.175s configuring, 31.359s building, 0.468s running

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

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

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



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

* ✓ Xe.CI.BAT: success for drm/xe: Privatize struct xe_ggtt_node. (rev2)
  2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
                   ` (8 preceding siblings ...)
  2026-01-08 10:41 ` ✓ CI.KUnit: success " Patchwork
@ 2026-01-08 11:40 ` Patchwork
  2026-01-08 14:19 ` ✓ Xe.CI.Full: " Patchwork
  10 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-01-08 11:40 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-xe

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

== Series Details ==

Series: drm/xe: Privatize struct xe_ggtt_node. (rev2)
URL   : https://patchwork.freedesktop.org/series/156258/
State : success

== Summary ==

CI Bug Log - changes from xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077_BAT -> xe-pw-156258v2_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (11 -> 12)
------------------------------

  Additional (1): bat-bmg-1 

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

  Here are the changes found in xe-pw-156258v2_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-bmg-1:          NOTRUN -> [SKIP][1] ([Intel XE#2233])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/bat-bmg-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-bmg-1:          NOTRUN -> [SKIP][2] ([Intel XE#2244])
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/bat-bmg-1/igt@kms_dsc@dsc-basic.html

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

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

  * igt@xe_pat@pat-index-xehpc:
    - bat-bmg-1:          NOTRUN -> [SKIP][5] ([Intel XE#1420])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/bat-bmg-1/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xelp:
    - bat-bmg-1:          NOTRUN -> [SKIP][6] ([Intel XE#2245])
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/bat-bmg-1/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pat@pat-index-xelpg:
    - bat-bmg-1:          NOTRUN -> [SKIP][7] ([Intel XE#2236])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/bat-bmg-1/igt@xe_pat@pat-index-xelpg.html

  
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
  [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#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850


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

  * Linux: xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077 -> xe-pw-156258v2

  IGT_8692: 8692
  xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077: 580c8957e96b7372e82590d1b1e6c2842c245077
  xe-pw-156258v2: 156258v2

== Logs ==

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

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

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

* ✓ Xe.CI.Full: success for drm/xe: Privatize struct xe_ggtt_node. (rev2)
  2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
                   ` (9 preceding siblings ...)
  2026-01-08 11:40 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-01-08 14:19 ` Patchwork
  10 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-01-08 14:19 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-xe

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

== Series Details ==

Series: drm/xe: Privatize struct xe_ggtt_node. (rev2)
URL   : https://patchwork.freedesktop.org/series/156258/
State : success

== Summary ==

CI Bug Log - changes from xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077_FULL -> xe-pw-156258v2_FULL
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (2 -> 2)
------------------------------

  No changes in participating hosts

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

  Here are the changes found in xe-pw-156258v2_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_big_fb@linear-32bpp-rotate-90:
    - shard-bmg:          NOTRUN -> [SKIP][1] ([Intel XE#2327]) +3 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_big_fb@linear-32bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-32bpp-rotate-270:
    - shard-bmg:          NOTRUN -> [SKIP][2] ([Intel XE#1124]) +8 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@kms_big_fb@y-tiled-32bpp-rotate-270.html

  * igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][3] ([Intel XE#2314] / [Intel XE#2894]) +1 other test skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p.html

  * igt@kms_bw@linear-tiling-4-displays-3840x2160p:
    - shard-bmg:          NOTRUN -> [SKIP][4] ([Intel XE#367]) +1 other test skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_bw@linear-tiling-4-displays-3840x2160p.html

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

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][6] ([Intel XE#3432]) +1 other test skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html

  * igt@kms_chamelium_color@ctm-blue-to-red:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#2325])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_chamelium_color@ctm-blue-to-red.html

  * igt@kms_chamelium_hpd@common-hpd-after-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][8] ([Intel XE#2252]) +9 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@kms_chamelium_hpd@common-hpd-after-suspend.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-bmg:          NOTRUN -> [SKIP][9] ([Intel XE#2390])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@legacy:
    - shard-bmg:          NOTRUN -> [FAIL][10] ([Intel XE#1178] / [Intel XE#3304]) +1 other test fail
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@lic-type-0-hdcp14@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][11] ([Intel XE#3304]) +1 other test fail
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_content_protection@lic-type-0-hdcp14@pipe-a-dp-2.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-bmg:          NOTRUN -> [SKIP][12] ([Intel XE#2321]) +3 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-128x42:
    - shard-bmg:          NOTRUN -> [SKIP][13] ([Intel XE#2320]) +2 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_cursor_crc@cursor-rapid-movement-128x42.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-bmg:          NOTRUN -> [SKIP][14] ([Intel XE#2286])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_dsc@dsc-with-formats:
    - shard-bmg:          NOTRUN -> [SKIP][15] ([Intel XE#2244]) +1 other test skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_dsc@dsc-with-formats.html

  * igt@kms_fbcon_fbt@fbc:
    - shard-bmg:          NOTRUN -> [SKIP][16] ([Intel XE#4156])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_fbcon_fbt@fbc.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
    - shard-lnl:          [PASS][17] -> [FAIL][18] ([Intel XE#301]) +1 other test fail
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip@flip-vs-expired-vblank@c-edp1:
    - shard-lnl:          [PASS][19] -> [FAIL][20] ([Intel XE#301] / [Intel XE#3149])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html

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

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling:
    - shard-bmg:          NOTRUN -> [SKIP][22] ([Intel XE#2293] / [Intel XE#2380]) +2 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html

  * igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][23] ([Intel XE#2311]) +22 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_frontbuffer_tracking@drrs-rgb565-draw-render.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#4141]) +11 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
    - shard-bmg:          NOTRUN -> [SKIP][25] ([Intel XE#2352])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#2313]) +23 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-pgflip-blt.html

  * igt@kms_joiner@basic-ultra-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#6911])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_joiner@basic-ultra-joiner.html

  * igt@kms_plane_lowres@tiling-yf:
    - shard-bmg:          NOTRUN -> [SKIP][28] ([Intel XE#2393])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_plane_lowres@tiling-yf.html

  * igt@kms_plane_multiple@tiling-yf:
    - shard-bmg:          NOTRUN -> [SKIP][29] ([Intel XE#5020])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5:
    - shard-bmg:          NOTRUN -> [SKIP][30] ([Intel XE#6886]) +14 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-bmg:          NOTRUN -> [SKIP][31] ([Intel XE#870])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_dc@deep-pkgc:
    - shard-bmg:          NOTRUN -> [SKIP][32] ([Intel XE#2505])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_pm_dc@deep-pkgc.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-bmg:          NOTRUN -> [SKIP][33] ([Intel XE#1406] / [Intel XE#1489]) +5 other tests skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-bmg:          NOTRUN -> [SKIP][34] ([Intel XE#1406] / [Intel XE#2387]) +1 other test skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@psr-primary-page-flip:
    - shard-bmg:          NOTRUN -> [SKIP][35] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +8 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@kms_psr@psr-primary-page-flip.html

  * igt@kms_scaling_modes@scaling-mode-center:
    - shard-bmg:          NOTRUN -> [SKIP][36] ([Intel XE#2413])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_scaling_modes@scaling-mode-center.html

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

  * igt@kms_sharpness_filter@filter-scaler-downscale:
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#6503]) +1 other test skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_sharpness_filter@filter-scaler-downscale.html

  * igt@kms_vrr@lobf:
    - shard-bmg:          NOTRUN -> [SKIP][39] ([Intel XE#2168])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@kms_vrr@lobf.html

  * igt@testdisplay:
    - shard-bmg:          NOTRUN -> [ABORT][40] ([Intel XE#6740] / [Intel XE#6976])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@testdisplay.html

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

  * igt@xe_eudebug_online@pagefault-write:
    - shard-bmg:          NOTRUN -> [SKIP][42] ([Intel XE#4837] / [Intel XE#6665]) +4 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@xe_eudebug_online@pagefault-write.html

  * igt@xe_eudebug_sriov@deny-eudebug:
    - shard-bmg:          NOTRUN -> [SKIP][43] ([Intel XE#5793])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@xe_eudebug_sriov@deny-eudebug.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#2322]) +6 other tests skip
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue.html

  * igt@xe_exec_multi_queue@few-execs-preempt-mode-dyn-priority-smem:
    - shard-bmg:          NOTRUN -> [SKIP][45] ([Intel XE#6874]) +19 other tests skip
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@xe_exec_multi_queue@few-execs-preempt-mode-dyn-priority-smem.html

  * igt@xe_exec_system_allocator@many-stride-malloc-prefetch:
    - shard-bmg:          NOTRUN -> [WARN][46] ([Intel XE#5786])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@xe_exec_system_allocator@many-stride-malloc-prefetch.html

  * igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma:
    - shard-lnl:          [PASS][47] -> [FAIL][48] ([Intel XE#5625])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077/shard-lnl-2/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-lnl-5/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html

  * igt@xe_exec_system_allocator@threads-many-mmap-new-huge-nomemset:
    - shard-bmg:          NOTRUN -> [SKIP][49] ([Intel XE#4943]) +13 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@xe_exec_system_allocator@threads-many-mmap-new-huge-nomemset.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-remap-eocheck:
    - shard-bmg:          [PASS][50] -> [ABORT][51] ([Intel XE#3970])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077/shard-bmg-2/igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-remap-eocheck.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-remap-eocheck.html

  * igt@xe_multigpu_svm@mgpu-concurrent-access-prefetch:
    - shard-bmg:          NOTRUN -> [SKIP][52] ([Intel XE#6964]) +2 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@xe_multigpu_svm@mgpu-concurrent-access-prefetch.html

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

  * igt@xe_pat@pat-index-xelp:
    - shard-bmg:          NOTRUN -> [SKIP][54] ([Intel XE#2245])
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pxp@pxp-termination-key-update-post-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][55] ([Intel XE#4733]) +3 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@xe_pxp@pxp-termination-key-update-post-suspend.html

  
#### Possible fixes ####

  * igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1:
    - shard-lnl:          [FAIL][56] ([Intel XE#6054]) -> [PASS][57] +3 other tests pass
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077/shard-lnl-2/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-lnl-3/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html

  * igt@kms_flip@flip-vs-expired-vblank@b-edp1:
    - shard-lnl:          [FAIL][58] ([Intel XE#301]) -> [PASS][59]
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html

  * igt@kms_hdr@static-toggle-dpms@pipe-a-dp-2:
    - shard-bmg:          [ABORT][60] ([Intel XE#6740]) -> [PASS][61] +1 other test pass
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077/shard-bmg-9/igt@kms_hdr@static-toggle-dpms@pipe-a-dp-2.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-1/igt@kms_hdr@static-toggle-dpms@pipe-a-dp-2.html

  
#### Warnings ####

  * igt@kms_flip@flip-vs-expired-vblank:
    - shard-lnl:          [FAIL][62] ([Intel XE#301]) -> [FAIL][63] ([Intel XE#301] / [Intel XE#3149])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank.html
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-lnl-3/igt@kms_flip@flip-vs-expired-vblank.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-bmg:          [FAIL][64] ([Intel XE#1729]) -> [SKIP][65] ([Intel XE#2426])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-bmg:          [SKIP][66] ([Intel XE#2426]) -> [SKIP][67] ([Intel XE#2509])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077/shard-bmg-9/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-156258v2/shard-bmg-10/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
  [Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
  [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#2245]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2245
  [Intel XE#2248]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2248
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
  [Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2352
  [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
  [Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
  [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
  [Intel XE#2393]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2393
  [Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2505]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2505
  [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
  [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#3970]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3970
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4156]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4156
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
  [Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
  [Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
  [Intel XE#5786]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5786
  [Intel XE#5793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5793
  [Intel XE#6054]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6054
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665
  [Intel XE#6740]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6740
  [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
  [Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
  [Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#6976]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6976
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870


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

  * Linux: xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077 -> xe-pw-156258v2

  IGT_8692: 8692
  xe-4345-580c8957e96b7372e82590d1b1e6c2842c245077: 580c8957e96b7372e82590d1b1e6c2842c245077
  xe-pw-156258v2: 156258v2

== Logs ==

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

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

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

* Re: [PATCH v2 3/7] drm/xe: Add xe_ggtt_node_addr() to avoid dereferencing xe_ggtt_node
  2026-01-08 10:10 ` [PATCH v2 3/7] drm/xe: Add xe_ggtt_node_addr() to avoid dereferencing xe_ggtt_node Maarten Lankhorst
@ 2026-01-08 16:15   ` Matthew Brost
  0 siblings, 0 replies; 15+ messages in thread
From: Matthew Brost @ 2026-01-08 16:15 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-xe

On Thu, Jan 08, 2026 at 11:10:18AM +0100, Maarten Lankhorst wrote:
> This function makes it possible to add an offset that is applied to
> all xe_ggtt_node's, and hides the internals from all its users.
> 
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>

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

> ---
>  drivers/gpu/drm/xe/xe_bo.h   |  8 +++++---
>  drivers/gpu/drm/xe/xe_ggtt.c | 11 +++++++++++
>  drivers/gpu/drm/xe/xe_ggtt.h |  2 ++
>  3 files changed, 18 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_bo.h b/drivers/gpu/drm/xe/xe_bo.h
> index 8ab4474129c3d..c914ab719f20e 100644
> --- a/drivers/gpu/drm/xe/xe_bo.h
> +++ b/drivers/gpu/drm/xe/xe_bo.h
> @@ -9,6 +9,7 @@
>  #include <drm/ttm/ttm_tt.h>
>  
>  #include "xe_bo_types.h"
> +#include "xe_ggtt.h"
>  #include "xe_macros.h"
>  #include "xe_validation.h"
>  #include "xe_vm_types.h"
> @@ -252,13 +253,14 @@ static inline u32
>  __xe_bo_ggtt_addr(struct xe_bo *bo, u8 tile_id)
>  {
>  	struct xe_ggtt_node *ggtt_node = bo->ggtt_node[tile_id];
> +	u64 offset;
>  
>  	if (XE_WARN_ON(!ggtt_node))
>  		return 0;
>  
> -	XE_WARN_ON(ggtt_node->base.size > xe_bo_size(bo));
> -	XE_WARN_ON(ggtt_node->base.start + ggtt_node->base.size > (1ull << 32));
> -	return ggtt_node->base.start;
> +	offset = xe_ggtt_node_addr(ggtt_node);
> +	XE_WARN_ON(offset + xe_bo_size(bo) > (1ull << 32));
> +	return offset;
>  }
>  
>  static inline u32
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index 6bb6dcb0419ad..7f45bcd0c56b0 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -1185,3 +1185,14 @@ u64 xe_ggtt_read_pte(struct xe_ggtt *ggtt, u64 offset)
>  {
>  	return ioread64(ggtt->gsm + (offset / XE_PAGE_SIZE));
>  }
> +
> +/**
> + * xe_ggtt_node_addr - Get @node offset in GGTT.
> + * @node: &xe_ggtt_node
> + *
> + * Get the GGTT offset for allocated node.
> + */
> +u64 xe_ggtt_node_addr(const struct xe_ggtt_node *node)
> +{
> +	return node->base.start;
> +}
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
> index 9adfc58edf581..76336a6296c45 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.h
> +++ b/drivers/gpu/drm/xe/xe_ggtt.h
> @@ -61,4 +61,6 @@ void xe_ggtt_might_lock(struct xe_ggtt *ggtt);
>  u64 xe_ggtt_encode_pte_flags(struct xe_ggtt *ggtt, struct xe_bo *bo, u16 pat_index);
>  u64 xe_ggtt_read_pte(struct xe_ggtt *ggtt, u64 offset);
>  
> +u64 xe_ggtt_node_addr(const struct xe_ggtt_node *node);
> +
>  #endif
> -- 
> 2.51.0
> 

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

* Re: [PATCH v2 5/7] drm/xe: Do not dereference ggtt_node in xe_bo.c
  2026-01-08 10:10 ` [PATCH v2 5/7] drm/xe: Do not dereference ggtt_node in xe_bo.c Maarten Lankhorst
@ 2026-01-08 16:16   ` Matthew Brost
  0 siblings, 0 replies; 15+ messages in thread
From: Matthew Brost @ 2026-01-08 16:16 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-xe

On Thu, Jan 08, 2026 at 11:10:20AM +0100, Maarten Lankhorst wrote:
> A careful inspection of __xe_ggtt_insert_bo_at() shows that
> the ggtt_node can always be seen as inserted from xe_bo.c
> due to the way error handling is performed.
> 
> The checks are also a little bit too paranoid, since we
> never create a bo with ggtt_node[id] initialised but not
> inserted into the GGTT, which can be seen by looking at
> __xe_ggtt_insert_bo_at()
> 
> Additionally, the size of the GGTT is never bigger than 4 GB,
> so adding a check at that level is incorrect.
> 
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>

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

> ---
>  drivers/gpu/drm/xe/xe_bo.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
> index 8b6474cd3eaf2..21e7a738cfed8 100644
> --- a/drivers/gpu/drm/xe/xe_bo.c
> +++ b/drivers/gpu/drm/xe/xe_bo.c
> @@ -1709,7 +1709,7 @@ static void xe_ttm_bo_destroy(struct ttm_buffer_object *ttm_bo)
>  	xe_assert(xe, list_empty(&ttm_bo->base.gpuva.list));
>  
>  	for_each_tile(tile, xe, id)
> -		if (bo->ggtt_node[id] && bo->ggtt_node[id]->base.size)
> +		if (bo->ggtt_node[id])
>  			xe_ggtt_remove_bo(tile->mem.ggtt, bo);
>  
>  #ifdef CONFIG_PROC_FS
> @@ -3603,8 +3603,8 @@ void xe_bo_put(struct xe_bo *bo)
>  			might_lock(&bo->client->bos_lock);
>  #endif
>  		for_each_tile(tile, xe_bo_device(bo), id)
> -			if (bo->ggtt_node[id] && bo->ggtt_node[id]->ggtt)
> -				xe_ggtt_might_lock(bo->ggtt_node[id]->ggtt);
> +			if (bo->ggtt_node[id])
> +				xe_ggtt_might_lock(tile->mem.ggtt);
>  		drm_gem_object_put(&bo->ttm.base);
>  	}
>  }
> -- 
> 2.51.0
> 

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

* Re: [PATCH v2 4/7] drm/xe/display: Avoid dereferencing xe_ggtt_node
  2026-01-08 10:10 ` [PATCH v2 4/7] drm/xe/display: Avoid " Maarten Lankhorst
@ 2026-01-12 14:46   ` Rodrigo Vivi
  0 siblings, 0 replies; 15+ messages in thread
From: Rodrigo Vivi @ 2026-01-12 14:46 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-xe, Matthew Brost

On Thu, Jan 08, 2026 at 11:10:19AM +0100, Maarten Lankhorst wrote:
> Start using xe_ggtt_node_addr, and avoid comparing the base offset
> as vma->node is dynamically allocated.
> 
> Also sneak in a xe_bo_size() for stolen, too small to put as separate commit.
> 
> Reviewed-by: Matthew Brost <matthew.brost@intel.com>
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>

Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>

> ---
>  drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h | 4 ++--
>  drivers/gpu/drm/xe/display/xe_fb_pin.c            | 4 ++--
>  drivers/gpu/drm/xe/display/xe_stolen.c            | 2 +-
>  3 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
> index b17e3bab23d58..c4b5adaaa99a3 100644
> --- a/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
> @@ -8,7 +8,7 @@
>  
>  #include <uapi/drm/i915_drm.h>
>  
> -#include "xe_ggtt_types.h"
> +#include "xe_ggtt.h"
>  
>  #include <linux/refcount.h>
>  
> @@ -30,7 +30,7 @@ struct i915_vma {
>  
>  static inline u32 i915_ggtt_offset(const struct i915_vma *vma)
>  {
> -	return vma->node->base.start;
> +	return xe_ggtt_node_addr(vma->node);
>  }
>  
>  #endif
> diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> index a1cd42001f442..d2c4e94180fa3 100644
> --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
> +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> @@ -206,7 +206,7 @@ static void write_ggtt_rotated_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *n
>  	struct fb_rotate_args *args = data;
>  	struct xe_bo *bo = args->bo;
>  	const struct intel_rotation_info *rot_info = &args->view->rotated;
> -	u32 ggtt_ofs = node->base.start;
> +	u32 ggtt_ofs = xe_ggtt_node_addr(node);
>  
>  	for (u32 i = 0; i < ARRAY_SIZE(rot_info->plane); i++)
>  		write_ggtt_rotated(ggtt, &ggtt_ofs, pte_flags, write_pte,
> @@ -353,7 +353,7 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
>  	if (vma->dpt)
>  		xe_bo_unpin_map_no_vm(vma->dpt);
>  	else if (!xe_ggtt_node_allocated(vma->bo->ggtt_node[tile_id]) ||
> -		 vma->bo->ggtt_node[tile_id]->base.start != vma->node->base.start)
> +		 vma->bo->ggtt_node[tile_id] != vma->node)
>  		xe_ggtt_node_remove(vma->node, false);
>  
>  	ttm_bo_reserve(&vma->bo->ttm, false, false, NULL);
> diff --git a/drivers/gpu/drm/xe/display/xe_stolen.c b/drivers/gpu/drm/xe/display/xe_stolen.c
> index 12771709183ad..8dc2f86ec6023 100644
> --- a/drivers/gpu/drm/xe/display/xe_stolen.c
> +++ b/drivers/gpu/drm/xe/display/xe_stolen.c
> @@ -78,7 +78,7 @@ static u64 xe_stolen_node_address(const struct intel_stolen_node *node)
>  
>  static u64 xe_stolen_node_size(const struct intel_stolen_node *node)
>  {
> -	return node->bo->ttm.base.size;
> +	return xe_bo_size(node->bo);
>  }
>  
>  static struct intel_stolen_node *xe_stolen_node_alloc(struct drm_device *drm)
> -- 
> 2.51.0
> 

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

end of thread, other threads:[~2026-01-12 14:47 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-08 10:10 [PATCH v2 0/7] drm/xe: Privatize struct xe_ggtt_node Maarten Lankhorst
2026-01-08 10:10 ` [PATCH v2 1/7] drm/xe: Start using ggtt->start in preparation of balloon removal Maarten Lankhorst
2026-01-08 10:10 ` [PATCH v2 2/7] drm/xe: Convert xe_fb_pin to use a callback for insertion into GGTT Maarten Lankhorst
2026-01-08 10:10 ` [PATCH v2 3/7] drm/xe: Add xe_ggtt_node_addr() to avoid dereferencing xe_ggtt_node Maarten Lankhorst
2026-01-08 16:15   ` Matthew Brost
2026-01-08 10:10 ` [PATCH v2 4/7] drm/xe/display: Avoid " Maarten Lankhorst
2026-01-12 14:46   ` Rodrigo Vivi
2026-01-08 10:10 ` [PATCH v2 5/7] drm/xe: Do not dereference ggtt_node in xe_bo.c Maarten Lankhorst
2026-01-08 16:16   ` Matthew Brost
2026-01-08 10:10 ` [PATCH v2 6/7] drm/xe: Improve xe_gt_sriov_pf_config GGTT handling Maarten Lankhorst
2026-01-08 10:10 ` [PATCH v2 7/7] drm/xe: Privatize xe_ggtt_node Maarten Lankhorst
2026-01-08 10:40 ` ✗ CI.checkpatch: warning for drm/xe: Privatize struct xe_ggtt_node. (rev2) Patchwork
2026-01-08 10:41 ` ✓ CI.KUnit: success " Patchwork
2026-01-08 11:40 ` ✓ Xe.CI.BAT: " Patchwork
2026-01-08 14:19 ` ✓ Xe.CI.Full: " Patchwork

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