* [PATCH v3 1/5] drm/xe/migrate: support 4K PTEs for identity map
2026-09-02 12:41 [PATCH v3 0/5] VRAM health check + CCS fix Matthew Auld
@ 2026-09-02 12:41 ` Matthew Auld
2026-09-02 12:41 ` [PATCH v3 2/5] drm/xe/vram: report FLAT_CCS base misalignment Matthew Auld
` (6 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Matthew Auld @ 2026-09-02 12:41 UTC (permalink / raw)
To: intel-xe; +Cc: Thomas Hellström, Matthew Brost, Rodrigo Vivi
When VRAM limit (usable_size) is no longer 2M aligned (e.g. because flat
CCS storage size rounds it down to 4K), we must map the tail of the
identity mapping using 4K pages.
This removes the 2M alignment assert (which pops) and introduces a 4K
fallback in the identity map programming loop to handle the last 2M
chunk of usable VRAM.
This now also ensures we are only mapping the usable portion of VRAM.
Might be possible to skip backporting this. The assert that pops should
be harmless and is only on debug builds plus only a stray write would
hit CCS, which technically get mapped.
Assisted-by: Gemini:gemini-3.1-pro-preview
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_migrate.c | 57 +++++++++++++++++++++------------
1 file changed, 37 insertions(+), 20 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
index 75b83687f1b5..0bf000d7c901 100644
--- a/drivers/gpu/drm/xe/xe_migrate.c
+++ b/drivers/gpu/drm/xe/xe_migrate.c
@@ -87,7 +87,7 @@ struct xe_migrate {
#define MAX_PREEMPTDISABLE_TRANSFER SZ_8M /* Around 1ms. */
#define MAX_CCS_LIMITED_TRANSFER SZ_4M /* XE_PAGE_SIZE * (FIELD_MAX(XE2_CCS_SIZE_MASK) + 1) */
#define NUM_KERNEL_PDE 15
-#define NUM_PT_SLOTS 32
+#define NUM_PT_SLOTS 48
#define LEVEL0_PAGE_TABLE_ENCODE_SIZE SZ_2M
#define MAX_NUM_PTE 512
#define IDENTITY_OFFSET 256ULL
@@ -163,22 +163,20 @@ static u64 xe_migrate_vram_ofs(struct xe_device *xe, u64 addr, bool is_comp_pte)
}
static void xe_migrate_program_identity(struct xe_device *xe, struct xe_vm *vm, struct xe_bo *bo,
- u64 map_ofs, u64 vram_offset, u16 pat_index, u64 pt_2m_ofs)
+ u64 map_ofs, u64 vram_offset, u16 pat_index, u64 pt_2m_ofs,
+ u64 pt_4k_ofs)
{
struct xe_vram_region *vram = xe->mem.vram;
resource_size_t dpa_base = xe_vram_region_dpa_base(vram);
u64 pos, ofs, flags;
u64 entry;
- /* XXX: Unclear if this should be usable_size? */
- u64 vram_limit = xe_vram_region_actual_physical_size(vram) + dpa_base;
+ u64 vram_limit = xe_vram_region_usable_size(vram) + dpa_base;
u32 level = 2;
ofs = map_ofs + XE_PAGE_SIZE * level + vram_offset * 8;
flags = vm->pt_ops->pte_encode_addr(xe, 0, pat_index, level,
true, 0);
- xe_assert(xe, IS_ALIGNED(xe_vram_region_usable_size(vram), SZ_2M));
-
/*
* Use 1GB pages when possible, last chunk always use 2M
* pages as mixing reserved memory (stolen, WOCPM) with a single
@@ -196,8 +194,24 @@ static void xe_migrate_program_identity(struct xe_device *xe, struct xe_vm *vm,
true, 0);
for (ofs = pt_2m_ofs; pos < vram_limit;
- pos += SZ_2M, ofs += 8)
+ pos += SZ_2M, ofs += 8) {
+ if (pos + SZ_2M > vram_limit) {
+ entry = vm->pt_ops->pde_encode_bo(bo, pt_4k_ofs);
+ xe_map_wr(xe, &bo->vmap, ofs, u64, entry);
+
+ flags = vm->pt_ops->pte_encode_addr(xe, 0,
+ pat_index,
+ level - 2,
+ true, 0);
+
+ for (ofs = pt_4k_ofs; pos < vram_limit;
+ pos += SZ_4K, ofs += 8)
+ xe_map_wr(xe, &bo->vmap, ofs, u64, pos | flags);
+ break;
+ }
+
xe_map_wr(xe, &bo->vmap, ofs, u64, pos | flags);
+ }
break; /* Ensure pos == vram_limit assert correct */
}
@@ -242,16 +256,17 @@ static void xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m,
u16 pat_index = xe_cache_pat_idx(xe, XE_CACHE_WB);
u8 id = tile->id;
u32 num_entries = NUM_PT_SLOTS, num_level = vm->pt_root[id]->level;
-#define VRAM_IDENTITY_MAP_COUNT 2
- u32 num_setup = num_level + VRAM_IDENTITY_MAP_COUNT;
-#undef VRAM_IDENTITY_MAP_COUNT
+#define VRAM_IDENTITY_MAP_PT_COUNT 4
+ u32 num_setup = num_level + VRAM_IDENTITY_MAP_PT_COUNT;
+#undef VRAM_IDENTITY_MAP_PT_COUNT
u32 map_ofs, level, i;
struct xe_bo *bo = m->pt_bo, *batch = tile->mem.kernel_bb_pool->bo;
- u64 entry, pt29_ofs;
+ u64 entry;
- /* PT30 & PT31 reserved for 2M identity map */
- pt29_ofs = xe_bo_size(bo) - 3 * XE_PAGE_SIZE;
- entry = vm->pt_ops->pde_encode_bo(bo, pt29_ofs);
+ /* PT44..PT47 reserved for 4K and 2M identity map */
+ u64 l1_pt_ofs = xe_bo_size(bo) - 5 * XE_PAGE_SIZE;
+
+ entry = vm->pt_ops->pde_encode_bo(bo, l1_pt_ofs);
xe_pt_write(xe, &vm->pt_root[id]->bo->vmap, 0, entry);
map_ofs = (num_entries - num_setup) * XE_PAGE_SIZE;
@@ -347,11 +362,12 @@ static void xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m,
/* Identity map the entire vram at 256GiB offset */
if (IS_DGFX(xe)) {
- u64 pt30_ofs = xe_bo_size(bo) - 2 * XE_PAGE_SIZE;
+ u64 pt46_ofs = xe_bo_size(bo) - 2 * XE_PAGE_SIZE;
resource_size_t actual_phy_size = xe_vram_region_actual_physical_size(xe->mem.vram);
+ u64 pt44_ofs = xe_bo_size(bo) - 4 * XE_PAGE_SIZE;
xe_migrate_program_identity(xe, vm, bo, map_ofs, IDENTITY_OFFSET,
- pat_index, pt30_ofs);
+ pat_index, pt46_ofs, pt44_ofs);
xe_assert(xe, actual_phy_size <= (MAX_NUM_PTE - IDENTITY_OFFSET) * SZ_1G);
/*
@@ -362,12 +378,13 @@ static void xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m,
u16 comp_pat_index = xe_cache_pat_idx(xe, XE_CACHE_NONE_COMPRESSION);
u64 vram_offset = IDENTITY_OFFSET +
DIV_ROUND_UP_ULL(actual_phy_size, SZ_1G);
- u64 pt31_ofs = xe_bo_size(bo) - XE_PAGE_SIZE;
+ u64 pt47_ofs = xe_bo_size(bo) - XE_PAGE_SIZE;
xe_assert(xe, actual_phy_size <= (MAX_NUM_PTE - IDENTITY_OFFSET -
IDENTITY_OFFSET / 2) * SZ_1G);
+ u64 pt45_ofs = xe_bo_size(bo) - 3 * XE_PAGE_SIZE;
xe_migrate_program_identity(xe, vm, bo, map_ofs, vram_offset,
- comp_pat_index, pt31_ofs);
+ comp_pat_index, pt47_ofs, pt45_ofs);
}
}
@@ -381,8 +398,8 @@ static void xe_migrate_suballoc_manager_init(struct xe_migrate *m, u32 map_ofs)
* Example layout created above, with root level = 3:
* [PT0...PT7]: kernel PT's for copy/clear; 64 or 4KiB PTE's
* [PT8]: Kernel PT for VM_BIND, 4 KiB PTE's
- * [PT9...PT26]: Userspace PT's for VM_BIND, 4 KiB PTE's
- * [PT27 = PDE 0] [PT28 = PDE 1] [PT29 = PDE 2] [PT30 & PT31 = 2M vram identity map]
+ * [PT9...PT40]: Userspace PT's for VM_BIND, 4 KiB PTE's
+ * [PT41 = PDE 0] [PT44...PT47 = 4K and 2M vram identity maps]
*
* This makes the lowest part of the VM point to the pagetables.
* Hence the lowest 2M in the vm should point to itself, with a few writes
--
2.55.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH v3 2/5] drm/xe/vram: report FLAT_CCS base misalignment
2026-09-02 12:41 [PATCH v3 0/5] VRAM health check + CCS fix Matthew Auld
2026-09-02 12:41 ` [PATCH v3 1/5] drm/xe/migrate: support 4K PTEs for identity map Matthew Auld
@ 2026-09-02 12:41 ` Matthew Auld
2026-09-02 19:42 ` Matthew Brost
2026-09-02 12:41 ` [PATCH v3 3/5] drm/xe/vram: revamp CPU VRAM mapping Matthew Auld
` (5 subsequent siblings)
7 siblings, 1 reply; 14+ messages in thread
From: Matthew Auld @ 2026-09-02 12:41 UTC (permalink / raw)
To: intel-xe; +Cc: Thomas Hellström, Matthew Brost, Rodrigo Vivi, stable
So we can easily check if a machine had the CCS bug, when looking back
over bug reports where we have the same machine with newer kernel.
Example print for a machine with the CCS bug:
FLAT_CCS base:27bbff800, aligned:no
v2 (Matt B):
- Unconditionally print the base + alignment
Fixes: 37173392741c ("drm/xe/vram: fix ccs offset calculation")
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: stable@kernel.org
---
drivers/gpu/drm/xe/xe_vram.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
index 7b4478fb1697..56cff1e44530 100644
--- a/drivers/gpu/drm/xe/xe_vram.c
+++ b/drivers/gpu/drm/xe/xe_vram.c
@@ -90,6 +90,9 @@ static int get_flat_ccs_offset(struct xe_gt *gt, u64 tile_size, u64 *poffset)
offset |= offset_lo << 6; /* HW view bits 31:6 */
offset *= num_enabled; /* convert to SW view */
+ drm_info(&xe->drm, "FLAT_CCS base:%llx, aligned:%s\n", offset,
+ str_yes_no(IS_ALIGNED(offset, SZ_128K)));
+
/*
* Everything below this offset is handed to the VRAM
* allocator, so it has to be the *first* address the
--
2.55.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH v3 2/5] drm/xe/vram: report FLAT_CCS base misalignment
2026-09-02 12:41 ` [PATCH v3 2/5] drm/xe/vram: report FLAT_CCS base misalignment Matthew Auld
@ 2026-09-02 19:42 ` Matthew Brost
0 siblings, 0 replies; 14+ messages in thread
From: Matthew Brost @ 2026-09-02 19:42 UTC (permalink / raw)
To: Matthew Auld; +Cc: intel-xe, Thomas Hellström, Rodrigo Vivi, stable
On Wed, Sep 02, 2026 at 01:41:20PM +0100, Matthew Auld wrote:
> So we can easily check if a machine had the CCS bug, when looking back
> over bug reports where we have the same machine with newer kernel.
>
> Example print for a machine with the CCS bug:
>
> FLAT_CCS base:27bbff800, aligned:no
>
> v2 (Matt B):
> - Unconditionally print the base + alignment
>
> Fixes: 37173392741c ("drm/xe/vram: fix ccs offset calculation")
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: stable@kernel.org
> ---
> drivers/gpu/drm/xe/xe_vram.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
> index 7b4478fb1697..56cff1e44530 100644
> --- a/drivers/gpu/drm/xe/xe_vram.c
> +++ b/drivers/gpu/drm/xe/xe_vram.c
> @@ -90,6 +90,9 @@ static int get_flat_ccs_offset(struct xe_gt *gt, u64 tile_size, u64 *poffset)
> offset |= offset_lo << 6; /* HW view bits 31:6 */
> offset *= num_enabled; /* convert to SW view */
>
> + drm_info(&xe->drm, "FLAT_CCS base:%llx, aligned:%s\n", offset,
> + str_yes_no(IS_ALIGNED(offset, SZ_128K)));
> +
> /*
> * Everything below this offset is handed to the VRAM
> * allocator, so it has to be the *first* address the
> --
> 2.55.0
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v3 3/5] drm/xe/vram: revamp CPU VRAM mapping
2026-09-02 12:41 [PATCH v3 0/5] VRAM health check + CCS fix Matthew Auld
2026-09-02 12:41 ` [PATCH v3 1/5] drm/xe/migrate: support 4K PTEs for identity map Matthew Auld
2026-09-02 12:41 ` [PATCH v3 2/5] drm/xe/vram: report FLAT_CCS base misalignment Matthew Auld
@ 2026-09-02 12:41 ` Matthew Auld
2026-09-02 13:12 ` sashiko-bot
2026-09-02 19:51 ` Matthew Brost
2026-09-02 12:41 ` [PATCH v3 4/5] drm/xe: add force option for global invalidation Matthew Auld
` (4 subsequent siblings)
7 siblings, 2 replies; 14+ messages in thread
From: Matthew Auld @ 2026-09-02 12:41 UTC (permalink / raw)
To: intel-xe; +Cc: Thomas Hellström, Matthew Brost, Rodrigo Vivi
Previously, we called devm_ioremap_wc() for the entire PCI LMEM BAR (which
can be significantly larger than usable memory, e.g., mapping 16G for a
10G card), and then simply assigned subsets of this global mapping to each
tile.
By moving the devm_ioremap_wc() call into vram_region_init() and mapping
on a per-tile basis, we restrict the virtual address space to exactly
the usable_size of each tile. The other big win is that the core kernel
will place a guard page at the end of each per-tile mapping to help
catch OOB CPU writes (e.g. into the flat CCS storage) by triggering an
immediate page fault instead of silent memory corruption.
As a consequence the global vram->mapping is now NULL. But that was
unused anyway, with CPU access already correctly routed through the per
tile mapping.
v2 (Sashiko)
- Make sure to update the panic flow to now use the root tile.
Assisted-by: Gemini:gemini-3.1-pro-preview
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/display/xe_panic.c | 3 ++-
drivers/gpu/drm/xe/xe_vram.c | 14 +++++++++-----
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/display/xe_panic.c b/drivers/gpu/drm/xe/display/xe_panic.c
index 12c6fb99015d..1a6cee25e9d7 100644
--- a/drivers/gpu/drm/xe/display/xe_panic.c
+++ b/drivers/gpu/drm/xe/display/xe_panic.c
@@ -52,7 +52,8 @@ static void xe_panic_page_set_pixel(struct drm_scanout_buffer *sb, unsigned int
if (new_page != panic->page) {
if (xe_bo_is_vram(bo)) {
/* Display is always mapped on root tile */
- struct xe_vram_region *vram = xe_bo_device(bo)->mem.vram;
+ struct xe_vram_region *vram =
+ xe_device_get_root_tile(xe_bo_device(bo))->mem.vram;
if (panic->page < 0 || new_page < panic->page) {
xe_res_first(bo->ttm.resource, new_page * PAGE_SIZE,
diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
index 56cff1e44530..04d831b101bd 100644
--- a/drivers/gpu/drm/xe/xe_vram.c
+++ b/drivers/gpu/drm/xe/xe_vram.c
@@ -55,9 +55,6 @@ static int determine_lmem_bar_size(struct xe_device *xe, struct xe_vram_region *
/* XXX: Need to change when xe link code is ready */
lmem_bar->dpa_base = 0;
- /* set up a map to the total memory area. */
- lmem_bar->mapping = devm_ioremap_wc(&pdev->dev, lmem_bar->io_start, lmem_bar->io_size);
-
return 0;
}
@@ -196,7 +193,7 @@ static void vram_fini(void *arg)
struct xe_tile *tile;
int id;
- xe->mem.vram->mapping = NULL;
+ xe_assert(xe, !xe->mem.vram->mapping);
for_each_tile(tile, xe, id) {
tile->mem.vram->mapping = NULL;
@@ -257,8 +254,15 @@ static int vram_region_init(struct xe_device *xe, struct xe_vram_region *vram,
return -ENODEV;
}
+ if (vram != xe->mem.vram) {
+ struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
+
+ vram->mapping = devm_ioremap_wc(&pdev->dev, vram->io_start, vram->io_size);
+ if (!vram->mapping)
+ return -ENOMEM;
+ }
+
vram->dpa_base = lmem_bar->dpa_base + offset;
- vram->mapping = lmem_bar->mapping + offset;
vram->usable_size = usable_size;
print_vram_region_info(xe, vram);
--
2.55.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH v3 3/5] drm/xe/vram: revamp CPU VRAM mapping
2026-09-02 12:41 ` [PATCH v3 3/5] drm/xe/vram: revamp CPU VRAM mapping Matthew Auld
@ 2026-09-02 13:12 ` sashiko-bot
2026-09-02 14:36 ` Matthew Auld
2026-09-02 19:51 ` Matthew Brost
1 sibling, 1 reply; 14+ messages in thread
From: sashiko-bot @ 2026-09-02 13:12 UTC (permalink / raw)
To: Matthew Auld; +Cc: intel-xe
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] The panic handler incorrectly computes the virtual address for stolen memory framebuffers, silently corrupting normal VRAM instead of drawing the panic screen.
--
commit 122b98d2306bc2a11fb8cd83e0ebcab780bfb24e
Author: Matthew Auld <matthew.auld@intel.com>
drm/xe/vram: revamp CPU VRAM mapping
This commit moves the devm_ioremap_wc() call to vram_region_init(), mapping
VRAM on a per-tile basis restricted to usable_size. It helps catch
out-of-bounds CPU writes by placing a guard page at the end of each per-tile
mapping.
> diff --git a/drivers/gpu/drm/xe/display/xe_panic.c b/drivers/gpu/drm/xe/display/xe_panic.c
> index 12c6fb99015dd..1a6cee25e9d76 100644
> --- a/drivers/gpu/drm/xe/display/xe_panic.c
> +++ b/drivers/gpu/drm/xe/display/xe_panic.c
> @@ -52,7 +52,8 @@ static void xe_panic_page_set_pixel(struct drm_scanout_buffer *sb, unsigned int
> if (new_page != panic->page) {
> if (xe_bo_is_vram(bo)) {
> /* Display is always mapped on root tile */
> - struct xe_vram_region *vram = xe_bo_device(bo)->mem.vram;
> + struct xe_vram_region *vram =
> + xe_device_get_root_tile(xe_bo_device(bo))->mem.vram;
>
> if (panic->page < 0 || new_page < panic->page) {
> xe_res_first(bo->ttm.resource, new_page * PAGE_SIZE,
[Severity: High]
This isn't a bug introduced by this patch, but does the panic handler
incorrectly compute the virtual address for stolen memory framebuffers?
When a kernel panic occurs while the active framebuffer is in stolen memory
(XE_PL_STOLEN), xe_bo_is_vram() returns true. The code in
xe_panic_page_set_pixel() then adds panic->res.start (which is an offset
starting at 0 within the stolen region) to vram->mapping (which maps normal
VRAM) slightly below this hunk:
iosys_map_set_vaddr_iomem(&panic->vmap,
vram->mapping + panic->res.start);
This could silently corrupt normal VRAM instead of drawing the panic screen.
While this is a pre-existing issue, restricting vram->mapping to
usable_size in this patch makes it structurally impossible to fix by merely
correcting the offset, as the stolen memory region is explicitly excluded
from the mapping.
Should the panic handler be updated to use xe->mem.stolen_mgr->mapping for
XE_PL_STOLEN buffers?
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260902124117.918018-7-matthew.auld@intel.com?part=3
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH v3 3/5] drm/xe/vram: revamp CPU VRAM mapping
2026-09-02 13:12 ` sashiko-bot
@ 2026-09-02 14:36 ` Matthew Auld
0 siblings, 0 replies; 14+ messages in thread
From: Matthew Auld @ 2026-09-02 14:36 UTC (permalink / raw)
To: sashiko-reviews; +Cc: intel-xe
On 02/09/2026 14:12, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
>
> Pre-existing issues:
> - [High] The panic handler incorrectly computes the virtual address for stolen memory framebuffers, silently corrupting normal VRAM instead of drawing the panic screen.
> --
>
> commit 122b98d2306bc2a11fb8cd83e0ebcab780bfb24e
> Author: Matthew Auld <matthew.auld@intel.com>
>
> drm/xe/vram: revamp CPU VRAM mapping
>
> This commit moves the devm_ioremap_wc() call to vram_region_init(), mapping
> VRAM on a per-tile basis restricted to usable_size. It helps catch
> out-of-bounds CPU writes by placing a guard page at the end of each per-tile
> mapping.
>
>> diff --git a/drivers/gpu/drm/xe/display/xe_panic.c b/drivers/gpu/drm/xe/display/xe_panic.c
>> index 12c6fb99015dd..1a6cee25e9d76 100644
>> --- a/drivers/gpu/drm/xe/display/xe_panic.c
>> +++ b/drivers/gpu/drm/xe/display/xe_panic.c
>> @@ -52,7 +52,8 @@ static void xe_panic_page_set_pixel(struct drm_scanout_buffer *sb, unsigned int
>> if (new_page != panic->page) {
>> if (xe_bo_is_vram(bo)) {
>> /* Display is always mapped on root tile */
>> - struct xe_vram_region *vram = xe_bo_device(bo)->mem.vram;
>> + struct xe_vram_region *vram =
>> + xe_device_get_root_tile(xe_bo_device(bo))->mem.vram;
>>
>> if (panic->page < 0 || new_page < panic->page) {
>> xe_res_first(bo->ttm.resource, new_page * PAGE_SIZE,
>
> [Severity: High]
> This isn't a bug introduced by this patch, but does the panic handler
> incorrectly compute the virtual address for stolen memory framebuffers?
>
> When a kernel panic occurs while the active framebuffer is in stolen memory
> (XE_PL_STOLEN), xe_bo_is_vram() returns true. The code in
> xe_panic_page_set_pixel() then adds panic->res.start (which is an offset
> starting at 0 within the stolen region) to vram->mapping (which maps normal
> VRAM) slightly below this hunk:
>
> iosys_map_set_vaddr_iomem(&panic->vmap,
> vram->mapping + panic->res.start);
>
> This could silently corrupt normal VRAM instead of drawing the panic screen.
>
> While this is a pre-existing issue, restricting vram->mapping to
> usable_size in this patch makes it structurally impossible to fix by merely
> correcting the offset, as the stolen memory region is explicitly excluded
> from the mapping.
>
> Should the panic handler be updated to use xe->mem.stolen_mgr->mapping for
> XE_PL_STOLEN buffers?
xe_bo_is_vram() will only return true for dgfx + stolen or normal VRAM,
but we would never want to put frame buffers in the stolen part of VRAM,
and there is no path that would lead to such a thing. The stolen part of
VRAM is quite small and is a precious resource for stuff like FBC.
It might be worth checking for this in xe_panic_setup() to make it
bulletproof though.
>
> [ ... ]
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v3 3/5] drm/xe/vram: revamp CPU VRAM mapping
2026-09-02 12:41 ` [PATCH v3 3/5] drm/xe/vram: revamp CPU VRAM mapping Matthew Auld
2026-09-02 13:12 ` sashiko-bot
@ 2026-09-02 19:51 ` Matthew Brost
1 sibling, 0 replies; 14+ messages in thread
From: Matthew Brost @ 2026-09-02 19:51 UTC (permalink / raw)
To: Matthew Auld; +Cc: intel-xe, Thomas Hellström, Rodrigo Vivi
On Wed, Sep 02, 2026 at 01:41:21PM +0100, Matthew Auld wrote:
> Previously, we called devm_ioremap_wc() for the entire PCI LMEM BAR (which
> can be significantly larger than usable memory, e.g., mapping 16G for a
> 10G card), and then simply assigned subsets of this global mapping to each
> tile.
>
> By moving the devm_ioremap_wc() call into vram_region_init() and mapping
> on a per-tile basis, we restrict the virtual address space to exactly
> the usable_size of each tile. The other big win is that the core kernel
> will place a guard page at the end of each per-tile mapping to help
> catch OOB CPU writes (e.g. into the flat CCS storage) by triggering an
> immediate page fault instead of silent memory corruption.
>
> As a consequence the global vram->mapping is now NULL. But that was
> unused anyway, with CPU access already correctly routed through the per
> tile mapping.
>
> v2 (Sashiko)
> - Make sure to update the panic flow to now use the root tile.
>
> Assisted-by: Gemini:gemini-3.1-pro-preview
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/display/xe_panic.c | 3 ++-
> drivers/gpu/drm/xe/xe_vram.c | 14 +++++++++-----
> 2 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/display/xe_panic.c b/drivers/gpu/drm/xe/display/xe_panic.c
> index 12c6fb99015d..1a6cee25e9d7 100644
> --- a/drivers/gpu/drm/xe/display/xe_panic.c
> +++ b/drivers/gpu/drm/xe/display/xe_panic.c
> @@ -52,7 +52,8 @@ static void xe_panic_page_set_pixel(struct drm_scanout_buffer *sb, unsigned int
> if (new_page != panic->page) {
> if (xe_bo_is_vram(bo)) {
> /* Display is always mapped on root tile */
> - struct xe_vram_region *vram = xe_bo_device(bo)->mem.vram;
> + struct xe_vram_region *vram =
> + xe_device_get_root_tile(xe_bo_device(bo))->mem.vram;
>
> if (panic->page < 0 || new_page < panic->page) {
> xe_res_first(bo->ttm.resource, new_page * PAGE_SIZE,
> diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
> index 56cff1e44530..04d831b101bd 100644
> --- a/drivers/gpu/drm/xe/xe_vram.c
> +++ b/drivers/gpu/drm/xe/xe_vram.c
> @@ -55,9 +55,6 @@ static int determine_lmem_bar_size(struct xe_device *xe, struct xe_vram_region *
> /* XXX: Need to change when xe link code is ready */
> lmem_bar->dpa_base = 0;
>
> - /* set up a map to the total memory area. */
> - lmem_bar->mapping = devm_ioremap_wc(&pdev->dev, lmem_bar->io_start, lmem_bar->io_size);
> -
> return 0;
> }
>
> @@ -196,7 +193,7 @@ static void vram_fini(void *arg)
> struct xe_tile *tile;
> int id;
>
> - xe->mem.vram->mapping = NULL;
> + xe_assert(xe, !xe->mem.vram->mapping);
>
> for_each_tile(tile, xe, id) {
> tile->mem.vram->mapping = NULL;
> @@ -257,8 +254,15 @@ static int vram_region_init(struct xe_device *xe, struct xe_vram_region *vram,
> return -ENODEV;
> }
>
> + if (vram != xe->mem.vram) {
> + struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
> +
> + vram->mapping = devm_ioremap_wc(&pdev->dev, vram->io_start, vram->io_size);
> + if (!vram->mapping)
> + return -ENOMEM;
> + }
> +
> vram->dpa_base = lmem_bar->dpa_base + offset;
> - vram->mapping = lmem_bar->mapping + offset;
> vram->usable_size = usable_size;
>
> print_vram_region_info(xe, vram);
> --
> 2.55.0
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v3 4/5] drm/xe: add force option for global invalidation
2026-09-02 12:41 [PATCH v3 0/5] VRAM health check + CCS fix Matthew Auld
` (2 preceding siblings ...)
2026-09-02 12:41 ` [PATCH v3 3/5] drm/xe/vram: revamp CPU VRAM mapping Matthew Auld
@ 2026-09-02 12:41 ` Matthew Auld
2026-09-02 12:41 ` [PATCH v3 5/5] drm/xe/vram: add early VRAM health check Matthew Auld
` (3 subsequent siblings)
7 siblings, 0 replies; 14+ messages in thread
From: Matthew Auld @ 2026-09-02 12:41 UTC (permalink / raw)
To: intel-xe; +Cc: Thomas Hellström, Matthew Brost, Rodrigo Vivi
The flush is gated by the WA, since there would no valid use for it
otherwise, but for some very special usecases allow bypassing the WA.
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/display/xe_dsb_buffer.c | 2 +-
drivers/gpu/drm/xe/display/xe_fb_pin.c | 2 +-
drivers/gpu/drm/xe/xe_device.c | 6 +++---
drivers/gpu/drm/xe/xe_device.h | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/display/xe_dsb_buffer.c b/drivers/gpu/drm/xe/display/xe_dsb_buffer.c
index a7158c73a14c..82974e933e8d 100644
--- a/drivers/gpu/drm/xe/display/xe_dsb_buffer.c
+++ b/drivers/gpu/drm/xe/display/xe_dsb_buffer.c
@@ -88,7 +88,7 @@ static void xe_dsb_buffer_flush_map(struct intel_dsb_buffer *dsb_buf)
* both for weak ordering archs and discrete cards.
*/
xe_device_wmb(xe);
- xe_device_l2_flush(xe);
+ xe_device_l2_flush(xe, false);
}
const struct intel_display_dsb_interface xe_display_dsb_interface = {
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index 73469ea5f333..b46a2c32ac07 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -203,7 +203,7 @@ static int __xe_pin_fb_vma_dpt(struct drm_gem_object *obj,
vma->node = dpt->ggtt_node[tile0->id];
/* Ensure DPT writes are flushed */
- xe_device_l2_flush(xe);
+ xe_device_l2_flush(xe, false);
return 0;
}
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 396d02eb2af8..fa98b2d12204 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -1270,7 +1270,7 @@ bool xe_device_is_l2_flush_optimized(struct xe_device *xe)
return false;
}
-void xe_device_l2_flush(struct xe_device *xe)
+void xe_device_l2_flush(struct xe_device *xe, bool force)
{
struct xe_gt *gt;
@@ -1278,7 +1278,7 @@ void xe_device_l2_flush(struct xe_device *xe)
if (!gt)
return;
- if (!XE_GT_WA(gt, 16023588340))
+ if (!force && !XE_GT_WA(gt, 16023588340))
return;
CLASS(xe_force_wake, fw_ref)(gt_to_fw(gt), XE_FW_GT);
@@ -1333,7 +1333,7 @@ void xe_device_td_flush(struct xe_device *xe)
if (XE_GT_WA(root_gt, 16023588340)) {
/* A transient flush is not sufficient: flush the L2 */
- xe_device_l2_flush(xe);
+ xe_device_l2_flush(xe, false);
} else {
xe_guc_pc_apply_flush_freq_limit(&root_gt->uc.guc.pc);
tdf_request_sync(xe);
diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
index 6c4cfaebc44a..6d3d6d5eba29 100644
--- a/drivers/gpu/drm/xe/xe_device.h
+++ b/drivers/gpu/drm/xe/xe_device.h
@@ -205,7 +205,7 @@ u64 xe_device_uncanonicalize_addr(struct xe_device *xe, u64 address);
bool xe_device_is_l2_flush_optimized(struct xe_device *xe);
void xe_device_td_flush(struct xe_device *xe);
-void xe_device_l2_flush(struct xe_device *xe);
+void xe_device_l2_flush(struct xe_device *xe, bool force);
static inline bool xe_device_wedged(struct xe_device *xe)
{
--
2.55.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH v3 5/5] drm/xe/vram: add early VRAM health check
2026-09-02 12:41 [PATCH v3 0/5] VRAM health check + CCS fix Matthew Auld
` (3 preceding siblings ...)
2026-09-02 12:41 ` [PATCH v3 4/5] drm/xe: add force option for global invalidation Matthew Auld
@ 2026-09-02 12:41 ` Matthew Auld
2026-09-02 19:43 ` Matthew Brost
2026-09-02 13:28 ` ✓ CI.KUnit: success for VRAM health check + CCS fix (rev3) Patchwork
` (2 subsequent siblings)
7 siblings, 1 reply; 14+ messages in thread
From: Matthew Auld @ 2026-09-02 12:41 UTC (permalink / raw)
To: intel-xe
Cc: Thomas Hellström, Linus Torvalds, Stuart Summers,
Matthew Brost, Rodrigo Vivi
During early probe, use the last page as a canary for BAR sizing, CCS
sizing, identity map setup etc. If something is wrong the last page is
where we will likely find it. Hit it with everything we have. For now
this is gated behind a debug config option, so shouldn't trigger on
production.
Main motivation is around CCS sizing where on some BMG cards the CCS
offset is programmed misaligned, for whatever reason, and our handling
of that was busted, as found by Linus, leading to some amount of CCS
storage getting pulled into the allocator as normal VRAM.
Nothing in our CI farm has such a misaligned offset it would seem,
however I did get this to pop on my b570, which does also have the
misaligned CCS offset:
Tile 0: Running VRAM memtest...
Tile 0: VRAM bounds overlap CCS region! VRAM sizing is incorrect.
With the fix from Linus, this goes away:
Tile 0: Running VRAM memtest...
Tile 0: VRAM memtest completed.
For the VRAM health check itself, this adds:
- CPU access to the last page (BAR).
- GPU access to the last page (identity map).
- CCS overlap check. This one is more involved, but overall idea is
fill the last page with a known pattern, and also save the CCS state
for the first 4M of VRAM to some scratch memory. We then zero the CCS
storage for that same range, all using the proper CCS copy instruction.
At this point we readback the last page, and check if the pattern we
wrote changed. Finally we restore the CCS state. This works since CCS
1:1 maps with VRAM, so the start of the raw CCS, should map to the
start of VRAM. This successfully catches the issue that Linus found
and fixed.
Assisted-by: Gemini:gemini-3.1-pro-preview
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Stuart Summers <stuart.summers@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 8 +
drivers/gpu/drm/xe/xe_migrate.c | 64 ++++++++
drivers/gpu/drm/xe/xe_migrate.h | 6 +
drivers/gpu/drm/xe/xe_tile_types.h | 4 +
drivers/gpu/drm/xe/xe_vram.c | 241 +++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_vram.h | 10 ++
6 files changed, 333 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index fa98b2d12204..8583b2e9ecf4 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -1051,6 +1051,10 @@ int xe_device_probe(struct xe_device *xe)
if (err)
return err;
+ err = xe_vram_reserve_memtest_bo(xe);
+ if (err)
+ return err;
+
for_each_tile(tile, xe, id) {
err = xe_tile_init(tile);
if (err)
@@ -1067,6 +1071,10 @@ int xe_device_probe(struct xe_device *xe)
return err;
}
+ err = xe_vram_memtest(xe);
+ if (err)
+ return err;
+
err = xe_pagefault_init(xe);
if (err)
return err;
diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
index 0bf000d7c901..ff45c24d8889 100644
--- a/drivers/gpu/drm/xe/xe_migrate.c
+++ b/drivers/gpu/drm/xe/xe_migrate.c
@@ -2650,3 +2650,67 @@ void xe_migrate_job_lock_assert(struct xe_exec_queue *q)
#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
#include "tests/xe_migrate.c"
#endif
+
+#if IS_ENABLED(CONFIG_DRM_XE_DEBUG_MEM)
+int xe_migrate_debug_ccs_overlap(struct xe_migrate *m,
+ struct xe_bo *scratch_bo,
+ bool write_to_ccs)
+{
+ struct xe_device *xe = tile_to_xe(m->tile);
+ struct xe_gt *gt = m->tile->primary_gt;
+ struct dma_fence *fence;
+ struct xe_bb *bb;
+ struct xe_sched_job *job;
+ u64 first_page_dpa, clear_L0_ofs, scratch_dpa, scratch_L0_ofs;
+
+ if (!xe_device_has_flat_ccs(xe))
+ return -EINVAL;
+
+ first_page_dpa = xe_vram_region_dpa_base(m->tile->mem.vram);
+ clear_L0_ofs = xe_migrate_vram_ofs(xe, first_page_dpa, true);
+
+ scratch_dpa = xe_bo_addr(scratch_bo, 0, XE_PAGE_SIZE);
+ scratch_L0_ofs = xe_migrate_vram_ofs(xe, scratch_dpa, false);
+
+ bb = xe_bb_new(gt, EMIT_COPY_CCS_DW + 1, xe->info.has_usm);
+ if (IS_ERR(bb)) {
+ drm_warn(&xe->drm, "Failed to create bb for VRAM overlap check\n");
+ return PTR_ERR(bb);
+ }
+
+ /* 4MB payload = 8KB CCS metadata */
+ if (write_to_ccs) {
+ emit_copy_ccs(gt, bb, clear_L0_ofs, true,
+ scratch_L0_ofs, false, SZ_4M);
+ } else {
+ emit_copy_ccs(gt, bb, scratch_L0_ofs, false,
+ clear_L0_ofs, true, SZ_4M);
+ }
+
+ bb->cs[bb->len++] = MI_BATCH_BUFFER_END;
+
+ job = xe_bb_create_migration_job(m->q, bb,
+ xe_migrate_batch_base(m, xe->info.has_usm),
+ 0);
+ if (!IS_ERR(job)) {
+ xe_sched_job_add_migrate_flush(job, MI_FLUSH_DW_CCS);
+
+ mutex_lock(&m->job_mutex);
+ xe_sched_job_arm(job);
+
+ fence = dma_fence_get(&job->drm.s_fence->finished);
+ xe_sched_job_push(job);
+ mutex_unlock(&m->job_mutex);
+
+ dma_fence_wait(fence, false);
+ dma_fence_put(fence);
+ } else {
+ drm_warn(&xe->drm, "Failed to create job for VRAM overlap check\n");
+ xe_bb_free(bb, NULL);
+ return PTR_ERR(job);
+ }
+
+ xe_bb_free(bb, NULL);
+ return 0;
+}
+#endif
diff --git a/drivers/gpu/drm/xe/xe_migrate.h b/drivers/gpu/drm/xe/xe_migrate.h
index c3a268b01768..a9acc62f78f0 100644
--- a/drivers/gpu/drm/xe/xe_migrate.h
+++ b/drivers/gpu/drm/xe/xe_migrate.h
@@ -182,4 +182,10 @@ static inline void xe_migrate_job_lock_assert(struct xe_exec_queue *q)
void xe_migrate_job_lock(struct xe_migrate *m, struct xe_exec_queue *q);
void xe_migrate_job_unlock(struct xe_migrate *m, struct xe_exec_queue *q);
+#if IS_ENABLED(CONFIG_DRM_XE_DEBUG_MEM)
+int xe_migrate_debug_ccs_overlap(struct xe_migrate *m,
+ struct xe_bo *scratch_bo,
+ bool write_to_ccs);
+#endif
+
#endif
diff --git a/drivers/gpu/drm/xe/xe_tile_types.h b/drivers/gpu/drm/xe/xe_tile_types.h
index 0048100ccb72..e1368c04846a 100644
--- a/drivers/gpu/drm/xe/xe_tile_types.h
+++ b/drivers/gpu/drm/xe/xe_tile_types.h
@@ -97,6 +97,10 @@ struct xe_tile {
* Only main GT has page reclaim list allocations.
*/
struct xe_sa_manager *reclaim_pool;
+#if IS_ENABLED(CONFIG_DRM_XE_DEBUG_MEM)
+ /** @mem.memtest_bo: VRAM overlap check BO */
+ struct xe_bo *memtest_bo;
+#endif
} mem;
/** @sriov: tile level virtualization data */
diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
index 04d831b101bd..dcedd8cfd731 100644
--- a/drivers/gpu/drm/xe/xe_vram.c
+++ b/drivers/gpu/drm/xe/xe_vram.c
@@ -17,8 +17,11 @@
#include "xe_device.h"
#include "xe_force_wake.h"
#include "xe_gt_mcr.h"
+#include "xe_map.h"
+#include "xe_migrate.h"
#include "xe_mmio.h"
#include "xe_sriov.h"
+#include "xe_tile.h"
#include "xe_tile_sriov_vf.h"
#include "xe_ttm_vram_mgr.h"
#include "xe_vram.h"
@@ -407,3 +410,241 @@ resource_size_t xe_vram_region_actual_physical_size(const struct xe_vram_region
return vram ? vram->actual_physical_size : 0;
}
EXPORT_SYMBOL_IF_KUNIT(xe_vram_region_actual_physical_size);
+
+#if IS_ENABLED(CONFIG_DRM_XE_DEBUG_MEM)
+static void memtest_bo_cleanup(void *arg)
+{
+ struct xe_device *xe = arg;
+
+ xe_vram_free_memtest_bos(xe);
+}
+
+int xe_vram_reserve_memtest_bo(struct xe_device *xe)
+{
+ struct xe_tile *tile;
+ u8 id;
+
+ if (IS_SRIOV_VF(xe))
+ return 0;
+
+ for_each_tile(tile, xe, id) {
+ u64 vram_size;
+
+ if (!tile->mem.vram)
+ continue;
+
+ if (tile->mem.vram->io_size < tile->mem.vram->usable_size) {
+ drm_info(&xe->drm,
+ "Tile %d: Small-BAR system detected, skipping VRAM memtest\n",
+ id);
+ continue;
+ }
+
+ vram_size = tile->mem.vram->usable_size;
+
+ tile->mem.memtest_bo = xe_bo_create_pin_map_at_novm(xe, tile, SZ_64K,
+ vram_size - SZ_64K,
+ ttm_bo_type_kernel,
+ XE_BO_FLAG_VRAM_IF_DGFX(tile),
+ 0, false);
+ if (IS_ERR(tile->mem.memtest_bo)) {
+ drm_warn(&xe->drm, "Tile %d: Failed to reserve memtest BO\n", id);
+ tile->mem.memtest_bo = NULL;
+ continue;
+ }
+
+ drm_info(&xe->drm, "Tile %d: Reserved memtest BO at offset 0x%llx\n",
+ id, vram_size - SZ_64K);
+ }
+
+ return devm_add_action_or_reset(xe->drm.dev, memtest_bo_cleanup, xe);
+}
+
+void xe_vram_free_memtest_bos(struct xe_device *xe)
+{
+ struct xe_tile *tile;
+ u8 id;
+
+ for_each_tile(tile, xe, id) {
+ if (tile->mem.memtest_bo) {
+ xe_bo_unpin_map_no_vm(tile->mem.memtest_bo);
+ tile->mem.memtest_bo = NULL;
+ }
+ }
+}
+
+int xe_vram_memtest(struct xe_device *xe)
+{
+ struct xe_tile *tile;
+ u8 id;
+ int err = 0;
+
+ if (IS_SRIOV_VF(xe))
+ return 0;
+
+ for_each_tile(tile, xe, id) {
+ struct xe_bo *last_page_bo = tile->mem.memtest_bo;
+ struct dma_fence *fence;
+ bool overlap = false;
+ int i;
+ u8 val;
+
+ if (!last_page_bo || !tile->migrate)
+ continue;
+
+ drm_info(&xe->drm, "Tile %d: Running VRAM memtest...\n", id);
+
+ /* CPU write and readback first and last byte of the last page */
+ xe_map_wr(xe, &last_page_bo->vmap, 0, u8, 0xA5);
+ xe_map_wr(xe, &last_page_bo->vmap, SZ_64K - 1, u8, 0x5A);
+
+ val = xe_map_rd(xe, &last_page_bo->vmap, 0, u8);
+ if (drm_WARN(&xe->drm, val != 0xA5,
+ "Tile %d: CPU memtest failed at offset 0 (expected 0xA5, got 0x%02x)\n",
+ id, val)) {
+ err = -EIO;
+ goto unpin;
+ }
+
+ val = xe_map_rd(xe, &last_page_bo->vmap, SZ_64K - 1, u8);
+ if (drm_WARN(&xe->drm, val != 0x5A,
+ "Tile %d: CPU memtest failed at offset 65535 (expected 0x5A, got 0x%02x)\n",
+ id, val)) {
+ err = -EIO;
+ goto unpin;
+ }
+
+ /* Non-CCS access via GPU on the last page */
+ xe_bo_lock(last_page_bo, false);
+ fence = xe_migrate_clear(tile->migrate, last_page_bo,
+ last_page_bo->ttm.resource,
+ XE_MIGRATE_CLEAR_FLAG_BO_DATA);
+ xe_bo_unlock(last_page_bo);
+
+ if (!IS_ERR(fence)) {
+ dma_fence_wait(fence, false);
+ dma_fence_put(fence);
+ } else {
+ err = PTR_ERR(fence);
+ goto unpin;
+ }
+
+ val = xe_map_rd(xe, &last_page_bo->vmap, 0, u8);
+ if (drm_WARN(&xe->drm, val != 0x00,
+ "Tile %d: GPU memtest clear failed at offset 0 (expected 0x00, got 0x%02x)\n",
+ id, val)) {
+ err = -EIO;
+ goto unpin;
+ }
+
+ /*
+ * Check for CCS overlap on the root tile.
+ *
+ * TODO: maybe extend if we ever get multi-tile + CCS. Pay
+ * special attention to the l2 flush below. Currently that is
+ * hard coded to the root tile.
+ */
+ if (!id && xe_device_has_flat_ccs(xe) &&
+ GRAPHICS_VERx100(xe) >= 2000) {
+ struct xe_bo *scratch_bo_before;
+ struct xe_bo *scratch_bo_after;
+
+ scratch_bo_before = xe_bo_create_pin_map_novm(xe, tile, SZ_64K,
+ ttm_bo_type_kernel,
+ XE_BO_FLAG_VRAM_IF_DGFX(tile),
+ false);
+ if (IS_ERR(scratch_bo_before)) {
+ err = PTR_ERR(scratch_bo_before);
+ goto unpin;
+ }
+
+ scratch_bo_after = xe_bo_create_pin_map_novm(xe, tile, SZ_64K,
+ ttm_bo_type_kernel,
+ XE_BO_FLAG_VRAM_IF_DGFX(tile),
+ false);
+ if (IS_ERR(scratch_bo_after)) {
+ xe_bo_unpin_map_no_vm(scratch_bo_before);
+ err = PTR_ERR(scratch_bo_after);
+ goto unpin;
+ }
+
+ /* Save original CCS metadata for PA 0 + */
+ err = xe_migrate_debug_ccs_overlap(tile->migrate, scratch_bo_before, false);
+ if (err) {
+ xe_bo_unpin_map_no_vm(scratch_bo_before);
+ xe_bo_unpin_map_no_vm(scratch_bo_after);
+ goto unpin;
+ }
+
+ /*
+ * Fill last page. If there is CCS overlap in the last
+ * page this will snag the raw CCS storage.
+ */
+ xe_map_memset(xe, &last_page_bo->vmap, 0, 0x5A, SZ_64K);
+ xe_device_wmb(xe);
+
+ /*
+ * Global invalidation. Some BMG SKUs will cache the BAR
+ * writes in the GPU side VRAM cache. Make sure above
+ * writes are fully flushed out to VRAM, so this is
+ * hopefully more well behaved with the CCS unit, if
+ * there is indeed CCS overlap with normal VRAM. Since
+ * there is a separate CCS cache, the CCS unit might not
+ * respect the GPU VRAM cache for CCS accesses, so opt
+ * for being super careful here.
+ */
+ xe_device_l2_flush(xe, true);
+
+ /* Use GPU to clear CCS state for PA 0 */
+ xe_map_memset(xe, &scratch_bo_after->vmap, 0, 0x00, SZ_64K);
+ err = xe_migrate_debug_ccs_overlap(tile->migrate, scratch_bo_after, true);
+ if (err) {
+ xe_bo_unpin_map_no_vm(scratch_bo_before);
+ xe_bo_unpin_map_no_vm(scratch_bo_after);
+ goto unpin;
+ }
+ /*
+ * Global invalidation. Ensure CCS caches really are
+ * nuked and the raw CCS data is visible in VRAM, for
+ * the below access.
+ */
+ xe_device_l2_flush(xe, true);
+
+ /* Check if last_page_bo was corrupted by the GPU CCS clear */
+ for (i = 0; i < SZ_64K; i += 8) {
+ u64 payload = xe_map_rd(xe, &last_page_bo->vmap, i, u64);
+
+ if (payload != 0x5A5A5A5A5A5A5A5AULL) {
+ overlap = true;
+ break;
+ }
+ }
+
+ /* Restore original CCS metadata for PA 0 + */
+ err = xe_migrate_debug_ccs_overlap(tile->migrate, scratch_bo_before, true);
+ if (err)
+ drm_warn(&xe->drm, "Failed to restore CCS metadata\n");
+
+ xe_bo_unpin_map_no_vm(scratch_bo_before);
+ xe_bo_unpin_map_no_vm(scratch_bo_after);
+ }
+
+ if (drm_WARN(&xe->drm, overlap,
+ "Tile %d: VRAM bounds overlap CCS region! VRAM sizing is incorrect.\n",
+ id)) {
+ err = -EINVAL;
+ goto unpin;
+ }
+
+ drm_info(&xe->drm, "Tile %d: VRAM memtest completed.\n", id);
+
+unpin:
+ if (err)
+ break;
+ }
+
+ xe_vram_free_memtest_bos(xe);
+
+ return err;
+}
+#endif
diff --git a/drivers/gpu/drm/xe/xe_vram.h b/drivers/gpu/drm/xe/xe_vram.h
index dd1c8bf17922..38425d81f777 100644
--- a/drivers/gpu/drm/xe/xe_vram.h
+++ b/drivers/gpu/drm/xe/xe_vram.h
@@ -23,4 +23,14 @@ resource_size_t xe_vram_region_dpa_base(const struct xe_vram_region *vram);
resource_size_t xe_vram_region_usable_size(const struct xe_vram_region *vram);
resource_size_t xe_vram_region_actual_physical_size(const struct xe_vram_region *vram);
+#if IS_ENABLED(CONFIG_DRM_XE_DEBUG_MEM)
+int xe_vram_reserve_memtest_bo(struct xe_device *xe);
+void xe_vram_free_memtest_bos(struct xe_device *xe);
+int xe_vram_memtest(struct xe_device *xe);
+#else
+static inline int xe_vram_reserve_memtest_bo(struct xe_device *xe) { return 0; }
+static inline void xe_vram_free_memtest_bos(struct xe_device *xe) {}
+static inline int xe_vram_memtest(struct xe_device *xe) { return 0; }
+#endif
+
#endif
--
2.55.0
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [PATCH v3 5/5] drm/xe/vram: add early VRAM health check
2026-09-02 12:41 ` [PATCH v3 5/5] drm/xe/vram: add early VRAM health check Matthew Auld
@ 2026-09-02 19:43 ` Matthew Brost
0 siblings, 0 replies; 14+ messages in thread
From: Matthew Brost @ 2026-09-02 19:43 UTC (permalink / raw)
To: Matthew Auld
Cc: intel-xe, Thomas Hellström, Linus Torvalds, Stuart Summers,
Rodrigo Vivi
On Wed, Sep 02, 2026 at 01:41:23PM +0100, Matthew Auld wrote:
> During early probe, use the last page as a canary for BAR sizing, CCS
> sizing, identity map setup etc. If something is wrong the last page is
> where we will likely find it. Hit it with everything we have. For now
> this is gated behind a debug config option, so shouldn't trigger on
> production.
>
> Main motivation is around CCS sizing where on some BMG cards the CCS
> offset is programmed misaligned, for whatever reason, and our handling
> of that was busted, as found by Linus, leading to some amount of CCS
> storage getting pulled into the allocator as normal VRAM.
>
> Nothing in our CI farm has such a misaligned offset it would seem,
> however I did get this to pop on my b570, which does also have the
> misaligned CCS offset:
>
> Tile 0: Running VRAM memtest...
> Tile 0: VRAM bounds overlap CCS region! VRAM sizing is incorrect.
>
> With the fix from Linus, this goes away:
>
> Tile 0: Running VRAM memtest...
> Tile 0: VRAM memtest completed.
>
> For the VRAM health check itself, this adds:
>
> - CPU access to the last page (BAR).
> - GPU access to the last page (identity map).
> - CCS overlap check. This one is more involved, but overall idea is
> fill the last page with a known pattern, and also save the CCS state
> for the first 4M of VRAM to some scratch memory. We then zero the CCS
> storage for that same range, all using the proper CCS copy instruction.
> At this point we readback the last page, and check if the pattern we
> wrote changed. Finally we restore the CCS state. This works since CCS
> 1:1 maps with VRAM, so the start of the raw CCS, should map to the
> start of VRAM. This successfully catches the issue that Linus found
> and fixed.
>
> Assisted-by: Gemini:gemini-3.1-pro-preview
> Signed-off-by: Matthew Auld <matthew.auld@intel.com>
> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Cc: Stuart Summers <stuart.summers@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 8 +
> drivers/gpu/drm/xe/xe_migrate.c | 64 ++++++++
> drivers/gpu/drm/xe/xe_migrate.h | 6 +
> drivers/gpu/drm/xe/xe_tile_types.h | 4 +
> drivers/gpu/drm/xe/xe_vram.c | 241 +++++++++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_vram.h | 10 ++
> 6 files changed, 333 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index fa98b2d12204..8583b2e9ecf4 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -1051,6 +1051,10 @@ int xe_device_probe(struct xe_device *xe)
> if (err)
> return err;
>
> + err = xe_vram_reserve_memtest_bo(xe);
> + if (err)
> + return err;
> +
> for_each_tile(tile, xe, id) {
> err = xe_tile_init(tile);
> if (err)
> @@ -1067,6 +1071,10 @@ int xe_device_probe(struct xe_device *xe)
> return err;
> }
>
> + err = xe_vram_memtest(xe);
> + if (err)
> + return err;
> +
> err = xe_pagefault_init(xe);
> if (err)
> return err;
> diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
> index 0bf000d7c901..ff45c24d8889 100644
> --- a/drivers/gpu/drm/xe/xe_migrate.c
> +++ b/drivers/gpu/drm/xe/xe_migrate.c
> @@ -2650,3 +2650,67 @@ void xe_migrate_job_lock_assert(struct xe_exec_queue *q)
> #if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
> #include "tests/xe_migrate.c"
> #endif
> +
> +#if IS_ENABLED(CONFIG_DRM_XE_DEBUG_MEM)
> +int xe_migrate_debug_ccs_overlap(struct xe_migrate *m,
> + struct xe_bo *scratch_bo,
> + bool write_to_ccs)
> +{
> + struct xe_device *xe = tile_to_xe(m->tile);
> + struct xe_gt *gt = m->tile->primary_gt;
> + struct dma_fence *fence;
> + struct xe_bb *bb;
> + struct xe_sched_job *job;
> + u64 first_page_dpa, clear_L0_ofs, scratch_dpa, scratch_L0_ofs;
> +
> + if (!xe_device_has_flat_ccs(xe))
> + return -EINVAL;
> +
> + first_page_dpa = xe_vram_region_dpa_base(m->tile->mem.vram);
> + clear_L0_ofs = xe_migrate_vram_ofs(xe, first_page_dpa, true);
> +
> + scratch_dpa = xe_bo_addr(scratch_bo, 0, XE_PAGE_SIZE);
> + scratch_L0_ofs = xe_migrate_vram_ofs(xe, scratch_dpa, false);
> +
> + bb = xe_bb_new(gt, EMIT_COPY_CCS_DW + 1, xe->info.has_usm);
> + if (IS_ERR(bb)) {
> + drm_warn(&xe->drm, "Failed to create bb for VRAM overlap check\n");
> + return PTR_ERR(bb);
> + }
> +
> + /* 4MB payload = 8KB CCS metadata */
> + if (write_to_ccs) {
> + emit_copy_ccs(gt, bb, clear_L0_ofs, true,
> + scratch_L0_ofs, false, SZ_4M);
> + } else {
> + emit_copy_ccs(gt, bb, scratch_L0_ofs, false,
> + clear_L0_ofs, true, SZ_4M);
> + }
> +
> + bb->cs[bb->len++] = MI_BATCH_BUFFER_END;
> +
> + job = xe_bb_create_migration_job(m->q, bb,
> + xe_migrate_batch_base(m, xe->info.has_usm),
> + 0);
> + if (!IS_ERR(job)) {
> + xe_sched_job_add_migrate_flush(job, MI_FLUSH_DW_CCS);
> +
> + mutex_lock(&m->job_mutex);
> + xe_sched_job_arm(job);
> +
> + fence = dma_fence_get(&job->drm.s_fence->finished);
> + xe_sched_job_push(job);
> + mutex_unlock(&m->job_mutex);
> +
> + dma_fence_wait(fence, false);
> + dma_fence_put(fence);
> + } else {
> + drm_warn(&xe->drm, "Failed to create job for VRAM overlap check\n");
> + xe_bb_free(bb, NULL);
> + return PTR_ERR(job);
> + }
> +
> + xe_bb_free(bb, NULL);
> + return 0;
> +}
> +#endif
> diff --git a/drivers/gpu/drm/xe/xe_migrate.h b/drivers/gpu/drm/xe/xe_migrate.h
> index c3a268b01768..a9acc62f78f0 100644
> --- a/drivers/gpu/drm/xe/xe_migrate.h
> +++ b/drivers/gpu/drm/xe/xe_migrate.h
> @@ -182,4 +182,10 @@ static inline void xe_migrate_job_lock_assert(struct xe_exec_queue *q)
> void xe_migrate_job_lock(struct xe_migrate *m, struct xe_exec_queue *q);
> void xe_migrate_job_unlock(struct xe_migrate *m, struct xe_exec_queue *q);
>
> +#if IS_ENABLED(CONFIG_DRM_XE_DEBUG_MEM)
> +int xe_migrate_debug_ccs_overlap(struct xe_migrate *m,
> + struct xe_bo *scratch_bo,
> + bool write_to_ccs);
> +#endif
> +
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_tile_types.h b/drivers/gpu/drm/xe/xe_tile_types.h
> index 0048100ccb72..e1368c04846a 100644
> --- a/drivers/gpu/drm/xe/xe_tile_types.h
> +++ b/drivers/gpu/drm/xe/xe_tile_types.h
> @@ -97,6 +97,10 @@ struct xe_tile {
> * Only main GT has page reclaim list allocations.
> */
> struct xe_sa_manager *reclaim_pool;
> +#if IS_ENABLED(CONFIG_DRM_XE_DEBUG_MEM)
> + /** @mem.memtest_bo: VRAM overlap check BO */
> + struct xe_bo *memtest_bo;
> +#endif
> } mem;
>
> /** @sriov: tile level virtualization data */
> diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
> index 04d831b101bd..dcedd8cfd731 100644
> --- a/drivers/gpu/drm/xe/xe_vram.c
> +++ b/drivers/gpu/drm/xe/xe_vram.c
> @@ -17,8 +17,11 @@
> #include "xe_device.h"
> #include "xe_force_wake.h"
> #include "xe_gt_mcr.h"
> +#include "xe_map.h"
> +#include "xe_migrate.h"
> #include "xe_mmio.h"
> #include "xe_sriov.h"
> +#include "xe_tile.h"
> #include "xe_tile_sriov_vf.h"
> #include "xe_ttm_vram_mgr.h"
> #include "xe_vram.h"
> @@ -407,3 +410,241 @@ resource_size_t xe_vram_region_actual_physical_size(const struct xe_vram_region
> return vram ? vram->actual_physical_size : 0;
> }
> EXPORT_SYMBOL_IF_KUNIT(xe_vram_region_actual_physical_size);
> +
> +#if IS_ENABLED(CONFIG_DRM_XE_DEBUG_MEM)
> +static void memtest_bo_cleanup(void *arg)
> +{
> + struct xe_device *xe = arg;
> +
> + xe_vram_free_memtest_bos(xe);
> +}
> +
> +int xe_vram_reserve_memtest_bo(struct xe_device *xe)
> +{
> + struct xe_tile *tile;
> + u8 id;
> +
> + if (IS_SRIOV_VF(xe))
> + return 0;
> +
> + for_each_tile(tile, xe, id) {
> + u64 vram_size;
> +
> + if (!tile->mem.vram)
> + continue;
> +
> + if (tile->mem.vram->io_size < tile->mem.vram->usable_size) {
> + drm_info(&xe->drm,
> + "Tile %d: Small-BAR system detected, skipping VRAM memtest\n",
> + id);
> + continue;
> + }
> +
> + vram_size = tile->mem.vram->usable_size;
> +
> + tile->mem.memtest_bo = xe_bo_create_pin_map_at_novm(xe, tile, SZ_64K,
> + vram_size - SZ_64K,
> + ttm_bo_type_kernel,
> + XE_BO_FLAG_VRAM_IF_DGFX(tile),
> + 0, false);
> + if (IS_ERR(tile->mem.memtest_bo)) {
> + drm_warn(&xe->drm, "Tile %d: Failed to reserve memtest BO\n", id);
> + tile->mem.memtest_bo = NULL;
> + continue;
> + }
> +
> + drm_info(&xe->drm, "Tile %d: Reserved memtest BO at offset 0x%llx\n",
> + id, vram_size - SZ_64K);
> + }
> +
> + return devm_add_action_or_reset(xe->drm.dev, memtest_bo_cleanup, xe);
> +}
> +
> +void xe_vram_free_memtest_bos(struct xe_device *xe)
> +{
> + struct xe_tile *tile;
> + u8 id;
> +
> + for_each_tile(tile, xe, id) {
> + if (tile->mem.memtest_bo) {
> + xe_bo_unpin_map_no_vm(tile->mem.memtest_bo);
> + tile->mem.memtest_bo = NULL;
> + }
> + }
> +}
> +
> +int xe_vram_memtest(struct xe_device *xe)
> +{
> + struct xe_tile *tile;
> + u8 id;
> + int err = 0;
> +
> + if (IS_SRIOV_VF(xe))
> + return 0;
> +
> + for_each_tile(tile, xe, id) {
> + struct xe_bo *last_page_bo = tile->mem.memtest_bo;
> + struct dma_fence *fence;
> + bool overlap = false;
> + int i;
> + u8 val;
> +
> + if (!last_page_bo || !tile->migrate)
> + continue;
> +
> + drm_info(&xe->drm, "Tile %d: Running VRAM memtest...\n", id);
> +
> + /* CPU write and readback first and last byte of the last page */
> + xe_map_wr(xe, &last_page_bo->vmap, 0, u8, 0xA5);
> + xe_map_wr(xe, &last_page_bo->vmap, SZ_64K - 1, u8, 0x5A);
> +
> + val = xe_map_rd(xe, &last_page_bo->vmap, 0, u8);
> + if (drm_WARN(&xe->drm, val != 0xA5,
> + "Tile %d: CPU memtest failed at offset 0 (expected 0xA5, got 0x%02x)\n",
> + id, val)) {
> + err = -EIO;
> + goto unpin;
> + }
> +
> + val = xe_map_rd(xe, &last_page_bo->vmap, SZ_64K - 1, u8);
> + if (drm_WARN(&xe->drm, val != 0x5A,
> + "Tile %d: CPU memtest failed at offset 65535 (expected 0x5A, got 0x%02x)\n",
> + id, val)) {
> + err = -EIO;
> + goto unpin;
> + }
> +
> + /* Non-CCS access via GPU on the last page */
> + xe_bo_lock(last_page_bo, false);
> + fence = xe_migrate_clear(tile->migrate, last_page_bo,
> + last_page_bo->ttm.resource,
> + XE_MIGRATE_CLEAR_FLAG_BO_DATA);
> + xe_bo_unlock(last_page_bo);
> +
> + if (!IS_ERR(fence)) {
> + dma_fence_wait(fence, false);
> + dma_fence_put(fence);
> + } else {
> + err = PTR_ERR(fence);
> + goto unpin;
> + }
> +
> + val = xe_map_rd(xe, &last_page_bo->vmap, 0, u8);
> + if (drm_WARN(&xe->drm, val != 0x00,
> + "Tile %d: GPU memtest clear failed at offset 0 (expected 0x00, got 0x%02x)\n",
> + id, val)) {
> + err = -EIO;
> + goto unpin;
> + }
> +
> + /*
> + * Check for CCS overlap on the root tile.
> + *
> + * TODO: maybe extend if we ever get multi-tile + CCS. Pay
> + * special attention to the l2 flush below. Currently that is
> + * hard coded to the root tile.
> + */
> + if (!id && xe_device_has_flat_ccs(xe) &&
> + GRAPHICS_VERx100(xe) >= 2000) {
> + struct xe_bo *scratch_bo_before;
> + struct xe_bo *scratch_bo_after;
> +
> + scratch_bo_before = xe_bo_create_pin_map_novm(xe, tile, SZ_64K,
> + ttm_bo_type_kernel,
> + XE_BO_FLAG_VRAM_IF_DGFX(tile),
> + false);
> + if (IS_ERR(scratch_bo_before)) {
> + err = PTR_ERR(scratch_bo_before);
> + goto unpin;
> + }
> +
> + scratch_bo_after = xe_bo_create_pin_map_novm(xe, tile, SZ_64K,
> + ttm_bo_type_kernel,
> + XE_BO_FLAG_VRAM_IF_DGFX(tile),
> + false);
> + if (IS_ERR(scratch_bo_after)) {
> + xe_bo_unpin_map_no_vm(scratch_bo_before);
> + err = PTR_ERR(scratch_bo_after);
> + goto unpin;
> + }
> +
> + /* Save original CCS metadata for PA 0 + */
> + err = xe_migrate_debug_ccs_overlap(tile->migrate, scratch_bo_before, false);
> + if (err) {
> + xe_bo_unpin_map_no_vm(scratch_bo_before);
> + xe_bo_unpin_map_no_vm(scratch_bo_after);
> + goto unpin;
> + }
> +
> + /*
> + * Fill last page. If there is CCS overlap in the last
> + * page this will snag the raw CCS storage.
> + */
> + xe_map_memset(xe, &last_page_bo->vmap, 0, 0x5A, SZ_64K);
> + xe_device_wmb(xe);
> +
> + /*
> + * Global invalidation. Some BMG SKUs will cache the BAR
> + * writes in the GPU side VRAM cache. Make sure above
> + * writes are fully flushed out to VRAM, so this is
> + * hopefully more well behaved with the CCS unit, if
> + * there is indeed CCS overlap with normal VRAM. Since
> + * there is a separate CCS cache, the CCS unit might not
> + * respect the GPU VRAM cache for CCS accesses, so opt
> + * for being super careful here.
> + */
> + xe_device_l2_flush(xe, true);
> +
> + /* Use GPU to clear CCS state for PA 0 */
> + xe_map_memset(xe, &scratch_bo_after->vmap, 0, 0x00, SZ_64K);
> + err = xe_migrate_debug_ccs_overlap(tile->migrate, scratch_bo_after, true);
> + if (err) {
> + xe_bo_unpin_map_no_vm(scratch_bo_before);
> + xe_bo_unpin_map_no_vm(scratch_bo_after);
> + goto unpin;
> + }
> + /*
> + * Global invalidation. Ensure CCS caches really are
> + * nuked and the raw CCS data is visible in VRAM, for
> + * the below access.
> + */
> + xe_device_l2_flush(xe, true);
> +
> + /* Check if last_page_bo was corrupted by the GPU CCS clear */
> + for (i = 0; i < SZ_64K; i += 8) {
> + u64 payload = xe_map_rd(xe, &last_page_bo->vmap, i, u64);
> +
> + if (payload != 0x5A5A5A5A5A5A5A5AULL) {
> + overlap = true;
> + break;
> + }
> + }
> +
> + /* Restore original CCS metadata for PA 0 + */
> + err = xe_migrate_debug_ccs_overlap(tile->migrate, scratch_bo_before, true);
> + if (err)
> + drm_warn(&xe->drm, "Failed to restore CCS metadata\n");
> +
> + xe_bo_unpin_map_no_vm(scratch_bo_before);
> + xe_bo_unpin_map_no_vm(scratch_bo_after);
> + }
> +
> + if (drm_WARN(&xe->drm, overlap,
> + "Tile %d: VRAM bounds overlap CCS region! VRAM sizing is incorrect.\n",
> + id)) {
> + err = -EINVAL;
> + goto unpin;
> + }
> +
> + drm_info(&xe->drm, "Tile %d: VRAM memtest completed.\n", id);
> +
> +unpin:
> + if (err)
> + break;
> + }
> +
> + xe_vram_free_memtest_bos(xe);
> +
> + return err;
> +}
> +#endif
> diff --git a/drivers/gpu/drm/xe/xe_vram.h b/drivers/gpu/drm/xe/xe_vram.h
> index dd1c8bf17922..38425d81f777 100644
> --- a/drivers/gpu/drm/xe/xe_vram.h
> +++ b/drivers/gpu/drm/xe/xe_vram.h
> @@ -23,4 +23,14 @@ resource_size_t xe_vram_region_dpa_base(const struct xe_vram_region *vram);
> resource_size_t xe_vram_region_usable_size(const struct xe_vram_region *vram);
> resource_size_t xe_vram_region_actual_physical_size(const struct xe_vram_region *vram);
>
> +#if IS_ENABLED(CONFIG_DRM_XE_DEBUG_MEM)
> +int xe_vram_reserve_memtest_bo(struct xe_device *xe);
> +void xe_vram_free_memtest_bos(struct xe_device *xe);
> +int xe_vram_memtest(struct xe_device *xe);
> +#else
> +static inline int xe_vram_reserve_memtest_bo(struct xe_device *xe) { return 0; }
> +static inline void xe_vram_free_memtest_bos(struct xe_device *xe) {}
> +static inline int xe_vram_memtest(struct xe_device *xe) { return 0; }
> +#endif
> +
> #endif
> --
> 2.55.0
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* ✓ CI.KUnit: success for VRAM health check + CCS fix (rev3)
2026-09-02 12:41 [PATCH v3 0/5] VRAM health check + CCS fix Matthew Auld
` (4 preceding siblings ...)
2026-09-02 12:41 ` [PATCH v3 5/5] drm/xe/vram: add early VRAM health check Matthew Auld
@ 2026-09-02 13:28 ` Patchwork
2026-09-02 14:23 ` ✓ Xe.CI.BAT: " Patchwork
2026-09-03 0:36 ` ✗ Xe.CI.FULL: failure " Patchwork
7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2026-09-02 13:28 UTC (permalink / raw)
To: Matthew Auld; +Cc: intel-xe
== Series Details ==
Series: VRAM health check + CCS fix (rev3)
URL : https://patchwork.freedesktop.org/series/172984/
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
[13:26:36] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[13:26:41] 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
[13:27:01] Starting KUnit Kernel (1/1)...
[13:27:01] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[13:27:01] ============= refcount_interrupt (4 subtests) ==============
[13:27:01] [PASSED] test_single_irq_change
[13:27:01] [PASSED] test_nested_irq_change
[13:27:01] [PASSED] test_multiple_irq_change
[13:27:01] [PASSED] test_irq_save
[13:27:01] =============== [PASSED] refcount_interrupt ================
[13:27:01] ================= gpu_buddy (14 subtests) ==================
[13:27:01] [PASSED] gpu_test_buddy_alloc_limit
[13:27:01] [PASSED] gpu_test_buddy_alloc_optimistic
[13:27:01] [PASSED] gpu_test_buddy_alloc_pessimistic
[13:27:01] [PASSED] gpu_test_buddy_alloc_pathological
[13:27:01] [PASSED] gpu_test_buddy_alloc_contiguous
[13:27:01] [PASSED] gpu_test_buddy_alloc_clear
[13:27:01] [PASSED] gpu_test_buddy_alloc_range
[13:27:01] [PASSED] gpu_test_buddy_alloc_range_bias
[13:27:02] [PASSED] gpu_test_buddy_fragmentation_performance
[13:27:03] [PASSED] gpu_test_buddy_dirty_tracker_performance
[13:27:03] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[13:27:03] [PASSED] gpu_test_buddy_offset_aligned_allocation
[13:27:03] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[13:27:03] [PASSED] gpu_test_buddy_addr_to_block
[13:27:03] ==================== [PASSED] gpu_buddy ====================
[13:27:03] ============================================================
[13:27:03] Testing complete. Ran 18 tests: passed: 18
[13:27:03] Elapsed time: 26.639s total, 4.289s configuring, 20.432s building, 1.859s 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
[13:27:03] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[13:27:05] 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
[13:27:39] Starting KUnit Kernel (1/1)...
[13:27:39] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[13:27:39] ============= refcount_interrupt (4 subtests) ==============
[13:27:39] [PASSED] test_single_irq_change
[13:27:39] [PASSED] test_nested_irq_change
[13:27:39] [PASSED] test_multiple_irq_change
[13:27:39] [PASSED] test_irq_save
[13:27:39] =============== [PASSED] refcount_interrupt ================
[13:27:39] ================== guc_buf (11 subtests) ===================
[13:27:39] [PASSED] test_smallest
[13:27:39] [PASSED] test_largest
[13:27:39] [PASSED] test_granular
[13:27:39] [PASSED] test_unique
[13:27:39] [PASSED] test_overlap
[13:27:39] [PASSED] test_reusable
[13:27:39] [PASSED] test_too_big
[13:27:39] [PASSED] test_flush
[13:27:39] [PASSED] test_lookup
[13:27:39] [PASSED] test_data
[13:27:39] [PASSED] test_class
[13:27:39] ===================== [PASSED] guc_buf =====================
[13:27:39] =================== guc_dbm (7 subtests) ===================
[13:27:39] [PASSED] test_empty
[13:27:39] [PASSED] test_default
[13:27:39] ======================== test_size ========================
[13:27:39] [PASSED] 4
[13:27:39] [PASSED] 8
[13:27:39] [PASSED] 32
[13:27:39] [PASSED] 256
[13:27:39] ==================== [PASSED] test_size ====================
[13:27:39] ======================= test_reuse ========================
[13:27:39] [PASSED] 4
[13:27:39] [PASSED] 8
[13:27:39] [PASSED] 32
[13:27:39] [PASSED] 256
[13:27:39] =================== [PASSED] test_reuse ====================
[13:27:39] =================== test_range_overlap ====================
[13:27:39] [PASSED] 4
[13:27:39] [PASSED] 8
[13:27:39] [PASSED] 32
[13:27:39] [PASSED] 256
[13:27:39] =============== [PASSED] test_range_overlap ================
[13:27:39] =================== test_range_compact ====================
[13:27:39] [PASSED] 4
[13:27:39] [PASSED] 8
[13:27:39] [PASSED] 32
[13:27:39] [PASSED] 256
[13:27:39] =============== [PASSED] test_range_compact ================
[13:27:39] ==================== test_range_spare =====================
[13:27:39] [PASSED] 4
[13:27:39] [PASSED] 8
[13:27:39] [PASSED] 32
[13:27:39] [PASSED] 256
[13:27:39] ================ [PASSED] test_range_spare =================
[13:27:39] ===================== [PASSED] guc_dbm =====================
[13:27:39] =================== guc_idm (6 subtests) ===================
[13:27:39] [PASSED] bad_init
[13:27:39] [PASSED] no_init
[13:27:39] [PASSED] init_fini
[13:27:39] [PASSED] check_used
[13:27:39] [PASSED] check_quota
[13:27:39] [PASSED] check_all
[13:27:39] ===================== [PASSED] guc_idm =====================
[13:27:39] =============== guc_klv_helpers (9 subtests) ===============
[13:27:39] [PASSED] test_count
[13:27:39] [PASSED] test_encode_u32
[13:27:39] [PASSED] test_encode_u64
[13:27:39] [PASSED] test_encode_string
[13:27:39] [PASSED] test_encode_object_raw
[13:27:39] [PASSED] test_encode_object_klv
[13:27:39] [PASSED] test_encode_object_nested
[13:27:39] [PASSED] test_encode_object_basic
[13:27:39] [PASSED] test_print
[13:27:39] ================= [PASSED] guc_klv_helpers =================
[13:27:39] =================== xe_log (4 subtests) ====================
[13:27:39] [PASSED] demo_cper
[13:27:39] [PASSED] demo_dmesg
[13:27:39] ======================= test_dmesg ========================
[13:27:39] [PASSED] test_fatal
[13:27:39] [PASSED] test_fatal_tile
[13:27:39] [PASSED] test_fatal_gt
[13:27:39] [PASSED] test_fatal_comp
[13:27:39] [PASSED] test_fatal_comp_tile
[13:27:39] [PASSED] test_fatal_comp_gt
[13:27:39] [PASSED] test_fatal_all
[13:27:39] [PASSED] test_recoverable
[13:27:39] [PASSED] test_recoverable_tile
[13:27:39] [PASSED] test_recoverable_gt
[13:27:39] [PASSED] test_recoverable_comp
[13:27:39] [PASSED] test_recoverable_comp_tile
[13:27:39] [PASSED] test_recoverable_comp_gt
[13:27:39] [PASSED] test_recoverable_all
[13:27:39] [PASSED] test_info
[13:27:39] [PASSED] test_info_tile
[13:27:39] [PASSED] test_info_gt
[13:27:39] [PASSED] test_info_err
[13:27:40] [PASSED] test_info_comp
[13:27:40] [PASSED] test_info_comp_tile
[13:27:40] [PASSED] test_info_comp_gt
[13:27:40] [PASSED] test_info_all
[13:27:40] [PASSED] test_hw_fatal
[13:27:40] [PASSED] test_hw_recoverable
[13:27:40] [PASSED] test_hw_corrected
[13:27:40] [PASSED] test_hw_informational
[13:27:40] =================== [PASSED] test_dmesg ====================
[13:27:40] ====================== test_invalid =======================
[13:27:40] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG)
[13:27:40] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG)
[13:27:40] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG)
[13:27:40] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG)
[13:27:40] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG)
[13:27:40] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG)
[13:27:40] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG)
[13:27:40] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG)
[13:27:40] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG)
[13:27:40] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG)
[13:27:40] ================== [SKIPPED] test_invalid ==================
[13:27:40] ===================== [PASSED] xe_log ======================
[13:27:40] ================== no_relay (3 subtests) ===================
[13:27:40] [PASSED] xe_drops_guc2pf_if_not_ready
[13:27:40] [PASSED] xe_drops_guc2vf_if_not_ready
[13:27:40] [PASSED] xe_rejects_send_if_not_ready
[13:27:40] ==================== [PASSED] no_relay =====================
[13:27:40] ================== pf_relay (14 subtests) ==================
[13:27:40] [PASSED] pf_rejects_guc2pf_too_short
[13:27:40] [PASSED] pf_rejects_guc2pf_too_long
[13:27:40] [PASSED] pf_rejects_guc2pf_no_payload
[13:27:40] [PASSED] pf_fails_no_payload
[13:27:40] [PASSED] pf_fails_bad_origin
[13:27:40] [PASSED] pf_fails_bad_type
[13:27:40] [PASSED] pf_txn_reports_error
[13:27:40] [PASSED] pf_txn_sends_pf2guc
[13:27:40] [PASSED] pf_sends_pf2guc
[13:27:40] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[13:27:40] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[13:27:40] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[13:27:40] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[13:27:40] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[13:27:40] ==================== [PASSED] pf_relay =====================
[13:27:40] ================== vf_relay (3 subtests) ===================
[13:27:40] [PASSED] vf_rejects_guc2vf_too_short
[13:27:40] [PASSED] vf_rejects_guc2vf_too_long
[13:27:40] [PASSED] vf_rejects_guc2vf_no_payload
[13:27:40] ==================== [PASSED] vf_relay =====================
[13:27:40] ================ pf_gt_config (9 subtests) =================
[13:27:40] [PASSED] fair_contexts_1vf
[13:27:40] [PASSED] fair_doorbells_1vf
[13:27:40] [PASSED] fair_ggtt_1vf
[13:27:40] ====================== fair_vram_1vf ======================
[13:27:40] [PASSED] 3.50 GiB
[13:27:40] [PASSED] 11.5 GiB
[13:27:40] [PASSED] 15.5 GiB
[13:27:40] [PASSED] 31.5 GiB
[13:27:40] [PASSED] 63.5 GiB
[13:27:40] [PASSED] 1.91 GiB
[13:27:40] ================== [PASSED] fair_vram_1vf ==================
[13:27:40] ================ fair_vram_1vf_admin_only =================
[13:27:40] [PASSED] 3.50 GiB
[13:27:40] [PASSED] 11.5 GiB
[13:27:40] [PASSED] 15.5 GiB
[13:27:40] [PASSED] 31.5 GiB
[13:27:40] [PASSED] 63.5 GiB
[13:27:40] [PASSED] 1.91 GiB
[13:27:40] ============ [PASSED] fair_vram_1vf_admin_only =============
[13:27:40] ====================== fair_contexts ======================
[13:27:40] [PASSED] 1 VF
[13:27:40] [PASSED] 2 VFs
[13:27:40] [PASSED] 3 VFs
[13:27:40] [PASSED] 4 VFs
[13:27:40] [PASSED] 5 VFs
[13:27:40] [PASSED] 6 VFs
[13:27:40] [PASSED] 7 VFs
[13:27:40] [PASSED] 8 VFs
[13:27:40] [PASSED] 9 VFs
[13:27:40] [PASSED] 10 VFs
[13:27:40] [PASSED] 11 VFs
[13:27:40] [PASSED] 12 VFs
[13:27:40] [PASSED] 13 VFs
[13:27:40] [PASSED] 14 VFs
[13:27:40] [PASSED] 15 VFs
[13:27:40] [PASSED] 16 VFs
[13:27:40] [PASSED] 17 VFs
[13:27:40] [PASSED] 18 VFs
[13:27:40] [PASSED] 19 VFs
[13:27:40] [PASSED] 20 VFs
[13:27:40] [PASSED] 21 VFs
[13:27:40] [PASSED] 22 VFs
[13:27:40] [PASSED] 23 VFs
[13:27:40] [PASSED] 24 VFs
[13:27:40] [PASSED] 25 VFs
[13:27:40] [PASSED] 26 VFs
[13:27:40] [PASSED] 27 VFs
[13:27:40] [PASSED] 28 VFs
[13:27:40] [PASSED] 29 VFs
[13:27:40] [PASSED] 30 VFs
[13:27:40] [PASSED] 31 VFs
[13:27:40] [PASSED] 32 VFs
[13:27:40] [PASSED] 33 VFs
[13:27:40] [PASSED] 34 VFs
[13:27:40] [PASSED] 35 VFs
[13:27:40] [PASSED] 36 VFs
[13:27:40] [PASSED] 37 VFs
[13:27:40] [PASSED] 38 VFs
[13:27:40] [PASSED] 39 VFs
[13:27:40] [PASSED] 40 VFs
[13:27:40] [PASSED] 41 VFs
[13:27:40] [PASSED] 42 VFs
[13:27:40] [PASSED] 43 VFs
[13:27:40] [PASSED] 44 VFs
[13:27:40] [PASSED] 45 VFs
[13:27:40] [PASSED] 46 VFs
[13:27:40] [PASSED] 47 VFs
[13:27:40] [PASSED] 48 VFs
[13:27:40] [PASSED] 49 VFs
[13:27:40] [PASSED] 50 VFs
[13:27:40] [PASSED] 51 VFs
[13:27:40] [PASSED] 52 VFs
[13:27:40] [PASSED] 53 VFs
[13:27:40] [PASSED] 54 VFs
[13:27:40] [PASSED] 55 VFs
[13:27:40] [PASSED] 56 VFs
[13:27:40] [PASSED] 57 VFs
[13:27:40] [PASSED] 58 VFs
[13:27:40] [PASSED] 59 VFs
[13:27:40] [PASSED] 60 VFs
[13:27:40] [PASSED] 61 VFs
[13:27:40] [PASSED] 62 VFs
[13:27:40] [PASSED] 63 VFs
[13:27:40] ================== [PASSED] fair_contexts ==================
[13:27:40] ===================== fair_doorbells ======================
[13:27:40] [PASSED] 1 VF
[13:27:40] [PASSED] 2 VFs
[13:27:40] [PASSED] 3 VFs
[13:27:40] [PASSED] 4 VFs
[13:27:40] [PASSED] 5 VFs
[13:27:40] [PASSED] 6 VFs
[13:27:40] [PASSED] 7 VFs
[13:27:40] [PASSED] 8 VFs
[13:27:40] [PASSED] 9 VFs
[13:27:40] [PASSED] 10 VFs
[13:27:40] [PASSED] 11 VFs
[13:27:40] [PASSED] 12 VFs
[13:27:40] [PASSED] 13 VFs
[13:27:40] [PASSED] 14 VFs
[13:27:40] [PASSED] 15 VFs
[13:27:40] [PASSED] 16 VFs
[13:27:40] [PASSED] 17 VFs
[13:27:40] [PASSED] 18 VFs
[13:27:40] [PASSED] 19 VFs
[13:27:40] [PASSED] 20 VFs
[13:27:40] [PASSED] 21 VFs
[13:27:40] [PASSED] 22 VFs
[13:27:40] [PASSED] 23 VFs
[13:27:40] [PASSED] 24 VFs
[13:27:40] [PASSED] 25 VFs
[13:27:40] [PASSED] 26 VFs
[13:27:40] [PASSED] 27 VFs
[13:27:40] [PASSED] 28 VFs
[13:27:40] [PASSED] 29 VFs
[13:27:40] [PASSED] 30 VFs
[13:27:40] [PASSED] 31 VFs
[13:27:40] [PASSED] 32 VFs
[13:27:40] [PASSED] 33 VFs
[13:27:40] [PASSED] 34 VFs
[13:27:40] [PASSED] 35 VFs
[13:27:40] [PASSED] 36 VFs
[13:27:40] [PASSED] 37 VFs
[13:27:40] [PASSED] 38 VFs
[13:27:40] [PASSED] 39 VFs
[13:27:40] [PASSED] 40 VFs
[13:27:40] [PASSED] 41 VFs
[13:27:40] [PASSED] 42 VFs
[13:27:40] [PASSED] 43 VFs
[13:27:40] [PASSED] 44 VFs
[13:27:40] [PASSED] 45 VFs
[13:27:40] [PASSED] 46 VFs
[13:27:40] [PASSED] 47 VFs
[13:27:40] [PASSED] 48 VFs
[13:27:40] [PASSED] 49 VFs
[13:27:40] [PASSED] 50 VFs
[13:27:40] [PASSED] 51 VFs
[13:27:40] [PASSED] 52 VFs
[13:27:40] [PASSED] 53 VFs
[13:27:40] [PASSED] 54 VFs
[13:27:40] [PASSED] 55 VFs
[13:27:40] [PASSED] 56 VFs
[13:27:40] [PASSED] 57 VFs
[13:27:40] [PASSED] 58 VFs
[13:27:40] [PASSED] 59 VFs
[13:27:40] [PASSED] 60 VFs
[13:27:40] [PASSED] 61 VFs
[13:27:40] [PASSED] 62 VFs
[13:27:40] [PASSED] 63 VFs
[13:27:40] ================= [PASSED] fair_doorbells ==================
[13:27:40] ======================== fair_ggtt ========================
[13:27:40] [PASSED] 1 VF
[13:27:40] [PASSED] 2 VFs
[13:27:40] [PASSED] 3 VFs
[13:27:40] [PASSED] 4 VFs
[13:27:40] [PASSED] 5 VFs
[13:27:40] [PASSED] 6 VFs
[13:27:40] [PASSED] 7 VFs
[13:27:40] [PASSED] 8 VFs
[13:27:40] [PASSED] 9 VFs
[13:27:40] [PASSED] 10 VFs
[13:27:40] [PASSED] 11 VFs
[13:27:40] [PASSED] 12 VFs
[13:27:40] [PASSED] 13 VFs
[13:27:40] [PASSED] 14 VFs
[13:27:40] [PASSED] 15 VFs
[13:27:40] [PASSED] 16 VFs
[13:27:40] [PASSED] 17 VFs
[13:27:40] [PASSED] 18 VFs
[13:27:40] [PASSED] 19 VFs
[13:27:40] [PASSED] 20 VFs
[13:27:40] [PASSED] 21 VFs
[13:27:40] [PASSED] 22 VFs
[13:27:40] [PASSED] 23 VFs
[13:27:40] [PASSED] 24 VFs
[13:27:40] [PASSED] 25 VFs
[13:27:40] [PASSED] 26 VFs
[13:27:40] [PASSED] 27 VFs
[13:27:40] [PASSED] 28 VFs
[13:27:40] [PASSED] 29 VFs
[13:27:40] [PASSED] 30 VFs
[13:27:40] [PASSED] 31 VFs
[13:27:40] [PASSED] 32 VFs
[13:27:40] [PASSED] 33 VFs
[13:27:40] [PASSED] 34 VFs
[13:27:40] [PASSED] 35 VFs
[13:27:40] [PASSED] 36 VFs
[13:27:40] [PASSED] 37 VFs
[13:27:40] [PASSED] 38 VFs
[13:27:40] [PASSED] 39 VFs
[13:27:40] [PASSED] 40 VFs
[13:27:40] [PASSED] 41 VFs
[13:27:40] [PASSED] 42 VFs
[13:27:40] [PASSED] 43 VFs
[13:27:40] [PASSED] 44 VFs
[13:27:40] [PASSED] 45 VFs
[13:27:40] [PASSED] 46 VFs
[13:27:40] [PASSED] 47 VFs
[13:27:40] [PASSED] 48 VFs
[13:27:40] [PASSED] 49 VFs
[13:27:40] [PASSED] 50 VFs
[13:27:40] [PASSED] 51 VFs
[13:27:40] [PASSED] 52 VFs
[13:27:40] [PASSED] 53 VFs
[13:27:40] [PASSED] 54 VFs
[13:27:40] [PASSED] 55 VFs
[13:27:40] [PASSED] 56 VFs
[13:27:40] [PASSED] 57 VFs
[13:27:40] [PASSED] 58 VFs
[13:27:40] [PASSED] 59 VFs
[13:27:40] [PASSED] 60 VFs
[13:27:40] [PASSED] 61 VFs
[13:27:40] [PASSED] 62 VFs
[13:27:40] [PASSED] 63 VFs
[13:27:40] ==================== [PASSED] fair_ggtt ====================
[13:27:40] ======================== fair_vram ========================
[13:27:40] [PASSED] 1 VF
[13:27:40] [PASSED] 2 VFs
[13:27:40] [PASSED] 3 VFs
[13:27:40] [PASSED] 4 VFs
[13:27:40] [PASSED] 5 VFs
[13:27:40] [PASSED] 6 VFs
[13:27:40] [PASSED] 7 VFs
[13:27:40] [PASSED] 8 VFs
[13:27:40] [PASSED] 9 VFs
[13:27:40] [PASSED] 10 VFs
[13:27:40] [PASSED] 11 VFs
[13:27:40] [PASSED] 12 VFs
[13:27:40] [PASSED] 13 VFs
[13:27:40] [PASSED] 14 VFs
[13:27:40] [PASSED] 15 VFs
[13:27:40] [PASSED] 16 VFs
[13:27:40] [PASSED] 17 VFs
[13:27:40] [PASSED] 18 VFs
[13:27:40] [PASSED] 19 VFs
[13:27:40] [PASSED] 20 VFs
[13:27:40] [PASSED] 21 VFs
[13:27:40] [PASSED] 22 VFs
[13:27:40] [PASSED] 23 VFs
[13:27:40] [PASSED] 24 VFs
[13:27:40] [PASSED] 25 VFs
[13:27:40] [PASSED] 26 VFs
[13:27:40] [PASSED] 27 VFs
[13:27:40] [PASSED] 28 VFs
[13:27:40] [PASSED] 29 VFs
[13:27:40] [PASSED] 30 VFs
[13:27:40] [PASSED] 31 VFs
[13:27:40] [PASSED] 32 VFs
[13:27:40] [PASSED] 33 VFs
[13:27:40] [PASSED] 34 VFs
[13:27:40] [PASSED] 35 VFs
[13:27:40] [PASSED] 36 VFs
[13:27:40] [PASSED] 37 VFs
[13:27:40] [PASSED] 38 VFs
[13:27:40] [PASSED] 39 VFs
[13:27:40] [PASSED] 40 VFs
[13:27:40] [PASSED] 41 VFs
[13:27:40] [PASSED] 42 VFs
[13:27:40] [PASSED] 43 VFs
[13:27:40] [PASSED] 44 VFs
[13:27:40] [PASSED] 45 VFs
[13:27:40] [PASSED] 46 VFs
[13:27:40] [PASSED] 47 VFs
[13:27:40] [PASSED] 48 VFs
[13:27:40] [PASSED] 49 VFs
[13:27:40] [PASSED] 50 VFs
[13:27:40] [PASSED] 51 VFs
[13:27:40] [PASSED] 52 VFs
[13:27:40] [PASSED] 53 VFs
[13:27:40] [PASSED] 54 VFs
[13:27:40] [PASSED] 55 VFs
[13:27:40] [PASSED] 56 VFs
[13:27:40] [PASSED] 57 VFs
[13:27:40] [PASSED] 58 VFs
[13:27:40] [PASSED] 59 VFs
[13:27:40] [PASSED] 60 VFs
[13:27:40] [PASSED] 61 VFs
[13:27:40] [PASSED] 62 VFs
[13:27:40] [PASSED] 63 VFs
[13:27:40] ==================== [PASSED] fair_vram ====================
[13:27:40] ================== [PASSED] pf_gt_config ===================
[13:27:40] ===================== lmtt (1 subtest) =====================
[13:27:40] ======================== test_ops =========================
[13:27:40] [PASSED] 2-level
[13:27:40] [PASSED] multi-level
[13:27:40] ==================== [PASSED] test_ops =====================
[13:27:40] ====================== [PASSED] lmtt =======================
[13:27:40] ================= sriov_packet (1 subtest) =================
[13:27:40] [PASSED] test_descriptor_init
[13:27:40] ================== [PASSED] sriov_packet ===================
[13:27:40] ================= pf_service (11 subtests) =================
[13:27:40] [PASSED] pf_negotiate_any
[13:27:40] [PASSED] pf_negotiate_base_match
[13:27:40] [PASSED] pf_negotiate_base_newer
[13:27:40] [PASSED] pf_negotiate_base_next
[13:27:40] [SKIPPED] pf_negotiate_base_older (no older minor)
[13:27:40] [PASSED] pf_negotiate_base_prev
[13:27:40] [PASSED] pf_negotiate_latest_match
[13:27:40] [PASSED] pf_negotiate_latest_newer
[13:27:40] [PASSED] pf_negotiate_latest_next
[13:27:40] [SKIPPED] pf_negotiate_latest_older (no older minor)
[13:27:40] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[13:27:40] =================== [PASSED] pf_service ====================
[13:27:40] ================= xe_guc_g2g (2 subtests) ==================
[13:27:40] ============== xe_live_guc_g2g_kunit_default ==============
[13:27:40] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[13:27:40] ============== xe_live_guc_g2g_kunit_allmem ===============
[13:27:40] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[13:27:40] =================== [SKIPPED] xe_guc_g2g ===================
[13:27:40] =================== xe_mocs (2 subtests) ===================
[13:27:40] ================ xe_live_mocs_kernel_kunit ================
[13:27:40] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[13:27:40] ================ xe_live_mocs_reset_kunit =================
[13:27:40] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[13:27:40] ==================== [SKIPPED] xe_mocs =====================
[13:27:40] ================= xe_migrate (2 subtests) ==================
[13:27:40] ================= xe_migrate_sanity_kunit =================
[13:27:40] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[13:27:40] ================== xe_validate_ccs_kunit ==================
[13:27:40] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[13:27:40] =================== [SKIPPED] xe_migrate ===================
[13:27:40] ================== xe_dma_buf (1 subtest) ==================
[13:27:40] ==================== xe_dma_buf_kunit =====================
[13:27:40] ================ [SKIPPED] xe_dma_buf_kunit ================
[13:27:40] =================== [SKIPPED] xe_dma_buf ===================
[13:27:40] ================= xe_bo_shrink (1 subtest) =================
[13:27:40] =================== xe_bo_shrink_kunit ====================
[13:27:40] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[13:27:40] ================== [SKIPPED] xe_bo_shrink ==================
[13:27:40] ==================== xe_bo (2 subtests) ====================
[13:27:40] ================== xe_ccs_migrate_kunit ===================
[13:27:40] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[13:27:40] ==================== xe_bo_evict_kunit ====================
[13:27:40] =============== [SKIPPED] xe_bo_evict_kunit ================
[13:27:40] ===================== [SKIPPED] xe_bo ======================
[13:27:40] =================== xe_any (9 subtests) ====================
[13:27:40] [PASSED] test_to_xe
[13:27:40] [PASSED] test_to_dev
[13:27:40] [PASSED] test_to_pdev
[13:27:40] [PASSED] test_to_drm
[13:27:40] [PASSED] test_if_pdev
[13:27:40] [PASSED] test_if_xe
[13:27:40] [PASSED] test_if_tile
[13:27:40] [PASSED] test_if_gt
[13:27:40] [PASSED] test_to_id
[13:27:40] ===================== [PASSED] xe_any ======================
[13:27:40] ==================== args (13 subtests) ====================
[13:27:40] [PASSED] count_args_test
[13:27:40] [PASSED] call_args_example
[13:27:40] [PASSED] call_args_test
[13:27:40] [PASSED] drop_first_arg_example
[13:27:40] [PASSED] drop_first_arg_test
[13:27:40] [PASSED] first_arg_example
[13:27:40] [PASSED] first_arg_test
[13:27:40] [PASSED] last_arg_example
[13:27:40] [PASSED] last_arg_test
[13:27:40] [PASSED] pick_arg_example
[13:27:40] [PASSED] if_args_example
[13:27:40] [PASSED] if_args_test
[13:27:40] [PASSED] sep_comma_example
[13:27:40] ====================== [PASSED] args =======================
[13:27:40] =================== xe_pci (3 subtests) ====================
[13:27:40] ==================== check_graphics_ip ====================
[13:27:40] [PASSED] 12.00 Xe_LP
[13:27:40] [PASSED] 12.10 Xe_LP+
[13:27:40] [PASSED] 12.55 Xe_HPG
[13:27:40] [PASSED] 12.60 Xe_HPC
[13:27:40] [PASSED] 12.70 Xe_LPG
[13:27:40] [PASSED] 12.71 Xe_LPG
[13:27:40] [PASSED] 12.74 Xe_LPG+
[13:27:40] [PASSED] 20.01 Xe2_HPG
[13:27:40] [PASSED] 20.02 Xe2_HPG
[13:27:40] [PASSED] 20.04 Xe2_LPG
[13:27:40] [PASSED] 30.00 Xe3_LPG
[13:27:40] [PASSED] 30.01 Xe3_LPG
[13:27:40] [PASSED] 30.03 Xe3_LPG
[13:27:40] [PASSED] 30.04 Xe3_LPG
[13:27:40] [PASSED] 30.05 Xe3_LPG
[13:27:40] [PASSED] 35.10 Xe3p_LPG
[13:27:40] [PASSED] 35.11 Xe3p_XPC
[13:27:40] ================ [PASSED] check_graphics_ip ================
[13:27:40] ===================== check_media_ip ======================
[13:27:40] [PASSED] 12.00 Xe_M
[13:27:40] [PASSED] 12.55 Xe_HPM
[13:27:40] [PASSED] 13.00 Xe_LPM+
[13:27:40] [PASSED] 13.01 Xe2_HPM
[13:27:40] [PASSED] 20.00 Xe2_LPM
[13:27:40] [PASSED] 30.00 Xe3_LPM
[13:27:40] [PASSED] 30.02 Xe3_LPM
[13:27:40] [PASSED] 35.00 Xe3p_LPM
[13:27:40] [PASSED] 35.03 Xe3p_HPM
[13:27:40] ================= [PASSED] check_media_ip ==================
[13:27:40] =================== check_platform_desc ===================
[13:27:40] [PASSED] 0x9A60 (TIGERLAKE)
[13:27:40] [PASSED] 0x9A68 (TIGERLAKE)
[13:27:40] [PASSED] 0x9A70 (TIGERLAKE)
[13:27:40] [PASSED] 0x9A40 (TIGERLAKE)
[13:27:40] [PASSED] 0x9A49 (TIGERLAKE)
[13:27:40] [PASSED] 0x9A59 (TIGERLAKE)
[13:27:40] [PASSED] 0x9A78 (TIGERLAKE)
[13:27:40] [PASSED] 0x9AC0 (TIGERLAKE)
[13:27:40] [PASSED] 0x9AC9 (TIGERLAKE)
[13:27:40] [PASSED] 0x9AD9 (TIGERLAKE)
[13:27:40] [PASSED] 0x9AF8 (TIGERLAKE)
[13:27:40] [PASSED] 0x4C80 (ROCKETLAKE)
[13:27:40] [PASSED] 0x4C8A (ROCKETLAKE)
[13:27:40] [PASSED] 0x4C8B (ROCKETLAKE)
[13:27:40] [PASSED] 0x4C8C (ROCKETLAKE)
[13:27:40] [PASSED] 0x4C90 (ROCKETLAKE)
[13:27:40] [PASSED] 0x4C9A (ROCKETLAKE)
[13:27:40] [PASSED] 0x4680 (ALDERLAKE_S)
[13:27:40] [PASSED] 0x4682 (ALDERLAKE_S)
[13:27:40] [PASSED] 0x4688 (ALDERLAKE_S)
[13:27:40] [PASSED] 0x468A (ALDERLAKE_S)
[13:27:40] [PASSED] 0x468B (ALDERLAKE_S)
[13:27:40] [PASSED] 0x4690 (ALDERLAKE_S)
[13:27:40] [PASSED] 0x4692 (ALDERLAKE_S)
[13:27:40] [PASSED] 0x4693 (ALDERLAKE_S)
[13:27:40] [PASSED] 0x46A0 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46A1 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46A2 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46A3 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46A6 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46A8 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46AA (ALDERLAKE_P)
[13:27:40] [PASSED] 0x462A (ALDERLAKE_P)
[13:27:40] [PASSED] 0x4626 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x4628 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46B0 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46B1 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46B2 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46B3 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46C0 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46C1 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46C2 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46C3 (ALDERLAKE_P)
[13:27:40] [PASSED] 0x46D0 (ALDERLAKE_N)
[13:27:40] [PASSED] 0x46D1 (ALDERLAKE_N)
[13:27:40] [PASSED] 0x46D2 (ALDERLAKE_N)
[13:27:40] [PASSED] 0x46D3 (ALDERLAKE_N)
[13:27:40] [PASSED] 0x46D4 (ALDERLAKE_N)
[13:27:40] [PASSED] 0xA721 (ALDERLAKE_P)
[13:27:40] [PASSED] 0xA7A1 (ALDERLAKE_P)
[13:27:40] [PASSED] 0xA7A9 (ALDERLAKE_P)
[13:27:40] [PASSED] 0xA7AC (ALDERLAKE_P)
[13:27:40] [PASSED] 0xA7AD (ALDERLAKE_P)
[13:27:40] [PASSED] 0xA720 (ALDERLAKE_P)
[13:27:40] [PASSED] 0xA7A0 (ALDERLAKE_P)
[13:27:40] [PASSED] 0xA7A8 (ALDERLAKE_P)
[13:27:40] [PASSED] 0xA7AA (ALDERLAKE_P)
[13:27:40] [PASSED] 0xA7AB (ALDERLAKE_P)
[13:27:40] [PASSED] 0xA780 (ALDERLAKE_S)
[13:27:40] [PASSED] 0xA781 (ALDERLAKE_S)
[13:27:40] [PASSED] 0xA782 (ALDERLAKE_S)
[13:27:40] [PASSED] 0xA783 (ALDERLAKE_S)
[13:27:40] [PASSED] 0xA788 (ALDERLAKE_S)
[13:27:40] [PASSED] 0xA789 (ALDERLAKE_S)
[13:27:40] [PASSED] 0xA78A (ALDERLAKE_S)
[13:27:40] [PASSED] 0xA78B (ALDERLAKE_S)
[13:27:40] [PASSED] 0x4905 (DG1)
[13:27:40] [PASSED] 0x4906 (DG1)
[13:27:40] [PASSED] 0x4907 (DG1)
[13:27:40] [PASSED] 0x4908 (DG1)
[13:27:40] [PASSED] 0x4909 (DG1)
[13:27:40] [PASSED] 0x56C0 (DG2)
[13:27:40] [PASSED] 0x56C2 (DG2)
[13:27:40] [PASSED] 0x56C1 (DG2)
[13:27:40] [PASSED] 0x7D51 (METEORLAKE)
[13:27:40] [PASSED] 0x7DD1 (METEORLAKE)
[13:27:40] [PASSED] 0x7D41 (METEORLAKE)
[13:27:40] [PASSED] 0x7D67 (METEORLAKE)
[13:27:40] [PASSED] 0xB640 (METEORLAKE)
[13:27:40] [PASSED] 0x56A0 (DG2)
[13:27:40] [PASSED] 0x56A1 (DG2)
[13:27:40] [PASSED] 0x56A2 (DG2)
[13:27:40] [PASSED] 0x56BE (DG2)
[13:27:40] [PASSED] 0x56BF (DG2)
[13:27:40] [PASSED] 0x5690 (DG2)
[13:27:40] [PASSED] 0x5691 (DG2)
[13:27:40] [PASSED] 0x5692 (DG2)
[13:27:40] [PASSED] 0x56A5 (DG2)
[13:27:40] [PASSED] 0x56A6 (DG2)
[13:27:40] [PASSED] 0x56B0 (DG2)
[13:27:40] [PASSED] 0x56B1 (DG2)
[13:27:40] [PASSED] 0x56BA (DG2)
[13:27:40] [PASSED] 0x56BB (DG2)
[13:27:40] [PASSED] 0x56BC (DG2)
[13:27:40] [PASSED] 0x56BD (DG2)
[13:27:40] [PASSED] 0x5693 (DG2)
[13:27:40] [PASSED] 0x5694 (DG2)
[13:27:40] [PASSED] 0x5695 (DG2)
[13:27:40] [PASSED] 0x56A3 (DG2)
[13:27:40] [PASSED] 0x56A4 (DG2)
[13:27:40] [PASSED] 0x56B2 (DG2)
[13:27:40] [PASSED] 0x56B3 (DG2)
[13:27:40] [PASSED] 0x5696 (DG2)
[13:27:40] [PASSED] 0x5697 (DG2)
[13:27:40] [PASSED] 0xB69 (PVC)
[13:27:40] [PASSED] 0xB6E (PVC)
[13:27:40] [PASSED] 0xBD4 (PVC)
[13:27:40] [PASSED] 0xBD5 (PVC)
[13:27:40] [PASSED] 0xBD6 (PVC)
[13:27:40] [PASSED] 0xBD7 (PVC)
[13:27:40] [PASSED] 0xBD8 (PVC)
[13:27:40] [PASSED] 0xBD9 (PVC)
[13:27:40] [PASSED] 0xBDA (PVC)
[13:27:40] [PASSED] 0xBDB (PVC)
[13:27:40] [PASSED] 0xBE0 (PVC)
[13:27:40] [PASSED] 0xBE1 (PVC)
[13:27:40] [PASSED] 0xBE5 (PVC)
[13:27:40] [PASSED] 0x7D40 (METEORLAKE)
[13:27:40] [PASSED] 0x7D45 (METEORLAKE)
[13:27:40] [PASSED] 0x7D55 (METEORLAKE)
[13:27:40] [PASSED] 0x7D60 (METEORLAKE)
[13:27:40] [PASSED] 0x7DD5 (METEORLAKE)
[13:27:40] [PASSED] 0x6420 (LUNARLAKE)
[13:27:40] [PASSED] 0x64A0 (LUNARLAKE)
[13:27:40] [PASSED] 0x64B0 (LUNARLAKE)
[13:27:40] [PASSED] 0xE202 (BATTLEMAGE)
[13:27:40] [PASSED] 0xE209 (BATTLEMAGE)
[13:27:40] [PASSED] 0xE20B (BATTLEMAGE)
[13:27:40] [PASSED] 0xE20C (BATTLEMAGE)
[13:27:40] [PASSED] 0xE20D (BATTLEMAGE)
[13:27:40] [PASSED] 0xE210 (BATTLEMAGE)
[13:27:40] [PASSED] 0xE211 (BATTLEMAGE)
[13:27:40] [PASSED] 0xE212 (BATTLEMAGE)
[13:27:40] [PASSED] 0xE216 (BATTLEMAGE)
[13:27:40] [PASSED] 0xE220 (BATTLEMAGE)
[13:27:40] [PASSED] 0xE221 (BATTLEMAGE)
[13:27:40] [PASSED] 0xE222 (BATTLEMAGE)
[13:27:40] [PASSED] 0xE223 (BATTLEMAGE)
[13:27:40] [PASSED] 0xB080 (PANTHERLAKE)
[13:27:40] [PASSED] 0xB081 (PANTHERLAKE)
[13:27:40] [PASSED] 0xB082 (PANTHERLAKE)
[13:27:40] [PASSED] 0xB083 (PANTHERLAKE)
[13:27:40] [PASSED] 0xB084 (PANTHERLAKE)
[13:27:40] [PASSED] 0xB085 (PANTHERLAKE)
[13:27:40] [PASSED] 0xB086 (PANTHERLAKE)
[13:27:40] [PASSED] 0xB087 (PANTHERLAKE)
[13:27:40] [PASSED] 0xB08F (PANTHERLAKE)
[13:27:40] [PASSED] 0xB090 (PANTHERLAKE)
[13:27:40] [PASSED] 0xB0A0 (PANTHERLAKE)
[13:27:40] [PASSED] 0xB0B0 (PANTHERLAKE)
[13:27:40] [PASSED] 0xFD80 (PANTHERLAKE)
[13:27:40] [PASSED] 0xFD81 (PANTHERLAKE)
[13:27:40] [PASSED] 0xD740 (NOVALAKE_S)
[13:27:40] [PASSED] 0xD741 (NOVALAKE_S)
[13:27:40] [PASSED] 0xD742 (NOVALAKE_S)
[13:27:40] [PASSED] 0xD743 (NOVALAKE_S)
[13:27:40] [PASSED] 0xD745 (NOVALAKE_S)
[13:27:40] [PASSED] 0xD74A (NOVALAKE_S)
[13:27:40] [PASSED] 0xD74B (NOVALAKE_S)
[13:27:40] [PASSED] 0x674C (CRESCENTISLAND)
[13:27:40] [PASSED] 0x674D (CRESCENTISLAND)
[13:27:40] [PASSED] 0x674E (CRESCENTISLAND)
[13:27:40] [PASSED] 0x674F (CRESCENTISLAND)
[13:27:40] [PASSED] 0x6750 (CRESCENTISLAND)
[13:27:40] [PASSED] 0xD750 (NOVALAKE_P)
[13:27:40] [PASSED] 0xD751 (NOVALAKE_P)
[13:27:40] [PASSED] 0xD752 (NOVALAKE_P)
[13:27:40] [PASSED] 0xD753 (NOVALAKE_P)
[13:27:40] [PASSED] 0xD754 (NOVALAKE_P)
[13:27:40] [PASSED] 0xD755 (NOVALAKE_P)
[13:27:40] [PASSED] 0xD756 (NOVALAKE_P)
[13:27:40] [PASSED] 0xD757 (NOVALAKE_P)
[13:27:40] [PASSED] 0xD75F (NOVALAKE_P)
[13:27:40] =============== [PASSED] check_platform_desc ===============
[13:27:40] ===================== [PASSED] xe_pci ======================
[13:27:40] ============= xe_rtp_tables_test (5 subtests) ==============
[13:27:40] ================== xe_rtp_table_gt_test ===================
[13:27:40] [PASSED] gt_was/14011060649
[13:27:40] [PASSED] gt_was/14011059788
[13:27:40] [PASSED] gt_was/14015795083
[13:27:40] [PASSED] gt_was/16021867713
[13:27:40] [PASSED] gt_was/14019449301
[13:27:40] [PASSED] gt_was/16028005424
[13:27:40] [PASSED] gt_was/14026578760
[13:27:40] [PASSED] gt_was/1409420604
[13:27:40] [PASSED] gt_was/1408615072
[13:27:40] [PASSED] gt_was/22010523718
[13:27:40] [PASSED] gt_was/14011006942
[13:27:40] [PASSED] gt_was/14014830051
[13:27:40] [PASSED] gt_was/18018781329
[13:27:40] [PASSED] gt_was/1509235366
[13:27:40] [PASSED] gt_was/18018781329
[13:27:40] [PASSED] gt_was/16016694945
[13:27:40] [PASSED] gt_was/14018575942
[13:27:40] [PASSED] gt_was/22016670082
[13:27:40] [PASSED] gt_was/22016670082
[13:27:40] [PASSED] gt_was/14017421178
[13:27:40] [PASSED] gt_was/16025250150
[13:27:40] [PASSED] gt_was/14021871409
[13:27:40] [PASSED] gt_was/16021865536
[13:27:40] [PASSED] gt_was/14021486841
[13:27:40] [PASSED] gt_was/14025160223
[13:27:40] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[13:27:40] [PASSED] gt_was/14025635424
[13:27:40] [PASSED] gt_was/16028005424
[13:27:40] ============== [PASSED] xe_rtp_table_gt_test ===============
[13:27:40] ================== xe_rtp_table_gt_test ===================
[13:27:40] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[13:27:40] [PASSED] gt_tunings/Tuning: 32B Access Enable
[13:27:40] [PASSED] gt_tunings/Tuning: L3 cache
[13:27:40] [PASSED] gt_tunings/Tuning: L3 cache - media
[13:27:40] [PASSED] gt_tunings/Tuning: Compression Overfetch
[13:27:40] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[13:27:40] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[13:27:40] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[13:27:40] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[13:27:40] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[13:27:40] [PASSED] gt_tunings/Tuning: Stateless compression control
[13:27:40] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[13:27:40] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[13:27:40] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[13:27:40] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[13:27:40] ============== [PASSED] xe_rtp_table_gt_test ===============
[13:27:40] ================== xe_rtp_table_oob_test ==================
[13:27:40] [PASSED] oob_was/1607983814
[13:27:40] [PASSED] oob_was/16010904313
[13:27:40] [PASSED] oob_was/18022495364
[13:27:40] [PASSED] oob_was/22012773006
[13:27:40] [PASSED] oob_was/14014475959
[13:27:40] [PASSED] oob_was/22011391025
[13:27:40] [PASSED] oob_was/22012727170
[13:27:40] [PASSED] oob_was/22012727685
[13:27:40] [PASSED] oob_was/22016596838
[13:27:40] [PASSED] oob_was/18020744125
[13:27:40] [PASSED] oob_was/1409600907
[13:27:40] [PASSED] oob_was/22014953428
[13:27:40] [PASSED] oob_was/16017236439
[13:27:40] [PASSED] oob_was/14019821291
[13:27:40] [PASSED] oob_was/14015076503
[13:27:40] [PASSED] oob_was/14018913170
[13:27:40] [PASSED] oob_was/14018094691
[13:27:40] [PASSED] oob_was/18024947630
[13:27:40] [PASSED] oob_was/16022287689
[13:27:40] [PASSED] oob_was/13011645652
[13:27:40] [PASSED] oob_was/14022293748
[13:27:40] [PASSED] oob_was/22019794406
[13:27:40] [PASSED] oob_was/22019338487
[13:27:40] [PASSED] oob_was/16023588340
[13:27:40] [PASSED] oob_was/14019789679
[13:27:40] [PASSED] oob_was/14022866841
[13:27:40] [PASSED] oob_was/16021333562
[13:27:40] [PASSED] oob_was/14016712196
[13:27:40] [PASSED] oob_was/14015568240
[13:27:40] [PASSED] oob_was/18013179988
[13:27:40] [PASSED] oob_was/1508761755
[13:27:40] [PASSED] oob_was/16023105232
[13:27:40] [PASSED] oob_was/16026508708
[13:27:40] [PASSED] oob_was/14020001231
[13:27:40] [PASSED] oob_was/16023683509
[13:27:40] [PASSED] oob_was/14025515070
[13:27:40] [PASSED] oob_was/15015404425_disable
[13:27:40] [PASSED] oob_was/16026007364
[13:27:40] [PASSED] oob_was/14020316580
[13:27:40] [PASSED] oob_was/14025883347
[13:27:40] [PASSED] oob_was/16029380221
[13:27:40] [PASSED] oob_was/22022079272
[13:27:40] [PASSED] oob_was/16029897822
[13:27:40] [PASSED] oob_was/14027054324
[13:27:40] ============== [PASSED] xe_rtp_table_oob_test ==============
[13:27:40] ================ xe_rtp_table_dev_oob_test ================
[13:27:40] [PASSED] device_oob_was/22010954014
[13:27:40] [PASSED] device_oob_was/15015404425
[13:27:40] [PASSED] device_oob_was/22019338487_display
[13:27:40] [PASSED] device_oob_was/14022085890
[13:27:40] [PASSED] device_oob_was/14026539277
[13:27:40] [PASSED] device_oob_was/14026633728
[13:27:40] [PASSED] device_oob_was/14026746987
[13:27:40] [PASSED] device_oob_was/14026779378
[13:27:40] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[13:27:40] ========== xe_rtp_table_missing_upper_bound_test ==========
[13:27:40] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[13:27:40] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[13:27:40] [PASSED] register_whitelist/1806527549
[13:27:40] [PASSED] register_whitelist/allow_read_ctx_timestamp
[13:27:40] [PASSED] register_whitelist/allow_read_queue_timestamp
[13:27:40] [PASSED] register_whitelist/16014440446
[13:27:40] [PASSED] register_whitelist/16017236439
[13:27:40] [PASSED] register_whitelist/16020183090
[13:27:40] [PASSED] register_whitelist/14024997852
[13:27:40] [PASSED] register_whitelist/14024997852
[13:27:40] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[13:27:40] =============== [PASSED] xe_rtp_tables_test ================
[13:27:40] =================== xe_rtp (3 subtests) ====================
[13:27:40] =================== xe_rtp_rules_tests ====================
[13:27:40] [PASSED] no
[13:27:40] [PASSED] yes
[13:27:40] [PASSED] no-and-no
[13:27:40] [PASSED] no-and-yes
[13:27:40] [PASSED] yes-and-no
[13:27:40] [PASSED] yes-and-yes
[13:27:40] [PASSED] no-or-no
[13:27:40] [PASSED] no-or-yes
[13:27:40] [PASSED] yes-or-no
[13:27:40] [PASSED] yes-or-yes
[13:27:40] [PASSED] no-yes-or-yes-no
[13:27:40] [PASSED] no-yes-or-yes-yes
[13:27:40] [PASSED] yes-yes-or-no-yes
[13:27:40] [PASSED] yes-yes-or-yes-yes
[13:27:40] [PASSED] no-no-or-yes-or-no
[13:27:40] [PASSED] or
[13:27:40] [PASSED] or-yes
[13:27:40] [PASSED] or-no
[13:27:40] [PASSED] yes-or
[13:27:40] [PASSED] no-or
[13:27:40] [PASSED] no-or-or-yes
[13:27:40] [PASSED] yes-or-or-no
[13:27:40] [PASSED] no-or-or-no
[13:27:40] [PASSED] missing-context-engine-class
[13:27:40] [PASSED] missing-context-engine-class-or-yes
[13:27:40] [PASSED] missing-context-engine-class-or-or-yes
[13:27:40] =============== [PASSED] xe_rtp_rules_tests ================
[13:27:40] =============== xe_rtp_process_to_sr_tests ================
[13:27:40] [PASSED] coalesce-same-reg
[13:27:40] [PASSED] coalesce-same-reg-literal-and-func
[13:27:40] [PASSED] no-match-no-add
[13:27:40] [PASSED] two-regs-two-entries
[13:27:40] [PASSED] clr-one-set-other
[13:27:40] [PASSED] set-field
[13:27:40] [PASSED] conflict-duplicate
[13:27:40] [PASSED] conflict-not-disjoint
[13:27:40] [PASSED] conflict-not-disjoint-literal-and-func
[13:27:40] [PASSED] conflict-reg-type
[13:27:40] [PASSED] bad-mcr-reg-forced-to-regular
[13:27:40] [PASSED] bad-regular-reg-forced-to-mcr
[13:27:40] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[13:27:40] ================== xe_rtp_process_tests ===================
[13:27:40] [PASSED] active1
[13:27:40] [PASSED] active2
[13:27:40] [PASSED] active-inactive
[13:27:40] [PASSED] inactive-active
[13:27:40] [PASSED] inactive-active-inactive
[13:27:40] [PASSED] inactive-inactive-inactive
[13:27:40] ============== [PASSED] xe_rtp_process_tests ===============
[13:27:40] ===================== [PASSED] xe_rtp ======================
[13:27:40] ==================== xe_wa (1 subtest) =====================
[13:27:40] ======================== xe_wa_gt =========================
[13:27:40] [PASSED] TIGERLAKE B0
[13:27:40] [PASSED] DG1 A0
[13:27:40] [PASSED] DG1 B0
[13:27:40] [PASSED] ALDERLAKE_S A0
[13:27:40] [PASSED] ALDERLAKE_S B0
[13:27:40] [PASSED] ALDERLAKE_S C0
[13:27:40] [PASSED] ALDERLAKE_S D0
[13:27:40] [PASSED] ALDERLAKE_P A0
[13:27:40] [PASSED] ALDERLAKE_P B0
[13:27:40] [PASSED] ALDERLAKE_P C0
[13:27:40] [PASSED] ALDERLAKE_S RPLS D0
[13:27:40] [PASSED] ALDERLAKE_P RPLU E0
[13:27:40] [PASSED] DG2 G10 C0
[13:27:40] [PASSED] DG2 G11 B1
[13:27:40] [PASSED] DG2 G12 A1
[13:27:40] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[13:27:40] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[13:27:40] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[13:27:40] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[13:27:40] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[13:27:40] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[13:27:40] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[13:27:40] ==================== [PASSED] xe_wa_gt =====================
[13:27:40] ====================== [PASSED] xe_wa ======================
[13:27:40] ============================================================
[13:27:40] Testing complete. Ran 793 tests: passed: 765, skipped: 28
[13:27:40] Elapsed time: 36.810s total, 1.822s configuring, 34.271s building, 0.697s 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
[13:27:40] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[13:27:42] 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
[13:28:07] Starting KUnit Kernel (1/1)...
[13:28:07] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[13:28:07] ============= refcount_interrupt (4 subtests) ==============
[13:28:07] [PASSED] test_single_irq_change
[13:28:07] [PASSED] test_nested_irq_change
[13:28:07] [PASSED] test_multiple_irq_change
[13:28:07] [PASSED] test_irq_save
[13:28:07] =============== [PASSED] refcount_interrupt ================
[13:28:07] ============ drm_test_pick_cmdline (2 subtests) ============
[13:28:07] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[13:28:07] =============== drm_test_pick_cmdline_named ===============
[13:28:07] [PASSED] NTSC
[13:28:07] [PASSED] NTSC-J
[13:28:07] [PASSED] PAL
[13:28:07] [PASSED] PAL-M
[13:28:07] =========== [PASSED] drm_test_pick_cmdline_named ===========
[13:28:07] ============== [PASSED] drm_test_pick_cmdline ==============
[13:28:07] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[13:28:07] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[13:28:07] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[13:28:07] =========== drm_validate_clone_mode (2 subtests) ===========
[13:28:07] ============== drm_test_check_in_clone_mode ===============
[13:28:07] [PASSED] in_clone_mode
[13:28:07] [PASSED] not_in_clone_mode
[13:28:07] ========== [PASSED] drm_test_check_in_clone_mode ===========
[13:28:07] =============== drm_test_check_valid_clones ===============
[13:28:07] [PASSED] not_in_clone_mode
[13:28:07] [PASSED] valid_clone
[13:28:07] [PASSED] invalid_clone
[13:28:07] =========== [PASSED] drm_test_check_valid_clones ===========
[13:28:07] ============= [PASSED] drm_validate_clone_mode =============
[13:28:07] ============= drm_validate_modeset (1 subtest) =============
[13:28:07] [PASSED] drm_test_check_connector_changed_modeset
[13:28:07] ============== [PASSED] drm_validate_modeset ===============
[13:28:07] ====== drm_test_bridge_get_current_state (1 subtest) =======
[13:28:07] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[13:28:07] ======== [PASSED] drm_test_bridge_get_current_state ========
[13:28:07] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[13:28:07] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[13:28:07] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[13:28:07] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[13:28:07] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[13:28:07] ============== drm_bridge_alloc (2 subtests) ===============
[13:28:07] [PASSED] drm_test_drm_bridge_alloc_basic
[13:28:07] [PASSED] drm_test_drm_bridge_alloc_get_put
[13:28:07] ================ [PASSED] drm_bridge_alloc =================
[13:28:07] ============= drm_bridge_bus_fmt (5 subtests) ==============
[13:28:07] [PASSED] drm_test_bridge_rgb_yuv_rgb
[13:28:07] [PASSED] drm_test_bridge_must_convert_to_yuv444
[13:28:07] [PASSED] drm_test_bridge_hdmi_auto_rgb
[13:28:07] [PASSED] drm_test_bridge_auto_first
[13:28:07] [PASSED] drm_test_bridge_rgb_yuv_no_path
[13:28:07] =============== [PASSED] drm_bridge_bus_fmt ================
[13:28:07] ============= drm_cmdline_parser (40 subtests) =============
[13:28:07] [PASSED] drm_test_cmdline_force_d_only
[13:28:07] [PASSED] drm_test_cmdline_force_D_only_dvi
[13:28:07] [PASSED] drm_test_cmdline_force_D_only_hdmi
[13:28:07] [PASSED] drm_test_cmdline_force_D_only_not_digital
[13:28:07] [PASSED] drm_test_cmdline_force_e_only
[13:28:07] [PASSED] drm_test_cmdline_res
[13:28:07] [PASSED] drm_test_cmdline_res_vesa
[13:28:07] [PASSED] drm_test_cmdline_res_vesa_rblank
[13:28:07] [PASSED] drm_test_cmdline_res_rblank
[13:28:07] [PASSED] drm_test_cmdline_res_bpp
[13:28:07] [PASSED] drm_test_cmdline_res_refresh
[13:28:07] [PASSED] drm_test_cmdline_res_bpp_refresh
[13:28:07] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[13:28:07] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[13:28:07] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[13:28:07] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[13:28:07] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[13:28:07] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[13:28:07] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[13:28:07] [PASSED] drm_test_cmdline_res_margins_force_on
[13:28:07] [PASSED] drm_test_cmdline_res_vesa_margins
[13:28:07] [PASSED] drm_test_cmdline_name
[13:28:07] [PASSED] drm_test_cmdline_name_bpp
[13:28:07] [PASSED] drm_test_cmdline_name_option
[13:28:07] [PASSED] drm_test_cmdline_name_bpp_option
[13:28:07] [PASSED] drm_test_cmdline_rotate_0
[13:28:07] [PASSED] drm_test_cmdline_rotate_90
[13:28:07] [PASSED] drm_test_cmdline_rotate_180
[13:28:07] [PASSED] drm_test_cmdline_rotate_270
[13:28:07] [PASSED] drm_test_cmdline_hmirror
[13:28:07] [PASSED] drm_test_cmdline_vmirror
[13:28:07] [PASSED] drm_test_cmdline_margin_options
[13:28:07] [PASSED] drm_test_cmdline_multiple_options
[13:28:07] [PASSED] drm_test_cmdline_bpp_extra_and_option
[13:28:07] [PASSED] drm_test_cmdline_extra_and_option
[13:28:07] [PASSED] drm_test_cmdline_freestanding_options
[13:28:07] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[13:28:07] [PASSED] drm_test_cmdline_panel_orientation
[13:28:07] ================ drm_test_cmdline_invalid =================
[13:28:07] [PASSED] margin_only
[13:28:07] [PASSED] interlace_only
[13:28:07] [PASSED] res_missing_x
[13:28:07] [PASSED] res_missing_y
[13:28:07] [PASSED] res_bad_y
[13:28:07] [PASSED] res_missing_y_bpp
[13:28:07] [PASSED] res_bad_bpp
[13:28:07] [PASSED] res_bad_refresh
[13:28:07] [PASSED] res_bpp_refresh_force_on_off
[13:28:07] [PASSED] res_invalid_mode
[13:28:07] [PASSED] res_bpp_wrong_place_mode
[13:28:07] [PASSED] name_bpp_refresh
[13:28:07] [PASSED] name_refresh
[13:28:07] [PASSED] name_refresh_wrong_mode
[13:28:07] [PASSED] name_refresh_invalid_mode
[13:28:07] [PASSED] rotate_multiple
[13:28:07] [PASSED] rotate_invalid_val
[13:28:07] [PASSED] rotate_truncated
[13:28:07] [PASSED] invalid_option
[13:28:07] [PASSED] invalid_tv_option
[13:28:07] [PASSED] truncated_tv_option
[13:28:07] ============ [PASSED] drm_test_cmdline_invalid =============
[13:28:07] =============== drm_test_cmdline_tv_options ===============
[13:28:07] [PASSED] NTSC
[13:28:07] [PASSED] NTSC_443
[13:28:07] [PASSED] NTSC_J
[13:28:07] [PASSED] PAL
[13:28:07] [PASSED] PAL_M
[13:28:07] [PASSED] PAL_N
[13:28:07] [PASSED] SECAM
[13:28:07] [PASSED] MONO_525
[13:28:07] [PASSED] MONO_625
[13:28:07] =========== [PASSED] drm_test_cmdline_tv_options ===========
[13:28:07] =============== [PASSED] drm_cmdline_parser ================
[13:28:07] ========== drmm_connector_hdmi_init (20 subtests) ==========
[13:28:07] [PASSED] drm_test_connector_hdmi_init_valid
[13:28:07] [PASSED] drm_test_connector_hdmi_init_bpc_8
[13:28:07] [PASSED] drm_test_connector_hdmi_init_bpc_10
[13:28:07] [PASSED] drm_test_connector_hdmi_init_bpc_12
[13:28:07] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[13:28:07] [PASSED] drm_test_connector_hdmi_init_bpc_null
[13:28:07] [PASSED] drm_test_connector_hdmi_init_formats_empty
[13:28:07] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[13:28:07] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[13:28:07] [PASSED] supported_formats=0x9 yuv420_allowed=1
[13:28:07] [PASSED] supported_formats=0x9 yuv420_allowed=0
[13:28:07] [PASSED] supported_formats=0x5 yuv420_allowed=1
[13:28:07] [PASSED] supported_formats=0x5 yuv420_allowed=0
[13:28:07] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[13:28:07] [PASSED] drm_test_connector_hdmi_init_null_ddc
[13:28:07] [PASSED] drm_test_connector_hdmi_init_null_product
[13:28:07] [PASSED] drm_test_connector_hdmi_init_null_vendor
[13:28:07] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[13:28:07] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[13:28:07] [PASSED] drm_test_connector_hdmi_init_product_valid
[13:28:07] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[13:28:07] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[13:28:07] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[13:28:07] ========= drm_test_connector_hdmi_init_type_valid =========
[13:28:07] [PASSED] HDMI-A
[13:28:07] [PASSED] HDMI-B
[13:28:07] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[13:28:07] ======== drm_test_connector_hdmi_init_type_invalid ========
[13:28:07] [PASSED] Unknown
[13:28:07] [PASSED] VGA
[13:28:07] [PASSED] DVI-I
[13:28:07] [PASSED] DVI-D
[13:28:07] [PASSED] DVI-A
[13:28:07] [PASSED] Composite
[13:28:07] [PASSED] SVIDEO
[13:28:07] [PASSED] LVDS
[13:28:07] [PASSED] Component
[13:28:07] [PASSED] DIN
[13:28:07] [PASSED] DP
[13:28:07] [PASSED] TV
[13:28:07] [PASSED] eDP
[13:28:07] [PASSED] Virtual
[13:28:07] [PASSED] DSI
[13:28:07] [PASSED] DPI
[13:28:07] [PASSED] Writeback
[13:28:07] [PASSED] SPI
[13:28:07] [PASSED] USB
[13:28:07] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[13:28:07] ============ [PASSED] drmm_connector_hdmi_init =============
[13:28:07] ============= drmm_connector_init (3 subtests) =============
[13:28:07] [PASSED] drm_test_drmm_connector_init
[13:28:07] [PASSED] drm_test_drmm_connector_init_null_ddc
[13:28:07] ========= drm_test_drmm_connector_init_type_valid =========
[13:28:07] [PASSED] Unknown
[13:28:07] [PASSED] VGA
[13:28:07] [PASSED] DVI-I
[13:28:07] [PASSED] DVI-D
[13:28:07] [PASSED] DVI-A
[13:28:07] [PASSED] Composite
[13:28:07] [PASSED] SVIDEO
[13:28:07] [PASSED] LVDS
[13:28:07] [PASSED] Component
[13:28:07] [PASSED] DIN
[13:28:07] [PASSED] DP
[13:28:07] [PASSED] HDMI-A
[13:28:07] [PASSED] HDMI-B
[13:28:07] [PASSED] TV
[13:28:07] [PASSED] eDP
[13:28:07] [PASSED] Virtual
[13:28:07] [PASSED] DSI
[13:28:07] [PASSED] DPI
[13:28:07] [PASSED] Writeback
[13:28:07] [PASSED] SPI
[13:28:07] [PASSED] USB
[13:28:07] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[13:28:07] =============== [PASSED] drmm_connector_init ===============
[13:28:07] ========= drm_connector_dynamic_init (6 subtests) ==========
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_init
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_init_properties
[13:28:07] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[13:28:07] [PASSED] Unknown
[13:28:07] [PASSED] VGA
[13:28:07] [PASSED] DVI-I
[13:28:07] [PASSED] DVI-D
[13:28:07] [PASSED] DVI-A
[13:28:07] [PASSED] Composite
[13:28:07] [PASSED] SVIDEO
[13:28:07] [PASSED] LVDS
[13:28:07] [PASSED] Component
[13:28:07] [PASSED] DIN
[13:28:07] [PASSED] DP
[13:28:07] [PASSED] HDMI-A
[13:28:07] [PASSED] HDMI-B
[13:28:07] [PASSED] TV
[13:28:07] [PASSED] eDP
[13:28:07] [PASSED] Virtual
[13:28:07] [PASSED] DSI
[13:28:07] [PASSED] DPI
[13:28:07] [PASSED] Writeback
[13:28:07] [PASSED] SPI
[13:28:07] [PASSED] USB
[13:28:07] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[13:28:07] ======== drm_test_drm_connector_dynamic_init_name =========
[13:28:07] [PASSED] Unknown
[13:28:07] [PASSED] VGA
[13:28:07] [PASSED] DVI-I
[13:28:07] [PASSED] DVI-D
[13:28:07] [PASSED] DVI-A
[13:28:07] [PASSED] Composite
[13:28:07] [PASSED] SVIDEO
[13:28:07] [PASSED] LVDS
[13:28:07] [PASSED] Component
[13:28:07] [PASSED] DIN
[13:28:07] [PASSED] DP
[13:28:07] [PASSED] HDMI-A
[13:28:07] [PASSED] HDMI-B
[13:28:07] [PASSED] TV
[13:28:07] [PASSED] eDP
[13:28:07] [PASSED] Virtual
[13:28:07] [PASSED] DSI
[13:28:07] [PASSED] DPI
[13:28:07] [PASSED] Writeback
[13:28:07] [PASSED] SPI
[13:28:07] [PASSED] USB
[13:28:07] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[13:28:07] =========== [PASSED] drm_connector_dynamic_init ============
[13:28:07] ==== drm_connector_dynamic_register_early (4 subtests) =====
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[13:28:07] ====== [PASSED] drm_connector_dynamic_register_early =======
[13:28:07] ======= drm_connector_dynamic_register (7 subtests) ========
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[13:28:07] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[13:28:07] ========= [PASSED] drm_connector_dynamic_register ==========
[13:28:07] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[13:28:07] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[13:28:07] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[13:28:07] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[13:28:07] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[13:28:07] ========== drm_test_get_tv_mode_from_name_valid ===========
[13:28:07] [PASSED] NTSC
[13:28:07] [PASSED] NTSC-443
[13:28:07] [PASSED] NTSC-J
[13:28:07] [PASSED] PAL
[13:28:07] [PASSED] PAL-M
[13:28:07] [PASSED] PAL-N
[13:28:07] [PASSED] SECAM
[13:28:07] [PASSED] Mono
[13:28:07] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[13:28:07] [PASSED] drm_test_get_tv_mode_from_name_truncated
[13:28:07] ============ [PASSED] drm_get_tv_mode_from_name ============
[13:28:07] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[13:28:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[13:28:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[13:28:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[13:28:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[13:28:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[13:28:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[13:28:07] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[13:28:07] [PASSED] VIC 96
[13:28:07] [PASSED] VIC 97
[13:28:07] [PASSED] VIC 101
[13:28:07] [PASSED] VIC 102
[13:28:07] [PASSED] VIC 106
[13:28:07] [PASSED] VIC 107
[13:28:07] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[13:28:07] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[13:28:07] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[13:28:07] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[13:28:07] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[13:28:07] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[13:28:07] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[13:28:07] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[13:28:07] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[13:28:07] [PASSED] Automatic
[13:28:07] [PASSED] Full
[13:28:07] [PASSED] Limited 16:235
[13:28:07] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[13:28:07] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[13:28:07] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[13:28:07] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[13:28:07] === drm_test_drm_hdmi_connector_get_output_format_name ====
[13:28:07] [PASSED] RGB
[13:28:07] [PASSED] YUV 4:2:0
[13:28:07] [PASSED] YUV 4:2:2
[13:28:07] [PASSED] YUV 4:4:4
[13:28:07] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[13:28:07] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[13:28:07] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[13:28:07] ============= drm_damage_helper (21 subtests) ==============
[13:28:07] [PASSED] drm_test_damage_iter_no_damage
[13:28:07] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[13:28:07] [PASSED] drm_test_damage_iter_no_damage_src_moved
[13:28:07] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[13:28:07] [PASSED] drm_test_damage_iter_no_damage_not_visible
[13:28:07] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[13:28:07] [PASSED] drm_test_damage_iter_no_damage_no_fb
[13:28:07] [PASSED] drm_test_damage_iter_simple_damage
[13:28:07] [PASSED] drm_test_damage_iter_single_damage
[13:28:07] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[13:28:07] [PASSED] drm_test_damage_iter_single_damage_outside_src
[13:28:07] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[13:28:07] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[13:28:07] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[13:28:07] [PASSED] drm_test_damage_iter_single_damage_src_moved
[13:28:07] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[13:28:07] [PASSED] drm_test_damage_iter_damage
[13:28:07] [PASSED] drm_test_damage_iter_damage_one_intersect
[13:28:07] [PASSED] drm_test_damage_iter_damage_one_outside
[13:28:07] [PASSED] drm_test_damage_iter_damage_src_moved
[13:28:07] [PASSED] drm_test_damage_iter_damage_not_visible
[13:28:07] ================ [PASSED] drm_damage_helper ================
[13:28:07] ============== drm_dp_mst_helper (3 subtests) ==============
[13:28:07] ============== drm_test_dp_mst_calc_pbn_mode ==============
[13:28:07] [PASSED] Clock 154000 BPP 30 DSC disabled
[13:28:07] [PASSED] Clock 234000 BPP 30 DSC disabled
[13:28:07] [PASSED] Clock 297000 BPP 24 DSC disabled
[13:28:07] [PASSED] Clock 332880 BPP 24 DSC enabled
[13:28:07] [PASSED] Clock 324540 BPP 24 DSC enabled
[13:28:07] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[13:28:07] ============== drm_test_dp_mst_calc_pbn_div ===============
[13:28:07] [PASSED] Link rate 2000000 lane count 4
[13:28:07] [PASSED] Link rate 2000000 lane count 2
[13:28:07] [PASSED] Link rate 2000000 lane count 1
[13:28:07] [PASSED] Link rate 1350000 lane count 4
[13:28:07] [PASSED] Link rate 1350000 lane count 2
[13:28:07] [PASSED] Link rate 1350000 lane count 1
[13:28:07] [PASSED] Link rate 1000000 lane count 4
[13:28:07] [PASSED] Link rate 1000000 lane count 2
[13:28:07] [PASSED] Link rate 1000000 lane count 1
[13:28:07] [PASSED] Link rate 810000 lane count 4
[13:28:07] [PASSED] Link rate 810000 lane count 2
[13:28:07] [PASSED] Link rate 810000 lane count 1
[13:28:07] [PASSED] Link rate 540000 lane count 4
[13:28:07] [PASSED] Link rate 540000 lane count 2
[13:28:07] [PASSED] Link rate 540000 lane count 1
[13:28:07] [PASSED] Link rate 270000 lane count 4
[13:28:07] [PASSED] Link rate 270000 lane count 2
[13:28:07] [PASSED] Link rate 270000 lane count 1
[13:28:07] [PASSED] Link rate 162000 lane count 4
[13:28:07] [PASSED] Link rate 162000 lane count 2
[13:28:07] [PASSED] Link rate 162000 lane count 1
[13:28:07] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[13:28:07] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[13:28:07] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[13:28:07] [PASSED] DP_POWER_UP_PHY with port number
[13:28:07] [PASSED] DP_POWER_DOWN_PHY with port number
[13:28:07] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[13:28:07] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[13:28:07] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[13:28:07] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[13:28:07] [PASSED] DP_QUERY_PAYLOAD with port number
[13:28:07] [PASSED] DP_QUERY_PAYLOAD with VCPI
[13:28:07] [PASSED] DP_REMOTE_DPCD_READ with port number
[13:28:07] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[13:28:07] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[13:28:07] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[13:28:07] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[13:28:07] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[13:28:07] [PASSED] DP_REMOTE_I2C_READ with port number
[13:28:07] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[13:28:07] [PASSED] DP_REMOTE_I2C_READ with transactions array
[13:28:07] [PASSED] DP_REMOTE_I2C_WRITE with port number
[13:28:07] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[13:28:07] [PASSED] DP_REMOTE_I2C_WRITE with data array
[13:28:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[13:28:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[13:28:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[13:28:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[13:28:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[13:28:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[13:28:07] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[13:28:07] ================ [PASSED] drm_dp_mst_helper ================
[13:28:07] ================== drm_exec (7 subtests) ===================
[13:28:07] [PASSED] sanitycheck
[13:28:07] [PASSED] test_lock
[13:28:07] [PASSED] test_lock_unlock
[13:28:07] [PASSED] test_duplicates
[13:28:07] [PASSED] test_prepare
[13:28:07] [PASSED] test_prepare_array
[13:28:07] [PASSED] test_multiple_loops
[13:28:07] ==================== [PASSED] drm_exec =====================
[13:28:07] =========== drm_format_helper_test (17 subtests) ===========
[13:28:07] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[13:28:07] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[13:28:07] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[13:28:07] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[13:28:07] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[13:28:07] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[13:28:07] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[13:28:07] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[13:28:07] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[13:28:07] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[13:28:07] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[13:28:07] ============== drm_test_fb_xrgb8888_to_mono ===============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[13:28:07] ==================== drm_test_fb_swab =====================
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ================ [PASSED] drm_test_fb_swab =================
[13:28:07] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[13:28:07] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[13:28:07] [PASSED] single_pixel_source_buffer
[13:28:07] [PASSED] single_pixel_clip_rectangle
[13:28:07] [PASSED] well_known_colors
[13:28:07] [PASSED] destination_pitch
[13:28:07] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[13:28:07] ================= drm_test_fb_clip_offset =================
[13:28:07] [PASSED] pass through
[13:28:07] [PASSED] horizontal offset
[13:28:07] [PASSED] vertical offset
[13:28:07] [PASSED] horizontal and vertical offset
[13:28:07] [PASSED] horizontal offset (custom pitch)
[13:28:07] [PASSED] vertical offset (custom pitch)
[13:28:07] [PASSED] horizontal and vertical offset (custom pitch)
[13:28:07] ============= [PASSED] drm_test_fb_clip_offset =============
[13:28:07] =================== drm_test_fb_memcpy ====================
[13:28:07] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[13:28:07] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[13:28:07] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[13:28:07] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[13:28:07] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[13:28:07] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[13:28:07] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[13:28:07] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[13:28:07] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[13:28:07] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[13:28:07] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[13:28:07] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[13:28:07] =============== [PASSED] drm_test_fb_memcpy ================
[13:28:07] ============= [PASSED] drm_format_helper_test ==============
[13:28:07] ================= drm_format (18 subtests) =================
[13:28:07] [PASSED] drm_test_format_block_width_invalid
[13:28:07] [PASSED] drm_test_format_block_width_one_plane
[13:28:07] [PASSED] drm_test_format_block_width_two_plane
[13:28:07] [PASSED] drm_test_format_block_width_three_plane
[13:28:07] [PASSED] drm_test_format_block_width_tiled
[13:28:07] [PASSED] drm_test_format_block_height_invalid
[13:28:07] [PASSED] drm_test_format_block_height_one_plane
[13:28:07] [PASSED] drm_test_format_block_height_two_plane
[13:28:07] [PASSED] drm_test_format_block_height_three_plane
[13:28:07] [PASSED] drm_test_format_block_height_tiled
[13:28:07] [PASSED] drm_test_format_min_pitch_invalid
[13:28:07] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[13:28:07] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[13:28:07] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[13:28:07] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[13:28:07] [PASSED] drm_test_format_min_pitch_two_plane
[13:28:07] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[13:28:07] [PASSED] drm_test_format_min_pitch_tiled
[13:28:07] =================== [PASSED] drm_format ====================
[13:28:07] ============== drm_framebuffer (10 subtests) ===============
[13:28:07] ========== drm_test_framebuffer_check_src_coords ==========
[13:28:07] [PASSED] Success: source fits into fb
[13:28:07] [PASSED] Fail: overflowing fb with x-axis coordinate
[13:28:07] [PASSED] Fail: overflowing fb with y-axis coordinate
[13:28:07] [PASSED] Fail: overflowing fb with source width
[13:28:07] [PASSED] Fail: overflowing fb with source height
[13:28:07] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[13:28:07] [PASSED] drm_test_framebuffer_cleanup
[13:28:07] =============== drm_test_framebuffer_create ===============
[13:28:07] [PASSED] ABGR8888 normal sizes
[13:28:07] [PASSED] ABGR8888 max sizes
[13:28:07] [PASSED] ABGR8888 pitch greater than min required
[13:28:07] [PASSED] ABGR8888 pitch less than min required
[13:28:07] [PASSED] ABGR8888 Invalid width
[13:28:07] [PASSED] ABGR8888 Invalid buffer handle
[13:28:07] [PASSED] No pixel format
[13:28:07] [PASSED] ABGR8888 Width 0
[13:28:07] [PASSED] ABGR8888 Height 0
[13:28:07] [PASSED] ABGR8888 Out of bound height * pitch combination
[13:28:07] [PASSED] ABGR8888 Large buffer offset
[13:28:07] [PASSED] ABGR8888 Buffer offset for inexistent plane
[13:28:07] [PASSED] ABGR8888 Invalid flag
[13:28:07] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[13:28:07] [PASSED] ABGR8888 Valid buffer modifier
[13:28:07] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[13:28:07] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[13:28:07] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[13:28:07] [PASSED] NV12 Normal sizes
[13:28:07] [PASSED] NV12 Max sizes
[13:28:07] [PASSED] NV12 Invalid pitch
[13:28:07] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[13:28:07] [PASSED] NV12 different modifier per-plane
[13:28:07] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[13:28:07] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[13:28:07] [PASSED] NV12 Modifier for inexistent plane
[13:28:07] [PASSED] NV12 Handle for inexistent plane
[13:28:07] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[13:28:07] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[13:28:07] [PASSED] YVU420 Normal sizes
[13:28:07] [PASSED] YVU420 Max sizes
[13:28:07] [PASSED] YVU420 Invalid pitch
[13:28:07] [PASSED] YVU420 Different pitches
[13:28:07] [PASSED] YVU420 Different buffer offsets/pitches
[13:28:07] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[13:28:07] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[13:28:07] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[13:28:07] [PASSED] YVU420 Valid modifier
[13:28:07] [PASSED] YVU420 Different modifiers per plane
[13:28:07] [PASSED] YVU420 Modifier for inexistent plane
[13:28:07] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[13:28:07] [PASSED] X0L2 Normal sizes
[13:28:07] [PASSED] X0L2 Max sizes
[13:28:07] [PASSED] X0L2 Invalid pitch
[13:28:07] [PASSED] X0L2 Pitch greater than minimum required
[13:28:07] [PASSED] X0L2 Handle for inexistent plane
[13:28:07] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[13:28:07] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[13:28:07] [PASSED] X0L2 Valid modifier
[13:28:07] [PASSED] X0L2 Modifier for inexistent plane
[13:28:07] =========== [PASSED] drm_test_framebuffer_create ===========
[13:28:07] [PASSED] drm_test_framebuffer_free
[13:28:07] [PASSED] drm_test_framebuffer_init
[13:28:07] [PASSED] drm_test_framebuffer_init_bad_format
[13:28:07] [PASSED] drm_test_framebuffer_init_dev_mismatch
[13:28:07] [PASSED] drm_test_framebuffer_lookup
[13:28:07] [PASSED] drm_test_framebuffer_lookup_inexistent
[13:28:07] [PASSED] drm_test_framebuffer_modifiers_not_supported
[13:28:07] ================= [PASSED] drm_framebuffer =================
[13:28:07] ================ drm_gem_shmem (8 subtests) ================
[13:28:07] [PASSED] drm_gem_shmem_test_obj_create
[13:28:07] [PASSED] drm_gem_shmem_test_obj_create_private
[13:28:07] [PASSED] drm_gem_shmem_test_pin_pages
[13:28:07] [PASSED] drm_gem_shmem_test_vmap
[13:28:07] [PASSED] drm_gem_shmem_test_get_sg_table
[13:28:07] [PASSED] drm_gem_shmem_test_get_pages_sgt
[13:28:07] [PASSED] drm_gem_shmem_test_madvise
[13:28:07] [PASSED] drm_gem_shmem_test_purge
[13:28:07] ================== [PASSED] drm_gem_shmem ==================
[13:28:07] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[13:28:07] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[13:28:07] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[13:28:07] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[13:28:07] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[13:28:07] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[13:28:07] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[13:28:07] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[13:28:07] [PASSED] Automatic
[13:28:07] [PASSED] Full
[13:28:07] [PASSED] Limited 16:235
[13:28:07] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[13:28:07] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[13:28:07] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[13:28:07] [PASSED] drm_test_check_disable_connector
[13:28:07] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[13:28:07] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[13:28:07] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[13:28:07] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[13:28:07] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[13:28:07] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[13:28:07] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[13:28:07] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[13:28:07] [PASSED] drm_test_check_output_bpc_dvi
[13:28:07] [PASSED] drm_test_check_output_bpc_format_vic_1
[13:28:07] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[13:28:07] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[13:28:07] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[13:28:07] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[13:28:07] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[13:28:07] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[13:28:07] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[13:28:07] ============ drm_test_check_hdmi_color_format =============
[13:28:07] [PASSED] AUTO -> RGB
[13:28:07] [PASSED] YCBCR422 -> YUV422
[13:28:07] [PASSED] YCBCR420 -> YUV420
[13:28:07] [PASSED] YCBCR444 -> YUV444
[13:28:07] [PASSED] RGB -> RGB
[13:28:07] ======== [PASSED] drm_test_check_hdmi_color_format =========
[13:28:07] ======== drm_test_check_hdmi_color_format_420_only ========
[13:28:07] [PASSED] RGB should fail
[13:28:07] [PASSED] YUV444 should fail
[13:28:07] [PASSED] YUV422 should fail
[13:28:07] [PASSED] YUV420 should work
[13:28:07] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[13:28:07] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[13:28:07] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[13:28:07] [PASSED] drm_test_check_broadcast_rgb_value
[13:28:07] [PASSED] drm_test_check_bpc_8_value
[13:28:07] [PASSED] drm_test_check_bpc_10_value
[13:28:07] [PASSED] drm_test_check_bpc_12_value
[13:28:07] [PASSED] drm_test_check_format_value
[13:28:07] [PASSED] drm_test_check_tmds_char_value
[13:28:07] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[13:28:07] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[13:28:07] [PASSED] drm_test_check_mode_valid
[13:28:07] [PASSED] drm_test_check_mode_valid_reject
[13:28:07] [PASSED] drm_test_check_mode_valid_reject_rate
[13:28:07] [PASSED] drm_test_check_mode_valid_reject_max_clock
[13:28:07] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[13:28:07] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[13:28:07] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[13:28:07] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[13:28:07] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[13:28:07] [PASSED] drm_test_check_infoframes
[13:28:07] [PASSED] drm_test_check_reject_avi_infoframe
[13:28:07] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[13:28:07] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[13:28:07] [PASSED] drm_test_check_reject_audio_infoframe
[13:28:07] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[13:28:07] ================= drm_managed (2 subtests) =================
[13:28:07] [PASSED] drm_test_managed_release_action
[13:28:07] [PASSED] drm_test_managed_run_action
[13:28:07] =================== [PASSED] drm_managed ===================
[13:28:07] =================== drm_mm (6 subtests) ====================
[13:28:07] [PASSED] drm_test_mm_init
[13:28:07] [PASSED] drm_test_mm_debug
[13:28:07] [PASSED] drm_test_mm_align32
[13:28:07] [PASSED] drm_test_mm_align64
[13:28:07] [PASSED] drm_test_mm_lowest
[13:28:07] [PASSED] drm_test_mm_highest
[13:28:07] ===================== [PASSED] drm_mm ======================
[13:28:07] ============= drm_modes_analog_tv (5 subtests) =============
[13:28:07] [PASSED] drm_test_modes_analog_tv_mono_576i
[13:28:07] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[13:28:07] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[13:28:07] [PASSED] drm_test_modes_analog_tv_pal_576i
[13:28:07] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[13:28:07] =============== [PASSED] drm_modes_analog_tv ===============
[13:28:07] ============== drm_plane_helper (2 subtests) ===============
[13:28:07] =============== drm_test_check_plane_state ================
[13:28:07] [PASSED] clipping_simple
[13:28:07] [PASSED] clipping_rotate_reflect
[13:28:07] [PASSED] positioning_simple
[13:28:07] [PASSED] upscaling
[13:28:07] [PASSED] downscaling
[13:28:07] [PASSED] rounding1
[13:28:07] [PASSED] rounding2
[13:28:07] [PASSED] rounding3
[13:28:07] [PASSED] rounding4
[13:28:07] =========== [PASSED] drm_test_check_plane_state ============
[13:28:07] =========== drm_test_check_invalid_plane_state ============
[13:28:07] [PASSED] positioning_invalid
[13:28:07] [PASSED] upscaling_invalid
[13:28:07] [PASSED] downscaling_invalid
[13:28:07] ======= [PASSED] drm_test_check_invalid_plane_state ========
[13:28:07] ================ [PASSED] drm_plane_helper =================
[13:28:07] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[13:28:07] ====== drm_test_connector_helper_tv_get_modes_check =======
[13:28:07] [PASSED] None
[13:28:07] [PASSED] PAL
[13:28:07] [PASSED] NTSC
[13:28:07] [PASSED] Both, NTSC Default
[13:28:07] [PASSED] Both, PAL Default
[13:28:07] [PASSED] Both, NTSC Default, with PAL on command-line
[13:28:07] [PASSED] Both, PAL Default, with NTSC on command-line
[13:28:07] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[13:28:07] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[13:28:07] ================== drm_rect (9 subtests) ===================
[13:28:07] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[13:28:07] [PASSED] drm_test_rect_clip_scaled_not_clipped
[13:28:07] [PASSED] drm_test_rect_clip_scaled_clipped
[13:28:07] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[13:28:07] ================= drm_test_rect_intersect =================
[13:28:07] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[13:28:07] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[13:28:07] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[13:28:07] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[13:28:07] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[13:28:07] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[13:28:07] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[13:28:07] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[13:28:07] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[13:28:07] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[13:28:07] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[13:28:07] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[13:28:07] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[13:28:07] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[13:28:07] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[13:28:07] ============= [PASSED] drm_test_rect_intersect =============
[13:28:07] ================ drm_test_rect_calc_hscale ================
[13:28:07] [PASSED] normal use
[13:28:07] [PASSED] out of max range
[13:28:07] [PASSED] out of min range
[13:28:07] [PASSED] zero dst
[13:28:07] [PASSED] negative src
[13:28:07] [PASSED] negative dst
[13:28:07] ============ [PASSED] drm_test_rect_calc_hscale ============
[13:28:07] ================ drm_test_rect_calc_vscale ================
[13:28:07] [PASSED] normal use
[13:28:07] [PASSED] out of max range
[13:28:07] [PASSED] out of min range
[13:28:07] [PASSED] zero dst
[13:28:07] [PASSED] negative src
[13:28:07] [PASSED] negative dst
[13:28:07] ============ [PASSED] drm_test_rect_calc_vscale ============
[13:28:07] ================== drm_test_rect_rotate ===================
[13:28:07] [PASSED] reflect-x
[13:28:07] [PASSED] reflect-y
[13:28:07] [PASSED] rotate-0
[13:28:07] [PASSED] rotate-90
[13:28:07] [PASSED] rotate-180
[13:28:07] [PASSED] rotate-270
[13:28:07] ============== [PASSED] drm_test_rect_rotate ===============
[13:28:07] ================ drm_test_rect_rotate_inv =================
[13:28:07] [PASSED] reflect-x
[13:28:07] [PASSED] reflect-y
[13:28:07] [PASSED] rotate-0
[13:28:07] [PASSED] rotate-90
[13:28:07] [PASSED] rotate-180
[13:28:07] [PASSED] rotate-270
[13:28:07] ============ [PASSED] drm_test_rect_rotate_inv =============
[13:28:07] ==================== [PASSED] drm_rect =====================
[13:28:07] ============ drm_sysfb_modeset_test (1 subtest) ============
[13:28:07] ============ drm_test_sysfb_build_fourcc_list =============
[13:28:07] [PASSED] no native formats
[13:28:07] [PASSED] XRGB8888 as native format
[13:28:07] [PASSED] remove duplicates
[13:28:07] [PASSED] convert alpha formats
[13:28:07] [PASSED] random formats
[13:28:07] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[13:28:07] ============= [PASSED] drm_sysfb_modeset_test ==============
[13:28:07] ================== drm_fixp (2 subtests) ===================
[13:28:07] [PASSED] drm_test_int2fixp
[13:28:07] [PASSED] drm_test_sm2fixp
[13:28:07] ==================== [PASSED] drm_fixp =====================
[13:28:07] ============================================================
[13:28:07] Testing complete. Ran 641 tests: passed: 641
[13:28:07] Elapsed time: 27.397s total, 1.805s configuring, 25.377s building, 0.190s 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
[13:28:08] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[13:28:09] 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
[13:28:19] Starting KUnit Kernel (1/1)...
[13:28:19] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[13:28:19] ============= refcount_interrupt (4 subtests) ==============
[13:28:19] [PASSED] test_single_irq_change
[13:28:19] [PASSED] test_nested_irq_change
[13:28:19] [PASSED] test_multiple_irq_change
[13:28:19] [PASSED] test_irq_save
[13:28:19] =============== [PASSED] refcount_interrupt ================
[13:28:19] ================= ttm_device (5 subtests) ==================
[13:28:19] [PASSED] ttm_device_init_basic
[13:28:19] [PASSED] ttm_device_init_multiple
[13:28:19] [PASSED] ttm_device_fini_basic
[13:28:19] [PASSED] ttm_device_init_no_vma_man
[13:28:19] ================== ttm_device_init_pools ==================
[13:28:19] [PASSED] No DMA allocations, no DMA32 required
[13:28:19] [PASSED] DMA allocations, DMA32 required
[13:28:19] [PASSED] No DMA allocations, DMA32 required
[13:28:19] [PASSED] DMA allocations, no DMA32 required
[13:28:19] ============== [PASSED] ttm_device_init_pools ==============
[13:28:19] =================== [PASSED] ttm_device ====================
[13:28:19] ================== ttm_pool (8 subtests) ===================
[13:28:19] ================== ttm_pool_alloc_basic ===================
[13:28:19] [PASSED] One page
[13:28:19] [PASSED] More than one page
[13:28:19] [PASSED] Above the allocation limit
[13:28:19] [PASSED] One page, with coherent DMA mappings enabled
[13:28:19] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[13:28:19] ============== [PASSED] ttm_pool_alloc_basic ===============
[13:28:19] ============== ttm_pool_alloc_basic_dma_addr ==============
[13:28:19] [PASSED] One page
[13:28:19] [PASSED] More than one page
[13:28:19] [PASSED] Above the allocation limit
[13:28:19] [PASSED] One page, with coherent DMA mappings enabled
[13:28:19] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[13:28:19] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[13:28:19] [PASSED] ttm_pool_alloc_order_caching_match
[13:28:19] [PASSED] ttm_pool_alloc_caching_mismatch
[13:28:19] [PASSED] ttm_pool_alloc_order_mismatch
[13:28:19] [PASSED] ttm_pool_free_dma_alloc
[13:28:19] [PASSED] ttm_pool_free_no_dma_alloc
[13:28:19] [PASSED] ttm_pool_fini_basic
[13:28:19] ==================== [PASSED] ttm_pool =====================
[13:28:19] ================ ttm_resource (8 subtests) =================
[13:28:19] ================= ttm_resource_init_basic =================
[13:28:19] [PASSED] Init resource in TTM_PL_SYSTEM
[13:28:19] [PASSED] Init resource in TTM_PL_VRAM
[13:28:19] [PASSED] Init resource in a private placement
[13:28:19] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[13:28:19] ============= [PASSED] ttm_resource_init_basic =============
[13:28:19] [PASSED] ttm_resource_init_pinned
[13:28:19] [PASSED] ttm_resource_fini_basic
[13:28:19] [PASSED] ttm_resource_manager_init_basic
[13:28:19] [PASSED] ttm_resource_manager_usage_basic
[13:28:19] [PASSED] ttm_resource_manager_set_used_basic
[13:28:19] [PASSED] ttm_sys_man_alloc_basic
[13:28:19] [PASSED] ttm_sys_man_free_basic
[13:28:19] ================== [PASSED] ttm_resource ===================
[13:28:19] =================== ttm_tt (15 subtests) ===================
[13:28:19] ==================== ttm_tt_init_basic ====================
[13:28:19] [PASSED] Page-aligned size
[13:28:19] [PASSED] Extra pages requested
[13:28:19] ================ [PASSED] ttm_tt_init_basic ================
[13:28:19] [PASSED] ttm_tt_init_misaligned
[13:28:19] [PASSED] ttm_tt_fini_basic
[13:28:19] [PASSED] ttm_tt_fini_sg
[13:28:19] [PASSED] ttm_tt_fini_shmem
[13:28:19] [PASSED] ttm_tt_create_basic
[13:28:19] [PASSED] ttm_tt_create_invalid_bo_type
[13:28:19] [PASSED] ttm_tt_create_ttm_exists
[13:28:19] [PASSED] ttm_tt_create_failed
[13:28:19] [PASSED] ttm_tt_destroy_basic
[13:28:19] [PASSED] ttm_tt_populate_null_ttm
[13:28:19] [PASSED] ttm_tt_populate_populated_ttm
[13:28:19] [PASSED] ttm_tt_unpopulate_basic
[13:28:19] [PASSED] ttm_tt_unpopulate_empty_ttm
[13:28:19] [PASSED] ttm_tt_swapin_basic
[13:28:19] ===================== [PASSED] ttm_tt ======================
[13:28:19] =================== ttm_bo (14 subtests) ===================
[13:28:19] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[13:28:19] [PASSED] Cannot be interrupted and sleeps
[13:28:19] [PASSED] Cannot be interrupted, locks straight away
[13:28:19] [PASSED] Can be interrupted, sleeps
[13:28:19] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[13:28:19] [PASSED] ttm_bo_reserve_locked_no_sleep
[13:28:19] [PASSED] ttm_bo_reserve_no_wait_ticket
[13:28:19] [PASSED] ttm_bo_reserve_double_resv
[13:28:19] [PASSED] ttm_bo_reserve_interrupted
[13:28:19] [PASSED] ttm_bo_reserve_deadlock
[13:28:19] [PASSED] ttm_bo_unreserve_basic
[13:28:19] [PASSED] ttm_bo_unreserve_pinned
[13:28:19] [PASSED] ttm_bo_unreserve_bulk
[13:28:19] [PASSED] ttm_bo_fini_basic
[13:28:19] [PASSED] ttm_bo_fini_shared_resv
[13:28:19] [PASSED] ttm_bo_pin_basic
[13:28:19] [PASSED] ttm_bo_pin_unpin_resource
[13:28:19] [PASSED] ttm_bo_multiple_pin_one_unpin
[13:28:19] ===================== [PASSED] ttm_bo ======================
[13:28:19] ============== ttm_bo_validate (22 subtests) ===============
[13:28:19] ============== ttm_bo_init_reserved_sys_man ===============
[13:28:19] [PASSED] Buffer object for userspace
[13:28:19] [PASSED] Kernel buffer object
[13:28:19] [PASSED] Shared buffer object
[13:28:19] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[13:28:19] ============== ttm_bo_init_reserved_mock_man ==============
[13:28:19] [PASSED] Buffer object for userspace
[13:28:19] [PASSED] Kernel buffer object
[13:28:19] [PASSED] Shared buffer object
[13:28:19] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[13:28:19] [PASSED] ttm_bo_init_reserved_resv
[13:28:19] ================== ttm_bo_validate_basic ==================
[13:28:19] [PASSED] Buffer object for userspace
[13:28:19] [PASSED] Kernel buffer object
[13:28:19] [PASSED] Shared buffer object
[13:28:19] ============== [PASSED] ttm_bo_validate_basic ==============
[13:28:19] [PASSED] ttm_bo_validate_invalid_placement
[13:28:19] ============= ttm_bo_validate_same_placement ==============
[13:28:19] [PASSED] System manager
[13:28:19] [PASSED] VRAM manager
[13:28:19] ========= [PASSED] ttm_bo_validate_same_placement ==========
[13:28:19] [PASSED] ttm_bo_validate_failed_alloc
[13:28:19] [PASSED] ttm_bo_validate_pinned
[13:28:19] [PASSED] ttm_bo_validate_busy_placement
[13:28:19] ================ ttm_bo_validate_multihop =================
[13:28:19] [PASSED] Buffer object for userspace
[13:28:19] [PASSED] Kernel buffer object
[13:28:19] [PASSED] Shared buffer object
[13:28:19] ============ [PASSED] ttm_bo_validate_multihop =============
[13:28:19] ========== ttm_bo_validate_no_placement_signaled ==========
[13:28:19] [PASSED] Buffer object in system domain, no page vector
[13:28:19] [PASSED] Buffer object in system domain with an existing page vector
[13:28:19] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[13:28:19] ======== ttm_bo_validate_no_placement_not_signaled ========
[13:28:19] [PASSED] Buffer object for userspace
[13:28:19] [PASSED] Kernel buffer object
[13:28:19] [PASSED] Shared buffer object
[13:28:19] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[13:28:19] [PASSED] ttm_bo_validate_move_fence_signaled
[13:28:19] ========= ttm_bo_validate_move_fence_not_signaled =========
[13:28:19] [PASSED] Waits for GPU
[13:28:19] [PASSED] Tries to lock straight away
[13:28:19] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[13:28:19] [PASSED] ttm_bo_validate_swapout
[13:28:19] [PASSED] ttm_bo_validate_happy_evict
[13:28:19] [PASSED] ttm_bo_validate_all_pinned_evict
[13:28:19] [PASSED] ttm_bo_validate_allowed_only_evict
[13:28:19] [PASSED] ttm_bo_validate_deleted_evict
[13:28:19] [PASSED] ttm_bo_validate_busy_domain_evict
[13:28:19] [PASSED] ttm_bo_validate_evict_gutting
[13:28:19] [PASSED] ttm_bo_validate_recrusive_evict
[13:28:19] ================= [PASSED] ttm_bo_validate =================
[13:28:19] ============================================================
[13:28:19] Testing complete. Ran 106 tests: passed: 106
[13:28:20] Elapsed time: 11.937s total, 1.761s configuring, 9.960s building, 0.182s running
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[13:28:20] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[13:28: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
[13:28:30] Starting KUnit Kernel (1/1)...
[13:28:30] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[13:28:30] ============= refcount_interrupt (4 subtests) ==============
[13:28:30] [PASSED] test_single_irq_change
[13:28:30] [PASSED] test_nested_irq_change
[13:28:30] [PASSED] test_multiple_irq_change
[13:28:30] [PASSED] test_irq_save
[13:28:30] =============== [PASSED] refcount_interrupt ================
[13:28:30] =============== dma-buf-fence (12 subtests) ================
[13:28:30] [PASSED] test_sanitycheck
[13:28:30] [PASSED] test_signaling
[13:28:30] [PASSED] test_add_callback
[13:28:30] [PASSED] test_late_add_callback
[13:28:30] [PASSED] test_rm_callback
[13:28:30] [PASSED] test_late_rm_callback
[13:28:30] [PASSED] test_status
[13:28:30] [PASSED] test_error
[13:28:30] [PASSED] test_wait
[13:28:30] [PASSED] test_wait_timeout
[13:28:30] [PASSED] test_stub
[13:28:30] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[13:28:30] ================== [PASSED] dma-buf-fence ==================
[13:28:30] ============ dma-buf-fence-chain (11 subtests) =============
[13:28:30] [PASSED] test_sanitycheck
[13:28:30] [PASSED] test_find_seqno
[13:28:30] [PASSED] test_find_signaled
[13:28:30] [PASSED] test_find_out_of_order
[13:28:35] [PASSED] test_find_gap
[13:28:35] [PASSED] test_find_race
[13:28:35] [PASSED] test_signal_forward
[13:28:35] [PASSED] test_signal_backward
[13:28:36] [PASSED] test_wait_forward
[13:28:36] [PASSED] test_wait_backward
[13:28:36] [PASSED] test_wait_random
[13:28:36] =============== [PASSED] dma-buf-fence-chain ===============
[13:28:36] ============ dma-buf-fence-unwrap (10 subtests) ============
[13:28:36] [PASSED] test_sanitycheck
[13:28:36] [PASSED] test_unwrap_array
[13:28:36] [PASSED] test_unwrap_chain
[13:28:36] [PASSED] test_unwrap_chain_array
[13:28:36] [PASSED] test_unwrap_merge
[13:28:36] [PASSED] test_unwrap_merge_duplicate
[13:28:36] [PASSED] test_unwrap_merge_seqno
[13:28:36] [PASSED] test_unwrap_merge_order
[13:28:36] [PASSED] test_unwrap_merge_complex
[13:28:36] [PASSED] test_unwrap_merge_complex_seqno
[13:28:36] ============== [PASSED] dma-buf-fence-unwrap ===============
[13:28:36] ================ dma-buf-resv (5 subtests) =================
[13:28:36] [PASSED] test_sanitycheck
[13:28:36] ===================== test_signaling ======================
[13:28:36] [PASSED] kernel
[13:28:36] [PASSED] write
[13:28:36] [PASSED] read
[13:28:36] [PASSED] bookkeep
[13:28:36] ================= [PASSED] test_signaling ==================
[13:28:36] ====================== test_for_each ======================
[13:28:36] [PASSED] kernel
[13:28:36] [PASSED] write
[13:28:36] [PASSED] read
[13:28:36] [PASSED] bookkeep
[13:28:36] ================== [PASSED] test_for_each ==================
[13:28:36] ================= test_for_each_unlocked ==================
[13:28:36] [PASSED] kernel
[13:28:36] [PASSED] write
[13:28:36] [PASSED] read
[13:28:36] [PASSED] bookkeep
[13:28:36] ============= [PASSED] test_for_each_unlocked ==============
[13:28:36] ===================== test_get_fences =====================
[13:28:36] [PASSED] kernel
[13:28:36] [PASSED] write
[13:28:36] [PASSED] read
[13:28:36] [PASSED] bookkeep
[13:28:36] ================= [PASSED] test_get_fences =================
[13:28:36] ================== [PASSED] dma-buf-resv ===================
[13:28:36] ============================================================
[13:28:36] Testing complete. Ran 54 tests: passed: 53, skipped: 1
[13:28:36] Elapsed time: 15.884s total, 1.810s configuring, 8.702s building, 5.355s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 14+ messages in thread* ✓ Xe.CI.BAT: success for VRAM health check + CCS fix (rev3)
2026-09-02 12:41 [PATCH v3 0/5] VRAM health check + CCS fix Matthew Auld
` (5 preceding siblings ...)
2026-09-02 13:28 ` ✓ CI.KUnit: success for VRAM health check + CCS fix (rev3) Patchwork
@ 2026-09-02 14:23 ` Patchwork
2026-09-03 0:36 ` ✗ Xe.CI.FULL: failure " Patchwork
7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2026-09-02 14:23 UTC (permalink / raw)
To: Matthew Auld; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1518 bytes --]
== Series Details ==
Series: VRAM health check + CCS fix (rev3)
URL : https://patchwork.freedesktop.org/series/172984/
State : success
== Summary ==
CI Bug Log - changes from xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93_BAT -> xe-pw-172984v3_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (12 -> 12)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-172984v3_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@core_hotunplug@unbind-rebind:
- bat-nvls-1: [PASS][1] -> [DMESG-WARN][2] ([Intel XE#8762] / [Intel XE#9069])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93/bat-nvls-1/igt@core_hotunplug@unbind-rebind.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/bat-nvls-1/igt@core_hotunplug@unbind-rebind.html
[Intel XE#8762]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8762
[Intel XE#9069]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9069
Build changes
-------------
* Linux: xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93 -> xe-pw-172984v3
IGT_9079: 9079
xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93: 69771454478b3dc773dee91f76cef9220ea1ce93
xe-pw-172984v3: 172984v3
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/index.html
[-- Attachment #2: Type: text/html, Size: 2076 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread* ✗ Xe.CI.FULL: failure for VRAM health check + CCS fix (rev3)
2026-09-02 12:41 [PATCH v3 0/5] VRAM health check + CCS fix Matthew Auld
` (6 preceding siblings ...)
2026-09-02 14:23 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-09-03 0:36 ` Patchwork
7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2026-09-03 0:36 UTC (permalink / raw)
To: Matthew Auld; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 19632 bytes --]
== Series Details ==
Series: VRAM health check + CCS fix (rev3)
URL : https://patchwork.freedesktop.org/series/172984/
State : failure
== Summary ==
CI Bug Log - changes from xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93_FULL -> xe-pw-172984v3_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-172984v3_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-172984v3_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-172984v3_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_exec_system_allocator@threads-shared-vm-many-malloc-prefetch-madvise:
- shard-lnl: [PASS][1] -> [INCOMPLETE][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93/shard-lnl-8/igt@xe_exec_system_allocator@threads-shared-vm-many-malloc-prefetch-madvise.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-lnl-7/igt@xe_exec_system_allocator@threads-shared-vm-many-malloc-prefetch-madvise.html
Known issues
------------
Here are the changes found in xe-pw-172984v3_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@4-tiled-8bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#2327]) +1 other test skip
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#7059] / [Intel XE#7085])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@y-tiled-32bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#1124])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_big_fb@y-tiled-32bpp-rotate-90.html
* igt@kms_bw@connected-linear-tiling-3-displays-target-2160x1440p:
- shard-bmg: NOTRUN -> [SKIP][6] ([Intel XE#7679])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_bw@connected-linear-tiling-3-displays-target-2160x1440p.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][7] ([Intel XE#2887]) +1 other test skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-mc-ccs.html
* igt@kms_chamelium_hpd@hdmi-hpd-after-suspend:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#2252]) +2 other tests skip
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_chamelium_hpd@hdmi-hpd-after-suspend.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2390] / [Intel XE#6974])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#2321] / [Intel XE#7355])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-random-max-size:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#2320])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_cursor_crc@cursor-random-max-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [PASS][12] -> [FAIL][13] ([Intel XE#7809])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93/shard-bmg-5/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-7/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_dsc@dsc-with-output-formats-with-bpc-bigjoiner:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#8265])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_dsc@dsc-with-output-formats-with-bpc-bigjoiner.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#7178] / [Intel XE#7351])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#4141]) +6 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#2352] / [Intel XE#7399]) +1 other test skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrs-tiling-y.html
* igt@kms_frontbuffer_tracking@fbcdrrshdr-rgb565-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#2311]) +17 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcdrrshdr-rgb565-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render:
- shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#2313]) +12 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html
* igt@kms_frontbuffer_tracking@hdr-abgr161616f-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#7061]) +2 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_frontbuffer_tracking@hdr-abgr161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#7061] / [Intel XE#7356])
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_frontbuffer_tracking@psr-argb161616f-draw-blt.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#3544])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#4090] / [Intel XE#7443])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
* igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#7283]) +1 other test skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier-source-clamping.html
* igt@kms_pm_dc@dc3co-after-dc6:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#8395] / [Intel XE#8396]) +1 other test skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_pm_dc@dc3co-after-dc6.html
* igt@kms_pm_dc@dc3co-after-dc6@psr2-xrgb8888:
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#8396]) +1 other test skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_pm_dc@dc3co-after-dc6@psr2-xrgb8888.html
* igt@kms_pm_dc@dc6-psr:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#7794])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_pm_dc@dc6-psr.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#1489]) +2 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr@psr2-sprite-plane-onoff:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#2234] / [Intel XE#2850]) +3 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_psr@psr2-sprite-plane-onoff.html
* igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#2322] / [Intel XE#7372])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate.html
* igt@xe_exec_fault_mode@many-multi-queue-userptr-rebind-prefetch:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#8374]) +3 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_exec_fault_mode@many-multi-queue-userptr-rebind-prefetch.html
* igt@xe_exec_mix_modes@exec-multi-queue-spinner-interrupted-lr:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#9003])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_exec_mix_modes@exec-multi-queue-spinner-interrupted-lr.html
* igt@xe_exec_multi_queue@many-queues-preempt-mode-close-fd:
- shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#8364]) +4 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_exec_multi_queue@many-queues-preempt-mode-close-fd.html
* igt@xe_exec_reset@multi-queue-cancel-on-secondary:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#8369])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_exec_reset@multi-queue-cancel-on-secondary.html
* igt@xe_exec_system_allocator@many-stride-new-prefetch:
- shard-bmg: NOTRUN -> [INCOMPLETE][35] ([Intel XE#7098] / [Intel XE#8159])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_exec_system_allocator@many-stride-new-prefetch.html
* igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race:
- shard-lnl: [PASS][36] -> [FAIL][37] ([Intel XE#9096])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93/shard-lnl-6/igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race.html
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-lnl-7/igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race.html
* igt@xe_exec_threads@threads-multi-queue-cm-fd-rebind:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#8378]) +3 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_exec_threads@threads-multi-queue-cm-fd-rebind.html
* igt@xe_gpgpu_fill@offset-4x4:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#7954])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_gpgpu_fill@offset-4x4.html
* igt@xe_multigpu_svm@mgpu-atomic-op-conflict:
- shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#6964]) +2 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_multigpu_svm@mgpu-atomic-op-conflict.html
* igt@xe_page_reclaim@binds-large-split:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#7793])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_page_reclaim@binds-large-split.html
* igt@xe_pm@s2idle-d3cold-basic-exec:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#2284] / [Intel XE#7370])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_pm@s2idle-d3cold-basic-exec.html
#### Possible fixes ####
* igt@kms_flip@flip-vs-expired-vblank@b-edp1:
- shard-lnl: [FAIL][43] ([Intel XE#301]) -> [PASS][44]
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93/shard-lnl-6/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
* igt@xe_configfs@survivability-mode:
- shard-bmg: [ABORT][45] ([Intel XE#8007]) -> [PASS][46]
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93/shard-bmg-2/igt@xe_configfs@survivability-mode.html
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_configfs@survivability-mode.html
* igt@xe_exec_fault_mode@atomic-many:
- shard-bmg: [FAIL][47] ([Intel XE#8578]) -> [PASS][48]
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93/shard-bmg-5/igt@xe_exec_fault_mode@atomic-many.html
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-7/igt@xe_exec_fault_mode@atomic-many.html
#### Warnings ####
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][49] ([Intel XE#2426] / [Intel XE#5848]) -> [SKIP][50] ([Intel XE#2509] / [Intel XE#7437])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add:
- shard-bmg: [ABORT][51] ([Intel XE#8007]) -> [SKIP][52] ([Intel XE#6281] / [Intel XE#7426])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93/shard-bmg-7/igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add.html
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-5/igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add.html
* igt@xe_wedged@basic-wedged:
- shard-bmg: [DMESG-WARN][53] ([Intel XE#8963]) -> [ABORT][54] ([Intel XE#8591] / [Intel XE#8963])
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93/shard-bmg-3/igt@xe_wedged@basic-wedged.html
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/shard-bmg-3/igt@xe_wedged@basic-wedged.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[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#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#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2352
[Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#4090]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4090
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#6281]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6281
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#6974]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6974
[Intel XE#7059]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7059
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085
[Intel XE#7098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7098
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7399
[Intel XE#7426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7426
[Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
[Intel XE#7443]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7443
[Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
[Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
[Intel XE#7794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7794
[Intel XE#7809]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7809
[Intel XE#7954]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7954
[Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
[Intel XE#8159]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8159
[Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
[Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
[Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
[Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
[Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
[Intel XE#8395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8395
[Intel XE#8396]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8396
[Intel XE#8578]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8578
[Intel XE#8591]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8591
[Intel XE#8963]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8963
[Intel XE#9003]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9003
[Intel XE#9096]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9096
Build changes
-------------
* Linux: xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93 -> xe-pw-172984v3
IGT_9079: 9079
xe-5673-69771454478b3dc773dee91f76cef9220ea1ce93: 69771454478b3dc773dee91f76cef9220ea1ce93
xe-pw-172984v3: 172984v3
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172984v3/index.html
[-- Attachment #2: Type: text/html, Size: 21380 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread