Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove
@ 2026-11-10 19:00 Umesh Nerlige Ramappa
  2026-11-10 19:00 ` [PATCH v5 1/7] drm/xe/oa: Use the drm device address_space for the OA stream fd Umesh Nerlige Ramappa
                   ` (9 more replies)
  0 siblings, 10 replies; 15+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-11-10 19:00 UTC (permalink / raw)
  To: intel-xe, shekhar.chauhan; +Cc: harish.chegondi

When an OA stream FD is open, removing the PCI device due to PCIe errors
or doing an unbind causes a NPD and system reboots. While OA registers a
fini handler with devm, the handler does not take into account active OA
connections.

Add code to quiesce OA connection on PCI remove/unbind.

v2: Sashiko Comments
v3: More Sashiko fixes and refactor
v4: More Sashiko fixes and refactor
v5: Drop unpinning of BO in quiesce (Sashiko)

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

Umesh Nerlige Ramappa (7):
  drm/xe/oa: Use the drm device address_space for the OA stream fd
  drm/xe/oa: Split OA stream destroy into HW teardown and resource
    release
  drm/xe/oa: Take the runtime PM reference in xe_oa_destroy_locked()
  drm/xe/oa: Skip OA HW teardown on a wedged device
  drm/xe/oa: Wait for in-flight OA batches before stream HW teardown
  drm/xe: Reject vm_ops->access on BO mappings of an unplugged device
  drm/xe/oa: Quiesce OA streams on driver unbind and PCI reset

 drivers/gpu/drm/xe/xe_bo.c          |  15 +-
 drivers/gpu/drm/xe/xe_oa.c          | 335 ++++++++++++++++++++++++----
 drivers/gpu/drm/xe/xe_oa_types.h    |   3 +
 drivers/gpu/drm/xe/xe_observation.c |  23 +-
 4 files changed, 332 insertions(+), 44 deletions(-)

-- 
2.55.0


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

* [PATCH v5 1/7] drm/xe/oa: Use the drm device address_space for the OA stream fd
  2026-11-10 19:00 [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove Umesh Nerlige Ramappa
@ 2026-11-10 19:00 ` Umesh Nerlige Ramappa
  2026-11-10 19:00 ` [PATCH v5 2/7] drm/xe/oa: Split OA stream destroy into HW teardown and resource release Umesh Nerlige Ramappa
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-11-10 19:00 UTC (permalink / raw)
  To: intel-xe, shekhar.chauhan; +Cc: harish.chegondi

anon_inode_getfd() hands back a file whose f_mapping points at the
address_space of the kernel-wide singleton anon_inode_inode, shared by
every other anon_inode_getfd()/anon_inode_getfile() user in the system.
Any code that needs to invalidate userspace mappings of the OA buffer
via that mapping (e.g. unmap_mapping_range()) would end up operating on
an address_space it doesn't own, with the potential to affect unrelated
mappings.

Allocating a private inode with anon_inode_create_getfile() is not an
option, since that goes through security_inode_init_security_anon() and
is denied by SELinux policies that don't know about "[xe_oa]", breaking
OA on enforcing systems.

Instead, keep the anon inode singleton and only point the file's
f_mapping at the drm device's address_space (drm.anon_inode->i_mapping),
same as drm_file does for drm fds. f_mapping must be set before the fd
is visible to userspace, so reserve the fd with get_unused_fd_flags(),
create the file with anon_inode_getfile() and install it with
fd_install() after setting f_mapping.

To keep the OA buffer mmaps of different streams apart from each other
and from GEM mmaps in that shared address_space, reserve a GEM fake
offset for the OA buffer with drm_gem_create_mmap_offset(), and move
the vma to that offset in xe_oa_mmap() by setting vm_pgoff, the same
way drm_gem_prime_mmap() does. f_op->mmap runs before the vma is linked
into the address_space, so the vma is tracked at the OA buffer's own
range, and drm_vma_node_unmap() on the OA buffer only zaps mappings of
that buffer. The TTM fault handler already subtracts the fake offset
from vm_pgoff, so faults resolve to the right pages unchanged.

The uAPI is unchanged: userspace keeps mapping the OA buffer at offset
0 of the stream fd, which is now enforced. The fake offset is never
granted to a drm_file, so the OA buffer can't be mmap'ed via drm fds.
drm_dev_unplug() now also zaps OA buffer mmaps along with all other
mmaps of the drm device.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 drivers/gpu/drm/xe/xe_oa.c | 41 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 40 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
index 838802482ada..7e3ebba0300d 100644
--- a/drivers/gpu/drm/xe/xe_oa.c
+++ b/drivers/gpu/drm/xe/xe_oa.c
@@ -908,6 +908,7 @@ static int xe_oa_alloc_oa_buffer(struct xe_oa_stream *stream, size_t size)
 		XE_BO_FLAG_VRAM_IF_DGFX(xe_device_get_root_tile(stream->oa->xe)) :
 		XE_BO_FLAG_SYSTEM;
 	struct xe_bo *bo;
+	int ret;
 
 	bo = xe_bo_create_pin_map_novm(stream->oa->xe, stream->gt->tile,
 				       size, ttm_bo_type_kernel,
@@ -915,6 +916,17 @@ static int xe_oa_alloc_oa_buffer(struct xe_oa_stream *stream, size_t size)
 	if (IS_ERR(bo))
 		return PTR_ERR(bo);
 
+	/*
+	 * Reserve a range for the OA buffer in the drm device's address_space, so that its
+	 * userspace mmaps don't overlap with those of GEM BOs or other OA buffers and can be
+	 * unmapped on their own. Not granted to any drm_file, so not mmap'able via drm fds.
+	 */
+	ret = drm_gem_create_mmap_offset(&bo->ttm.base);
+	if (ret) {
+		xe_bo_unpin_map_no_vm(bo);
+		return ret;
+	}
+
 	/*
 	 * ttm_bo_type_kernel BOs are not zeroed on allocation, so the buffer can
 	 * hold stale data from previously freed pages. Since the OA buffer is
@@ -1722,6 +1734,15 @@ static int xe_oa_mmap(struct file *file, struct vm_area_struct *vma)
 		return ret;
 	}
 
+	/*
+	 * Userspace always maps the OA buffer at offset 0, the mapping is moved to the OA
+	 * buffer's own range in the drm device's address_space below
+	 */
+	if (vma->vm_pgoff) {
+		drm_dbg(&stream->oa->xe->drm, "Wrong mmap offset, must be 0\n");
+		return -EINVAL;
+	}
+
 	/* Can mmap the entire OA buffer or nothing (no partial OA buffer mmaps) */
 	if (vma->vm_end - vma->vm_start != xe_bo_size(bo)) {
 		drm_dbg(&stream->oa->xe->drm, "Wrong mmap size, must be OA buffer size\n");
@@ -1739,6 +1760,8 @@ static int xe_oa_mmap(struct file *file, struct vm_area_struct *vma)
 	vm_flags_mod(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_DONTCOPY,
 		     VM_MAYWRITE | VM_MAYEXEC);
 
+	vma->vm_pgoff = drm_vma_node_start(&bo->ttm.base.vma_node);
+
 	return drm_gem_mmap_obj(&bo->ttm.base, xe_bo_size(bo), vma);
 }
 
@@ -1869,6 +1892,7 @@ static int xe_oa_stream_open_ioctl_locked(struct xe_oa *oa,
 {
 	struct xe_oa_stream *stream;
 	struct drm_syncobj *ufence_syncobj;
+	struct file *file;
 	int stream_fd;
 	int ret;
 
@@ -1910,12 +1934,27 @@ static int xe_oa_stream_open_ioctl_locked(struct xe_oa *oa,
 			goto err_destroy;
 	}
 
-	stream_fd = anon_inode_getfd("[xe_oa]", &xe_oa_fops, stream, 0);
+	stream_fd = get_unused_fd_flags(0);
 	if (stream_fd < 0) {
 		ret = stream_fd;
 		goto err_disable;
 	}
 
+	file = anon_inode_getfile("[xe_oa]", &xe_oa_fops, stream, 0);
+	if (IS_ERR(file)) {
+		ret = PTR_ERR(file);
+		put_unused_fd(stream_fd);
+		goto err_disable;
+	}
+
+	/*
+	 * Don't use the address_space of the anon inode singleton, which is shared with
+	 * unrelated anon files. Use the drm device's address_space instead, same as drm fds.
+	 * OA buffer mmaps live at the OA buffer's own fake offset range there.
+	 */
+	file->f_mapping = oa->xe->drm.anon_inode->i_mapping;
+	fd_install(stream_fd, file);
+
 	if (stream->sample)
 		xe_reg_whitelist_oa_regs(stream->gt);
 
-- 
2.55.0


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

* [PATCH v5 2/7] drm/xe/oa: Split OA stream destroy into HW teardown and resource release
  2026-11-10 19:00 [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove Umesh Nerlige Ramappa
  2026-11-10 19:00 ` [PATCH v5 1/7] drm/xe/oa: Use the drm device address_space for the OA stream fd Umesh Nerlige Ramappa
@ 2026-11-10 19:00 ` Umesh Nerlige Ramappa
  2026-11-10 19:00 ` [PATCH v5 3/7] drm/xe/oa: Take the runtime PM reference in xe_oa_destroy_locked() Umesh Nerlige Ramappa
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-11-10 19:00 UTC (permalink / raw)
  To: intel-xe, shekhar.chauhan; +Cc: harish.chegondi

Split the body of xe_oa_stream_destroy() into xe_oa_stream_hw_teardown(),
which puts back the HW state (register whitelist, metric set) and drops
forcewake, and xe_oa_stream_free_resources(), which releases the SW
resources (kernel exec queue, runtime PM reference, configs, xe file
reference). The OA buffer is released on its own, ahead of the other
resources.

This lets a following patch release the stream resources without
touching the HW when the device is wedged, and another one keep the OA
buffer until the stream fd is released.

The only changes in behavior are that forcewake is now dropped before
the kernel exec queue and the OA buffer are released, neither of which
needs it, and that the OA buffer is released before the kernel exec
queue, which doesn't use it.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 drivers/gpu/drm/xe/xe_oa.c | 34 +++++++++++++++++++++-------------
 1 file changed, 21 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
index 7e3ebba0300d..b527c6258cd5 100644
--- a/drivers/gpu/drm/xe/xe_oa.c
+++ b/drivers/gpu/drm/xe/xe_oa.c
@@ -875,10 +875,28 @@ static void xe_oa_disable_metric_set(struct xe_oa_stream *stream)
 		xe_mmio_rmw32(mmio, OAM_COMPRESSION_T3_CONTROL, OAM_LAT_MEASURE_ENABLE, 0);
 }
 
+static void xe_oa_stream_hw_teardown(struct xe_oa_stream *stream)
+{
+	if (stream->sample)
+		xe_reg_dewhitelist_oa_regs(stream->gt);
+
+	xe_oa_disable_metric_set(stream);
+	xe_force_wake_put(gt_to_fw(stream->hwe->gt), stream->fw_ref);
+}
+
+static void xe_oa_stream_free_resources(struct xe_oa_stream *stream)
+{
+	xe_exec_queue_put(stream->k_exec_q);
+
+	xe_pm_runtime_put(stream->oa->xe);
+
+	xe_oa_free_configs(stream);
+	xe_file_put(stream->xef);
+}
+
 static void xe_oa_stream_destroy(struct xe_oa_stream *stream)
 {
 	struct xe_oa_unit *u = stream->oa_unit;
-	struct xe_gt *gt = stream->hwe->gt;
 
 	if (WARN_ON(stream != u->exclusive_stream))
 		return;
@@ -887,19 +905,9 @@ static void xe_oa_stream_destroy(struct xe_oa_stream *stream)
 
 	mutex_destroy(&stream->stream_lock);
 
-	if (stream->sample)
-		xe_reg_dewhitelist_oa_regs(stream->gt);
-
-	xe_oa_disable_metric_set(stream);
-	xe_exec_queue_put(stream->k_exec_q);
-
+	xe_oa_stream_hw_teardown(stream);
 	xe_oa_free_oa_buffer(stream);
-
-	xe_force_wake_put(gt_to_fw(gt), stream->fw_ref);
-	xe_pm_runtime_put(stream->oa->xe);
-
-	xe_oa_free_configs(stream);
-	xe_file_put(stream->xef);
+	xe_oa_stream_free_resources(stream);
 }
 
 static int xe_oa_alloc_oa_buffer(struct xe_oa_stream *stream, size_t size)
-- 
2.55.0


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

* [PATCH v5 3/7] drm/xe/oa: Take the runtime PM reference in xe_oa_destroy_locked()
  2026-11-10 19:00 [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove Umesh Nerlige Ramappa
  2026-11-10 19:00 ` [PATCH v5 1/7] drm/xe/oa: Use the drm device address_space for the OA stream fd Umesh Nerlige Ramappa
  2026-11-10 19:00 ` [PATCH v5 2/7] drm/xe/oa: Split OA stream destroy into HW teardown and resource release Umesh Nerlige Ramappa
@ 2026-11-10 19:00 ` Umesh Nerlige Ramappa
  2026-11-10 19:00 ` [PATCH v5 4/7] drm/xe/oa: Skip OA HW teardown on a wedged device Umesh Nerlige Ramappa
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 15+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-11-10 19:00 UTC (permalink / raw)
  To: intel-xe, shekhar.chauhan; +Cc: harish.chegondi

Move the runtime PM get/put around stream destruction from
xe_oa_release() into xe_oa_destroy_locked(), the only caller, so the
reference is held just around the code that needs the device awake.

This lets a following patch free a stream of a removed device without
taking a runtime PM reference on it. No functional change.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 drivers/gpu/drm/xe/xe_oa.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
index b527c6258cd5..3ddccc7e6f90 100644
--- a/drivers/gpu/drm/xe/xe_oa.c
+++ b/drivers/gpu/drm/xe/xe_oa.c
@@ -1702,6 +1702,8 @@ static long xe_oa_ioctl(struct file *file,
 
 static void xe_oa_destroy_locked(struct xe_oa_stream *stream)
 {
+	xe_pm_runtime_get(gt_to_xe(stream->gt));
+
 	if (stream->enabled)
 		xe_oa_disable_locked(stream);
 
@@ -1711,6 +1713,7 @@ static void xe_oa_destroy_locked(struct xe_oa_stream *stream)
 		xe_exec_queue_put(stream->exec_q);
 
 	drm_syncobj_put(stream->ufence_syncobj);
+	xe_pm_runtime_put(gt_to_xe(stream->gt));
 	kfree(stream);
 }
 
@@ -1719,11 +1722,9 @@ static int xe_oa_release(struct inode *inode, struct file *file)
 	struct xe_oa_stream *stream = file->private_data;
 	struct xe_gt *gt = stream->gt;
 
-	xe_pm_runtime_get(gt_to_xe(gt));
 	mutex_lock(&gt->oa.gt_lock);
 	xe_oa_destroy_locked(stream);
 	mutex_unlock(&gt->oa.gt_lock);
-	xe_pm_runtime_put(gt_to_xe(gt));
 
 	/* Release the reference the OA stream kept on the driver */
 	drm_dev_put(&gt_to_xe(gt)->drm);
-- 
2.55.0


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

* [PATCH v5 4/7] drm/xe/oa: Skip OA HW teardown on a wedged device
  2026-11-10 19:00 [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove Umesh Nerlige Ramappa
                   ` (2 preceding siblings ...)
  2026-11-10 19:00 ` [PATCH v5 3/7] drm/xe/oa: Take the runtime PM reference in xe_oa_destroy_locked() Umesh Nerlige Ramappa
@ 2026-11-10 19:00 ` Umesh Nerlige Ramappa
  2026-11-10 19:17   ` sashiko-bot
  2026-11-10 19:00 ` [PATCH v5 5/7] drm/xe/oa: Wait for in-flight OA batches before stream HW teardown Umesh Nerlige Ramappa
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 15+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-11-10 19:00 UTC (permalink / raw)
  To: intel-xe, shekhar.chauhan; +Cc: harish.chegondi

Closing a stream on a wedged device still disables the OA unit and
restores the OA HW state, including MMIO waits and batch submissions to
a device that may be unresponsive or, on a PCI error, disabled.

Skip that HW access when the device is wedged. The OA disable also
cancels the poll timer, so cancel it when destroying the stream instead,
so that it's never left armed on a freed stream.

Skipping the HW teardown also skips the forcewake put, which accesses
the HW as well, leaking the forcewake reference. That is fine, the
device needs a reset or rebind to recover, which reinitializes
forcewake.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 drivers/gpu/drm/xe/xe_oa.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
index 3ddccc7e6f90..8a3e1ac2a068 100644
--- a/drivers/gpu/drm/xe/xe_oa.c
+++ b/drivers/gpu/drm/xe/xe_oa.c
@@ -43,6 +43,7 @@
 #include "xe_sriov.h"
 #include "xe_sync.h"
 #include "xe_wa.h"
+#include "xe_wedge.h"
 
 #define DEFAULT_POLL_FREQUENCY_HZ 200
 #define DEFAULT_POLL_PERIOD_NS (NSEC_PER_SEC / DEFAULT_POLL_FREQUENCY_HZ)
@@ -875,6 +876,11 @@ static void xe_oa_disable_metric_set(struct xe_oa_stream *stream)
 		xe_mmio_rmw32(mmio, OAM_COMPRESSION_T3_CONTROL, OAM_LAT_MEASURE_ENABLE, 0);
 }
 
+/*
+ * Also drops forcewake, which accesses the HW too. On a wedged device this is skipped and
+ * the forcewake reference leaks, which is fine: the device needs a reset or rebind to
+ * recover, which reinitializes forcewake.
+ */
 static void xe_oa_stream_hw_teardown(struct xe_oa_stream *stream)
 {
 	if (stream->sample)
@@ -905,7 +911,12 @@ static void xe_oa_stream_destroy(struct xe_oa_stream *stream)
 
 	mutex_destroy(&stream->stream_lock);
 
-	xe_oa_stream_hw_teardown(stream);
+	/* The poll timer may still be armed if the OA disable was skipped */
+	hrtimer_cancel(&stream->poll_check_timer);
+
+	if (!xe_wedged(stream->oa->xe))
+		xe_oa_stream_hw_teardown(stream);
+
 	xe_oa_free_oa_buffer(stream);
 	xe_oa_stream_free_resources(stream);
 }
@@ -1704,7 +1715,8 @@ static void xe_oa_destroy_locked(struct xe_oa_stream *stream)
 {
 	xe_pm_runtime_get(gt_to_xe(stream->gt));
 
-	if (stream->enabled)
+	/* A wedged device may be unresponsive, skip HW access */
+	if (stream->enabled && !xe_wedged(gt_to_xe(stream->gt)))
 		xe_oa_disable_locked(stream);
 
 	xe_oa_stream_destroy(stream);
-- 
2.55.0


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

* [PATCH v5 5/7] drm/xe/oa: Wait for in-flight OA batches before stream HW teardown
  2026-11-10 19:00 [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove Umesh Nerlige Ramappa
                   ` (3 preceding siblings ...)
  2026-11-10 19:00 ` [PATCH v5 4/7] drm/xe/oa: Skip OA HW teardown on a wedged device Umesh Nerlige Ramappa
@ 2026-11-10 19:00 ` Umesh Nerlige Ramappa
  2026-11-10 19:25   ` sashiko-bot
  2026-11-10 19:00 ` [PATCH v5 6/7] drm/xe: Reject vm_ops->access on BO mappings of an unplugged device Umesh Nerlige Ramappa
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 15+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-11-10 19:00 UTC (permalink / raw)
  To: intel-xe, shekhar.chauhan; +Cc: harish.chegondi

Config batches submitted with output syncs and context LRI batches are
not waited for. If one is still in flight when the stream is closed, it
can program the OA registers after they were restored.

Both go to the same exec queue, so also record the LRI batch fence in
stream->last_fence, and wait for it before the HW teardown, bounded by
the job timeout of the exec queue.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
 drivers/gpu/drm/xe/xe_oa.c | 31 +++++++++++++++++++++++++------
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
index 8a3e1ac2a068..f3d3b2eaddd8 100644
--- a/drivers/gpu/drm/xe/xe_oa.c
+++ b/drivers/gpu/drm/xe/xe_oa.c
@@ -733,6 +733,12 @@ static void xe_oa_free_configs(struct xe_oa_stream *stream)
 	dma_fence_put(stream->last_fence);
 }
 
+static void xe_oa_update_last_fence(struct xe_oa_stream *stream, struct dma_fence *fence)
+{
+	dma_fence_put(stream->last_fence);
+	stream->last_fence = dma_fence_get(fence);
+}
+
 static int xe_oa_load_with_lri(struct xe_oa_stream *stream, struct xe_oa_reg *reg_lri, u32 count)
 {
 	struct dma_fence *fence;
@@ -753,6 +759,7 @@ static int xe_oa_load_with_lri(struct xe_oa_stream *stream, struct xe_oa_reg *re
 		goto free_bb;
 	}
 	xe_bb_free(bb, fence);
+	xe_oa_update_last_fence(stream, fence);
 	dma_fence_put(fence);
 
 	return 0;
@@ -876,6 +883,23 @@ static void xe_oa_disable_metric_set(struct xe_oa_stream *stream)
 		xe_mmio_rmw32(mmio, OAM_COMPRESSION_T3_CONTROL, OAM_LAT_MEASURE_ENABLE, 0);
 }
 
+/*
+ * Wait for the last OA batch of the stream, so that it can't program the HW after the HW
+ * teardown.
+ */
+static void xe_oa_stream_drain(struct xe_oa_stream *stream)
+{
+	struct xe_exec_queue *q = stream->exec_q ?: stream->k_exec_q;
+	long timeout;
+
+	if (!stream->last_fence || dma_fence_is_signaled(stream->last_fence))
+		return;
+
+	timeout = msecs_to_jiffies(q->sched_props.job_timeout_ms) + HZ;
+	if (!dma_fence_wait_timeout(stream->last_fence, false, timeout))
+		drm_err(&stream->oa->xe->drm, "Timed out waiting for OA batch\n");
+}
+
 /*
  * Also drops forcewake, which accesses the HW too. On a wedged device this is skipped and
  * the forcewake reference leaks, which is fine: the device needs a reset or rebind to
@@ -914,6 +938,7 @@ static void xe_oa_stream_destroy(struct xe_oa_stream *stream)
 	/* The poll timer may still be armed if the OA disable was skipped */
 	hrtimer_cancel(&stream->poll_check_timer);
 
+	xe_oa_stream_drain(stream);
 	if (!xe_wedged(stream->oa->xe))
 		xe_oa_stream_hw_teardown(stream);
 
@@ -1012,12 +1037,6 @@ xe_oa_alloc_config_buffer(struct xe_oa_stream *stream, struct xe_oa_config *oa_c
 	return oa_bo;
 }
 
-static void xe_oa_update_last_fence(struct xe_oa_stream *stream, struct dma_fence *fence)
-{
-	dma_fence_put(stream->last_fence);
-	stream->last_fence = dma_fence_get(fence);
-}
-
 static void xe_oa_fence_work_fn(struct work_struct *w)
 {
 	struct xe_oa_fence *ofence = container_of(w, typeof(*ofence), work.work);
-- 
2.55.0


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

* [PATCH v5 6/7] drm/xe: Reject vm_ops->access on BO mappings of an unplugged device
  2026-11-10 19:00 [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove Umesh Nerlige Ramappa
                   ` (4 preceding siblings ...)
  2026-11-10 19:00 ` [PATCH v5 5/7] drm/xe/oa: Wait for in-flight OA batches before stream HW teardown Umesh Nerlige Ramappa
@ 2026-11-10 19:00 ` Umesh Nerlige Ramappa
  2026-11-10 19:26   ` sashiko-bot
  2026-11-10 19:01 ` [PATCH v5 7/7] drm/xe/oa: Quiesce OA streams on driver unbind and PCI reset Umesh Nerlige Ramappa
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 15+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-11-10 19:00 UTC (permalink / raw)
  To: intel-xe, shekhar.chauhan; +Cc: harish.chegondi

A userspace mapping of a BO can outlive the device, e.g. across unbind
or a PCI slot reset. After drm_dev_unplug() the fault handler only
installs a dummy page, but ptrace, /proc/<pid>/mem and
process_vm_readv() can't use get_user_pages() on these VM_PFNMAP vmas
and fall back to vm_ops->access(), i.e. xe_bo_vm_access().

xe_bo_vm_access() doesn't check whether the device is still there. For
a BO in VRAM, xe_ttm_access_memory() then either goes through the VRAM
iomap, which is unmapped on remove, or submits a migrate job after the
GT has been torn down. This applies to GEM mmaps and to the OA buffer
mmap of an OA stream that outlives the device.

Enter a drm_dev_enter() section in xe_bo_vm_access() and fail with
-ENODEV once the device is unplugged, like xe_bo_cpu_fault() does.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 42a6aa1a2e4a..a74c38df2bdd 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -2345,9 +2345,20 @@ static int xe_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,
 	struct ttm_buffer_object *ttm_bo = vma->vm_private_data;
 	struct xe_bo *bo = ttm_to_xe_bo(ttm_bo);
 	struct xe_device *xe = xe_bo_device(bo);
+	int idx, ret;
 
-	guard(xe_pm_runtime)(xe);
-	return ttm_bo_vm_access(vma, addr, buf, len, write);
+	/*
+	 * A mapping can outlive the device. Once it's unplugged, VRAM is unmapped and the
+	 * migrate engines are gone, so refuse access, like the fault handler does.
+	 */
+	if (!drm_dev_enter(&xe->drm, &idx))
+		return -ENODEV;
+
+	scoped_guard(xe_pm_runtime, xe)
+		ret = ttm_bo_vm_access(vma, addr, buf, len, write);
+
+	drm_dev_exit(idx);
+	return ret;
 }
 
 /**
-- 
2.55.0


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

* [PATCH v5 7/7] drm/xe/oa: Quiesce OA streams on driver unbind and PCI reset
  2026-11-10 19:00 [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove Umesh Nerlige Ramappa
                   ` (5 preceding siblings ...)
  2026-11-10 19:00 ` [PATCH v5 6/7] drm/xe: Reject vm_ops->access on BO mappings of an unplugged device Umesh Nerlige Ramappa
@ 2026-11-10 19:01 ` Umesh Nerlige Ramappa
  2026-11-10 19:38   ` sashiko-bot
  2026-11-10 20:05 ` ✓ CI.KUnit: success for Cleanup OA stream on PCI unbind/remove (rev5) Patchwork
                   ` (2 subsequent siblings)
  9 siblings, 1 reply; 15+ messages in thread
From: Umesh Nerlige Ramappa @ 2026-11-10 19:01 UTC (permalink / raw)
  To: intel-xe, shekhar.chauhan; +Cc: harish.chegondi

An OA stream fd can outlive the device: after a PCI slot reset or after
unbind. The poll hrtimer and userspace calls on the fd could then access
MMIO and other device-bound objects that were released on remove,
causing a NULL pointer dereference, and xe_oa_release() would tear down
against freed objects.

Call xe_oa_quiesce() from xe_oa_fini() to cleanup the stream resources.
Only the stream struct stays allocated, with stream_lock and poll_wq
valid, until the fd is closed or the process owning the fd exits.

Once dead, OA interfaces return -ENODEV, poll reports EPOLLERR |
EPOLLHUP, and xe_oa_release() frees the stream struct and drops the drm
device reference.

Implementation Notes:

- xe_oa_fini() is a devm action and runs after drm_dev_unplug() in
  xe_device_remove(). drm_dev_unplug() has zapped the OA buffer mmaps by
  then and refaults get a dummy page. xe_oa_mmap() runs in a
  drm_dev_enter() section, which drm_dev_unplug() waits for, so no new
  mmap of the OA buffer can be set up after that. Using stream_lock
  instead can cause an AB-BA deadlock since xe_oa_mmap() runs under
  mmap_lock that caller holds and xe_oa_read() holds stream_lock across
  xe_oa_copy_to_user() which can FAULT and hold the mmap_lock.

- Don't free the OA buffer on quiesce, free it when the stream fd is
  released. An mmap keeps the BO alive until munmap, and if it were
  unpinned by then, the shrinker could grab it and end up freeing it
  after the device, including its GGTT, is gone. A pinned BO is ignored
  by the shrinker. By the time the fd is released, all mmaps are gone
  and the device is still around. xe_bo_pinned_fini() drops the DMA
  mapping of the still pinned OA buffer, like for other kernel BOs.

- Unbind does not reset the GT or the device, so cleanup HW state as
  well in this case, unless the device is wedged. Don't restore the
  context state of a stream on an exec queue since the exec queue goes
  away with the device. Wait for pending OA batches, bounded by the job
  timeout. Whatever is left is stopped when GuC submission is torn down
  after xe_oa_fini(), before the device can be probed again.

- drm_ioctl() only checks for unplug on entry, so an OA ioctl that
  started before drm_dev_unplug() could still open a stream, or access
  oa->xe and the metrics idr, around xe_oa_fini(). Run the OA ioctls in
  a drm_dev_enter() section, so drm_dev_unplug() waits for them.

- A config without output syncs waits synchronously for its batch while
  holding stream_lock or gt_lock, possibly in a drm_dev_enter() section.
  If the batch waits on an input fence that never signals, that would
  block drm_dev_unplug() or the quiesce. Stop waiting once the device is
  unplugged.

- A stream can be released after drm_dev_unplug(), but before
  xe_oa_fini() quiesces it. Release the stream in a drm_dev_enter()
  section, so that drm_dev_unplug() waits for a release in progress, and
  quiesce the stream on release once the device is unplugged.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
---
v2: Include Sashiko's comments
v3: Fix circular lockdep issue due to scope of stream->mmap_mutex
v4: Rely on drm_dev_unplug() to zap OA buffer mmaps and on the dummy page
    for refaults. Drop the OA specific fault handler and mmap_mutex. Split
    out the stream destroy refactor and the runtime PM move into separate
    patches. DMA-unmap the OA buffer on quiesce and run the OA ioctls in a
    drm_dev_enter() section instead of the per-GT quiesced flag. Don't
    restore the context state on quiesce, wait for pending OA batches on
    quiesce, don't block unplug on a synchronous OA config wait and
    quiesce a stream released during removal (Sashiko).
v5: Keep the OA buffer pinned until the stream fd is released instead of
    DMA-unmapping it on quiesce, so the shrinker can't drop the last
    reference after the device is gone (Sashiko).
---
 drivers/gpu/drm/xe/xe_oa.c          | 220 +++++++++++++++++++++++++---
 drivers/gpu/drm/xe/xe_oa_types.h    |   3 +
 drivers/gpu/drm/xe/xe_observation.c |  23 ++-
 3 files changed, 222 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
index f3d3b2eaddd8..fecab3055343 100644
--- a/drivers/gpu/drm/xe/xe_oa.c
+++ b/drivers/gpu/drm/xe/xe_oa.c
@@ -261,13 +261,18 @@ static bool mert_wa_14026633728(struct xe_oa_stream *s)
 
 static bool xe_oa_buffer_check_unlocked(struct xe_oa_stream *stream)
 {
-	u32 gtt_offset = xe_bo_ggtt_addr(stream->oa_buffer.bo);
-	u32 tail, hw_tail, partial_report_size, available;
+	u32 gtt_offset, tail, hw_tail, partial_report_size, available;
 	int report_size = stream->oa_buffer.format->size;
 	unsigned long flags;
 
 	spin_lock_irqsave(&stream->oa_buffer.ptr_lock, flags);
 
+	if (stream->dead) {
+		spin_unlock_irqrestore(&stream->oa_buffer.ptr_lock, flags);
+		return false;
+	}
+
+	gtt_offset = xe_bo_ggtt_addr(stream->oa_buffer.bo);
 	hw_tail = xe_oa_hw_tail_read(stream);
 	hw_tail -= gtt_offset;
 
@@ -319,6 +324,9 @@ static enum hrtimer_restart xe_oa_poll_check_timer_cb(struct hrtimer *hrtimer)
 	struct xe_oa_stream *stream =
 		container_of(hrtimer, typeof(*stream), poll_check_timer);
 
+	if (READ_ONCE(stream->dead))
+		return HRTIMER_NORESTART;
+
 	if (xe_oa_buffer_check_unlocked(stream))
 		wake_up(&stream->poll_wq);
 
@@ -530,12 +538,19 @@ static void xe_oa_disable(struct xe_oa_stream *stream)
 
 static int xe_oa_wait_unlocked(struct xe_oa_stream *stream)
 {
+	int ret;
+
 	/* We might wait indefinitely if periodic sampling is not enabled */
 	if (!stream->periodic)
 		return -EINVAL;
 
-	return wait_event_interruptible(stream->poll_wq,
-					xe_oa_buffer_check_unlocked(stream));
+	ret = wait_event_interruptible(stream->poll_wq,
+				       READ_ONCE(stream->dead) ||
+				       xe_oa_buffer_check_unlocked(stream));
+	if (ret)
+		return ret;
+
+	return READ_ONCE(stream->dead) ? -ENODEV : 0;
 }
 
 #define OASTATUS_RELEVANT_BITS (OASTATUS_MMIO_TRG_Q_FULL | OASTATUS_COUNTER_OVERFLOW | \
@@ -564,6 +579,9 @@ static ssize_t xe_oa_read(struct file *file, char __user *buf,
 	size_t offset = 0;
 	int ret;
 
+	if (READ_ONCE(stream->dead))
+		return -ENODEV;
+
 	if (!stream->sample)
 		return -EINVAL;
 
@@ -574,13 +592,14 @@ static ssize_t xe_oa_read(struct file *file, char __user *buf,
 				return ret;
 
 			mutex_lock(&stream->stream_lock);
-			ret = __xe_oa_read(stream, buf, count, &offset);
+			ret = stream->dead ? -ENODEV :
+				__xe_oa_read(stream, buf, count, &offset);
 			mutex_unlock(&stream->stream_lock);
 		} while (!offset && !ret);
 	} else {
 		xe_oa_buffer_check_unlocked(stream);
 		mutex_lock(&stream->stream_lock);
-		ret = __xe_oa_read(stream, buf, count, &offset);
+		ret = stream->dead ? -ENODEV : __xe_oa_read(stream, buf, count, &offset);
 		mutex_unlock(&stream->stream_lock);
 	}
 
@@ -607,6 +626,9 @@ static __poll_t xe_oa_poll_locked(struct xe_oa_stream *stream,
 
 	poll_wait(file, &stream->poll_wq, wait);
 
+	if (stream->dead)
+		return EPOLLERR | EPOLLHUP;
+
 	/*
 	 * We don't explicitly check whether there's something to read here since this
 	 * path may be hot depending on what else userspace is polling, or on the timeout
@@ -863,8 +885,11 @@ static void xe_oa_disable_metric_set(struct xe_oa_stream *stream)
 	xe_mmio_write32(mmio, __oa_regs(stream)->oa_debug,
 			oag_configure_mmio_trigger(stream, false));
 
-	/* disable the context save/restore or OAR counters */
-	if (stream->exec_q)
+	/*
+	 * disable the context save/restore or OAR counters, unless the device is going away
+	 * and the context with it
+	 */
+	if (stream->exec_q && !READ_ONCE(stream->dead))
 		xe_oa_configure_oa_context(stream, false);
 
 	/* Make sure we disable noa to save power. */
@@ -1124,9 +1149,15 @@ static int xe_oa_emit_oa_config(struct xe_oa_stream *stream, struct xe_oa_config
 	if (err == -ENOENT)
 		xe_oa_config_cb(fence, &ofence->cb);
 
-	/* If nothing needs to be signaled we wait synchronously */
+	/*
+	 * If nothing needs to be signaled we wait synchronously. Stop waiting once the device
+	 * is unplugged, since this holds stream_lock or gt_lock, which the OA quiesce needs,
+	 * and may run in a drm_dev_enter() section, which drm_dev_unplug() waits for.
+	 */
 	if (!num_signal) {
-		dma_fence_wait(&ofence->base, false);
+		while (!dma_fence_wait_timeout(&ofence->base, false, HZ / 10))
+			if (drm_dev_is_unplugged(&gt_to_xe(stream->gt)->drm))
+				break;
 		dma_fence_put(&ofence->base);
 	}
 
@@ -1617,7 +1648,8 @@ static int xe_oa_disable_locked(struct xe_oa_stream *stream)
 
 	xe_oa_stream_disable(stream);
 
-	if (stream->no_preempt)
+	/* No need to restore preemption for an exec queue going away with the device */
+	if (stream->no_preempt && !READ_ONCE(stream->dead))
 		ret = xe_oa_enable_preempt_timeslice(stream);
 
 	stream->enabled = false;
@@ -1700,6 +1732,9 @@ static long xe_oa_ioctl_locked(struct xe_oa_stream *stream,
 			       unsigned int cmd,
 			       unsigned long arg)
 {
+	if (stream->dead)
+		return -ENODEV;
+
 	switch (cmd) {
 	case DRM_XE_OBSERVATION_IOCTL_ENABLE:
 		return xe_oa_enable_locked(stream);
@@ -1732,6 +1767,14 @@ static long xe_oa_ioctl(struct file *file,
 
 static void xe_oa_destroy_locked(struct xe_oa_stream *stream)
 {
+	if (stream->dead) {
+		/* All OA buffer mmaps are gone by now, see xe_oa_quiesce_oa_unit() */
+		xe_oa_free_oa_buffer(stream);
+		mutex_destroy(&stream->stream_lock);
+		kfree(stream);
+		return;
+	}
+
 	xe_pm_runtime_get(gt_to_xe(stream->gt));
 
 	/* A wedged device may be unresponsive, skip HW access */
@@ -1748,17 +1791,30 @@ static void xe_oa_destroy_locked(struct xe_oa_stream *stream)
 	kfree(stream);
 }
 
+static void xe_oa_quiesce_oa_unit(struct xe_oa_unit *u, bool hw_accessible);
+
 static int xe_oa_release(struct inode *inode, struct file *file)
 {
 	struct xe_oa_stream *stream = file->private_data;
 	struct xe_gt *gt = stream->gt;
+	struct xe_device *xe = gt_to_xe(gt);
+	int idx;
 
 	mutex_lock(&gt->oa.gt_lock);
-	xe_oa_destroy_locked(stream);
+	if (drm_dev_enter(&xe->drm, &idx)) {
+		/* drm_dev_unplug() waits for this, so xe_oa_fini() can't run under us */
+		xe_oa_destroy_locked(stream);
+		drm_dev_exit(idx);
+	} else {
+		/* The device is going away, quiesce the stream like xe_oa_fini() does */
+		if (!stream->dead)
+			xe_oa_quiesce_oa_unit(stream->oa_unit, !xe_wedged(xe));
+		xe_oa_destroy_locked(stream);
+	}
 	mutex_unlock(&gt->oa.gt_lock);
 
 	/* Release the reference the OA stream kept on the driver */
-	drm_dev_put(&gt_to_xe(gt)->drm);
+	drm_dev_put(&xe->drm);
 
 	return 0;
 }
@@ -1766,27 +1822,46 @@ static int xe_oa_release(struct inode *inode, struct file *file)
 static int xe_oa_mmap(struct file *file, struct vm_area_struct *vma)
 {
 	struct xe_oa_stream *stream = file->private_data;
+	struct xe_device *xe = gt_to_xe(stream->gt);
 	int ret = xe_observation_paranoid_check();
-	struct xe_bo *bo = stream->oa_buffer.bo;
+	struct xe_bo *bo;
+	int idx;
 
 	if (ret) {
-		drm_dbg(&stream->oa->xe->drm, "Insufficient privilege to map OA buffer\n");
+		drm_dbg(&xe->drm, "Insufficient privilege to map OA buffer\n");
 		return ret;
 	}
 
+	/*
+	 * drm_dev_unplug() zaps the OA buffer mmaps and waits for this section to finish, so
+	 * no mmap of the OA buffer can be set up after that. Can't use stream_lock here, it is
+	 * held across user copies which fault on mmap_lock, held by the caller.
+	 */
+	if (!drm_dev_enter(&xe->drm, &idx))
+		return -ENODEV;
+
+	if (READ_ONCE(stream->dead)) {
+		ret = -ENODEV;
+		goto exit;
+	}
+
 	/*
 	 * Userspace always maps the OA buffer at offset 0, the mapping is moved to the OA
 	 * buffer's own range in the drm device's address_space below
 	 */
 	if (vma->vm_pgoff) {
-		drm_dbg(&stream->oa->xe->drm, "Wrong mmap offset, must be 0\n");
-		return -EINVAL;
+		drm_dbg(&xe->drm, "Wrong mmap offset, must be 0\n");
+		ret = -EINVAL;
+		goto exit;
 	}
 
+	bo = stream->oa_buffer.bo;
+
 	/* Can mmap the entire OA buffer or nothing (no partial OA buffer mmaps) */
 	if (vma->vm_end - vma->vm_start != xe_bo_size(bo)) {
-		drm_dbg(&stream->oa->xe->drm, "Wrong mmap size, must be OA buffer size\n");
-		return -EINVAL;
+		drm_dbg(&xe->drm, "Wrong mmap size, must be OA buffer size\n");
+		ret = -EINVAL;
+		goto exit;
 	}
 
 	/*
@@ -1794,15 +1869,19 @@ static int xe_oa_mmap(struct file *file, struct vm_area_struct *vma)
 	 * VM_MAYSHARE, don't copy the vma on fork
 	 */
 	if (vma->vm_flags & (VM_WRITE | VM_EXEC | VM_SHARED | VM_MAYSHARE)) {
-		drm_dbg(&stream->oa->xe->drm, "mmap must be read only\n");
-		return -EINVAL;
+		drm_dbg(&xe->drm, "mmap must be read only\n");
+		ret = -EINVAL;
+		goto exit;
 	}
 	vm_flags_mod(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP | VM_DONTCOPY,
 		     VM_MAYWRITE | VM_MAYEXEC);
 
 	vma->vm_pgoff = drm_vma_node_start(&bo->ttm.base.vma_node);
 
-	return drm_gem_mmap_obj(&bo->ttm.base, xe_bo_size(bo), vma);
+	ret = drm_gem_mmap_obj(&bo->ttm.base, xe_bo_size(bo), vma);
+exit:
+	drm_dev_exit(idx);
+	return ret;
 }
 
 static const struct file_operations xe_oa_fops = {
@@ -2628,6 +2707,95 @@ static void xe_oa_unregister(void *arg)
 	oa->metrics_kobj = NULL;
 }
 
+static void xe_oa_quiesce_oa_unit(struct xe_oa_unit *u, bool hw_accessible)
+{
+	struct xe_oa_stream *stream = u->exclusive_stream;
+	unsigned long flags;
+
+	if (!stream)
+		return;
+
+	mutex_lock(&stream->stream_lock);
+
+	spin_lock_irqsave(&stream->oa_buffer.ptr_lock, flags);
+	WRITE_ONCE(stream->dead, true);
+	spin_unlock_irqrestore(&stream->oa_buffer.ptr_lock, flags);
+
+	if (stream->enabled && hw_accessible)
+		xe_oa_disable_locked(stream);
+
+	stream->enabled = false;
+
+	if (stream->sample)
+		hrtimer_cancel(&stream->poll_check_timer);
+
+	wake_up_all(&stream->poll_wq);
+
+	xe_oa_stream_drain(stream);
+
+	/*
+	 * Restore the HW state while the stream still holds its runtime PM ref and exec_q.
+	 * The device is not reset on unbind, so this can't be left to a later reset.
+	 */
+	if (hw_accessible)
+		xe_oa_stream_hw_teardown(stream);
+
+	/*
+	 * Keep the OA buffer pinned until xe_oa_release(). An mmap holds a reference on the
+	 * BO, so unpinning it here leaves it on the TTM LRU, where the shrinker may take the
+	 * last reference and free the BO after the GGTT and the shrinker itself are gone.
+	 * While pinned, the shrinker doesn't see the BO and xe_bo_pinned_fini() DMA-unmaps
+	 * it like any other kernel BO. drm_dev_unplug() has zapped the userspace mappings
+	 * and refaults get a dummy page.
+	 */
+	xe_oa_stream_free_resources(stream);
+	if (stream->exec_q) {
+		xe_exec_queue_put(stream->exec_q);
+		stream->exec_q = NULL;
+	}
+	drm_syncobj_put(stream->ufence_syncobj);
+
+	WRITE_ONCE(u->exclusive_stream, NULL);
+	mutex_unlock(&stream->stream_lock);
+}
+
+static void xe_oa_quiesce_gt(struct xe_gt *gt, bool hw_accessible)
+{
+	int i;
+
+	mutex_lock(&gt->oa.gt_lock);
+	for (i = 0; i < gt->oa.num_oa_units; i++)
+		xe_oa_quiesce_oa_unit(&gt->oa.oa_unit[i], hw_accessible);
+	mutex_unlock(&gt->oa.gt_lock);
+}
+
+/**
+ * xe_oa_quiesce - Disable all active OA streams on driver unbind or PCI slot reset
+ * @xe: @xe_device
+ *
+ * Disables the OA unit and stops the poll timer of every active stream, marks it dead
+ * and releases all device-bound resources (OA buffer, exec queues, configs, references).
+ * Unless the device is wedged, the HW state (whitelist, metric set, forcewake, preemption)
+ * is restored first. Any further read, poll, mmap or ioctl on the stream fd is rejected
+ * (-ENODEV). Only the stream struct stays allocated until userspace closes the fd, at
+ * which point xe_oa_release() just frees it.
+ */
+static void xe_oa_quiesce(struct xe_device *xe)
+{
+	struct xe_gt *gt;
+	u8 id;
+
+	if (!xe->oa.xe)
+		return;
+
+	/*
+	 * A wedged device may be unresponsive and a driver FLR follows on fini, so skip HW
+	 * access there and only release the SW resources.
+	 */
+	for_each_gt(gt, xe, id)
+		xe_oa_quiesce_gt(gt, !xe_wedged(xe));
+}
+
 /**
  * xe_oa_register - Xe OA registration
  * @xe: @xe_device
@@ -2939,6 +3107,14 @@ static void xe_oa_fini(void *arg)
 	if (!oa->xe)
 		return;
 
+	/*
+	 * Devm action, so this runs on unbind and PCI slot reset after xe_device_remove() even
+	 * if streams are still open. Quiesce them before the configs they hold are destroyed.
+	 * Must run after drm_dev_unplug(), which zaps the OA buffer mmaps and fences off mmap
+	 * and the OA ioctls.
+	 */
+	xe_oa_quiesce(xe);
+
 	idr_for_each(&oa->metrics_idr, destroy_config, oa);
 	idr_destroy(&oa->metrics_idr);
 
diff --git a/drivers/gpu/drm/xe/xe_oa_types.h b/drivers/gpu/drm/xe/xe_oa_types.h
index e876e9be92ba..e60a90bae1c6 100644
--- a/drivers/gpu/drm/xe/xe_oa_types.h
+++ b/drivers/gpu/drm/xe/xe_oa_types.h
@@ -214,6 +214,9 @@ struct xe_oa_stream {
 	/** @enabled: Whether the stream is currently enabled */
 	bool enabled;
 
+	/** @dead: Gate HW access when device is wedged or going away */
+	bool dead;
+
 	/** @oa_config: OA configuration used by the stream */
 	struct xe_oa_config *oa_config;
 
diff --git a/drivers/gpu/drm/xe/xe_observation.c b/drivers/gpu/drm/xe/xe_observation.c
index 39e05b9131a7..a3a8ac358c81 100644
--- a/drivers/gpu/drm/xe/xe_observation.c
+++ b/drivers/gpu/drm/xe/xe_observation.c
@@ -7,6 +7,7 @@
 #include <linux/perf_event.h>
 #include <linux/sysctl.h>
 
+#include <drm/drm_drv.h>
 #include <uapi/drm/xe_drm.h>
 
 #include "xe_eu_stall.h"
@@ -35,8 +36,8 @@ int xe_observation_paranoid_check(void)
 	return perf_allow_cpu();
 }
 
-static int xe_oa_ioctl(struct drm_device *dev, struct drm_xe_observation_param *arg,
-		       struct drm_file *file)
+static int __xe_oa_ioctl(struct drm_device *dev, struct drm_xe_observation_param *arg,
+			 struct drm_file *file)
 {
 	switch (arg->observation_op) {
 	case DRM_XE_OBSERVATION_OP_STREAM_OPEN:
@@ -50,6 +51,24 @@ static int xe_oa_ioctl(struct drm_device *dev, struct drm_xe_observation_param *
 	}
 }
 
+static int xe_oa_ioctl(struct drm_device *dev, struct drm_xe_observation_param *arg,
+		       struct drm_file *file)
+{
+	int idx, ret;
+
+	/*
+	 * drm_ioctl() only checks for unplug on entry. Hold off drm_dev_unplug() while the OA
+	 * ioctls run, so that xe_oa_fini() can't tear down OA under them.
+	 */
+	if (!drm_dev_enter(dev, &idx))
+		return -ENODEV;
+
+	ret = __xe_oa_ioctl(dev, arg, file);
+
+	drm_dev_exit(idx);
+	return ret;
+}
+
 static int xe_eu_stall_ioctl(struct drm_device *dev, struct drm_xe_observation_param *arg,
 			     struct drm_file *file)
 {
-- 
2.55.0


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

* Re: [PATCH v5 4/7] drm/xe/oa: Skip OA HW teardown on a wedged device
  2026-11-10 19:00 ` [PATCH v5 4/7] drm/xe/oa: Skip OA HW teardown on a wedged device Umesh Nerlige Ramappa
@ 2026-11-10 19:17   ` sashiko-bot
  0 siblings, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-11-10 19:17 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa, intel-xe

Thank you for your contribution! Sashiko AI review found 1 potential
issue to consider:
- [High] drm/xe/oa: build failure from non-existent xe_wedge.h and
  xe_wedged()
--

commit cfe215fb928c6338b6dd8582d19a4f894fb6bd7d
Author: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

drm/xe/oa: Skip OA HW teardown on a wedged device

This commit skips OA stream disabling and hardware teardown when destroying
an OA stream on a wedged device, and ensures the poll timer is unconditionally
canceled in xe_oa_stream_destroy().

> diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
> index df9a3ea0875d1..6383a2e036ab0 100644
> --- a/drivers/gpu/drm/xe/xe_oa.c
> +++ b/drivers/gpu/drm/xe/xe_oa.c
> @@ -43,6 +43,7 @@
>  #include "xe_sriov.h"
>  #include "xe_sync.h"
>  #include "xe_wa.h"
> +#include "xe_wedge.h"

[ ... ]

> @@ -905,7 +911,12 @@ static void xe_oa_stream_destroy(struct xe_oa_stream *stream)
>  
>  	mutex_destroy(&stream->stream_lock);
>  
> -	xe_oa_stream_hw_teardown(stream);
> +	/* The poll timer may still be armed if the OA disable was skipped */
> +	hrtimer_cancel(&stream->poll_check_timer);
> +
> +	if (!xe_wedged(stream->oa->xe))
> +		xe_oa_stream_hw_teardown(stream);
> +
>  	xe_oa_free_oa_buffer(stream);
>  	xe_oa_stream_free_resources(stream);
>  }
> @@ -1704,7 +1715,8 @@ static void xe_oa_destroy_locked(struct xe_oa_stream *stream)
>  {
>  	xe_pm_runtime_get(gt_to_xe(stream->gt));
>  
> -	if (stream->enabled)
> +	/* A wedged device may be unresponsive, skip HW access */
> +	if (stream->enabled && !xe_wedged(gt_to_xe(stream->gt)))
>  		xe_oa_disable_locked(stream);

[Severity: High]
Does this break the build?  Neither xe_wedge.h nor xe_wedged() exists in the
tree.  The helper for checking whether an xe_device is wedged is
xe_device_wedged() in drivers/gpu/drm/xe/xe_device.h, which xe_oa.c already
includes.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261110190052.3514226-9-umesh.nerlige.ramappa@intel.com?part=4

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

* Re: [PATCH v5 5/7] drm/xe/oa: Wait for in-flight OA batches before stream HW teardown
  2026-11-10 19:00 ` [PATCH v5 5/7] drm/xe/oa: Wait for in-flight OA batches before stream HW teardown Umesh Nerlige Ramappa
@ 2026-11-10 19:25   ` sashiko-bot
  0 siblings, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-11-10 19:25 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa, intel-xe

Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [High] drm/xe/oa: context LRI batch fence in xe_oa_load_with_lri() is
  never drained
- [High] drm/xe/oa: post-teardown HW programming when
  xe_oa_stream_drain() times out
--

commit a42a6ce61696e1b256881421425e340fba9f094d
Author: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

drm/xe/oa: Wait for in-flight OA batches before stream HW teardown

This commit records the LRI batch fence in stream->last_fence and adds
xe_oa_stream_drain() to wait for stream->last_fence before tearing down
OA hardware state on stream destruction.

> diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
> index 6383a2e036ab0..d2bd9622109af 100644
> --- a/drivers/gpu/drm/xe/xe_oa.c
> +++ b/drivers/gpu/drm/xe/xe_oa.c
> @@ -733,6 +733,12 @@ static void xe_oa_free_configs(struct xe_oa_stream *stream)
>  	dma_fence_put(stream->last_fence);
>  }
>  
> +static void xe_oa_update_last_fence(struct xe_oa_stream *stream, struct dma_fence *fence)
> +{
> +	dma_fence_put(stream->last_fence);
> +	stream->last_fence = dma_fence_get(fence);
> +}
> +
>  static int xe_oa_load_with_lri(struct xe_oa_stream *stream, struct xe_oa_reg *reg_lri, u32 count)
>  {
>  	struct dma_fence *fence;
> @@ -753,6 +759,7 @@ static int xe_oa_load_with_lri(struct xe_oa_stream *stream, struct xe_oa_reg *re
>  		goto free_bb;
>  	}
>  	xe_bb_free(bb, fence);
> +	xe_oa_update_last_fence(stream, fence);
>  	dma_fence_put(fence);
>  
>  	return 0;
> @@ -876,6 +883,23 @@ static void xe_oa_disable_metric_set(struct xe_oa_stream *stream)
>  		xe_mmio_rmw32(mmio, OAM_COMPRESSION_T3_CONTROL, OAM_LAT_MEASURE_ENABLE, 0);
>  }
>  
> +/*
> + * Wait for the last OA batch of the stream, so that it can't program the HW after the HW
> + * teardown.
> + */
> +static void xe_oa_stream_drain(struct xe_oa_stream *stream)
> +{
> +	struct xe_exec_queue *q = stream->exec_q ?: stream->k_exec_q;
> +	long timeout;
> +
> +	if (!stream->last_fence || dma_fence_is_signaled(stream->last_fence))
> +		return;
> +
> +	timeout = msecs_to_jiffies(q->sched_props.job_timeout_ms) + HZ;
> +	if (!dma_fence_wait_timeout(stream->last_fence, false, timeout))
> +		drm_err(&stream->oa->xe->drm, "Timed out waiting for OA batch\n");
> +}

[Severity: High]
Can an OA config batch still program the hardware after teardown when
dma_fence_wait_timeout() times out here?

When xe_oa_emit_oa_config() submits a batch with both an unsignaled input
sync and an output sync, xe_oa_submit_bb() attaches the input sync as a
scheduler dependency via xe_sync_entry_add_deps() and returns without
waiting.  While that input sync remains unsignaled, the job sits in
q->entity before the scheduler's job_timeout_ms timer starts (or waits
behind earlier jobs on stream->exec_q).

If the stream is closed before the dependency signals,
xe_oa_stream_drain() times out after job_timeout_ms + HZ and returns
without killing the exec queue or canceling the job.  Because the pending
xe_sched_job holds a reference on job->q and free_oa_config_bo() keeps
oa_bo->bb->bo alive until stream->last_fence signals, signaling the input
sync after xe_oa_stream_destroy() completes will still run the batch on
the hardware after xe_oa_stream_hw_teardown() has restored the OA
registers, dropped forcewake, and cleared u->exclusive_stream.

>  /*
>   * Also drops forcewake, which accesses the HW too. On a wedged device this is skipped and
>   * the forcewake reference leaks, which is fine: the device needs a reset or rebind to
> @@ -914,6 +938,7 @@ static void xe_oa_stream_destroy(struct xe_oa_stream *stream)
>  	/* The poll timer may still be armed if the OA disable was skipped */
>  	hrtimer_cancel(&stream->poll_check_timer);
>  
> +	xe_oa_stream_drain(stream);
>  	if (!xe_wedged(stream->oa->xe))
>  		xe_oa_stream_hw_teardown(stream);

[Severity: High]
Does calling xe_oa_stream_drain() before xe_oa_stream_hw_teardown() leave
the context-restore LRI batch submitted during teardown undrained?

xe_oa_load_with_lri() is only reached via xe_oa_configure_oa_context().
During xe_oa_enable_metric_set(), the fence it stores in
stream->last_fence is immediately overwritten by the subsequent
xe_oa_emit_oa_config() call (or left undrained if xe_oa_emit_oa_config()
fails and jumps to err_put_k_exec_q).  During teardown,
xe_oa_stream_hw_teardown() -> xe_oa_disable_metric_set() ->
xe_oa_configure_oa_context(stream, false) calls xe_oa_load_with_lri() and
updates stream->last_fence after xe_oa_stream_drain() has already run.

As a result, the LRI batch that clears OACTXCONTROL, OAR_OACONTROL or
OAC_OACONTROL, and RING_CONTEXT_CONTROL remains in flight on
stream->exec_q after forcewake is released, the OA buffer is unpinned and
freed, and the OA unit is released for reuse by a new stream.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261110190052.3514226-9-umesh.nerlige.ramappa@intel.com?part=5

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

* Re: [PATCH v5 6/7] drm/xe: Reject vm_ops->access on BO mappings of an unplugged device
  2026-11-10 19:00 ` [PATCH v5 6/7] drm/xe: Reject vm_ops->access on BO mappings of an unplugged device Umesh Nerlige Ramappa
@ 2026-11-10 19:26   ` sashiko-bot
  0 siblings, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-11-10 19:26 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa, intel-xe

Thank you for your contribution! Sashiko AI review found 1 potential
issue to consider:
- [Low] drm/xe: missing Fixes trailer in commit fixing xe_bo_vm_access()
  unplug check
--

commit 2c50602f8cb3fdeed79be6d7644c7fd302b6e48d
Author: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

> drm/xe: Reject vm_ops->access on BO mappings of an unplugged device
>
> A userspace mapping of a BO can outlive the device, e.g. across unbind
> or a PCI slot reset. After drm_dev_unplug() the fault handler only
> installs a dummy page, but ptrace, /proc/<pid>/mem and
> process_vm_readv() can't use get_user_pages() on these VM_PFNMAP vmas
> and fall back to vm_ops->access(), i.e. xe_bo_vm_access().
>
> xe_bo_vm_access() doesn't check whether the device is still there. For
> a BO in VRAM, xe_ttm_access_memory() then either goes through the VRAM
> iomap, which is unmapped on remove, or submits a migrate job after the
> GT has been torn down. This applies to GEM mmaps and to the OA buffer
> mmap of an OA stream that outlives the device.
>
> Enter a drm_dev_enter() section in xe_bo_vm_access() and fail with
> -ENODEV once the device is unplugged, like xe_bo_cpu_fault() does.
>
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>

[Severity: Low]
Since this fixes a missing unplug check in xe_bo_vm_access(), should the
commit message include:

  Fixes: f85dc3c5abdd ("drm/xe: Add xe_bo_vm_access")

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261110190052.3514226-9-umesh.nerlige.ramappa@intel.com?part=6

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

* Re: [PATCH v5 7/7] drm/xe/oa: Quiesce OA streams on driver unbind and PCI reset
  2026-11-10 19:01 ` [PATCH v5 7/7] drm/xe/oa: Quiesce OA streams on driver unbind and PCI reset Umesh Nerlige Ramappa
@ 2026-11-10 19:38   ` sashiko-bot
  0 siblings, 0 replies; 15+ messages in thread
From: sashiko-bot @ 2026-11-10 19:38 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa, intel-xe

Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [High] drm/xe/oa: UAF of tile->mem.ggtt when delayed OA BO destroy
  races drmm teardown
- [High] drm/xe/oa: missing unplug and wedged checks in stream fd
  xe_oa_ioctl()
--

commit f8f815614fe832cefe5f75c565cf766346592125
Author: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

drm/xe/oa: Quiesce OA streams on driver unbind and PCI reset

This commit quiesces active OA streams during driver teardown and fences OA
operations against device unplug so open stream file descriptors can safely
outlive the device.

> diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
> index d2bd9622109af..6808ccc442b56 100644
> --- a/drivers/gpu/drm/xe/xe_oa.c
> +++ b/drivers/gpu/drm/xe/xe_oa.c
[ ... ]
> @@ -1124,9 +1149,15 @@ static int xe_oa_emit_oa_config(struct xe_oa_stream *stream, struct xe_oa_config
>  	if (err == -ENOENT)
>  		xe_oa_config_cb(fence, &ofence->cb);
>  
> -	/* If nothing needs to be signaled we wait synchronously */
> +	/*
> +	 * If nothing needs to be signaled we wait synchronously. Stop waiting once the device
> +	 * is unplugged, since this holds stream_lock or gt_lock, which the OA quiesce needs,
> +	 * and may run in a drm_dev_enter() section, which drm_dev_unplug() waits for.
> +	 */
>  	if (!num_signal) {
> -		dma_fence_wait(&ofence->base, false);
> +		while (!dma_fence_wait_timeout(&ofence->base, false, HZ / 10))
> +			if (drm_dev_is_unplugged(&gt_to_xe(stream->gt)->drm))
> +				break;
>  		dma_fence_put(&ofence->base);
>  	}
>  
[ ... ]
> @@ -1700,6 +1732,9 @@ static long xe_oa_ioctl_locked(struct xe_oa_stream *stream,
>  			       unsigned int cmd,
>  			       unsigned long arg)
>  {
> +	if (stream->dead)
> +		return -ENODEV;
> +
>  	switch (cmd) {
>  	case DRM_XE_OBSERVATION_IOCTL_ENABLE:
>  		return xe_oa_enable_locked(stream);

[Severity: High]
Does the stream file descriptor's unlocked_ioctl callback (xe_oa_ioctl() in
drivers/gpu/drm/xe/xe_oa.c) also need a drm_dev_enter() section and a
xe_device_wedged() check?

Unlike the observation ioctl on the DRM device fd, the stream fd is an
anonymous inode that bypasses drm_ioctl() and xe_drm_ioctl().  During
xe_pci_remove(), drm_dev_unplug(), xe_bo_pci_dev_remove_all(), xe_pm_fini()
and later-registered devm actions such as xe_device_sanitize() all run
before xe_oa_fini() calls xe_oa_quiesce() to set stream->dead.  Without
drm_dev_enter() in the stream fd's xe_oa_ioctl(), drm_dev_unplug() does not
wait for in-flight stream ioctls, and new calls to xe_oa_enable_locked(),
xe_oa_disable_locked(), or xe_oa_config_locked() can still access MMIO,
GuC, and BO state during teardown.

Similarly, stream->dead is only set in xe_oa_quiesce_oa_unit() and is not
set when the device is declared wedged (including in
prepare_device_for_reset(), which also calls pci_disable_device() before
xe_pci_error_slot_reset() runs).  Without checking xe_device_wedged() in
the stream fd's xe_oa_ioctl() and in the uninterruptible wait loop in
xe_oa_emit_oa_config(), userspace can still issue hardware-touching stream
ioctls on a wedged or PCI-disabled device, and xe_oa_emit_oa_config() can
hang uninterruptibly under stream_lock or gt_lock if the device wedges
while waiting on a fence.

> @@ -1732,6 +1767,14 @@ static long xe_oa_ioctl(struct file *file,
>  
>  static void xe_oa_destroy_locked(struct xe_oa_stream *stream)
>  {
> +	if (stream->dead) {
> +		/* All OA buffer mmaps are gone by now, see xe_oa_quiesce_oa_unit() */
> +		xe_oa_free_oa_buffer(stream);
> +		mutex_destroy(&stream->stream_lock);
> +		kfree(stream);
> +		return;
> +	}
> +
>  	xe_pm_runtime_get(gt_to_xe(stream->gt));
>  
>  	/* A wedged device may be unresponsive, skip HW access */
> @@ -1748,17 +1791,30 @@ static void xe_oa_destroy_locked(struct xe_oa_stream *stream)
>  	kfree(stream);
>  }
>  
> +static void xe_oa_quiesce_oa_unit(struct xe_oa_unit *u, bool hw_accessible);
> +
>  static int xe_oa_release(struct inode *inode, struct file *file)
>  {
>  	struct xe_oa_stream *stream = file->private_data;
>  	struct xe_gt *gt = stream->gt;
> +	struct xe_device *xe = gt_to_xe(gt);
> +	int idx;
>  
>  	mutex_lock(&gt->oa.gt_lock);
> -	xe_oa_destroy_locked(stream);
> +	if (drm_dev_enter(&xe->drm, &idx)) {
> +		/* drm_dev_unplug() waits for this, so xe_oa_fini() can't run under us */
> +		xe_oa_destroy_locked(stream);
> +		drm_dev_exit(idx);
> +	} else {
> +		/* The device is going away, quiesce the stream like xe_oa_fini() does */
> +		if (!stream->dead)
> +			xe_oa_quiesce_oa_unit(stream->oa_unit, !xe_wedged(xe));
> +		xe_oa_destroy_locked(stream);
> +	}
>  	mutex_unlock(&gt->oa.gt_lock);
>  
>  	/* Release the reference the OA stream kept on the driver */
> -	drm_dev_put(&gt_to_xe(gt)->drm);
> +	drm_dev_put(&xe->drm);
>  
>  	return 0;
>  }

[Severity: High]
Can freeing stream->oa_buffer.bo in xe_oa_destroy_locked() race with drmm
teardown and cause a use-after-free on tile->mem.ggtt?

Because xe_oa_quiesce_oa_unit() keeps stream->oa_buffer.bo pinned across
xe_device_remove(), xe_bo_pci_dev_remove_all() skips it and
xe_bo_pinned_fini() only DMA-unmaps it, leaving bo->ttm.ttm and
bo->ggtt_node[] populated.  When the stream fd is later closed and holds
the last reference on xe->drm, xe_oa_free_oa_buffer() calls
xe_bo_unpin_map_no_vm() -> ttm_bo_put() -> ttm_bo_release().  Whenever
want_init_on_free() is true (or dma_resv_trylock() fails), ttm_bo_release()
queues bo->delayed_delete onto xe->ttm.wq instead of calling
xe_ttm_bo_destroy() synchronously:

drivers/gpu/drm/ttm/ttm_bo.c:ttm_bo_release() {
    ...
		if (!dma_resv_test_signaled(&bo->base._resv,
					    DMA_RESV_USAGE_BOOKKEEP) ||
		    (want_init_on_free() && (bo->ttm != NULL)) ||
		    bo->type == ttm_bo_type_sg ||
		    !dma_resv_trylock(bo->base.resv)) {
			/* The BO is not idle, resurrect it for delayed destroy */
			ttm_bo_flush_all_fences(bo);
			bo->deleted = true;
    ...
			schedule_work(&bo->delayed_delete);
}

Immediately afterwards, xe_oa_release() drops the final drm_device
reference, and drm_managed_release() runs ggtt_fini_early() and frees
tile->mem.ggtt before xe_device_destroy() calls ttm_device_fini() to drain
xe->ttm.wq:

CPU0                                  kworker (xe->ttm.wq)
xe_oa_release()
  xe_oa_destroy_locked()
    xe_oa_free_oa_buffer()
      xe_bo_unpin_map_no_vm(bo)
        ttm_bo_release()
          schedule_work(&bo->delayed_delete)
  drm_dev_put(&xe->drm)
    drm_managed_release()
      ggtt_fini_early()
      kfree(tile->mem.ggtt)
                                      ttm_bo_delayed_delete()
                                        xe_ttm_bo_destroy()
                                          xe_ggtt_remove_bo(tile->mem.ggtt, bo)
                                            <-- use-after-free
      xe_device_destroy()
        ttm_device_fini(&xe->ttm)

When xe_ttm_bo_destroy() runs on the workqueue, it dereferences the
already-freed tile->mem.ggtt (and triggers a warning in drm_mm_takedown()
when ggtt_fini_early() sees the live GGTT node).

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261110190052.3514226-9-umesh.nerlige.ramappa@intel.com?part=7

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

* ✓ CI.KUnit: success for Cleanup OA stream on PCI unbind/remove (rev5)
  2026-11-10 19:00 [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove Umesh Nerlige Ramappa
                   ` (6 preceding siblings ...)
  2026-11-10 19:01 ` [PATCH v5 7/7] drm/xe/oa: Quiesce OA streams on driver unbind and PCI reset Umesh Nerlige Ramappa
@ 2026-11-10 20:05 ` Patchwork
  2026-11-10 20:49 ` ✓ Xe.CI.BAT: " Patchwork
  2026-11-11  0:52 ` ✗ Xe.CI.FULL: failure " Patchwork
  9 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-11-10 20:05 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: intel-xe

== Series Details ==

Series: Cleanup OA stream on PCI unbind/remove (rev5)
URL   : https://patchwork.freedesktop.org/series/177300/
State : success

== Summary ==

+ trap cleanup EXIT
+ kunitconfigs=('/kernel/drivers/gpu/tests/.kunitconfig' '/kernel/drivers/gpu/drm/xe/.kunitconfig' '/kernel/drivers/gpu/drm/tests/.kunitconfig' '/kernel/drivers/gpu/drm/ttm/tests/.kunitconfig' '/kernel/drivers/dma-buf/.kunitconfig')
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/tests/.kunitconfig
[20:03:16] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:03:21] 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
[20:03:42] Starting KUnit Kernel (1/1)...
[20:03:42] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:03:42] ================= gpu_buddy (14 subtests) ==================
[20:03:42] [PASSED] gpu_test_buddy_alloc_limit
[20:03:42] [PASSED] gpu_test_buddy_alloc_optimistic
[20:03:42] [PASSED] gpu_test_buddy_alloc_pessimistic
[20:03:42] [PASSED] gpu_test_buddy_alloc_pathological
[20:03:42] [PASSED] gpu_test_buddy_alloc_contiguous
[20:03:42] [PASSED] gpu_test_buddy_alloc_clear
[20:03:42] [PASSED] gpu_test_buddy_alloc_range
[20:03:42] [PASSED] gpu_test_buddy_alloc_range_bias
[20:03:43] [PASSED] gpu_test_buddy_fragmentation_performance
[20:03:43] [PASSED] gpu_test_buddy_dirty_tracker_performance
[20:03:43] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[20:03:43] [PASSED] gpu_test_buddy_offset_aligned_allocation
[20:03:43] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[20:03:43] [PASSED] gpu_test_buddy_addr_to_block
[20:03:43] ==================== [PASSED] gpu_buddy ====================
[20:03:43] ============================================================
[20:03:43] Testing complete. Ran 14 tests: passed: 14
[20:03:44] Elapsed time: 27.477s total, 5.075s configuring, 20.434s building, 1.890s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/xe/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[20:03:44] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:03:46] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[20:04:25] Starting KUnit Kernel (1/1)...
[20:04:25] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:04:25] ================== guc_buf (11 subtests) ===================
[20:04:25] [PASSED] test_smallest
[20:04:25] [PASSED] test_largest
[20:04:25] [PASSED] test_granular
[20:04:25] [PASSED] test_unique
[20:04:25] [PASSED] test_overlap
[20:04:25] [PASSED] test_reusable
[20:04:25] [PASSED] test_too_big
[20:04:25] [PASSED] test_flush
[20:04:25] [PASSED] test_lookup
[20:04:25] [PASSED] test_data
[20:04:25] [PASSED] test_class
[20:04:25] ===================== [PASSED] guc_buf =====================
[20:04:25] =================== guc_dbm (7 subtests) ===================
[20:04:25] [PASSED] test_empty
[20:04:25] [PASSED] test_default
[20:04:25] ======================== test_size  ========================
[20:04:25] [PASSED] 4
[20:04:25] [PASSED] 8
[20:04:25] [PASSED] 32
[20:04:25] [PASSED] 256
[20:04:25] ==================== [PASSED] test_size ====================
[20:04:25] ======================= test_reuse  ========================
[20:04:25] [PASSED] 4
[20:04:25] [PASSED] 8
[20:04:25] [PASSED] 32
[20:04:25] [PASSED] 256
[20:04:25] =================== [PASSED] test_reuse ====================
[20:04:25] =================== test_range_overlap  ====================
[20:04:25] [PASSED] 4
[20:04:25] [PASSED] 8
[20:04:25] [PASSED] 32
[20:04:25] [PASSED] 256
[20:04:25] =============== [PASSED] test_range_overlap ================
[20:04:25] =================== test_range_compact  ====================
[20:04:25] [PASSED] 4
[20:04:25] [PASSED] 8
[20:04:25] [PASSED] 32
[20:04:25] [PASSED] 256
[20:04:25] =============== [PASSED] test_range_compact ================
[20:04:25] ==================== test_range_spare  =====================
[20:04:25] [PASSED] 4
[20:04:25] [PASSED] 8
[20:04:25] [PASSED] 32
[20:04:25] [PASSED] 256
[20:04:25] ================ [PASSED] test_range_spare =================
[20:04:25] ===================== [PASSED] guc_dbm =====================
[20:04:25] ================== guc_idm (22 subtests) ===================
[20:04:25] [PASSED] bad_init
[20:04:25] [PASSED] no_init
[20:04:25] [PASSED] init_fini
[20:04:25] [PASSED] check_init_small
[20:04:25] [PASSED] check_init_shared
[20:04:25] [PASSED] check_used
[20:04:25] [PASSED] check_quota
[20:04:25] [PASSED] check_all
[20:04:25] [PASSED] check_limits
[20:04:25] [PASSED] check_overlap
[20:04:25] [PASSED] check_overlap_alloc
[20:04:25] [PASSED] check_overlap_release
[20:04:25] [PASSED] check_overlap_partial_init
[20:04:25] [PASSED] check_overlap_partial_shared_range_blocking
[20:04:25] [PASSED] check_used_usable
[20:04:25] [PASSED] check_used_shareable
[20:04:25] [PASSED] check_used_mixed
[20:04:25] [PASSED] check_release_usable_range
[20:04:25] [PASSED] check_release_shareable_range
[20:04:25] [PASSED] check_split_boundaries
[20:04:25] [PASSED] check_shareable_spare
[20:04:25] [PASSED] check_shareable_spare_fragmented_tail
[20:04:25] ===================== [PASSED] guc_idm =====================
[20:04:25] ============== guc_klv_helpers (13 subtests) ===============
[20:04:25] [PASSED] test_count
[20:04:25] [PASSED] test_encode_u32
[20:04:25] [PASSED] test_encode_u64
[20:04:25] [PASSED] test_encode_string
[20:04:25] [PASSED] test_encode_object_raw
[20:04:25] [PASSED] test_encode_object_klv
[20:04:25] [PASSED] test_encode_object_nested
[20:04:25] [PASSED] test_encode_object_basic
[20:04:25] ===================== test_decode_u16  =====================
[20:04:25] [PASSED] empty
[20:04:25] [PASSED] valid
[20:04:25] [PASSED] max
[20:04:25] [PASSED] big
[20:04:25] [PASSED] long
[20:04:25] ================= [PASSED] test_decode_u16 =================
[20:04:25] ===================== test_decode_u32  =====================
[20:04:25] [PASSED] empty
[20:04:25] [PASSED] valid
[20:04:25] [PASSED] max
[20:04:25] [PASSED] long
[20:04:25] ================= [PASSED] test_decode_u32 =================
[20:04:25] ===================== test_decode_u64  =====================
[20:04:25] [PASSED] empty
[20:04:25] [PASSED] short
[20:04:25] [PASSED] valid
[20:04:25] [PASSED] max
[20:04:25] [PASSED] long
[20:04:25] ================= [PASSED] test_decode_u64 =================
[20:04:25] ===================== test_decode_str  =====================
[20:04:25] [PASSED] empty
[20:04:25] [PASSED] one
[20:04:25] [PASSED] one_trash
[20:04:25] [PASSED] two
[20:04:25] [PASSED] two_trash
[20:04:25] [PASSED] three
[20:04:25] [PASSED] dword
[20:04:25] [PASSED] four
[20:04:25] [PASSED] five
[20:04:25] [PASSED] six
[20:04:25] [PASSED] seven
[20:04:25] [PASSED] qword
[20:04:25] ================= [PASSED] test_decode_str =================
[20:04:25] [PASSED] test_print
[20:04:25] ================= [PASSED] guc_klv_helpers =================
[20:04:25] =================== xe_log (4 subtests) ====================
[20:04:25] [PASSED] demo_cper
[20:04:25] [PASSED] demo_dmesg
[20:04:25] ======================= test_dmesg  ========================
[20:04:25] [PASSED] test_fatal
[20:04:25] [PASSED] test_fatal_tile
[20:04:25] [PASSED] test_fatal_gt
[20:04:25] [PASSED] test_fatal_comp
[20:04:25] [PASSED] test_fatal_comp_tile
[20:04:25] [PASSED] test_fatal_comp_gt
[20:04:25] [PASSED] test_fatal_all
[20:04:25] [PASSED] test_recoverable
[20:04:25] [PASSED] test_recoverable_tile
[20:04:25] [PASSED] test_recoverable_gt
[20:04:25] [PASSED] test_recoverable_comp
[20:04:25] [PASSED] test_recoverable_comp_tile
[20:04:25] [PASSED] test_recoverable_comp_gt
[20:04:25] [PASSED] test_recoverable_all
[20:04:25] [PASSED] test_info
[20:04:25] [PASSED] test_info_tile
[20:04:25] [PASSED] test_info_gt
[20:04:25] [PASSED] test_info_err
[20:04:25] [PASSED] test_info_comp
[20:04:25] [PASSED] test_info_comp_tile
[20:04:25] [PASSED] test_info_comp_gt
[20:04:25] [PASSED] test_info_all
[20:04:25] [PASSED] test_hw_fatal
[20:04:25] [PASSED] test_hw_recoverable
[20:04:25] [PASSED] test_hw_corrected
[20:04:25] [PASSED] test_hw_informational
[20:04:25] =================== [PASSED] test_dmesg ====================
[20:04:25] ====================== test_invalid  =======================
[20:04:25] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG)
[20:04:25] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG)
[20:04:25] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG)
[20:04:25] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG)
[20:04:25] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG)
[20:04:25] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG)
[20:04:25] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG)
[20:04:25] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG)
[20:04:25] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG)
[20:04:25] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG)
[20:04:25] ================== [SKIPPED] test_invalid ==================
[20:04:25] ===================== [PASSED] xe_log ======================
[20:04:25] ================== no_relay (3 subtests) ===================
[20:04:25] [PASSED] xe_drops_guc2pf_if_not_ready
[20:04:25] [PASSED] xe_drops_guc2vf_if_not_ready
[20:04:25] [PASSED] xe_rejects_send_if_not_ready
[20:04:25] ==================== [PASSED] no_relay =====================
[20:04:25] ================== pf_relay (14 subtests) ==================
[20:04:25] [PASSED] pf_rejects_guc2pf_too_short
[20:04:25] [PASSED] pf_rejects_guc2pf_too_long
[20:04:25] [PASSED] pf_rejects_guc2pf_no_payload
[20:04:25] [PASSED] pf_fails_no_payload
[20:04:25] [PASSED] pf_fails_bad_origin
[20:04:25] [PASSED] pf_fails_bad_type
[20:04:25] [PASSED] pf_txn_reports_error
[20:04:25] [PASSED] pf_txn_sends_pf2guc
[20:04:25] [PASSED] pf_sends_pf2guc
[20:04:25] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:04:25] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:04:25] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:04:25] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:04:25] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:04:25] ==================== [PASSED] pf_relay =====================
[20:04:25] ================== vf_relay (3 subtests) ===================
[20:04:25] [PASSED] vf_rejects_guc2vf_too_short
[20:04:25] [PASSED] vf_rejects_guc2vf_too_long
[20:04:25] [PASSED] vf_rejects_guc2vf_no_payload
[20:04:25] ==================== [PASSED] vf_relay =====================
[20:04:25] ================ pf_gt_config (9 subtests) =================
[20:04:25] [PASSED] fair_contexts_1vf
[20:04:25] [PASSED] fair_doorbells_1vf
[20:04:25] [PASSED] fair_ggtt_1vf
[20:04:25] ====================== fair_vram_1vf  ======================
[20:04:25] [PASSED] 3.50 GiB
[20:04:25] [PASSED] 11.5 GiB
[20:04:25] [PASSED] 15.5 GiB
[20:04:25] [PASSED] 31.5 GiB
[20:04:25] [PASSED] 63.5 GiB
[20:04:25] [PASSED] 1.91 GiB
[20:04:25] ================== [PASSED] fair_vram_1vf ==================
[20:04:25] ================ fair_vram_1vf_admin_only  =================
[20:04:25] [PASSED] 3.50 GiB
[20:04:25] [PASSED] 11.5 GiB
[20:04:25] [PASSED] 15.5 GiB
[20:04:25] [PASSED] 31.5 GiB
[20:04:25] [PASSED] 63.5 GiB
[20:04:25] [PASSED] 1.91 GiB
[20:04:25] ============ [PASSED] fair_vram_1vf_admin_only =============
[20:04:25] ====================== fair_contexts  ======================
[20:04:25] [PASSED] 1 VF
[20:04:25] [PASSED] 2 VFs
[20:04:25] [PASSED] 3 VFs
[20:04:25] [PASSED] 4 VFs
[20:04:25] [PASSED] 5 VFs
[20:04:25] [PASSED] 6 VFs
[20:04:25] [PASSED] 7 VFs
[20:04:25] [PASSED] 8 VFs
[20:04:25] [PASSED] 9 VFs
[20:04:25] [PASSED] 10 VFs
[20:04:25] [PASSED] 11 VFs
[20:04:25] [PASSED] 12 VFs
[20:04:25] [PASSED] 13 VFs
[20:04:25] [PASSED] 14 VFs
[20:04:25] [PASSED] 15 VFs
[20:04:25] [PASSED] 16 VFs
[20:04:25] [PASSED] 17 VFs
[20:04:25] [PASSED] 18 VFs
[20:04:25] [PASSED] 19 VFs
[20:04:25] [PASSED] 20 VFs
[20:04:25] [PASSED] 21 VFs
[20:04:25] [PASSED] 22 VFs
[20:04:25] [PASSED] 23 VFs
[20:04:25] [PASSED] 24 VFs
[20:04:25] [PASSED] 25 VFs
[20:04:25] [PASSED] 26 VFs
[20:04:25] [PASSED] 27 VFs
[20:04:25] [PASSED] 28 VFs
[20:04:25] [PASSED] 29 VFs
[20:04:25] [PASSED] 30 VFs
[20:04:25] [PASSED] 31 VFs
[20:04:25] [PASSED] 32 VFs
[20:04:25] [PASSED] 33 VFs
[20:04:25] [PASSED] 34 VFs
[20:04:25] [PASSED] 35 VFs
[20:04:25] [PASSED] 36 VFs
[20:04:25] [PASSED] 37 VFs
[20:04:25] [PASSED] 38 VFs
[20:04:25] [PASSED] 39 VFs
[20:04:25] [PASSED] 40 VFs
[20:04:25] [PASSED] 41 VFs
[20:04:25] [PASSED] 42 VFs
[20:04:25] [PASSED] 43 VFs
[20:04:25] [PASSED] 44 VFs
[20:04:25] [PASSED] 45 VFs
[20:04:25] [PASSED] 46 VFs
[20:04:25] [PASSED] 47 VFs
[20:04:25] [PASSED] 48 VFs
[20:04:25] [PASSED] 49 VFs
[20:04:25] [PASSED] 50 VFs
[20:04:25] [PASSED] 51 VFs
[20:04:25] [PASSED] 52 VFs
[20:04:25] [PASSED] 53 VFs
[20:04:25] [PASSED] 54 VFs
[20:04:25] [PASSED] 55 VFs
[20:04:25] [PASSED] 56 VFs
[20:04:25] [PASSED] 57 VFs
[20:04:25] [PASSED] 58 VFs
[20:04:25] [PASSED] 59 VFs
[20:04:25] [PASSED] 60 VFs
[20:04:25] [PASSED] 61 VFs
[20:04:25] [PASSED] 62 VFs
[20:04:25] [PASSED] 63 VFs
[20:04:25] ================== [PASSED] fair_contexts ==================
[20:04:25] ===================== fair_doorbells  ======================
[20:04:25] [PASSED] 1 VF
[20:04:25] [PASSED] 2 VFs
[20:04:25] [PASSED] 3 VFs
[20:04:25] [PASSED] 4 VFs
[20:04:25] [PASSED] 5 VFs
[20:04:25] [PASSED] 6 VFs
[20:04:25] [PASSED] 7 VFs
[20:04:25] [PASSED] 8 VFs
[20:04:25] [PASSED] 9 VFs
[20:04:25] [PASSED] 10 VFs
[20:04:25] [PASSED] 11 VFs
[20:04:25] [PASSED] 12 VFs
[20:04:25] [PASSED] 13 VFs
[20:04:25] [PASSED] 14 VFs
[20:04:25] [PASSED] 15 VFs
[20:04:25] [PASSED] 16 VFs
[20:04:25] [PASSED] 17 VFs
[20:04:25] [PASSED] 18 VFs
[20:04:25] [PASSED] 19 VFs
[20:04:25] [PASSED] 20 VFs
[20:04:25] [PASSED] 21 VFs
[20:04:25] [PASSED] 22 VFs
[20:04:25] [PASSED] 23 VFs
[20:04:25] [PASSED] 24 VFs
[20:04:25] [PASSED] 25 VFs
[20:04:25] [PASSED] 26 VFs
[20:04:25] [PASSED] 27 VFs
[20:04:25] [PASSED] 28 VFs
[20:04:25] [PASSED] 29 VFs
[20:04:25] [PASSED] 30 VFs
[20:04:25] [PASSED] 31 VFs
[20:04:25] [PASSED] 32 VFs
[20:04:25] [PASSED] 33 VFs
[20:04:25] [PASSED] 34 VFs
[20:04:25] [PASSED] 35 VFs
[20:04:25] [PASSED] 36 VFs
[20:04:25] [PASSED] 37 VFs
[20:04:26] [PASSED] 38 VFs
[20:04:26] [PASSED] 39 VFs
[20:04:26] [PASSED] 40 VFs
[20:04:26] [PASSED] 41 VFs
[20:04:26] [PASSED] 42 VFs
[20:04:26] [PASSED] 43 VFs
[20:04:26] [PASSED] 44 VFs
[20:04:26] [PASSED] 45 VFs
[20:04:26] [PASSED] 46 VFs
[20:04:26] [PASSED] 47 VFs
[20:04:26] [PASSED] 48 VFs
[20:04:26] [PASSED] 49 VFs
[20:04:26] [PASSED] 50 VFs
[20:04:26] [PASSED] 51 VFs
[20:04:26] [PASSED] 52 VFs
[20:04:26] [PASSED] 53 VFs
[20:04:26] [PASSED] 54 VFs
[20:04:26] [PASSED] 55 VFs
[20:04:26] [PASSED] 56 VFs
[20:04:26] [PASSED] 57 VFs
[20:04:26] [PASSED] 58 VFs
[20:04:26] [PASSED] 59 VFs
[20:04:26] [PASSED] 60 VFs
[20:04:26] [PASSED] 61 VFs
[20:04:26] [PASSED] 62 VFs
[20:04:26] [PASSED] 63 VFs
[20:04:26] ================= [PASSED] fair_doorbells ==================
[20:04:26] ======================== fair_ggtt  ========================
[20:04:26] [PASSED] 1 VF
[20:04:26] [PASSED] 2 VFs
[20:04:26] [PASSED] 3 VFs
[20:04:26] [PASSED] 4 VFs
[20:04:26] [PASSED] 5 VFs
[20:04:26] [PASSED] 6 VFs
[20:04:26] [PASSED] 7 VFs
[20:04:26] [PASSED] 8 VFs
[20:04:26] [PASSED] 9 VFs
[20:04:26] [PASSED] 10 VFs
[20:04:26] [PASSED] 11 VFs
[20:04:26] [PASSED] 12 VFs
[20:04:26] [PASSED] 13 VFs
[20:04:26] [PASSED] 14 VFs
[20:04:26] [PASSED] 15 VFs
[20:04:26] [PASSED] 16 VFs
[20:04:26] [PASSED] 17 VFs
[20:04:26] [PASSED] 18 VFs
[20:04:26] [PASSED] 19 VFs
[20:04:26] [PASSED] 20 VFs
[20:04:26] [PASSED] 21 VFs
[20:04:26] [PASSED] 22 VFs
[20:04:26] [PASSED] 23 VFs
[20:04:26] [PASSED] 24 VFs
[20:04:26] [PASSED] 25 VFs
[20:04:26] [PASSED] 26 VFs
[20:04:26] [PASSED] 27 VFs
[20:04:26] [PASSED] 28 VFs
[20:04:26] [PASSED] 29 VFs
[20:04:26] [PASSED] 30 VFs
[20:04:26] [PASSED] 31 VFs
[20:04:26] [PASSED] 32 VFs
[20:04:26] [PASSED] 33 VFs
[20:04:26] [PASSED] 34 VFs
[20:04:26] [PASSED] 35 VFs
[20:04:26] [PASSED] 36 VFs
[20:04:26] [PASSED] 37 VFs
[20:04:26] [PASSED] 38 VFs
[20:04:26] [PASSED] 39 VFs
[20:04:26] [PASSED] 40 VFs
[20:04:26] [PASSED] 41 VFs
[20:04:26] [PASSED] 42 VFs
[20:04:26] [PASSED] 43 VFs
[20:04:26] [PASSED] 44 VFs
[20:04:26] [PASSED] 45 VFs
[20:04:26] [PASSED] 46 VFs
[20:04:26] [PASSED] 47 VFs
[20:04:26] [PASSED] 48 VFs
[20:04:26] [PASSED] 49 VFs
[20:04:26] [PASSED] 50 VFs
[20:04:26] [PASSED] 51 VFs
[20:04:26] [PASSED] 52 VFs
[20:04:26] [PASSED] 53 VFs
[20:04:26] [PASSED] 54 VFs
[20:04:26] [PASSED] 55 VFs
[20:04:26] [PASSED] 56 VFs
[20:04:26] [PASSED] 57 VFs
[20:04:26] [PASSED] 58 VFs
[20:04:26] [PASSED] 59 VFs
[20:04:26] [PASSED] 60 VFs
[20:04:26] [PASSED] 61 VFs
[20:04:26] [PASSED] 62 VFs
[20:04:26] [PASSED] 63 VFs
[20:04:26] ==================== [PASSED] fair_ggtt ====================
[20:04:26] ======================== fair_vram  ========================
[20:04:26] [PASSED] 1 VF
[20:04:26] [PASSED] 2 VFs
[20:04:26] [PASSED] 3 VFs
[20:04:26] [PASSED] 4 VFs
[20:04:26] [PASSED] 5 VFs
[20:04:26] [PASSED] 6 VFs
[20:04:26] [PASSED] 7 VFs
[20:04:26] [PASSED] 8 VFs
[20:04:26] [PASSED] 9 VFs
[20:04:26] [PASSED] 10 VFs
[20:04:26] [PASSED] 11 VFs
[20:04:26] [PASSED] 12 VFs
[20:04:26] [PASSED] 13 VFs
[20:04:26] [PASSED] 14 VFs
[20:04:26] [PASSED] 15 VFs
[20:04:26] [PASSED] 16 VFs
[20:04:26] [PASSED] 17 VFs
[20:04:26] [PASSED] 18 VFs
[20:04:26] [PASSED] 19 VFs
[20:04:26] [PASSED] 20 VFs
[20:04:26] [PASSED] 21 VFs
[20:04:26] [PASSED] 22 VFs
[20:04:26] [PASSED] 23 VFs
[20:04:26] [PASSED] 24 VFs
[20:04:26] [PASSED] 25 VFs
[20:04:26] [PASSED] 26 VFs
[20:04:26] [PASSED] 27 VFs
[20:04:26] [PASSED] 28 VFs
[20:04:26] [PASSED] 29 VFs
[20:04:26] [PASSED] 30 VFs
[20:04:26] [PASSED] 31 VFs
[20:04:26] [PASSED] 32 VFs
[20:04:26] [PASSED] 33 VFs
[20:04:26] [PASSED] 34 VFs
[20:04:26] [PASSED] 35 VFs
[20:04:26] [PASSED] 36 VFs
[20:04:26] [PASSED] 37 VFs
[20:04:26] [PASSED] 38 VFs
[20:04:26] [PASSED] 39 VFs
[20:04:26] [PASSED] 40 VFs
[20:04:26] [PASSED] 41 VFs
[20:04:26] [PASSED] 42 VFs
[20:04:26] [PASSED] 43 VFs
[20:04:26] [PASSED] 44 VFs
[20:04:26] [PASSED] 45 VFs
[20:04:26] [PASSED] 46 VFs
[20:04:26] [PASSED] 47 VFs
[20:04:26] [PASSED] 48 VFs
[20:04:26] [PASSED] 49 VFs
[20:04:26] [PASSED] 50 VFs
[20:04:26] [PASSED] 51 VFs
[20:04:26] [PASSED] 52 VFs
[20:04:26] [PASSED] 53 VFs
[20:04:26] [PASSED] 54 VFs
[20:04:26] [PASSED] 55 VFs
[20:04:26] [PASSED] 56 VFs
[20:04:26] [PASSED] 57 VFs
[20:04:26] [PASSED] 58 VFs
[20:04:26] [PASSED] 59 VFs
[20:04:26] [PASSED] 60 VFs
[20:04:26] [PASSED] 61 VFs
[20:04:26] [PASSED] 62 VFs
[20:04:26] [PASSED] 63 VFs
[20:04:26] ==================== [PASSED] fair_vram ====================
[20:04:26] ================== [PASSED] pf_gt_config ===================
[20:04:26] ===================== lmtt (1 subtest) =====================
[20:04:26] ======================== test_ops  =========================
[20:04:26] [PASSED] 2-level
[20:04:26] [PASSED] multi-level
[20:04:26] ==================== [PASSED] test_ops =====================
[20:04:26] ====================== [PASSED] lmtt =======================
[20:04:26] ================= sriov_packet (1 subtest) =================
[20:04:26] [PASSED] test_descriptor_init
[20:04:26] ================== [PASSED] sriov_packet ===================
[20:04:26] ================= pf_service (11 subtests) =================
[20:04:26] [PASSED] pf_negotiate_any
[20:04:26] [PASSED] pf_negotiate_base_match
[20:04:26] [PASSED] pf_negotiate_base_newer
[20:04:26] [PASSED] pf_negotiate_base_next
[20:04:26] [SKIPPED] pf_negotiate_base_older (no older minor)
[20:04:26] [PASSED] pf_negotiate_base_prev
[20:04:26] [PASSED] pf_negotiate_latest_match
[20:04:26] [PASSED] pf_negotiate_latest_newer
[20:04:26] [PASSED] pf_negotiate_latest_next
[20:04:26] [SKIPPED] pf_negotiate_latest_older (no older minor)
[20:04:26] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[20:04:26] =================== [PASSED] pf_service ====================
[20:04:26] ================= xe_guc_g2g (2 subtests) ==================
[20:04:26] ============== xe_live_guc_g2g_kunit_default  ==============
[20:04:26] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[20:04:26] ============== xe_live_guc_g2g_kunit_allmem  ===============
[20:04:26] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[20:04:26] =================== [SKIPPED] xe_guc_g2g ===================
[20:04:26] =================== xe_mocs (2 subtests) ===================
[20:04:26] ================ xe_live_mocs_kernel_kunit  ================
[20:04:26] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[20:04:26] ================ xe_live_mocs_reset_kunit  =================
[20:04:26] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[20:04:26] ==================== [SKIPPED] xe_mocs =====================
[20:04:26] ================= xe_migrate (3 subtests) ==================
[20:04:26] ================= xe_migrate_sanity_kunit  =================
[20:04:26] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[20:04:26] ================== xe_validate_ccs_kunit  ==================
[20:04:26] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[20:04:26] ============= xe_migrate_access_memory_kunit  ==============
[20:04:26] ========= [SKIPPED] xe_migrate_access_memory_kunit =========
[20:04:26] =================== [SKIPPED] xe_migrate ===================
[20:04:26] ================== xe_dma_buf (1 subtest) ==================
[20:04:26] ==================== xe_dma_buf_kunit  =====================
[20:04:26] ================ [SKIPPED] xe_dma_buf_kunit ================
[20:04:26] =================== [SKIPPED] xe_dma_buf ===================
[20:04:26] ================= xe_bo_shrink (1 subtest) =================
[20:04:26] =================== xe_bo_shrink_kunit  ====================
[20:04:26] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[20:04:26] ================== [SKIPPED] xe_bo_shrink ==================
[20:04:26] ==================== xe_bo (2 subtests) ====================
[20:04:26] ================== xe_ccs_migrate_kunit  ===================
[20:04:26] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[20:04:26] ==================== xe_bo_evict_kunit  ====================
[20:04:26] =============== [SKIPPED] xe_bo_evict_kunit ================
[20:04:26] ===================== [SKIPPED] xe_bo ======================
[20:04:26] =================== xe_any (9 subtests) ====================
[20:04:26] [PASSED] test_to_xe
[20:04:26] [PASSED] test_to_dev
[20:04:26] [PASSED] test_to_pdev
[20:04:26] [PASSED] test_to_drm
[20:04:26] [PASSED] test_if_pdev
[20:04:26] [PASSED] test_if_xe
[20:04:26] [PASSED] test_if_tile
[20:04:26] [PASSED] test_if_gt
[20:04:26] [PASSED] test_to_id
[20:04:26] ===================== [PASSED] xe_any ======================
[20:04:26] ==================== args (13 subtests) ====================
[20:04:26] [PASSED] count_args_test
[20:04:26] [PASSED] call_args_example
[20:04:26] [PASSED] call_args_test
[20:04:26] [PASSED] drop_first_arg_example
[20:04:26] [PASSED] drop_first_arg_test
[20:04:26] [PASSED] first_arg_example
[20:04:26] [PASSED] first_arg_test
[20:04:26] [PASSED] last_arg_example
[20:04:26] [PASSED] last_arg_test
[20:04:26] [PASSED] pick_arg_example
[20:04:26] [PASSED] if_args_example
[20:04:26] [PASSED] if_args_test
[20:04:26] [PASSED] sep_comma_example
[20:04:26] ====================== [PASSED] args =======================
[20:04:26] =================== xe_pci (3 subtests) ====================
[20:04:26] ==================== check_graphics_ip  ====================
[20:04:26] [PASSED] 12.00 Xe_LP
[20:04:26] [PASSED] 12.10 Xe_LP+
[20:04:26] [PASSED] 12.55 Xe_HPG
[20:04:26] [PASSED] 12.60 Xe_HPC
[20:04:26] [PASSED] 12.70 Xe_LPG
[20:04:26] [PASSED] 12.71 Xe_LPG
[20:04:26] [PASSED] 12.74 Xe_LPG+
[20:04:26] [PASSED] 20.01 Xe2_HPG
[20:04:26] [PASSED] 20.02 Xe2_HPG
[20:04:26] [PASSED] 20.04 Xe2_LPG
[20:04:26] [PASSED] 30.00 Xe3_LPG
[20:04:26] [PASSED] 30.01 Xe3_LPG
[20:04:26] [PASSED] 30.03 Xe3_LPG
[20:04:26] [PASSED] 30.04 Xe3_LPG
[20:04:26] [PASSED] 30.05 Xe3_LPG
[20:04:26] [PASSED] 35.10 Xe3p_LPG
[20:04:26] [PASSED] 35.11 Xe3p_XPC
[20:04:26] ================ [PASSED] check_graphics_ip ================
[20:04:26] ===================== check_media_ip  ======================
[20:04:26] [PASSED] 12.00 Xe_M
[20:04:26] [PASSED] 12.55 Xe_HPM
[20:04:26] [PASSED] 13.00 Xe_LPM+
[20:04:26] [PASSED] 13.01 Xe2_HPM
[20:04:26] [PASSED] 20.00 Xe2_LPM
[20:04:26] [PASSED] 30.00 Xe3_LPM
[20:04:26] [PASSED] 30.02 Xe3_LPM
[20:04:26] [PASSED] 35.00 Xe3p_LPM
[20:04:26] [PASSED] 35.03 Xe3p_HPM
[20:04:26] ================= [PASSED] check_media_ip ==================
[20:04:26] =================== check_platform_desc  ===================
[20:04:26] [PASSED] 0x9A60 (TIGERLAKE)
[20:04:26] [PASSED] 0x9A68 (TIGERLAKE)
[20:04:26] [PASSED] 0x9A70 (TIGERLAKE)
[20:04:26] [PASSED] 0x9A40 (TIGERLAKE)
[20:04:26] [PASSED] 0x9A49 (TIGERLAKE)
[20:04:26] [PASSED] 0x9A59 (TIGERLAKE)
[20:04:26] [PASSED] 0x9A78 (TIGERLAKE)
[20:04:26] [PASSED] 0x9AC0 (TIGERLAKE)
[20:04:26] [PASSED] 0x9AC9 (TIGERLAKE)
[20:04:26] [PASSED] 0x9AD9 (TIGERLAKE)
[20:04:26] [PASSED] 0x9AF8 (TIGERLAKE)
[20:04:26] [PASSED] 0x4C80 (ROCKETLAKE)
[20:04:26] [PASSED] 0x4C8A (ROCKETLAKE)
[20:04:26] [PASSED] 0x4C8B (ROCKETLAKE)
[20:04:26] [PASSED] 0x4C8C (ROCKETLAKE)
[20:04:26] [PASSED] 0x4C90 (ROCKETLAKE)
[20:04:26] [PASSED] 0x4C9A (ROCKETLAKE)
[20:04:26] [PASSED] 0x4680 (ALDERLAKE_S)
[20:04:26] [PASSED] 0x4682 (ALDERLAKE_S)
[20:04:26] [PASSED] 0x4688 (ALDERLAKE_S)
[20:04:26] [PASSED] 0x468A (ALDERLAKE_S)
[20:04:26] [PASSED] 0x468B (ALDERLAKE_S)
[20:04:26] [PASSED] 0x4690 (ALDERLAKE_S)
[20:04:26] [PASSED] 0x4692 (ALDERLAKE_S)
[20:04:26] [PASSED] 0x4693 (ALDERLAKE_S)
[20:04:26] [PASSED] 0x46A0 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46A1 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46A2 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46A3 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46A6 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46A8 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46AA (ALDERLAKE_P)
[20:04:26] [PASSED] 0x462A (ALDERLAKE_P)
[20:04:26] [PASSED] 0x4626 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x4628 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46B0 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46B1 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46B2 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46B3 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46C0 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46C1 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46C2 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46C3 (ALDERLAKE_P)
[20:04:26] [PASSED] 0x46D0 (ALDERLAKE_N)
[20:04:26] [PASSED] 0x46D1 (ALDERLAKE_N)
[20:04:26] [PASSED] 0x46D2 (ALDERLAKE_N)
[20:04:26] [PASSED] 0x46D3 (ALDERLAKE_N)
[20:04:26] [PASSED] 0x46D4 (ALDERLAKE_N)
[20:04:26] [PASSED] 0xA721 (ALDERLAKE_P)
[20:04:26] [PASSED] 0xA7A1 (ALDERLAKE_P)
[20:04:26] [PASSED] 0xA7A9 (ALDERLAKE_P)
[20:04:26] [PASSED] 0xA7AC (ALDERLAKE_P)
[20:04:26] [PASSED] 0xA7AD (ALDERLAKE_P)
[20:04:26] [PASSED] 0xA720 (ALDERLAKE_P)
[20:04:26] [PASSED] 0xA7A0 (ALDERLAKE_P)
[20:04:26] [PASSED] 0xA7A8 (ALDERLAKE_P)
[20:04:26] [PASSED] 0xA7AA (ALDERLAKE_P)
[20:04:26] [PASSED] 0xA7AB (ALDERLAKE_P)
[20:04:26] [PASSED] 0xA780 (ALDERLAKE_S)
[20:04:26] [PASSED] 0xA781 (ALDERLAKE_S)
[20:04:26] [PASSED] 0xA782 (ALDERLAKE_S)
[20:04:26] [PASSED] 0xA783 (ALDERLAKE_S)
[20:04:26] [PASSED] 0xA788 (ALDERLAKE_S)
[20:04:26] [PASSED] 0xA789 (ALDERLAKE_S)
[20:04:26] [PASSED] 0xA78A (ALDERLAKE_S)
[20:04:26] [PASSED] 0xA78B (ALDERLAKE_S)
[20:04:26] [PASSED] 0x4905 (DG1)
[20:04:26] [PASSED] 0x4906 (DG1)
[20:04:26] [PASSED] 0x4907 (DG1)
[20:04:26] [PASSED] 0x4908 (DG1)
[20:04:26] [PASSED] 0x4909 (DG1)
[20:04:26] [PASSED] 0x56C0 (DG2)
[20:04:26] [PASSED] 0x56C2 (DG2)
[20:04:26] [PASSED] 0x56C1 (DG2)
[20:04:26] [PASSED] 0x7D51 (METEORLAKE)
[20:04:26] [PASSED] 0x7DD1 (METEORLAKE)
[20:04:26] [PASSED] 0x7D41 (METEORLAKE)
[20:04:26] [PASSED] 0x7D67 (METEORLAKE)
[20:04:26] [PASSED] 0xB640 (METEORLAKE)
[20:04:26] [PASSED] 0x56A0 (DG2)
[20:04:26] [PASSED] 0x56A1 (DG2)
[20:04:26] [PASSED] 0x56A2 (DG2)
[20:04:26] [PASSED] 0x56BE (DG2)
[20:04:26] [PASSED] 0x56BF (DG2)
[20:04:26] [PASSED] 0x5690 (DG2)
[20:04:26] [PASSED] 0x5691 (DG2)
[20:04:26] [PASSED] 0x5692 (DG2)
[20:04:26] [PASSED] 0x56A5 (DG2)
[20:04:26] [PASSED] 0x56A6 (DG2)
[20:04:26] [PASSED] 0x56B0 (DG2)
[20:04:26] [PASSED] 0x56B1 (DG2)
[20:04:26] [PASSED] 0x56BA (DG2)
[20:04:26] [PASSED] 0x56BB (DG2)
[20:04:26] [PASSED] 0x56BC (DG2)
[20:04:26] [PASSED] 0x56BD (DG2)
[20:04:26] [PASSED] 0x5693 (DG2)
[20:04:26] [PASSED] 0x5694 (DG2)
[20:04:26] [PASSED] 0x5695 (DG2)
[20:04:26] [PASSED] 0x56A3 (DG2)
[20:04:26] [PASSED] 0x56A4 (DG2)
[20:04:26] [PASSED] 0x56B2 (DG2)
[20:04:26] [PASSED] 0x56B3 (DG2)
[20:04:26] [PASSED] 0x5696 (DG2)
[20:04:26] [PASSED] 0x5697 (DG2)
[20:04:26] [PASSED] 0xB69 (PVC)
[20:04:26] [PASSED] 0xB6E (PVC)
[20:04:26] [PASSED] 0xBD4 (PVC)
[20:04:26] [PASSED] 0xBD5 (PVC)
[20:04:26] [PASSED] 0xBD6 (PVC)
[20:04:26] [PASSED] 0xBD7 (PVC)
[20:04:26] [PASSED] 0xBD8 (PVC)
[20:04:26] [PASSED] 0xBD9 (PVC)
[20:04:26] [PASSED] 0xBDA (PVC)
[20:04:26] [PASSED] 0xBDB (PVC)
[20:04:26] [PASSED] 0xBE0 (PVC)
[20:04:26] [PASSED] 0xBE1 (PVC)
[20:04:26] [PASSED] 0xBE5 (PVC)
[20:04:26] [PASSED] 0x7D40 (METEORLAKE)
[20:04:26] [PASSED] 0x7D45 (METEORLAKE)
[20:04:26] [PASSED] 0x7D55 (METEORLAKE)
[20:04:26] [PASSED] 0x7D60 (METEORLAKE)
[20:04:26] [PASSED] 0x7DD5 (METEORLAKE)
[20:04:26] [PASSED] 0x6420 (LUNARLAKE)
[20:04:26] [PASSED] 0x64A0 (LUNARLAKE)
[20:04:26] [PASSED] 0x64B0 (LUNARLAKE)
[20:04:26] [PASSED] 0xE202 (BATTLEMAGE)
[20:04:26] [PASSED] 0xE209 (BATTLEMAGE)
[20:04:26] [PASSED] 0xE20B (BATTLEMAGE)
[20:04:26] [PASSED] 0xE20C (BATTLEMAGE)
[20:04:26] [PASSED] 0xE20D (BATTLEMAGE)
[20:04:26] [PASSED] 0xE210 (BATTLEMAGE)
[20:04:26] [PASSED] 0xE211 (BATTLEMAGE)
[20:04:26] [PASSED] 0xE212 (BATTLEMAGE)
[20:04:26] [PASSED] 0xE216 (BATTLEMAGE)
[20:04:26] [PASSED] 0xE220 (BATTLEMAGE)
[20:04:26] [PASSED] 0xE221 (BATTLEMAGE)
[20:04:26] [PASSED] 0xE222 (BATTLEMAGE)
[20:04:26] [PASSED] 0xE223 (BATTLEMAGE)
[20:04:26] [PASSED] 0xB080 (PANTHERLAKE)
[20:04:26] [PASSED] 0xB081 (PANTHERLAKE)
[20:04:26] [PASSED] 0xB082 (PANTHERLAKE)
[20:04:26] [PASSED] 0xB083 (PANTHERLAKE)
[20:04:26] [PASSED] 0xB084 (PANTHERLAKE)
[20:04:26] [PASSED] 0xB085 (PANTHERLAKE)
[20:04:26] [PASSED] 0xB086 (PANTHERLAKE)
[20:04:26] [PASSED] 0xB087 (PANTHERLAKE)
[20:04:26] [PASSED] 0xB08F (PANTHERLAKE)
[20:04:26] [PASSED] 0xB090 (PANTHERLAKE)
[20:04:26] [PASSED] 0xB0A0 (PANTHERLAKE)
[20:04:26] [PASSED] 0xB0A1 (PANTHERLAKE)
[20:04:26] [PASSED] 0xB0B0 (PANTHERLAKE)
[20:04:26] [PASSED] 0xFD80 (PANTHERLAKE)
[20:04:26] [PASSED] 0xFD81 (PANTHERLAKE)
[20:04:26] [PASSED] 0xD740 (NOVALAKE_S)
[20:04:26] [PASSED] 0xD741 (NOVALAKE_S)
[20:04:26] [PASSED] 0xD742 (NOVALAKE_S)
[20:04:26] [PASSED] 0xD743 (NOVALAKE_S)
[20:04:26] [PASSED] 0xD745 (NOVALAKE_S)
[20:04:26] [PASSED] 0xD74A (NOVALAKE_S)
[20:04:26] [PASSED] 0xD74B (NOVALAKE_S)
[20:04:26] [PASSED] 0x674C (CRESCENTISLAND)
[20:04:26] [PASSED] 0x674D (CRESCENTISLAND)
[20:04:26] [PASSED] 0x674E (CRESCENTISLAND)
[20:04:26] [PASSED] 0x674F (CRESCENTISLAND)
[20:04:26] [PASSED] 0x6750 (CRESCENTISLAND)
[20:04:26] [PASSED] 0x6751 (CRESCENTISLAND)
[20:04:26] [PASSED] 0x6752 (CRESCENTISLAND)
[20:04:26] [PASSED] 0xD750 (NOVALAKE_P)
[20:04:26] [PASSED] 0xD751 (NOVALAKE_P)
[20:04:26] [PASSED] 0xD752 (NOVALAKE_P)
[20:04:26] [PASSED] 0xD753 (NOVALAKE_P)
[20:04:26] [PASSED] 0xD754 (NOVALAKE_P)
[20:04:26] [PASSED] 0xD755 (NOVALAKE_P)
[20:04:26] [PASSED] 0xD756 (NOVALAKE_P)
[20:04:26] [PASSED] 0xD757 (NOVALAKE_P)
[20:04:26] [PASSED] 0xD75F (NOVALAKE_P)
[20:04:26] =============== [PASSED] check_platform_desc ===============
[20:04:26] ===================== [PASSED] xe_pci ======================
[20:04:26] ============= xe_rtp_tables_test (5 subtests) ==============
[20:04:26] ================== xe_rtp_table_gt_test  ===================
[20:04:26] [PASSED] gt_was/14011060649
[20:04:26] [PASSED] gt_was/14011059788
[20:04:26] [PASSED] gt_was/14015795083
[20:04:26] [PASSED] gt_was/16021867713
[20:04:26] [PASSED] gt_was/14019449301
[20:04:26] [PASSED] gt_was/16028005424
[20:04:26] [PASSED] gt_was/14026578760
[20:04:26] [PASSED] gt_was/1409420604
[20:04:26] [PASSED] gt_was/1408615072
[20:04:26] [PASSED] gt_was/22010523718
[20:04:26] [PASSED] gt_was/14011006942
[20:04:26] [PASSED] gt_was/14014830051
[20:04:26] [PASSED] gt_was/18018781329
[20:04:26] [PASSED] gt_was/1509235366
[20:04:26] [PASSED] gt_was/18018781329
[20:04:26] [PASSED] gt_was/16016694945
[20:04:26] [PASSED] gt_was/14018575942
[20:04:26] [PASSED] gt_was/22016670082
[20:04:26] [PASSED] gt_was/22016670082
[20:04:26] [PASSED] gt_was/14017421178
[20:04:26] [PASSED] gt_was/16025250150
[20:04:26] [PASSED] gt_was/14021871409
[20:04:26] [PASSED] gt_was/16021865536
[20:04:26] [PASSED] gt_was/14021486841
[20:04:26] [PASSED] gt_was/14025160223
[20:04:26] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[20:04:26] [PASSED] gt_was/14025635424
[20:04:26] [PASSED] gt_was/16028005424
[20:04:26] ============== [PASSED] xe_rtp_table_gt_test ===============
[20:04:26] ================== xe_rtp_table_gt_test  ===================
[20:04:26] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[20:04:26] [PASSED] gt_tunings/Tuning: 32B Access Enable
[20:04:26] [PASSED] gt_tunings/Tuning: L3 cache
[20:04:26] [PASSED] gt_tunings/Tuning: L3 cache - media
[20:04:26] [PASSED] gt_tunings/Tuning: Compression Overfetch
[20:04:26] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[20:04:26] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[20:04:26] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[20:04:26] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[20:04:26] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[20:04:26] [PASSED] gt_tunings/Tuning: Stateless compression control
[20:04:26] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[20:04:26] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[20:04:26] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[20:04:26] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[20:04:26] [PASSED] gt_tunings/Tuning: Force All Non-Compressible Memory Reads to be 256B Overfetches
[20:04:26] ============== [PASSED] xe_rtp_table_gt_test ===============
[20:04:26] ================== xe_rtp_table_oob_test  ==================
[20:04:26] [PASSED] oob_was/1607983814
[20:04:26] [PASSED] oob_was/16010904313
[20:04:26] [PASSED] oob_was/18022495364
[20:04:26] [PASSED] oob_was/22012773006
[20:04:26] [PASSED] oob_was/14014475959
[20:04:26] [PASSED] oob_was/22011391025
[20:04:26] [PASSED] oob_was/22012727170
[20:04:26] [PASSED] oob_was/22012727685
[20:04:26] [PASSED] oob_was/22016596838
[20:04:26] [PASSED] oob_was/18020744125
[20:04:26] [PASSED] oob_was/1409600907
[20:04:26] [PASSED] oob_was/22014953428
[20:04:26] [PASSED] oob_was/16017236439
[20:04:26] [PASSED] oob_was/14019821291
[20:04:26] [PASSED] oob_was/14015076503
[20:04:26] [PASSED] oob_was/22016122933
[20:04:26] [PASSED] oob_was/14018913170
[20:04:26] [PASSED] oob_was/14018094691
[20:04:26] [PASSED] oob_was/18024947630
[20:04:26] [PASSED] oob_was/16022287689
[20:04:26] [PASSED] oob_was/13011645652
[20:04:26] [PASSED] oob_was/14022293748
[20:04:26] [PASSED] oob_was/22019794406
[20:04:26] [PASSED] oob_was/22019338487
[20:04:26] [PASSED] oob_was/16023588340
[20:04:26] [PASSED] oob_was/14019789679
[20:04:26] [PASSED] oob_was/14022866841
[20:04:26] [PASSED] oob_was/16021333562
[20:04:26] [PASSED] oob_was/14016712196
[20:04:26] [PASSED] oob_was/14015568240
[20:04:26] [PASSED] oob_was/18013179988
[20:04:26] [PASSED] oob_was/1508761755
[20:04:26] [PASSED] oob_was/16023105232
[20:04:26] [PASSED] oob_was/16026508708
[20:04:26] [PASSED] oob_was/14020001231
[20:04:26] [PASSED] oob_was/16023683509
[20:04:26] [PASSED] oob_was/14025515070
[20:04:26] [PASSED] oob_was/15015404425_disable
[20:04:26] [PASSED] oob_was/16026007364
[20:04:26] [PASSED] oob_was/14020316580
[20:04:26] [PASSED] oob_was/14025883347
[20:04:26] [PASSED] oob_was/16029380221
[20:04:26] [PASSED] oob_was/22022079272
[20:04:26] [PASSED] oob_was/16029897822
[20:04:26] [PASSED] oob_was/14026539277
[20:04:26] [PASSED] oob_was/14027054324
[20:04:26] [PASSED] oob_was/14025941587
[20:04:26] [PASSED] oob_was/16030224309
[20:04:26] [PASSED] oob_was/14028709524
[20:04:26] [PASSED] oob_was/14028250015
[20:04:26] [PASSED] oob_was/16031259911
[20:04:26] ============== [PASSED] xe_rtp_table_oob_test ==============
[20:04:26] ================ xe_rtp_table_dev_oob_test  ================
[20:04:26] [PASSED] device_oob_was/22010954014
[20:04:26] [PASSED] device_oob_was/15015404425
[20:04:26] [PASSED] device_oob_was/22019338487_display
[20:04:26] [PASSED] device_oob_was/14022085890
[20:04:26] [PASSED] device_oob_was/14026633728
[20:04:26] [PASSED] device_oob_was/14026746987
[20:04:26] [PASSED] device_oob_was/14026779378
[20:04:26] [PASSED] device_oob_was/14028586678
[20:04:26] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[20:04:26] ========== xe_rtp_table_missing_upper_bound_test  ==========
[20:04:26] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[20:04:26] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[20:04:26] [PASSED] register_whitelist/1806527549
[20:04:26] [PASSED] register_whitelist/allow_read_ctx_timestamp
[20:04:26] [PASSED] register_whitelist/allow_read_queue_timestamp
[20:04:26] [PASSED] register_whitelist/16014440446
[20:04:26] [PASSED] register_whitelist/16017236439
[20:04:26] [PASSED] register_whitelist/16020183090
[20:04:26] [PASSED] register_whitelist/14024997852
[20:04:26] [PASSED] register_whitelist/14024997852
[20:04:26] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[20:04:26] =============== [PASSED] xe_rtp_tables_test ================
[20:04:26] =================== xe_rtp (3 subtests) ====================
[20:04:26] =================== xe_rtp_rules_tests  ====================
[20:04:26] [PASSED] no
[20:04:26] [PASSED] yes
[20:04:26] [PASSED] no-and-no
[20:04:26] [PASSED] no-and-yes
[20:04:26] [PASSED] yes-and-no
[20:04:26] [PASSED] yes-and-yes
[20:04:26] [PASSED] no-or-no
[20:04:26] [PASSED] no-or-yes
[20:04:26] [PASSED] yes-or-no
[20:04:26] [PASSED] yes-or-yes
[20:04:26] [PASSED] no-yes-or-yes-no
[20:04:26] [PASSED] no-yes-or-yes-yes
[20:04:26] [PASSED] yes-yes-or-no-yes
[20:04:26] [PASSED] yes-yes-or-yes-yes
[20:04:26] [PASSED] no-no-or-yes-or-no
[20:04:26] [PASSED] or
[20:04:26] [PASSED] or-yes
[20:04:26] [PASSED] or-no
[20:04:26] [PASSED] yes-or
[20:04:26] [PASSED] no-or
[20:04:26] [PASSED] no-or-or-yes
[20:04:26] [PASSED] yes-or-or-no
[20:04:26] [PASSED] no-or-or-no
[20:04:26] [PASSED] missing-context-engine-class
[20:04:26] [PASSED] missing-context-engine-class-or-yes
[20:04:26] [PASSED] missing-context-engine-class-or-or-yes
[20:04:26] =============== [PASSED] xe_rtp_rules_tests ================
[20:04:26] =============== xe_rtp_process_to_sr_tests  ================
[20:04:26] [PASSED] coalesce-same-reg
[20:04:26] [PASSED] coalesce-same-reg-literal-and-func
[20:04:26] [PASSED] no-match-no-add
[20:04:26] [PASSED] two-regs-two-entries
[20:04:26] [PASSED] clr-one-set-other
[20:04:26] [PASSED] set-field
[20:04:26] [PASSED] conflict-duplicate
[20:04:26] [PASSED] conflict-not-disjoint
[20:04:26] [PASSED] conflict-not-disjoint-literal-and-func
[20:04:26] [PASSED] conflict-reg-type
[20:04:26] [PASSED] bad-mcr-reg-forced-to-regular
[20:04:26] [PASSED] bad-regular-reg-forced-to-mcr
[20:04:26] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[20:04:26] ================== xe_rtp_process_tests  ===================
[20:04:26] [PASSED] active1
[20:04:26] [PASSED] active2
[20:04:26] [PASSED] active-inactive
[20:04:26] [PASSED] inactive-active
[20:04:26] [PASSED] inactive-active-inactive
[20:04:26] [PASSED] inactive-inactive-inactive
[20:04:26] ============== [PASSED] xe_rtp_process_tests ===============
[20:04:26] ===================== [PASSED] xe_rtp ======================
[20:04:26] ==================== xe_wa (1 subtest) =====================
[20:04:26] ======================== xe_wa_gt  =========================
[20:04:26] [PASSED] TIGERLAKE B0
[20:04:26] [PASSED] DG1 A0
[20:04:26] [PASSED] DG1 B0
[20:04:26] [PASSED] ALDERLAKE_S A0
[20:04:26] [PASSED] ALDERLAKE_S B0
[20:04:26] [PASSED] ALDERLAKE_S C0
[20:04:26] [PASSED] ALDERLAKE_S D0
[20:04:26] [PASSED] ALDERLAKE_P A0
[20:04:26] [PASSED] ALDERLAKE_P B0
[20:04:26] [PASSED] ALDERLAKE_P C0
[20:04:26] [PASSED] ALDERLAKE_S RPLS D0
[20:04:26] [PASSED] ALDERLAKE_P RPLU E0
[20:04:26] [PASSED] DG2 G10 C0
[20:04:26] [PASSED] DG2 G11 B1
[20:04:26] [PASSED] DG2 G12 A1
[20:04:26] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[20:04:26] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[20:04:26] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[20:04:26] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[20:04:26] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[20:04:26] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[20:04:26] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[20:04:26] ==================== [PASSED] xe_wa_gt =====================
[20:04:26] ====================== [PASSED] xe_wa ======================
[20:04:26] ============================================================
[20:04:26] Testing complete. Ran 843 tests: passed: 814, skipped: 29
[20:04:26] Elapsed time: 42.046s total, 2.523s configuring, 38.806s building, 0.711s running

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

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

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[20:05:07] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:05:10] 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
[20:05:18] Starting KUnit Kernel (1/1)...
[20:05:18] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:05:19] =============== dma-buf-fence (12 subtests) ================
[20:05:19] [PASSED] test_sanitycheck
[20:05:19] [PASSED] test_signaling
[20:05:19] [PASSED] test_add_callback
[20:05:19] [PASSED] test_late_add_callback
[20:05:19] [PASSED] test_rm_callback
[20:05:19] [PASSED] test_late_rm_callback
[20:05:19] [PASSED] test_status
[20:05:19] [PASSED] test_error
[20:05:19] [PASSED] test_wait
[20:05:19] [PASSED] test_wait_timeout
[20:05:19] [PASSED] test_stub
[20:05:19] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[20:05:19] ================== [PASSED] dma-buf-fence ==================
[20:05:19] ============ dma-buf-fence-chain (11 subtests) =============
[20:05:19] [PASSED] test_sanitycheck
[20:05:19] [PASSED] test_find_seqno
[20:05:19] [PASSED] test_find_signaled
[20:05:19] [PASSED] test_find_out_of_order
[20:05:24] [PASSED] test_find_gap
[20:05:24] [PASSED] test_find_race
[20:05:24] [PASSED] test_signal_forward
[20:05:24] [PASSED] test_signal_backward
[20:05:24] [PASSED] test_wait_forward
[20:05:24] [PASSED] test_wait_backward
[20:05:24] [PASSED] test_wait_random
[20:05:24] =============== [PASSED] dma-buf-fence-chain ===============
[20:05:24] ============ dma-buf-fence-unwrap (11 subtests) ============
[20:05:24] [PASSED] test_sanitycheck
[20:05:24] [PASSED] test_unwrap_array
[20:05:24] [PASSED] test_unwrap_chain
[20:05:24] [PASSED] test_unwrap_chain_array
[20:05:24] [PASSED] test_unwrap_merge
[20:05:24] [PASSED] test_unwrap_merge_duplicate
[20:05:24] [PASSED] test_unwrap_merge_seqno
[20:05:24] [PASSED] test_unwrap_merge_order
[20:05:24] [PASSED] test_unwrap_merge_complex
[20:05:24] [PASSED] test_unwrap_merge_complex_seqno
[20:05:24] [PASSED] test_dedup_empty
[20:05:24] ============== [PASSED] dma-buf-fence-unwrap ===============
[20:05:24] ================ dma-buf-resv (5 subtests) =================
[20:05:24] [PASSED] test_sanitycheck
[20:05:24] ===================== test_signaling  ======================
[20:05:24] [PASSED] kernel
[20:05:24] [PASSED] write
[20:05:24] [PASSED] read
[20:05:24] [PASSED] bookkeep
[20:05:24] ================= [PASSED] test_signaling ==================
[20:05:24] ====================== test_for_each  ======================
[20:05:24] [PASSED] kernel
[20:05:24] [PASSED] write
[20:05:24] [PASSED] read
[20:05:24] [PASSED] bookkeep
[20:05:24] ================== [PASSED] test_for_each ==================
[20:05:24] ================= test_for_each_unlocked  ==================
[20:05:24] [PASSED] kernel
[20:05:24] [PASSED] write
[20:05:24] [PASSED] read
[20:05:24] [PASSED] bookkeep
[20:05:24] ============= [PASSED] test_for_each_unlocked ==============
[20:05:24] ===================== test_get_fences  =====================
[20:05:24] [PASSED] kernel
[20:05:24] [PASSED] write
[20:05:24] [PASSED] read
[20:05:24] [PASSED] bookkeep
[20:05:24] ================= [PASSED] test_get_fences =================
[20:05:24] ================== [PASSED] dma-buf-resv ===================
[20:05:24] ============================================================
[20:05:24] Testing complete. Ran 51 tests: passed: 50, skipped: 1
[20:05:24] Elapsed time: 16.601s total, 2.492s configuring, 8.838s building, 5.253s running

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



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

* ✓ Xe.CI.BAT: success for Cleanup OA stream on PCI unbind/remove (rev5)
  2026-11-10 19:00 [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove Umesh Nerlige Ramappa
                   ` (7 preceding siblings ...)
  2026-11-10 20:05 ` ✓ CI.KUnit: success for Cleanup OA stream on PCI unbind/remove (rev5) Patchwork
@ 2026-11-10 20:49 ` Patchwork
  2026-11-11  0:52 ` ✗ Xe.CI.FULL: failure " Patchwork
  9 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-11-10 20:49 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: intel-xe

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

== Series Details ==

Series: Cleanup OA stream on PCI unbind/remove (rev5)
URL   : https://patchwork.freedesktop.org/series/177300/
State : success

== Summary ==

CI Bug Log - changes from xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232_BAT -> xe-pw-177300v5_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (15 -> 15)
------------------------------

  No changes in participating hosts


Changes
-------

  No changes found


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

  * IGT: IGT_9184 -> IGT_9185
  * Linux: xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232 -> xe-pw-177300v5

  IGT_9184: 9184
  IGT_9185: 9185
  xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232: c8d0fb6110b86aa64eb59502df08b529e221f232
  xe-pw-177300v5: 177300v5

== Logs ==

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

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

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

* ✗ Xe.CI.FULL: failure for Cleanup OA stream on PCI unbind/remove (rev5)
  2026-11-10 19:00 [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove Umesh Nerlige Ramappa
                   ` (8 preceding siblings ...)
  2026-11-10 20:49 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-11-11  0:52 ` Patchwork
  9 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2026-11-11  0:52 UTC (permalink / raw)
  To: Umesh Nerlige Ramappa; +Cc: intel-xe

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

== Series Details ==

Series: Cleanup OA stream on PCI unbind/remove (rev5)
URL   : https://patchwork.freedesktop.org/series/177300/
State : failure

== Summary ==

CI Bug Log - changes from xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232_FULL -> xe-pw-177300v5_FULL
====================================================

Summary
-------

  **FAILURE**

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

  

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

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-177300v5_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top:
    - shard-bmg:          [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-4/igt@kms_rotation_crc@multiplane-rotation-cropping-top.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@kms_rotation_crc@multiplane-rotation-cropping-top.html

  * igt@xe_pm_residency@cpg-basic:
    - shard-bmg:          [PASS][3] -> [ABORT][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-7/igt@xe_pm_residency@cpg-basic.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@xe_pm_residency@cpg-basic.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@core_hotunplug@hotunbind-rebind:
    - shard-bmg:          [PASS][5] -> [ABORT][6] ([Intel XE#9463])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-2/igt@core_hotunplug@hotunbind-rebind.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-2/igt@core_hotunplug@hotunbind-rebind.html

  * igt@intel_hwmon@hwmon-write:
    - shard-bmg:          [PASS][7] -> [FAIL][8] ([Intel XE#8583])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-1/igt@intel_hwmon@hwmon-write.html
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-9/igt@intel_hwmon@hwmon-write.html

  * igt@kms_async_flips@alternate-sync-async-flip:
    - shard-bmg:          [PASS][9] -> [FAIL][10] ([Intel XE#3718] / [Intel XE#6078]) +1 other test fail
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-5/igt@kms_async_flips@alternate-sync-async-flip.html
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-2/igt@kms_async_flips@alternate-sync-async-flip.html

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

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-ptl:          NOTRUN -> [SKIP][12] ([Intel XE#6925])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_big_fb@linear-64bpp-rotate-270:
    - shard-lnl:          NOTRUN -> [SKIP][13] ([Intel XE#1407])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-3/igt@kms_big_fb@linear-64bpp-rotate-270.html

  * igt@kms_big_fb@linear-8bpp-rotate-270:
    - shard-bmg:          NOTRUN -> [SKIP][14] ([Intel XE#2327]) +2 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-8/igt@kms_big_fb@linear-8bpp-rotate-270.html

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

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-180:
    - shard-ptl:          NOTRUN -> [SKIP][16] ([Intel XE#5808]) +3 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-3/igt@kms_big_fb@yf-tiled-64bpp-rotate-180.html

  * igt@kms_bw@connected-linear-tiling-2-displays-target-2160x1440p:
    - shard-lnl:          NOTRUN -> [SKIP][17] ([Intel XE#7679])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-4/igt@kms_bw@connected-linear-tiling-2-displays-target-2160x1440p.html

  * igt@kms_bw@connected-linear-tiling-4-displays-target-3840x2160p:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#7679]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-6/igt@kms_bw@connected-linear-tiling-4-displays-target-3840x2160p.html
    - shard-ptl:          NOTRUN -> [SKIP][19] ([Intel XE#7679])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-3/igt@kms_bw@connected-linear-tiling-4-displays-target-3840x2160p.html

  * igt@kms_bw@linear-tiling-1-displays-target-1920x1080p:
    - shard-bmg:          [PASS][20] -> [SKIP][21] ([Intel XE#367])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-7/igt@kms_bw@linear-tiling-1-displays-target-1920x1080p.html
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-9/igt@kms_bw@linear-tiling-1-displays-target-1920x1080p.html

  * igt@kms_bw@linear-tiling-4-displays-target-3840x2160p:
    - shard-bmg:          NOTRUN -> [SKIP][22] ([Intel XE#367])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-6/igt@kms_bw@linear-tiling-4-displays-target-3840x2160p.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs-cc:
    - shard-ptl:          NOTRUN -> [SKIP][23] ([Intel XE#5822]) +4 other tests skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-5/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#3432])
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-4/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][25] ([Intel XE#2887])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-3/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#2887]) +3 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-5/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-b-dp-1:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#2652]) +12 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-7/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-b-dp-1.html

  * igt@kms_chamelium_color@ctm-0-25:
    - shard-bmg:          NOTRUN -> [SKIP][28] ([Intel XE#2325] / [Intel XE#7358])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-10/igt@kms_chamelium_color@ctm-0-25.html
    - shard-ptl:          NOTRUN -> [SKIP][29] ([Intel XE#5824])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-2/igt@kms_chamelium_color@ctm-0-25.html

  * igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709-lim:
    - shard-bmg:          NOTRUN -> [SKIP][30] ([Intel XE#7358]) +1 other test skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-5/igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709-lim.html
    - shard-lnl:          NOTRUN -> [SKIP][31] ([Intel XE#7358])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-6/igt@kms_chamelium_color_pipeline@plane-fixed-matrix-yuv-rgb-bt709-lim.html

  * igt@kms_chamelium_edid@dp-edid-change-during-hibernate:
    - shard-bmg:          NOTRUN -> [SKIP][32] ([Intel XE#2252]) +5 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-10/igt@kms_chamelium_edid@dp-edid-change-during-hibernate.html
    - shard-ptl:          NOTRUN -> [SKIP][33] ([Intel XE#2252]) +1 other test skip
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-2/igt@kms_chamelium_edid@dp-edid-change-during-hibernate.html

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

  * igt@kms_content_protection@legacy-hdcp14@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][35] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-8/igt@kms_content_protection@legacy-hdcp14@pipe-a-dp-2.html

  * igt@kms_content_protection@lic-type-0@pipe-a-dp-1:
    - shard-bmg:          NOTRUN -> [FAIL][36] ([Intel XE#3304] / [Intel XE#7374])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-7/igt@kms_content_protection@lic-type-0@pipe-a-dp-1.html

  * igt@kms_content_protection@lic-type-1:
    - shard-bmg:          NOTRUN -> [SKIP][37] ([Intel XE#7642])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@kms_content_protection@lic-type-1.html

  * igt@kms_content_protection@uevent:
    - shard-ptl:          NOTRUN -> [SKIP][38] ([Intel XE#7642])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-7/igt@kms_content_protection@uevent.html
    - shard-bmg:          NOTRUN -> [FAIL][39] ([Intel XE#6707] / [Intel XE#7439]) +1 other test fail
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@cursor-onscreen-128x42:
    - shard-ptl:          NOTRUN -> [SKIP][40] ([Intel XE#5900])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-4/igt@kms_cursor_crc@cursor-onscreen-128x42.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-bmg:          NOTRUN -> [SKIP][41] ([Intel XE#2321] / [Intel XE#7355])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@kms_cursor_crc@cursor-random-512x170.html
    - shard-ptl:          NOTRUN -> [SKIP][42] ([Intel XE#5846])
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-8/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-bmg:          NOTRUN -> [SKIP][43] ([Intel XE#2320]) +3 other tests skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@kms_cursor_crc@cursor-sliding-256x85.html

  * igt@kms_dp_link_training@non-uhbr-mst:
    - shard-ptl:          NOTRUN -> [SKIP][44] ([Intel XE#9536])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-7/igt@kms_dp_link_training@non-uhbr-mst.html
    - shard-bmg:          NOTRUN -> [SKIP][45] ([Intel XE#9536])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@kms_dp_link_training@non-uhbr-mst.html

  * igt@kms_dp_link_training@uhbr-sst-direct-train:
    - shard-ptl:          NOTRUN -> [SKIP][46] ([Intel XE#9529])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-2/igt@kms_dp_link_training@uhbr-sst-direct-train.html
    - shard-bmg:          NOTRUN -> [SKIP][47] ([Intel XE#9529])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@kms_dp_link_training@uhbr-sst-direct-train.html

  * igt@kms_dsc@dsc-basic-ultrajoiner:
    - shard-bmg:          NOTRUN -> [SKIP][48] ([Intel XE#8265]) +2 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@kms_dsc@dsc-basic-ultrajoiner.html

  * igt@kms_dsc@dsc-with-bpc-formats-ultrajoiner:
    - shard-lnl:          NOTRUN -> [SKIP][49] ([Intel XE#8265])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-8/igt@kms_dsc@dsc-with-bpc-formats-ultrajoiner.html

  * igt@kms_feature_discovery@dsc:
    - shard-bmg:          NOTRUN -> [SKIP][50] ([Intel XE#8586])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@kms_feature_discovery@dsc.html
    - shard-ptl:          NOTRUN -> [SKIP][51] ([Intel XE#9287])
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-2/igt@kms_feature_discovery@dsc.html

  * igt@kms_feature_discovery@psr1:
    - shard-bmg:          NOTRUN -> [SKIP][52] ([Intel XE#2374] / [Intel XE#6127])
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-2/igt@kms_feature_discovery@psr1.html

  * igt@kms_flip@2x-flip-vs-dpms-on-nop:
    - shard-ptl:          NOTRUN -> [SKIP][53] ([Intel XE#2316]) +1 other test skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-3/igt@kms_flip@2x-flip-vs-dpms-on-nop.html

  * igt@kms_flip@2x-modeset-vs-vblank-race:
    - shard-lnl:          NOTRUN -> [SKIP][54] ([Intel XE#1421]) +1 other test skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-6/igt@kms_flip@2x-modeset-vs-vblank-race.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1:
    - shard-lnl:          [PASS][55] -> [FAIL][56] ([Intel XE#301] / [Intel XE#3149]) +1 other test fail
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][57] ([Intel XE#7178] / [Intel XE#7349])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html
    - shard-ptl:          NOTRUN -> [SKIP][58] ([Intel XE#7178]) +1 other test skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-7/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-bmg:          NOTRUN -> [SKIP][59] ([Intel XE#7178] / [Intel XE#7351]) +2 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-4/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html
    - shard-lnl:          NOTRUN -> [SKIP][60] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-nv12-linear-to-nv12-linear-reflect-x:
    - shard-bmg:          NOTRUN -> [SKIP][61] ([Intel XE#7179])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-10/igt@kms_flip_scaled_crc@flip-nv12-linear-to-nv12-linear-reflect-x.html

  * igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-shrfb-plflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][62] ([Intel XE#6312]) +1 other test skip
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-3/igt@kms_frontbuffer_tracking@drrshdr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@drrshdr-2p-scndscrn-pri-indfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][63] ([Intel XE#7905]) +1 other test skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-4/igt@kms_frontbuffer_tracking@drrshdr-2p-scndscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@drrshdr-slowdraw:
    - shard-bmg:          NOTRUN -> [SKIP][64] ([Intel XE#2311]) +46 other tests skip
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-7/igt@kms_frontbuffer_tracking@drrshdr-slowdraw.html
    - shard-ptl:          NOTRUN -> [SKIP][65] ([Intel XE#6312]) +4 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-8/igt@kms_frontbuffer_tracking@drrshdr-slowdraw.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][66] ([Intel XE#4141]) +8 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][67] ([Intel XE#656] / [Intel XE#7905]) +2 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][68] ([Intel XE#6312] / [Intel XE#651])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-indfb-scaledprimary:
    - shard-ptl:          NOTRUN -> [SKIP][69] ([Intel XE#5800] / [Intel XE#6312]) +2 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-8/igt@kms_frontbuffer_tracking@fbcdrrs-indfb-scaledprimary.html

  * igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-indfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][70] ([Intel XE#7865]) +2 other tests skip
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-2/igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbchdr-2p-primscrn-indfb-msflip-blt:
    - shard-ptl:          NOTRUN -> [SKIP][71] ([Intel XE#5812]) +19 other tests skip
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-8/igt@kms_frontbuffer_tracking@fbchdr-2p-primscrn-indfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][72] ([Intel XE#7061])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-2/igt@kms_frontbuffer_tracking@fbchdr-abgr161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][73] ([Intel XE#7061] / [Intel XE#7356]) +2 other tests skip
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-9/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-blt.html
    - shard-ptl:          NOTRUN -> [SKIP][74] ([Intel XE#7061] / [Intel XE#7356])
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-1/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-blt.html

  * igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][75] ([Intel XE#7061]) +2 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][76] ([Intel XE#2313]) +39 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psrhdr-rgb101010-draw-render:
    - shard-ptl:          NOTRUN -> [SKIP][77] ([Intel XE#7865]) +7 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-1/igt@kms_frontbuffer_tracking@psrhdr-rgb101010-draw-render.html

  * igt@kms_hdmi_audio_bw@audio-bw-hblank160:
    - shard-bmg:          [PASS][78] -> [FAIL][79] ([Intel XE#9313])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-10/igt@kms_hdmi_audio_bw@audio-bw-hblank160.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-10/igt@kms_hdmi_audio_bw@audio-bw-hblank160.html

  * igt@kms_joiner@invalid-modeset-force-ultra-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][80] ([Intel XE#6911] / [Intel XE#7466])
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-bmg:          NOTRUN -> [SKIP][81] ([Intel XE#7591])
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier@pipe-a-plane-5:
    - shard-bmg:          NOTRUN -> [SKIP][82] ([Intel XE#8303]) +3 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-9/igt@kms_plane@pixel-format-4-tiled-bmg-ccs-modifier@pipe-a-plane-5.html

  * igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping:
    - shard-bmg:          NOTRUN -> [SKIP][83] ([Intel XE#7283]) +2 other tests skip
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-10/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping.html
    - shard-ptl:          NOTRUN -> [SKIP][84] ([Intel XE#7283]) +1 other test skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-2/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping.html

  * igt@kms_plane_multiple@tiling-yf:
    - shard-bmg:          NOTRUN -> [SKIP][85] ([Intel XE#5020] / [Intel XE#7348])
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-9/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_pm_backlight@fade:
    - shard-bmg:          NOTRUN -> [SKIP][86] ([Intel XE#7376] / [Intel XE#7760] / [Intel XE#870]) +1 other test skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-6/igt@kms_pm_backlight@fade.html

  * igt@kms_pm_dc@dc5-dpms:
    - shard-lnl:          [PASS][87] -> [FAIL][88] ([Intel XE#8399]) +1 other test fail
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-lnl-7/igt@kms_pm_dc@dc5-dpms.html
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-8/igt@kms_pm_dc@dc5-dpms.html

  * igt@kms_pm_rpm@package-g7:
    - shard-bmg:          NOTRUN -> [SKIP][89] ([Intel XE#6814] / [Intel XE#7428])
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@kms_pm_rpm@package-g7.html

  * igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area:
    - shard-bmg:          NOTRUN -> [SKIP][90] ([Intel XE#1489]) +2 other tests skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-4/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-a-edp-1:
    - shard-ptl:          NOTRUN -> [SKIP][91] ([Intel XE#5858])
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-8/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-a-edp-1.html

  * igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-b-edp-1:
    - shard-ptl:          NOTRUN -> [SKIP][92] ([Intel XE#5858] / [Intel XE#7304]) +1 other test skip
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-8/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-b-edp-1.html

  * igt@kms_psr2_su@page_flip-p010:
    - shard-bmg:          NOTRUN -> [SKIP][93] ([Intel XE#2387] / [Intel XE#7429]) +1 other test skip
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-4/igt@kms_psr2_su@page_flip-p010.html

  * igt@kms_psr@fbc-psr2-cursor-plane-onoff:
    - shard-lnl:          NOTRUN -> [SKIP][94] ([Intel XE#1406] / [Intel XE#7345])
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-2/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html

  * igt@kms_psr@fbc-psr2-cursor-plane-onoff@edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][95] ([Intel XE#1406] / [Intel XE#4609] / [Intel XE#7345])
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-2/igt@kms_psr@fbc-psr2-cursor-plane-onoff@edp-1.html

  * igt@kms_psr@psr-sprite-plane-move:
    - shard-bmg:          NOTRUN -> [SKIP][96] ([Intel XE#2234] / [Intel XE#2850]) +8 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@kms_psr@psr-sprite-plane-move.html

  * igt@kms_rotation_crc@primary-4-tiled-reflect-x-0:
    - shard-ptl:          NOTRUN -> [SKIP][97] ([Intel XE#5821])
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-4/igt@kms_rotation_crc@primary-4-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-90:
    - shard-bmg:          NOTRUN -> [SKIP][98] ([Intel XE#3904] / [Intel XE#7342]) +1 other test skip
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@kms_rotation_crc@primary-y-tiled-reflect-x-90.html

  * igt@kms_rotation_crc@sprite-rotation-270:
    - shard-lnl:          NOTRUN -> [SKIP][99] ([Intel XE#3904] / [Intel XE#7342])
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-7/igt@kms_rotation_crc@sprite-rotation-270.html

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

  * igt@kms_sharpness_filter@filter-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][101] ([Intel XE#6503]) +1 other test skip
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-4/igt@kms_sharpness_filter@filter-suspend.html

  * igt@kms_vrr@max-min:
    - shard-bmg:          NOTRUN -> [SKIP][102] ([Intel XE#1499] / [Intel XE#9271])
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@kms_vrr@max-min.html

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-ptl:          NOTRUN -> [SKIP][103] ([Intel XE#5764]) +2 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-5/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * igt@xe_evict@evict-mixed-threads-small-multi-queue:
    - shard-bmg:          NOTRUN -> [SKIP][104] ([Intel XE#8370])
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@xe_evict@evict-mixed-threads-small-multi-queue.html

  * igt@xe_evict_ccs@evict-overcommit-parallel-instantfree-samefd:
    - shard-ptl:          NOTRUN -> [SKIP][105] ([Intel XE#6144])
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-6/igt@xe_evict_ccs@evict-overcommit-parallel-instantfree-samefd.html

  * igt@xe_exec_balancer@many-cm-virtual-basic:
    - shard-ptl:          NOTRUN -> [SKIP][106] ([Intel XE#7482]) +4 other tests skip
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-7/igt@xe_exec_balancer@many-cm-virtual-basic.html

  * igt@xe_exec_balancer@twice-virtual-userptr-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][107] ([Intel XE#7482]) +1 other test skip
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-4/igt@xe_exec_balancer@twice-virtual-userptr-rebind.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-rebind:
    - shard-ptl:          NOTRUN -> [SKIP][108] ([Intel XE#5575] / [Intel XE#7484]) +1 other test skip
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-2/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-rebind.html

  * igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate:
    - shard-lnl:          NOTRUN -> [SKIP][109] ([Intel XE#1392])
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-4/igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate.html

  * igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][110] ([Intel XE#2322] / [Intel XE#7372]) +5 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-7/igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind.html

  * igt@xe_exec_fault_mode@once-multi-queue-rebind:
    - shard-ptl:          NOTRUN -> [SKIP][111] ([Intel XE#8374]) +4 other tests skip
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-6/igt@xe_exec_fault_mode@once-multi-queue-rebind.html

  * igt@xe_exec_fault_mode@twice-multi-queue-imm:
    - shard-bmg:          NOTRUN -> [SKIP][112] ([Intel XE#8374]) +6 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-7/igt@xe_exec_fault_mode@twice-multi-queue-imm.html

  * igt@xe_exec_multi_queue@one-queue-close-fd-smem:
    - shard-lnl:          NOTRUN -> [SKIP][113] ([Intel XE#8364]) +2 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-7/igt@xe_exec_multi_queue@one-queue-close-fd-smem.html

  * igt@xe_exec_multi_queue@one-queue-preempt-mode-basic:
    - shard-ptl:          NOTRUN -> [SKIP][114] ([Intel XE#8364]) +5 other tests skip
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-7/igt@xe_exec_multi_queue@one-queue-preempt-mode-basic.html

  * igt@xe_exec_multi_queue@two-queues-preempt-mode-fault-priority:
    - shard-bmg:          NOTRUN -> [SKIP][115] ([Intel XE#8364]) +16 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-6/igt@xe_exec_multi_queue@two-queues-preempt-mode-fault-priority.html

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

  * igt@xe_exec_threads@threads-multi-queue-cm-userptr:
    - shard-lnl:          NOTRUN -> [SKIP][117] ([Intel XE#8378]) +1 other test skip
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-6/igt@xe_exec_threads@threads-multi-queue-cm-userptr.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-userptr-invalidate-race:
    - shard-ptl:          NOTRUN -> [SKIP][118] ([Intel XE#8378]) +1 other test skip
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-2/igt@xe_exec_threads@threads-multi-queue-mixed-shared-vm-userptr-invalidate-race.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][119] ([Intel XE#8378]) +5 other tests skip
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-7/igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate.html

  * igt@xe_gpgpu_fill@offset-4x4:
    - shard-bmg:          NOTRUN -> [SKIP][120] ([Intel XE#7954])
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@xe_gpgpu_fill@offset-4x4.html
    - shard-ptl:          NOTRUN -> [SKIP][121] ([Intel XE#7954])
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-8/igt@xe_gpgpu_fill@offset-4x4.html

  * igt@xe_mempage_offline@inject-duplicate-page:
    - shard-bmg:          NOTRUN -> [SKIP][122] ([Intel XE#9203])
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@xe_mempage_offline@inject-duplicate-page.html

  * igt@xe_multigpu_svm@mgpu-atomic-op-conflict:
    - shard-bmg:          NOTRUN -> [SKIP][123] ([Intel XE#6964]) +4 other tests skip
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-7/igt@xe_multigpu_svm@mgpu-atomic-op-conflict.html

  * igt@xe_multigpu_svm@mgpu-xgpu-access-basic:
    - shard-ptl:          NOTRUN -> [SKIP][124] ([Intel XE#6964]) +1 other test skip
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-1/igt@xe_multigpu_svm@mgpu-xgpu-access-basic.html

  * igt@xe_page_reclaim@boundary-split:
    - shard-bmg:          NOTRUN -> [SKIP][125] ([Intel XE#7793])
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@xe_page_reclaim@boundary-split.html
    - shard-ptl:          NOTRUN -> [SKIP][126] ([Intel XE#7793])
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-5/igt@xe_page_reclaim@boundary-split.html

  * igt@xe_pat@pat-sw-hw-compare:
    - shard-bmg:          NOTRUN -> [FAIL][127] ([Intel XE#7695])
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-10/igt@xe_pat@pat-sw-hw-compare.html

  * igt@xe_pm@d3cold-mmap-vram:
    - shard-ptl:          NOTRUN -> [SKIP][128] ([Intel XE#5741])
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-8/igt@xe_pm@d3cold-mmap-vram.html

  * igt@xe_pm@s2idle-d3cold-basic-exec:
    - shard-bmg:          NOTRUN -> [SKIP][129] ([Intel XE#2284] / [Intel XE#7370]) +1 other test skip
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@xe_pm@s2idle-d3cold-basic-exec.html

  * igt@xe_pm_residency@gt-c6-freeze@gt1:
    - shard-bmg:          [PASS][130] -> [FAIL][131] ([Intel XE#9254])
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-1/igt@xe_pm_residency@gt-c6-freeze@gt1.html
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-7/igt@xe_pm_residency@gt-c6-freeze@gt1.html

  * igt@xe_prefetch_fault@l2-prefetch-fault-svm:
    - shard-bmg:          NOTRUN -> [SKIP][132] ([Intel XE#8815])
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-3/igt@xe_prefetch_fault@l2-prefetch-fault-svm.html

  * igt@xe_pxp@pxp-stale-queue-post-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][133] ([Intel XE#4733] / [Intel XE#7417])
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-8/igt@xe_pxp@pxp-stale-queue-post-suspend.html

  * igt@xe_query@multigpu-query-config:
    - shard-lnl:          NOTRUN -> [SKIP][134] ([Intel XE#944])
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-2/igt@xe_query@multigpu-query-config.html

  * igt@xe_query@multigpu-query-mem-usage:
    - shard-bmg:          NOTRUN -> [SKIP][135] ([Intel XE#944]) +1 other test skip
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-9/igt@xe_query@multigpu-query-mem-usage.html
    - shard-ptl:          NOTRUN -> [SKIP][136] ([Intel XE#6019])
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-1/igt@xe_query@multigpu-query-mem-usage.html

  * igt@xe_vm@overcommit-nonfault-vram-no-lr:
    - shard-lnl:          NOTRUN -> [SKIP][137] ([Intel XE#9597])
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-1/igt@xe_vm@overcommit-nonfault-vram-no-lr.html

  * igt@xe_wedged@basic-wedged:
    - shard-lnl:          [PASS][138] -> [ABORT][139] ([Intel XE#8963])
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-lnl-4/igt@xe_wedged@basic-wedged.html
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-4/igt@xe_wedged@basic-wedged.html

  
#### Possible fixes ####

  * igt@kms_async_flips@async-flip-suspend-resume:
    - shard-bmg:          [INCOMPLETE][140] ([Intel XE#8587]) -> [PASS][141] +1 other test pass
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-6/igt@kms_async_flips@async-flip-suspend-resume.html
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-2/igt@kms_async_flips@async-flip-suspend-resume.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
    - shard-bmg:          [INCOMPLETE][142] ([Intel XE#7084] / [Intel XE#8150]) -> [PASS][143] +1 other test pass
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-3/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-1/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html

  * igt@kms_cursor_edge_walk@256x256-top-edge@pipe-a-edp-1:
    - shard-ptl:          [FAIL][144] ([Intel XE#9673]) -> [PASS][145] +1 other test pass
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-ptl-7/igt@kms_cursor_edge_walk@256x256-top-edge@pipe-a-edp-1.html
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-2/igt@kms_cursor_edge_walk@256x256-top-edge@pipe-a-edp-1.html

  * igt@kms_hdmi_audio_bw@audio-bw-hblank80:
    - shard-bmg:          [FAIL][146] ([Intel XE#9313]) -> [PASS][147]
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-1/igt@kms_hdmi_audio_bw@audio-bw-hblank80.html
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-6/igt@kms_hdmi_audio_bw@audio-bw-hblank80.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-ptl:          [SKIP][148] ([Intel XE#7308]) -> [PASS][149]
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-ptl-6/igt@kms_hdmi_inject@inject-audio.html
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-3/igt@kms_hdmi_inject@inject-audio.html
    - shard-bmg:          [SKIP][150] ([Intel XE#7308]) -> [PASS][151]
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-4/igt@kms_hdmi_inject@inject-audio.html
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-6/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_vrr@flip-suspend@pipe-a-edp-1:
    - shard-ptl:          [FAIL][152] ([Intel XE#4227] / [Intel XE#7397]) -> [PASS][153] +1 other test pass
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-ptl-3/igt@kms_vrr@flip-suspend@pipe-a-edp-1.html
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-ptl-8/igt@kms_vrr@flip-suspend@pipe-a-edp-1.html

  * igt@xe_exec_reset@gt-stress-reset-memory-pressure:
    - shard-lnl:          [DMESG-WARN][154] ([Intel XE#8652]) -> [PASS][155]
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-lnl-1/igt@xe_exec_reset@gt-stress-reset-memory-pressure.html
   [155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-4/igt@xe_exec_reset@gt-stress-reset-memory-pressure.html

  * igt@xe_exec_system_allocator@process-many-stride-mmap-huge-nomemset:
    - shard-lnl:          [FAIL][156] -> [PASS][157]
   [156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-lnl-5/igt@xe_exec_system_allocator@process-many-stride-mmap-huge-nomemset.html
   [157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-7/igt@xe_exec_system_allocator@process-many-stride-mmap-huge-nomemset.html

  * igt@xe_pm_residency@gt-c6-freeze@gt0:
    - shard-bmg:          [FAIL][158] ([Intel XE#9254]) -> [PASS][159]
   [158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-1/igt@xe_pm_residency@gt-c6-freeze@gt0.html
   [159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-7/igt@xe_pm_residency@gt-c6-freeze@gt0.html

  
#### Warnings ####

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions:
    - shard-lnl:          [SKIP][160] ([Intel XE#309] / [Intel XE#7343] / [Intel XE#7935]) -> [SKIP][161] ([Intel XE#309] / [Intel XE#7343])
   [160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-lnl-8/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html
   [161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-lnl-3/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html

  * igt@kms_hdmi_audio_bw@suspend-disk-audio-recovery:
    - shard-bmg:          [FAIL][162] ([Intel XE#9319] / [Intel XE#9346]) -> [FAIL][163] ([Intel XE#9346])
   [162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232/shard-bmg-6/igt@kms_hdmi_audio_bw@suspend-disk-audio-recovery.html
   [163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-177300v5/shard-bmg-9/igt@kms_hdmi_audio_bw@suspend-disk-audio-recovery.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [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#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#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#2370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2370
  [Intel XE#2374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2374
  [Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
  [Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [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#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
  [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
  [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
  [Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
  [Intel XE#5741]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5741
  [Intel XE#5764]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5764
  [Intel XE#5800]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5800
  [Intel XE#5808]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5808
  [Intel XE#5812]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5812
  [Intel XE#5821]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5821
  [Intel XE#5822]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5822
  [Intel XE#5824]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5824
  [Intel XE#5846]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5846
  [Intel XE#5858]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5858
  [Intel XE#5900]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5900
  [Intel XE#6019]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6019
  [Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
  [Intel XE#6127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6127
  [Intel XE#6144]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6144
  [Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#6707]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6707
  [Intel XE#6814]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6814
  [Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
  [Intel XE#6925]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6925
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7179]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7179
  [Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
  [Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
  [Intel XE#7308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7308
  [Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
  [Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
  [Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345
  [Intel XE#7348]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7348
  [Intel XE#7349]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7349
  [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#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
  [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
  [Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
  [Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
  [Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
  [Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
  [Intel XE#7428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7428
  [Intel XE#7429]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7429
  [Intel XE#7439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7439
  [Intel XE#7466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7466
  [Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
  [Intel XE#7484]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7484
  [Intel XE#7591]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7591
  [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#7695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7695
  [Intel XE#7760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7760
  [Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
  [Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
  [Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
  [Intel XE#7935]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7935
  [Intel XE#7954]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7954
  [Intel XE#8150]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8150
  [Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
  [Intel XE#8303]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8303
  [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#8370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8370
  [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#8399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8399
  [Intel XE#8583]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8583
  [Intel XE#8586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8586
  [Intel XE#8587]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8587
  [Intel XE#8652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8652
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#8815]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8815
  [Intel XE#8963]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8963
  [Intel XE#9203]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9203
  [Intel XE#9254]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9254
  [Intel XE#9271]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9271
  [Intel XE#9287]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9287
  [Intel XE#9313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9313
  [Intel XE#9319]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9319
  [Intel XE#9346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9346
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#9463]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9463
  [Intel XE#9529]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9529
  [Intel XE#9536]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9536
  [Intel XE#9597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9597
  [Intel XE#9673]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9673


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

  * IGT: IGT_9184 -> IGT_9185
  * Linux: xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232 -> xe-pw-177300v5

  IGT_9184: 9184
  IGT_9185: 9185
  xe-6104-c8d0fb6110b86aa64eb59502df08b529e221f232: c8d0fb6110b86aa64eb59502df08b529e221f232
  xe-pw-177300v5: 177300v5

== Logs ==

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

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

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

end of thread, other threads:[~2026-11-11  0:52 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-10 19:00 [PATCH v5 0/7] Cleanup OA stream on PCI unbind/remove Umesh Nerlige Ramappa
2026-11-10 19:00 ` [PATCH v5 1/7] drm/xe/oa: Use the drm device address_space for the OA stream fd Umesh Nerlige Ramappa
2026-11-10 19:00 ` [PATCH v5 2/7] drm/xe/oa: Split OA stream destroy into HW teardown and resource release Umesh Nerlige Ramappa
2026-11-10 19:00 ` [PATCH v5 3/7] drm/xe/oa: Take the runtime PM reference in xe_oa_destroy_locked() Umesh Nerlige Ramappa
2026-11-10 19:00 ` [PATCH v5 4/7] drm/xe/oa: Skip OA HW teardown on a wedged device Umesh Nerlige Ramappa
2026-11-10 19:17   ` sashiko-bot
2026-11-10 19:00 ` [PATCH v5 5/7] drm/xe/oa: Wait for in-flight OA batches before stream HW teardown Umesh Nerlige Ramappa
2026-11-10 19:25   ` sashiko-bot
2026-11-10 19:00 ` [PATCH v5 6/7] drm/xe: Reject vm_ops->access on BO mappings of an unplugged device Umesh Nerlige Ramappa
2026-11-10 19:26   ` sashiko-bot
2026-11-10 19:01 ` [PATCH v5 7/7] drm/xe/oa: Quiesce OA streams on driver unbind and PCI reset Umesh Nerlige Ramappa
2026-11-10 19:38   ` sashiko-bot
2026-11-10 20:05 ` ✓ CI.KUnit: success for Cleanup OA stream on PCI unbind/remove (rev5) Patchwork
2026-11-10 20:49 ` ✓ Xe.CI.BAT: " Patchwork
2026-11-11  0:52 ` ✗ Xe.CI.FULL: failure " Patchwork

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