All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
@ 2026-07-07 14:12 Arunpravin Paneer Selvam
  2026-07-07 14:12 ` [PATCH v5 2/2] gpu/tests/buddy: add dirty tracker performance KUnit test Arunpravin Paneer Selvam
                   ` (7 more replies)
  0 siblings, 8 replies; 10+ messages in thread
From: Arunpravin Paneer Selvam @ 2026-07-07 14:12 UTC (permalink / raw)
  To: matthew.auld, christian.koenig, dri-devel, intel-gfx, intel-xe,
	amd-gfx
  Cc: alexander.deucher, Arunpravin Paneer Selvam

The current buddy allocator maintains separate clear_tree[] and
dirty_tree[] rbtrees per order, preventing coalescing between cleared
and dirty buddies. Under mixed workloads, this creates a merge barrier:
adjacent buddies frequently end up split across trees, forcing reliance
on __force_merge() during allocation.

__force_merge() performs an O(N x max_order) scan under the VRAM manager
lock, leading to allocation stalls and failures for large contiguous
requests even when sufficient total free memory is available.

Solution

Replace the dual-tree design with:
- A single free_tree[order] rbtree for dirty and mixed free blocks
  (fully cleared free blocks float outside this tree)
- A lightweight out-of-band dirty tracker (gpu_dirty_tracker)

Fully cleared free blocks are tracked outside the buddy trees using an
augmented interval rbtree, enabling O(log E) lookup of the largest
cleared extents.

Buddy coalescing is now unconditional in __gpu_buddy_free(), regardless
of clear/dirty state. This removes the merge barrier and eliminates the
need for __force_merge().

Benefits

- Correct high-order allocations after mixed clear/dirty workloads
- Elimination of O(N x max_order) merge cost from the allocation path
- O(log E) cleared-extent lookup replacing O(N) scans
- Predictable allocation latency under fragmentation
- Reduced complexity with a single tree per order

Test:
dEQP-VK.memory.allocation.basic.size_8KiB.reverse.count_4000

Below data is from /sys/kernel/debug/dri/1/amdgpu_vram_mm:

Base (dual-tree), before VKCTS test:
  order- 6 free:   6 MiB,  blocks: 26
  order- 5 free:   1 MiB,  blocks: 15
  order- 4 free: 960 KiB,  blocks: 15
  order- 3 free:   5 MiB,  blocks: 171
  order- 2 free:   2 MiB,  blocks: 176
  order- 1 free:   1 MiB,  blocks: 165
  order- 0 free:  16 KiB,  blocks: 4

Base (dual-tree), after VKCTS test:
  order- 6 free: 768 KiB,  blocks: 3
  order- 5 free: 499 MiB,  blocks: 3999
  order- 4 free: 250 MiB,  blocks: 4001
  order- 3 free: 129 MiB,  blocks: 4157
  order- 2 free:  65 MiB,  blocks: 4161
  order- 1 free:  63 MiB,  blocks: 8138
  order- 0 free:  20 KiB,  blocks: 5

Dirty tracker, before VKCTS test:
  order- 6 free:   4 MiB,  blocks: 19
  order- 5 free:   2 MiB,  blocks: 18
  order- 4 free: 704 KiB,  blocks: 11
  order- 3 free:   5 MiB,  blocks: 168
  order- 2 free:   2 MiB,  blocks: 174
  order- 1 free:   1 MiB,  blocks: 167
  order- 0 free:  32 KiB,  blocks: 8

Dirty tracker, after VKCTS test:
  order- 6 free:   4 MiB,  blocks: 19
  order- 5 free:   2 MiB,  blocks: 18
  order- 4 free: 704 KiB,  blocks: 11
  order- 3 free:   5 MiB,  blocks: 168
  order- 2 free:   2 MiB,  blocks: 174
  order- 1 free:   1 MiB,  blocks: 167
  order- 0 free:  28 KiB,  blocks: 7

v2:
 - Code-style cleanup and minor refactoring
 - Renamed locals for clarity

v3:
 - Keep cleared blocks inside free_tree[] instead of floating them.
 - Add subtree_has_dirty rbtree augment for O(log N) dirty-first walk.

v4:
 - Fixed checkpatch warnings.
 - Optimized gpu_buddy_reset_clear() to a single post-order walk that
   flips block headers and recomputes the rbtree augment in one pass.
 - Propagate subtree_max_size top-down in insert_extent() so ancestors
   are not left with stale values on no-rotation inserts. (sashiko)
 - Drop the whole extent in gpu_dirty_tracker_mark_dirty() when the
   inside-split allocation fails, avoiding a stale clear claim. (sashiko)
 - Make gpu_dirty_tracker_find() alignment-aware and fall back to the
   dirty tree on steered failure to avoid spurious -ENOSPC. (sashiko)

v5:
 - Track dirty extents instead of cleared ones: steer dirty allocs onto
   tracked dirty windows and pick clear allocs via a free-tree augment,
   avoiding clear-memory wastage by keeping cleared free blocks untouched
   during dirty allocation.

Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Christian König <christian.koenig@amd.com>
Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Assisted-by: Claude:claude-opus-4-8
---
 drivers/gpu/Kconfig                |    3 +-
 drivers/gpu/buddy.c                | 1198 +++++++++++++++++++---------
 drivers/gpu/tests/gpu_buddy_test.c |   32 +-
 include/linux/gpu_buddy.h          |   77 +-
 4 files changed, 885 insertions(+), 425 deletions(-)

diff --git a/drivers/gpu/Kconfig b/drivers/gpu/Kconfig
index ebb2ad4b7ea0..3bcf08260d73 100644
--- a/drivers/gpu/Kconfig
+++ b/drivers/gpu/Kconfig
@@ -7,7 +7,8 @@ config GPU_BUDDY
 
 config GPU_BUDDY_KUNIT_TEST
        tristate "KUnit tests for GPU buddy allocator" if !KUNIT_ALL_TESTS
-       depends on GPU_BUDDY && KUNIT
+       depends on KUNIT
+       select GPU_BUDDY
        default KUNIT_ALL_TESTS
        help
          KUnit tests for the GPU buddy allocator.
diff --git a/drivers/gpu/buddy.c b/drivers/gpu/buddy.c
index dc81fe0301ce..288a85d9e95e 100644
--- a/drivers/gpu/buddy.c
+++ b/drivers/gpu/buddy.c
@@ -8,6 +8,7 @@
 #include <linux/kmemleak.h>
 #include <linux/module.h>
 #include <linux/sizes.h>
+#include <linux/slab.h>
 
 #include <linux/gpu_buddy.h>
 
@@ -34,6 +35,411 @@
 #endif
 
 static struct kmem_cache *slab_blocks;
+static struct kmem_cache *slab_extents;
+
+enum gpu_block_state {
+	GPU_BLOCK_CLEAR,
+	GPU_BLOCK_MIXED,
+	GPU_BLOCK_DIRTY,
+};
+
+/*
+ * Dirty tracker
+ * -------------
+ *
+ * The dirty tracker maintains an augmented interval rbtree of contiguous
+ * dirty address ranges, decoupled from the buddy free trees.
+ * Each node covers a maximal coalesced run; adjacent extents are merged
+ * on insertion so the tree always holds the smallest possible number of
+ * extents.  The augmentation field @subtree_max_size lets the allocator
+ * locate the largest dirty extent in O(log E).
+ *
+ * Free trees (mm->free_tree[])
+ * ----------------------------
+ *
+ * Per-order augmented rbtrees of FREE buddy blocks, keyed by offset.
+ * Every node carries:
+ *   - subtree_max_alignment: largest natural alignment in the subtree,
+ *     used by aligned/range allocations to skip unsuitable subtrees in
+ *     O(log N).
+ *   - subtree_has_clear: a clear or mixed block exists in the
+ *     subtree.
+ *
+ * Block classes
+ * -------------
+ *
+ * Each FREE block falls into one of three classes, determined in
+ * mark_free() by querying the dirty tracker for the block's range:
+ *
+ *   clear   -- HEADER_CLEAR set; no dirty extent overlaps the range.
+ *   mixed   -- HEADER_CLEAR unset; range has both dirty and clear bytes.
+ *   dirty   -- HEADER_CLEAR unset; range is fully dirty.
+ *
+ * Clear allocation fallback order
+ * -------------------------------
+ *
+ * For a clear (CLEAR_ALLOCATION) request, the allocator walks the free
+ * trees in this order:
+ *
+ *     clear -> mixed -> dirty
+ *
+ * A single augment bit subtree_has_clear (set for any block that is not
+ * fully dirty) drives rbtree_last_clear_free_block() in O(log N).
+ */
+
+static u64 extent_size(struct gpu_dirty_extent *dirty_extent)
+{
+	return dirty_extent->end - dirty_extent->start;
+}
+
+RB_DECLARE_CALLBACKS_MAX(static, gpu_dirty_augment_cb,
+			 struct gpu_dirty_extent, rb,
+			 u64, subtree_max_size,
+			 extent_size)
+
+static struct gpu_dirty_extent *extent_alloc(void)
+{
+	return kmem_cache_zalloc(slab_extents, GFP_KERNEL | __GFP_NOFAIL);
+}
+
+static void extent_free(struct gpu_dirty_extent *dirty_extent)
+{
+	kmem_cache_free(slab_extents, dirty_extent);
+}
+
+/* Return the rightmost extent whose start is strictly below @offset. */
+static struct gpu_dirty_extent *
+prev_extent(struct gpu_dirty_tracker *dirty_tracker, u64 offset)
+{
+	struct rb_node *rb = dirty_tracker->root.rb_node;
+	struct gpu_dirty_extent *dirty_extent = NULL;
+
+	while (rb) {
+		struct gpu_dirty_extent *tmp_extent =
+			rb_entry(rb, struct gpu_dirty_extent, rb);
+
+		if (tmp_extent->start < offset) {
+			dirty_extent = tmp_extent;
+			rb = rb->rb_right;
+		} else {
+			rb = rb->rb_left;
+		}
+	}
+
+	return dirty_extent;
+}
+
+/* Return the leftmost extent whose start is at or above @offset. */
+static struct gpu_dirty_extent *
+next_extent(struct gpu_dirty_tracker *dirty_tracker, u64 offset)
+{
+	struct rb_node *rb = dirty_tracker->root.rb_node;
+	struct gpu_dirty_extent *dirty_extent = NULL;
+
+	while (rb) {
+		struct gpu_dirty_extent *tmp_extent =
+			rb_entry(rb, struct gpu_dirty_extent, rb);
+
+		if (tmp_extent->start >= offset) {
+			dirty_extent = tmp_extent;
+			rb = rb->rb_left;
+		} else {
+			rb = rb->rb_right;
+		}
+	}
+
+	return dirty_extent;
+}
+
+static void insert_extent(struct gpu_dirty_tracker *dirty_tracker,
+			  struct gpu_dirty_extent *dirty_extent)
+{
+	struct rb_node **link = &dirty_tracker->root.rb_node;
+	struct rb_node *parent = NULL;
+	u64 size = extent_size(dirty_extent);
+
+	while (*link) {
+		struct gpu_dirty_extent *tmp_extent;
+
+		parent = *link;
+		tmp_extent = rb_entry(parent, struct gpu_dirty_extent, rb);
+
+		if (tmp_extent->subtree_max_size < size)
+			tmp_extent->subtree_max_size = size;
+
+		if (dirty_extent->start < tmp_extent->start)
+			link = &parent->rb_left;
+		else
+			link = &parent->rb_right;
+	}
+
+	dirty_extent->subtree_max_size = size;
+	rb_link_node(&dirty_extent->rb, parent, link);
+	rb_insert_augmented(&dirty_extent->rb, &dirty_tracker->root, &gpu_dirty_augment_cb);
+}
+
+static void remove_extent(struct gpu_dirty_tracker *dirty_tracker,
+			  struct gpu_dirty_extent *dirty_extent)
+{
+	rb_erase_augmented(&dirty_extent->rb, &dirty_tracker->root, &gpu_dirty_augment_cb);
+	RB_CLEAR_NODE(&dirty_extent->rb);
+}
+
+static void gpu_dirty_tracker_init(struct gpu_dirty_tracker *dirty_tracker)
+{
+	dirty_tracker->root = RB_ROOT;
+	dirty_tracker->total_dirty = 0;
+}
+
+static void gpu_dirty_tracker_fini(struct gpu_dirty_tracker *dirty_tracker)
+{
+	struct rb_node *rb;
+
+	while ((rb = rb_first(&dirty_tracker->root))) {
+		struct gpu_dirty_extent *dirty_extent =
+			rb_entry(rb, struct gpu_dirty_extent, rb);
+
+		remove_extent(dirty_tracker, dirty_extent);
+		extent_free(dirty_extent);
+	}
+
+	dirty_tracker->total_dirty = 0;
+}
+
+/*
+ * Mark the range [start, start + size] as dirty. Merge with the neighbour on
+ * each side if they are contiguous, so the tree never holds two adjacent ranges.
+ */
+static void gpu_dirty_tracker_mark_dirty(struct gpu_dirty_tracker *dirty_tracker,
+					 u64 start, u64 size)
+{
+	struct gpu_dirty_extent *left, *right, *dirty_extent;
+	u64 end = start + size;
+
+	if (!size)
+		return;
+
+	/* Find contiguous neighbours, if any. */
+	left = prev_extent(dirty_tracker, start);
+	if (left && left->end != start)
+		left = NULL;
+
+	right = next_extent(dirty_tracker, end);
+	if (right && right->start != end)
+		right = NULL;
+
+	if (left && right) {
+		/* Merge left + new + right into a single extent. */
+		remove_extent(dirty_tracker, left);
+		remove_extent(dirty_tracker, right);
+		left->end = right->end;
+		extent_free(right);
+		insert_extent(dirty_tracker, left);
+	} else if (left) {
+		/* Extend left neighbour rightwards. */
+		remove_extent(dirty_tracker, left);
+		left->end = end;
+		insert_extent(dirty_tracker, left);
+	} else if (right) {
+		/* Extend right neighbour leftwards. */
+		remove_extent(dirty_tracker, right);
+		right->start = start;
+		insert_extent(dirty_tracker, right);
+	} else {
+		/* Standalone extent. */
+		dirty_extent = extent_alloc();
+		dirty_extent->start = start;
+		dirty_extent->end   = end;
+		insert_extent(dirty_tracker, dirty_extent);
+	}
+
+	dirty_tracker->total_dirty += size;
+}
+
+/*
+ * Remove the range [start, start + size] from the dirty tracker. Punch the
+ * range out of every overlapping dirty extent, splitting one extent in two if
+ * the removed range falls strictly inside it.
+ */
+static void gpu_dirty_tracker_remove_range(struct gpu_dirty_tracker *dirty_tracker,
+					   u64 start, u64 size)
+{
+	struct gpu_dirty_extent *dirty_extent, *next;
+	u64 end = start + size;
+
+	if (!size)
+		return;
+
+	dirty_extent = prev_extent(dirty_tracker, start + 1);
+	if (!dirty_extent)
+		dirty_extent = next_extent(dirty_tracker, start);
+
+	while (dirty_extent && dirty_extent->start < end) {
+		struct rb_node *next_node = rb_next(&dirty_extent->rb);
+		u64 extent_start = dirty_extent->start;
+		u64 extent_end = dirty_extent->end;
+
+		if (next_node)
+			next = rb_entry(next_node, struct gpu_dirty_extent, rb);
+		else
+			next = NULL;
+
+		/* Skip a non-overlapping neighbour returned by prev_extent(). */
+		if (extent_end <= start) {
+			dirty_extent = next;
+			continue;
+		}
+
+		if (extent_start < start && extent_end > end) {
+			/*
+			 * Removed range lies strictly inside this dirty extent:
+			 * split it into the dirty left and right halves.
+			 */
+			struct gpu_dirty_extent *right = extent_alloc();
+
+			remove_extent(dirty_tracker, dirty_extent);
+
+			dirty_extent->end = start;
+			right->start = end;
+			right->end   = extent_end;
+
+			insert_extent(dirty_tracker, dirty_extent);
+			insert_extent(dirty_tracker, right);
+
+			dirty_tracker->total_dirty -= size;
+		} else if (extent_start >= start && extent_end <= end) {
+			/* Extent fully covered: drop it. */
+			remove_extent(dirty_tracker, dirty_extent);
+			extent_free(dirty_extent);
+
+			dirty_tracker->total_dirty -= (extent_end - extent_start);
+		} else if (extent_start < start) {
+			/* Extent overlaps from the left: trim its right end. */
+			remove_extent(dirty_tracker, dirty_extent);
+			dirty_extent->end = start;
+			insert_extent(dirty_tracker, dirty_extent);
+
+			dirty_tracker->total_dirty -= (extent_end - start);
+		} else {
+			/* Extent overlaps from the right: trim its left end. */
+			remove_extent(dirty_tracker, dirty_extent);
+			dirty_extent->start = end;
+			insert_extent(dirty_tracker, dirty_extent);
+
+			dirty_tracker->total_dirty -= (end - extent_start);
+		}
+
+		dirty_extent = next;
+	}
+}
+
+static enum gpu_block_state
+gpu_query_block_state(struct gpu_dirty_tracker *dirty_tracker,
+		      u64 start, u64 size)
+{
+	struct gpu_dirty_extent *dirty_extent;
+	u64 end = start + size;
+
+	dirty_extent = prev_extent(dirty_tracker, start + 1);
+	if (dirty_extent) {
+		if (dirty_extent->start <= start && dirty_extent->end >= end)
+			return GPU_BLOCK_DIRTY;
+		if (dirty_extent->start < end && dirty_extent->end > start)
+			return GPU_BLOCK_MIXED;
+	}
+
+	dirty_extent = next_extent(dirty_tracker, start);
+	if (dirty_extent && dirty_extent->start < end)
+		return GPU_BLOCK_MIXED;
+
+	return GPU_BLOCK_CLEAR;
+}
+
+static struct rb_node *
+dirty_tracker_descend_right(struct rb_node *node, u64 min_size)
+{
+	while (node->rb_right) {
+		struct gpu_dirty_extent *tmp_extent;
+
+		tmp_extent = rb_entry(node->rb_right, struct gpu_dirty_extent, rb);
+
+		if (tmp_extent->subtree_max_size < min_size)
+			break;
+		node = node->rb_right;
+	}
+
+	return node;
+}
+
+/*
+ * gpu_dirty_tracker_find - find a dirty extent that can satisfy an
+ * allocation of @min_size bytes.
+ *
+ * @min_size:           size of the block that must fit (chunk_size << order),
+ *                      must be a power of two. A buddy block of this size is
+ *                      always @min_size aligned, so the extent is tested for a
+ *                      @min_size aligned slot of that size.
+ * @aligned_start_out:  set to ALIGN(ext->start, @min_size) on a successful
+ *                      match so the caller can use it directly as the window
+ *                      start.
+ *
+ * Returns the matching extent, or NULL if none exists.
+ */
+static struct gpu_dirty_extent *
+gpu_dirty_tracker_find(struct gpu_dirty_tracker *dirty_tracker,
+		       u64 min_size, u64 *aligned_start_out)
+{
+	struct rb_node *rb = dirty_tracker->root.rb_node;
+	struct gpu_dirty_extent *root_extent;
+	struct rb_node *parent;
+
+	if (!min_size || !is_power_of_2(min_size))
+		return NULL;
+
+	if (!rb)
+		return NULL;
+
+	root_extent = rb_entry(rb, struct gpu_dirty_extent, rb);
+	if (root_extent->subtree_max_size < min_size)
+		return NULL;
+
+	rb = dirty_tracker_descend_right(rb, min_size);
+
+	while (rb) {
+		struct gpu_dirty_extent *dirty_extent;
+		u64 aligned_start;
+
+		dirty_extent = rb_entry(rb, struct gpu_dirty_extent, rb);
+		aligned_start = ALIGN(dirty_extent->start, min_size);
+
+		/* Check if a min_size block fits after the alignment skip. */
+		if (aligned_start <= dirty_extent->end &&
+		    dirty_extent->end - aligned_start >= min_size) {
+			*aligned_start_out = aligned_start;
+			return dirty_extent;
+		}
+
+		if (rb->rb_left) {
+			struct gpu_dirty_extent *tmp_extent;
+
+			tmp_extent = rb_entry(rb->rb_left, struct gpu_dirty_extent, rb);
+			if (tmp_extent->subtree_max_size >= min_size) {
+				rb = dirty_tracker_descend_right(rb->rb_left, min_size);
+				continue;
+			}
+		}
+
+		/* Walk up until we exit a node via its right child. */
+		parent = rb_parent(rb);
+		while (parent && parent->rb_right != rb) {
+			rb = parent;
+			parent = rb_parent(rb);
+		}
+		rb = parent;
+	}
+
+	return NULL;
+}
 
 static unsigned int
 gpu_buddy_block_state(struct gpu_buddy_block *block)
@@ -67,10 +473,87 @@ static unsigned int gpu_buddy_block_offset_alignment(struct gpu_buddy_block *blo
 	return __ffs64(offset);
 }
 
-RB_DECLARE_CALLBACKS_MAX(static, gpu_buddy_augment_cb,
-			 struct gpu_buddy_block, rb,
-			 unsigned int, subtree_max_alignment,
-			 gpu_buddy_block_offset_alignment);
+static inline void gpu_buddy_augment_compute(struct gpu_buddy_block *block)
+{
+	struct gpu_buddy_block *right;
+	struct gpu_buddy_block *left;
+	unsigned int max_align;
+	bool has_clear;
+
+	max_align = gpu_buddy_block_offset_alignment(block);
+	has_clear = block->has_clear;
+
+	left = rb_entry_safe(block->rb.rb_left, struct gpu_buddy_block, rb);
+	if (left) {
+		if (left->subtree_max_alignment > max_align)
+			max_align = left->subtree_max_alignment;
+
+		has_clear |= left->subtree_has_clear;
+	}
+
+	right = rb_entry_safe(block->rb.rb_right, struct gpu_buddy_block, rb);
+	if (right) {
+		if (right->subtree_max_alignment > max_align)
+			max_align = right->subtree_max_alignment;
+
+		has_clear |= right->subtree_has_clear;
+	}
+
+	block->subtree_max_alignment = max_align;
+	block->subtree_has_clear = has_clear;
+}
+
+static void gpu_buddy_augment_propagate(struct rb_node *rb, struct rb_node *stop)
+{
+	while (rb != stop) {
+		struct gpu_buddy_block *block;
+		unsigned int old_align;
+		bool old_has_clear;
+
+		block = rb_entry(rb, struct gpu_buddy_block, rb);
+		old_align = block->subtree_max_alignment;
+		old_has_clear = block->subtree_has_clear;
+
+		gpu_buddy_augment_compute(block);
+		if (block->subtree_max_alignment == old_align &&
+		    block->subtree_has_clear == old_has_clear)
+			break;
+
+		rb = rb_parent(&block->rb);
+	}
+}
+
+static void gpu_buddy_augment_copy(struct rb_node *rb_old, struct rb_node *rb_new)
+{
+	struct gpu_buddy_block *old;
+	struct gpu_buddy_block *new;
+
+	old = rb_entry(rb_old, struct gpu_buddy_block, rb);
+	new = rb_entry(rb_new, struct gpu_buddy_block, rb);
+
+	new->subtree_max_alignment = old->subtree_max_alignment;
+	new->subtree_has_clear = old->subtree_has_clear;
+}
+
+static void gpu_buddy_augment_rotate(struct rb_node *rb_old, struct rb_node *rb_new)
+{
+	struct gpu_buddy_block *old;
+	struct gpu_buddy_block *new;
+
+	old = rb_entry(rb_old, struct gpu_buddy_block, rb);
+	new = rb_entry(rb_new, struct gpu_buddy_block, rb);
+
+	new->subtree_max_alignment = old->subtree_max_alignment;
+	new->subtree_has_clear = old->subtree_has_clear;
+
+	gpu_buddy_augment_compute(old);
+}
+
+static const struct rb_augment_callbacks gpu_buddy_augment_cb = {
+	.propagate = gpu_buddy_augment_propagate,
+	.copy      = gpu_buddy_augment_copy,
+	.rotate    = gpu_buddy_augment_rotate,
+};
 
 static struct gpu_buddy_block *gpu_block_alloc(struct gpu_buddy *mm,
 					       struct gpu_buddy_block *parent,
@@ -101,13 +584,6 @@ static void gpu_block_free(struct gpu_buddy *mm,
 	kmem_cache_free(slab_blocks, block);
 }
 
-static enum gpu_buddy_free_tree
-get_block_tree(struct gpu_buddy_block *block)
-{
-	return gpu_buddy_block_is_clear(block) ?
-	       GPU_BUDDY_CLEAR_TREE : GPU_BUDDY_DIRTY_TREE;
-}
-
 static struct gpu_buddy_block *
 rbtree_get_free_block(const struct rb_node *node)
 {
@@ -120,24 +596,55 @@ rbtree_last_free_block(struct rb_root *root)
 	return rbtree_get_free_block(rb_last(root));
 }
 
-static bool rbtree_is_empty(struct rb_root *root)
+static struct gpu_buddy_block *
+rbtree_last_clear_free_block(struct rb_root *root)
 {
-	return RB_EMPTY_ROOT(root);
+	struct gpu_buddy_block *block = NULL;
+	struct rb_node *node = root->rb_node;
+
+	while (node) {
+		struct gpu_buddy_block *right_block;
+		struct gpu_buddy_block *node_block;
+
+		node_block = rbtree_get_free_block(node);
+		right_block = rbtree_get_free_block(node->rb_right);
+
+		if (right_block && right_block->subtree_has_clear) {
+			node = node->rb_right;
+			continue;
+		}
+
+		if (node_block->has_clear) {
+			block = node_block;
+			break;
+		}
+
+		node = node->rb_left;
+	}
+
+	return block;
+}
+
+static inline void gpu_buddy_sync_clear_avail(struct gpu_buddy *mm)
+{
+	mm->clear_avail = mm->avail - mm->dirty.total_dirty;
 }
 
 static void rbtree_insert(struct gpu_buddy *mm,
-			  struct gpu_buddy_block *block,
-			  enum gpu_buddy_free_tree tree)
+			  struct gpu_buddy_block *block)
 {
 	struct rb_node **link, *parent = NULL;
-	unsigned int block_alignment, order;
 	struct gpu_buddy_block *node;
+	unsigned int block_alignment;
 	struct rb_root *root;
+	unsigned int order;
+	bool block_has_clear;
 
 	order = gpu_buddy_block_order(block);
 	block_alignment = gpu_buddy_block_offset_alignment(block);
+	block_has_clear = block->has_clear;
 
-	root = &mm->free_trees[tree][order];
+	root = &mm->free_tree[order];
 	link = &root->rb_node;
 
 	while (*link) {
@@ -147,10 +654,12 @@ static void rbtree_insert(struct gpu_buddy *mm,
 		 * Manual augmentation update during insertion traversal. Required
 		 * because rb_insert_augmented() only calls rotate callback during
 		 * rotations. This ensures all ancestors on the insertion path have
-		 * correct subtree_max_alignment values.
+		 * correct subtree_max_alignment / subtree_has_clear values.
 		 */
 		if (node->subtree_max_alignment < block_alignment)
 			node->subtree_max_alignment = block_alignment;
+		if (block_has_clear)
+			node->subtree_has_clear = true;
 
 		if (gpu_buddy_block_offset(block) < gpu_buddy_block_offset(node))
 			link = &parent->rb_left;
@@ -159,6 +668,7 @@ static void rbtree_insert(struct gpu_buddy *mm,
 	}
 
 	block->subtree_max_alignment = block_alignment;
+	block->subtree_has_clear = block_has_clear;
 	rb_link_node(&block->rb, parent, link);
 	rb_insert_augmented(&block->rb, root, &gpu_buddy_augment_cb);
 }
@@ -167,26 +677,11 @@ static void rbtree_remove(struct gpu_buddy *mm,
 			  struct gpu_buddy_block *block)
 {
 	unsigned int order = gpu_buddy_block_order(block);
-	enum gpu_buddy_free_tree tree;
-	struct rb_root *root;
-
-	tree = get_block_tree(block);
-	root = &mm->free_trees[tree][order];
 
-	rb_erase_augmented(&block->rb, root, &gpu_buddy_augment_cb);
+	rb_erase_augmented(&block->rb, &mm->free_tree[order], &gpu_buddy_augment_cb);
 	RB_CLEAR_NODE(&block->rb);
 }
 
-static void clear_reset(struct gpu_buddy_block *block)
-{
-	block->header &= ~GPU_BUDDY_HEADER_CLEAR;
-}
-
-static void mark_cleared(struct gpu_buddy_block *block)
-{
-	block->header |= GPU_BUDDY_HEADER_CLEAR;
-}
-
 static void mark_allocated(struct gpu_buddy *mm,
 			   struct gpu_buddy_block *block)
 {
@@ -202,7 +697,9 @@ static void mark_allocated(struct gpu_buddy *mm,
 static void mark_free(struct gpu_buddy *mm,
 		      struct gpu_buddy_block *block)
 {
-	enum gpu_buddy_free_tree tree;
+	u64 offset = gpu_buddy_block_offset(block);
+	u64 size = gpu_buddy_block_size(mm, block);
+	enum gpu_block_state block_state;
 
 	if (gpu_buddy_block_is_allocated(block))
 		mm->used_scoreboard[gpu_buddy_block_order(block)]--;
@@ -210,10 +707,16 @@ static void mark_free(struct gpu_buddy *mm,
 	block->header &= ~GPU_BUDDY_HEADER_STATE;
 	block->header |= GPU_BUDDY_FREE;
 
+	block->header &= ~GPU_BUDDY_HEADER_CLEAR;
+
+	block_state = gpu_query_block_state(&mm->dirty, offset, size);
+	block->has_clear = (block_state != GPU_BLOCK_DIRTY);
+	if (block_state == GPU_BLOCK_CLEAR)
+		block->header |= GPU_BUDDY_HEADER_CLEAR;
+
 	mm->free_scoreboard[gpu_buddy_block_order(block)]++;
 
-	tree = get_block_tree(block);
-	rbtree_insert(mm, block, tree);
+	rbtree_insert(mm, block);
 }
 
 static void mark_split(struct gpu_buddy *mm,
@@ -253,37 +756,19 @@ __get_buddy(struct gpu_buddy_block *block)
 }
 
 static unsigned int __gpu_buddy_free(struct gpu_buddy *mm,
-				     struct gpu_buddy_block *block,
-				     bool force_merge)
+				     struct gpu_buddy_block *block)
 {
 	struct gpu_buddy_block *parent;
 	unsigned int order;
 
 	while ((parent = block->parent)) {
-		struct gpu_buddy_block *buddy;
-
-		buddy = __get_buddy(block);
+		struct gpu_buddy_block *buddy = __get_buddy(block);
 
 		if (!gpu_buddy_block_is_free(buddy))
 			break;
 
-		if (!force_merge) {
-			/*
-			 * Check the block and its buddy clear state and exit
-			 * the loop if they both have the dissimilar state.
-			 */
-			if (gpu_buddy_block_is_clear(block) !=
-			    gpu_buddy_block_is_clear(buddy))
-				break;
-
-			if (gpu_buddy_block_is_clear(block))
-				mark_cleared(parent);
-		}
-
 		rbtree_remove(mm, buddy);
 		mm->free_scoreboard[gpu_buddy_block_order(buddy)]--;
-		if (force_merge && gpu_buddy_block_is_clear(buddy))
-			mm->clear_avail -= gpu_buddy_block_size(mm, buddy);
 
 		if (gpu_buddy_block_is_allocated(block))
 			mm->used_scoreboard[gpu_buddy_block_order(block)]--;
@@ -300,67 +785,18 @@ static unsigned int __gpu_buddy_free(struct gpu_buddy *mm,
 	return order;
 }
 
-static int __force_merge(struct gpu_buddy *mm,
-			 u64 start,
-			 u64 end,
-			 unsigned int min_order)
+static void __gpu_buddy_undo_splits(struct gpu_buddy *mm,
+				    struct gpu_buddy_block *block)
 {
-	unsigned int tree, order;
-	int i;
-
-	if (!min_order)
-		return -ENOMEM;
-
-	if (min_order > mm->max_order)
-		return -EINVAL;
-
-	for_each_free_tree(tree) {
-		for (i = min_order - 1; i >= 0; i--) {
-			struct rb_node *iter = rb_last(&mm->free_trees[tree][i]);
-
-			while (iter) {
-				struct gpu_buddy_block *block, *buddy;
-				u64 block_start, block_end;
-
-				block = rbtree_get_free_block(iter);
-				iter = rb_prev(iter);
-
-				if (!block || !block->parent)
-					continue;
-
-				block_start = gpu_buddy_block_offset(block);
-				block_end = block_start + gpu_buddy_block_size(mm, block) - 1;
-
-				if (!contains(start, end, block_start, block_end))
-					continue;
-
-				buddy = __get_buddy(block);
-				if (!gpu_buddy_block_is_free(buddy))
-					continue;
-
-				gpu_buddy_assert(gpu_buddy_block_is_clear(block) !=
-						 gpu_buddy_block_is_clear(buddy));
-
-				/*
-				 * Advance to the next node when the current node is the buddy,
-				 * as freeing the block will also remove its buddy from the tree.
-				 */
-				if (iter == &buddy->rb)
-					iter = rb_prev(iter);
-
-				rbtree_remove(mm, block);
-				mm->free_scoreboard[gpu_buddy_block_order(block)]--;
-				if (gpu_buddy_block_is_clear(block))
-					mm->clear_avail -= gpu_buddy_block_size(mm, block);
+	struct gpu_buddy_block *buddy = __get_buddy(block);
 
-				order = __gpu_buddy_free(mm, block, true);
-				if (order >= min_order)
-					return 0;
-			}
-		}
+	if (buddy &&
+	    (gpu_buddy_block_is_free(block) &&
+	     gpu_buddy_block_is_free(buddy))) {
+		rbtree_remove(mm, block);
+		mm->free_scoreboard[gpu_buddy_block_order(block)]--;
+		__gpu_buddy_free(mm, block);
 	}
-
-	return -ENOMEM;
 }
 
 /**
@@ -377,7 +813,7 @@ static int __force_merge(struct gpu_buddy *mm,
  */
 int gpu_buddy_init(struct gpu_buddy *mm, u64 size, u64 chunk_size)
 {
-	unsigned int i, j, root_count = 0;
+	unsigned int root_count = 0;
 	u64 offset = 0;
 
 	if (size < chunk_size)
@@ -411,22 +847,13 @@ int gpu_buddy_init(struct gpu_buddy *mm, u64 size, u64 chunk_size)
 	if (!mm->used_scoreboard)
 		goto out_free_free_scoreboard;
 
-	mm->free_trees = kmalloc_array(GPU_BUDDY_MAX_FREE_TREES,
-				       sizeof(*mm->free_trees),
-				       GFP_KERNEL);
-	if (!mm->free_trees)
+	mm->free_tree = kcalloc(mm->max_order + 1,
+				sizeof(struct rb_root),
+				GFP_KERNEL);
+	if (!mm->free_tree)
 		goto out_free_used_scoreboard;
 
-	for_each_free_tree(i) {
-		mm->free_trees[i] = kmalloc_array(mm->max_order + 1,
-						  sizeof(struct rb_root),
-						  GFP_KERNEL);
-		if (!mm->free_trees[i])
-			goto out_free_tree;
-
-		for (j = 0; j <= mm->max_order; ++j)
-			mm->free_trees[i][j] = RB_ROOT;
-	}
+	gpu_dirty_tracker_init(&mm->dirty);
 
 	mm->n_roots = hweight64(size);
 
@@ -452,6 +879,7 @@ int gpu_buddy_init(struct gpu_buddy *mm, u64 size, u64 chunk_size)
 		if (!root)
 			goto out_free_roots;
 
+		gpu_dirty_tracker_mark_dirty(&mm->dirty, offset, root_size);
 		mark_free(mm, root);
 
 		BUG_ON(root_count > mm->max_order);
@@ -474,9 +902,8 @@ int gpu_buddy_init(struct gpu_buddy *mm, u64 size, u64 chunk_size)
 		gpu_block_free(mm, mm->roots[root_count]);
 	kfree(mm->roots);
 out_free_tree:
-	while (i--)
-		kfree(mm->free_trees[i]);
-	kfree(mm->free_trees);
+	gpu_dirty_tracker_fini(&mm->dirty);
+	kfree(mm->free_tree);
 out_free_used_scoreboard:
 	kfree(mm->used_scoreboard);
 out_free_free_scoreboard:
@@ -494,7 +921,7 @@ EXPORT_SYMBOL(gpu_buddy_init);
  */
 void gpu_buddy_fini(struct gpu_buddy *mm)
 {
-	u64 root_size, size, start;
+	u64 root_size, size;
 	unsigned int order;
 	int i;
 
@@ -502,14 +929,10 @@ void gpu_buddy_fini(struct gpu_buddy *mm)
 
 	for (i = 0; i < mm->n_roots; ++i) {
 		order = ilog2(size) - ilog2(mm->chunk_size);
-		start = gpu_buddy_block_offset(mm->roots[i]);
-		__force_merge(mm, start, start + size, order);
+		root_size = mm->chunk_size << order;
 
 		gpu_buddy_assert(gpu_buddy_block_is_free(mm->roots[i]));
-
 		gpu_block_free(mm, mm->roots[i]);
-
-		root_size = mm->chunk_size << order;
 		size -= root_size;
 	}
 
@@ -518,9 +941,8 @@ void gpu_buddy_fini(struct gpu_buddy *mm)
 	for (i = 0; i <= mm->max_order; ++i)
 		gpu_buddy_assert(!mm->used_scoreboard[i]);
 
-	for_each_free_tree(i)
-		kfree(mm->free_trees[i]);
-	kfree(mm->free_trees);
+	gpu_dirty_tracker_fini(&mm->dirty);
+	kfree(mm->free_tree);
 	kfree(mm->roots);
 	kfree(mm->free_scoreboard);
 	kfree(mm->used_scoreboard);
@@ -548,13 +970,6 @@ static int split_block(struct gpu_buddy *mm,
 	}
 
 	mark_split(mm, block);
-
-	if (gpu_buddy_block_is_clear(block)) {
-		mark_cleared(block->left);
-		mark_cleared(block->right);
-		clear_reset(block);
-	}
-
 	mark_free(mm, block->left);
 	mark_free(mm, block->right);
 
@@ -572,42 +987,40 @@ static int split_block(struct gpu_buddy *mm,
  */
 void gpu_buddy_reset_clear(struct gpu_buddy *mm, bool is_clear)
 {
-	enum gpu_buddy_free_tree src_tree, dst_tree;
-	u64 root_size, size, start;
-	unsigned int order;
-	int i;
+	unsigned int i;
 
 	gpu_buddy_driver_lock_held(mm);
-	size = mm->size;
-	for (i = 0; i < mm->n_roots; ++i) {
-		order = ilog2(size) - ilog2(mm->chunk_size);
-		start = gpu_buddy_block_offset(mm->roots[i]);
-		__force_merge(mm, start, start + size, order);
 
-		root_size = mm->chunk_size << order;
-		size -= root_size;
-	}
-
-	src_tree = is_clear ? GPU_BUDDY_DIRTY_TREE : GPU_BUDDY_CLEAR_TREE;
-	dst_tree = is_clear ? GPU_BUDDY_CLEAR_TREE : GPU_BUDDY_DIRTY_TREE;
+	gpu_dirty_tracker_fini(&mm->dirty);
+	gpu_dirty_tracker_init(&mm->dirty);
 
 	for (i = 0; i <= mm->max_order; ++i) {
-		struct rb_root *root = &mm->free_trees[src_tree][i];
 		struct gpu_buddy_block *block, *tmp;
 
-		rbtree_postorder_for_each_entry_safe(block, tmp, root, rb) {
-			rbtree_remove(mm, block);
+		rbtree_postorder_for_each_entry_safe(block, tmp,
+						     &mm->free_tree[i], rb) {
 			if (is_clear) {
-				mark_cleared(block);
-				mm->clear_avail += gpu_buddy_block_size(mm, block);
+				if (!gpu_buddy_block_is_clear(block))
+					block->header |= GPU_BUDDY_HEADER_CLEAR;
+				block->has_clear = true;
+			} else if (gpu_buddy_block_is_clear(block)) {
+				block->header &= ~GPU_BUDDY_HEADER_CLEAR;
+				block->has_clear = false;
+				gpu_dirty_tracker_mark_dirty(&mm->dirty,
+							     gpu_buddy_block_offset(block),
+							     gpu_buddy_block_size(mm, block));
 			} else {
-				clear_reset(block);
-				mm->clear_avail -= gpu_buddy_block_size(mm, block);
+				block->has_clear = false;
+				gpu_dirty_tracker_mark_dirty(&mm->dirty,
+							     gpu_buddy_block_offset(block),
+							     gpu_buddy_block_size(mm, block));
 			}
 
-			rbtree_insert(mm, block, dst_tree);
+			gpu_buddy_augment_compute(block);
 		}
 	}
+
+	gpu_buddy_sync_clear_avail(mm);
 }
 EXPORT_SYMBOL(gpu_buddy_reset_clear);
 
@@ -620,13 +1033,18 @@ EXPORT_SYMBOL(gpu_buddy_reset_clear);
 void gpu_buddy_free_block(struct gpu_buddy *mm,
 			  struct gpu_buddy_block *block)
 {
+	u64 size = gpu_buddy_block_size(mm, block);
+	u64 offset = gpu_buddy_block_offset(block);
+
 	gpu_buddy_driver_lock_held(mm);
 	BUG_ON(!gpu_buddy_block_is_allocated(block));
-	mm->avail += gpu_buddy_block_size(mm, block);
-	if (gpu_buddy_block_is_clear(block))
-		mm->clear_avail += gpu_buddy_block_size(mm, block);
 
-	__gpu_buddy_free(mm, block, false);
+	mm->avail += size;
+	if (!gpu_buddy_block_is_clear(block))
+		gpu_dirty_tracker_mark_dirty(&mm->dirty, offset, size);
+
+	gpu_buddy_sync_clear_avail(mm);
+	__gpu_buddy_free(mm, block);
 }
 EXPORT_SYMBOL(gpu_buddy_free_block);
 
@@ -640,10 +1058,15 @@ static void __gpu_buddy_free_list(struct gpu_buddy *mm,
 	gpu_buddy_assert(!(mark_dirty && mark_clear));
 
 	list_for_each_entry_safe(block, on, objects, link) {
+		/*
+		 * Propagate the caller's clear/dirty intent onto the block header
+		 * before handing it to gpu_buddy_free_block(), which will then
+		 * update the clear tracker accordingly.
+		 */
 		if (mark_clear)
-			mark_cleared(block);
+			block->header |= GPU_BUDDY_HEADER_CLEAR;
 		else if (mark_dirty)
-			clear_reset(block);
+			block->header &= ~GPU_BUDDY_HEADER_CLEAR;
 		gpu_buddy_free_block(mm, block);
 		cond_resched();
 	}
@@ -679,33 +1102,11 @@ void gpu_buddy_free_list(struct gpu_buddy *mm,
 }
 EXPORT_SYMBOL(gpu_buddy_free_list);
 
-static bool block_incompatible(struct gpu_buddy_block *block, unsigned int flags)
-{
-	bool needs_clear = flags & GPU_BUDDY_CLEAR_ALLOCATION;
-
-	return needs_clear != gpu_buddy_block_is_clear(block);
-}
-
-static void __gpu_buddy_undo_splits(struct gpu_buddy *mm,
-				    struct gpu_buddy_block *block)
-{
-	struct gpu_buddy_block *buddy = __get_buddy(block);
-
-	if (buddy &&
-	    (gpu_buddy_block_is_free(block) &&
-	     gpu_buddy_block_is_free(buddy))) {
-		rbtree_remove(mm, block);
-		mm->free_scoreboard[gpu_buddy_block_order(block)]--;
-		__gpu_buddy_free(mm, block, false);
-	}
-}
-
 static struct gpu_buddy_block *
 __alloc_range_bias(struct gpu_buddy *mm,
 		   u64 start, u64 end,
 		   unsigned int order,
-		   unsigned long flags,
-		   bool fallback)
+		   unsigned long flags)
 {
 	u64 req_size = mm->chunk_size << order;
 	struct gpu_buddy_block *block;
@@ -751,9 +1152,6 @@ __alloc_range_bias(struct gpu_buddy *mm,
 				continue;
 		}
 
-		if (!fallback && block_incompatible(block, flags))
-			continue;
-
 		if (contains(start, end, block_start, block_end) &&
 		    order == gpu_buddy_block_order(block)) {
 			/*
@@ -771,64 +1169,35 @@ __alloc_range_bias(struct gpu_buddy *mm,
 				goto err_undo;
 		}
 
-		list_add(&block->right->tmp_link, &dfs);
 		list_add(&block->left->tmp_link, &dfs);
+		list_add(&block->right->tmp_link, &dfs);
 	} while (1);
 
 	return ERR_PTR(-ENOSPC);
 
 err_undo:
-	/*
-	 * We really don't want to leave around a bunch of split blocks, since
-	 * bigger is better, so make sure we merge everything back before we
-	 * free the allocated blocks.
-	 */
 	__gpu_buddy_undo_splits(mm, block);
 	return ERR_PTR(err);
 }
 
-static struct gpu_buddy_block *
-__gpu_buddy_alloc_range_bias(struct gpu_buddy *mm,
-			     u64 start, u64 end,
-			     unsigned int order,
-			     unsigned long flags)
-{
-	struct gpu_buddy_block *block;
-	bool fallback = false;
-
-	block = __alloc_range_bias(mm, start, end, order,
-				   flags, fallback);
-	if (IS_ERR(block))
-		return __alloc_range_bias(mm, start, end, order,
-					  flags, !fallback);
-
-	return block;
-}
-
 static struct gpu_buddy_block *
 get_maxblock(struct gpu_buddy *mm,
-	     unsigned int order,
-	     enum gpu_buddy_free_tree tree)
+	     unsigned int order)
 {
-	struct gpu_buddy_block *max_block = NULL, *block = NULL;
-	struct rb_root *root;
+	struct gpu_buddy_block *max_block;
+	struct gpu_buddy_block *block;
 	unsigned int i;
 
+	max_block = NULL;
+
 	for (i = order; i <= mm->max_order; ++i) {
-		root = &mm->free_trees[tree][i];
-		block = rbtree_last_free_block(root);
+		block = rbtree_last_free_block(&mm->free_tree[i]);
 		if (!block)
 			continue;
 
-		if (!max_block) {
+		if (!max_block ||
+		    gpu_buddy_block_offset(block) > gpu_buddy_block_offset(max_block))
 			max_block = block;
-			continue;
-		}
-
-		if (gpu_buddy_block_offset(block) >
-		    gpu_buddy_block_offset(max_block)) {
-			max_block = block;
-		}
 	}
 
 	return max_block;
@@ -840,45 +1209,33 @@ alloc_from_freetree(struct gpu_buddy *mm,
 		    unsigned long flags)
 {
 	struct gpu_buddy_block *block = NULL;
-	struct rb_root *root;
-	enum gpu_buddy_free_tree tree;
 	unsigned int tmp;
 	int err;
 
-	tree = (flags & GPU_BUDDY_CLEAR_ALLOCATION) ?
-		GPU_BUDDY_CLEAR_TREE : GPU_BUDDY_DIRTY_TREE;
-
 	if (flags & GPU_BUDDY_TOPDOWN_ALLOCATION) {
-		block = get_maxblock(mm, order, tree);
+		block = get_maxblock(mm, order);
 		if (block)
-			/* Store the obtained block order */
 			tmp = gpu_buddy_block_order(block);
 	} else {
-		for (tmp = order; tmp <= mm->max_order; ++tmp) {
-			/* Get RB tree root for this order and tree */
-			root = &mm->free_trees[tree][tmp];
-			block = rbtree_last_free_block(root);
-			if (block)
-				break;
+		if (flags & GPU_BUDDY_CLEAR_ALLOCATION) {
+			for (tmp = order; tmp <= mm->max_order; ++tmp) {
+				block = rbtree_last_clear_free_block(&mm->free_tree[tmp]);
+				if (block)
+					break;
+			}
 		}
-	}
-
-	if (!block) {
-		/* Try allocating from the other tree */
-		tree = (tree == GPU_BUDDY_CLEAR_TREE) ?
-			GPU_BUDDY_DIRTY_TREE : GPU_BUDDY_CLEAR_TREE;
-
-		for (tmp = order; tmp <= mm->max_order; ++tmp) {
-			root = &mm->free_trees[tree][tmp];
-			block = rbtree_last_free_block(root);
-			if (block)
-				break;
+		if (!block) {
+			for (tmp = order; tmp <= mm->max_order; ++tmp) {
+				block = rbtree_last_free_block(&mm->free_tree[tmp]);
+				if (block)
+					break;
+			}
 		}
-
-		if (!block)
-			return ERR_PTR(-ENOSPC);
 	}
 
+	if (!block)
+		return ERR_PTR(-ENOSPC);
+
 	BUG_ON(!gpu_buddy_block_is_free(block));
 
 	while (tmp != order) {
@@ -886,7 +1243,25 @@ alloc_from_freetree(struct gpu_buddy *mm,
 		if (unlikely(err))
 			goto err_undo;
 
-		block = block->right;
+		if (flags & GPU_BUDDY_CLEAR_ALLOCATION) {
+			bool right_clear, left_clear;
+
+			right_clear = gpu_buddy_block_is_clear(block->right);
+			left_clear = gpu_buddy_block_is_clear(block->left);
+
+			if (right_clear)
+				block = block->right;
+			else if (left_clear)
+				block = block->left;
+			else if (block->right->has_clear)
+				block = block->right;
+			else if (block->left->has_clear)
+				block = block->left;
+			else
+				block = block->right;
+		} else {
+			block = block->right;
+		}
 		tmp--;
 	}
 	return block;
@@ -913,12 +1288,11 @@ static bool gpu_buddy_subtree_can_satisfy(struct rb_node *node,
 
 static struct gpu_buddy_block *
 gpu_buddy_find_block_aligned(struct gpu_buddy *mm,
-			     enum gpu_buddy_free_tree tree,
 			     unsigned int order,
 			     unsigned int alignment,
 			     unsigned long flags)
 {
-	struct rb_root *root = &mm->free_trees[tree][order];
+	struct rb_root *root = &mm->free_tree[order];
 	struct rb_node *rb = root->rb_node;
 
 	while (rb) {
@@ -956,7 +1330,6 @@ gpu_buddy_offset_aligned_allocation(struct gpu_buddy *mm,
 {
 	struct gpu_buddy_block *block = NULL;
 	unsigned int order, tmp, alignment;
-	enum gpu_buddy_free_tree tree;
 	unsigned long pages;
 	int err;
 
@@ -964,19 +1337,8 @@ gpu_buddy_offset_aligned_allocation(struct gpu_buddy *mm,
 	pages = size >> ilog2(mm->chunk_size);
 	order = fls(pages) - 1;
 
-	tree = (flags & GPU_BUDDY_CLEAR_ALLOCATION) ?
-		GPU_BUDDY_CLEAR_TREE : GPU_BUDDY_DIRTY_TREE;
-
 	for (tmp = order; tmp <= mm->max_order; ++tmp) {
-		block = gpu_buddy_find_block_aligned(mm, tree, tmp,
-						     alignment, flags);
-		if (!block) {
-			tree = (tree == GPU_BUDDY_CLEAR_TREE) ?
-				GPU_BUDDY_DIRTY_TREE : GPU_BUDDY_CLEAR_TREE;
-			block = gpu_buddy_find_block_aligned(mm, tree, tmp,
-							     alignment, flags);
-		}
-
+		block = gpu_buddy_find_block_aligned(mm, tmp, alignment, flags);
 		if (block)
 			break;
 	}
@@ -1003,11 +1365,6 @@ gpu_buddy_offset_aligned_allocation(struct gpu_buddy *mm,
 	return block;
 
 err_undo:
-	/*
-	 * We really don't want to leave around a bunch of split blocks, since
-	 * bigger is better, so make sure we merge everything back before we
-	 * free the allocated blocks.
-	 */
 	__gpu_buddy_undo_splits(mm, block);
 	return ERR_PTR(err);
 }
@@ -1015,6 +1372,7 @@ gpu_buddy_offset_aligned_allocation(struct gpu_buddy *mm,
 static int __alloc_range(struct gpu_buddy *mm,
 			 struct list_head *dfs,
 			 u64 start, u64 size,
+			 unsigned long flags,
 			 struct list_head *blocks,
 			 u64 *total_allocated_on_err)
 {
@@ -1051,16 +1409,32 @@ static int __alloc_range(struct gpu_buddy *mm,
 
 		if (contains(start, end, block_start, block_end)) {
 			if (gpu_buddy_block_is_free(block)) {
+				u64 block_size;
+				u64 block_offset;
+
+				block_size = gpu_buddy_block_size(mm, block);
+				block_offset = gpu_buddy_block_offset(block);
+
 				mark_allocated(mm, block);
-				total_allocated += gpu_buddy_block_size(mm, block);
-				mm->avail -= gpu_buddy_block_size(mm, block);
-				if (gpu_buddy_block_is_clear(block))
-					mm->clear_avail -= gpu_buddy_block_size(mm, block);
+				total_allocated += block_size;
+				mm->avail -= block_size;
+
+				block->header &= ~GPU_BUDDY_HEADER_CLEAR;
+				if (flags & GPU_BUDDY_CLEAR_ALLOCATION) {
+					enum gpu_block_state block_state;
+
+					block_state = gpu_query_block_state(&mm->dirty,
+									    block_offset,
+									    block_size);
+					if (block_state == GPU_BLOCK_CLEAR)
+						block->header |= GPU_BUDDY_HEADER_CLEAR;
+				}
+				gpu_dirty_tracker_remove_range(&mm->dirty,
+							       block_offset, block_size);
+				gpu_buddy_sync_clear_avail(mm);
+
 				list_add_tail(&block->link, &allocated);
 				continue;
-			} else if (!mm->clear_avail) {
-				err = -ENOSPC;
-				goto err_free;
 			}
 		}
 
@@ -1084,11 +1458,6 @@ static int __alloc_range(struct gpu_buddy *mm,
 	return 0;
 
 err_undo:
-	/*
-	 * We really don't want to leave around a bunch of split blocks, since
-	 * bigger is better, so make sure we merge everything back before we
-	 * free the allocated blocks.
-	 */
 	__gpu_buddy_undo_splits(mm, block);
 
 err_free:
@@ -1105,6 +1474,7 @@ static int __alloc_range(struct gpu_buddy *mm,
 static int __gpu_buddy_alloc_range(struct gpu_buddy *mm,
 				   u64 start,
 				   u64 size,
+				   unsigned long flags,
 				   u64 *total_allocated_on_err,
 				   struct list_head *blocks)
 {
@@ -1114,20 +1484,23 @@ static int __gpu_buddy_alloc_range(struct gpu_buddy *mm,
 	for (i = 0; i < mm->n_roots; ++i)
 		list_add_tail(&mm->roots[i]->tmp_link, &dfs);
 
-	return __alloc_range(mm, &dfs, start, size,
+	return __alloc_range(mm, &dfs, start, size, flags,
 			     blocks, total_allocated_on_err);
 }
 
 static int __alloc_contig_try_harder(struct gpu_buddy *mm,
 				     u64 size,
 				     u64 min_block_size,
+				     unsigned long flags,
 				     struct list_head *blocks)
 {
 	u64 rhs_offset, lhs_offset, lhs_size, filled;
 	struct gpu_buddy_block *block;
-	unsigned int tree, order;
 	LIST_HEAD(blocks_lhs);
+	struct rb_root *root;
+	struct rb_node *iter;
 	unsigned long pages;
+	unsigned int order;
 	u64 modify_size;
 	int err;
 
@@ -1137,45 +1510,40 @@ static int __alloc_contig_try_harder(struct gpu_buddy *mm,
 	if (order == 0)
 		return -ENOSPC;
 
-	for_each_free_tree(tree) {
-		struct rb_root *root;
-		struct rb_node *iter;
-
-		root = &mm->free_trees[tree][order];
-		if (rbtree_is_empty(root))
-			continue;
+	root = &mm->free_tree[order];
+	if (RB_EMPTY_ROOT(root))
+		return -ENOSPC;
 
-		iter = rb_last(root);
-		while (iter) {
-			block = rbtree_get_free_block(iter);
-
-			/* Allocate blocks traversing RHS */
-			rhs_offset = gpu_buddy_block_offset(block);
-			err =  __gpu_buddy_alloc_range(mm, rhs_offset, size,
-						       &filled, blocks);
-			if (!err || err != -ENOSPC)
-				return err;
-
-			lhs_size = max((size - filled), min_block_size);
-			if (!IS_ALIGNED(lhs_size, min_block_size))
-				lhs_size = round_up(lhs_size, min_block_size);
-
-			/* Allocate blocks traversing LHS */
-			lhs_offset = gpu_buddy_block_offset(block) - lhs_size;
-			err =  __gpu_buddy_alloc_range(mm, lhs_offset, lhs_size,
-						       NULL, &blocks_lhs);
-			if (!err) {
-				list_splice(&blocks_lhs, blocks);
-				return 0;
-			} else if (err != -ENOSPC) {
-				gpu_buddy_free_list_internal(mm, blocks);
-				return err;
-			}
-			/* Free blocks for the next iteration */
+	iter = rb_last(root);
+	while (iter) {
+		block = rbtree_get_free_block(iter);
+
+		/* Allocate blocks traversing RHS */
+		rhs_offset = gpu_buddy_block_offset(block);
+		err =  __gpu_buddy_alloc_range(mm, rhs_offset, size,
+					       flags, &filled, blocks);
+		if (!err || err != -ENOSPC)
+			return err;
+
+		lhs_size = max((size - filled), min_block_size);
+		if (!IS_ALIGNED(lhs_size, min_block_size))
+			lhs_size = round_up(lhs_size, min_block_size);
+
+		/* Allocate blocks traversing LHS */
+		lhs_offset = gpu_buddy_block_offset(block) - lhs_size;
+		err =  __gpu_buddy_alloc_range(mm, lhs_offset, lhs_size,
+					       flags, NULL, &blocks_lhs);
+		if (!err) {
+			list_splice(&blocks_lhs, blocks);
+			return 0;
+		} else if (err != -ENOSPC) {
 			gpu_buddy_free_list_internal(mm, blocks);
-
-			iter = rb_prev(iter);
+			return err;
 		}
+		/* Free blocks for the next iteration */
+		gpu_buddy_free_list_internal(mm, blocks);
+
+		iter = rb_prev(iter);
 	}
 
 	return -ENOSPC;
@@ -1209,6 +1577,7 @@ int gpu_buddy_block_trim(struct gpu_buddy *mm,
 	struct gpu_buddy_block *block;
 	u64 block_start, block_end;
 	LIST_HEAD(dfs);
+	bool was_clear;
 	u64 new_start;
 	int err;
 
@@ -1251,22 +1620,39 @@ int gpu_buddy_block_trim(struct gpu_buddy *mm,
 	}
 
 	list_del(&block->link);
+
+	was_clear = gpu_buddy_block_is_clear(block);
+	block->header &= ~GPU_BUDDY_HEADER_CLEAR;
+
+	if (!was_clear) {
+		gpu_dirty_tracker_mark_dirty(&mm->dirty,
+					     gpu_buddy_block_offset(block),
+					     gpu_buddy_block_size(mm, block));
+	}
+
 	mark_free(mm, block);
 	mm->avail += gpu_buddy_block_size(mm, block);
-	if (gpu_buddy_block_is_clear(block))
-		mm->clear_avail += gpu_buddy_block_size(mm, block);
+	gpu_buddy_sync_clear_avail(mm);
 
 	/* Prevent recursively freeing this node */
 	parent = block->parent;
 	block->parent = NULL;
 
 	list_add(&block->tmp_link, &dfs);
-	err =  __alloc_range(mm, &dfs, new_start, new_size, blocks, NULL);
+	err =  __alloc_range(mm, &dfs, new_start, new_size,
+			     was_clear ? GPU_BUDDY_CLEAR_ALLOCATION : 0,
+			     blocks, NULL);
 	if (err) {
 		mark_allocated(mm, block);
 		mm->avail -= gpu_buddy_block_size(mm, block);
-		if (gpu_buddy_block_is_clear(block))
-			mm->clear_avail -= gpu_buddy_block_size(mm, block);
+		if (!was_clear) {
+			gpu_dirty_tracker_remove_range(&mm->dirty,
+						       gpu_buddy_block_offset(block),
+						       gpu_buddy_block_size(mm, block));
+		}
+		if (was_clear)
+			block->header |= GPU_BUDDY_HEADER_CLEAR;
+		gpu_buddy_sync_clear_avail(mm);
 		list_add(&block->link, blocks);
 	}
 
@@ -1275,6 +1661,22 @@ int gpu_buddy_block_trim(struct gpu_buddy *mm,
 }
 EXPORT_SYMBOL(gpu_buddy_block_trim);
 
+static bool dirty_steer_window(struct gpu_buddy *mm, u64 req_size,
+			       u64 *start, u64 *end, unsigned long *flags)
+{
+	u64 aligned_start;
+	struct gpu_dirty_extent *ext =
+		gpu_dirty_tracker_find(&mm->dirty, req_size, &aligned_start);
+
+	if (!ext)
+		return false;
+
+	*start  = aligned_start;
+	*end    = ext->end;
+	*flags |= GPU_BUDDY_RANGE_ALLOCATION;
+	return true;
+}
+
 static struct gpu_buddy_block *
 __gpu_buddy_alloc_blocks(struct gpu_buddy *mm,
 			 u64 start, u64 end,
@@ -1282,18 +1684,36 @@ __gpu_buddy_alloc_blocks(struct gpu_buddy *mm,
 			 unsigned int order,
 			 unsigned long flags)
 {
-	if (flags & GPU_BUDDY_RANGE_ALLOCATION)
+	struct gpu_buddy_block *block;
+	bool steered = false;
+
+	/* Allocate from dirty tracker */
+	if (!(flags & GPU_BUDDY_RANGE_ALLOCATION) &&
+	    !(flags & GPU_BUDDY_CLEAR_ALLOCATION) &&
+	    mm->clear_avail && mm->dirty.total_dirty) {
+		u64 block_size = mm->chunk_size << order;
+
+		steered = dirty_steer_window(mm, block_size,
+					     &start, &end, &flags);
+	}
+
+	if (flags & GPU_BUDDY_RANGE_ALLOCATION) {
 		/* Allocate traversing within the range */
-		return  __gpu_buddy_alloc_range_bias(mm, start, end,
-						     order, flags);
-	else if (size < min_block_size)
+		block = __alloc_range_bias(mm, start, end, order, flags);
+		if (!IS_ERR(block) || !steered)
+			return block;
+
+		flags &= ~GPU_BUDDY_RANGE_ALLOCATION;
+	}
+
+	if (size < min_block_size)
 		/* Allocate from an offset-aligned region without size rounding */
 		return gpu_buddy_offset_aligned_allocation(mm, size,
 							   min_block_size,
 							   flags);
-	else
-		/* Allocate from freetree */
-		return alloc_from_freetree(mm, order, flags);
+
+	/* Allocate from freetree */
+	return alloc_from_freetree(mm, order, flags);
 }
 
 /**
@@ -1354,7 +1774,7 @@ int gpu_buddy_alloc_blocks(struct gpu_buddy *mm,
 		if (!IS_ALIGNED(start | end, min_block_size))
 			return -EINVAL;
 
-		return __gpu_buddy_alloc_range(mm, start, size, NULL, blocks);
+		return __gpu_buddy_alloc_range(mm, start, size, flags, NULL, blocks);
 	}
 
 	original_size = size;
@@ -1380,7 +1800,8 @@ int gpu_buddy_alloc_blocks(struct gpu_buddy *mm,
 		if ((flags & GPU_BUDDY_CONTIGUOUS_ALLOCATION) &&
 		    !(flags & GPU_BUDDY_RANGE_ALLOCATION))
 			return __alloc_contig_try_harder(mm, original_size,
-							 original_min_size, blocks);
+							 original_min_size,
+							 flags, blocks);
 
 		return -EINVAL;
 	}
@@ -1395,8 +1816,6 @@ int gpu_buddy_alloc_blocks(struct gpu_buddy *mm,
 		BUG_ON(size >= min_block_size && order < min_order);
 
 		do {
-			unsigned int fallback_order;
-
 			block = __gpu_buddy_alloc_blocks(mm, start,
 							 end,
 							 size,
@@ -1406,48 +1825,50 @@ int gpu_buddy_alloc_blocks(struct gpu_buddy *mm,
 			if (!IS_ERR(block))
 				break;
 
-			if (size < min_block_size) {
-				fallback_order = order;
-			} else if (order == min_order) {
-				fallback_order = min_order;
-			} else {
+			if (size >= min_block_size && order > min_order) {
 				order--;
 				continue;
 			}
 
-			/* Try allocation through force merge method */
-			if (mm->clear_avail &&
-			    !__force_merge(mm, start, end, fallback_order)) {
-				block = __gpu_buddy_alloc_blocks(mm, start,
-								 end,
-								 size,
-								 min_block_size,
-								 fallback_order,
-								 flags);
-				if (!IS_ERR(block)) {
-					order = fallback_order;
-					break;
-				}
-			}
-
 			/*
 			 * Try contiguous block allocation through
 			 * try harder method.
 			 */
 			if (flags & GPU_BUDDY_CONTIGUOUS_ALLOCATION &&
-			    !(flags & GPU_BUDDY_RANGE_ALLOCATION))
-				return __alloc_contig_try_harder(mm,
-								 original_size,
-								 original_min_size,
-								 blocks);
+			    !(flags & GPU_BUDDY_RANGE_ALLOCATION)) {
+				err = __alloc_contig_try_harder(mm,
+								original_size,
+								original_min_size,
+								flags,
+								blocks);
+				if (!err)
+					return 0;
+				if (err != -ENOSPC)
+					return err;
+				goto err_free;
+			}
 			err = -ENOSPC;
 			goto err_free;
 		} while (1);
 
 		mark_allocated(mm, block);
 		mm->avail -= gpu_buddy_block_size(mm, block);
-		if (gpu_buddy_block_is_clear(block))
-			mm->clear_avail -= gpu_buddy_block_size(mm, block);
+
+		block->header &= ~GPU_BUDDY_HEADER_CLEAR;
+		if (flags & GPU_BUDDY_CLEAR_ALLOCATION) {
+			enum gpu_block_state block_state;
+
+			block_state = gpu_query_block_state(&mm->dirty,
+							    gpu_buddy_block_offset(block),
+							    gpu_buddy_block_size(mm, block));
+			if (block_state == GPU_BLOCK_CLEAR)
+				block->header |= GPU_BUDDY_HEADER_CLEAR;
+		}
+
+		gpu_dirty_tracker_remove_range(&mm->dirty,
+					       gpu_buddy_block_offset(block),
+					       gpu_buddy_block_size(mm, block));
+		gpu_buddy_sync_clear_avail(mm);
 		kmemleak_update_trace(block);
 		list_add_tail(&block->link, &allocated);
 
@@ -1542,6 +1963,7 @@ EXPORT_SYMBOL(gpu_buddy_print);
 
 static void gpu_buddy_module_exit(void)
 {
+	kmem_cache_destroy(slab_extents);
 	kmem_cache_destroy(slab_blocks);
 }
 
@@ -1551,7 +1973,15 @@ static int __init gpu_buddy_module_init(void)
 	if (!slab_blocks)
 		return -ENOMEM;
 
+	slab_extents = KMEM_CACHE(gpu_dirty_extent, 0);
+	if (!slab_extents)
+		goto err_destroy_blocks;
+
 	return 0;
+
+err_destroy_blocks:
+	kmem_cache_destroy(slab_blocks);
+	return -ENOMEM;
 }
 
 module_init(gpu_buddy_module_init);
diff --git a/drivers/gpu/tests/gpu_buddy_test.c b/drivers/gpu/tests/gpu_buddy_test.c
index 7df5c2ae83bb..e31f368ada95 100644
--- a/drivers/gpu/tests/gpu_buddy_test.c
+++ b/drivers/gpu/tests/gpu_buddy_test.c
@@ -38,7 +38,7 @@ static void gpu_test_buddy_subtree_offset_alignment_stress(struct kunit *test)
 	};
 	struct list_head allocated[ARRAY_SIZE(alignments)];
 	unsigned int i, max_subtree_align = 0;
-	int ret, tree, order;
+	int ret, order;
 	struct gpu_buddy mm;
 
 	KUNIT_ASSERT_FALSE_MSG(test, gpu_buddy_init(&mm, mm_size, SZ_4K),
@@ -78,15 +78,11 @@ static void gpu_test_buddy_subtree_offset_alignment_stress(struct kunit *test)
 		}
 
 		for (order = mm.max_order; order >= 0 && !root; order--) {
-			for (tree = 0; tree < 2; tree++) {
-				node = mm.free_trees[tree][order].rb_node;
-				if (node) {
-					root = container_of(node,
-							    struct gpu_buddy_block,
-							    rb);
-					break;
-				}
-			}
+			node = mm.free_tree[order].rb_node;
+			if (node)
+				root = container_of(node,
+						    struct gpu_buddy_block,
+						    rb);
 		}
 
 		KUNIT_ASSERT_NOT_NULL(test, root);
@@ -97,15 +93,13 @@ static void gpu_test_buddy_subtree_offset_alignment_stress(struct kunit *test)
 		gpu_buddy_free_list(&mm, &allocated[i], 0);
 
 		for (order = 0; order <= mm.max_order; order++) {
-			for (tree = 0; tree < 2; tree++) {
-				node = mm.free_trees[tree][order].rb_node;
-				if (!node)
-					continue;
-
-				block = container_of(node, struct gpu_buddy_block, rb);
-				max_subtree_align = max(max_subtree_align,
-							block->subtree_max_alignment);
-			}
+			node = mm.free_tree[order].rb_node;
+			if (!node)
+				continue;
+
+			block = container_of(node, struct gpu_buddy_block, rb);
+			max_subtree_align = max(max_subtree_align,
+						block->subtree_max_alignment);
 		}
 
 		KUNIT_EXPECT_GE(test, max_subtree_align, ilog2(alignments[i]));
diff --git a/include/linux/gpu_buddy.h b/include/linux/gpu_buddy.h
index e037714563d8..79fea91d818f 100644
--- a/include/linux/gpu_buddy.h
+++ b/include/linux/gpu_buddy.h
@@ -43,8 +43,8 @@
 /**
  * GPU_BUDDY_CLEAR_ALLOCATION - Prefer pre-cleared (zeroed) memory
  *
- * Attempt to allocate from the clear tree first. If insufficient clear
- * memory is available, falls back to dirty memory. Useful when the
+ * Attempt to allocate outside dirty-tracked ranges first. If insufficient
+ * clear memory is available, falls back to dirty memory. Useful when the
  * caller needs zeroed memory and wants to avoid GPU clear operations.
  */
 #define GPU_BUDDY_CLEAR_ALLOCATION		BIT(3)
@@ -53,8 +53,8 @@
  * GPU_BUDDY_CLEARED - Mark returned blocks as cleared
  *
  * Used with gpu_buddy_free_list() to indicate that the memory being
- * freed has been cleared (zeroed). The blocks will be placed in the
- * clear tree for future GPU_BUDDY_CLEAR_ALLOCATION requests.
+ * freed has been cleared (zeroed). The blocks will be removed from the
+ * dirty tracker for future GPU_BUDDY_CLEAR_ALLOCATION requests.
  */
 #define GPU_BUDDY_CLEARED			BIT(4)
 
@@ -67,15 +67,6 @@
  */
 #define GPU_BUDDY_TRIM_DISABLE			BIT(5)
 
-enum gpu_buddy_free_tree {
-	GPU_BUDDY_CLEAR_TREE = 0,
-	GPU_BUDDY_DIRTY_TREE,
-	GPU_BUDDY_MAX_FREE_TREES,
-};
-
-#define for_each_free_tree(tree) \
-	for ((tree) = 0; (tree) < GPU_BUDDY_MAX_FREE_TREES; (tree)++)
-
 /**
  * struct gpu_buddy_block - Block within a buddy allocator
  *
@@ -103,6 +94,13 @@ struct gpu_buddy_block {
 #define   GPU_BUDDY_ALLOCATED	   (1 << 10)
 #define   GPU_BUDDY_FREE	   (2 << 10)
 #define   GPU_BUDDY_SPLIT	   (3 << 10)
+/*
+ * GPU_BUDDY_HEADER_CLEAR has two roles:
+ *  - FREE state:      set when the block's full range is cleared (dirty
+ *                     tracker confirmed no overlap).
+ *  - ALLOCATED state: set when the block was served from cleared memory,
+ *                     informing the caller that no GPU clear pass is needed.
+ */
 #define GPU_BUDDY_HEADER_CLEAR  GENMASK_ULL(9, 9)
 /* Free to be used, if needed in the future */
 #define GPU_BUDDY_HEADER_UNUSED GENMASK_ULL(8, 6)
@@ -130,11 +128,44 @@ struct gpu_buddy_block {
 /* private: */
 	struct list_head tmp_link;
 	unsigned int subtree_max_alignment;
+	bool has_clear;
+	bool subtree_has_clear;
 };
 
 /* Order-zero must be at least SZ_4K */
 #define GPU_BUDDY_MAX_ORDER (63 - 12)
 
+/**
+ * struct gpu_dirty_extent - a contiguous dirty address range
+ *
+ * Tracks a single contiguous address range whose memory content is known
+ * to be dirty.  Extents are non-overlapping and stored in an augmented
+ * red-black tree sorted by @start.  The augmented value @subtree_max_size
+ * allows O(log N) search for an extent of at least a given size.
+ */
+struct gpu_dirty_extent {
+/* private: */
+	struct rb_node	rb;
+	u64		start;
+	u64		end;
+	u64		subtree_max_size;
+};
+
+/**
+ * struct gpu_dirty_tracker - tracks dirty address intervals
+ *
+ * Maintains a set of non-overlapping dirty extents as an augmented
+ * red-black tree.
+ *
+ * @total_dirty: Total bytes of dirty memory currently tracked.
+ */
+struct gpu_dirty_tracker {
+/* private: */
+	struct rb_root	root;
+/* public: */
+	u64		total_dirty;
+};
+
 /**
  * struct gpu_buddy - GPU binary buddy allocator
  *
@@ -152,20 +183,24 @@ struct gpu_buddy_block {
  * @chunk_size: Minimum allocation granularity in bytes. Must be at least SZ_4K.
  * @size: Total size of the address space managed by this allocator in bytes.
  * @avail: Total free space currently available for allocation in bytes.
- * @clear_avail: Free space available in the clear tree (zeroed memory) in bytes.
- *               This is a subset of @avail.
+ * @clear_avail: Free space that is clear (zeroed) in bytes. A subset of @avail.
+ *               Maintained as @avail - dirty.total_dirty, since the tracker
+ *               records the dirty extents. Zero at init, as a fresh pool is
+ *               fully dirty.
  * @lock_dep_map: Annotates gpu_buddy API with a driver provided lock.
  */
 struct gpu_buddy {
 /* private: */
+	/* Tracker of dirty address ranges (decoupled from free_tree). */
+	struct gpu_dirty_tracker dirty;
 	/*
-	 * Array of red-black trees for free block management.
-	 * Indexed as free_trees[clear/dirty][order] where:
-	 * - Index 0 (GPU_BUDDY_CLEAR_TREE): blocks with zeroed content
-	 * - Index 1 (GPU_BUDDY_DIRTY_TREE): blocks with unknown content
-	 * Each tree holds free blocks of the corresponding order.
+	 * One RB-tree per order containing all free blocks (clear and
+	 * dirty alike).  The augment field subtree_has_clear lets clear
+	 * allocations find subtrees with clear inventory in O(log N).
+	 * Dirty free blocks coexist here but are also indexed by the
+	 * @dirty tracker for fast dirty allocation lookups.
 	 */
-	struct rb_root **free_trees;
+	struct rb_root *free_tree;
 	/*
 	 * Array of root blocks representing the top-level blocks of the
 	 * binary tree(s). Multiple roots exist when the total size is not

base-commit: 1f223eb221eeefcc7425881d139d9b252fba4fab
-- 
2.34.1


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

* [PATCH v5 2/2] gpu/tests/buddy: add dirty tracker performance KUnit test
  2026-07-07 14:12 [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Arunpravin Paneer Selvam
@ 2026-07-07 14:12 ` Arunpravin Paneer Selvam
  2026-07-07 14:24   ` sashiko-bot
  2026-07-07 14:22 ` ✓ CI.KUnit: success for series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Patchwork
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 10+ messages in thread
From: Arunpravin Paneer Selvam @ 2026-07-07 14:12 UTC (permalink / raw)
  To: matthew.auld, christian.koenig, dri-devel, intel-gfx, intel-xe,
	amd-gfx
  Cc: alexander.deucher, Arunpravin Paneer Selvam

Add gpu_test_buddy_dirty_tracker_performance to demonstrate the key
advantage of the decoupled dirty-tracker design over the old dual-tree
/ force_merge approach.

The test runs two scenarios on a 4 GiB pool after alternating
clear/dirty fragmentation at 4 KiB granularity:

  1. Contiguous 4 GiB alloc: the old design requires __force_merge()
     to rebuild max_order from scratch; the new design coalesces during
     free() so the alloc is O(log N).

       old (force_merge) - 71 ms
       dirty tracker design - 17 ms

  2. Repeated 256 KiB alloc throughput: the old design pays
     __force_merge() on every alloc; the new design does not.

       old (force_merge) - 95 ms
       dirty tracker design - 24 ms

Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Christian König <christian.koenig@amd.com>
Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Assisted-by: Claude:claude-opus-4-8
---
 drivers/gpu/tests/gpu_buddy_test.c | 110 +++++++++++++++++++++++++++++
 1 file changed, 110 insertions(+)

diff --git a/drivers/gpu/tests/gpu_buddy_test.c b/drivers/gpu/tests/gpu_buddy_test.c
index e31f368ada95..e37505849ecc 100644
--- a/drivers/gpu/tests/gpu_buddy_test.c
+++ b/drivers/gpu/tests/gpu_buddy_test.c
@@ -283,6 +283,115 @@ static void gpu_test_buddy_fragmentation_performance(struct kunit *test)
 	gpu_buddy_fini(&mm);
 }
 
+static void gpu_test_buddy_dirty_tracker_performance(struct kunit *test)
+{
+	struct gpu_buddy_block *block, *tmp;
+	unsigned long elapsed_ms;
+	LIST_HEAD(clear_blocks);
+	LIST_HEAD(dirty_blocks);
+	LIST_HEAD(allocated);
+	struct gpu_buddy mm;
+	LIST_HEAD(results);
+	ktime_t start, end;
+	int i, count;
+
+	/*
+	 * Contiguous alloc latency after alternating clear/dirty fragmentation
+	 *
+	 * Fill a 4 GiB pool with 4 KiB allocations, partition them into
+	 * alternating cleared and dirty sets, then free both.  In the old
+	 * dual-tree design every adjacent buddy pair has one cleared half and
+	 * one dirty half, so the pair sits on opposite sides of the clear/dirty
+	 * merge barrier and cannot be coalesced at free() time.  The pool
+	 * stays fully fragmented and the subsequent contiguous 4 GiB allocation
+	 * has to invoke __force_merge() to climb back up to max_order before
+	 * it can succeed.  With the dirty-tracker design buddy pairs coalesce
+	 * unconditionally during free(), so the pool is already at max_order
+	 * before the timed alloc begins and __force_merge() is not needed.
+	 */
+	KUNIT_ASSERT_FALSE_MSG(test, gpu_buddy_init(&mm, SZ_4G, SZ_4K),
+			       "buddy_init failed\n");
+
+	for (i = 0; i < SZ_4G / SZ_4K; i++)
+		KUNIT_ASSERT_FALSE_MSG(test,
+				       gpu_buddy_alloc_blocks(&mm, 0, SZ_4G, SZ_4K, SZ_4K,
+							      &allocated, 0),
+				       "buddy_alloc hit an error size=%u\n", SZ_4K);
+
+	count = 0;
+	list_for_each_entry_safe(block, tmp, &allocated, link) {
+		if (count++ % 2 == 0)
+			list_move_tail(&block->link, &clear_blocks);
+		else
+			list_move_tail(&block->link, &dirty_blocks);
+	}
+
+	gpu_buddy_free_list(&mm, &clear_blocks, GPU_BUDDY_CLEARED);
+	gpu_buddy_free_list(&mm, &dirty_blocks, 0);
+
+	start = ktime_get();
+	KUNIT_ASSERT_FALSE_MSG(test,
+			       gpu_buddy_alloc_blocks(&mm, 0, SZ_4G, SZ_4G, SZ_4K,
+						      &results,
+						      GPU_BUDDY_CONTIGUOUS_ALLOCATION),
+			       "contiguous alloc failed\n");
+	end = ktime_get();
+	elapsed_ms = ktime_to_ms(ktime_sub(end, start));
+
+	kunit_info(test, "Contiguous alloc after fragmentation: %lu ms\n",
+		   elapsed_ms);
+
+	gpu_buddy_free_list(&mm, &results, 0);
+	gpu_buddy_fini(&mm);
+
+	/*
+	 * Repeated alloc throughput from a maximally fragmented pool
+	 *
+	 * Fill a 4 GiB pool with 4 KiB allocations, free even-indexed blocks
+	 * as cleared and odd-indexed blocks as dirty.  The alternating pattern
+	 * ensures every adjacent buddy pair has one cleared half and one dirty
+	 * half, so each pair lands on opposite sides of the old merge barrier.
+	 * Each of the 16 384 x 256 KiB allocations in the timed loop has to
+	 * pay the __force_merge() cost on the alloc path under the old design.
+	 * With the dirty-tracker design the pool collapses to one max_order
+	 * block during free(), so each alloc is a simple O(log N) split.
+	 */
+	KUNIT_ASSERT_FALSE_MSG(test, gpu_buddy_init(&mm, SZ_4G, SZ_4K),
+			       "buddy_init failed\n");
+
+	for (i = 0; i < SZ_4G / SZ_4K; i++)
+		KUNIT_ASSERT_FALSE_MSG(test,
+				       gpu_buddy_alloc_blocks(&mm, 0, SZ_4G, SZ_4K, SZ_4K,
+							      &allocated, 0),
+				       "buddy_alloc hit an error size=%u\n", SZ_4K);
+
+	count = 0;
+	list_for_each_entry_safe(block, tmp, &allocated, link) {
+		if (count++ % 2 == 0)
+			list_move_tail(&block->link, &clear_blocks);
+		else
+			list_move_tail(&block->link, &dirty_blocks);
+	}
+
+	gpu_buddy_free_list(&mm, &clear_blocks, GPU_BUDDY_CLEARED);
+	gpu_buddy_free_list(&mm, &dirty_blocks, 0);
+
+	start = ktime_get();
+	for (i = 0; i < SZ_4G / SZ_256K; i++)
+		KUNIT_ASSERT_FALSE_MSG(test,
+				       gpu_buddy_alloc_blocks(&mm, 0, SZ_4G, SZ_256K, SZ_4K,
+							      &results, 0),
+				       "buddy_alloc hit an error size=%u\n", SZ_256K);
+	end = ktime_get();
+	elapsed_ms = ktime_to_ms(ktime_sub(end, start));
+
+	kunit_info(test, "Repeated 256 KiB allocs from fragmented pool: %lu ms\n",
+		   elapsed_ms);
+
+	gpu_buddy_free_list(&mm, &results, 0);
+	gpu_buddy_fini(&mm);
+}
+
 static void gpu_test_buddy_alloc_range_bias(struct kunit *test)
 {
 	u32 mm_size, size, ps, bias_size, bias_start, bias_end, bias_rem;
@@ -1396,6 +1505,7 @@ static struct kunit_case gpu_buddy_tests[] = {
 	KUNIT_CASE(gpu_test_buddy_alloc_range),
 	KUNIT_CASE(gpu_test_buddy_alloc_range_bias),
 	KUNIT_CASE_SLOW(gpu_test_buddy_fragmentation_performance),
+	KUNIT_CASE_SLOW(gpu_test_buddy_dirty_tracker_performance),
 	KUNIT_CASE(gpu_test_buddy_alloc_exceeds_max_order),
 	KUNIT_CASE(gpu_test_buddy_offset_aligned_allocation),
 	KUNIT_CASE(gpu_test_buddy_subtree_offset_alignment_stress),
-- 
2.34.1


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

* ✓ CI.KUnit: success for series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
  2026-07-07 14:12 [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Arunpravin Paneer Selvam
  2026-07-07 14:12 ` [PATCH v5 2/2] gpu/tests/buddy: add dirty tracker performance KUnit test Arunpravin Paneer Selvam
@ 2026-07-07 14:22 ` Patchwork
  2026-07-07 14:26 ` [PATCH v5 1/2] " sashiko-bot
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2026-07-07 14:22 UTC (permalink / raw)
  To: Arunpravin Paneer Selvam; +Cc: intel-xe

== Series Details ==

Series: series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
URL   : https://patchwork.freedesktop.org/series/169939/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[14:21:21] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:21:26] 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
../drivers/gpu/drm/xe/xe_pt.c:1430:13: warning: ‘xe_pt_svm_userptr_notifier_lock’ defined but not used [-Wunused-function]
 1430 | static void xe_pt_svm_userptr_notifier_lock(struct xe_vm *vm)
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[14:21:57] Starting KUnit Kernel (1/1)...
[14:21:57] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:21:57] ================== guc_buf (11 subtests) ===================
[14:21:57] [PASSED] test_smallest
[14:21:57] [PASSED] test_largest
[14:21:58] [PASSED] test_granular
[14:21:58] [PASSED] test_unique
[14:21:58] [PASSED] test_overlap
[14:21:58] [PASSED] test_reusable
[14:21:58] [PASSED] test_too_big
[14:21:58] [PASSED] test_flush
[14:21:58] [PASSED] test_lookup
[14:21:58] [PASSED] test_data
[14:21:58] [PASSED] test_class
[14:21:58] ===================== [PASSED] guc_buf =====================
[14:21:58] =================== guc_dbm (7 subtests) ===================
[14:21:58] [PASSED] test_empty
[14:21:58] [PASSED] test_default
[14:21:58] ======================== test_size  ========================
[14:21:58] [PASSED] 4
[14:21:58] [PASSED] 8
[14:21:58] [PASSED] 32
[14:21:58] [PASSED] 256
[14:21:58] ==================== [PASSED] test_size ====================
[14:21:58] ======================= test_reuse  ========================
[14:21:58] [PASSED] 4
[14:21:58] [PASSED] 8
[14:21:58] [PASSED] 32
[14:21:58] [PASSED] 256
[14:21:58] =================== [PASSED] test_reuse ====================
[14:21:58] =================== test_range_overlap  ====================
[14:21:58] [PASSED] 4
[14:21:58] [PASSED] 8
[14:21:58] [PASSED] 32
[14:21:58] [PASSED] 256
[14:21:58] =============== [PASSED] test_range_overlap ================
[14:21:58] =================== test_range_compact  ====================
[14:21:58] [PASSED] 4
[14:21:58] [PASSED] 8
[14:21:58] [PASSED] 32
[14:21:58] [PASSED] 256
[14:21:58] =============== [PASSED] test_range_compact ================
[14:21:58] ==================== test_range_spare  =====================
[14:21:58] [PASSED] 4
[14:21:58] [PASSED] 8
[14:21:58] [PASSED] 32
[14:21:58] [PASSED] 256
[14:21:58] ================ [PASSED] test_range_spare =================
[14:21:58] ===================== [PASSED] guc_dbm =====================
[14:21:58] =================== guc_idm (6 subtests) ===================
[14:21:58] [PASSED] bad_init
[14:21:58] [PASSED] no_init
[14:21:58] [PASSED] init_fini
[14:21:58] [PASSED] check_used
[14:21:58] [PASSED] check_quota
[14:21:58] [PASSED] check_all
[14:21:58] ===================== [PASSED] guc_idm =====================
[14:21:58] ================== no_relay (3 subtests) ===================
[14:21:58] [PASSED] xe_drops_guc2pf_if_not_ready
[14:21:58] [PASSED] xe_drops_guc2vf_if_not_ready
[14:21:58] [PASSED] xe_rejects_send_if_not_ready
[14:21:58] ==================== [PASSED] no_relay =====================
[14:21:58] ================== pf_relay (14 subtests) ==================
[14:21:58] [PASSED] pf_rejects_guc2pf_too_short
[14:21:58] [PASSED] pf_rejects_guc2pf_too_long
[14:21:58] [PASSED] pf_rejects_guc2pf_no_payload
[14:21:58] [PASSED] pf_fails_no_payload
[14:21:58] [PASSED] pf_fails_bad_origin
[14:21:58] [PASSED] pf_fails_bad_type
[14:21:58] [PASSED] pf_txn_reports_error
[14:21:58] [PASSED] pf_txn_sends_pf2guc
[14:21:58] [PASSED] pf_sends_pf2guc
[14:21:58] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[14:21:58] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[14:21:58] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[14:21:58] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[14:21:58] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[14:21:58] ==================== [PASSED] pf_relay =====================
[14:21:58] ================== vf_relay (3 subtests) ===================
[14:21:58] [PASSED] vf_rejects_guc2vf_too_short
[14:21:58] [PASSED] vf_rejects_guc2vf_too_long
[14:21:58] [PASSED] vf_rejects_guc2vf_no_payload
[14:21:58] ==================== [PASSED] vf_relay =====================
[14:21:58] ================ pf_gt_config (9 subtests) =================
[14:21:58] [PASSED] fair_contexts_1vf
[14:21:58] [PASSED] fair_doorbells_1vf
[14:21:58] [PASSED] fair_ggtt_1vf
[14:21:58] ====================== fair_vram_1vf  ======================
[14:21:58] [PASSED] 3.50 GiB
[14:21:58] [PASSED] 11.5 GiB
[14:21:58] [PASSED] 15.5 GiB
[14:21:58] [PASSED] 31.5 GiB
[14:21:58] [PASSED] 63.5 GiB
[14:21:58] [PASSED] 1.91 GiB
[14:21:58] ================== [PASSED] fair_vram_1vf ==================
[14:21:58] ================ fair_vram_1vf_admin_only  =================
[14:21:58] [PASSED] 3.50 GiB
[14:21:58] [PASSED] 11.5 GiB
[14:21:58] [PASSED] 15.5 GiB
[14:21:58] [PASSED] 31.5 GiB
[14:21:58] [PASSED] 63.5 GiB
[14:21:58] [PASSED] 1.91 GiB
[14:21:58] ============ [PASSED] fair_vram_1vf_admin_only =============
[14:21:58] ====================== fair_contexts  ======================
[14:21:58] [PASSED] 1 VF
[14:21:58] [PASSED] 2 VFs
[14:21:58] [PASSED] 3 VFs
[14:21:58] [PASSED] 4 VFs
[14:21:58] [PASSED] 5 VFs
[14:21:58] [PASSED] 6 VFs
[14:21:58] [PASSED] 7 VFs
[14:21:58] [PASSED] 8 VFs
[14:21:58] [PASSED] 9 VFs
[14:21:58] [PASSED] 10 VFs
[14:21:58] [PASSED] 11 VFs
[14:21:58] [PASSED] 12 VFs
[14:21:58] [PASSED] 13 VFs
[14:21:58] [PASSED] 14 VFs
[14:21:58] [PASSED] 15 VFs
[14:21:58] [PASSED] 16 VFs
[14:21:58] [PASSED] 17 VFs
[14:21:58] [PASSED] 18 VFs
[14:21:58] [PASSED] 19 VFs
[14:21:58] [PASSED] 20 VFs
[14:21:58] [PASSED] 21 VFs
[14:21:58] [PASSED] 22 VFs
[14:21:58] [PASSED] 23 VFs
[14:21:58] [PASSED] 24 VFs
[14:21:58] [PASSED] 25 VFs
[14:21:58] [PASSED] 26 VFs
[14:21:58] [PASSED] 27 VFs
[14:21:58] [PASSED] 28 VFs
[14:21:58] [PASSED] 29 VFs
[14:21:58] [PASSED] 30 VFs
[14:21:58] [PASSED] 31 VFs
[14:21:58] [PASSED] 32 VFs
[14:21:58] [PASSED] 33 VFs
[14:21:58] [PASSED] 34 VFs
[14:21:58] [PASSED] 35 VFs
[14:21:58] [PASSED] 36 VFs
[14:21:58] [PASSED] 37 VFs
[14:21:58] [PASSED] 38 VFs
[14:21:58] [PASSED] 39 VFs
[14:21:58] [PASSED] 40 VFs
[14:21:58] [PASSED] 41 VFs
[14:21:58] [PASSED] 42 VFs
[14:21:58] [PASSED] 43 VFs
[14:21:58] [PASSED] 44 VFs
[14:21:58] [PASSED] 45 VFs
[14:21:58] [PASSED] 46 VFs
[14:21:58] [PASSED] 47 VFs
[14:21:58] [PASSED] 48 VFs
[14:21:58] [PASSED] 49 VFs
[14:21:58] [PASSED] 50 VFs
[14:21:58] [PASSED] 51 VFs
[14:21:58] [PASSED] 52 VFs
[14:21:58] [PASSED] 53 VFs
[14:21:58] [PASSED] 54 VFs
[14:21:58] [PASSED] 55 VFs
[14:21:58] [PASSED] 56 VFs
[14:21:58] [PASSED] 57 VFs
[14:21:58] [PASSED] 58 VFs
[14:21:58] [PASSED] 59 VFs
[14:21:58] [PASSED] 60 VFs
[14:21:58] [PASSED] 61 VFs
[14:21:58] [PASSED] 62 VFs
[14:21:58] [PASSED] 63 VFs
[14:21:58] ================== [PASSED] fair_contexts ==================
[14:21:58] ===================== fair_doorbells  ======================
[14:21:58] [PASSED] 1 VF
[14:21:58] [PASSED] 2 VFs
[14:21:58] [PASSED] 3 VFs
[14:21:58] [PASSED] 4 VFs
[14:21:58] [PASSED] 5 VFs
[14:21:58] [PASSED] 6 VFs
[14:21:58] [PASSED] 7 VFs
[14:21:58] [PASSED] 8 VFs
[14:21:58] [PASSED] 9 VFs
[14:21:58] [PASSED] 10 VFs
[14:21:58] [PASSED] 11 VFs
[14:21:58] [PASSED] 12 VFs
[14:21:58] [PASSED] 13 VFs
[14:21:58] [PASSED] 14 VFs
[14:21:58] [PASSED] 15 VFs
[14:21:58] [PASSED] 16 VFs
[14:21:58] [PASSED] 17 VFs
[14:21:58] [PASSED] 18 VFs
[14:21:58] [PASSED] 19 VFs
[14:21:58] [PASSED] 20 VFs
[14:21:58] [PASSED] 21 VFs
[14:21:58] [PASSED] 22 VFs
[14:21:58] [PASSED] 23 VFs
[14:21:58] [PASSED] 24 VFs
[14:21:58] [PASSED] 25 VFs
[14:21:58] [PASSED] 26 VFs
[14:21:58] [PASSED] 27 VFs
[14:21:58] [PASSED] 28 VFs
[14:21:58] [PASSED] 29 VFs
[14:21:58] [PASSED] 30 VFs
[14:21:58] [PASSED] 31 VFs
[14:21:58] [PASSED] 32 VFs
[14:21:58] [PASSED] 33 VFs
[14:21:58] [PASSED] 34 VFs
[14:21:58] [PASSED] 35 VFs
[14:21:58] [PASSED] 36 VFs
[14:21:58] [PASSED] 37 VFs
[14:21:58] [PASSED] 38 VFs
[14:21:58] [PASSED] 39 VFs
[14:21:58] [PASSED] 40 VFs
[14:21:58] [PASSED] 41 VFs
[14:21:58] [PASSED] 42 VFs
[14:21:58] [PASSED] 43 VFs
[14:21:58] [PASSED] 44 VFs
[14:21:58] [PASSED] 45 VFs
[14:21:58] [PASSED] 46 VFs
[14:21:58] [PASSED] 47 VFs
[14:21:58] [PASSED] 48 VFs
[14:21:58] [PASSED] 49 VFs
[14:21:58] [PASSED] 50 VFs
[14:21:58] [PASSED] 51 VFs
[14:21:58] [PASSED] 52 VFs
[14:21:58] [PASSED] 53 VFs
[14:21:58] [PASSED] 54 VFs
[14:21:58] [PASSED] 55 VFs
[14:21:58] [PASSED] 56 VFs
[14:21:58] [PASSED] 57 VFs
[14:21:58] [PASSED] 58 VFs
[14:21:58] [PASSED] 59 VFs
[14:21:58] [PASSED] 60 VFs
[14:21:58] [PASSED] 61 VFs
[14:21:58] [PASSED] 62 VFs
[14:21:58] [PASSED] 63 VFs
[14:21:58] ================= [PASSED] fair_doorbells ==================
[14:21:58] ======================== fair_ggtt  ========================
[14:21:58] [PASSED] 1 VF
[14:21:58] [PASSED] 2 VFs
[14:21:58] [PASSED] 3 VFs
[14:21:58] [PASSED] 4 VFs
[14:21:58] [PASSED] 5 VFs
[14:21:58] [PASSED] 6 VFs
[14:21:58] [PASSED] 7 VFs
[14:21:58] [PASSED] 8 VFs
[14:21:58] [PASSED] 9 VFs
[14:21:58] [PASSED] 10 VFs
[14:21:58] [PASSED] 11 VFs
[14:21:58] [PASSED] 12 VFs
[14:21:58] [PASSED] 13 VFs
[14:21:58] [PASSED] 14 VFs
[14:21:58] [PASSED] 15 VFs
[14:21:58] [PASSED] 16 VFs
[14:21:58] [PASSED] 17 VFs
[14:21:58] [PASSED] 18 VFs
[14:21:58] [PASSED] 19 VFs
[14:21:58] [PASSED] 20 VFs
[14:21:58] [PASSED] 21 VFs
[14:21:58] [PASSED] 22 VFs
[14:21:58] [PASSED] 23 VFs
[14:21:58] [PASSED] 24 VFs
[14:21:58] [PASSED] 25 VFs
[14:21:58] [PASSED] 26 VFs
[14:21:58] [PASSED] 27 VFs
[14:21:58] [PASSED] 28 VFs
[14:21:58] [PASSED] 29 VFs
[14:21:58] [PASSED] 30 VFs
[14:21:58] [PASSED] 31 VFs
[14:21:58] [PASSED] 32 VFs
[14:21:58] [PASSED] 33 VFs
[14:21:58] [PASSED] 34 VFs
[14:21:58] [PASSED] 35 VFs
[14:21:58] [PASSED] 36 VFs
[14:21:58] [PASSED] 37 VFs
[14:21:58] [PASSED] 38 VFs
[14:21:58] [PASSED] 39 VFs
[14:21:58] [PASSED] 40 VFs
[14:21:58] [PASSED] 41 VFs
[14:21:58] [PASSED] 42 VFs
[14:21:58] [PASSED] 43 VFs
[14:21:58] [PASSED] 44 VFs
[14:21:58] [PASSED] 45 VFs
[14:21:58] [PASSED] 46 VFs
[14:21:58] [PASSED] 47 VFs
[14:21:58] [PASSED] 48 VFs
[14:21:58] [PASSED] 49 VFs
[14:21:58] [PASSED] 50 VFs
[14:21:58] [PASSED] 51 VFs
[14:21:58] [PASSED] 52 VFs
[14:21:58] [PASSED] 53 VFs
[14:21:58] [PASSED] 54 VFs
[14:21:58] [PASSED] 55 VFs
[14:21:58] [PASSED] 56 VFs
[14:21:58] [PASSED] 57 VFs
[14:21:58] [PASSED] 58 VFs
[14:21:58] [PASSED] 59 VFs
[14:21:58] [PASSED] 60 VFs
[14:21:58] [PASSED] 61 VFs
[14:21:58] [PASSED] 62 VFs
[14:21:58] [PASSED] 63 VFs
[14:21:58] ==================== [PASSED] fair_ggtt ====================
[14:21:58] ======================== fair_vram  ========================
[14:21:58] [PASSED] 1 VF
[14:21:58] [PASSED] 2 VFs
[14:21:58] [PASSED] 3 VFs
[14:21:58] [PASSED] 4 VFs
[14:21:58] [PASSED] 5 VFs
[14:21:58] [PASSED] 6 VFs
[14:21:58] [PASSED] 7 VFs
[14:21:58] [PASSED] 8 VFs
[14:21:58] [PASSED] 9 VFs
[14:21:58] [PASSED] 10 VFs
[14:21:58] [PASSED] 11 VFs
[14:21:58] [PASSED] 12 VFs
[14:21:58] [PASSED] 13 VFs
[14:21:58] [PASSED] 14 VFs
[14:21:58] [PASSED] 15 VFs
[14:21:58] [PASSED] 16 VFs
[14:21:58] [PASSED] 17 VFs
[14:21:58] [PASSED] 18 VFs
[14:21:58] [PASSED] 19 VFs
[14:21:58] [PASSED] 20 VFs
[14:21:58] [PASSED] 21 VFs
[14:21:58] [PASSED] 22 VFs
[14:21:58] [PASSED] 23 VFs
[14:21:58] [PASSED] 24 VFs
[14:21:58] [PASSED] 25 VFs
[14:21:58] [PASSED] 26 VFs
[14:21:58] [PASSED] 27 VFs
[14:21:58] [PASSED] 28 VFs
[14:21:58] [PASSED] 29 VFs
[14:21:58] [PASSED] 30 VFs
[14:21:58] [PASSED] 31 VFs
[14:21:58] [PASSED] 32 VFs
[14:21:58] [PASSED] 33 VFs
[14:21:58] [PASSED] 34 VFs
[14:21:58] [PASSED] 35 VFs
[14:21:58] [PASSED] 36 VFs
[14:21:58] [PASSED] 37 VFs
[14:21:58] [PASSED] 38 VFs
[14:21:58] [PASSED] 39 VFs
[14:21:58] [PASSED] 40 VFs
[14:21:58] [PASSED] 41 VFs
[14:21:58] [PASSED] 42 VFs
[14:21:58] [PASSED] 43 VFs
[14:21:58] [PASSED] 44 VFs
[14:21:58] [PASSED] 45 VFs
[14:21:58] [PASSED] 46 VFs
[14:21:58] [PASSED] 47 VFs
[14:21:58] [PASSED] 48 VFs
[14:21:58] [PASSED] 49 VFs
[14:21:58] [PASSED] 50 VFs
[14:21:58] [PASSED] 51 VFs
[14:21:58] [PASSED] 52 VFs
[14:21:58] [PASSED] 53 VFs
[14:21:58] [PASSED] 54 VFs
[14:21:58] [PASSED] 55 VFs
[14:21:58] [PASSED] 56 VFs
[14:21:58] [PASSED] 57 VFs
[14:21:58] [PASSED] 58 VFs
[14:21:58] [PASSED] 59 VFs
[14:21:58] [PASSED] 60 VFs
[14:21:58] [PASSED] 61 VFs
[14:21:58] [PASSED] 62 VFs
[14:21:58] [PASSED] 63 VFs
[14:21:58] ==================== [PASSED] fair_vram ====================
[14:21:58] ================== [PASSED] pf_gt_config ===================
[14:21:58] ===================== lmtt (1 subtest) =====================
[14:21:58] ======================== test_ops  =========================
[14:21:58] [PASSED] 2-level
[14:21:58] [PASSED] multi-level
[14:21:58] ==================== [PASSED] test_ops =====================
[14:21:58] ====================== [PASSED] lmtt =======================
[14:21:58] ================= pf_service (11 subtests) =================
[14:21:58] [PASSED] pf_negotiate_any
[14:21:58] [PASSED] pf_negotiate_base_match
[14:21:58] [PASSED] pf_negotiate_base_newer
[14:21:58] [PASSED] pf_negotiate_base_next
[14:21:58] [SKIPPED] pf_negotiate_base_older (no older minor)
[14:21:58] [PASSED] pf_negotiate_base_prev
[14:21:58] [PASSED] pf_negotiate_latest_match
[14:21:58] [PASSED] pf_negotiate_latest_newer
[14:21:58] [PASSED] pf_negotiate_latest_next
[14:21:58] [SKIPPED] pf_negotiate_latest_older (no older minor)
[14:21:58] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[14:21:58] =================== [PASSED] pf_service ====================
[14:21:58] ================= xe_guc_g2g (2 subtests) ==================
[14:21:58] ============== xe_live_guc_g2g_kunit_default  ==============
[14:21:58] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[14:21:58] ============== xe_live_guc_g2g_kunit_allmem  ===============
[14:21:58] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[14:21:58] =================== [SKIPPED] xe_guc_g2g ===================
[14:21:58] =================== xe_mocs (2 subtests) ===================
[14:21:58] ================ xe_live_mocs_kernel_kunit  ================
[14:21:58] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[14:21:58] ================ xe_live_mocs_reset_kunit  =================
[14:21:58] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[14:21:58] ==================== [SKIPPED] xe_mocs =====================
[14:21:58] ================= xe_migrate (2 subtests) ==================
[14:21:58] ================= xe_migrate_sanity_kunit  =================
[14:21:58] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[14:21:58] ================== xe_validate_ccs_kunit  ==================
[14:21:58] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[14:21:58] =================== [SKIPPED] xe_migrate ===================
[14:21:58] ================== xe_dma_buf (1 subtest) ==================
[14:21:58] ==================== xe_dma_buf_kunit  =====================
[14:21:58] ================ [SKIPPED] xe_dma_buf_kunit ================
[14:21:58] =================== [SKIPPED] xe_dma_buf ===================
[14:21:58] ================= xe_bo_shrink (1 subtest) =================
[14:21:58] =================== xe_bo_shrink_kunit  ====================
[14:21:58] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[14:21:58] ================== [SKIPPED] xe_bo_shrink ==================
[14:21:58] ==================== xe_bo (2 subtests) ====================
[14:21:58] ================== xe_ccs_migrate_kunit  ===================
[14:21:58] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[14:21:58] ==================== xe_bo_evict_kunit  ====================
[14:21:58] =============== [SKIPPED] xe_bo_evict_kunit ================
[14:21:58] ===================== [SKIPPED] xe_bo ======================
[14:21:58] ==================== args (13 subtests) ====================
[14:21:58] [PASSED] count_args_test
[14:21:58] [PASSED] call_args_example
[14:21:58] [PASSED] call_args_test
[14:21:58] [PASSED] drop_first_arg_example
[14:21:58] [PASSED] drop_first_arg_test
[14:21:58] [PASSED] first_arg_example
[14:21:58] [PASSED] first_arg_test
[14:21:58] [PASSED] last_arg_example
[14:21:58] [PASSED] last_arg_test
[14:21:58] [PASSED] pick_arg_example
[14:21:58] [PASSED] if_args_example
[14:21:58] [PASSED] if_args_test
[14:21:58] [PASSED] sep_comma_example
[14:21:58] ====================== [PASSED] args =======================
[14:21:58] =================== xe_pci (3 subtests) ====================
[14:21:58] ==================== check_graphics_ip  ====================
[14:21:58] [PASSED] 12.00 Xe_LP
[14:21:58] [PASSED] 12.10 Xe_LP+
[14:21:58] [PASSED] 12.55 Xe_HPG
[14:21:58] [PASSED] 12.60 Xe_HPC
[14:21:58] [PASSED] 12.70 Xe_LPG
[14:21:58] [PASSED] 12.71 Xe_LPG
[14:21:58] [PASSED] 12.74 Xe_LPG+
[14:21:58] [PASSED] 20.01 Xe2_HPG
[14:21:58] [PASSED] 20.02 Xe2_HPG
[14:21:58] [PASSED] 20.04 Xe2_LPG
[14:21:58] [PASSED] 30.00 Xe3_LPG
[14:21:58] [PASSED] 30.01 Xe3_LPG
[14:21:58] [PASSED] 30.03 Xe3_LPG
[14:21:58] [PASSED] 30.04 Xe3_LPG
[14:21:58] [PASSED] 30.05 Xe3_LPG
[14:21:58] [PASSED] 35.10 Xe3p_LPG
[14:21:58] [PASSED] 35.11 Xe3p_XPC
[14:21:58] ================ [PASSED] check_graphics_ip ================
[14:21:58] ===================== check_media_ip  ======================
[14:21:58] [PASSED] 12.00 Xe_M
[14:21:58] [PASSED] 12.55 Xe_HPM
[14:21:58] [PASSED] 13.00 Xe_LPM+
[14:21:58] [PASSED] 13.01 Xe2_HPM
[14:21:58] [PASSED] 20.00 Xe2_LPM
[14:21:58] [PASSED] 30.00 Xe3_LPM
[14:21:58] [PASSED] 30.02 Xe3_LPM
[14:21:58] [PASSED] 35.00 Xe3p_LPM
[14:21:58] [PASSED] 35.03 Xe3p_HPM
[14:21:58] ================= [PASSED] check_media_ip ==================
[14:21:58] =================== check_platform_desc  ===================
[14:21:58] [PASSED] 0x9A60 (TIGERLAKE)
[14:21:58] [PASSED] 0x9A68 (TIGERLAKE)
[14:21:58] [PASSED] 0x9A70 (TIGERLAKE)
[14:21:58] [PASSED] 0x9A40 (TIGERLAKE)
[14:21:58] [PASSED] 0x9A49 (TIGERLAKE)
[14:21:58] [PASSED] 0x9A59 (TIGERLAKE)
[14:21:58] [PASSED] 0x9A78 (TIGERLAKE)
[14:21:58] [PASSED] 0x9AC0 (TIGERLAKE)
[14:21:58] [PASSED] 0x9AC9 (TIGERLAKE)
[14:21:58] [PASSED] 0x9AD9 (TIGERLAKE)
[14:21:58] [PASSED] 0x9AF8 (TIGERLAKE)
[14:21:58] [PASSED] 0x4C80 (ROCKETLAKE)
[14:21:58] [PASSED] 0x4C8A (ROCKETLAKE)
[14:21:58] [PASSED] 0x4C8B (ROCKETLAKE)
[14:21:58] [PASSED] 0x4C8C (ROCKETLAKE)
[14:21:58] [PASSED] 0x4C90 (ROCKETLAKE)
[14:21:58] [PASSED] 0x4C9A (ROCKETLAKE)
[14:21:58] [PASSED] 0x4680 (ALDERLAKE_S)
[14:21:58] [PASSED] 0x4682 (ALDERLAKE_S)
[14:21:58] [PASSED] 0x4688 (ALDERLAKE_S)
[14:21:58] [PASSED] 0x468A (ALDERLAKE_S)
[14:21:58] [PASSED] 0x468B (ALDERLAKE_S)
[14:21:58] [PASSED] 0x4690 (ALDERLAKE_S)
[14:21:58] [PASSED] 0x4692 (ALDERLAKE_S)
[14:21:58] [PASSED] 0x4693 (ALDERLAKE_S)
[14:21:58] [PASSED] 0x46A0 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46A1 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46A2 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46A3 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46A6 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46A8 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46AA (ALDERLAKE_P)
[14:21:58] [PASSED] 0x462A (ALDERLAKE_P)
[14:21:58] [PASSED] 0x4626 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x4628 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46B0 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46B1 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46B2 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46B3 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46C0 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46C1 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46C2 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46C3 (ALDERLAKE_P)
[14:21:58] [PASSED] 0x46D0 (ALDERLAKE_N)
[14:21:58] [PASSED] 0x46D1 (ALDERLAKE_N)
[14:21:58] [PASSED] 0x46D2 (ALDERLAKE_N)
[14:21:58] [PASSED] 0x46D3 (ALDERLAKE_N)
[14:21:58] [PASSED] 0x46D4 (ALDERLAKE_N)
[14:21:58] [PASSED] 0xA721 (ALDERLAKE_P)
[14:21:58] [PASSED] 0xA7A1 (ALDERLAKE_P)
[14:21:58] [PASSED] 0xA7A9 (ALDERLAKE_P)
[14:21:58] [PASSED] 0xA7AC (ALDERLAKE_P)
[14:21:58] [PASSED] 0xA7AD (ALDERLAKE_P)
[14:21:58] [PASSED] 0xA720 (ALDERLAKE_P)
[14:21:58] [PASSED] 0xA7A0 (ALDERLAKE_P)
[14:21:58] [PASSED] 0xA7A8 (ALDERLAKE_P)
[14:21:58] [PASSED] 0xA7AA (ALDERLAKE_P)
[14:21:58] [PASSED] 0xA7AB (ALDERLAKE_P)
[14:21:58] [PASSED] 0xA780 (ALDERLAKE_S)
[14:21:58] [PASSED] 0xA781 (ALDERLAKE_S)
[14:21:58] [PASSED] 0xA782 (ALDERLAKE_S)
[14:21:58] [PASSED] 0xA783 (ALDERLAKE_S)
[14:21:58] [PASSED] 0xA788 (ALDERLAKE_S)
[14:21:58] [PASSED] 0xA789 (ALDERLAKE_S)
[14:21:58] [PASSED] 0xA78A (ALDERLAKE_S)
[14:21:58] [PASSED] 0xA78B (ALDERLAKE_S)
[14:21:58] [PASSED] 0x4905 (DG1)
[14:21:58] [PASSED] 0x4906 (DG1)
[14:21:58] [PASSED] 0x4907 (DG1)
[14:21:58] [PASSED] 0x4908 (DG1)
[14:21:58] [PASSED] 0x4909 (DG1)
[14:21:58] [PASSED] 0x56C0 (DG2)
[14:21:58] [PASSED] 0x56C2 (DG2)
[14:21:58] [PASSED] 0x56C1 (DG2)
[14:21:58] [PASSED] 0x7D51 (METEORLAKE)
[14:21:58] [PASSED] 0x7DD1 (METEORLAKE)
[14:21:58] [PASSED] 0x7D41 (METEORLAKE)
[14:21:58] [PASSED] 0x7D67 (METEORLAKE)
[14:21:58] [PASSED] 0xB640 (METEORLAKE)
[14:21:58] [PASSED] 0x56A0 (DG2)
[14:21:58] [PASSED] 0x56A1 (DG2)
[14:21:58] [PASSED] 0x56A2 (DG2)
[14:21:58] [PASSED] 0x56BE (DG2)
[14:21:58] [PASSED] 0x56BF (DG2)
[14:21:58] [PASSED] 0x5690 (DG2)
[14:21:58] [PASSED] 0x5691 (DG2)
[14:21:58] [PASSED] 0x5692 (DG2)
[14:21:58] [PASSED] 0x56A5 (DG2)
[14:21:58] [PASSED] 0x56A6 (DG2)
[14:21:58] [PASSED] 0x56B0 (DG2)
[14:21:58] [PASSED] 0x56B1 (DG2)
[14:21:58] [PASSED] 0x56BA (DG2)
[14:21:58] [PASSED] 0x56BB (DG2)
[14:21:58] [PASSED] 0x56BC (DG2)
[14:21:58] [PASSED] 0x56BD (DG2)
[14:21:58] [PASSED] 0x5693 (DG2)
[14:21:58] [PASSED] 0x5694 (DG2)
[14:21:58] [PASSED] 0x5695 (DG2)
[14:21:58] [PASSED] 0x56A3 (DG2)
[14:21:58] [PASSED] 0x56A4 (DG2)
[14:21:58] [PASSED] 0x56B2 (DG2)
[14:21:58] [PASSED] 0x56B3 (DG2)
[14:21:58] [PASSED] 0x5696 (DG2)
[14:21:58] [PASSED] 0x5697 (DG2)
[14:21:58] [PASSED] 0xB69 (PVC)
[14:21:58] [PASSED] 0xB6E (PVC)
[14:21:58] [PASSED] 0xBD4 (PVC)
[14:21:58] [PASSED] 0xBD5 (PVC)
[14:21:58] [PASSED] 0xBD6 (PVC)
[14:21:58] [PASSED] 0xBD7 (PVC)
[14:21:58] [PASSED] 0xBD8 (PVC)
[14:21:58] [PASSED] 0xBD9 (PVC)
[14:21:58] [PASSED] 0xBDA (PVC)
[14:21:58] [PASSED] 0xBDB (PVC)
[14:21:58] [PASSED] 0xBE0 (PVC)
[14:21:58] [PASSED] 0xBE1 (PVC)
[14:21:58] [PASSED] 0xBE5 (PVC)
[14:21:58] [PASSED] 0x7D40 (METEORLAKE)
[14:21:58] [PASSED] 0x7D45 (METEORLAKE)
[14:21:58] [PASSED] 0x7D55 (METEORLAKE)
[14:21:58] [PASSED] 0x7D60 (METEORLAKE)
[14:21:58] [PASSED] 0x7DD5 (METEORLAKE)
[14:21:58] [PASSED] 0x6420 (LUNARLAKE)
[14:21:58] [PASSED] 0x64A0 (LUNARLAKE)
[14:21:58] [PASSED] 0x64B0 (LUNARLAKE)
[14:21:58] [PASSED] 0xE202 (BATTLEMAGE)
[14:21:58] [PASSED] 0xE209 (BATTLEMAGE)
[14:21:58] [PASSED] 0xE20B (BATTLEMAGE)
[14:21:58] [PASSED] 0xE20C (BATTLEMAGE)
[14:21:58] [PASSED] 0xE20D (BATTLEMAGE)
[14:21:58] [PASSED] 0xE210 (BATTLEMAGE)
[14:21:58] [PASSED] 0xE211 (BATTLEMAGE)
[14:21:58] [PASSED] 0xE212 (BATTLEMAGE)
[14:21:58] [PASSED] 0xE216 (BATTLEMAGE)
[14:21:58] [PASSED] 0xE220 (BATTLEMAGE)
[14:21:58] [PASSED] 0xE221 (BATTLEMAGE)
[14:21:58] [PASSED] 0xE222 (BATTLEMAGE)
[14:21:58] [PASSED] 0xE223 (BATTLEMAGE)
[14:21:58] [PASSED] 0xB080 (PANTHERLAKE)
[14:21:58] [PASSED] 0xB081 (PANTHERLAKE)
[14:21:58] [PASSED] 0xB082 (PANTHERLAKE)
[14:21:58] [PASSED] 0xB083 (PANTHERLAKE)
[14:21:58] [PASSED] 0xB084 (PANTHERLAKE)
[14:21:58] [PASSED] 0xB085 (PANTHERLAKE)
[14:21:58] [PASSED] 0xB086 (PANTHERLAKE)
[14:21:58] [PASSED] 0xB087 (PANTHERLAKE)
[14:21:58] [PASSED] 0xB08F (PANTHERLAKE)
[14:21:58] [PASSED] 0xB090 (PANTHERLAKE)
[14:21:58] [PASSED] 0xB0A0 (PANTHERLAKE)
[14:21:58] [PASSED] 0xB0B0 (PANTHERLAKE)
[14:21:58] [PASSED] 0xFD80 (PANTHERLAKE)
[14:21:58] [PASSED] 0xFD81 (PANTHERLAKE)
[14:21:58] [PASSED] 0xD740 (NOVALAKE_S)
[14:21:58] [PASSED] 0xD741 (NOVALAKE_S)
[14:21:58] [PASSED] 0xD742 (NOVALAKE_S)
[14:21:58] [PASSED] 0xD743 (NOVALAKE_S)
[14:21:58] [PASSED] 0xD745 (NOVALAKE_S)
[14:21:58] [PASSED] 0xD74A (NOVALAKE_S)
[14:21:58] [PASSED] 0xD74B (NOVALAKE_S)
[14:21:58] [PASSED] 0x674C (CRESCENTISLAND)
[14:21:58] [PASSED] 0x674D (CRESCENTISLAND)
[14:21:58] [PASSED] 0x674E (CRESCENTISLAND)
[14:21:58] [PASSED] 0x674F (CRESCENTISLAND)
[14:21:58] [PASSED] 0x6750 (CRESCENTISLAND)
[14:21:58] [PASSED] 0xD750 (NOVALAKE_P)
[14:21:58] [PASSED] 0xD751 (NOVALAKE_P)
[14:21:58] [PASSED] 0xD752 (NOVALAKE_P)
[14:21:58] [PASSED] 0xD753 (NOVALAKE_P)
[14:21:58] [PASSED] 0xD754 (NOVALAKE_P)
[14:21:58] [PASSED] 0xD755 (NOVALAKE_P)
[14:21:58] [PASSED] 0xD756 (NOVALAKE_P)
[14:21:58] [PASSED] 0xD757 (NOVALAKE_P)
[14:21:58] [PASSED] 0xD75F (NOVALAKE_P)
[14:21:58] =============== [PASSED] check_platform_desc ===============
[14:21:58] ===================== [PASSED] xe_pci ======================
[14:21:58] ============= xe_rtp_tables_test (5 subtests) ==============
[14:21:58] ================== xe_rtp_table_gt_test  ===================
[14:21:58] [PASSED] gt_was/14011060649
[14:21:58] [PASSED] gt_was/14011059788
[14:21:58] [PASSED] gt_was/14015795083
[14:21:58] [PASSED] gt_was/16021867713
[14:21:58] [PASSED] gt_was/14019449301
[14:21:58] [PASSED] gt_was/16028005424
[14:21:58] [PASSED] gt_was/14026578760
[14:21:58] [PASSED] gt_was/1409420604
[14:21:58] [PASSED] gt_was/1408615072
[14:21:58] [PASSED] gt_was/22010523718
[14:21:58] [PASSED] gt_was/14011006942
[14:21:58] [PASSED] gt_was/14014830051
[14:21:58] [PASSED] gt_was/18018781329
[14:21:58] [PASSED] gt_was/1509235366
[14:21:58] [PASSED] gt_was/18018781329
[14:21:58] [PASSED] gt_was/16016694945
[14:21:58] [PASSED] gt_was/14018575942
[14:21:58] [PASSED] gt_was/22016670082
[14:21:58] [PASSED] gt_was/22016670082
[14:21:58] [PASSED] gt_was/14017421178
[14:21:58] [PASSED] gt_was/16025250150
[14:21:58] [PASSED] gt_was/14021871409
[14:21:58] [PASSED] gt_was/16021865536
[14:21:58] [PASSED] gt_was/14021486841
[14:21:58] [PASSED] gt_was/14025160223
[14:21:58] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[14:21:58] [PASSED] gt_was/14025635424
[14:21:58] [PASSED] gt_was/16028005424
[14:21:58] ============== [PASSED] xe_rtp_table_gt_test ===============
[14:21:58] ================== xe_rtp_table_gt_test  ===================
[14:21:58] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[14:21:58] [PASSED] gt_tunings/Tuning: 32B Access Enable
[14:21:58] [PASSED] gt_tunings/Tuning: L3 cache
[14:21:58] [PASSED] gt_tunings/Tuning: L3 cache - media
[14:21:58] [PASSED] gt_tunings/Tuning: Compression Overfetch
[14:21:58] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[14:21:58] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[14:21:58] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[14:21:58] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[14:21:58] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[14:21:58] [PASSED] gt_tunings/Tuning: Stateless compression control
[14:21:58] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[14:21:58] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[14:21:58] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[14:21:58] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[14:21:58] ============== [PASSED] xe_rtp_table_gt_test ===============
[14:21:58] ================== xe_rtp_table_oob_test  ==================
[14:21:58] [PASSED] oob_was/1607983814
[14:21:58] [PASSED] oob_was/16010904313
[14:21:58] [PASSED] oob_was/18022495364
[14:21:58] [PASSED] oob_was/22012773006
[14:21:58] [PASSED] oob_was/14014475959
[14:21:58] [PASSED] oob_was/22011391025
[14:21:58] [PASSED] oob_was/22012727170
[14:21:58] [PASSED] oob_was/22012727685
[14:21:58] [PASSED] oob_was/22016596838
[14:21:58] [PASSED] oob_was/18020744125
[14:21:58] [PASSED] oob_was/1409600907
[14:21:58] [PASSED] oob_was/22014953428
[14:21:58] [PASSED] oob_was/16017236439
[14:21:58] [PASSED] oob_was/14019821291
[14:21:58] [PASSED] oob_was/14015076503
[14:21:58] [PASSED] oob_was/14018913170
[14:21:58] [PASSED] oob_was/14018094691
[14:21:58] [PASSED] oob_was/18024947630
[14:21:58] [PASSED] oob_was/16022287689
[14:21:58] [PASSED] oob_was/13011645652
[14:21:58] [PASSED] oob_was/14022293748
[14:21:58] [PASSED] oob_was/22019794406
[14:21:58] [PASSED] oob_was/22019338487
[14:21:58] [PASSED] oob_was/16023588340
[14:21:58] [PASSED] oob_was/14019789679
[14:21:58] [PASSED] oob_was/14022866841
[14:21:58] [PASSED] oob_was/16021333562
[14:21:58] [PASSED] oob_was/14016712196
[14:21:58] [PASSED] oob_was/14015568240
[14:21:58] [PASSED] oob_was/18013179988
[14:21:58] [PASSED] oob_was/1508761755
[14:21:58] [PASSED] oob_was/16023105232
[14:21:58] [PASSED] oob_was/16026508708
[14:21:58] [PASSED] oob_was/14020001231
[14:21:58] [PASSED] oob_was/16023683509
[14:21:58] [PASSED] oob_was/14025515070
[14:21:58] [PASSED] oob_was/15015404425_disable
[14:21:58] [PASSED] oob_was/16026007364
[14:21:58] [PASSED] oob_was/14020316580
[14:21:58] [PASSED] oob_was/14025883347
[14:21:58] [PASSED] oob_was/16029380221
[14:21:58] ============== [PASSED] xe_rtp_table_oob_test ==============
[14:21:58] ================ xe_rtp_table_dev_oob_test  ================
[14:21:58] [PASSED] device_oob_was/22010954014
[14:21:58] [PASSED] device_oob_was/15015404425
[14:21:58] [PASSED] device_oob_was/22019338487_display
[14:21:58] [PASSED] device_oob_was/14022085890
[14:21:58] [PASSED] device_oob_was/14026539277
[14:21:58] [PASSED] device_oob_was/14026633728
[14:21:58] [PASSED] device_oob_was/14026746987
[14:21:58] [PASSED] device_oob_was/14026779378
[14:21:58] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[14:21:58] ========== xe_rtp_table_missing_upper_bound_test  ==========
[14:21:58] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[14:21:58] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[14:21:58] [PASSED] register_whitelist/1806527549
[14:21:58] [PASSED] register_whitelist/allow_read_ctx_timestamp
[14:21:58] [PASSED] register_whitelist/allow_read_queue_timestamp
[14:21:58] [PASSED] register_whitelist/16014440446
[14:21:58] [PASSED] register_whitelist/16017236439
[14:21:58] [PASSED] register_whitelist/16020183090
[14:21:58] [PASSED] register_whitelist/14024997852
[14:21:58] [PASSED] register_whitelist/14024997852
[14:21:58] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[14:21:58] =============== [PASSED] xe_rtp_tables_test ================
[14:21:58] =================== xe_rtp (3 subtests) ====================
[14:21:58] =================== xe_rtp_rules_tests  ====================
[14:21:58] [PASSED] no
[14:21:58] [PASSED] yes
[14:21:58] [PASSED] no-and-no
[14:21:58] [PASSED] no-and-yes
[14:21:58] [PASSED] yes-and-no
[14:21:58] [PASSED] yes-and-yes
[14:21:58] [PASSED] no-or-no
[14:21:58] [PASSED] no-or-yes
[14:21:58] [PASSED] yes-or-no
[14:21:58] [PASSED] yes-or-yes
[14:21:58] [PASSED] no-yes-or-yes-no
[14:21:58] [PASSED] no-yes-or-yes-yes
[14:21:58] [PASSED] yes-yes-or-no-yes
[14:21:58] [PASSED] yes-yes-or-yes-yes
[14:21:58] [PASSED] no-no-or-yes-or-no
[14:21:58] [PASSED] or
[14:21:58] [PASSED] or-yes
[14:21:58] [PASSED] or-no
[14:21:58] [PASSED] yes-or
[14:21:58] [PASSED] no-or
[14:21:58] [PASSED] no-or-or-yes
[14:21:58] [PASSED] yes-or-or-no
[14:21:58] [PASSED] no-or-or-no
[14:21:58] [PASSED] missing-context-engine-class
[14:21:58] [PASSED] missing-context-engine-class-or-yes
[14:21:58] [PASSED] missing-context-engine-class-or-or-yes
[14:21:58] =============== [PASSED] xe_rtp_rules_tests ================
[14:21:58] =============== xe_rtp_process_to_sr_tests  ================
[14:21:58] [PASSED] coalesce-same-reg
[14:21:58] [PASSED] coalesce-same-reg-literal-and-func
[14:21:58] [PASSED] no-match-no-add
[14:21:58] [PASSED] two-regs-two-entries
[14:21:58] [PASSED] clr-one-set-other
[14:21:58] [PASSED] set-field
[14:21:58] [PASSED] conflict-duplicate
[14:21:58] [PASSED] conflict-not-disjoint
[14:21:58] [PASSED] conflict-not-disjoint-literal-and-func
[14:21:58] [PASSED] conflict-reg-type
[14:21:58] [PASSED] bad-mcr-reg-forced-to-regular
[14:21:58] [PASSED] bad-regular-reg-forced-to-mcr
[14:21:58] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[14:21:58] ================== xe_rtp_process_tests  ===================
[14:21:58] [PASSED] active1
[14:21:58] [PASSED] active2
[14:21:58] [PASSED] active-inactive
[14:21:58] [PASSED] inactive-active
[14:21:58] [PASSED] inactive-active-inactive
[14:21:58] [PASSED] inactive-inactive-inactive
[14:21:58] ============== [PASSED] xe_rtp_process_tests ===============
[14:21:58] ===================== [PASSED] xe_rtp ======================
[14:21:58] ==================== xe_wa (1 subtest) =====================
[14:21:58] ======================== xe_wa_gt  =========================
[14:21:58] [PASSED] TIGERLAKE B0
[14:21:58] [PASSED] DG1 A0
[14:21:58] [PASSED] DG1 B0
[14:21:58] [PASSED] ALDERLAKE_S A0
[14:21:58] [PASSED] ALDERLAKE_S B0
[14:21:58] [PASSED] ALDERLAKE_S C0
[14:21:58] [PASSED] ALDERLAKE_S D0
[14:21:58] [PASSED] ALDERLAKE_P A0
[14:21:58] [PASSED] ALDERLAKE_P B0
[14:21:58] [PASSED] ALDERLAKE_P C0
[14:21:58] [PASSED] ALDERLAKE_S RPLS D0
[14:21:58] [PASSED] ALDERLAKE_P RPLU E0
[14:21:58] [PASSED] DG2 G10 C0
[14:21:58] [PASSED] DG2 G11 B1
[14:21:58] [PASSED] DG2 G12 A1
[14:21:58] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[14:21:58] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[14:21:58] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[14:21:58] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[14:21:58] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[14:21:58] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[14:21:58] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[14:21:58] ==================== [PASSED] xe_wa_gt =====================
[14:21:58] ====================== [PASSED] xe_wa ======================
[14:21:58] ============================================================
[14:21:58] Testing complete. Ran 729 tests: passed: 711, skipped: 18
[14:21:58] Elapsed time: 36.717s total, 4.424s configuring, 31.625s building, 0.645s running

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

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

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



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

* Re: [PATCH v5 2/2] gpu/tests/buddy: add dirty tracker performance KUnit test
  2026-07-07 14:12 ` [PATCH v5 2/2] gpu/tests/buddy: add dirty tracker performance KUnit test Arunpravin Paneer Selvam
@ 2026-07-07 14:24   ` sashiko-bot
  0 siblings, 0 replies; 10+ messages in thread
From: sashiko-bot @ 2026-07-07 14:24 UTC (permalink / raw)
  To: Arunpravin Paneer Selvam; +Cc: dri-devel

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Resource exhaustion (OOM) due to massive allocation loop in KUnit test
--

--- Patch [2]: [PATCH v5 2/2] gpu/tests/buddy: add dirty tracker performance KUnit test ---
commit 227b33731ff64ce8294c937aa003f6e17a7481ed
Author: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>

gpu/tests/buddy: add dirty tracker performance KUnit test

This commit adds a new KUnit test to demonstrate the performance advantage of the decoupled dirty-tracker design. The test runs two scenarios on a 4 GiB pool with 4 KiB allocations to evaluate contiguous and repeated allocation latency.

> diff --git a/drivers/gpu/tests/gpu_buddy_test.c b/drivers/gpu/tests/gpu_buddy_test.c
> index e31f368ada951..e37505849ecc7 100644
> --- a/drivers/gpu/tests/gpu_buddy_test.c
> +++ b/drivers/gpu/tests/gpu_buddy_test.c
[ ... ]
> +static void gpu_test_buddy_dirty_tracker_performance(struct kunit *test)
> +{
[ ... ]
> +	KUNIT_ASSERT_FALSE_MSG(test, gpu_buddy_init(&mm, SZ_4G, SZ_4K),
> +			       "buddy_init failed\n");
> +
> +	for (i = 0; i < SZ_4G / SZ_4K; i++)
> +		KUNIT_ASSERT_FALSE_MSG(test,
> +				       gpu_buddy_alloc_blocks(&mm, 0, SZ_4G, SZ_4K, SZ_4K,
> +							      &allocated, 0),
> +				       "buddy_alloc hit an error size=%u\n", SZ_4K);

[Severity: Medium]
Could this loop cause an Out-Of-Memory (OOM) regression in constrained KUnit
environments?

Since the test fragments a 4 GiB pool into 4 KiB chunks, this loop executes
1,048,576 times. The allocator will create nearly 2 million struct
gpu_buddy_block metadata nodes, which can consume around 192 MB of kernel slab
memory (and significantly more with KASAN enabled). 

KUnit tests often run in restricted environments like UML with 128-256 MB of
RAM, so this might reliably trigger an OOM panic and break the test suite.

Could a smaller pool size be used to demonstrate the performance difference
without consuming as much kernel memory?

[ ... ]
> +	/*
> +	 * Repeated alloc throughput from a maximally fragmented pool
[ ... ]
> +	KUNIT_ASSERT_FALSE_MSG(test, gpu_buddy_init(&mm, SZ_4G, SZ_4K),
> +			       "buddy_init failed\n");
> +
> +	for (i = 0; i < SZ_4G / SZ_4K; i++)
> +		KUNIT_ASSERT_FALSE_MSG(test,
> +				       gpu_buddy_alloc_blocks(&mm, 0, SZ_4G, SZ_4K, SZ_4K,
> +							      &allocated, 0),
> +				       "buddy_alloc hit an error size=%u\n", SZ_4K);

[Severity: Medium]
The same massive allocation loop is repeated for the second scenario here.
Does this need to be scaled down as well to avoid exhausting memory?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260707141238.711499-1-Arunpravin.PaneerSelvam@amd.com?part=2

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

* Re: [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
  2026-07-07 14:12 [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Arunpravin Paneer Selvam
  2026-07-07 14:12 ` [PATCH v5 2/2] gpu/tests/buddy: add dirty tracker performance KUnit test Arunpravin Paneer Selvam
  2026-07-07 14:22 ` ✓ CI.KUnit: success for series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Patchwork
@ 2026-07-07 14:26 ` sashiko-bot
  2026-07-07 14:38 ` ✗ CI.checksparse: warning for series starting with [v5,1/2] " Patchwork
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: sashiko-bot @ 2026-07-07 14:26 UTC (permalink / raw)
  To: Arunpravin Paneer Selvam; +Cc: dri-devel

Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [High] Deadlock during memory reclaim due to GFP_KERNEL allocation in the free path.
- [High] The dirty tracking steering logic completely breaks offset-aligned allocations by bypassing min_block_size constraints.
- [Medium] The GPU_BUDDY_CLEAR_ALLOCATION preference is silently ignored in multiple allocation paths.
- [Medium] The search traversal in __alloc_range_bias was inadvertently inverted, fragmenting bottom-up allocations.
--

--- Patch [1]: [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker ---
commit e512e6b2757e1aa8f79b4b91f5353e83198e524e
Author: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>

gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker

The current buddy allocator maintains separate clear_tree[] and
dirty_tree[] rbtrees per order, preventing coalescing between cleared
and dirty buddies. This patch replaces the dual-tree design with a single
free_tree[] rbtree and a lightweight out-of-band dirty tracker.

> diff --git a/drivers/gpu/buddy.c b/drivers/gpu/buddy.c
> index dc81fe0301ce8..288a85d9e95e1 100644
> --- a/drivers/gpu/buddy.c
> +++ b/drivers/gpu/buddy.c
> @@ -34,6 +35,411 @@
>  #endif
>  
>  static struct kmem_cache *slab_blocks;
> +static struct kmem_cache *slab_extents;
> +
> +enum gpu_block_state {
> +	GPU_BLOCK_CLEAR,
> +	GPU_BLOCK_MIXED,
> +	GPU_BLOCK_DIRTY,
> +};
> +
> +/*
> + * Dirty tracker

[ ... ]

> +RB_DECLARE_CALLBACKS_MAX(static, gpu_dirty_augment_cb,
> +			 struct gpu_dirty_extent, rb,
> +			 u64, subtree_max_size,
> +			 extent_size)
> +
> +static struct gpu_dirty_extent *extent_alloc(void)
> +{
> +	return kmem_cache_zalloc(slab_extents, GFP_KERNEL | __GFP_NOFAIL);
> +}

[Severity: High]
If the system is under memory pressure, the kernel invokes the driver's
shrinker/eviction code to free VRAM. The eviction process holds driver locks
and frees buddy blocks, which calls into this allocation on the free path.

Could this GFP_KERNEL allocation inside the free path cause the shrinker to
block indefinitely waiting for memory, leading to a deadlock?

[ ... ]

> @@ -751,9 +1152,6 @@ __alloc_range_bias(struct gpu_buddy *mm,
>  				continue;
>  		}
>  
> -		if (!fallback && block_incompatible(block, flags))
> -			continue;
> -
>  		if (contains(start, end, block_start, block_end) &&
>  		    order == gpu_buddy_block_order(block)) {

[Severity: Medium]
The block_incompatible check was removed here. Additionally, functions like
gpu_buddy_find_block_aligned and get_maxblock appear to return the first
structurally matching block without checking the new has_clear or
subtree_has_clear fields.

Will this cause the GPU_BUDDY_CLEAR_ALLOCATION preference to be silently
ignored during range, aligned, and top-down allocations?

>  			/*
> @@ -771,64 +1169,35 @@ __alloc_range_bias(struct gpu_buddy *mm,
>  				goto err_undo;
>  		}
>  
> -		list_add(&block->right->tmp_link, &dfs);
>  		list_add(&block->left->tmp_link, &dfs);
> +		list_add(&block->right->tmp_link, &dfs);
>  	} while (1);

[Severity: Medium]
The list_add function inserts items at the head, acting as a LIFO stack. By
pushing the left child and then the right child, the right child becomes the
head of the list and is popped first.

Does this inadvertently invert the search traversal to right-to-left
(highest address first), causing bottom-up allocations to fragment?

[ ... ]

> @@ -1282,18 +1684,36 @@ __gpu_buddy_alloc_blocks(struct gpu_buddy *mm,
>  			 unsigned int order,
>  			 unsigned long flags)
>  {
> -	if (flags & GPU_BUDDY_RANGE_ALLOCATION)
> +	struct gpu_buddy_block *block;
> +	bool steered = false;
> +
> +	/* Allocate from dirty tracker */
> +	if (!(flags & GPU_BUDDY_RANGE_ALLOCATION) &&
> +	    !(flags & GPU_BUDDY_CLEAR_ALLOCATION) &&
> +	    mm->clear_avail && mm->dirty.total_dirty) {
> +		u64 block_size = mm->chunk_size << order;
> +
> +		steered = dirty_steer_window(mm, block_size,
> +					     &start, &end, &flags);
> +	}
> +
> +	if (flags & GPU_BUDDY_RANGE_ALLOCATION) {
>  		/* Allocate traversing within the range */
> -		return  __gpu_buddy_alloc_range_bias(mm, start, end,
> -						     order, flags);
> -	else if (size < min_block_size)
> +		block = __alloc_range_bias(mm, start, end, order, flags);
> +		if (!IS_ERR(block) || !steered)
> +			return block;

[Severity: High]
A caller might request an offset-aligned allocation where the requested size
is smaller than min_block_size. The dirty steering logic here uses block_size
(which equals size, lacking the min_block_size alignment requirement) and
forces a range allocation.

Since __alloc_range_bias returns the block directly here, does this
completely bypass the gpu_buddy_offset_aligned_allocation logic and return a
misaligned block to the caller?

> +
> +		flags &= ~GPU_BUDDY_RANGE_ALLOCATION;
> +	}
> +
> +	if (size < min_block_size)
>  		/* Allocate from an offset-aligned region without size rounding */
>  		return gpu_buddy_offset_aligned_allocation(mm, size,
>  							   min_block_size,
>  							   flags);

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260707141238.711499-1-Arunpravin.PaneerSelvam@amd.com?part=1

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

* ✗ CI.checksparse: warning for series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
  2026-07-07 14:12 [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Arunpravin Paneer Selvam
                   ` (2 preceding siblings ...)
  2026-07-07 14:26 ` [PATCH v5 1/2] " sashiko-bot
@ 2026-07-07 14:38 ` Patchwork
  2026-07-07 15:00 ` ✓ Xe.CI.BAT: success " Patchwork
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2026-07-07 14:38 UTC (permalink / raw)
  To: Arunpravin Paneer Selvam; +Cc: intel-xe

== Series Details ==

Series: series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
URL   : https://patchwork.freedesktop.org/series/169939/
State : warning

== Summary ==

+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast cd8abe2554ec7eba16c1d48ab508732bf93534eb
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
+/kernel/Makefile:1280: C=1 specified, but sparse is not available or not up to date

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



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

* ✓ Xe.CI.BAT: success for series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
  2026-07-07 14:12 [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Arunpravin Paneer Selvam
                   ` (3 preceding siblings ...)
  2026-07-07 14:38 ` ✗ CI.checksparse: warning for series starting with [v5,1/2] " Patchwork
@ 2026-07-07 15:00 ` Patchwork
  2026-07-07 16:52 ` ✓ i915.CI.BAT: " Patchwork
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2026-07-07 15:00 UTC (permalink / raw)
  To: Arunpravin Paneer Selvam; +Cc: intel-xe

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

== Series Details ==

Series: series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
URL   : https://patchwork.freedesktop.org/series/169939/
State : success

== Summary ==

CI Bug Log - changes from xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb_BAT -> xe-pw-169939v1_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (13 -> 13)
------------------------------

  No changes in participating hosts

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

  Here are the changes found in xe-pw-169939v1_BAT that come from known issues:

### IGT changes ###

#### Possible fixes ####

  * igt@xe_live_ktest@xe_dma_buf:
    - bat-bmg-vm:         [ABORT][1] ([Intel XE#8007] / [Intel XE#8023]) -> [PASS][2] +1 other test pass
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/bat-bmg-vm/igt@xe_live_ktest@xe_dma_buf.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/bat-bmg-vm/igt@xe_live_ktest@xe_dma_buf.html

  
  [Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
  [Intel XE#8023]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8023


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

  * Linux: xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb -> xe-pw-169939v1

  IGT_8991: c5721520bb6611ab8fcbe27db0c120b72d25b99e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb: cd8abe2554ec7eba16c1d48ab508732bf93534eb
  xe-pw-169939v1: 169939v1

== Logs ==

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

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

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

* ✓ i915.CI.BAT: success for series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
  2026-07-07 14:12 [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Arunpravin Paneer Selvam
                   ` (4 preceding siblings ...)
  2026-07-07 15:00 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2026-07-07 16:52 ` Patchwork
  2026-07-07 17:27 ` ✗ Xe.CI.FULL: failure " Patchwork
  2026-07-08 10:37 ` ✓ i915.CI.Full: success " Patchwork
  7 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2026-07-07 16:52 UTC (permalink / raw)
  To: Arunpravin Paneer Selvam; +Cc: intel-gfx

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

== Series Details ==

Series: series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
URL   : https://patchwork.freedesktop.org/series/169937/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_18778 -> Patchwork_169937v1
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/index.html

Participating hosts (41 -> 39)
------------------------------

  Additional (1): bat-adls-6 
  Missing    (3): bat-dg2-13 bat-kbl-2 fi-snb-2520m 

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

  Here are the changes found in Patchwork_169937v1 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@dmabuf@all-tests:
    - bat-arlh-3:         NOTRUN -> [SKIP][1] ([i915#15931])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-arlh-3/igt@dmabuf@all-tests.html
    - bat-adls-6:         NOTRUN -> [SKIP][2] ([i915#15931])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-adls-6/igt@dmabuf@all-tests.html
    - bat-arlh-2:         NOTRUN -> [SKIP][3] ([i915#11346] / [i915#15931])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-arlh-2/igt@dmabuf@all-tests.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - bat-adls-6:         NOTRUN -> [SKIP][4] ([i915#4613]) +3 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-adls-6/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@gem_tiled_pread_basic@basic:
    - bat-adls-6:         NOTRUN -> [SKIP][5] ([i915#15656])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-adls-6/igt@gem_tiled_pread_basic@basic.html

  * igt@intel_hwmon@hwmon-read:
    - bat-adls-6:         NOTRUN -> [SKIP][6] ([i915#7707]) +1 other test skip
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-adls-6/igt@intel_hwmon@hwmon-read.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-adls-6:         NOTRUN -> [SKIP][7] ([i915#4103]) +1 other test skip
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-adls-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-adls-6:         NOTRUN -> [SKIP][8] ([i915#16361])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-adls-6/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-adls-6:         NOTRUN -> [SKIP][9]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-adls-6/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_pm_backlight@basic-brightness:
    - bat-adls-6:         NOTRUN -> [SKIP][10] ([i915#5354])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-adls-6/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr@psr-primary-mmap-gtt:
    - bat-adls-6:         NOTRUN -> [SKIP][11] ([i915#1072] / [i915#9732]) +3 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-adls-6/igt@kms_psr@psr-primary-mmap-gtt.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-adls-6:         NOTRUN -> [SKIP][12] ([i915#3555])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-adls-6/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-read:
    - bat-adls-6:         NOTRUN -> [SKIP][13] ([i915#3291]) +2 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-adls-6/igt@prime_vgem@basic-fence-read.html

  
#### Possible fixes ####

  * igt@i915_selftest@live:
    - bat-arlh-3:         [INCOMPLETE][14] -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/bat-arlh-3/igt@i915_selftest@live.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-arlh-3/igt@i915_selftest@live.html
    - bat-arlh-2:         [INCOMPLETE][16] ([i915#16547]) -> [PASS][17]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/bat-arlh-2/igt@i915_selftest@live.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-arlh-2/igt@i915_selftest@live.html

  * igt@i915_selftest@live@mman:
    - bat-arlh-3:         [INCOMPLETE][18] ([i915#16450]) -> [PASS][19]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/bat-arlh-3/igt@i915_selftest@live@mman.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-arlh-3/igt@i915_selftest@live@mman.html

  * igt@i915_selftest@live@ring_submission:
    - bat-arlh-2:         [INCOMPLETE][20] -> [PASS][21]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/bat-arlh-2/igt@i915_selftest@live@ring_submission.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/bat-arlh-2/igt@i915_selftest@live@ring_submission.html

  
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#11346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11346
  [i915#15656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15656
  [i915#15931]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15931
  [i915#16361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16361
  [i915#16450]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16450
  [i915#16547]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16547
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732


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

  * Linux: CI_DRM_18778 -> Patchwork_169937v1

  CI-20190529: 20190529
  CI_DRM_18778: ee2867b79f9bac3a6fc3221139b09598ce79099c @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8991: c5721520bb6611ab8fcbe27db0c120b72d25b99e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_169937v1: ee2867b79f9bac3a6fc3221139b09598ce79099c @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/index.html

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

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

* ✗ Xe.CI.FULL: failure for series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
  2026-07-07 14:12 [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Arunpravin Paneer Selvam
                   ` (5 preceding siblings ...)
  2026-07-07 16:52 ` ✓ i915.CI.BAT: " Patchwork
@ 2026-07-07 17:27 ` Patchwork
  2026-07-08 10:37 ` ✓ i915.CI.Full: success " Patchwork
  7 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2026-07-07 17:27 UTC (permalink / raw)
  To: Arunpravin Paneer Selvam; +Cc: intel-xe

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

== Series Details ==

Series: series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
URL   : https://patchwork.freedesktop.org/series/169939/
State : failure

== Summary ==

CI Bug Log - changes from xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb_FULL -> xe-pw-169939v1_FULL
====================================================

Summary
-------

  **FAILURE**

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

  

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

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-169939v1_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_pmu@engine-activity-accuracy-50@engine-drm_xe_engine_class_compute0:
    - shard-lnl:          [PASS][1] -> [FAIL][2] +2 other tests fail
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-lnl-8/igt@xe_pmu@engine-activity-accuracy-50@engine-drm_xe_engine_class_compute0.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-lnl-1/igt@xe_pmu@engine-activity-accuracy-50@engine-drm_xe_engine_class_compute0.html

  
New tests
---------

  New tests have been introduced between xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb_FULL and xe-pw-169939v1_FULL:

### New IGT tests (3) ###

  * igt@kms_flip@plain-flip-ts-check@a-dp2:
    - Statuses : 1 pass(s)
    - Exec time: [4.46] s

  * igt@kms_flip@plain-flip-ts-check@b-dp2:
    - Statuses : 1 pass(s)
    - Exec time: [4.36] s

  * igt@kms_flip@plain-flip-ts-check@c-dp2:
    - Statuses : 1 pass(s)
    - Exec time: [4.37] s

  

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

  Here are the changes found in xe-pw-169939v1_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_async_flips@alternate-sync-async-flip-atomic:
    - shard-bmg:          [PASS][3] -> [FAIL][4] ([Intel XE#3718] / [Intel XE#6078])
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-bmg-5/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-6/igt@kms_async_flips@alternate-sync-async-flip-atomic.html

  * igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-hdmi-a-3:
    - shard-bmg:          [PASS][5] -> [FAIL][6] ([Intel XE#6078])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-bmg-5/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-hdmi-a-3.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-6/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-a-hdmi-a-3.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-270:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#2327])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@kms_big_fb@4-tiled-32bpp-rotate-270.html

  * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip:
    - shard-bmg:          NOTRUN -> [SKIP][8] ([Intel XE#7059] / [Intel XE#7085])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0-hflip.html

  * igt@kms_big_fb@y-tiled-addfb:
    - shard-bmg:          NOTRUN -> [SKIP][9] ([Intel XE#2328] / [Intel XE#7367])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_big_fb@y-tiled-addfb.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-0:
    - shard-bmg:          NOTRUN -> [SKIP][10] ([Intel XE#1124]) +2 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@kms_big_fb@yf-tiled-32bpp-rotate-0.html

  * igt@kms_bw@connected-linear-tiling-3-displays-target-3840x2160p:
    - shard-bmg:          NOTRUN -> [SKIP][11] ([Intel XE#7679])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@kms_bw@connected-linear-tiling-3-displays-target-3840x2160p.html

  * igt@kms_bw@linear-tiling-3-displays-target-2560x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][12] ([Intel XE#367])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_bw@linear-tiling-3-displays-target-2560x1440p.html

  * igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][13] ([Intel XE#2887]) +5 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs.html

  * igt@kms_chamelium_color@degamma:
    - shard-bmg:          NOTRUN -> [SKIP][14] ([Intel XE#2325] / [Intel XE#7358])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_chamelium_color@degamma.html

  * igt@kms_chamelium_frames@dp-frame-dump:
    - shard-bmg:          NOTRUN -> [SKIP][15] ([Intel XE#2252]) +1 other test skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_chamelium_frames@dp-frame-dump.html

  * igt@kms_content_protection@mei-interface:
    - shard-bmg:          NOTRUN -> [SKIP][16] ([Intel XE#7642])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_content_protection@mei-interface.html

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#2321] / [Intel XE#7355]) +1 other test skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_cursor_crc@cursor-onscreen-128x42:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#2320])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_cursor_crc@cursor-onscreen-128x42.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-bmg:          NOTRUN -> [SKIP][19] ([Intel XE#2286] / [Intel XE#6035])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dirtyfb@psr-dirtyfb-ioctl:
    - shard-bmg:          NOTRUN -> [SKIP][20] ([Intel XE#1508])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html

  * igt@kms_dsc@dsc-with-bpc-formats-ultrajoiner:
    - shard-bmg:          NOTRUN -> [SKIP][21] ([Intel XE#8265])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@kms_dsc@dsc-with-bpc-formats-ultrajoiner.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
    - shard-bmg:          [PASS][22] -> [FAIL][23] ([Intel XE#3098]) +1 other test fail
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-bmg-10/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-9/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#7178] / [Intel XE#7351])
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
    - shard-bmg:          NOTRUN -> [SKIP][25] ([Intel XE#4141]) +8 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbc-argb161616f-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#7061] / [Intel XE#7356])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@kms_frontbuffer_tracking@fbc-argb161616f-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-move:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#2311]) +23 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][28] ([Intel XE#7061]) +2 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@psrhdr-rgb565-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][29] ([Intel XE#2313]) +19 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_frontbuffer_tracking@psrhdr-rgb565-draw-render.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][30] ([Intel XE#4090] / [Intel XE#7443])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier:
    - shard-bmg:          NOTRUN -> [SKIP][31] ([Intel XE#7283]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier.html

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

  * igt@kms_pm_dc@deep-pkgc:
    - shard-lnl:          [PASS][33] -> [FAIL][34] ([Intel XE#2029] / [Intel XE#7395])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-lnl-3/igt@kms_pm_dc@deep-pkgc.html
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-lnl-3/igt@kms_pm_dc@deep-pkgc.html

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

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-bmg:          NOTRUN -> [SKIP][36] ([Intel XE#2387] / [Intel XE#7429])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@psr2-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][37] ([Intel XE#2234] / [Intel XE#2850]) +4 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_psr@psr2-suspend.html

  * igt@kms_scaling_modes@scaling-mode-full-aspect:
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#2413])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@kms_scaling_modes@scaling-mode-full-aspect.html

  * igt@kms_sharpness_filter@filter-tap:
    - shard-bmg:          NOTRUN -> [SKIP][39] ([Intel XE#6503])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@kms_sharpness_filter@filter-tap.html

  * igt@xe_exec_basic@multigpu-once-null-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][40] ([Intel XE#2322] / [Intel XE#7372]) +1 other test skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@xe_exec_basic@multigpu-once-null-rebind.html

  * igt@xe_exec_fault_mode@once-multi-queue-userptr-invalidate-race-imm:
    - shard-bmg:          NOTRUN -> [SKIP][41] ([Intel XE#8374]) +4 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-7/igt@xe_exec_fault_mode@once-multi-queue-userptr-invalidate-race-imm.html

  * igt@xe_exec_multi_queue@two-queues-priority-smem:
    - shard-bmg:          NOTRUN -> [SKIP][42] ([Intel XE#8364]) +11 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@xe_exec_multi_queue@two-queues-priority-smem.html

  * igt@xe_exec_reset@multi-queue-cat-error:
    - shard-bmg:          NOTRUN -> [SKIP][43] ([Intel XE#8369])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@xe_exec_reset@multi-queue-cat-error.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-userptr-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#8378]) +1 other test skip
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-userptr-rebind.html

  * igt@xe_page_reclaim@binds-1g-partial:
    - shard-bmg:          NOTRUN -> [SKIP][45] ([Intel XE#7793])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@xe_page_reclaim@binds-1g-partial.html

  * igt@xe_pat@xa-app-transient-media-on:
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#7590])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@xe_pat@xa-app-transient-media-on.html

  * igt@xe_pm@s4-d3cold-basic-exec:
    - shard-bmg:          NOTRUN -> [SKIP][47] ([Intel XE#2284] / [Intel XE#7370])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@xe_pm@s4-d3cold-basic-exec.html

  * igt@xe_pxp@display-pxp-fb:
    - shard-bmg:          NOTRUN -> [SKIP][48] ([Intel XE#4733] / [Intel XE#7417]) +1 other test skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-10/igt@xe_pxp@display-pxp-fb.html

  * igt@xe_query@multigpu-query-invalid-cs-cycles:
    - shard-bmg:          NOTRUN -> [SKIP][49] ([Intel XE#944])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@xe_query@multigpu-query-invalid-cs-cycles.html

  
#### Possible fixes ####

  * igt@kms_flip@flip-vs-expired-vblank@b-edp1:
    - shard-lnl:          [FAIL][50] ([Intel XE#301]) -> [PASS][51] +1 other test pass
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html

  * igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-2-xrgb16161616f:
    - shard-bmg:          [INCOMPLETE][52] -> [PASS][53] +1 other test pass
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-bmg-8/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-2-xrgb16161616f.html
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-7/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-2-xrgb16161616f.html

  * igt@xe_configfs@gt-types-allowed:
    - shard-bmg:          [ABORT][54] ([Intel XE#8007]) -> [PASS][55]
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-bmg-1/igt@xe_configfs@gt-types-allowed.html
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@xe_configfs@gt-types-allowed.html

  * igt@xe_live_ktest@xe_bo:
    - shard-bmg:          [FAIL][56] ([Intel XE#8539]) -> [PASS][57] +1 other test pass
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-bmg-5/igt@xe_live_ktest@xe_bo.html
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-7/igt@xe_live_ktest@xe_bo.html

  
#### Warnings ####

  * igt@kms_big_fb@4-tiled-8bpp-rotate-270:
    - shard-lnl:          [SKIP][58] ([Intel XE#1407]) -> [ABORT][59] ([Intel XE#4760])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-lnl-8/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-lnl-5/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-bmg:          [SKIP][60] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][61] ([Intel XE#3544])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-bmg-7/igt@kms_hdr@brightness-with-hdr.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-3/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-bmg:          [FAIL][62] ([Intel XE#1729] / [Intel XE#7424]) -> [SKIP][63] ([Intel XE#2426] / [Intel XE#5848])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern.html
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-9/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-bmg:          [SKIP][64] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][65] ([Intel XE#2426] / [Intel XE#5848])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-6/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@xe_wedged@wedged-at-any-timeout:
    - shard-bmg:          [DMESG-WARN][66] ([Intel XE#5545]) -> [ABORT][67] ([Intel XE#8007])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb/shard-bmg-4/igt@xe_wedged@wedged-at-any-timeout.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169939v1/shard-bmg-1/igt@xe_wedged@wedged-at-any-timeout.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
  [Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
  [Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2328
  [Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
  [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#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#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#3098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3098
  [Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
  [Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
  [Intel XE#4090]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4090
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4760
  [Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
  [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
  [Intel XE#6035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6035
  [Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#7059]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7059
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
  [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
  [Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
  [Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
  [Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
  [Intel XE#7367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7367
  [Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
  [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
  [Intel XE#7395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7395
  [Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
  [Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
  [Intel XE#7429]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7429
  [Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
  [Intel XE#7443]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7443
  [Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
  [Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
  [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
  [Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
  [Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
  [Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
  [Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
  [Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
  [Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
  [Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
  [Intel XE#8539]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8539
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * Linux: xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb -> xe-pw-169939v1

  IGT_8991: c5721520bb6611ab8fcbe27db0c120b72d25b99e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-5355-cd8abe2554ec7eba16c1d48ab508732bf93534eb: cd8abe2554ec7eba16c1d48ab508732bf93534eb
  xe-pw-169939v1: 169939v1

== Logs ==

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

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

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

* ✓ i915.CI.Full: success for series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
  2026-07-07 14:12 [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Arunpravin Paneer Selvam
                   ` (6 preceding siblings ...)
  2026-07-07 17:27 ` ✗ Xe.CI.FULL: failure " Patchwork
@ 2026-07-08 10:37 ` Patchwork
  7 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2026-07-08 10:37 UTC (permalink / raw)
  To: Arunpravin Paneer Selvam; +Cc: intel-gfx

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

== Series Details ==

Series: series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker
URL   : https://patchwork.freedesktop.org/series/169937/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_18778_full -> Patchwork_169937v1_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  No changes in participating hosts

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

  Here are the changes found in Patchwork_169937v1_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@blit-reloc-purge-cache:
    - shard-dg2:          NOTRUN -> [SKIP][1] ([i915#8411]) +1 other test skip
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@api_intel_bb@blit-reloc-purge-cache.html

  * igt@drm_buddy@drm_buddy:
    - shard-glk11:        NOTRUN -> [SKIP][2] +61 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk11/igt@drm_buddy@drm_buddy.html

  * igt@gem_ccs@block-multicopy-compressed:
    - shard-tglu:         NOTRUN -> [SKIP][3] ([i915#9323])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@gem_ccs@block-multicopy-compressed.html

  * igt@gem_ccs@suspend-resume:
    - shard-rkl:          NOTRUN -> [SKIP][4] ([i915#9323]) +1 other test skip
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@gem_ccs@suspend-resume.html

  * igt@gem_close_race@multigpu-basic-threads:
    - shard-tglu:         NOTRUN -> [SKIP][5] ([i915#7697])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@gem_close_race@multigpu-basic-threads.html

  * igt@gem_create@create-ext-cpu-access-big:
    - shard-rkl:          NOTRUN -> [SKIP][6] ([i915#6335])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@gem_create@create-ext-cpu-access-big.html

  * igt@gem_ctx_persistence@heartbeat-many:
    - shard-dg2:          NOTRUN -> [SKIP][7] ([i915#8555])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@gem_ctx_persistence@heartbeat-many.html

  * igt@gem_ctx_sseu@mmap-args:
    - shard-rkl:          NOTRUN -> [SKIP][8] ([i915#280])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@gem_ctx_sseu@mmap-args.html

  * igt@gem_eio@kms:
    - shard-tglu:         NOTRUN -> [DMESG-WARN][9] ([i915#13363])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@gem_eio@kms.html

  * igt@gem_exec_balancer@parallel-keep-in-fence:
    - shard-rkl:          NOTRUN -> [SKIP][10] ([i915#4525])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@gem_exec_balancer@parallel-keep-in-fence.html

  * igt@gem_exec_balancer@parallel-ordering:
    - shard-tglu:         NOTRUN -> [SKIP][11] ([i915#4525])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@gem_exec_balancer@parallel-ordering.html

  * igt@gem_exec_capture@capture-invisible@smem0:
    - shard-glk:          NOTRUN -> [SKIP][12] ([i915#6334]) +1 other test skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk1/igt@gem_exec_capture@capture-invisible@smem0.html

  * igt@gem_exec_reloc@basic-gtt-cpu:
    - shard-rkl:          NOTRUN -> [SKIP][13] ([i915#3281]) +8 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@gem_exec_reloc@basic-gtt-cpu.html

  * igt@gem_exec_reloc@basic-write-cpu-noreloc:
    - shard-dg2:          NOTRUN -> [SKIP][14] ([i915#3281]) +1 other test skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@gem_exec_reloc@basic-write-cpu-noreloc.html

  * igt@gem_exec_schedule@semaphore-power:
    - shard-rkl:          NOTRUN -> [SKIP][15] ([i915#7276])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@gem_exec_schedule@semaphore-power.html

  * igt@gem_exec_suspend@basic-s0:
    - shard-dg2:          [PASS][16] -> [INCOMPLETE][17] ([i915#13356]) +1 other test incomplete
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg2-8/igt@gem_exec_suspend@basic-s0.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-7/igt@gem_exec_suspend@basic-s0.html

  * igt@gem_fence_thrash@bo-write-verify-y:
    - shard-dg2:          NOTRUN -> [SKIP][18] ([i915#4860])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@gem_fence_thrash@bo-write-verify-y.html

  * igt@gem_lmem_evict@dontneed-evict-race:
    - shard-tglu-1:       NOTRUN -> [SKIP][19] ([i915#4613] / [i915#7582])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@gem_lmem_evict@dontneed-evict-race.html

  * igt@gem_lmem_swapping@heavy-verify-multi-ccs:
    - shard-glk:          NOTRUN -> [SKIP][20] ([i915#4613])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk5/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html
    - shard-tglu:         NOTRUN -> [SKIP][21] ([i915#4613]) +1 other test skip
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html

  * igt@gem_lmem_swapping@parallel-multi:
    - shard-rkl:          NOTRUN -> [SKIP][22] ([i915#4613]) +2 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@gem_lmem_swapping@parallel-multi.html

  * igt@gem_lmem_swapping@random-engines:
    - shard-tglu-1:       NOTRUN -> [SKIP][23] ([i915#4613]) +1 other test skip
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@gem_lmem_swapping@random-engines.html

  * igt@gem_mmap@pf-nonblock:
    - shard-dg2:          NOTRUN -> [SKIP][24] ([i915#4083])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@gem_mmap@pf-nonblock.html

  * igt@gem_mmap_gtt@cpuset-basic-small-copy-odd:
    - shard-dg2:          NOTRUN -> [SKIP][25] ([i915#4077]) +1 other test skip
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@gem_mmap_gtt@cpuset-basic-small-copy-odd.html

  * igt@gem_partial_pwrite_pread@write:
    - shard-dg2:          NOTRUN -> [SKIP][26] ([i915#3282])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@gem_partial_pwrite_pread@write.html

  * igt@gem_pread@exhaustion:
    - shard-glk:          NOTRUN -> [WARN][27] ([i915#2658])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk3/igt@gem_pread@exhaustion.html

  * igt@gem_pread@snoop:
    - shard-rkl:          NOTRUN -> [SKIP][28] ([i915#3282]) +2 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@gem_pread@snoop.html

  * igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-yf-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][29] ([i915#5190] / [i915#8428]) +2 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-yf-tiled.html

  * igt@gem_set_tiling_vs_gtt:
    - shard-dg2:          NOTRUN -> [SKIP][30] ([i915#4079])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@gem_set_tiling_vs_gtt.html

  * igt@gem_userptr_blits@access-control:
    - shard-tglu:         NOTRUN -> [SKIP][31] ([i915#3297])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@gem_userptr_blits@access-control.html

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-tglu:         NOTRUN -> [SKIP][32] ([i915#3297] / [i915#3323])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@gem_userptr_blits@dmabuf-sync.html
    - shard-rkl:          NOTRUN -> [SKIP][33] ([i915#3297] / [i915#3323])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gem_userptr_blits@unsync-unmap-cycles:
    - shard-rkl:          NOTRUN -> [SKIP][34] ([i915#3297])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@gem_userptr_blits@unsync-unmap-cycles.html

  * igt@gen9_exec_parse@basic-rejected:
    - shard-dg2:          NOTRUN -> [SKIP][35] ([i915#2856])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@gen9_exec_parse@basic-rejected.html

  * igt@gen9_exec_parse@bb-secure:
    - shard-rkl:          NOTRUN -> [SKIP][36] ([i915#2527]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@gen9_exec_parse@bb-secure.html

  * igt@gen9_exec_parse@cmd-crossing-page:
    - shard-tglu:         NOTRUN -> [SKIP][37] ([i915#2527] / [i915#2856]) +1 other test skip
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@i915_drm_fdinfo@all-busy-idle-check-all:
    - shard-dg2:          NOTRUN -> [SKIP][38] ([i915#14123])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@i915_drm_fdinfo@all-busy-idle-check-all.html

  * igt@i915_drm_fdinfo@virtual-busy-idle-all:
    - shard-dg2:          NOTRUN -> [SKIP][39] ([i915#14118])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@i915_drm_fdinfo@virtual-busy-idle-all.html

  * igt@i915_module_load@fault-injection@__uc_init:
    - shard-rkl:          NOTRUN -> [SKIP][40] ([i915#15479]) +4 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-4/igt@i915_module_load@fault-injection@__uc_init.html

  * igt@i915_module_load@fault-injection@intel_connector_register:
    - shard-rkl:          NOTRUN -> [ABORT][41] ([i915#15342]) +1 other test abort
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-4/igt@i915_module_load@fault-injection@intel_connector_register.html

  * igt@i915_pm_freq_api@freq-reset-multiple:
    - shard-tglu:         NOTRUN -> [SKIP][42] ([i915#8399])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@i915_pm_freq_api@freq-reset-multiple.html

  * igt@i915_pm_freq_api@freq-suspend@gt0:
    - shard-dg2:          [PASS][43] -> [INCOMPLETE][44] ([i915#13356] / [i915#13820]) +1 other test incomplete
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg2-8/igt@i915_pm_freq_api@freq-suspend@gt0.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-4/igt@i915_pm_freq_api@freq-suspend@gt0.html

  * igt@i915_pm_rc6_residency@media-rc6-accuracy:
    - shard-tglu-1:       NOTRUN -> [SKIP][45] ([i915#16080] / [i915#16166])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@i915_pm_rc6_residency@media-rc6-accuracy.html

  * igt@i915_pm_rc6_residency@rc6-fence:
    - shard-tglu:         NOTRUN -> [WARN][46] ([i915#13790] / [i915#2681]) +1 other test warn
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@i915_pm_rc6_residency@rc6-fence.html

  * igt@i915_pm_rpm@system-suspend-execbuf:
    - shard-rkl:          [PASS][47] -> [INCOMPLETE][48] ([i915#13356])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-5/igt@i915_pm_rpm@system-suspend-execbuf.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-4/igt@i915_pm_rpm@system-suspend-execbuf.html

  * igt@i915_pm_rps@engine-order:
    - shard-glk:          [PASS][49] -> [FAIL][50] ([i915#14896])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-glk2/igt@i915_pm_rps@engine-order.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk5/igt@i915_pm_rps@engine-order.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-tglu:         NOTRUN -> [INCOMPLETE][51] ([i915#4817] / [i915#7443])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-3/igt@i915_suspend@basic-s3-without-i915.html

  * igt@i915_suspend@debugfs-reader:
    - shard-rkl:          [PASS][52] -> [INCOMPLETE][53] ([i915#4817])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@i915_suspend@debugfs-reader.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@i915_suspend@debugfs-reader.html

  * igt@i915_suspend@fence-restore-untiled:
    - shard-glk10:        NOTRUN -> [INCOMPLETE][54] ([i915#16182] / [i915#4817])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk10/igt@i915_suspend@fence-restore-untiled.html

  * igt@i915_suspend@forcewake:
    - shard-glk:          NOTRUN -> [INCOMPLETE][55] ([i915#16182] / [i915#4817]) +1 other test incomplete
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk1/igt@i915_suspend@forcewake.html

  * igt@intel_hwmon@hwmon-read:
    - shard-rkl:          NOTRUN -> [SKIP][56] ([i915#7707])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@intel_hwmon@hwmon-read.html
    - shard-tglu:         NOTRUN -> [SKIP][57] ([i915#7707])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@intel_hwmon@hwmon-read.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-tglu-1:       NOTRUN -> [SKIP][58] ([i915#1769] / [i915#3555])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
    - shard-rkl:          NOTRUN -> [SKIP][59] ([i915#1769] / [i915#3555])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-0:
    - shard-rkl:          NOTRUN -> [SKIP][60] ([i915#5286]) +6 other tests skip
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@kms_big_fb@4-tiled-32bpp-rotate-0.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-tglu:         NOTRUN -> [SKIP][61] ([i915#5286]) +3 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-tglu-1:       NOTRUN -> [SKIP][62] ([i915#5286]) +2 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-rkl:          NOTRUN -> [SKIP][63] ([i915#3828])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][64] ([i915#3638])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-dg2:          NOTRUN -> [SKIP][65] ([i915#5190])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-dg2:          NOTRUN -> [SKIP][66] ([i915#4538] / [i915#5190])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][67] ([i915#6095]) +61 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-5/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-rc-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][68] ([i915#14544] / [i915#6095]) +1 other test skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][69] ([i915#14098] / [i915#14544] / [i915#6095])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs-cc@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][70] ([i915#6095]) +49 other tests skip
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc@pipe-c-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][71] ([i915#14098] / [i915#6095]) +40 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-rc-ccs-cc@pipe-c-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1:
    - shard-glk11:        NOTRUN -> [INCOMPLETE][72] ([i915#15582]) +1 other test incomplete
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk11/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][73] ([i915#6095]) +19 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-4/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs@pipe-a-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [SKIP][74] ([i915#6095]) +19 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_ccs@crc-primary-suspend-yf-tiled-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs:
    - shard-dg2:          NOTRUN -> [SKIP][75] ([i915#12313])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-lnl-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][76] ([i915#10307] / [i915#6095]) +74 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-3.html

  * igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-d-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [SKIP][77] ([i915#10307] / [i915#10434] / [i915#6095])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-4/igt@kms_ccs@missing-ccs-buffer-y-tiled-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs:
    - shard-tglu-1:       NOTRUN -> [SKIP][78] ([i915#12313]) +1 other test skip
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs.html

  * igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][79] ([i915#6095]) +223 other tests skip
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg1-12/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-a-hdmi-a-3.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-tglu:         NOTRUN -> [SKIP][80] ([i915#3742])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_chamelium_color_pipeline@plane-lut1d-lut1d:
    - shard-tglu:         NOTRUN -> [SKIP][81] ([i915#16471])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_chamelium_color_pipeline@plane-lut1d-lut1d.html

  * igt@kms_chamelium_edid@hdmi-mode-timings:
    - shard-dg2:          NOTRUN -> [SKIP][82] ([i915#11151] / [i915#7828]) +1 other test skip
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_chamelium_edid@hdmi-mode-timings.html

  * igt@kms_chamelium_frames@dp-crc-fast:
    - shard-tglu-1:       NOTRUN -> [SKIP][83] ([i915#11151] / [i915#7828]) +4 other tests skip
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_chamelium_frames@dp-crc-fast.html

  * igt@kms_chamelium_frames@dp-crc-single:
    - shard-tglu:         NOTRUN -> [SKIP][84] ([i915#11151] / [i915#7828]) +4 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_chamelium_frames@dp-crc-single.html

  * igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode:
    - shard-rkl:          NOTRUN -> [SKIP][85] ([i915#11151] / [i915#7828]) +9 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_chamelium_hpd@hdmi-hpd-with-enabled-mode.html

  * igt@kms_content_protection@dp-mst-type-0-suspend-resume:
    - shard-tglu-1:       NOTRUN -> [SKIP][86] ([i915#15330]) +1 other test skip
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_content_protection@dp-mst-type-0-suspend-resume.html

  * igt@kms_content_protection@suspend-resume:
    - shard-dg2:          NOTRUN -> [SKIP][87] ([i915#15865])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_content_protection@suspend-resume.html

  * igt@kms_content_protection@type1:
    - shard-rkl:          NOTRUN -> [SKIP][88] ([i915#15865]) +1 other test skip
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@kms_content_protection@type1.html
    - shard-tglu:         NOTRUN -> [SKIP][89] ([i915#15865])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_content_protection@type1.html

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-rkl:          NOTRUN -> [SKIP][90] ([i915#13049])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_cursor_crc@cursor-onscreen-64x21@pipe-a-hdmi-a-1:
    - shard-tglu:         [PASS][91] -> [FAIL][92] ([i915#13566]) +1 other test fail
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-tglu-2/igt@kms_cursor_crc@cursor-onscreen-64x21@pipe-a-hdmi-a-1.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-9/igt@kms_cursor_crc@cursor-onscreen-64x21@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1:
    - shard-rkl:          [PASS][93] -> [FAIL][94] ([i915#13566]) +3 other tests fail
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-8/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-2/igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-random-256x85@pipe-a-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [FAIL][95] ([i915#13566]) +1 other test fail
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-3/igt@kms_cursor_crc@cursor-random-256x85@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-dg2:          NOTRUN -> [SKIP][96] ([i915#13049])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x170:
    - shard-tglu:         NOTRUN -> [SKIP][97] ([i915#13049])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html

  * igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [FAIL][98] ([i915#13566]) +5 other tests fail
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-5/igt@kms_cursor_crc@cursor-sliding-128x42@pipe-a-hdmi-a-1.html

  * igt@kms_cursor_crc@cursor-sliding-32x10:
    - shard-tglu-1:       NOTRUN -> [SKIP][99] ([i915#3555]) +1 other test skip
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_cursor_crc@cursor-sliding-32x10.html

  * igt@kms_cursor_crc@cursor-sliding-max-size:
    - shard-rkl:          NOTRUN -> [SKIP][100] ([i915#3555]) +3 other tests skip
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_cursor_crc@cursor-sliding-max-size.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - shard-rkl:          NOTRUN -> [SKIP][101] ([i915#4103]) +1 other test skip
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - shard-tglu:         NOTRUN -> [SKIP][102] ([i915#4103])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-3/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-varying-size:
    - shard-rkl:          NOTRUN -> [SKIP][103] +71 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-glk:          NOTRUN -> [FAIL][104] ([i915#15804])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
    - shard-rkl:          NOTRUN -> [SKIP][105] ([i915#9723])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
    - shard-tglu:         NOTRUN -> [SKIP][106] ([i915#9723])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html

  * igt@kms_dp_aux_dev@basic:
    - shard-dg2:          NOTRUN -> [SKIP][107] ([i915#1257])
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_dp_aux_dev@basic.html

  * igt@kms_dp_link_training@uhbr-mst:
    - shard-rkl:          NOTRUN -> [SKIP][108] ([i915#13748])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_dp_link_training@uhbr-mst.html
    - shard-tglu:         NOTRUN -> [SKIP][109] ([i915#13748])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-3/igt@kms_dp_link_training@uhbr-mst.html

  * igt@kms_dsc@dsc-fractional-bpp:
    - shard-rkl:          NOTRUN -> [SKIP][110] ([i915#16361]) +3 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@kms_dsc@dsc-fractional-bpp.html
    - shard-tglu:         NOTRUN -> [SKIP][111] ([i915#16361])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_dsc@dsc-fractional-bpp.html

  * igt@kms_dsc@dsc-with-output-formats-with-bpc-ultrajoiner:
    - shard-tglu-1:       NOTRUN -> [SKIP][112] ([i915#16361]) +2 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_dsc@dsc-with-output-formats-with-bpc-ultrajoiner.html

  * igt@kms_fbcon_fbt@fbc-suspend:
    - shard-rkl:          [PASS][113] -> [ABORT][114] ([i915#15132])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-4/igt@kms_fbcon_fbt@fbc-suspend.html
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-1/igt@kms_fbcon_fbt@fbc-suspend.html

  * igt@kms_fbcon_fbt@psr:
    - shard-rkl:          NOTRUN -> [SKIP][115] ([i915#3955])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@kms_fbcon_fbt@psr.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-tglu:         NOTRUN -> [SKIP][116] ([i915#3469]) +1 other test skip
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_feature_discovery@display-3x:
    - shard-rkl:          NOTRUN -> [SKIP][117] ([i915#16081])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@kms_feature_discovery@display-3x.html
    - shard-tglu:         NOTRUN -> [SKIP][118] ([i915#16081])
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_feature_discovery@display-3x.html

  * igt@kms_feature_discovery@display-4x:
    - shard-dg2:          NOTRUN -> [SKIP][119] ([i915#16081])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_feature_discovery@display-4x.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-tglu:         NOTRUN -> [SKIP][120] ([i915#9337])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_flip@2x-blocking-wf_vblank:
    - shard-rkl:          NOTRUN -> [SKIP][121] ([i915#9934]) +2 other tests skip
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_flip@2x-blocking-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-absolute-wf_vblank:
    - shard-tglu:         NOTRUN -> [SKIP][122] ([i915#3637] / [i915#9934]) +4 other tests skip
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_flip@2x-flip-vs-absolute-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-panning:
    - shard-tglu-1:       NOTRUN -> [SKIP][123] ([i915#3637] / [i915#9934]) +1 other test skip
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_flip@2x-flip-vs-panning.html

  * igt@kms_flip@2x-modeset-vs-vblank-race:
    - shard-dg2:          NOTRUN -> [SKIP][124] ([i915#9934]) +2 other tests skip
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_flip@2x-modeset-vs-vblank-race.html

  * igt@kms_flip@flip-vs-expired-vblank:
    - shard-glk:          NOTRUN -> [FAIL][125] ([i915#13027]) +1 other test fail
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk5/igt@kms_flip@flip-vs-expired-vblank.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
    - shard-tglu-1:       NOTRUN -> [SKIP][126] ([i915#15643]) +2 other tests skip
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling:
    - shard-tglu:         NOTRUN -> [SKIP][127] ([i915#15643]) +3 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
    - shard-rkl:          NOTRUN -> [SKIP][128] ([i915#15643]) +1 other test skip
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - shard-dg2:          NOTRUN -> [SKIP][129] ([i915#15643]) +1 other test skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][130] ([i915#15990] / [i915#8708]) +5 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt:
    - shard-tglu-1:       NOTRUN -> [SKIP][131] +54 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-shrfb-plflip-blt:
    - shard-tglu-1:       NOTRUN -> [SKIP][132] ([i915#15989]) +9 other tests skip
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbchdr-2p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][133] ([i915#15990]) +5 other tests skip
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_frontbuffer_tracking@fbchdr-2p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-cpu:
    - shard-dg2:          NOTRUN -> [SKIP][134] ([i915#15991] / [i915#5354]) +4 other tests skip
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-primscrn-cur-indfb-move:
    - shard-dg2:          NOTRUN -> [SKIP][135] ([i915#15991]) +8 other tests skip
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@hdr-1p-offscreen-pri-shrfb-draw-mmap-gtt:
    - shard-tglu:         NOTRUN -> [SKIP][136] ([i915#15989]) +14 other tests skip
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_frontbuffer_tracking@hdr-1p-offscreen-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@hdr-1p-offscreen-pri-shrfb-draw-pwrite:
    - shard-dg2:          NOTRUN -> [SKIP][137] ([i915#15989]) +3 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_frontbuffer_tracking@hdr-1p-offscreen-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@hdr-1p-primscrn-cur-indfb-draw-pwrite:
    - shard-rkl:          [PASS][138] -> [SKIP][139] ([i915#15989]) +3 other tests skip
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-cur-indfb-draw-pwrite.html
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-cur-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-mmap-cpu:
    - shard-rkl:          NOTRUN -> [SKIP][140] ([i915#15989]) +16 other tests skip
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-spr-indfb-draw-mmap-gtt:
    - shard-glk:          [PASS][141] -> [SKIP][142] +8 other tests skip
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-glk8/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-spr-indfb-draw-mmap-gtt.html
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk3/igt@kms_frontbuffer_tracking@hdr-2p-scndscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-blt:
    - shard-dg2:          [PASS][143] -> [SKIP][144] ([i915#15989])
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg2-10/igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-blt.html
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_frontbuffer_tracking@hdr-rgb101010-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw:
    - shard-dg2:          NOTRUN -> [SKIP][145] ([i915#15102]) +6 other tests skip
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt:
    - shard-rkl:          NOTRUN -> [SKIP][146] ([i915#15102] / [i915#3023]) +15 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-tglu:         NOTRUN -> [SKIP][147] ([i915#15102]) +28 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][148] ([i915#1825]) +4 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-5/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-cpu:
    - shard-glk:          NOTRUN -> [SKIP][149] +284 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk3/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-spr-indfb-move:
    - shard-rkl:          NOTRUN -> [SKIP][150] ([i915#15102]) +24 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-4/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-spr-indfb-move.html

  * igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-indfb-draw-mmap-gtt:
    - shard-tglu:         NOTRUN -> [SKIP][151] +57 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-pwrite:
    - shard-glk10:        NOTRUN -> [SKIP][152] +156 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk10/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@psrhdr-rgb101010-draw-pwrite:
    - shard-tglu-1:       NOTRUN -> [SKIP][153] ([i915#15102]) +21 other tests skip
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_frontbuffer_tracking@psrhdr-rgb101010-draw-pwrite.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-rkl:          NOTRUN -> [SKIP][154] ([i915#12713])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-5/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-dg2:          NOTRUN -> [SKIP][155] ([i915#16518] / [i915#3555] / [i915#8228])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_hdr@static-toggle:
    - shard-tglu-1:       NOTRUN -> [SKIP][156] ([i915#3555] / [i915#8228]) +1 other test skip
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_hdr@static-toggle.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][157] ([i915#3555] / [i915#8228])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@kms_hdr@static-toggle-suspend.html
    - shard-tglu:         NOTRUN -> [SKIP][158] ([i915#3555] / [i915#8228])
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_joiner@invalid-modeset-big-joiner:
    - shard-tglu-1:       NOTRUN -> [SKIP][159] ([i915#15460])
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_joiner@invalid-modeset-big-joiner.html

  * igt@kms_mst@mst-suspend-read-crc:
    - shard-tglu:         NOTRUN -> [SKIP][160] ([i915#16451])
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_mst@mst-suspend-read-crc.html

  * igt@kms_pipe_stress@stress-xrgb8888-4tiled:
    - shard-rkl:          NOTRUN -> [SKIP][161] ([i915#14712])
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_pipe_stress@stress-xrgb8888-4tiled.html

  * igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier:
    - shard-tglu:         NOTRUN -> [SKIP][162] ([i915#15709])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier.html

  * igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier-source-clamping:
    - shard-rkl:          NOTRUN -> [SKIP][163] ([i915#15709]) +2 other tests skip
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_plane@pixel-format-4-tiled-lnl-ccs-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier:
    - shard-dg2:          NOTRUN -> [SKIP][164] ([i915#15709]) +1 other test skip
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-6/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier.html
    - shard-tglu-1:       NOTRUN -> [SKIP][165] ([i915#15709]) +1 other test skip
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-cc-modifier.html

  * igt@kms_plane@pixel-format-x-tiled-modifier@pipe-b-plane-7:
    - shard-tglu-1:       NOTRUN -> [SKIP][166] ([i915#16386]) +1 other test skip
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_plane@pixel-format-x-tiled-modifier@pipe-b-plane-7.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-a-plane-5:
    - shard-rkl:          NOTRUN -> [SKIP][167] ([i915#16386]) +1 other test skip
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-a-plane-5.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-b-plane-7:
    - shard-tglu:         NOTRUN -> [SKIP][168] ([i915#16386]) +1 other test skip
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_plane@pixel-format-y-tiled-gen12-rc-ccs-cc-modifier@pipe-b-plane-7.html

  * igt@kms_plane_alpha_blend@alpha-transparent-fb:
    - shard-glk:          NOTRUN -> [FAIL][169] ([i915#10647] / [i915#12177])
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk3/igt@kms_plane_alpha_blend@alpha-transparent-fb.html

  * igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-a-hdmi-a-1:
    - shard-glk:          NOTRUN -> [FAIL][170] ([i915#10647]) +1 other test fail
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk3/igt@kms_plane_alpha_blend@alpha-transparent-fb@pipe-a-hdmi-a-1.html

  * igt@kms_plane_multiple@2x-tiling-none:
    - shard-tglu-1:       NOTRUN -> [SKIP][171] ([i915#13958])
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_plane_multiple@2x-tiling-none.html

  * igt@kms_plane_multiple@2x-tiling-y:
    - shard-rkl:          NOTRUN -> [SKIP][172] ([i915#13958])
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-5/igt@kms_plane_multiple@2x-tiling-y.html

  * igt@kms_plane_multiple@tiling-y:
    - shard-dg2:          NOTRUN -> [SKIP][173] ([i915#14259])
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_plane_multiple@tiling-y.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-rkl:          NOTRUN -> [SKIP][174] ([i915#6953])
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c:
    - shard-rkl:          NOTRUN -> [SKIP][175] ([i915#15329]) +3 other tests skip
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_plane_scaling@plane-upscale-factor-0-25-with-rotation@pipe-c.html

  * igt@kms_pm_backlight@bad-brightness:
    - shard-rkl:          NOTRUN -> [SKIP][176] ([i915#12343] / [i915#5354])
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_pm_backlight@bad-brightness.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-tglu:         NOTRUN -> [SKIP][177] ([i915#12343] / [i915#9812]) +1 other test skip
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][178] ([i915#15739])
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_pm_dc@dc9-dpms.html
    - shard-tglu:         NOTRUN -> [SKIP][179] ([i915#15739])
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-3/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_pm_lpsp@screens-disabled:
    - shard-dg2:          NOTRUN -> [SKIP][180] ([i915#8430])
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_pm_lpsp@screens-disabled.html

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-rkl:          [PASS][181] -> [SKIP][182] ([i915#15073]) +1 other test skip
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-5/igt@kms_pm_rpm@dpms-lpsp.html
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-4/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-dg1:          [PASS][183] -> [SKIP][184] ([i915#15073])
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg1-15/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg1-18/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_pm_rpm@pc8-residency:
    - shard-dg2:          NOTRUN -> [SKIP][185] +3 other tests skip
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_pm_rpm@pc8-residency.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-sf:
    - shard-glk:          NOTRUN -> [SKIP][186] ([i915#11520]) +7 other tests skip
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk3/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@fbc-pr-overlay-primary-update-sf-dmg-area:
    - shard-tglu-1:       NOTRUN -> [SKIP][187] ([i915#11520]) +3 other tests skip
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_psr2_sf@fbc-pr-overlay-primary-update-sf-dmg-area.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf:
    - shard-glk10:        NOTRUN -> [SKIP][188] ([i915#11520]) +4 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk10/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html

  * igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-dg2:          NOTRUN -> [SKIP][189] ([i915#11520])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf:
    - shard-tglu:         NOTRUN -> [SKIP][190] ([i915#11520]) +4 other tests skip
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-sf:
    - shard-glk11:        NOTRUN -> [SKIP][191] ([i915#11520])
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk11/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area:
    - shard-rkl:          NOTRUN -> [SKIP][192] ([i915#11520]) +5 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@kms_psr2_sf@psr2-overlay-plane-update-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-tglu:         NOTRUN -> [SKIP][193] ([i915#9683])
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-tglu-1:       NOTRUN -> [SKIP][194] ([i915#9683])
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@fbc-pr-sprite-render:
    - shard-tglu-1:       NOTRUN -> [SKIP][195] ([i915#9732]) +9 other tests skip
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_psr@fbc-pr-sprite-render.html

  * igt@kms_psr@fbc-psr-no-drrs:
    - shard-tglu:         NOTRUN -> [SKIP][196] ([i915#9732]) +8 other tests skip
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_psr@fbc-psr-no-drrs.html

  * igt@kms_psr@pr-primary-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][197] ([i915#1072] / [i915#9732]) +5 other tests skip
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_psr@pr-primary-mmap-gtt.html

  * igt@kms_psr@psr2-primary-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][198] ([i915#1072] / [i915#9732]) +16 other tests skip
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_psr@psr2-primary-mmap-gtt.html

  * igt@kms_rotation_crc@bad-pixel-format:
    - shard-dg2:          NOTRUN -> [SKIP][199] ([i915#12755] / [i915#15867])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_rotation_crc@bad-pixel-format.html

  * igt@kms_rotation_crc@multiplane-rotation:
    - shard-glk:          NOTRUN -> [INCOMPLETE][200] ([i915#15492] / [i915#16184])
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk3/igt@kms_rotation_crc@multiplane-rotation.html

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-180:
    - shard-tglu-1:       NOTRUN -> [SKIP][201] ([i915#5289])
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@kms_rotation_crc@primary-4-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-rkl:          NOTRUN -> [SKIP][202] ([i915#5289])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-tglu:         NOTRUN -> [SKIP][203] ([i915#5289])
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-dg2:          NOTRUN -> [SKIP][204] ([i915#12755] / [i915#15867] / [i915#5190])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_scaling_modes@scaling-mode-full:
    - shard-tglu:         NOTRUN -> [SKIP][205] ([i915#3555]) +2 other tests skip
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@kms_scaling_modes@scaling-mode-full.html

  * igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_create:
    - shard-glk:          [PASS][206] -> [ABORT][207] ([i915#13179])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-glk2/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_create.html
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk9/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_create.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-glk11:        NOTRUN -> [FAIL][208] ([i915#10959])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk11/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_vrr@max-min:
    - shard-dg2:          NOTRUN -> [SKIP][209] ([i915#9906])
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@kms_vrr@max-min.html

  * igt@kms_vrr@seamless-rr-switch-drrs:
    - shard-rkl:          NOTRUN -> [SKIP][210] ([i915#9906]) +1 other test skip
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_vrr@seamless-rr-switch-drrs.html

  * igt@perf@unprivileged-single-ctx-counters:
    - shard-rkl:          NOTRUN -> [SKIP][211] ([i915#2433])
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@perf@unprivileged-single-ctx-counters.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-tglu-1:       NOTRUN -> [SKIP][212] ([i915#8516])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-1/igt@perf_pmu@rc6-all-gts.html

  * igt@prime_udl@share-import-addfb:
    - shard-rkl:          NOTRUN -> [SKIP][213] ([i915#16420])
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@prime_udl@share-import-addfb.html
    - shard-tglu:         NOTRUN -> [SKIP][214] ([i915#16420])
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-tglu-7/igt@prime_udl@share-import-addfb.html

  * igt@prime_vgem@basic-fence-flip:
    - shard-dg2:          NOTRUN -> [SKIP][215] ([i915#3708])
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-5/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-fence-read:
    - shard-rkl:          NOTRUN -> [SKIP][216] ([i915#3291] / [i915#3708])
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@prime_vgem@basic-fence-read.html

  
#### Possible fixes ####

  * igt@gem_linear_blits@interruptible:
    - shard-dg1:          [FAIL][217] ([i915#15391] / [i915#16503]) -> [PASS][218]
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg1-14/igt@gem_linear_blits@interruptible.html
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg1-18/igt@gem_linear_blits@interruptible.html

  * igt@gem_workarounds@suspend-resume-context:
    - shard-rkl:          [INCOMPLETE][219] ([i915#13356]) -> [PASS][220]
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@gem_workarounds@suspend-resume-context.html
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-8/igt@gem_workarounds@suspend-resume-context.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
    - shard-rkl:          [INCOMPLETE][221] ([i915#4817]) -> [PASS][222] +1 other test pass
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@i915_suspend@fence-restore-tiled2untiled.html
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@i915_suspend@fence-restore-tiled2untiled.html

  * igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt:
    - shard-dg2:          [SKIP][223] ([i915#15989]) -> [PASS][224] +3 other tests pass
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg2-8/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt.html
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-10/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-shrfb-plflip-blt:
    - shard-rkl:          [SKIP][225] ([i915#15989]) -> [PASS][226] +11 other tests pass
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-4/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-shrfb-plflip-blt.html
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-1/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@hdr-1p-primscrn-cur-indfb-move:
    - shard-glk:          [SKIP][227] -> [PASS][228] +10 other tests pass
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-glk4/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-cur-indfb-move.html
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk8/igt@kms_frontbuffer_tracking@hdr-1p-primscrn-cur-indfb-move.html

  * igt@kms_hdr@static-toggle:
    - shard-rkl:          [SKIP][229] ([i915#3555] / [i915#8228]) -> [PASS][230]
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-4/igt@kms_hdr@static-toggle.html
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-1/igt@kms_hdr@static-toggle.html

  * igt@kms_joiner@invalid-modeset-force-big-joiner:
    - shard-dg2:          [SKIP][231] ([i915#15459]) -> [PASS][232]
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg2-8/igt@kms_joiner@invalid-modeset-force-big-joiner.html
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-10/igt@kms_joiner@invalid-modeset-force-big-joiner.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b:
    - shard-rkl:          [ABORT][233] ([i915#15132]) -> [PASS][234] +1 other test pass
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-1/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-3/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html

  * igt@kms_pm_rpm@i2c:
    - shard-dg1:          [DMESG-WARN][235] ([i915#4423]) -> [PASS][236] +1 other test pass
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg1-17/igt@kms_pm_rpm@i2c.html
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg1-19/igt@kms_pm_rpm@i2c.html

  * igt@kms_pm_rpm@modeset-lpsp-stress:
    - shard-dg1:          [SKIP][237] ([i915#15073]) -> [PASS][238] +1 other test pass
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg1-18/igt@kms_pm_rpm@modeset-lpsp-stress.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg1-14/igt@kms_pm_rpm@modeset-lpsp-stress.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-rkl:          [SKIP][239] ([i915#15073]) -> [PASS][240] +2 other tests pass
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-5/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-4/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@perf_pmu@busy-double-start@rcs0:
    - shard-mtlp:         [FAIL][241] ([i915#4349]) -> [PASS][242]
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-mtlp-5/igt@perf_pmu@busy-double-start@rcs0.html
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-mtlp-2/igt@perf_pmu@busy-double-start@rcs0.html

  
#### Warnings ####

  * igt@device_reset@cold-reset-bound:
    - shard-rkl:          [SKIP][243] ([i915#11078] / [i915#14544]) -> [SKIP][244] ([i915#11078])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@device_reset@cold-reset-bound.html
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@device_reset@cold-reset-bound.html

  * igt@gem_close_race@multigpu-basic-threads:
    - shard-rkl:          [SKIP][245] ([i915#7697]) -> [SKIP][246] ([i915#14544] / [i915#7697])
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@gem_close_race@multigpu-basic-threads.html
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@gem_close_race@multigpu-basic-threads.html

  * igt@gem_ctx_sseu@invalid-sseu:
    - shard-rkl:          [SKIP][247] ([i915#14544] / [i915#280]) -> [SKIP][248] ([i915#280])
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@gem_ctx_sseu@invalid-sseu.html
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@gem_ctx_sseu@invalid-sseu.html

  * igt@gem_exec_balancer@parallel-keep-submit-fence:
    - shard-rkl:          [SKIP][249] ([i915#14544] / [i915#4525]) -> [SKIP][250] ([i915#4525]) +1 other test skip
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@gem_exec_balancer@parallel-keep-submit-fence.html
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@gem_exec_balancer@parallel-keep-submit-fence.html

  * igt@gem_exec_balancer@parallel-ordering:
    - shard-rkl:          [SKIP][251] ([i915#4525]) -> [SKIP][252] ([i915#14544] / [i915#4525])
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@gem_exec_balancer@parallel-ordering.html
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@gem_exec_balancer@parallel-ordering.html

  * igt@gem_exec_reloc@basic-wc-active:
    - shard-rkl:          [SKIP][253] ([i915#14544] / [i915#3281]) -> [SKIP][254] ([i915#3281]) +2 other tests skip
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@gem_exec_reloc@basic-wc-active.html
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@gem_exec_reloc@basic-wc-active.html

  * igt@gem_exec_reloc@basic-wc-gtt-active:
    - shard-rkl:          [SKIP][255] ([i915#3281]) -> [SKIP][256] ([i915#14544] / [i915#3281]) +1 other test skip
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@gem_exec_reloc@basic-wc-gtt-active.html
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@gem_exec_reloc@basic-wc-gtt-active.html

  * igt@gem_lmem_swapping@heavy-verify-multi-ccs:
    - shard-rkl:          [SKIP][257] ([i915#4613]) -> [SKIP][258] ([i915#14544] / [i915#4613])
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@gem_lmem_swapping@heavy-verify-multi-ccs.html

  * igt@gem_partial_pwrite_pread@writes-after-reads-snoop:
    - shard-rkl:          [SKIP][259] ([i915#3282]) -> [SKIP][260] ([i915#14544] / [i915#3282])
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-2/igt@gem_partial_pwrite_pread@writes-after-reads-snoop.html
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@gem_partial_pwrite_pread@writes-after-reads-snoop.html

  * igt@gem_pread@exhaustion:
    - shard-rkl:          [SKIP][261] ([i915#14544] / [i915#3282]) -> [SKIP][262] ([i915#3282])
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@gem_pread@exhaustion.html
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@gem_pread@exhaustion.html

  * igt@gem_userptr_blits@readonly-unsync:
    - shard-rkl:          [SKIP][263] ([i915#3297]) -> [SKIP][264] ([i915#14544] / [i915#3297]) +1 other test skip
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-2/igt@gem_userptr_blits@readonly-unsync.html
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@gem_userptr_blits@readonly-unsync.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-rkl:          [SKIP][265] ([i915#14544] / [i915#2527]) -> [SKIP][266] ([i915#2527])
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@gen9_exec_parse@allowed-single.html
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@batch-without-end:
    - shard-rkl:          [SKIP][267] ([i915#2527]) -> [SKIP][268] ([i915#14544] / [i915#2527])
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@gen9_exec_parse@batch-without-end.html
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@gen9_exec_parse@batch-without-end.html

  * igt@i915_pm_freq_api@freq-reset-multiple:
    - shard-rkl:          [SKIP][269] ([i915#8399]) -> [SKIP][270] ([i915#14544] / [i915#8399])
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@i915_pm_freq_api@freq-reset-multiple.html
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@i915_pm_freq_api@freq-reset-multiple.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-rkl:          [SKIP][271] ([i915#5286]) -> [SKIP][272] ([i915#14544] / [i915#5286])
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180:
    - shard-rkl:          [SKIP][273] ([i915#14544] / [i915#5286]) -> [SKIP][274] ([i915#5286]) +1 other test skip
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180.html
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180.html

  * igt@kms_big_fb@linear-8bpp-rotate-270:
    - shard-rkl:          [SKIP][275] ([i915#3638]) -> [SKIP][276] ([i915#14544] / [i915#3638]) +2 other tests skip
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_big_fb@linear-8bpp-rotate-270.html
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_big_fb@linear-8bpp-rotate-270.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-270:
    - shard-rkl:          [SKIP][277] ([i915#14544] / [i915#3638]) -> [SKIP][278] ([i915#3638])
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html

  * igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2:
    - shard-rkl:          [SKIP][279] ([i915#6095]) -> [SKIP][280] ([i915#14544] / [i915#6095]) +8 other tests skip
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2.html
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_ccs@bad-aux-stride-4-tiled-mtl-mc-ccs@pipe-a-hdmi-a-2.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs:
    - shard-rkl:          [SKIP][281] ([i915#14098] / [i915#14544] / [i915#6095]) -> [SKIP][282] ([i915#14098] / [i915#6095]) +11 other tests skip
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs.html
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          [SKIP][283] ([i915#14544] / [i915#6095]) -> [SKIP][284] ([i915#6095]) +11 other tests skip
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-2.html
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs:
    - shard-rkl:          [SKIP][285] ([i915#14098] / [i915#6095]) -> [SKIP][286] ([i915#14098] / [i915#14544] / [i915#6095]) +10 other tests skip
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs.html
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-mtl-mc-ccs.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-rkl:          [SKIP][287] ([i915#3742]) -> [SKIP][288] ([i915#14544] / [i915#3742])
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_cdclk@mode-transition-all-outputs.html
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_chamelium_audio@dp-audio-after-suspend:
    - shard-rkl:          [SKIP][289] ([i915#11151]) -> [SKIP][290] ([i915#11151] / [i915#14544])
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-2/igt@kms_chamelium_audio@dp-audio-after-suspend.html
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_chamelium_audio@dp-audio-after-suspend.html

  * igt@kms_chamelium_color_pipeline@plane-lut1d-lut1d:
    - shard-rkl:          [SKIP][291] ([i915#16471]) -> [SKIP][292] ([i915#14544] / [i915#16471])
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_chamelium_color_pipeline@plane-lut1d-lut1d.html
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_chamelium_color_pipeline@plane-lut1d-lut1d.html

  * igt@kms_chamelium_edid@dp-mode-timings:
    - shard-rkl:          [SKIP][293] ([i915#11151] / [i915#7828]) -> [SKIP][294] ([i915#11151] / [i915#14544] / [i915#7828]) +3 other tests skip
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-2/igt@kms_chamelium_edid@dp-mode-timings.html
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_chamelium_edid@dp-mode-timings.html

  * igt@kms_chamelium_frames@dp-crc-multiple:
    - shard-rkl:          [SKIP][295] ([i915#11151] / [i915#14544] / [i915#7828]) -> [SKIP][296] ([i915#11151] / [i915#7828]) +2 other tests skip
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_chamelium_frames@dp-crc-multiple.html
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_chamelium_frames@dp-crc-multiple.html

  * igt@kms_content_protection@srm:
    - shard-rkl:          [SKIP][297] ([i915#14544] / [i915#15865]) -> [SKIP][298] ([i915#15865]) +1 other test skip
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_content_protection@srm.html
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@cursor-onscreen-max-size:
    - shard-rkl:          [SKIP][299] ([i915#14544] / [i915#3555]) -> [SKIP][300] ([i915#3555])
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-max-size.html
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_cursor_crc@cursor-onscreen-max-size.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x170:
    - shard-rkl:          [SKIP][301] ([i915#13049]) -> [SKIP][302] ([i915#13049] / [i915#14544])
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
    - shard-rkl:          [SKIP][303] -> [SKIP][304] ([i915#14544]) +25 other tests skip
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
    - shard-rkl:          [SKIP][305] ([i915#14544] / [i915#4103]) -> [SKIP][306] ([i915#4103]) +1 other test skip
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-rkl:          [SKIP][307] ([i915#13691]) -> [SKIP][308] ([i915#13691] / [i915#14544])
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-2/igt@kms_display_modes@extended-mode-basic.html
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_dp_link_training@non-uhbr-sst:
    - shard-rkl:          [SKIP][309] ([i915#13749] / [i915#14544]) -> [SKIP][310] ([i915#13749])
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_dp_link_training@non-uhbr-sst.html
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_dp_link_training@non-uhbr-sst.html

  * igt@kms_dsc@dsc-with-bpc:
    - shard-rkl:          [SKIP][311] ([i915#16361]) -> [SKIP][312] ([i915#14544] / [i915#16361])
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-2/igt@kms_dsc@dsc-with-bpc.html
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_dsc@dsc-with-bpc.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-rkl:          [SKIP][313] ([i915#3955]) -> [SKIP][314] ([i915#14544] / [i915#3955])
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_fbcon_fbt@psr-suspend.html
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_feature_discovery@dp-mst:
    - shard-rkl:          [SKIP][315] ([i915#9337]) -> [SKIP][316] ([i915#14544] / [i915#9337])
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_feature_discovery@dp-mst.html
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_feature_discovery@dp-mst.html

  * igt@kms_feature_discovery@psr1:
    - shard-rkl:          [SKIP][317] ([i915#14544] / [i915#658]) -> [SKIP][318] ([i915#658])
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_feature_discovery@psr1.html
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip@2x-flip-vs-fences-interruptible:
    - shard-rkl:          [SKIP][319] ([i915#9934]) -> [SKIP][320] ([i915#14544] / [i915#9934]) +1 other test skip
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_flip@2x-flip-vs-fences-interruptible.html
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_flip@2x-flip-vs-fences-interruptible.html

  * igt@kms_flip@2x-plain-flip:
    - shard-rkl:          [SKIP][321] ([i915#14544] / [i915#9934]) -> [SKIP][322] ([i915#9934]) +3 other tests skip
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_flip@2x-plain-flip.html
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_flip@2x-plain-flip.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling:
    - shard-rkl:          [SKIP][323] ([i915#14544] / [i915#15643]) -> [SKIP][324] ([i915#15643])
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling:
    - shard-rkl:          [SKIP][325] ([i915#15643]) -> [SKIP][326] ([i915#14544] / [i915#15643]) +1 other test skip
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling.html

  * igt@kms_frontbuffer_tracking@fbchdr-suspend:
    - shard-rkl:          [SKIP][327] ([i915#15989]) -> [INCOMPLETE][328] ([i915#16056])
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-2/igt@kms_frontbuffer_tracking@fbchdr-suspend.html
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbchdr-suspend.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt:
    - shard-rkl:          [SKIP][329] ([i915#1825]) -> [SKIP][330] ([i915#14544] / [i915#1825]) +1 other test skip
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt.html
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-shrfb-scaledprimary:
    - shard-dg2:          [SKIP][331] ([i915#10433] / [i915#15102]) -> [SKIP][332] ([i915#15102]) +2 other tests skip
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-shrfb-scaledprimary.html
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-7/igt@kms_frontbuffer_tracking@fbcpsr-shrfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-offscreen-pri-indfb-draw-mmap-cpu:
    - shard-rkl:          [SKIP][333] ([i915#15102]) -> [SKIP][334] ([i915#14544] / [i915#15102]) +9 other tests skip
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-offscreen-pri-indfb-draw-mmap-cpu.html
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-offscreen-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-spr-indfb-draw-blt:
    - shard-rkl:          [SKIP][335] ([i915#14544] / [i915#15102]) -> [SKIP][336] ([i915#15102]) +8 other tests skip
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-spr-indfb-draw-blt.html
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@hdr-suspend:
    - shard-glk:          [INCOMPLETE][337] ([i915#16056]) -> [SKIP][338]
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-glk8/igt@kms_frontbuffer_tracking@hdr-suspend.html
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk3/igt@kms_frontbuffer_tracking@hdr-suspend.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move:
    - shard-rkl:          [SKIP][339] ([i915#14544] / [i915#15102] / [i915#3023]) -> [SKIP][340] ([i915#15102] / [i915#3023]) +5 other tests skip
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-wc:
    - shard-dg1:          [SKIP][341] ([i915#15990] / [i915#4423] / [i915#8708]) -> [SKIP][342] ([i915#15990] / [i915#8708]) +1 other test skip
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-wc.html
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg1-14/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt:
    - shard-dg2:          [SKIP][343] ([i915#15102]) -> [SKIP][344] ([i915#10433] / [i915#15102])
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg2-5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt.html
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render:
    - shard-dg1:          [SKIP][345] ([i915#4423]) -> [SKIP][346] +3 other tests skip
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg1-18/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render.html
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg1-14/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render:
    - shard-rkl:          [SKIP][347] ([i915#15102] / [i915#3023]) -> [SKIP][348] ([i915#14544] / [i915#15102] / [i915#3023]) +5 other tests skip
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render.html
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render.html

  * igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-dg1:          [SKIP][349] ([i915#15990] / [i915#4423]) -> [SKIP][350] ([i915#15990])
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg1-17/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-cur-indfb-draw-mmap-wc.html
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg1-19/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-cur-indfb-onoff:
    - shard-rkl:          [SKIP][351] ([i915#14544]) -> [SKIP][352] +28 other tests skip
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-cur-indfb-onoff.html
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-cur-indfb-onoff.html

  * igt@kms_joiner@basic-force-big-joiner:
    - shard-rkl:          [SKIP][353] ([i915#15459]) -> [SKIP][354] ([i915#14544] / [i915#15459])
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-2/igt@kms_joiner@basic-force-big-joiner.html
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_joiner@basic-force-big-joiner.html

  * igt@kms_mst@mst-suspend-read-crc:
    - shard-rkl:          [SKIP][355] ([i915#16451]) -> [SKIP][356] ([i915#14544] / [i915#16451])
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_mst@mst-suspend-read-crc.html
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_mst@mst-suspend-read-crc.html

  * igt@kms_panel_fitting@atomic-fastset:
    - shard-rkl:          [SKIP][357] ([i915#14544] / [i915#6301]) -> [SKIP][358] ([i915#6301])
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_panel_fitting@atomic-fastset.html
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_panel_fitting@atomic-fastset.html

  * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping:
    - shard-rkl:          [SKIP][359] ([i915#14544] / [i915#15709]) -> [SKIP][360] ([i915#15709]) +2 other tests skip
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping.html
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier:
    - shard-rkl:          [SKIP][361] ([i915#15709]) -> [SKIP][362] ([i915#14544] / [i915#15709]) +1 other test skip
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-2/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier.html

  * igt@kms_pm_backlight@fade:
    - shard-rkl:          [SKIP][363] ([i915#12343] / [i915#14544] / [i915#5354]) -> [SKIP][364] ([i915#12343] / [i915#5354])
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_pm_backlight@fade.html
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_pm_backlight@fade.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-rkl:          [SKIP][365] ([i915#12343] / [i915#5354]) -> [SKIP][366] ([i915#12343] / [i915#14544] / [i915#5354])
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_pm_backlight@fade-with-dpms.html
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-dg1:          [SKIP][367] ([i915#3828]) -> [SKIP][368] ([i915#9340])
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-dg1-15/igt@kms_pm_lpsp@kms-lpsp.html
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-dg1-12/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf:
    - shard-rkl:          [SKIP][369] ([i915#11520] / [i915#14544]) -> [SKIP][370] ([i915#11520]) +3 other tests skip
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf.html
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf:
    - shard-rkl:          [SKIP][371] ([i915#11520]) -> [SKIP][372] ([i915#11520] / [i915#14544]) +3 other tests skip
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-rkl:          [SKIP][373] ([i915#9683]) -> [SKIP][374] ([i915#14544] / [i915#9683]) +1 other test skip
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-2/igt@kms_psr2_su@frontbuffer-xrgb8888.html
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@pr-suspend:
    - shard-rkl:          [SKIP][375] ([i915#1072] / [i915#14544] / [i915#9732]) -> [SKIP][376] ([i915#1072] / [i915#9732]) +4 other tests skip
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_psr@pr-suspend.html
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_psr@pr-suspend.html

  * igt@kms_psr@psr2-sprite-mmap-cpu:
    - shard-rkl:          [SKIP][377] ([i915#1072] / [i915#9732]) -> [SKIP][378] ([i915#1072] / [i915#14544] / [i915#9732]) +5 other tests skip
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_psr@psr2-sprite-mmap-cpu.html
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_psr@psr2-sprite-mmap-cpu.html

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-0:
    - shard-rkl:          [SKIP][379] ([i915#14544] / [i915#5289]) -> [SKIP][380] ([i915#5289])
   [379]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@kms_rotation_crc@primary-4-tiled-reflect-x-0.html
   [380]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@kms_rotation_crc@primary-4-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-rkl:          [SKIP][381] ([i915#5289]) -> [SKIP][382] ([i915#14544] / [i915#5289])
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_free:
    - shard-glk:          [ABORT][383] ([i915#13179]) -> [DMESG-FAIL][384] ([i915#13179])
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-glk2/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_free.html
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-glk9/igt@kms_selftest@drm_framebuffer@drm_test_framebuffer_free.html

  * igt@kms_setmode@clone-exclusive-crtc:
    - shard-rkl:          [SKIP][385] ([i915#3555]) -> [SKIP][386] ([i915#14544] / [i915#3555]) +2 other tests skip
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@kms_setmode@clone-exclusive-crtc.html
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@kms_setmode@clone-exclusive-crtc.html

  * igt@perf@mi-rpc:
    - shard-rkl:          [SKIP][387] ([i915#2434]) -> [SKIP][388] ([i915#14544] / [i915#2434])
   [387]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-7/igt@perf@mi-rpc.html
   [388]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-6/igt@perf@mi-rpc.html

  * igt@sriov_basic@enable-vfs-autoprobe-off:
    - shard-rkl:          [SKIP][389] ([i915#14544] / [i915#9917]) -> [SKIP][390] ([i915#9917]) +1 other test skip
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_18778/shard-rkl-6/igt@sriov_basic@enable-vfs-autoprobe-off.html
   [390]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/shard-rkl-7/igt@sriov_basic@enable-vfs-autoprobe-off.html

  
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10647]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10647
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10959]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10959
  [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
  [i915#11151]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11151
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#12177]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12177
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12343
  [i915#1257]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1257
  [i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713
  [i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
  [i915#13027]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13027
  [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
  [i915#13179]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13179
  [i915#13356]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13356
  [i915#13363]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13363
  [i915#13566]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13566
  [i915#13691]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13691
  [i915#13748]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13748
  [i915#13749]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13749
  [i915#13790]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13790
  [i915#13820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13820
  [i915#13958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13958
  [i915#14098]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14098
  [i915#14118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14118
  [i915#14123]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14123
  [i915#14259]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14259
  [i915#14544]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14544
  [i915#14712]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14712
  [i915#14896]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14896
  [i915#15073]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15073
  [i915#15102]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15102
  [i915#15132]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15132
  [i915#15329]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15329
  [i915#15330]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15330
  [i915#15342]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15342
  [i915#15391]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15391
  [i915#15459]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15459
  [i915#15460]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15460
  [i915#15479]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15479
  [i915#15492]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15492
  [i915#15582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15582
  [i915#15643]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15643
  [i915#15709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15709
  [i915#15739]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15739
  [i915#15804]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15804
  [i915#15865]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15865
  [i915#15867]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15867
  [i915#15989]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15989
  [i915#15990]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15990
  [i915#15991]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15991
  [i915#16056]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16056
  [i915#16080]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16080
  [i915#16081]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16081
  [i915#16166]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16166
  [i915#16182]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16182
  [i915#16184]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16184
  [i915#16361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16361
  [i915#16386]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16386
  [i915#16420]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16420
  [i915#16451]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16451
  [i915#16471]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16471
  [i915#16503]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16503
  [i915#16518]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16518
  [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#2433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2434
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2658
  [i915#2681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2681
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3323
  [i915#3469]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3469
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3742]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3742
  [i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
  [i915#3955]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3955
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4817
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6301]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6301
  [i915#6334]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6334
  [i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
  [i915#7276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7276
  [i915#7443]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7443
  [i915#7582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7582
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8430]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8430
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9337]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9337
  [i915#9340]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9340
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9723]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9723
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
  [i915#9906]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9906
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934


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

  * Linux: CI_DRM_18778 -> Patchwork_169937v1

  CI-20190529: 20190529
  CI_DRM_18778: ee2867b79f9bac3a6fc3221139b09598ce79099c @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8991: c5721520bb6611ab8fcbe27db0c120b72d25b99e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_169937v1: ee2867b79f9bac3a6fc3221139b09598ce79099c @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_169937v1/index.html

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

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

end of thread, other threads:[~2026-07-08 10:37 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-07 14:12 [PATCH v5 1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Arunpravin Paneer Selvam
2026-07-07 14:12 ` [PATCH v5 2/2] gpu/tests/buddy: add dirty tracker performance KUnit test Arunpravin Paneer Selvam
2026-07-07 14:24   ` sashiko-bot
2026-07-07 14:22 ` ✓ CI.KUnit: success for series starting with [v5,1/2] gpu/buddy: replace dual-tree/force_merge with decoupled dirty tracker Patchwork
2026-07-07 14:26 ` [PATCH v5 1/2] " sashiko-bot
2026-07-07 14:38 ` ✗ CI.checksparse: warning for series starting with [v5,1/2] " Patchwork
2026-07-07 15:00 ` ✓ Xe.CI.BAT: success " Patchwork
2026-07-07 16:52 ` ✓ i915.CI.BAT: " Patchwork
2026-07-07 17:27 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-07-08 10:37 ` ✓ i915.CI.Full: success " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.