* [PATCH v10 1/5] drm/gpusvm: split MM state flags out of drm_gpusvm_pages_flags
2026-06-30 10:21 [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Honglei Huang
@ 2026-06-30 10:21 ` Honglei Huang
2026-06-30 10:21 ` [PATCH v10 2/5] drm/gpusvm: embed struct drm_device into drm_gpusvm_pages Honglei Huang
` (7 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Honglei Huang @ 2026-06-30 10:21 UTC (permalink / raw)
To: sima, matthew.brost, rodrigo.vivi, thomas.hellstrom, dakr,
intel-xe
Cc: aliceryhl, Alexander.Deucher, Felix.Kuehling, Christian.Koenig,
Ray.Huang, Lingshan.Zhu, Junhua.Shen, Yiru.Ma, amd-gfx, dri-devel,
honghuan
drm_gpusvm_pages_flags currently mixes two status:
- MM / virtual-address state: whether the range has been (partially)
unmapped by the Linux MM, these follow the lifetime of the VMA and
are a single per VA range fact.
- Device mapping state: has_devmem_pages and has_dma_mapping,
which describe the current page mapping status held by device
itself.
Keeping both on the pages object blurs the semantics of the
abstraction of pages and VA range. So move the MM state flags onto the
range, and keep drm_gpusvm_pages_flags strictly for mapping state.
- Introduce drm_gpusvm_range_flags { migrate_devmem, unmapped,
partial_unmap } on drm_gpusvm_range.
- Shrink drm_gpusvm_pages_flags to just has_devmem_pages and
has_dma_mapping.
Side effect: drivers now need to check the unmap flags in the driver
itself to avoid handling the unmapped pages.
Mirror that bit onto drm_gpusvm_pages so the framework can
still short circuit drm_gpusvm_get_pages() under the notifier lock, and
make drm_gpusvm_range_set_unmapped() propagate it to the backing pages.
This follows Matt's review fixup for the v0 series; see the Link below.
Like drm_gpusvm_pages_flags, drm_gpusvm_range_flags unions its bits with
a u16 __flags member. Build the new value in a local copy and publish it
with a single WRITE_ONCE() on __flags, and have the lockless readers use
READ_ONCE(), so concurrent bitfield access stays data-race free and KCSAN
quiet.
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://gitlab.freedesktop.org/mbrost/xe-kernel-driver-svn-perf-6-15-2025/-/commit/623f6a50c037d9e44f6c9fbe6859a0ba7ad50177
Signed-off-by: Honglei Huang <honghuan@amd.com>
---
drivers/gpu/drm/drm_gpusvm.c | 26 +++++++++++++++++++++++---
drivers/gpu/drm/xe/xe_svm.c | 22 +++++++++++++++++-----
include/drm/drm_gpusvm.h | 30 +++++++++++++++++++++++++-----
3 files changed, 65 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index 958cb605aed..abdfdaaf5e2 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -641,7 +641,7 @@ drm_gpusvm_range_alloc(struct drm_gpusvm *gpusvm,
range->itree.last = ALIGN(fault_addr + 1, chunk_size) - 1;
INIT_LIST_HEAD(&range->entry);
range->pages.notifier_seq = LONG_MAX;
- range->pages.flags.migrate_devmem = migrate_devmem ? 1 : 0;
+ range->flags.migrate_devmem = migrate_devmem ? 1 : 0;
return range;
}
@@ -1784,20 +1784,40 @@ EXPORT_SYMBOL_GPL(drm_gpusvm_has_mapping);
/**
* drm_gpusvm_range_set_unmapped() - Mark a GPU SVM range as unmapped
* @range: Pointer to the GPU SVM range structure.
+ * @pages: Pointer to the GPU SVM pages structure(s).
+ * @pages_count: Number of GPU SVM pages structure(s) passed in.
* @mmu_range: Pointer to the MMU notifier range structure.
*
* This function marks a GPU SVM range as unmapped and sets the partial_unmap flag
* if the range partially falls within the provided MMU notifier range.
*/
void drm_gpusvm_range_set_unmapped(struct drm_gpusvm_range *range,
+ struct drm_gpusvm_pages *pages,
+ unsigned int pages_count,
const struct mmu_notifier_range *mmu_range)
{
+ struct drm_gpusvm_range_flags range_flags = {
+ .__flags = range->flags.__flags,
+ };
+ unsigned int i;
+
lockdep_assert_held_write(&range->gpusvm->notifier_lock);
- range->pages.flags.unmapped = true;
+ range_flags.unmapped = true;
+ for (i = 0; i < pages_count; ++i) {
+ struct drm_gpusvm_pages_flags flags = {
+ .__flags = pages[i].flags.__flags,
+ };
+
+ flags.unmapped = true;
+ /* WRITE_ONCE pairs with READ_ONCE for opportunistic checks */
+ WRITE_ONCE(pages[i].flags.__flags, flags.__flags);
+ }
if (drm_gpusvm_range_start(range) < mmu_range->start ||
drm_gpusvm_range_end(range) > mmu_range->end)
- range->pages.flags.partial_unmap = true;
+ range_flags.partial_unmap = true;
+ /* WRITE_ONCE pairs with READ_ONCE for opportunistic checks */
+ WRITE_ONCE(range->flags.__flags, range_flags.__flags);
}
EXPORT_SYMBOL_GPL(drm_gpusvm_range_set_unmapped);
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index b1e1ac26c66..cbb549bc8c4 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -134,7 +134,8 @@ xe_svm_garbage_collector_add_range(struct xe_vm *vm, struct xe_svm_range *range,
range_debug(range, "GARBAGE COLLECTOR ADD");
- drm_gpusvm_range_set_unmapped(&range->base, mmu_range);
+ drm_gpusvm_range_set_unmapped(&range->base, &range->base.pages, 1,
+ mmu_range);
spin_lock(&vm->svm.garbage_collector.lock);
if (list_empty(&range->garbage_collector_link))
@@ -166,7 +167,7 @@ xe_svm_range_notifier_event_begin(struct xe_vm *vm, struct drm_gpusvm_range *r,
range_debug(range, "NOTIFIER");
/* Skip if already unmapped or if no binding exist */
- if (range->base.pages.flags.unmapped || !range->tile_present)
+ if (range->base.flags.unmapped || !range->tile_present)
return 0;
range_debug(range, "NOTIFIER - EXECUTE");
@@ -1135,8 +1136,12 @@ bool xe_svm_range_needs_migrate_to_vram(struct xe_svm_range *range, struct xe_vm
{
struct xe_vm *vm = range_to_vm(&range->base);
u64 range_size = xe_svm_range_size(range);
+ struct drm_gpusvm_range_flags flags = {
+ /* READ_ONCE pairs with WRITE_ONCE in drm_gpusvm_range_set_unmapped() */
+ .__flags = READ_ONCE(range->base.flags.__flags),
+ };
- if (!range->base.pages.flags.migrate_devmem || !dpagemap)
+ if (!flags.migrate_devmem || !dpagemap)
return false;
xe_assert(vm->xe, IS_DGFX(vm->xe));
@@ -1220,6 +1225,7 @@ static int __xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
struct xe_validation_ctx vctx;
struct drm_exec exec;
struct xe_svm_range *range;
+ struct drm_gpusvm_range_flags range_flags;
struct dma_fence *fence;
struct drm_pagemap *dpagemap;
struct xe_tile *tile = gt_to_tile(gt);
@@ -1248,7 +1254,9 @@ static int __xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
xe_svm_range_fault_count_stats_incr(gt, range);
- if (ctx.devmem_only && !range->base.pages.flags.migrate_devmem)
+ /* READ_ONCE pairs with WRITE_ONCE in drm_gpusvm_range_set_unmapped() */
+ range_flags.__flags = READ_ONCE(range->base.flags.__flags);
+ if (ctx.devmem_only && !range_flags.migrate_devmem)
return -EACCES;
if (xe_svm_range_is_valid(range, tile, ctx.devmem_only, dpagemap)) {
@@ -1620,8 +1628,12 @@ int xe_svm_alloc_vram(struct xe_svm_range *range, const struct drm_gpusvm_ctx *c
struct xe_device *xe = vm->xe;
int err, retries = 1;
bool write_locked = false;
+ struct drm_gpusvm_range_flags flags = {
+ /* READ_ONCE pairs with WRITE_ONCE in drm_gpusvm_range_set_unmapped() */
+ .__flags = READ_ONCE(range->base.flags.__flags),
+ };
- xe_assert(range_to_vm(&range->base)->xe, range->base.pages.flags.migrate_devmem);
+ xe_assert(range_to_vm(&range->base)->xe, flags.migrate_devmem);
range_debug(range, "ALLOCATE VRAM");
migration_state = drm_gpusvm_scan_mm(&range->base,
diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
index 8a4d7134a9a..251a7266a73 100644
--- a/include/drm/drm_gpusvm.h
+++ b/include/drm/drm_gpusvm.h
@@ -109,9 +109,7 @@ struct drm_gpusvm_notifier {
/**
* struct drm_gpusvm_pages_flags - Structure representing a GPU SVM pages flags
*
- * @migrate_devmem: Flag indicating whether the pages can be migrated to device memory
* @unmapped: Flag indicating if the pages has been unmapped
- * @partial_unmap: Flag indicating if the pages has been partially unmapped
* @has_devmem_pages: Flag indicating if the pages has devmem pages
* @has_dma_mapping: Flag indicating if the pages has a DMA mapping
* @__flags: Flags for pages in u16 form (used for READ_ONCE)
@@ -119,11 +117,8 @@ struct drm_gpusvm_notifier {
struct drm_gpusvm_pages_flags {
union {
struct {
- /* All flags below must be set upon creation */
- u16 migrate_devmem : 1;
/* All flags below must be set / cleared under notifier lock */
u16 unmapped : 1;
- u16 partial_unmap : 1;
u16 has_devmem_pages : 1;
u16 has_dma_mapping : 1;
};
@@ -151,6 +146,27 @@ struct drm_gpusvm_pages {
struct drm_gpusvm_pages_flags flags;
};
+/**
+ * struct drm_gpusvm_range_flags - Range-level GPU SVM flags
+ *
+ * @migrate_devmem: Flag indicating whether the range can be migrated to device memory
+ * @unmapped: Flag indicating if the range has been unmapped
+ * @partial_unmap: Flag indicating if the range has been partially unmapped
+ * @__flags: All flags in u16 form (used for READ_ONCE)
+ */
+struct drm_gpusvm_range_flags {
+ union {
+ struct {
+ /* All flags below must be set upon creation */
+ u16 migrate_devmem : 1;
+ /* All flags below must be set / cleared under notifier lock */
+ u16 unmapped : 1;
+ u16 partial_unmap : 1;
+ };
+ u16 __flags;
+ };
+};
+
/**
* struct drm_gpusvm_range - Structure representing a GPU SVM range
*
@@ -160,6 +176,7 @@ struct drm_gpusvm_pages {
* @itree: Interval tree node for the range (inserted in GPU SVM notifier)
* @entry: List entry to fast interval tree traversal
* @pages: The pages for this range.
+ * @flags: Flags for range see &struct drm_gpusvm_range_flags
*
* This structure represents a GPU SVM range used for tracking memory ranges
* mapped in a DRM device.
@@ -171,6 +188,7 @@ struct drm_gpusvm_range {
struct interval_tree_node itree;
struct list_head entry;
struct drm_gpusvm_pages pages;
+ struct drm_gpusvm_range_flags flags;
};
/**
@@ -310,6 +328,8 @@ drm_gpusvm_range_find(struct drm_gpusvm_notifier *notifier, unsigned long start,
unsigned long end);
void drm_gpusvm_range_set_unmapped(struct drm_gpusvm_range *range,
+ struct drm_gpusvm_pages *pages,
+ unsigned int pages_count,
const struct mmu_notifier_range *mmu_range);
int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm,
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH v10 2/5] drm/gpusvm: embed struct drm_device into drm_gpusvm_pages
2026-06-30 10:21 [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Honglei Huang
2026-06-30 10:21 ` [PATCH v10 1/5] drm/gpusvm: split MM state flags out of drm_gpusvm_pages_flags Honglei Huang
@ 2026-06-30 10:21 ` Honglei Huang
2026-06-30 10:21 ` [PATCH v10 3/5] drm/xe: have xe_svm_range embed one drm_gpusvm_pages Honglei Huang
` (6 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Honglei Huang @ 2026-06-30 10:21 UTC (permalink / raw)
To: sima, matthew.brost, rodrigo.vivi, thomas.hellstrom, dakr,
intel-xe
Cc: aliceryhl, Alexander.Deucher, Felix.Kuehling, Christian.Koenig,
Ray.Huang, Lingshan.Zhu, Junhua.Shen, Yiru.Ma, amd-gfx, dri-devel,
honghuan
drm_gpusvm_pages is the layer that actually represents physical
pages/mappings it owns the dma_addr array, the dma_iova_state...
With the previous patch, so drm_gpusvm_pages is now strictly about
physical pages and their DMA view.
Since now the drm_gpusvm_pages instance is inherently bound to one
specific drm_device, make that ownership explicit by giving
drm_gpusvm_pages its own drm_device handle, and drive all DMA through
it instead of through the gpusvm:
- Add drm to struct drm_gpusvm_pages and route all DMA in
drm_gpusvm_get_pages() / __drm_gpusvm_unmap_pages() through
svm_pages->drm instead of gpusvm->drm.
- Bind svm_pages->drm where the pages object is initialised
(drm_gpusvm_range_alloc() and the xe userptr setup) and require
it to be set on entry to drm_gpusvm_get_pages(); the dma device
is immutable for the lifetime of the pages instance. A later
patch introduces drm_gpusvm_init_pages() to centralise this.
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Honglei Huang <honghuan@amd.com>
---
drivers/gpu/drm/drm_gpusvm.c | 30 ++++++++++++++++++++----------
drivers/gpu/drm/xe/xe_userptr.c | 2 ++
include/drm/drm_gpusvm.h | 2 ++
3 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index abdfdaaf5e2..604554e40f6 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -641,6 +641,7 @@ drm_gpusvm_range_alloc(struct drm_gpusvm *gpusvm,
range->itree.last = ALIGN(fault_addr + 1, chunk_size) - 1;
INIT_LIST_HEAD(&range->entry);
range->pages.notifier_seq = LONG_MAX;
+ range->pages.drm = gpusvm->drm;
range->flags.migrate_devmem = migrate_devmem ? 1 : 0;
return range;
@@ -1135,11 +1136,16 @@ static void __drm_gpusvm_unmap_pages(struct drm_gpusvm *gpusvm,
unsigned long npages)
{
struct drm_pagemap *dpagemap = svm_pages->dpagemap;
- struct device *dev = gpusvm->drm->dev;
+ struct device *dev;
unsigned long i, j;
lockdep_assert_held(&gpusvm->notifier_lock);
+ if (!svm_pages->drm)
+ return;
+
+ dev = svm_pages->drm->dev;
+
if (svm_pages->flags.has_dma_mapping) {
struct drm_gpusvm_pages_flags flags = {
.__flags = svm_pages->flags.__flags,
@@ -1421,6 +1427,9 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm,
DMA_BIDIRECTIONAL;
struct dma_iova_state *state = &svm_pages->state;
+ if (!svm_pages->drm)
+ return -EINVAL;
+
retry:
if (time_after(jiffies, timeout))
return -EBUSY;
@@ -1520,7 +1529,7 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm,
pagemap = page_pgmap(page);
dpagemap = drm_pagemap_page_to_dpagemap(page);
- if (drm_WARN_ON(gpusvm->drm, !dpagemap)) {
+ if (drm_WARN_ON(svm_pages->drm, !dpagemap)) {
/*
* Raced. This is not supposed to happen
* since hmm_range_fault() should've migrated
@@ -1532,10 +1541,10 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm,
}
svm_pages->dma_addr[j] =
dpagemap->ops->device_map(dpagemap,
- gpusvm->drm->dev,
+ svm_pages->drm->dev,
page, order,
dma_dir);
- if (dma_mapping_error(gpusvm->drm->dev,
+ if (dma_mapping_error(svm_pages->drm->dev,
svm_pages->dma_addr[j].addr)) {
err = -EFAULT;
goto err_unmap;
@@ -1555,11 +1564,11 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm,
}
if (!i)
- dma_iova_try_alloc(gpusvm->drm->dev, state,
+ dma_iova_try_alloc(svm_pages->drm->dev, state,
0, npages * PAGE_SIZE);
if (dma_use_iova(state)) {
- err = dma_iova_link(gpusvm->drm->dev, state,
+ err = dma_iova_link(svm_pages->drm->dev, state,
hmm_pfn_to_phys(pfns[i]),
svm_pages->state_offset,
PAGE_SIZE << order,
@@ -1570,11 +1579,11 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm,
addr = state->addr + svm_pages->state_offset;
svm_pages->state_offset += PAGE_SIZE << order;
} else {
- addr = dma_map_page(gpusvm->drm->dev,
+ addr = dma_map_page(svm_pages->drm->dev,
page, 0,
PAGE_SIZE << order,
dma_dir);
- if (dma_mapping_error(gpusvm->drm->dev, addr)) {
+ if (dma_mapping_error(svm_pages->drm->dev, addr)) {
err = -EFAULT;
goto err_unmap;
}
@@ -1590,7 +1599,7 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm,
}
if (dma_use_iova(state)) {
- err = dma_iova_sync(gpusvm->drm->dev, state, 0,
+ err = dma_iova_sync(svm_pages->drm->dev, state, 0,
svm_pages->state_offset);
if (err)
goto err_unmap;
@@ -1640,7 +1649,8 @@ int drm_gpusvm_range_get_pages(struct drm_gpusvm *gpusvm,
struct drm_gpusvm_range *range,
const struct drm_gpusvm_ctx *ctx)
{
- return drm_gpusvm_get_pages(gpusvm, &range->pages, gpusvm->mm,
+ return drm_gpusvm_get_pages(gpusvm, &range->pages,
+ gpusvm->mm,
&range->notifier->notifier,
drm_gpusvm_range_start(range),
drm_gpusvm_range_end(range), ctx);
diff --git a/drivers/gpu/drm/xe/xe_userptr.c b/drivers/gpu/drm/xe/xe_userptr.c
index 6f71bc66b14..9df98bcd3ca 100644
--- a/drivers/gpu/drm/xe/xe_userptr.c
+++ b/drivers/gpu/drm/xe/xe_userptr.c
@@ -390,6 +390,7 @@ int xe_userptr_setup(struct xe_userptr_vma *uvma, unsigned long start,
unsigned long range)
{
struct xe_userptr *userptr = &uvma->userptr;
+ struct xe_vm *vm = xe_vma_vm(&uvma->vma);
int err;
INIT_LIST_HEAD(&userptr->invalidate_link);
@@ -402,6 +403,7 @@ int xe_userptr_setup(struct xe_userptr_vma *uvma, unsigned long start,
return err;
userptr->pages.notifier_seq = LONG_MAX;
+ userptr->pages.drm = &vm->xe->drm;
return 0;
}
diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
index 251a7266a73..842353afb27 100644
--- a/include/drm/drm_gpusvm.h
+++ b/include/drm/drm_gpusvm.h
@@ -129,6 +129,7 @@ struct drm_gpusvm_pages_flags {
/**
* struct drm_gpusvm_pages - Structure representing a GPU SVM mapped pages
*
+ * @drm: The DRM device that owns the dma mappings
* @dma_addr: Device address array
* @dpagemap: The struct drm_pagemap of the device pages we're dma-mapping.
* Note this is assuming only one drm_pagemap per range is allowed.
@@ -138,6 +139,7 @@ struct drm_gpusvm_pages_flags {
* @flags: Flags for the range; see &struct drm_gpusvm_pages_flags
*/
struct drm_gpusvm_pages {
+ struct drm_device *drm;
struct drm_pagemap_addr *dma_addr;
struct drm_pagemap *dpagemap;
struct dma_iova_state state;
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH v10 3/5] drm/xe: have xe_svm_range embed one drm_gpusvm_pages
2026-06-30 10:21 [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Honglei Huang
2026-06-30 10:21 ` [PATCH v10 1/5] drm/gpusvm: split MM state flags out of drm_gpusvm_pages_flags Honglei Huang
2026-06-30 10:21 ` [PATCH v10 2/5] drm/gpusvm: embed struct drm_device into drm_gpusvm_pages Honglei Huang
@ 2026-06-30 10:21 ` Honglei Huang
2026-06-30 10:21 ` [PATCH v10 4/5] drm/gpusvm: move struct drm_gpusvm_pages out of struct drm_gpusvm_range Honglei Huang
` (5 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Honglei Huang @ 2026-06-30 10:21 UTC (permalink / raw)
To: sima, matthew.brost, rodrigo.vivi, thomas.hellstrom, dakr,
intel-xe
Cc: aliceryhl, Alexander.Deucher, Felix.Kuehling, Christian.Koenig,
Ray.Huang, Lingshan.Zhu, Junhua.Shen, Yiru.Ma, amd-gfx, dri-devel,
honghuan
With drm_gpusvm_pages now self contained, make xe stop relying
on the drm_gpusvm_range pages and take responsibility for the page
lifecycle on the driver side.
Driver side (xe):
- Embed struct drm_gpusvm_pages in xe_svm_range and route all
xe accesses through it instead of range->base.pages.
- Initialise the embedded pages via drm_gpusvm_init_pages(), which
binds the owning &xe->drm up front, and take over the page
lifecycle: xe_svm_range_get_pages() calls drm_gpusvm_get_pages()
directly; the notifier event_end and xe_svm_range_free() paths
drive unmap/free on the embedded pages object.
- Convert the open-coded userptr pages init in xe_userptr_setup()
to the same drm_gpusvm_init_pages() helper.
- Switch xe_svm_range_pages_valid() to drm_gpusvm_pages_valid().
Framework side (drm_gpusvm):
- Add a small inline drm_gpusvm_init_pages() helper that records the
owning drm_device and initialises the per-pages state, giving
drivers a single hook to extend.
- Export drm_gpusvm_pages_valid() to let driver owned pages
can query mapping state without going through a range.
- Lifecycle change: drm_gpusvm_range_remove() no longer *triggers*
unmap/free of the embedded pages. The unmap/free logic itself stays
in the framework -- drm_gpusvm_free_pages() still performs the DMA
unmap (as an idempotent backstop) and frees the dma_addr array --
but the driver now owns *when* it runs, since the driver owns the
drm_gpusvm_pages object.
Side effect / contract: a driver that owns a drm_gpusvm_pages is now
responsible for its lifecycle: drm_gpusvm_init_pages() before first
use, and drm_gpusvm_free_pages() when the owner goes away. Xe does the
latter from its ops->range_free callback, which the framework invokes
once the range refcount drops to zero in drm_gpusvm_range_remove().
The timely DMA unmap for the IOMMU security model still happens in the
notifier invalidate path via drm_gpusvm_unmap_pages(); the unmap inside
drm_gpusvm_free_pages() is only a backstop for pages that were never
invalidated.
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Honglei Huang <honghuan@amd.com>
---
drivers/gpu/drm/drm_gpusvm.c | 16 ++++++++-----
drivers/gpu/drm/xe/xe_pt.c | 2 +-
drivers/gpu/drm/xe/xe_svm.c | 42 ++++++++++++++++++++++++++-------
drivers/gpu/drm/xe/xe_svm.h | 12 ++++++----
drivers/gpu/drm/xe/xe_userptr.c | 5 ++--
include/drm/drm_gpusvm.h | 20 ++++++++++++++++
6 files changed, 74 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index 604554e40f6..b0e9a2db108 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -1228,12 +1228,17 @@ EXPORT_SYMBOL_GPL(drm_gpusvm_free_pages);
* This function removes the specified GPU SVM range and also removes the parent
* GPU SVM notifier if no more ranges remain in the notifier. The caller must
* hold a lock to protect range and notifier removal.
+ *
+ * This function does not unmap or free the drm_gpusvm_pages, the driver owns
+ * that lifecycle. The caller must DMA unmap the range's pages before calling
+ * this function, so a range is never removed from the MMU interval tree while
+ * still DMA mapped. Typically the driver calls drm_gpusvm_unmap_pages() first.
+ * And the range_free callback's drm_gpusvm_free_pages() is a final fallback safe
+ * net.
*/
void drm_gpusvm_range_remove(struct drm_gpusvm *gpusvm,
struct drm_gpusvm_range *range)
{
- unsigned long npages = npages_in_range(drm_gpusvm_range_start(range),
- drm_gpusvm_range_end(range));
struct drm_gpusvm_notifier *notifier;
drm_gpusvm_driver_lock_held(gpusvm);
@@ -1245,8 +1250,6 @@ void drm_gpusvm_range_remove(struct drm_gpusvm *gpusvm,
return;
drm_gpusvm_notifier_lock(gpusvm);
- __drm_gpusvm_unmap_pages(gpusvm, &range->pages, npages);
- __drm_gpusvm_free_pages(gpusvm, &range->pages);
__drm_gpusvm_range_remove(notifier, range);
drm_gpusvm_notifier_unlock(gpusvm);
@@ -1325,13 +1328,14 @@ EXPORT_SYMBOL_GPL(drm_gpusvm_range_put);
*
* Return: True if GPU SVM range has valid pages, False otherwise
*/
-static bool drm_gpusvm_pages_valid(struct drm_gpusvm *gpusvm,
- struct drm_gpusvm_pages *svm_pages)
+bool drm_gpusvm_pages_valid(struct drm_gpusvm *gpusvm,
+ struct drm_gpusvm_pages *svm_pages)
{
lockdep_assert_held(&gpusvm->notifier_lock);
return svm_pages->flags.has_devmem_pages || svm_pages->flags.has_dma_mapping;
}
+EXPORT_SYMBOL_GPL(drm_gpusvm_pages_valid);
/**
* drm_gpusvm_range_pages_valid() - GPU SVM range pages valid
diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index 4f0f438d6b9..d6437492027 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -758,7 +758,7 @@ xe_pt_stage_bind(struct xe_tile *tile, struct xe_vma *vma,
return -EAGAIN;
}
if (xe_svm_range_has_dma_mapping(range)) {
- xe_res_first_dma(range->base.pages.dma_addr, 0,
+ xe_res_first_dma(range->pages.dma_addr, 0,
xe_svm_range_size(range),
&curs);
xe_svm_range_debug(range, "BIND PREPARE - MIXED");
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index cbb549bc8c4..74545dc4169 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -66,7 +66,7 @@ static bool xe_svm_range_in_vram(struct xe_svm_range *range)
struct drm_gpusvm_pages_flags flags = {
/* Pairs with WRITE_ONCE in drm_gpusvm.c */
- .__flags = READ_ONCE(range->base.pages.flags.__flags),
+ .__flags = READ_ONCE(range->pages.flags.__flags),
};
return flags.has_devmem_pages;
@@ -96,7 +96,7 @@ static struct xe_vm *range_to_vm(struct drm_gpusvm_range *r)
(r__)->base.gpusvm, \
xe_svm_range_in_vram((r__)) ? 1 : 0, \
xe_svm_range_has_vram_binding((r__)) ? 1 : 0, \
- (r__)->base.pages.notifier_seq, \
+ (r__)->pages.notifier_seq, \
xe_svm_range_start((r__)), xe_svm_range_end((r__)), \
xe_svm_range_size((r__)))
@@ -115,6 +115,7 @@ xe_svm_range_alloc(struct drm_gpusvm *gpusvm)
return NULL;
INIT_LIST_HEAD(&range->garbage_collector_link);
+ drm_gpusvm_init_pages(&range->pages, &gpusvm_to_vm(gpusvm)->xe->drm);
xe_vm_get(gpusvm_to_vm(gpusvm));
return &range->base;
@@ -122,8 +123,10 @@ xe_svm_range_alloc(struct drm_gpusvm *gpusvm)
static void xe_svm_range_free(struct drm_gpusvm_range *range)
{
+ drm_gpusvm_free_pages(range->gpusvm, &(to_xe_range(range)->pages),
+ drm_gpusvm_range_size(range) >> PAGE_SHIFT);
xe_vm_put(range_to_vm(range));
- kfree(range);
+ kfree(to_xe_range(range));
}
static void
@@ -134,7 +137,7 @@ xe_svm_garbage_collector_add_range(struct xe_vm *vm, struct xe_svm_range *range,
range_debug(range, "GARBAGE COLLECTOR ADD");
- drm_gpusvm_range_set_unmapped(&range->base, &range->base.pages, 1,
+ drm_gpusvm_range_set_unmapped(&range->base, &range->pages, 1,
mmu_range);
spin_lock(&vm->svm.garbage_collector.lock);
@@ -209,7 +212,8 @@ xe_svm_range_notifier_event_end(struct xe_vm *vm, struct drm_gpusvm_range *r,
xe_svm_assert_in_notifier(vm);
- drm_gpusvm_range_unmap_pages(&vm->svm.gpusvm, r, &ctx);
+ drm_gpusvm_unmap_pages(&vm->svm.gpusvm, &(to_xe_range(r)->pages),
+ drm_gpusvm_range_size(r) >> PAGE_SHIFT, &ctx);
if (!xe_vm_is_closed(vm) && mmu_range->event == MMU_NOTIFY_UNMAP)
xe_svm_garbage_collector_add_range(vm, to_xe_range(r),
mmu_range);
@@ -300,6 +304,7 @@ static void xe_svm_invalidate(struct drm_gpusvm *gpusvm,
static int __xe_svm_garbage_collector(struct xe_vm *vm,
struct xe_svm_range *range)
{
+ struct drm_gpusvm_ctx ctx = { .in_notifier = false, };
struct dma_fence *fence;
range_debug(range, "GARBAGE COLLECTOR");
@@ -311,6 +316,10 @@ static int __xe_svm_garbage_collector(struct xe_vm *vm,
return PTR_ERR(fence);
dma_fence_put(fence);
+ drm_gpusvm_unmap_pages(&vm->svm.gpusvm, &range->pages,
+ drm_gpusvm_range_size(&range->base) >> PAGE_SHIFT,
+ &ctx);
+
drm_gpusvm_range_remove(&vm->svm.gpusvm, &range->base);
return 0;
@@ -945,15 +954,28 @@ void xe_svm_close(struct xe_vm *vm)
*/
void xe_svm_fini(struct xe_vm *vm)
{
+ struct drm_gpusvm_notifier *notifier, *next;
+ struct drm_gpusvm_ctx ctx = { .in_notifier = false, };
+
xe_assert(vm->xe, xe_vm_is_closed(vm));
+ drm_gpusvm_for_each_notifier_safe(notifier, next, &vm->svm.gpusvm, 0, LONG_MAX) {
+ struct drm_gpusvm_range *range, *__next;
+
+ drm_gpusvm_for_each_range_safe(range, __next, notifier, 0, LONG_MAX)
+ drm_gpusvm_unmap_pages(&vm->svm.gpusvm,
+ &(to_xe_range(range)->pages),
+ drm_gpusvm_range_size(range) >> PAGE_SHIFT,
+ &ctx);
+ }
+
drm_gpusvm_fini(&vm->svm.gpusvm);
}
static bool xe_svm_range_has_pagemap_locked(const struct xe_svm_range *range,
const struct drm_pagemap *dpagemap)
{
- return range->base.pages.dpagemap == dpagemap;
+ return range->pages.dpagemap == dpagemap;
}
static bool xe_svm_range_has_pagemap(struct xe_svm_range *range,
@@ -1018,7 +1040,7 @@ bool xe_svm_range_validate(struct xe_vm *vm,
if (dpagemap)
ret = ret && xe_svm_range_has_pagemap_locked(range, dpagemap);
else
- ret = ret && !range->base.pages.dpagemap;
+ ret = ret && !range->pages.dpagemap;
xe_svm_notifier_unlock(vm);
@@ -1513,7 +1535,11 @@ int xe_svm_range_get_pages(struct xe_vm *vm, struct xe_svm_range *range,
{
int err = 0;
- err = drm_gpusvm_range_get_pages(&vm->svm.gpusvm, &range->base, ctx);
+ err = drm_gpusvm_get_pages(&vm->svm.gpusvm, &range->pages,
+ vm->svm.gpusvm.mm,
+ &range->base.notifier->notifier,
+ drm_gpusvm_range_start(&range->base),
+ drm_gpusvm_range_end(&range->base), ctx);
if (err == -EOPNOTSUPP) {
range_debug(range, "PAGE FAULT - EVICT PAGES");
drm_gpusvm_range_evict(&vm->svm.gpusvm, &range->base);
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 3ca46a6f98c..c8f4a7ba0f4 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -31,6 +31,8 @@ struct xe_vram_region;
struct xe_svm_range {
/** @base: base drm_gpusvm_range */
struct drm_gpusvm_range base;
+ /** @pages: Page/DMA mapping state for this range (single drm_device). */
+ struct drm_gpusvm_pages pages;
/**
* @garbage_collector_link: Link into VM's garbage collect SVM range
* list. Protected by VM's garbage collect lock.
@@ -74,7 +76,7 @@ struct xe_pagemap {
*/
static inline bool xe_svm_range_pages_valid(struct xe_svm_range *range)
{
- return drm_gpusvm_range_pages_valid(range->base.gpusvm, &range->base);
+ return drm_gpusvm_pages_valid(range->base.gpusvm, &range->pages);
}
int xe_devm_add(struct xe_tile *tile, struct xe_vram_region *vr);
@@ -132,7 +134,7 @@ void *xe_svm_private_page_owner(struct xe_vm *vm, bool force_smem);
static inline bool xe_svm_range_has_dma_mapping(struct xe_svm_range *range)
{
lockdep_assert_held(&range->base.gpusvm->notifier_lock);
- return range->base.pages.flags.has_dma_mapping;
+ return range->pages.flags.has_dma_mapping;
}
/**
@@ -210,10 +212,10 @@ struct xe_vram_region;
struct xe_svm_range {
struct {
struct interval_tree_node itree;
- struct {
- const struct drm_pagemap_addr *dma_addr;
- } pages;
} base;
+ struct {
+ const struct drm_pagemap_addr *dma_addr;
+ } pages;
u32 tile_present;
u32 tile_invalidated;
};
diff --git a/drivers/gpu/drm/xe/xe_userptr.c b/drivers/gpu/drm/xe/xe_userptr.c
index 9df98bcd3ca..35dac137e39 100644
--- a/drivers/gpu/drm/xe/xe_userptr.c
+++ b/drivers/gpu/drm/xe/xe_userptr.c
@@ -396,15 +396,14 @@ int xe_userptr_setup(struct xe_userptr_vma *uvma, unsigned long start,
INIT_LIST_HEAD(&userptr->invalidate_link);
INIT_LIST_HEAD(&userptr->repin_link);
+ drm_gpusvm_init_pages(&userptr->pages, &vm->xe->drm);
+
err = mmu_interval_notifier_insert(&userptr->notifier, current->mm,
start, range,
&vma_userptr_notifier_ops);
if (err)
return err;
- userptr->pages.notifier_seq = LONG_MAX;
- userptr->pages.drm = &vm->xe->drm;
-
return 0;
}
diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
index 842353afb27..3f38283111c 100644
--- a/include/drm/drm_gpusvm.h
+++ b/include/drm/drm_gpusvm.h
@@ -310,6 +310,9 @@ void drm_gpusvm_range_put(struct drm_gpusvm_range *range);
bool drm_gpusvm_range_pages_valid(struct drm_gpusvm *gpusvm,
struct drm_gpusvm_range *range);
+bool drm_gpusvm_pages_valid(struct drm_gpusvm *gpusvm,
+ struct drm_gpusvm_pages *svm_pages);
+
int drm_gpusvm_range_get_pages(struct drm_gpusvm *gpusvm,
struct drm_gpusvm_range *range,
const struct drm_gpusvm_ctx *ctx);
@@ -350,6 +353,23 @@ void drm_gpusvm_free_pages(struct drm_gpusvm *gpusvm,
struct drm_gpusvm_pages *svm_pages,
unsigned long npages);
+/**
+ * drm_gpusvm_init_pages() - Initialize a freshly allocated drm_gpusvm_pages
+ * @svm_pages: Pointer to the drm_gpusvm_pages to initialize.
+ * @drm: The DRM device that will own DMA mappings for this pages object.
+ *
+ * Drivers that embed one or more drm_gpusvm_pages in their own range
+ * structure must call this once on each pages instance after allocation,
+ * before the first drm_gpusvm_get_pages() / unmap / free.
+ */
+static inline void drm_gpusvm_init_pages(struct drm_gpusvm_pages *svm_pages,
+ struct drm_device *drm)
+{
+ memset(svm_pages, 0, sizeof(*svm_pages));
+ svm_pages->drm = drm;
+ svm_pages->notifier_seq = LONG_MAX;
+}
+
/**
* enum drm_gpusvm_scan_result - Scan result from the drm_gpusvm_scan_mm() function.
* @DRM_GPUSVM_SCAN_UNPOPULATED: At least one page was not present or inaccessible.
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH v10 4/5] drm/gpusvm: move struct drm_gpusvm_pages out of struct drm_gpusvm_range
2026-06-30 10:21 [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Honglei Huang
` (2 preceding siblings ...)
2026-06-30 10:21 ` [PATCH v10 3/5] drm/xe: have xe_svm_range embed one drm_gpusvm_pages Honglei Huang
@ 2026-06-30 10:21 ` Honglei Huang
2026-06-30 10:21 ` [PATCH v10 5/5] drm/gpusvm: let the drm_gpusvm core context purely MM level Honglei Huang
` (4 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Honglei Huang @ 2026-06-30 10:21 UTC (permalink / raw)
To: sima, matthew.brost, rodrigo.vivi, thomas.hellstrom, dakr,
intel-xe
Cc: aliceryhl, Alexander.Deucher, Felix.Kuehling, Christian.Koenig,
Ray.Huang, Lingshan.Zhu, Junhua.Shen, Yiru.Ma, amd-gfx, dri-devel,
honghuan
Since the pages the physical pages and MM VA range has been abstractly
separated. Unbinding a single form of physical page from the MM VA
range, brings flexibility to the drm gpu SVM framework, transfer the
way of management of MM and device physical pages to the driver layer.
framework's range embedded pages object and its range level wrappers
have no users left. Remove the following:
- Drop pages in drm_gpusvm_range.
- Drop drm_gpusvm_range_pages_valid(), drm_gpusvm_range_get_pages()
and drm_gpusvm_range_unmap_pages(); drivers should use the
drm_gpusvm_pages helpers (drm_gpusvm_pages_valid,
drm_gpusvm_get_pages, drm_gpusvm_unmap_pages) directly on a
pages object they own.
- Drop the notifier_seq seeding in drm_gpusvm_range_alloc();
drivers initialise notifier_seq on their own pages object.
Update the DOC: overview to match the new model: document struct
drm_gpusvm_pages and the driver owned 1:1 / N:1 layouts, and rewrite the
usage examples to operate on a driver embedded pages object by the
drm_gpusvm_pages helpers instead of the removed range level wrappers.
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Honglei Huang <honghuan@amd.com>
---
drivers/gpu/drm/drm_gpusvm.c | 169 +++++++++++++++++++----------------
include/drm/drm_gpusvm.h | 13 ---
2 files changed, 90 insertions(+), 92 deletions(-)
diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index b0e9a2db108..e0fd0b2fcc5 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -48,6 +48,47 @@
* event. As mentioned above, ranges are tracked in a notifier's Red-Black
* tree.
*
+ * - Pages:
+ * struct drm_gpusvm_pages holds the DMA mapping state for a range of
+ * CPU virtual addresses: the DMA mapped device addresses,
+ * the device private pagemap, the IOVA state, the per mapping
+ * notifier sequence number, and the drm_device that owns the DMA
+ * mappings.
+ * A driver embeds one or more struct drm_gpusvm_pages alongside its
+ * struct drm_gpusvm_range, choosing one of two layouts:
+ *
+ * 1:1 - one drm_gpusvm_pages per range (one drm_device). Simplest
+ * layout; to mirror a VA range on several devices a driver uses a
+ * separate range (and notifier) per device, so the HMM fault is taken
+ * once per device.
+ *
+ * N:1 - one drm_gpusvm_pages per drm_device, all sharing one range and
+ * notifier; only the per-device DMA mapping differs. The instances must
+ * sit in contiguous memory so a single drm_gpusvm_range_set_unmapped()
+ * can mark them all. A driver can keep one instance inline for the single
+ * device case and switch to a heap array only when more devices join,
+ * e.g.:
+ *
+ * .. code-block:: c
+ *
+ * struct driver_range {
+ * struct drm_gpusvm_range base;
+ * unsigned int num_pages; // 1: inline_pages, >1: pages[]
+ * union {
+ * struct drm_gpusvm_pages inline_pages;
+ * struct drm_gpusvm_pages *pages;
+ * };
+ * };
+ *
+ * In the N:1 case the driver allocates the pages array with a zeroing
+ * allocator (e.g. kcalloc(num_pages, ...)), initialises each entry with
+ * drm_gpusvm_init_pages(), and frees each entry with
+ * drm_gpusvm_free_pages() plus the array itself, from its range free
+ * callback. Each drm_gpusvm_pages is mapped independently by their own
+ * drm_device.
+ * Each drm_gpusvm_pages must be zero-initialised and initialised with
+ * drm_gpusvm_init_pages(), called once per entry.
+ *
* - Operations:
* Define the interface for driver-specific GPU SVM operations such as
* range allocation, notifier allocation, and invalidations.
@@ -92,7 +133,7 @@
* range RB tree and list, as well as the range's DMA mappings and sequence
* number. GPU SVM manages all necessary locking and unlocking operations,
* except for the recheck range's pages being valid
- * (drm_gpusvm_range_pages_valid) when the driver is committing GPU bindings.
+ * (drm_gpusvm_pages_valid) when the driver is committing GPU bindings.
* This lock corresponds to the ``driver->update`` lock mentioned in
* Documentation/mm/hmm.rst. Future revisions may transition from a GPU SVM
* global lock to a per-notifier lock if finer-grained locking is deemed
@@ -140,15 +181,20 @@
*
* .. code-block:: c
*
- * int driver_bind_range(struct drm_gpusvm *gpusvm, struct drm_gpusvm_range *range)
+ * struct driver_range {
+ * struct drm_gpusvm_range base;
+ * struct drm_gpusvm_pages pages;
+ * };
+ *
+ * int driver_bind_range(struct drm_gpusvm *gpusvm, struct driver_range *drange)
* {
* int err = 0;
*
- * driver_alloc_and_setup_memory_for_bind(gpusvm, range);
+ * driver_alloc_and_setup_memory_for_bind(gpusvm, drange);
*
* drm_gpusvm_notifier_lock(gpusvm);
- * if (drm_gpusvm_range_pages_valid(range))
- * driver_commit_bind(gpusvm, range);
+ * if (drm_gpusvm_pages_valid(gpusvm, &drange->pages))
+ * driver_commit_bind(gpusvm, drange);
* else
* err = -EAGAIN;
* drm_gpusvm_notifier_unlock(gpusvm);
@@ -160,6 +206,8 @@
* unsigned long gpuva_start, unsigned long gpuva_end)
* {
* struct drm_gpusvm_ctx ctx = {};
+ * struct driver_range *drange;
+ * struct drm_gpusvm_range *range;
* int err;
*
* driver_svm_lock();
@@ -174,6 +222,7 @@
* err = PTR_ERR(range);
* goto unlock;
* }
+ * drange = container_of(range, struct driver_range, base);
*
* if (driver_migration_policy(range)) {
* err = drm_pagemap_populate_mm(driver_choose_drm_pagemap(),
@@ -183,7 +232,10 @@
* goto retry;
* }
*
- * err = drm_gpusvm_range_get_pages(gpusvm, range, &ctx);
+ * err = drm_gpusvm_get_pages(gpusvm, &drange->pages,
+ * gpusvm->mm, &range->notifier->notifier,
+ * drm_gpusvm_range_start(range),
+ * drm_gpusvm_range_end(range), &ctx);
* if (err == -EOPNOTSUPP || err == -EFAULT || err == -EPERM) { // CPU mappings changed
* if (err == -EOPNOTSUPP)
* drm_gpusvm_range_evict(gpusvm, range);
@@ -192,7 +244,7 @@
* goto unlock;
* }
*
- * err = driver_bind_range(gpusvm, range);
+ * err = driver_bind_range(gpusvm, drange);
* if (err == -EAGAIN) // CPU mappings changed
* goto retry
*
@@ -205,6 +257,21 @@
*
* .. code-block:: c
*
+ * // The driver owns the drm_gpusvm_pages lifecycle. ops->range_free is
+ * // the final fallback: drm_gpusvm_free_pages() unmaps any
+ * // lingering DMA mapping and a no-op if already unmapped and frees the
+ * // dma_addr array. The normal flow is to DMA unmap before
+ * // drm_gpusvm_range_remove() (before the range leaves the tree).
+ * void driver_range_free(struct drm_gpusvm_range *range)
+ * {
+ * struct driver_range *drange =
+ * container_of(range, struct driver_range, base);
+ *
+ * drm_gpusvm_free_pages(range->gpusvm, &drange->pages,
+ * drm_gpusvm_range_size(range) >> PAGE_SHIFT);
+ * kfree(drange);
+ * }
+ *
* void __driver_garbage_collector(struct drm_gpusvm *gpusvm,
* struct drm_gpusvm_range *range)
* {
@@ -215,6 +282,14 @@
* drm_gpusvm_range_evict(gpusvm, range);
*
* driver_unbind_range(range);
+ * // The pages must be DMA unmapped before drm_gpusvm_range_remove()
+ * // , so a range is never off the MMU interval tree while still DMA
+ * // mapped as the original drmsvm design flow. Otherwise a concurrent CPU
+ * // munmap's notifier could miss this range and free pages still mapped
+ * // for device DMA. This is the normal unmap point.
+ * drm_gpusvm_unmap_pages(gpusvm, &drange->pages,
+ * drm_gpusvm_range_size(range) >> PAGE_SHIFT,
+ * &(struct drm_gpusvm_ctx){ .in_notifier = false });
* drm_gpusvm_range_remove(gpusvm, range);
* }
*
@@ -236,17 +311,22 @@
* {
* struct drm_gpusvm_ctx ctx = { .in_notifier = true, };
* struct drm_gpusvm_range *range = NULL;
+ * struct driver_range *drange;
*
* driver_invalidate_device_pages(gpusvm, mmu_range->start, mmu_range->end);
*
* drm_gpusvm_for_each_range(range, notifier, mmu_range->start,
* mmu_range->end) {
- * drm_gpusvm_range_unmap_pages(gpusvm, range, &ctx);
+ * drange = container_of(range, struct driver_range, base);
+ *
+ * drm_gpusvm_unmap_pages(gpusvm, &drange->pages,
+ * drm_gpusvm_range_size(range) >> PAGE_SHIFT,
+ * &ctx);
*
* if (mmu_range->event != MMU_NOTIFY_UNMAP)
* continue;
*
- * drm_gpusvm_range_set_unmapped(range, mmu_range);
+ * drm_gpusvm_range_set_unmapped(range, &drange->pages, 1, mmu_range);
* driver_garbage_collector_add(gpusvm, range);
* }
* }
@@ -640,8 +720,6 @@ drm_gpusvm_range_alloc(struct drm_gpusvm *gpusvm,
range->itree.start = ALIGN_DOWN(fault_addr, chunk_size);
range->itree.last = ALIGN(fault_addr + 1, chunk_size) - 1;
INIT_LIST_HEAD(&range->entry);
- range->pages.notifier_seq = LONG_MAX;
- range->pages.drm = gpusvm->drm;
range->flags.migrate_devmem = migrate_devmem ? 1 : 0;
return range;
@@ -930,7 +1008,7 @@ drm_gpusvm_range_chunk_size(struct drm_gpusvm *gpusvm,
* mallocs 16k but the CPU VMA is ~128k which results in 64k SVM
* ranges. When migrating the SVM ranges, some processes fail in
* drm_pagemap_migrate_to_devmem with 'migrate.cpages != npages'
- * and then upon drm_gpusvm_range_get_pages device pages from
+ * and then upon drm_gpusvm_get_pages device pages from
* other processes are collected + faulted in which creates all
* sorts of problems. Unsure exactly how this happening, also
* problem goes away if 'xe_exec_system_allocator --r
@@ -1337,27 +1415,6 @@ bool drm_gpusvm_pages_valid(struct drm_gpusvm *gpusvm,
}
EXPORT_SYMBOL_GPL(drm_gpusvm_pages_valid);
-/**
- * drm_gpusvm_range_pages_valid() - GPU SVM range pages valid
- * @gpusvm: Pointer to the GPU SVM structure
- * @range: Pointer to the GPU SVM range structure
- *
- * This function determines if a GPU SVM range pages are valid. Expected be
- * called holding gpusvm->notifier_lock and as the last step before committing a
- * GPU binding. This is akin to a notifier seqno check in the HMM documentation
- * but due to wider notifiers (i.e., notifiers which span multiple ranges) this
- * function is required for finer grained checking (i.e., per range) if pages
- * are valid.
- *
- * Return: True if GPU SVM range has valid pages, False otherwise
- */
-bool drm_gpusvm_range_pages_valid(struct drm_gpusvm *gpusvm,
- struct drm_gpusvm_range *range)
-{
- return drm_gpusvm_pages_valid(gpusvm, &range->pages);
-}
-EXPORT_SYMBOL_GPL(drm_gpusvm_range_pages_valid);
-
/**
* drm_gpusvm_pages_valid_unlocked() - GPU SVM pages valid unlocked
* @gpusvm: Pointer to the GPU SVM structure
@@ -1638,29 +1695,6 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm,
}
EXPORT_SYMBOL_GPL(drm_gpusvm_get_pages);
-/**
- * drm_gpusvm_range_get_pages() - Get pages for a GPU SVM range
- * @gpusvm: Pointer to the GPU SVM structure
- * @range: Pointer to the GPU SVM range structure
- * @ctx: GPU SVM context
- *
- * This function gets pages for a GPU SVM range and ensures they are mapped for
- * DMA access.
- *
- * Return: 0 on success, negative error code on failure.
- */
-int drm_gpusvm_range_get_pages(struct drm_gpusvm *gpusvm,
- struct drm_gpusvm_range *range,
- const struct drm_gpusvm_ctx *ctx)
-{
- return drm_gpusvm_get_pages(gpusvm, &range->pages,
- gpusvm->mm,
- &range->notifier->notifier,
- drm_gpusvm_range_start(range),
- drm_gpusvm_range_end(range), ctx);
-}
-EXPORT_SYMBOL_GPL(drm_gpusvm_range_get_pages);
-
/**
* drm_gpusvm_unmap_pages() - Unmap GPU svm pages
* @gpusvm: Pointer to the GPU SVM structure
@@ -1691,29 +1725,6 @@ void drm_gpusvm_unmap_pages(struct drm_gpusvm *gpusvm,
}
EXPORT_SYMBOL_GPL(drm_gpusvm_unmap_pages);
-/**
- * drm_gpusvm_range_unmap_pages() - Unmap pages associated with a GPU SVM range
- * @gpusvm: Pointer to the GPU SVM structure
- * @range: Pointer to the GPU SVM range structure
- * @ctx: GPU SVM context
- *
- * This function unmaps pages associated with a GPU SVM range. If @in_notifier
- * is set, it is assumed that gpusvm->notifier_lock is held in write mode; if it
- * is clear, it acquires gpusvm->notifier_lock in read mode. Must be called on
- * each GPU SVM range attached to notifier in gpusvm->ops->invalidate for IOMMU
- * security model.
- */
-void drm_gpusvm_range_unmap_pages(struct drm_gpusvm *gpusvm,
- struct drm_gpusvm_range *range,
- const struct drm_gpusvm_ctx *ctx)
-{
- unsigned long npages = npages_in_range(drm_gpusvm_range_start(range),
- drm_gpusvm_range_end(range));
-
- return drm_gpusvm_unmap_pages(gpusvm, &range->pages, npages, ctx);
-}
-EXPORT_SYMBOL_GPL(drm_gpusvm_range_unmap_pages);
-
/**
* drm_gpusvm_range_evict() - Evict GPU SVM range
* @gpusvm: Pointer to the GPU SVM structure
diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
index 3f38283111c..2862104aa1b 100644
--- a/include/drm/drm_gpusvm.h
+++ b/include/drm/drm_gpusvm.h
@@ -177,7 +177,6 @@ struct drm_gpusvm_range_flags {
* @refcount: Reference count for the range
* @itree: Interval tree node for the range (inserted in GPU SVM notifier)
* @entry: List entry to fast interval tree traversal
- * @pages: The pages for this range.
* @flags: Flags for range see &struct drm_gpusvm_range_flags
*
* This structure represents a GPU SVM range used for tracking memory ranges
@@ -189,7 +188,6 @@ struct drm_gpusvm_range {
struct kref refcount;
struct interval_tree_node itree;
struct list_head entry;
- struct drm_gpusvm_pages pages;
struct drm_gpusvm_range_flags flags;
};
@@ -307,20 +305,9 @@ drm_gpusvm_range_get(struct drm_gpusvm_range *range);
void drm_gpusvm_range_put(struct drm_gpusvm_range *range);
-bool drm_gpusvm_range_pages_valid(struct drm_gpusvm *gpusvm,
- struct drm_gpusvm_range *range);
-
bool drm_gpusvm_pages_valid(struct drm_gpusvm *gpusvm,
struct drm_gpusvm_pages *svm_pages);
-int drm_gpusvm_range_get_pages(struct drm_gpusvm *gpusvm,
- struct drm_gpusvm_range *range,
- const struct drm_gpusvm_ctx *ctx);
-
-void drm_gpusvm_range_unmap_pages(struct drm_gpusvm *gpusvm,
- struct drm_gpusvm_range *range,
- const struct drm_gpusvm_ctx *ctx);
-
bool drm_gpusvm_has_mapping(struct drm_gpusvm *gpusvm, unsigned long start,
unsigned long end);
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread* [PATCH v10 5/5] drm/gpusvm: let the drm_gpusvm core context purely MM level
2026-06-30 10:21 [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Honglei Huang
` (3 preceding siblings ...)
2026-06-30 10:21 ` [PATCH v10 4/5] drm/gpusvm: move struct drm_gpusvm_pages out of struct drm_gpusvm_range Honglei Huang
@ 2026-06-30 10:21 ` Honglei Huang
2026-06-30 12:01 ` ✓ CI.KUnit: success for drm/gpusvm: split MM and device state across gpusvm/range/pages (rev7) Patchwork
` (3 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Honglei Huang @ 2026-06-30 10:21 UTC (permalink / raw)
To: sima, matthew.brost, rodrigo.vivi, thomas.hellstrom, dakr,
intel-xe
Cc: aliceryhl, Alexander.Deucher, Felix.Kuehling, Christian.Koenig,
Ray.Huang, Lingshan.Zhu, Junhua.Shen, Yiru.Ma, amd-gfx, dri-devel,
honghuan
The core mechanism of drm_gpusvm is HMM, which is fundamentally an
MM side subsystem. A drm_device, enters the picture on the device side at
DMA mapping / GPU bind.
So move struct drm_device from struct drm_gpusvm in drm_gpusvm. Let
drm_gpusvm keep its core neutral and leave device side decisions to
the driver. Make drm_gpusvm a pure MM level object.
- Move the drm_device from struct drm_gpusvm. drm_device now stored in
drm_gpusvm_pages.
- Drop the drm parameter from drm_gpusvm_init()
- Update the xe call sites in xe_svm_init() and other callers.
drm_device does not disappear from the framework, it is
relocated onto each drm_gpusvm_pages where DMA actually happens.
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Honglei Huang <honghuan@amd.com>
---
drivers/gpu/drm/drm_gpusvm.c | 8 ++++----
drivers/gpu/drm/xe/xe_svm.c | 4 ++--
drivers/gpu/drm/xe/xe_svm.h | 2 +-
include/drm/drm_gpusvm.h | 4 +---
4 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index e0fd0b2fcc5..fcfe635bc19 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -439,7 +439,6 @@ static const struct mmu_interval_notifier_ops drm_gpusvm_notifier_ops = {
* drm_gpusvm_init() - Initialize the GPU SVM.
* @gpusvm: Pointer to the GPU SVM structure.
* @name: Name of the GPU SVM.
- * @drm: Pointer to the DRM device structure.
* @mm: Pointer to the mm_struct for the address space.
* @mm_start: Start address of GPU SVM.
* @mm_range: Range of the GPU SVM.
@@ -453,7 +452,9 @@ static const struct mmu_interval_notifier_ops drm_gpusvm_notifier_ops = {
* This function initializes the GPU SVM.
*
* Note: If only using the simple drm_gpusvm_pages API (get/unmap/free),
- * then only @gpusvm, @name, and @drm are expected. However, the same base
+ * then only @gpusvm and @name are expected. The @drm drm_device for dma
+ * mappings is bound per-pages via drm_gpusvm_init_pages() before the first
+ * drm_gpusvm_get_pages() call. However, the same base
* @gpusvm can also be used with both modes together in which case the full
* setup is needed, where the core drm_gpusvm_pages API will simply never use
* the other fields.
@@ -461,7 +462,7 @@ static const struct mmu_interval_notifier_ops drm_gpusvm_notifier_ops = {
* Return: 0 on success, a negative error code on failure.
*/
int drm_gpusvm_init(struct drm_gpusvm *gpusvm,
- const char *name, struct drm_device *drm,
+ const char *name,
struct mm_struct *mm,
unsigned long mm_start, unsigned long mm_range,
unsigned long notifier_size,
@@ -479,7 +480,6 @@ int drm_gpusvm_init(struct drm_gpusvm *gpusvm,
}
gpusvm->name = name;
- gpusvm->drm = drm;
gpusvm->mm = mm;
gpusvm->mm_start = mm_start;
gpusvm->mm_range = mm_range;
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index 74545dc4169..589459125e8 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -911,7 +911,7 @@ int xe_svm_init(struct xe_vm *vm)
return err;
}
- err = drm_gpusvm_init(&vm->svm.gpusvm, "Xe SVM", &vm->xe->drm,
+ err = drm_gpusvm_init(&vm->svm.gpusvm, "Xe SVM",
current->mm, 0, vm->size,
xe_modparam.svm_notifier_size * SZ_1M,
&gpusvm_ops, fault_chunk_sizes,
@@ -925,7 +925,7 @@ int xe_svm_init(struct xe_vm *vm)
}
} else {
err = drm_gpusvm_init(&vm->svm.gpusvm, "Xe SVM (simple)",
- &vm->xe->drm, NULL, 0, 0, 0, NULL,
+ NULL, 0, 0, 0, NULL,
NULL, 0);
}
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index c8f4a7ba0f4..a921556d346 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -235,7 +235,7 @@ static inline
int xe_svm_init(struct xe_vm *vm)
{
#if IS_ENABLED(CONFIG_DRM_GPUSVM)
- return drm_gpusvm_init(&vm->svm.gpusvm, "Xe SVM (simple)", &vm->xe->drm,
+ return drm_gpusvm_init(&vm->svm.gpusvm, "Xe SVM (simple)",
NULL, 0, 0, 0, NULL, NULL, 0);
#else
return 0;
diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
index 2862104aa1b..b7d987bf76a 100644
--- a/include/drm/drm_gpusvm.h
+++ b/include/drm/drm_gpusvm.h
@@ -195,7 +195,6 @@ struct drm_gpusvm_range {
* struct drm_gpusvm - GPU SVM structure
*
* @name: Name of the GPU SVM
- * @drm: Pointer to the DRM device structure
* @mm: Pointer to the mm_struct for the address space
* @mm_start: Start address of GPU SVM
* @mm_range: Range of the GPU SVM
@@ -219,7 +218,6 @@ struct drm_gpusvm_range {
*/
struct drm_gpusvm {
const char *name;
- struct drm_device *drm;
struct mm_struct *mm;
unsigned long mm_start;
unsigned long mm_range;
@@ -271,7 +269,7 @@ struct drm_gpusvm_ctx {
};
int drm_gpusvm_init(struct drm_gpusvm *gpusvm,
- const char *name, struct drm_device *drm,
+ const char *name,
struct mm_struct *mm,
unsigned long mm_start, unsigned long mm_range,
unsigned long notifier_size,
--
2.34.1
^ permalink raw reply related [flat|nested] 14+ messages in thread* ✓ CI.KUnit: success for drm/gpusvm: split MM and device state across gpusvm/range/pages (rev7)
2026-06-30 10:21 [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Honglei Huang
` (4 preceding siblings ...)
2026-06-30 10:21 ` [PATCH v10 5/5] drm/gpusvm: let the drm_gpusvm core context purely MM level Honglei Huang
@ 2026-06-30 12:01 ` Patchwork
2026-06-30 12:56 ` ✓ Xe.CI.BAT: " Patchwork
` (2 subsequent siblings)
8 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2026-06-30 12:01 UTC (permalink / raw)
To: Honglei Huang; +Cc: intel-xe
== Series Details ==
Series: drm/gpusvm: split MM and device state across gpusvm/range/pages (rev7)
URL : https://patchwork.freedesktop.org/series/169384/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[12:00:07] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:00:11] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
../drivers/gpu/drm/xe/xe_pt.c:1418:13: warning: ‘xe_pt_svm_userptr_notifier_lock’ defined but not used [-Wunused-function]
1418 | static void xe_pt_svm_userptr_notifier_lock(struct xe_vm *vm)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[12:00:43] Starting KUnit Kernel (1/1)...
[12:00:43] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:00:43] ================== guc_buf (11 subtests) ===================
[12:00:43] [PASSED] test_smallest
[12:00:43] [PASSED] test_largest
[12:00:43] [PASSED] test_granular
[12:00:43] [PASSED] test_unique
[12:00:43] [PASSED] test_overlap
[12:00:43] [PASSED] test_reusable
[12:00:43] [PASSED] test_too_big
[12:00:43] [PASSED] test_flush
[12:00:43] [PASSED] test_lookup
[12:00:43] [PASSED] test_data
[12:00:43] [PASSED] test_class
[12:00:43] ===================== [PASSED] guc_buf =====================
[12:00:43] =================== guc_dbm (7 subtests) ===================
[12:00:43] [PASSED] test_empty
[12:00:43] [PASSED] test_default
[12:00:43] ======================== test_size ========================
[12:00:43] [PASSED] 4
[12:00:43] [PASSED] 8
[12:00:43] [PASSED] 32
[12:00:43] [PASSED] 256
[12:00:43] ==================== [PASSED] test_size ====================
[12:00:43] ======================= test_reuse ========================
[12:00:43] [PASSED] 4
[12:00:43] [PASSED] 8
[12:00:43] [PASSED] 32
[12:00:43] [PASSED] 256
[12:00:43] =================== [PASSED] test_reuse ====================
[12:00:43] =================== test_range_overlap ====================
[12:00:43] [PASSED] 4
[12:00:43] [PASSED] 8
[12:00:43] [PASSED] 32
[12:00:43] [PASSED] 256
[12:00:43] =============== [PASSED] test_range_overlap ================
[12:00:43] =================== test_range_compact ====================
[12:00:43] [PASSED] 4
[12:00:43] [PASSED] 8
[12:00:43] [PASSED] 32
[12:00:43] [PASSED] 256
[12:00:43] =============== [PASSED] test_range_compact ================
[12:00:43] ==================== test_range_spare =====================
[12:00:43] [PASSED] 4
[12:00:43] [PASSED] 8
[12:00:43] [PASSED] 32
[12:00:43] [PASSED] 256
[12:00:43] ================ [PASSED] test_range_spare =================
[12:00:43] ===================== [PASSED] guc_dbm =====================
[12:00:43] =================== guc_idm (6 subtests) ===================
[12:00:43] [PASSED] bad_init
[12:00:43] [PASSED] no_init
[12:00:43] [PASSED] init_fini
[12:00:43] [PASSED] check_used
[12:00:43] [PASSED] check_quota
[12:00:43] [PASSED] check_all
[12:00:43] ===================== [PASSED] guc_idm =====================
[12:00:43] ================== no_relay (3 subtests) ===================
[12:00:43] [PASSED] xe_drops_guc2pf_if_not_ready
[12:00:43] [PASSED] xe_drops_guc2vf_if_not_ready
[12:00:43] [PASSED] xe_rejects_send_if_not_ready
[12:00:43] ==================== [PASSED] no_relay =====================
[12:00:43] ================== pf_relay (14 subtests) ==================
[12:00:43] [PASSED] pf_rejects_guc2pf_too_short
[12:00:43] [PASSED] pf_rejects_guc2pf_too_long
[12:00:43] [PASSED] pf_rejects_guc2pf_no_payload
[12:00:43] [PASSED] pf_fails_no_payload
[12:00:43] [PASSED] pf_fails_bad_origin
[12:00:43] [PASSED] pf_fails_bad_type
[12:00:43] [PASSED] pf_txn_reports_error
[12:00:43] [PASSED] pf_txn_sends_pf2guc
[12:00:43] [PASSED] pf_sends_pf2guc
[12:00:43] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[12:00:43] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[12:00:43] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[12:00:43] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[12:00:43] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[12:00:43] ==================== [PASSED] pf_relay =====================
[12:00:43] ================== vf_relay (3 subtests) ===================
[12:00:43] [PASSED] vf_rejects_guc2vf_too_short
[12:00:43] [PASSED] vf_rejects_guc2vf_too_long
[12:00:43] [PASSED] vf_rejects_guc2vf_no_payload
[12:00:43] ==================== [PASSED] vf_relay =====================
[12:00:43] ================ pf_gt_config (9 subtests) =================
[12:00:43] [PASSED] fair_contexts_1vf
[12:00:43] [PASSED] fair_doorbells_1vf
[12:00:43] [PASSED] fair_ggtt_1vf
[12:00:43] ====================== fair_vram_1vf ======================
[12:00:43] [PASSED] 3.50 GiB
[12:00:43] [PASSED] 11.5 GiB
[12:00:43] [PASSED] 15.5 GiB
[12:00:43] [PASSED] 31.5 GiB
[12:00:43] [PASSED] 63.5 GiB
[12:00:43] [PASSED] 1.91 GiB
[12:00:43] ================== [PASSED] fair_vram_1vf ==================
[12:00:43] ================ fair_vram_1vf_admin_only =================
[12:00:43] [PASSED] 3.50 GiB
[12:00:43] [PASSED] 11.5 GiB
[12:00:43] [PASSED] 15.5 GiB
[12:00:43] [PASSED] 31.5 GiB
[12:00:43] [PASSED] 63.5 GiB
[12:00:43] [PASSED] 1.91 GiB
[12:00:43] ============ [PASSED] fair_vram_1vf_admin_only =============
[12:00:43] ====================== fair_contexts ======================
[12:00:43] [PASSED] 1 VF
[12:00:43] [PASSED] 2 VFs
[12:00:43] [PASSED] 3 VFs
[12:00:43] [PASSED] 4 VFs
[12:00:43] [PASSED] 5 VFs
[12:00:43] [PASSED] 6 VFs
[12:00:43] [PASSED] 7 VFs
[12:00:43] [PASSED] 8 VFs
[12:00:43] [PASSED] 9 VFs
[12:00:43] [PASSED] 10 VFs
[12:00:43] [PASSED] 11 VFs
[12:00:43] [PASSED] 12 VFs
[12:00:43] [PASSED] 13 VFs
[12:00:43] [PASSED] 14 VFs
[12:00:43] [PASSED] 15 VFs
[12:00:43] [PASSED] 16 VFs
[12:00:43] [PASSED] 17 VFs
[12:00:43] [PASSED] 18 VFs
[12:00:43] [PASSED] 19 VFs
[12:00:43] [PASSED] 20 VFs
[12:00:43] [PASSED] 21 VFs
[12:00:43] [PASSED] 22 VFs
[12:00:43] [PASSED] 23 VFs
[12:00:43] [PASSED] 24 VFs
[12:00:43] [PASSED] 25 VFs
[12:00:43] [PASSED] 26 VFs
[12:00:43] [PASSED] 27 VFs
[12:00:43] [PASSED] 28 VFs
[12:00:43] [PASSED] 29 VFs
[12:00:43] [PASSED] 30 VFs
[12:00:43] [PASSED] 31 VFs
[12:00:43] [PASSED] 32 VFs
[12:00:43] [PASSED] 33 VFs
[12:00:43] [PASSED] 34 VFs
[12:00:43] [PASSED] 35 VFs
[12:00:43] [PASSED] 36 VFs
[12:00:43] [PASSED] 37 VFs
[12:00:43] [PASSED] 38 VFs
[12:00:43] [PASSED] 39 VFs
[12:00:43] [PASSED] 40 VFs
[12:00:43] [PASSED] 41 VFs
[12:00:43] [PASSED] 42 VFs
[12:00:43] [PASSED] 43 VFs
[12:00:43] [PASSED] 44 VFs
[12:00:43] [PASSED] 45 VFs
[12:00:43] [PASSED] 46 VFs
[12:00:43] [PASSED] 47 VFs
[12:00:43] [PASSED] 48 VFs
[12:00:43] [PASSED] 49 VFs
[12:00:43] [PASSED] 50 VFs
[12:00:43] [PASSED] 51 VFs
[12:00:43] [PASSED] 52 VFs
[12:00:43] [PASSED] 53 VFs
[12:00:43] [PASSED] 54 VFs
[12:00:43] [PASSED] 55 VFs
[12:00:43] [PASSED] 56 VFs
[12:00:43] [PASSED] 57 VFs
[12:00:43] [PASSED] 58 VFs
[12:00:43] [PASSED] 59 VFs
[12:00:43] [PASSED] 60 VFs
[12:00:43] [PASSED] 61 VFs
[12:00:43] [PASSED] 62 VFs
[12:00:43] [PASSED] 63 VFs
[12:00:43] ================== [PASSED] fair_contexts ==================
[12:00:43] ===================== fair_doorbells ======================
[12:00:43] [PASSED] 1 VF
[12:00:43] [PASSED] 2 VFs
[12:00:43] [PASSED] 3 VFs
[12:00:43] [PASSED] 4 VFs
[12:00:43] [PASSED] 5 VFs
[12:00:43] [PASSED] 6 VFs
[12:00:43] [PASSED] 7 VFs
[12:00:43] [PASSED] 8 VFs
[12:00:43] [PASSED] 9 VFs
[12:00:43] [PASSED] 10 VFs
[12:00:43] [PASSED] 11 VFs
[12:00:43] [PASSED] 12 VFs
[12:00:43] [PASSED] 13 VFs
[12:00:43] [PASSED] 14 VFs
[12:00:43] [PASSED] 15 VFs
[12:00:43] [PASSED] 16 VFs
[12:00:43] [PASSED] 17 VFs
[12:00:43] [PASSED] 18 VFs
[12:00:43] [PASSED] 19 VFs
[12:00:43] [PASSED] 20 VFs
[12:00:43] [PASSED] 21 VFs
[12:00:43] [PASSED] 22 VFs
[12:00:43] [PASSED] 23 VFs
[12:00:43] [PASSED] 24 VFs
[12:00:43] [PASSED] 25 VFs
[12:00:43] [PASSED] 26 VFs
[12:00:43] [PASSED] 27 VFs
[12:00:43] [PASSED] 28 VFs
[12:00:43] [PASSED] 29 VFs
[12:00:43] [PASSED] 30 VFs
[12:00:43] [PASSED] 31 VFs
[12:00:43] [PASSED] 32 VFs
[12:00:43] [PASSED] 33 VFs
[12:00:43] [PASSED] 34 VFs
[12:00:43] [PASSED] 35 VFs
[12:00:43] [PASSED] 36 VFs
[12:00:43] [PASSED] 37 VFs
[12:00:43] [PASSED] 38 VFs
[12:00:43] [PASSED] 39 VFs
[12:00:43] [PASSED] 40 VFs
[12:00:43] [PASSED] 41 VFs
[12:00:43] [PASSED] 42 VFs
[12:00:43] [PASSED] 43 VFs
[12:00:43] [PASSED] 44 VFs
[12:00:43] [PASSED] 45 VFs
[12:00:43] [PASSED] 46 VFs
[12:00:43] [PASSED] 47 VFs
[12:00:43] [PASSED] 48 VFs
[12:00:43] [PASSED] 49 VFs
[12:00:43] [PASSED] 50 VFs
[12:00:43] [PASSED] 51 VFs
[12:00:43] [PASSED] 52 VFs
[12:00:43] [PASSED] 53 VFs
[12:00:43] [PASSED] 54 VFs
[12:00:43] [PASSED] 55 VFs
[12:00:43] [PASSED] 56 VFs
[12:00:43] [PASSED] 57 VFs
[12:00:43] [PASSED] 58 VFs
[12:00:43] [PASSED] 59 VFs
[12:00:43] [PASSED] 60 VFs
[12:00:43] [PASSED] 61 VFs
[12:00:43] [PASSED] 62 VFs
[12:00:43] [PASSED] 63 VFs
[12:00:43] ================= [PASSED] fair_doorbells ==================
[12:00:43] ======================== fair_ggtt ========================
[12:00:43] [PASSED] 1 VF
[12:00:43] [PASSED] 2 VFs
[12:00:43] [PASSED] 3 VFs
[12:00:43] [PASSED] 4 VFs
[12:00:43] [PASSED] 5 VFs
[12:00:43] [PASSED] 6 VFs
[12:00:43] [PASSED] 7 VFs
[12:00:43] [PASSED] 8 VFs
[12:00:43] [PASSED] 9 VFs
[12:00:43] [PASSED] 10 VFs
[12:00:43] [PASSED] 11 VFs
[12:00:43] [PASSED] 12 VFs
[12:00:43] [PASSED] 13 VFs
[12:00:43] [PASSED] 14 VFs
[12:00:43] [PASSED] 15 VFs
[12:00:43] [PASSED] 16 VFs
[12:00:43] [PASSED] 17 VFs
[12:00:43] [PASSED] 18 VFs
[12:00:43] [PASSED] 19 VFs
[12:00:43] [PASSED] 20 VFs
[12:00:43] [PASSED] 21 VFs
[12:00:43] [PASSED] 22 VFs
[12:00:43] [PASSED] 23 VFs
[12:00:43] [PASSED] 24 VFs
[12:00:43] [PASSED] 25 VFs
[12:00:43] [PASSED] 26 VFs
[12:00:43] [PASSED] 27 VFs
[12:00:43] [PASSED] 28 VFs
[12:00:43] [PASSED] 29 VFs
[12:00:43] [PASSED] 30 VFs
[12:00:43] [PASSED] 31 VFs
[12:00:43] [PASSED] 32 VFs
[12:00:43] [PASSED] 33 VFs
[12:00:43] [PASSED] 34 VFs
[12:00:43] [PASSED] 35 VFs
[12:00:43] [PASSED] 36 VFs
[12:00:43] [PASSED] 37 VFs
[12:00:43] [PASSED] 38 VFs
[12:00:43] [PASSED] 39 VFs
[12:00:43] [PASSED] 40 VFs
[12:00:43] [PASSED] 41 VFs
[12:00:43] [PASSED] 42 VFs
[12:00:43] [PASSED] 43 VFs
[12:00:43] [PASSED] 44 VFs
[12:00:43] [PASSED] 45 VFs
[12:00:43] [PASSED] 46 VFs
[12:00:43] [PASSED] 47 VFs
[12:00:43] [PASSED] 48 VFs
[12:00:43] [PASSED] 49 VFs
[12:00:43] [PASSED] 50 VFs
[12:00:43] [PASSED] 51 VFs
[12:00:43] [PASSED] 52 VFs
[12:00:43] [PASSED] 53 VFs
[12:00:43] [PASSED] 54 VFs
[12:00:43] [PASSED] 55 VFs
[12:00:43] [PASSED] 56 VFs
[12:00:43] [PASSED] 57 VFs
[12:00:43] [PASSED] 58 VFs
[12:00:43] [PASSED] 59 VFs
[12:00:43] [PASSED] 60 VFs
[12:00:43] [PASSED] 61 VFs
[12:00:43] [PASSED] 62 VFs
[12:00:43] [PASSED] 63 VFs
[12:00:43] ==================== [PASSED] fair_ggtt ====================
[12:00:43] ======================== fair_vram ========================
[12:00:43] [PASSED] 1 VF
[12:00:43] [PASSED] 2 VFs
[12:00:43] [PASSED] 3 VFs
[12:00:43] [PASSED] 4 VFs
[12:00:43] [PASSED] 5 VFs
[12:00:43] [PASSED] 6 VFs
[12:00:43] [PASSED] 7 VFs
[12:00:43] [PASSED] 8 VFs
[12:00:43] [PASSED] 9 VFs
[12:00:43] [PASSED] 10 VFs
[12:00:43] [PASSED] 11 VFs
[12:00:44] [PASSED] 12 VFs
[12:00:44] [PASSED] 13 VFs
[12:00:44] [PASSED] 14 VFs
[12:00:44] [PASSED] 15 VFs
[12:00:44] [PASSED] 16 VFs
[12:00:44] [PASSED] 17 VFs
[12:00:44] [PASSED] 18 VFs
[12:00:44] [PASSED] 19 VFs
[12:00:44] [PASSED] 20 VFs
[12:00:44] [PASSED] 21 VFs
[12:00:44] [PASSED] 22 VFs
[12:00:44] [PASSED] 23 VFs
[12:00:44] [PASSED] 24 VFs
[12:00:44] [PASSED] 25 VFs
[12:00:44] [PASSED] 26 VFs
[12:00:44] [PASSED] 27 VFs
[12:00:44] [PASSED] 28 VFs
[12:00:44] [PASSED] 29 VFs
[12:00:44] [PASSED] 30 VFs
[12:00:44] [PASSED] 31 VFs
[12:00:44] [PASSED] 32 VFs
[12:00:44] [PASSED] 33 VFs
[12:00:44] [PASSED] 34 VFs
[12:00:44] [PASSED] 35 VFs
[12:00:44] [PASSED] 36 VFs
[12:00:44] [PASSED] 37 VFs
[12:00:44] [PASSED] 38 VFs
[12:00:44] [PASSED] 39 VFs
[12:00:44] [PASSED] 40 VFs
[12:00:44] [PASSED] 41 VFs
[12:00:44] [PASSED] 42 VFs
[12:00:44] [PASSED] 43 VFs
[12:00:44] [PASSED] 44 VFs
[12:00:44] [PASSED] 45 VFs
[12:00:44] [PASSED] 46 VFs
[12:00:44] [PASSED] 47 VFs
[12:00:44] [PASSED] 48 VFs
[12:00:44] [PASSED] 49 VFs
[12:00:44] [PASSED] 50 VFs
[12:00:44] [PASSED] 51 VFs
[12:00:44] [PASSED] 52 VFs
[12:00:44] [PASSED] 53 VFs
[12:00:44] [PASSED] 54 VFs
[12:00:44] [PASSED] 55 VFs
[12:00:44] [PASSED] 56 VFs
[12:00:44] [PASSED] 57 VFs
[12:00:44] [PASSED] 58 VFs
[12:00:44] [PASSED] 59 VFs
[12:00:44] [PASSED] 60 VFs
[12:00:44] [PASSED] 61 VFs
[12:00:44] [PASSED] 62 VFs
[12:00:44] [PASSED] 63 VFs
[12:00:44] ==================== [PASSED] fair_vram ====================
[12:00:44] ================== [PASSED] pf_gt_config ===================
[12:00:44] ===================== lmtt (1 subtest) =====================
[12:00:44] ======================== test_ops =========================
[12:00:44] [PASSED] 2-level
[12:00:44] [PASSED] multi-level
[12:00:44] ==================== [PASSED] test_ops =====================
[12:00:44] ====================== [PASSED] lmtt =======================
[12:00:44] ================= pf_service (11 subtests) =================
[12:00:44] [PASSED] pf_negotiate_any
[12:00:44] [PASSED] pf_negotiate_base_match
[12:00:44] [PASSED] pf_negotiate_base_newer
[12:00:44] [PASSED] pf_negotiate_base_next
[12:00:44] [SKIPPED] pf_negotiate_base_older (no older minor)
[12:00:44] [PASSED] pf_negotiate_base_prev
[12:00:44] [PASSED] pf_negotiate_latest_match
[12:00:44] [PASSED] pf_negotiate_latest_newer
[12:00:44] [PASSED] pf_negotiate_latest_next
[12:00:44] [SKIPPED] pf_negotiate_latest_older (no older minor)
[12:00:44] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[12:00:44] =================== [PASSED] pf_service ====================
[12:00:44] ================= xe_guc_g2g (2 subtests) ==================
[12:00:44] ============== xe_live_guc_g2g_kunit_default ==============
[12:00:44] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[12:00:44] ============== xe_live_guc_g2g_kunit_allmem ===============
[12:00:44] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[12:00:44] =================== [SKIPPED] xe_guc_g2g ===================
[12:00:44] =================== xe_mocs (2 subtests) ===================
[12:00:44] ================ xe_live_mocs_kernel_kunit ================
[12:00:44] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[12:00:44] ================ xe_live_mocs_reset_kunit =================
[12:00:44] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[12:00:44] ==================== [SKIPPED] xe_mocs =====================
[12:00:44] ================= xe_migrate (2 subtests) ==================
[12:00:44] ================= xe_migrate_sanity_kunit =================
[12:00:44] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[12:00:44] ================== xe_validate_ccs_kunit ==================
[12:00:44] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[12:00:44] =================== [SKIPPED] xe_migrate ===================
[12:00:44] ================== xe_dma_buf (1 subtest) ==================
[12:00:44] ==================== xe_dma_buf_kunit =====================
[12:00:44] ================ [SKIPPED] xe_dma_buf_kunit ================
[12:00:44] =================== [SKIPPED] xe_dma_buf ===================
[12:00:44] ================= xe_bo_shrink (1 subtest) =================
[12:00:44] =================== xe_bo_shrink_kunit ====================
[12:00:44] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[12:00:44] ================== [SKIPPED] xe_bo_shrink ==================
[12:00:44] ==================== xe_bo (2 subtests) ====================
[12:00:44] ================== xe_ccs_migrate_kunit ===================
[12:00:44] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[12:00:44] ==================== xe_bo_evict_kunit ====================
[12:00:44] =============== [SKIPPED] xe_bo_evict_kunit ================
[12:00:44] ===================== [SKIPPED] xe_bo ======================
[12:00:44] ==================== args (13 subtests) ====================
[12:00:44] [PASSED] count_args_test
[12:00:44] [PASSED] call_args_example
[12:00:44] [PASSED] call_args_test
[12:00:44] [PASSED] drop_first_arg_example
[12:00:44] [PASSED] drop_first_arg_test
[12:00:44] [PASSED] first_arg_example
[12:00:44] [PASSED] first_arg_test
[12:00:44] [PASSED] last_arg_example
[12:00:44] [PASSED] last_arg_test
[12:00:44] [PASSED] pick_arg_example
[12:00:44] [PASSED] if_args_example
[12:00:44] [PASSED] if_args_test
[12:00:44] [PASSED] sep_comma_example
[12:00:44] ====================== [PASSED] args =======================
[12:00:44] =================== xe_pci (3 subtests) ====================
[12:00:44] ==================== check_graphics_ip ====================
[12:00:44] [PASSED] 12.00 Xe_LP
[12:00:44] [PASSED] 12.10 Xe_LP+
[12:00:44] [PASSED] 12.55 Xe_HPG
[12:00:44] [PASSED] 12.60 Xe_HPC
[12:00:44] [PASSED] 12.70 Xe_LPG
[12:00:44] [PASSED] 12.71 Xe_LPG
[12:00:44] [PASSED] 12.74 Xe_LPG+
[12:00:44] [PASSED] 20.01 Xe2_HPG
[12:00:44] [PASSED] 20.02 Xe2_HPG
[12:00:44] [PASSED] 20.04 Xe2_LPG
[12:00:44] [PASSED] 30.00 Xe3_LPG
[12:00:44] [PASSED] 30.01 Xe3_LPG
[12:00:44] [PASSED] 30.03 Xe3_LPG
[12:00:44] [PASSED] 30.04 Xe3_LPG
[12:00:44] [PASSED] 30.05 Xe3_LPG
[12:00:44] [PASSED] 35.10 Xe3p_LPG
[12:00:44] [PASSED] 35.11 Xe3p_XPC
[12:00:44] ================ [PASSED] check_graphics_ip ================
[12:00:44] ===================== check_media_ip ======================
[12:00:44] [PASSED] 12.00 Xe_M
[12:00:44] [PASSED] 12.55 Xe_HPM
[12:00:44] [PASSED] 13.00 Xe_LPM+
[12:00:44] [PASSED] 13.01 Xe2_HPM
[12:00:44] [PASSED] 20.00 Xe2_LPM
[12:00:44] [PASSED] 30.00 Xe3_LPM
[12:00:44] [PASSED] 30.02 Xe3_LPM
[12:00:44] [PASSED] 35.00 Xe3p_LPM
[12:00:44] [PASSED] 35.03 Xe3p_HPM
[12:00:44] ================= [PASSED] check_media_ip ==================
[12:00:44] =================== check_platform_desc ===================
[12:00:44] [PASSED] 0x9A60 (TIGERLAKE)
[12:00:44] [PASSED] 0x9A68 (TIGERLAKE)
[12:00:44] [PASSED] 0x9A70 (TIGERLAKE)
[12:00:44] [PASSED] 0x9A40 (TIGERLAKE)
[12:00:44] [PASSED] 0x9A49 (TIGERLAKE)
[12:00:44] [PASSED] 0x9A59 (TIGERLAKE)
[12:00:44] [PASSED] 0x9A78 (TIGERLAKE)
[12:00:44] [PASSED] 0x9AC0 (TIGERLAKE)
[12:00:44] [PASSED] 0x9AC9 (TIGERLAKE)
[12:00:44] [PASSED] 0x9AD9 (TIGERLAKE)
[12:00:44] [PASSED] 0x9AF8 (TIGERLAKE)
[12:00:44] [PASSED] 0x4C80 (ROCKETLAKE)
[12:00:44] [PASSED] 0x4C8A (ROCKETLAKE)
[12:00:44] [PASSED] 0x4C8B (ROCKETLAKE)
[12:00:44] [PASSED] 0x4C8C (ROCKETLAKE)
[12:00:44] [PASSED] 0x4C90 (ROCKETLAKE)
[12:00:44] [PASSED] 0x4C9A (ROCKETLAKE)
[12:00:44] [PASSED] 0x4680 (ALDERLAKE_S)
[12:00:44] [PASSED] 0x4682 (ALDERLAKE_S)
[12:00:44] [PASSED] 0x4688 (ALDERLAKE_S)
[12:00:44] [PASSED] 0x468A (ALDERLAKE_S)
[12:00:44] [PASSED] 0x468B (ALDERLAKE_S)
[12:00:44] [PASSED] 0x4690 (ALDERLAKE_S)
[12:00:44] [PASSED] 0x4692 (ALDERLAKE_S)
[12:00:44] [PASSED] 0x4693 (ALDERLAKE_S)
[12:00:44] [PASSED] 0x46A0 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46A1 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46A2 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46A3 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46A6 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46A8 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46AA (ALDERLAKE_P)
[12:00:44] [PASSED] 0x462A (ALDERLAKE_P)
[12:00:44] [PASSED] 0x4626 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x4628 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46B0 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46B1 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46B2 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46B3 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46C0 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46C1 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46C2 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46C3 (ALDERLAKE_P)
[12:00:44] [PASSED] 0x46D0 (ALDERLAKE_N)
[12:00:44] [PASSED] 0x46D1 (ALDERLAKE_N)
[12:00:44] [PASSED] 0x46D2 (ALDERLAKE_N)
[12:00:44] [PASSED] 0x46D3 (ALDERLAKE_N)
[12:00:44] [PASSED] 0x46D4 (ALDERLAKE_N)
[12:00:44] [PASSED] 0xA721 (ALDERLAKE_P)
[12:00:44] [PASSED] 0xA7A1 (ALDERLAKE_P)
[12:00:44] [PASSED] 0xA7A9 (ALDERLAKE_P)
[12:00:44] [PASSED] 0xA7AC (ALDERLAKE_P)
[12:00:44] [PASSED] 0xA7AD (ALDERLAKE_P)
[12:00:44] [PASSED] 0xA720 (ALDERLAKE_P)
[12:00:44] [PASSED] 0xA7A0 (ALDERLAKE_P)
[12:00:44] [PASSED] 0xA7A8 (ALDERLAKE_P)
[12:00:44] [PASSED] 0xA7AA (ALDERLAKE_P)
[12:00:44] [PASSED] 0xA7AB (ALDERLAKE_P)
[12:00:44] [PASSED] 0xA780 (ALDERLAKE_S)
[12:00:44] [PASSED] 0xA781 (ALDERLAKE_S)
[12:00:44] [PASSED] 0xA782 (ALDERLAKE_S)
[12:00:44] [PASSED] 0xA783 (ALDERLAKE_S)
[12:00:44] [PASSED] 0xA788 (ALDERLAKE_S)
[12:00:44] [PASSED] 0xA789 (ALDERLAKE_S)
[12:00:44] [PASSED] 0xA78A (ALDERLAKE_S)
[12:00:44] [PASSED] 0xA78B (ALDERLAKE_S)
[12:00:44] [PASSED] 0x4905 (DG1)
[12:00:44] [PASSED] 0x4906 (DG1)
[12:00:44] [PASSED] 0x4907 (DG1)
[12:00:44] [PASSED] 0x4908 (DG1)
[12:00:44] [PASSED] 0x4909 (DG1)
[12:00:44] [PASSED] 0x56C0 (DG2)
[12:00:44] [PASSED] 0x56C2 (DG2)
[12:00:44] [PASSED] 0x56C1 (DG2)
[12:00:44] [PASSED] 0x7D51 (METEORLAKE)
[12:00:44] [PASSED] 0x7DD1 (METEORLAKE)
[12:00:44] [PASSED] 0x7D41 (METEORLAKE)
[12:00:44] [PASSED] 0x7D67 (METEORLAKE)
[12:00:44] [PASSED] 0xB640 (METEORLAKE)
[12:00:44] [PASSED] 0x56A0 (DG2)
[12:00:44] [PASSED] 0x56A1 (DG2)
[12:00:44] [PASSED] 0x56A2 (DG2)
[12:00:44] [PASSED] 0x56BE (DG2)
[12:00:44] [PASSED] 0x56BF (DG2)
[12:00:44] [PASSED] 0x5690 (DG2)
[12:00:44] [PASSED] 0x5691 (DG2)
[12:00:44] [PASSED] 0x5692 (DG2)
[12:00:44] [PASSED] 0x56A5 (DG2)
[12:00:44] [PASSED] 0x56A6 (DG2)
[12:00:44] [PASSED] 0x56B0 (DG2)
[12:00:44] [PASSED] 0x56B1 (DG2)
[12:00:44] [PASSED] 0x56BA (DG2)
[12:00:44] [PASSED] 0x56BB (DG2)
[12:00:44] [PASSED] 0x56BC (DG2)
[12:00:44] [PASSED] 0x56BD (DG2)
[12:00:44] [PASSED] 0x5693 (DG2)
[12:00:44] [PASSED] 0x5694 (DG2)
[12:00:44] [PASSED] 0x5695 (DG2)
[12:00:44] [PASSED] 0x56A3 (DG2)
[12:00:44] [PASSED] 0x56A4 (DG2)
[12:00:44] [PASSED] 0x56B2 (DG2)
[12:00:44] [PASSED] 0x56B3 (DG2)
[12:00:44] [PASSED] 0x5696 (DG2)
[12:00:44] [PASSED] 0x5697 (DG2)
[12:00:44] [PASSED] 0xB69 (PVC)
[12:00:44] [PASSED] 0xB6E (PVC)
[12:00:44] [PASSED] 0xBD4 (PVC)
[12:00:44] [PASSED] 0xBD5 (PVC)
[12:00:44] [PASSED] 0xBD6 (PVC)
[12:00:44] [PASSED] 0xBD7 (PVC)
[12:00:44] [PASSED] 0xBD8 (PVC)
[12:00:44] [PASSED] 0xBD9 (PVC)
[12:00:44] [PASSED] 0xBDA (PVC)
[12:00:44] [PASSED] 0xBDB (PVC)
[12:00:44] [PASSED] 0xBE0 (PVC)
[12:00:44] [PASSED] 0xBE1 (PVC)
[12:00:44] [PASSED] 0xBE5 (PVC)
[12:00:44] [PASSED] 0x7D40 (METEORLAKE)
[12:00:44] [PASSED] 0x7D45 (METEORLAKE)
[12:00:44] [PASSED] 0x7D55 (METEORLAKE)
[12:00:44] [PASSED] 0x7D60 (METEORLAKE)
[12:00:44] [PASSED] 0x7DD5 (METEORLAKE)
[12:00:44] [PASSED] 0x6420 (LUNARLAKE)
[12:00:44] [PASSED] 0x64A0 (LUNARLAKE)
[12:00:44] [PASSED] 0x64B0 (LUNARLAKE)
[12:00:44] [PASSED] 0xE202 (BATTLEMAGE)
[12:00:44] [PASSED] 0xE209 (BATTLEMAGE)
[12:00:44] [PASSED] 0xE20B (BATTLEMAGE)
[12:00:44] [PASSED] 0xE20C (BATTLEMAGE)
[12:00:44] [PASSED] 0xE20D (BATTLEMAGE)
[12:00:44] [PASSED] 0xE210 (BATTLEMAGE)
[12:00:44] [PASSED] 0xE211 (BATTLEMAGE)
[12:00:44] [PASSED] 0xE212 (BATTLEMAGE)
[12:00:44] [PASSED] 0xE216 (BATTLEMAGE)
[12:00:44] [PASSED] 0xE220 (BATTLEMAGE)
[12:00:44] [PASSED] 0xE221 (BATTLEMAGE)
[12:00:44] [PASSED] 0xE222 (BATTLEMAGE)
[12:00:44] [PASSED] 0xE223 (BATTLEMAGE)
[12:00:44] [PASSED] 0xB080 (PANTHERLAKE)
[12:00:44] [PASSED] 0xB081 (PANTHERLAKE)
[12:00:44] [PASSED] 0xB082 (PANTHERLAKE)
[12:00:44] [PASSED] 0xB083 (PANTHERLAKE)
[12:00:44] [PASSED] 0xB084 (PANTHERLAKE)
[12:00:44] [PASSED] 0xB085 (PANTHERLAKE)
[12:00:44] [PASSED] 0xB086 (PANTHERLAKE)
[12:00:44] [PASSED] 0xB087 (PANTHERLAKE)
[12:00:44] [PASSED] 0xB08F (PANTHERLAKE)
[12:00:44] [PASSED] 0xB090 (PANTHERLAKE)
[12:00:44] [PASSED] 0xB0A0 (PANTHERLAKE)
[12:00:44] [PASSED] 0xB0B0 (PANTHERLAKE)
[12:00:44] [PASSED] 0xFD80 (PANTHERLAKE)
[12:00:44] [PASSED] 0xFD81 (PANTHERLAKE)
[12:00:44] [PASSED] 0xD740 (NOVALAKE_S)
[12:00:44] [PASSED] 0xD741 (NOVALAKE_S)
[12:00:44] [PASSED] 0xD742 (NOVALAKE_S)
[12:00:44] [PASSED] 0xD743 (NOVALAKE_S)
[12:00:44] [PASSED] 0xD745 (NOVALAKE_S)
[12:00:44] [PASSED] 0xD74A (NOVALAKE_S)
[12:00:44] [PASSED] 0xD74B (NOVALAKE_S)
[12:00:44] [PASSED] 0x674C (CRESCENTISLAND)
[12:00:44] [PASSED] 0x674D (CRESCENTISLAND)
[12:00:44] [PASSED] 0x674E (CRESCENTISLAND)
[12:00:44] [PASSED] 0x674F (CRESCENTISLAND)
[12:00:44] [PASSED] 0x6750 (CRESCENTISLAND)
[12:00:44] [PASSED] 0xD750 (NOVALAKE_P)
[12:00:44] [PASSED] 0xD751 (NOVALAKE_P)
[12:00:44] [PASSED] 0xD752 (NOVALAKE_P)
[12:00:44] [PASSED] 0xD753 (NOVALAKE_P)
[12:00:44] [PASSED] 0xD754 (NOVALAKE_P)
[12:00:44] [PASSED] 0xD755 (NOVALAKE_P)
[12:00:44] [PASSED] 0xD756 (NOVALAKE_P)
[12:00:44] [PASSED] 0xD757 (NOVALAKE_P)
[12:00:44] [PASSED] 0xD75F (NOVALAKE_P)
[12:00:44] =============== [PASSED] check_platform_desc ===============
[12:00:44] ===================== [PASSED] xe_pci ======================
[12:00:44] ============= xe_rtp_tables_test (4 subtests) ==============
[12:00:44] ================== xe_rtp_table_gt_test ===================
[12:00:44] [PASSED] gt_was/14011060649
[12:00:44] [PASSED] gt_was/14011059788
[12:00:44] [PASSED] gt_was/14015795083
[12:00:44] [PASSED] gt_was/16021867713
[12:00:44] [PASSED] gt_was/14019449301
[12:00:44] [PASSED] gt_was/16028005424
[12:00:44] [PASSED] gt_was/14026578760
[12:00:44] [PASSED] gt_was/1409420604
[12:00:44] [PASSED] gt_was/1408615072
[12:00:44] [PASSED] gt_was/22010523718
[12:00:44] [PASSED] gt_was/14011006942
[12:00:44] [PASSED] gt_was/14014830051
[12:00:44] [PASSED] gt_was/18018781329
[12:00:44] [PASSED] gt_was/1509235366
[12:00:44] [PASSED] gt_was/18018781329
[12:00:44] [PASSED] gt_was/16016694945
[12:00:44] [PASSED] gt_was/14018575942
[12:00:44] [PASSED] gt_was/22016670082
[12:00:44] [PASSED] gt_was/22016670082
[12:00:44] [PASSED] gt_was/14017421178
[12:00:44] [PASSED] gt_was/16025250150
[12:00:44] [PASSED] gt_was/14021871409
[12:00:44] [PASSED] gt_was/16021865536
[12:00:44] [PASSED] gt_was/14021486841
[12:00:44] [PASSED] gt_was/14025160223
[12:00:44] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[12:00:44] [PASSED] gt_was/14025635424
[12:00:44] [PASSED] gt_was/16028005424
[12:00:44] ============== [PASSED] xe_rtp_table_gt_test ===============
[12:00:44] ================== xe_rtp_table_gt_test ===================
[12:00:44] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[12:00:44] [PASSED] gt_tunings/Tuning: 32B Access Enable
[12:00:44] [PASSED] gt_tunings/Tuning: L3 cache
[12:00:44] [PASSED] gt_tunings/Tuning: L3 cache - media
[12:00:44] [PASSED] gt_tunings/Tuning: Compression Overfetch
[12:00:44] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[12:00:44] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[12:00:44] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[12:00:44] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[12:00:44] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[12:00:44] [PASSED] gt_tunings/Tuning: Stateless compression control
[12:00:44] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[12:00:44] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[12:00:44] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[12:00:44] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[12:00:44] ============== [PASSED] xe_rtp_table_gt_test ===============
[12:00:44] ================== xe_rtp_table_oob_test ==================
[12:00:44] [PASSED] oob_was/1607983814
[12:00:44] [PASSED] oob_was/16010904313
[12:00:44] [PASSED] oob_was/18022495364
[12:00:44] [PASSED] oob_was/22012773006
[12:00:44] [PASSED] oob_was/14014475959
[12:00:44] [PASSED] oob_was/22011391025
[12:00:44] [PASSED] oob_was/22012727170
[12:00:44] [PASSED] oob_was/22012727685
[12:00:44] [PASSED] oob_was/22016596838
[12:00:44] [PASSED] oob_was/18020744125
[12:00:44] [PASSED] oob_was/1409600907
[12:00:44] [PASSED] oob_was/22014953428
[12:00:44] [PASSED] oob_was/16017236439
[12:00:44] [PASSED] oob_was/14019821291
[12:00:44] [PASSED] oob_was/14015076503
[12:00:44] [PASSED] oob_was/14018913170
[12:00:44] [PASSED] oob_was/14018094691
[12:00:44] [PASSED] oob_was/18024947630
[12:00:44] [PASSED] oob_was/16022287689
[12:00:44] [PASSED] oob_was/13011645652
[12:00:44] [PASSED] oob_was/14022293748
[12:00:44] [PASSED] oob_was/22019794406
[12:00:44] [PASSED] oob_was/22019338487
[12:00:44] [PASSED] oob_was/16023588340
[12:00:44] [PASSED] oob_was/14019789679
[12:00:44] [PASSED] oob_was/14022866841
[12:00:44] [PASSED] oob_was/16021333562
[12:00:44] [PASSED] oob_was/14016712196
[12:00:44] [PASSED] oob_was/14015568240
[12:00:44] [PASSED] oob_was/18013179988
[12:00:44] [PASSED] oob_was/1508761755
[12:00:44] [PASSED] oob_was/16023105232
[12:00:44] [PASSED] oob_was/16026508708
[12:00:44] [PASSED] oob_was/14020001231
[12:00:44] [PASSED] oob_was/16023683509
[12:00:44] [PASSED] oob_was/14025515070
[12:00:44] [PASSED] oob_was/15015404425_disable
[12:00:44] [PASSED] oob_was/16026007364
[12:00:44] [PASSED] oob_was/14020316580
[12:00:44] [PASSED] oob_was/14025883347
[12:00:44] [PASSED] oob_was/16029380221
[12:00:44] ============== [PASSED] xe_rtp_table_oob_test ==============
[12:00:44] ================ xe_rtp_table_dev_oob_test ================
[12:00:44] [PASSED] device_oob_was/22010954014
[12:00:44] [PASSED] device_oob_was/15015404425
[12:00:44] [PASSED] device_oob_was/22019338487_display
[12:00:44] [PASSED] device_oob_was/14022085890
[12:00:44] [PASSED] device_oob_was/14026539277
[12:00:44] [PASSED] device_oob_was/14026633728
[12:00:44] [PASSED] device_oob_was/14026746987
[12:00:44] [PASSED] device_oob_was/14026779378
[12:00:44] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[12:00:44] =============== [PASSED] xe_rtp_tables_test ================
[12:00:44] =================== xe_rtp (3 subtests) ====================
[12:00:44] =================== xe_rtp_rules_tests ====================
[12:00:44] [PASSED] no
[12:00:44] [PASSED] yes
[12:00:44] [PASSED] no-and-no
[12:00:44] [PASSED] no-and-yes
[12:00:44] [PASSED] yes-and-no
[12:00:44] [PASSED] yes-and-yes
[12:00:44] [PASSED] no-or-no
[12:00:44] [PASSED] no-or-yes
[12:00:44] [PASSED] yes-or-no
[12:00:44] [PASSED] yes-or-yes
[12:00:44] [PASSED] no-yes-or-yes-no
[12:00:44] [PASSED] no-yes-or-yes-yes
[12:00:44] [PASSED] yes-yes-or-no-yes
[12:00:44] [PASSED] yes-yes-or-yes-yes
[12:00:44] [PASSED] no-no-or-yes-or-no
[12:00:44] [PASSED] or
[12:00:44] [PASSED] or-yes
[12:00:44] [PASSED] or-no
[12:00:44] [PASSED] yes-or
[12:00:44] [PASSED] no-or
[12:00:44] [PASSED] no-or-or-yes
[12:00:44] [PASSED] yes-or-or-no
[12:00:44] [PASSED] no-or-or-no
[12:00:44] [PASSED] missing-context-engine-class
[12:00:44] [PASSED] missing-context-engine-class-or-yes
[12:00:44] [PASSED] missing-context-engine-class-or-or-yes
[12:00:44] =============== [PASSED] xe_rtp_rules_tests ================
[12:00:44] =============== xe_rtp_process_to_sr_tests ================
[12:00:44] [PASSED] coalesce-same-reg
[12:00:44] [PASSED] coalesce-same-reg-literal-and-func
[12:00:44] [PASSED] no-match-no-add
[12:00:44] [PASSED] two-regs-two-entries
[12:00:44] [PASSED] clr-one-set-other
[12:00:44] [PASSED] set-field
[12:00:44] [PASSED] conflict-duplicate
[12:00:44] [PASSED] conflict-not-disjoint
[12:00:44] [PASSED] conflict-not-disjoint-literal-and-func
[12:00:44] [PASSED] conflict-reg-type
[12:00:44] [PASSED] bad-mcr-reg-forced-to-regular
[12:00:44] [PASSED] bad-regular-reg-forced-to-mcr
[12:00:44] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[12:00:44] ================== xe_rtp_process_tests ===================
[12:00:44] [PASSED] active1
[12:00:44] [PASSED] active2
[12:00:44] [PASSED] active-inactive
[12:00:44] [PASSED] inactive-active
[12:00:44] [PASSED] inactive-active-inactive
[12:00:44] [PASSED] inactive-inactive-inactive
[12:00:44] ============== [PASSED] xe_rtp_process_tests ===============
[12:00:44] ===================== [PASSED] xe_rtp ======================
[12:00:44] ==================== xe_wa (1 subtest) =====================
[12:00:44] ======================== xe_wa_gt =========================
[12:00:44] [PASSED] TIGERLAKE B0
[12:00:44] [PASSED] DG1 A0
[12:00:44] [PASSED] DG1 B0
[12:00:44] [PASSED] ALDERLAKE_S A0
[12:00:44] [PASSED] ALDERLAKE_S B0
[12:00:44] [PASSED] ALDERLAKE_S C0
[12:00:44] [PASSED] ALDERLAKE_S D0
[12:00:44] [PASSED] ALDERLAKE_P A0
[12:00:44] [PASSED] ALDERLAKE_P B0
[12:00:44] [PASSED] ALDERLAKE_P C0
[12:00:44] [PASSED] ALDERLAKE_S RPLS D0
[12:00:44] [PASSED] ALDERLAKE_P RPLU E0
[12:00:44] [PASSED] DG2 G10 C0
[12:00:44] [PASSED] DG2 G11 B1
[12:00:44] [PASSED] DG2 G12 A1
[12:00:44] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[12:00:44] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[12:00:44] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[12:00:44] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[12:00:44] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[12:00:44] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[12:00:44] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[12:00:44] ==================== [PASSED] xe_wa_gt =====================
[12:00:44] ====================== [PASSED] xe_wa ======================
[12:00:44] ============================================================
[12:00:44] Testing complete. Ran 719 tests: passed: 701, skipped: 18
[12:00:44] Elapsed time: 36.860s total, 4.401s configuring, 31.793s building, 0.639s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[12:00:44] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:00:46] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[12:01:10] Starting KUnit Kernel (1/1)...
[12:01:10] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:01:10] ============ drm_test_pick_cmdline (2 subtests) ============
[12:01:10] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[12:01:10] =============== drm_test_pick_cmdline_named ===============
[12:01:10] [PASSED] NTSC
[12:01:10] [PASSED] NTSC-J
[12:01:10] [PASSED] PAL
[12:01:10] [PASSED] PAL-M
[12:01:10] =========== [PASSED] drm_test_pick_cmdline_named ===========
[12:01:10] ============== [PASSED] drm_test_pick_cmdline ==============
[12:01:10] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[12:01:10] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[12:01:10] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[12:01:10] =========== drm_validate_clone_mode (2 subtests) ===========
[12:01:10] ============== drm_test_check_in_clone_mode ===============
[12:01:10] [PASSED] in_clone_mode
[12:01:10] [PASSED] not_in_clone_mode
[12:01:10] ========== [PASSED] drm_test_check_in_clone_mode ===========
[12:01:10] =============== drm_test_check_valid_clones ===============
[12:01:10] [PASSED] not_in_clone_mode
[12:01:10] [PASSED] valid_clone
[12:01:10] [PASSED] invalid_clone
[12:01:10] =========== [PASSED] drm_test_check_valid_clones ===========
[12:01:10] ============= [PASSED] drm_validate_clone_mode =============
[12:01:10] ============= drm_validate_modeset (1 subtest) =============
[12:01:10] [PASSED] drm_test_check_connector_changed_modeset
[12:01:10] ============== [PASSED] drm_validate_modeset ===============
[12:01:10] ====== drm_test_bridge_get_current_state (2 subtests) ======
[12:01:10] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[12:01:10] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[12:01:10] ======== [PASSED] drm_test_bridge_get_current_state ========
[12:01:10] ====== drm_test_bridge_helper_reset_crtc (4 subtests) ======
[12:01:10] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[12:01:10] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[12:01:10] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[12:01:10] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[12:01:10] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[12:01:10] ============== drm_bridge_alloc (2 subtests) ===============
[12:01:10] [PASSED] drm_test_drm_bridge_alloc_basic
[12:01:10] [PASSED] drm_test_drm_bridge_alloc_get_put
[12:01:10] ================ [PASSED] drm_bridge_alloc =================
[12:01:10] ============= drm_bridge_bus_fmt (5 subtests) ==============
[12:01:10] [PASSED] drm_test_bridge_rgb_yuv_rgb
[12:01:10] [PASSED] drm_test_bridge_must_convert_to_yuv444
[12:01:10] [PASSED] drm_test_bridge_hdmi_auto_rgb
[12:01:10] [PASSED] drm_test_bridge_auto_first
[12:01:10] [PASSED] drm_test_bridge_rgb_yuv_no_path
[12:01:10] =============== [PASSED] drm_bridge_bus_fmt ================
[12:01:10] ============= drm_cmdline_parser (40 subtests) =============
[12:01:10] [PASSED] drm_test_cmdline_force_d_only
[12:01:10] [PASSED] drm_test_cmdline_force_D_only_dvi
[12:01:10] [PASSED] drm_test_cmdline_force_D_only_hdmi
[12:01:10] [PASSED] drm_test_cmdline_force_D_only_not_digital
[12:01:10] [PASSED] drm_test_cmdline_force_e_only
[12:01:10] [PASSED] drm_test_cmdline_res
[12:01:10] [PASSED] drm_test_cmdline_res_vesa
[12:01:10] [PASSED] drm_test_cmdline_res_vesa_rblank
[12:01:10] [PASSED] drm_test_cmdline_res_rblank
[12:01:10] [PASSED] drm_test_cmdline_res_bpp
[12:01:10] [PASSED] drm_test_cmdline_res_refresh
[12:01:10] [PASSED] drm_test_cmdline_res_bpp_refresh
[12:01:10] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[12:01:10] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[12:01:10] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[12:01:10] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[12:01:10] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[12:01:10] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[12:01:10] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[12:01:10] [PASSED] drm_test_cmdline_res_margins_force_on
[12:01:10] [PASSED] drm_test_cmdline_res_vesa_margins
[12:01:10] [PASSED] drm_test_cmdline_name
[12:01:10] [PASSED] drm_test_cmdline_name_bpp
[12:01:10] [PASSED] drm_test_cmdline_name_option
[12:01:10] [PASSED] drm_test_cmdline_name_bpp_option
[12:01:10] [PASSED] drm_test_cmdline_rotate_0
[12:01:10] [PASSED] drm_test_cmdline_rotate_90
[12:01:10] [PASSED] drm_test_cmdline_rotate_180
[12:01:10] [PASSED] drm_test_cmdline_rotate_270
[12:01:10] [PASSED] drm_test_cmdline_hmirror
[12:01:10] [PASSED] drm_test_cmdline_vmirror
[12:01:10] [PASSED] drm_test_cmdline_margin_options
[12:01:10] [PASSED] drm_test_cmdline_multiple_options
[12:01:10] [PASSED] drm_test_cmdline_bpp_extra_and_option
[12:01:10] [PASSED] drm_test_cmdline_extra_and_option
[12:01:10] [PASSED] drm_test_cmdline_freestanding_options
[12:01:10] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[12:01:10] [PASSED] drm_test_cmdline_panel_orientation
[12:01:10] ================ drm_test_cmdline_invalid =================
[12:01:10] [PASSED] margin_only
[12:01:10] [PASSED] interlace_only
[12:01:10] [PASSED] res_missing_x
[12:01:10] [PASSED] res_missing_y
[12:01:10] [PASSED] res_bad_y
[12:01:10] [PASSED] res_missing_y_bpp
[12:01:10] [PASSED] res_bad_bpp
[12:01:10] [PASSED] res_bad_refresh
[12:01:10] [PASSED] res_bpp_refresh_force_on_off
[12:01:10] [PASSED] res_invalid_mode
[12:01:10] [PASSED] res_bpp_wrong_place_mode
[12:01:10] [PASSED] name_bpp_refresh
[12:01:10] [PASSED] name_refresh
[12:01:10] [PASSED] name_refresh_wrong_mode
[12:01:10] [PASSED] name_refresh_invalid_mode
[12:01:10] [PASSED] rotate_multiple
[12:01:10] [PASSED] rotate_invalid_val
[12:01:10] [PASSED] rotate_truncated
[12:01:10] [PASSED] invalid_option
[12:01:10] [PASSED] invalid_tv_option
[12:01:10] [PASSED] truncated_tv_option
[12:01:10] ============ [PASSED] drm_test_cmdline_invalid =============
[12:01:10] =============== drm_test_cmdline_tv_options ===============
[12:01:10] [PASSED] NTSC
[12:01:10] [PASSED] NTSC_443
[12:01:10] [PASSED] NTSC_J
[12:01:10] [PASSED] PAL
[12:01:10] [PASSED] PAL_M
[12:01:10] [PASSED] PAL_N
[12:01:10] [PASSED] SECAM
[12:01:10] [PASSED] MONO_525
[12:01:10] [PASSED] MONO_625
[12:01:10] =========== [PASSED] drm_test_cmdline_tv_options ===========
[12:01:10] =============== [PASSED] drm_cmdline_parser ================
[12:01:10] ========== drmm_connector_hdmi_init (20 subtests) ==========
[12:01:10] [PASSED] drm_test_connector_hdmi_init_valid
[12:01:10] [PASSED] drm_test_connector_hdmi_init_bpc_8
[12:01:10] [PASSED] drm_test_connector_hdmi_init_bpc_10
[12:01:10] [PASSED] drm_test_connector_hdmi_init_bpc_12
[12:01:10] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[12:01:10] [PASSED] drm_test_connector_hdmi_init_bpc_null
[12:01:10] [PASSED] drm_test_connector_hdmi_init_formats_empty
[12:01:10] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[12:01:10] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[12:01:10] [PASSED] supported_formats=0x9 yuv420_allowed=1
[12:01:10] [PASSED] supported_formats=0x9 yuv420_allowed=0
[12:01:10] [PASSED] supported_formats=0x5 yuv420_allowed=1
[12:01:10] [PASSED] supported_formats=0x5 yuv420_allowed=0
[12:01:10] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[12:01:10] [PASSED] drm_test_connector_hdmi_init_null_ddc
[12:01:10] [PASSED] drm_test_connector_hdmi_init_null_product
[12:01:10] [PASSED] drm_test_connector_hdmi_init_null_vendor
[12:01:10] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[12:01:10] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[12:01:10] [PASSED] drm_test_connector_hdmi_init_product_valid
[12:01:10] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[12:01:10] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[12:01:10] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[12:01:10] ========= drm_test_connector_hdmi_init_type_valid =========
[12:01:10] [PASSED] HDMI-A
[12:01:10] [PASSED] HDMI-B
[12:01:10] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[12:01:10] ======== drm_test_connector_hdmi_init_type_invalid ========
[12:01:10] [PASSED] Unknown
[12:01:10] [PASSED] VGA
[12:01:10] [PASSED] DVI-I
[12:01:10] [PASSED] DVI-D
[12:01:10] [PASSED] DVI-A
[12:01:10] [PASSED] Composite
[12:01:10] [PASSED] SVIDEO
[12:01:10] [PASSED] LVDS
[12:01:10] [PASSED] Component
[12:01:10] [PASSED] DIN
[12:01:10] [PASSED] DP
[12:01:10] [PASSED] TV
[12:01:10] [PASSED] eDP
[12:01:10] [PASSED] Virtual
[12:01:10] [PASSED] DSI
[12:01:10] [PASSED] DPI
[12:01:10] [PASSED] Writeback
[12:01:10] [PASSED] SPI
[12:01:10] [PASSED] USB
[12:01:10] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[12:01:10] ============ [PASSED] drmm_connector_hdmi_init =============
[12:01:10] ============= drmm_connector_init (3 subtests) =============
[12:01:10] [PASSED] drm_test_drmm_connector_init
[12:01:10] [PASSED] drm_test_drmm_connector_init_null_ddc
[12:01:10] ========= drm_test_drmm_connector_init_type_valid =========
[12:01:10] [PASSED] Unknown
[12:01:10] [PASSED] VGA
[12:01:10] [PASSED] DVI-I
[12:01:10] [PASSED] DVI-D
[12:01:10] [PASSED] DVI-A
[12:01:10] [PASSED] Composite
[12:01:10] [PASSED] SVIDEO
[12:01:10] [PASSED] LVDS
[12:01:10] [PASSED] Component
[12:01:10] [PASSED] DIN
[12:01:10] [PASSED] DP
[12:01:10] [PASSED] HDMI-A
[12:01:10] [PASSED] HDMI-B
[12:01:10] [PASSED] TV
[12:01:10] [PASSED] eDP
[12:01:10] [PASSED] Virtual
[12:01:10] [PASSED] DSI
[12:01:10] [PASSED] DPI
[12:01:10] [PASSED] Writeback
[12:01:10] [PASSED] SPI
[12:01:10] [PASSED] USB
[12:01:10] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[12:01:10] =============== [PASSED] drmm_connector_init ===============
[12:01:10] ========= drm_connector_dynamic_init (6 subtests) ==========
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_init
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_init_properties
[12:01:10] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[12:01:10] [PASSED] Unknown
[12:01:10] [PASSED] VGA
[12:01:10] [PASSED] DVI-I
[12:01:10] [PASSED] DVI-D
[12:01:10] [PASSED] DVI-A
[12:01:10] [PASSED] Composite
[12:01:10] [PASSED] SVIDEO
[12:01:10] [PASSED] LVDS
[12:01:10] [PASSED] Component
[12:01:10] [PASSED] DIN
[12:01:10] [PASSED] DP
[12:01:10] [PASSED] HDMI-A
[12:01:10] [PASSED] HDMI-B
[12:01:10] [PASSED] TV
[12:01:10] [PASSED] eDP
[12:01:10] [PASSED] Virtual
[12:01:10] [PASSED] DSI
[12:01:10] [PASSED] DPI
[12:01:10] [PASSED] Writeback
[12:01:10] [PASSED] SPI
[12:01:10] [PASSED] USB
[12:01:10] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[12:01:10] ======== drm_test_drm_connector_dynamic_init_name =========
[12:01:10] [PASSED] Unknown
[12:01:10] [PASSED] VGA
[12:01:10] [PASSED] DVI-I
[12:01:10] [PASSED] DVI-D
[12:01:10] [PASSED] DVI-A
[12:01:10] [PASSED] Composite
[12:01:10] [PASSED] SVIDEO
[12:01:10] [PASSED] LVDS
[12:01:10] [PASSED] Component
[12:01:10] [PASSED] DIN
[12:01:10] [PASSED] DP
[12:01:10] [PASSED] HDMI-A
[12:01:10] [PASSED] HDMI-B
[12:01:10] [PASSED] TV
[12:01:10] [PASSED] eDP
[12:01:10] [PASSED] Virtual
[12:01:10] [PASSED] DSI
[12:01:10] [PASSED] DPI
[12:01:10] [PASSED] Writeback
[12:01:10] [PASSED] SPI
[12:01:10] [PASSED] USB
[12:01:10] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[12:01:10] =========== [PASSED] drm_connector_dynamic_init ============
[12:01:10] ==== drm_connector_dynamic_register_early (4 subtests) =====
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[12:01:10] ====== [PASSED] drm_connector_dynamic_register_early =======
[12:01:10] ======= drm_connector_dynamic_register (7 subtests) ========
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[12:01:10] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[12:01:10] ========= [PASSED] drm_connector_dynamic_register ==========
[12:01:10] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[12:01:10] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[12:01:10] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[12:01:10] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[12:01:10] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[12:01:10] ========== drm_test_get_tv_mode_from_name_valid ===========
[12:01:10] [PASSED] NTSC
[12:01:10] [PASSED] NTSC-443
[12:01:10] [PASSED] NTSC-J
[12:01:10] [PASSED] PAL
[12:01:10] [PASSED] PAL-M
[12:01:10] [PASSED] PAL-N
[12:01:10] [PASSED] SECAM
[12:01:10] [PASSED] Mono
[12:01:10] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[12:01:10] [PASSED] drm_test_get_tv_mode_from_name_truncated
[12:01:10] ============ [PASSED] drm_get_tv_mode_from_name ============
[12:01:10] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[12:01:10] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[12:01:10] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[12:01:10] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[12:01:10] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[12:01:10] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[12:01:10] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[12:01:10] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[12:01:10] [PASSED] VIC 96
[12:01:10] [PASSED] VIC 97
[12:01:10] [PASSED] VIC 101
[12:01:10] [PASSED] VIC 102
[12:01:10] [PASSED] VIC 106
[12:01:10] [PASSED] VIC 107
[12:01:10] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[12:01:10] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[12:01:10] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[12:01:10] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[12:01:10] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[12:01:10] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[12:01:10] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[12:01:10] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[12:01:10] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[12:01:10] [PASSED] Automatic
[12:01:10] [PASSED] Full
[12:01:10] [PASSED] Limited 16:235
[12:01:10] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[12:01:10] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[12:01:10] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[12:01:10] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[12:01:10] === drm_test_drm_hdmi_connector_get_output_format_name ====
[12:01:10] [PASSED] RGB
[12:01:10] [PASSED] YUV 4:2:0
[12:01:10] [PASSED] YUV 4:2:2
[12:01:10] [PASSED] YUV 4:4:4
[12:01:10] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[12:01:10] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[12:01:10] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[12:01:10] ============= drm_damage_helper (21 subtests) ==============
[12:01:10] [PASSED] drm_test_damage_iter_no_damage
[12:01:10] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[12:01:10] [PASSED] drm_test_damage_iter_no_damage_src_moved
[12:01:10] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[12:01:10] [PASSED] drm_test_damage_iter_no_damage_not_visible
[12:01:10] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[12:01:10] [PASSED] drm_test_damage_iter_no_damage_no_fb
[12:01:10] [PASSED] drm_test_damage_iter_simple_damage
[12:01:10] [PASSED] drm_test_damage_iter_single_damage
[12:01:10] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[12:01:10] [PASSED] drm_test_damage_iter_single_damage_outside_src
[12:01:10] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[12:01:10] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[12:01:10] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[12:01:10] [PASSED] drm_test_damage_iter_single_damage_src_moved
[12:01:10] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[12:01:10] [PASSED] drm_test_damage_iter_damage
[12:01:10] [PASSED] drm_test_damage_iter_damage_one_intersect
[12:01:10] [PASSED] drm_test_damage_iter_damage_one_outside
[12:01:10] [PASSED] drm_test_damage_iter_damage_src_moved
[12:01:10] [PASSED] drm_test_damage_iter_damage_not_visible
[12:01:10] ================ [PASSED] drm_damage_helper ================
[12:01:10] ============== drm_dp_mst_helper (3 subtests) ==============
[12:01:10] ============== drm_test_dp_mst_calc_pbn_mode ==============
[12:01:10] [PASSED] Clock 154000 BPP 30 DSC disabled
[12:01:10] [PASSED] Clock 234000 BPP 30 DSC disabled
[12:01:10] [PASSED] Clock 297000 BPP 24 DSC disabled
[12:01:10] [PASSED] Clock 332880 BPP 24 DSC enabled
[12:01:10] [PASSED] Clock 324540 BPP 24 DSC enabled
[12:01:10] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[12:01:10] ============== drm_test_dp_mst_calc_pbn_div ===============
[12:01:10] [PASSED] Link rate 2000000 lane count 4
[12:01:10] [PASSED] Link rate 2000000 lane count 2
[12:01:10] [PASSED] Link rate 2000000 lane count 1
[12:01:10] [PASSED] Link rate 1350000 lane count 4
[12:01:10] [PASSED] Link rate 1350000 lane count 2
[12:01:10] [PASSED] Link rate 1350000 lane count 1
[12:01:10] [PASSED] Link rate 1000000 lane count 4
[12:01:10] [PASSED] Link rate 1000000 lane count 2
[12:01:10] [PASSED] Link rate 1000000 lane count 1
[12:01:10] [PASSED] Link rate 810000 lane count 4
[12:01:10] [PASSED] Link rate 810000 lane count 2
[12:01:10] [PASSED] Link rate 810000 lane count 1
[12:01:10] [PASSED] Link rate 540000 lane count 4
[12:01:10] [PASSED] Link rate 540000 lane count 2
[12:01:10] [PASSED] Link rate 540000 lane count 1
[12:01:10] [PASSED] Link rate 270000 lane count 4
[12:01:10] [PASSED] Link rate 270000 lane count 2
[12:01:10] [PASSED] Link rate 270000 lane count 1
[12:01:10] [PASSED] Link rate 162000 lane count 4
[12:01:10] [PASSED] Link rate 162000 lane count 2
[12:01:10] [PASSED] Link rate 162000 lane count 1
[12:01:10] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[12:01:10] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[12:01:10] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[12:01:10] [PASSED] DP_POWER_UP_PHY with port number
[12:01:10] [PASSED] DP_POWER_DOWN_PHY with port number
[12:01:10] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[12:01:10] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[12:01:10] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[12:01:10] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[12:01:10] [PASSED] DP_QUERY_PAYLOAD with port number
[12:01:10] [PASSED] DP_QUERY_PAYLOAD with VCPI
[12:01:10] [PASSED] DP_REMOTE_DPCD_READ with port number
[12:01:10] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[12:01:10] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[12:01:10] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[12:01:10] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[12:01:10] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[12:01:10] [PASSED] DP_REMOTE_I2C_READ with port number
[12:01:10] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[12:01:10] [PASSED] DP_REMOTE_I2C_READ with transactions array
[12:01:10] [PASSED] DP_REMOTE_I2C_WRITE with port number
[12:01:10] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[12:01:10] [PASSED] DP_REMOTE_I2C_WRITE with data array
[12:01:10] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[12:01:10] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[12:01:10] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[12:01:10] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[12:01:10] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[12:01:10] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[12:01:10] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[12:01:10] ================ [PASSED] drm_dp_mst_helper ================
[12:01:10] ================== drm_exec (7 subtests) ===================
[12:01:10] [PASSED] sanitycheck
[12:01:10] [PASSED] test_lock
[12:01:10] [PASSED] test_lock_unlock
[12:01:10] [PASSED] test_duplicates
[12:01:10] [PASSED] test_prepare
[12:01:10] [PASSED] test_prepare_array
[12:01:10] [PASSED] test_multiple_loops
[12:01:10] ==================== [PASSED] drm_exec =====================
[12:01:10] =========== drm_format_helper_test (17 subtests) ===========
[12:01:10] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[12:01:10] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[12:01:10] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[12:01:10] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[12:01:10] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[12:01:10] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[12:01:10] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[12:01:10] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[12:01:10] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[12:01:10] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[12:01:10] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[12:01:10] ============== drm_test_fb_xrgb8888_to_mono ===============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[12:01:10] ==================== drm_test_fb_swab =====================
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ================ [PASSED] drm_test_fb_swab =================
[12:01:10] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[12:01:10] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[12:01:10] [PASSED] single_pixel_source_buffer
[12:01:10] [PASSED] single_pixel_clip_rectangle
[12:01:10] [PASSED] well_known_colors
[12:01:10] [PASSED] destination_pitch
[12:01:10] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[12:01:10] ================= drm_test_fb_clip_offset =================
[12:01:10] [PASSED] pass through
[12:01:10] [PASSED] horizontal offset
[12:01:10] [PASSED] vertical offset
[12:01:10] [PASSED] horizontal and vertical offset
[12:01:10] [PASSED] horizontal offset (custom pitch)
[12:01:10] [PASSED] vertical offset (custom pitch)
[12:01:10] [PASSED] horizontal and vertical offset (custom pitch)
[12:01:10] ============= [PASSED] drm_test_fb_clip_offset =============
[12:01:10] =================== drm_test_fb_memcpy ====================
[12:01:10] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[12:01:10] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[12:01:10] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[12:01:10] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[12:01:10] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[12:01:10] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[12:01:10] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[12:01:10] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[12:01:10] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[12:01:10] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[12:01:10] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[12:01:10] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[12:01:10] =============== [PASSED] drm_test_fb_memcpy ================
[12:01:10] ============= [PASSED] drm_format_helper_test ==============
[12:01:10] ================= drm_format (18 subtests) =================
[12:01:10] [PASSED] drm_test_format_block_width_invalid
[12:01:10] [PASSED] drm_test_format_block_width_one_plane
[12:01:10] [PASSED] drm_test_format_block_width_two_plane
[12:01:10] [PASSED] drm_test_format_block_width_three_plane
[12:01:10] [PASSED] drm_test_format_block_width_tiled
[12:01:10] [PASSED] drm_test_format_block_height_invalid
[12:01:10] [PASSED] drm_test_format_block_height_one_plane
[12:01:10] [PASSED] drm_test_format_block_height_two_plane
[12:01:10] [PASSED] drm_test_format_block_height_three_plane
[12:01:10] [PASSED] drm_test_format_block_height_tiled
[12:01:10] [PASSED] drm_test_format_min_pitch_invalid
[12:01:10] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[12:01:10] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[12:01:10] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[12:01:10] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[12:01:10] [PASSED] drm_test_format_min_pitch_two_plane
[12:01:10] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[12:01:10] [PASSED] drm_test_format_min_pitch_tiled
[12:01:10] =================== [PASSED] drm_format ====================
[12:01:10] ============== drm_framebuffer (10 subtests) ===============
[12:01:10] ========== drm_test_framebuffer_check_src_coords ==========
[12:01:10] [PASSED] Success: source fits into fb
[12:01:10] [PASSED] Fail: overflowing fb with x-axis coordinate
[12:01:10] [PASSED] Fail: overflowing fb with y-axis coordinate
[12:01:10] [PASSED] Fail: overflowing fb with source width
[12:01:10] [PASSED] Fail: overflowing fb with source height
[12:01:10] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[12:01:10] [PASSED] drm_test_framebuffer_cleanup
[12:01:10] =============== drm_test_framebuffer_create ===============
[12:01:10] [PASSED] ABGR8888 normal sizes
[12:01:10] [PASSED] ABGR8888 max sizes
[12:01:10] [PASSED] ABGR8888 pitch greater than min required
[12:01:10] [PASSED] ABGR8888 pitch less than min required
[12:01:10] [PASSED] ABGR8888 Invalid width
[12:01:10] [PASSED] ABGR8888 Invalid buffer handle
[12:01:10] [PASSED] No pixel format
[12:01:10] [PASSED] ABGR8888 Width 0
[12:01:10] [PASSED] ABGR8888 Height 0
[12:01:10] [PASSED] ABGR8888 Out of bound height * pitch combination
[12:01:10] [PASSED] ABGR8888 Large buffer offset
[12:01:10] [PASSED] ABGR8888 Buffer offset for inexistent plane
[12:01:10] [PASSED] ABGR8888 Invalid flag
[12:01:10] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[12:01:10] [PASSED] ABGR8888 Valid buffer modifier
[12:01:10] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[12:01:10] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[12:01:10] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[12:01:10] [PASSED] NV12 Normal sizes
[12:01:10] [PASSED] NV12 Max sizes
[12:01:10] [PASSED] NV12 Invalid pitch
[12:01:10] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[12:01:10] [PASSED] NV12 different modifier per-plane
[12:01:10] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[12:01:10] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[12:01:10] [PASSED] NV12 Modifier for inexistent plane
[12:01:10] [PASSED] NV12 Handle for inexistent plane
[12:01:10] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[12:01:10] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[12:01:10] [PASSED] YVU420 Normal sizes
[12:01:10] [PASSED] YVU420 Max sizes
[12:01:10] [PASSED] YVU420 Invalid pitch
[12:01:10] [PASSED] YVU420 Different pitches
[12:01:10] [PASSED] YVU420 Different buffer offsets/pitches
[12:01:10] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[12:01:10] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[12:01:10] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[12:01:10] [PASSED] YVU420 Valid modifier
[12:01:10] [PASSED] YVU420 Different modifiers per plane
[12:01:10] [PASSED] YVU420 Modifier for inexistent plane
[12:01:10] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[12:01:10] [PASSED] X0L2 Normal sizes
[12:01:10] [PASSED] X0L2 Max sizes
[12:01:10] [PASSED] X0L2 Invalid pitch
[12:01:10] [PASSED] X0L2 Pitch greater than minimum required
[12:01:10] [PASSED] X0L2 Handle for inexistent plane
[12:01:10] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[12:01:10] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[12:01:10] [PASSED] X0L2 Valid modifier
[12:01:10] [PASSED] X0L2 Modifier for inexistent plane
[12:01:10] =========== [PASSED] drm_test_framebuffer_create ===========
[12:01:10] [PASSED] drm_test_framebuffer_free
[12:01:10] [PASSED] drm_test_framebuffer_init
[12:01:10] [PASSED] drm_test_framebuffer_init_bad_format
[12:01:10] [PASSED] drm_test_framebuffer_init_dev_mismatch
[12:01:10] [PASSED] drm_test_framebuffer_lookup
[12:01:10] [PASSED] drm_test_framebuffer_lookup_inexistent
[12:01:10] [PASSED] drm_test_framebuffer_modifiers_not_supported
[12:01:10] ================= [PASSED] drm_framebuffer =================
[12:01:10] ================ drm_gem_shmem (8 subtests) ================
[12:01:10] [PASSED] drm_gem_shmem_test_obj_create
[12:01:10] [PASSED] drm_gem_shmem_test_obj_create_private
[12:01:10] [PASSED] drm_gem_shmem_test_pin_pages
[12:01:10] [PASSED] drm_gem_shmem_test_vmap
[12:01:10] [PASSED] drm_gem_shmem_test_get_sg_table
[12:01:10] [PASSED] drm_gem_shmem_test_get_pages_sgt
[12:01:10] [PASSED] drm_gem_shmem_test_madvise
[12:01:10] [PASSED] drm_gem_shmem_test_purge
[12:01:10] ================== [PASSED] drm_gem_shmem ==================
[12:01:10] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[12:01:10] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[12:01:10] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[12:01:10] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[12:01:10] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[12:01:10] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[12:01:10] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[12:01:10] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[12:01:10] [PASSED] Automatic
[12:01:10] [PASSED] Full
[12:01:10] [PASSED] Limited 16:235
[12:01:10] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[12:01:10] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[12:01:10] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[12:01:10] [PASSED] drm_test_check_disable_connector
[12:01:10] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[12:01:10] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[12:01:10] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[12:01:10] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[12:01:10] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[12:01:10] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[12:01:10] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[12:01:10] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[12:01:10] [PASSED] drm_test_check_output_bpc_dvi
[12:01:10] [PASSED] drm_test_check_output_bpc_format_vic_1
[12:01:10] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[12:01:10] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[12:01:10] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[12:01:10] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[12:01:10] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[12:01:10] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[12:01:10] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[12:01:10] ============ drm_test_check_hdmi_color_format =============
[12:01:10] [PASSED] AUTO -> RGB
[12:01:10] [PASSED] YCBCR422 -> YUV422
[12:01:10] [PASSED] YCBCR420 -> YUV420
[12:01:10] [PASSED] YCBCR444 -> YUV444
[12:01:10] [PASSED] RGB -> RGB
[12:01:10] ======== [PASSED] drm_test_check_hdmi_color_format =========
[12:01:10] ======== drm_test_check_hdmi_color_format_420_only ========
[12:01:10] [PASSED] RGB should fail
[12:01:10] [PASSED] YUV444 should fail
[12:01:10] [PASSED] YUV422 should fail
[12:01:10] [PASSED] YUV420 should work
[12:01:10] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[12:01:10] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[12:01:10] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[12:01:10] [PASSED] drm_test_check_broadcast_rgb_value
[12:01:10] [PASSED] drm_test_check_bpc_8_value
[12:01:10] [PASSED] drm_test_check_bpc_10_value
[12:01:10] [PASSED] drm_test_check_bpc_12_value
[12:01:10] [PASSED] drm_test_check_format_value
[12:01:10] [PASSED] drm_test_check_tmds_char_value
[12:01:10] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[12:01:10] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[12:01:10] [PASSED] drm_test_check_mode_valid
[12:01:10] [PASSED] drm_test_check_mode_valid_reject
[12:01:10] [PASSED] drm_test_check_mode_valid_reject_rate
[12:01:10] [PASSED] drm_test_check_mode_valid_reject_max_clock
[12:01:10] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[12:01:10] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[12:01:10] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[12:01:10] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[12:01:10] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[12:01:10] [PASSED] drm_test_check_infoframes
[12:01:10] [PASSED] drm_test_check_reject_avi_infoframe
[12:01:10] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[12:01:10] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[12:01:10] [PASSED] drm_test_check_reject_audio_infoframe
[12:01:10] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[12:01:10] ================= drm_managed (2 subtests) =================
[12:01:10] [PASSED] drm_test_managed_release_action
[12:01:10] [PASSED] drm_test_managed_run_action
[12:01:10] =================== [PASSED] drm_managed ===================
[12:01:10] =================== drm_mm (6 subtests) ====================
[12:01:10] [PASSED] drm_test_mm_init
[12:01:10] [PASSED] drm_test_mm_debug
[12:01:10] [PASSED] drm_test_mm_align32
[12:01:10] [PASSED] drm_test_mm_align64
[12:01:10] [PASSED] drm_test_mm_lowest
[12:01:10] [PASSED] drm_test_mm_highest
[12:01:10] ===================== [PASSED] drm_mm ======================
[12:01:10] ============= drm_modes_analog_tv (5 subtests) =============
[12:01:10] [PASSED] drm_test_modes_analog_tv_mono_576i
[12:01:10] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[12:01:10] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[12:01:10] [PASSED] drm_test_modes_analog_tv_pal_576i
[12:01:10] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[12:01:10] =============== [PASSED] drm_modes_analog_tv ===============
[12:01:10] ============== drm_plane_helper (2 subtests) ===============
[12:01:10] =============== drm_test_check_plane_state ================
[12:01:10] [PASSED] clipping_simple
[12:01:10] [PASSED] clipping_rotate_reflect
[12:01:10] [PASSED] positioning_simple
[12:01:10] [PASSED] upscaling
[12:01:10] [PASSED] downscaling
[12:01:10] [PASSED] rounding1
[12:01:10] [PASSED] rounding2
[12:01:10] [PASSED] rounding3
[12:01:10] [PASSED] rounding4
[12:01:10] =========== [PASSED] drm_test_check_plane_state ============
[12:01:10] =========== drm_test_check_invalid_plane_state ============
[12:01:10] [PASSED] positioning_invalid
[12:01:10] [PASSED] upscaling_invalid
[12:01:10] [PASSED] downscaling_invalid
[12:01:10] ======= [PASSED] drm_test_check_invalid_plane_state ========
[12:01:10] ================ [PASSED] drm_plane_helper =================
[12:01:10] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[12:01:10] ====== drm_test_connector_helper_tv_get_modes_check =======
[12:01:10] [PASSED] None
[12:01:10] [PASSED] PAL
[12:01:10] [PASSED] NTSC
[12:01:10] [PASSED] Both, NTSC Default
[12:01:10] [PASSED] Both, PAL Default
[12:01:10] [PASSED] Both, NTSC Default, with PAL on command-line
[12:01:10] [PASSED] Both, PAL Default, with NTSC on command-line
[12:01:10] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[12:01:10] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[12:01:10] ================== drm_rect (9 subtests) ===================
[12:01:10] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[12:01:10] [PASSED] drm_test_rect_clip_scaled_not_clipped
[12:01:10] [PASSED] drm_test_rect_clip_scaled_clipped
[12:01:10] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[12:01:10] ================= drm_test_rect_intersect =================
[12:01:10] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[12:01:10] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[12:01:10] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[12:01:10] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[12:01:10] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[12:01:10] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[12:01:10] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[12:01:10] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[12:01:10] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[12:01:10] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[12:01:10] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[12:01:10] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[12:01:10] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[12:01:10] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[12:01:10] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[12:01:10] ============= [PASSED] drm_test_rect_intersect =============
[12:01:10] ================ drm_test_rect_calc_hscale ================
[12:01:10] [PASSED] normal use
[12:01:10] [PASSED] out of max range
[12:01:10] [PASSED] out of min range
[12:01:10] [PASSED] zero dst
[12:01:10] [PASSED] negative src
[12:01:10] [PASSED] negative dst
[12:01:10] ============ [PASSED] drm_test_rect_calc_hscale ============
[12:01:10] ================ drm_test_rect_calc_vscale ================
[12:01:10] [PASSED] normal use
[12:01:10] [PASSED] out of max range
[12:01:10] [PASSED] out of min range
[12:01:10] [PASSED] zero dst
[12:01:10] [PASSED] negative src
[12:01:10] [PASSED] negative dst
[12:01:10] ============ [PASSED] drm_test_rect_calc_vscale ============
[12:01:10] ================== drm_test_rect_rotate ===================
[12:01:10] [PASSED] reflect-x
[12:01:10] [PASSED] reflect-y
[12:01:10] [PASSED] rotate-0
[12:01:10] [PASSED] rotate-90
[12:01:10] [PASSED] rotate-180
[12:01:10] [PASSED] rotate-270
[12:01:10] ============== [PASSED] drm_test_rect_rotate ===============
[12:01:10] ================ drm_test_rect_rotate_inv =================
[12:01:10] [PASSED] reflect-x
[12:01:10] [PASSED] reflect-y
[12:01:10] [PASSED] rotate-0
[12:01:10] [PASSED] rotate-90
[12:01:10] [PASSED] rotate-180
[12:01:10] [PASSED] rotate-270
[12:01:10] ============ [PASSED] drm_test_rect_rotate_inv =============
[12:01:10] ==================== [PASSED] drm_rect =====================
[12:01:10] ============ drm_sysfb_modeset_test (1 subtest) ============
[12:01:10] ============ drm_test_sysfb_build_fourcc_list =============
[12:01:10] [PASSED] no native formats
[12:01:10] [PASSED] XRGB8888 as native format
[12:01:10] [PASSED] remove duplicates
[12:01:10] [PASSED] convert alpha formats
[12:01:10] [PASSED] random formats
[12:01:10] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[12:01:10] ============= [PASSED] drm_sysfb_modeset_test ==============
[12:01:10] ================== drm_fixp (2 subtests) ===================
[12:01:10] [PASSED] drm_test_int2fixp
[12:01:10] [PASSED] drm_test_sm2fixp
[12:01:10] ==================== [PASSED] drm_fixp =====================
[12:01:10] ============================================================
[12:01:10] Testing complete. Ran 639 tests: passed: 639
[12:01:10] Elapsed time: 26.466s total, 1.800s configuring, 24.451s building, 0.186s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[12:01:10] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[12:01:12] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[12:01:22] Starting KUnit Kernel (1/1)...
[12:01:22] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[12:01:22] ================= ttm_device (5 subtests) ==================
[12:01:22] [PASSED] ttm_device_init_basic
[12:01:22] [PASSED] ttm_device_init_multiple
[12:01:22] [PASSED] ttm_device_fini_basic
[12:01:22] [PASSED] ttm_device_init_no_vma_man
[12:01:22] ================== ttm_device_init_pools ==================
[12:01:22] [PASSED] No DMA allocations, no DMA32 required
[12:01:22] [PASSED] DMA allocations, DMA32 required
[12:01:22] [PASSED] No DMA allocations, DMA32 required
[12:01:22] [PASSED] DMA allocations, no DMA32 required
[12:01:22] ============== [PASSED] ttm_device_init_pools ==============
[12:01:22] =================== [PASSED] ttm_device ====================
[12:01:22] ================== ttm_pool (8 subtests) ===================
[12:01:22] ================== ttm_pool_alloc_basic ===================
[12:01:22] [PASSED] One page
[12:01:22] [PASSED] More than one page
[12:01:22] [PASSED] Above the allocation limit
[12:01:22] [PASSED] One page, with coherent DMA mappings enabled
[12:01:22] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[12:01:22] ============== [PASSED] ttm_pool_alloc_basic ===============
[12:01:22] ============== ttm_pool_alloc_basic_dma_addr ==============
[12:01:22] [PASSED] One page
[12:01:22] [PASSED] More than one page
[12:01:22] [PASSED] Above the allocation limit
[12:01:22] [PASSED] One page, with coherent DMA mappings enabled
[12:01:22] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[12:01:22] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[12:01:22] [PASSED] ttm_pool_alloc_order_caching_match
[12:01:22] [PASSED] ttm_pool_alloc_caching_mismatch
[12:01:22] [PASSED] ttm_pool_alloc_order_mismatch
[12:01:22] [PASSED] ttm_pool_free_dma_alloc
[12:01:22] [PASSED] ttm_pool_free_no_dma_alloc
[12:01:22] [PASSED] ttm_pool_fini_basic
[12:01:22] ==================== [PASSED] ttm_pool =====================
[12:01:22] ================ ttm_resource (8 subtests) =================
[12:01:22] ================= ttm_resource_init_basic =================
[12:01:22] [PASSED] Init resource in TTM_PL_SYSTEM
[12:01:22] [PASSED] Init resource in TTM_PL_VRAM
[12:01:22] [PASSED] Init resource in a private placement
[12:01:22] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[12:01:22] ============= [PASSED] ttm_resource_init_basic =============
[12:01:22] [PASSED] ttm_resource_init_pinned
[12:01:22] [PASSED] ttm_resource_fini_basic
[12:01:22] [PASSED] ttm_resource_manager_init_basic
[12:01:22] [PASSED] ttm_resource_manager_usage_basic
[12:01:22] [PASSED] ttm_resource_manager_set_used_basic
[12:01:22] [PASSED] ttm_sys_man_alloc_basic
[12:01:22] [PASSED] ttm_sys_man_free_basic
[12:01:22] ================== [PASSED] ttm_resource ===================
[12:01:22] =================== ttm_tt (15 subtests) ===================
[12:01:22] ==================== ttm_tt_init_basic ====================
[12:01:22] [PASSED] Page-aligned size
[12:01:22] [PASSED] Extra pages requested
[12:01:22] ================ [PASSED] ttm_tt_init_basic ================
[12:01:22] [PASSED] ttm_tt_init_misaligned
[12:01:22] [PASSED] ttm_tt_fini_basic
[12:01:22] [PASSED] ttm_tt_fini_sg
[12:01:22] [PASSED] ttm_tt_fini_shmem
[12:01:22] [PASSED] ttm_tt_create_basic
[12:01:22] [PASSED] ttm_tt_create_invalid_bo_type
[12:01:22] [PASSED] ttm_tt_create_ttm_exists
[12:01:22] [PASSED] ttm_tt_create_failed
[12:01:22] [PASSED] ttm_tt_destroy_basic
[12:01:22] [PASSED] ttm_tt_populate_null_ttm
[12:01:22] [PASSED] ttm_tt_populate_populated_ttm
[12:01:22] [PASSED] ttm_tt_unpopulate_basic
[12:01:22] [PASSED] ttm_tt_unpopulate_empty_ttm
[12:01:22] [PASSED] ttm_tt_swapin_basic
[12:01:22] ===================== [PASSED] ttm_tt ======================
[12:01:22] =================== ttm_bo (14 subtests) ===================
[12:01:22] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[12:01:22] [PASSED] Cannot be interrupted and sleeps
[12:01:22] [PASSED] Cannot be interrupted, locks straight away
[12:01:22] [PASSED] Can be interrupted, sleeps
[12:01:22] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[12:01:22] [PASSED] ttm_bo_reserve_locked_no_sleep
[12:01:22] [PASSED] ttm_bo_reserve_no_wait_ticket
[12:01:22] [PASSED] ttm_bo_reserve_double_resv
[12:01:22] [PASSED] ttm_bo_reserve_interrupted
[12:01:22] [PASSED] ttm_bo_reserve_deadlock
[12:01:22] [PASSED] ttm_bo_unreserve_basic
[12:01:22] [PASSED] ttm_bo_unreserve_pinned
[12:01:22] [PASSED] ttm_bo_unreserve_bulk
[12:01:22] [PASSED] ttm_bo_fini_basic
[12:01:22] [PASSED] ttm_bo_fini_shared_resv
[12:01:22] [PASSED] ttm_bo_pin_basic
[12:01:22] [PASSED] ttm_bo_pin_unpin_resource
[12:01:22] [PASSED] ttm_bo_multiple_pin_one_unpin
[12:01:22] ===================== [PASSED] ttm_bo ======================
[12:01:22] ============== ttm_bo_validate (22 subtests) ===============
[12:01:22] ============== ttm_bo_init_reserved_sys_man ===============
[12:01:22] [PASSED] Buffer object for userspace
[12:01:22] [PASSED] Kernel buffer object
[12:01:22] [PASSED] Shared buffer object
[12:01:22] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[12:01:22] ============== ttm_bo_init_reserved_mock_man ==============
[12:01:22] [PASSED] Buffer object for userspace
[12:01:22] [PASSED] Kernel buffer object
[12:01:22] [PASSED] Shared buffer object
[12:01:22] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[12:01:22] [PASSED] ttm_bo_init_reserved_resv
[12:01:22] ================== ttm_bo_validate_basic ==================
[12:01:22] [PASSED] Buffer object for userspace
[12:01:22] [PASSED] Kernel buffer object
[12:01:22] [PASSED] Shared buffer object
[12:01:22] ============== [PASSED] ttm_bo_validate_basic ==============
[12:01:22] [PASSED] ttm_bo_validate_invalid_placement
[12:01:22] ============= ttm_bo_validate_same_placement ==============
[12:01:22] [PASSED] System manager
[12:01:22] [PASSED] VRAM manager
[12:01:22] ========= [PASSED] ttm_bo_validate_same_placement ==========
[12:01:22] [PASSED] ttm_bo_validate_failed_alloc
[12:01:22] [PASSED] ttm_bo_validate_pinned
[12:01:22] [PASSED] ttm_bo_validate_busy_placement
[12:01:22] ================ ttm_bo_validate_multihop =================
[12:01:22] [PASSED] Buffer object for userspace
[12:01:22] [PASSED] Kernel buffer object
[12:01:22] [PASSED] Shared buffer object
[12:01:22] ============ [PASSED] ttm_bo_validate_multihop =============
[12:01:22] ========== ttm_bo_validate_no_placement_signaled ==========
[12:01:22] [PASSED] Buffer object in system domain, no page vector
[12:01:22] [PASSED] Buffer object in system domain with an existing page vector
[12:01:22] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[12:01:22] ======== ttm_bo_validate_no_placement_not_signaled ========
[12:01:22] [PASSED] Buffer object for userspace
[12:01:22] [PASSED] Kernel buffer object
[12:01:22] [PASSED] Shared buffer object
[12:01:22] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[12:01:22] [PASSED] ttm_bo_validate_move_fence_signaled
[12:01:22] ========= ttm_bo_validate_move_fence_not_signaled =========
[12:01:22] [PASSED] Waits for GPU
[12:01:22] [PASSED] Tries to lock straight away
[12:01:22] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[12:01:22] [PASSED] ttm_bo_validate_swapout
[12:01:22] [PASSED] ttm_bo_validate_happy_evict
[12:01:22] [PASSED] ttm_bo_validate_all_pinned_evict
[12:01:22] [PASSED] ttm_bo_validate_allowed_only_evict
[12:01:22] [PASSED] ttm_bo_validate_deleted_evict
[12:01:22] [PASSED] ttm_bo_validate_busy_domain_evict
[12:01:22] [PASSED] ttm_bo_validate_evict_gutting
[12:01:22] [PASSED] ttm_bo_validate_recrusive_evict
[12:01:22] ================= [PASSED] ttm_bo_validate =================
[12:01:22] ============================================================
[12:01:22] Testing complete. Ran 102 tests: passed: 102
[12:01:22] Elapsed time: 11.746s total, 1.838s configuring, 9.642s building, 0.226s 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 drm/gpusvm: split MM and device state across gpusvm/range/pages (rev7)
2026-06-30 10:21 [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Honglei Huang
` (5 preceding siblings ...)
2026-06-30 12:01 ` ✓ CI.KUnit: success for drm/gpusvm: split MM and device state across gpusvm/range/pages (rev7) Patchwork
@ 2026-06-30 12:56 ` Patchwork
2026-06-30 14:26 ` [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Matthew Brost
2026-07-01 3:16 ` ✓ Xe.CI.FULL: success for drm/gpusvm: split MM and device state across gpusvm/range/pages (rev7) Patchwork
8 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2026-06-30 12:56 UTC (permalink / raw)
To: Honglei Huang; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1377 bytes --]
== Series Details ==
Series: drm/gpusvm: split MM and device state across gpusvm/range/pages (rev7)
URL : https://patchwork.freedesktop.org/series/169384/
State : success
== Summary ==
CI Bug Log - changes from xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f_BAT -> xe-pw-169384v7_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-169384v7_BAT that come from known issues:
### IGT changes ###
#### Possible fixes ####
* igt@xe_query@multigpu-query-cs-cycles:
- bat-bmg-3: [FAIL][1] -> [PASS][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/bat-bmg-3/igt@xe_query@multigpu-query-cs-cycles.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/bat-bmg-3/igt@xe_query@multigpu-query-cs-cycles.html
Build changes
-------------
* Linux: xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f -> xe-pw-169384v7
IGT_8988: 8988
xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f: a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f
xe-pw-169384v7: 169384v7
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/index.html
[-- Attachment #2: Type: text/html, Size: 1949 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages
2026-06-30 10:21 [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Honglei Huang
` (6 preceding siblings ...)
2026-06-30 12:56 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-06-30 14:26 ` Matthew Brost
2026-06-30 14:33 ` Danilo Krummrich
2026-07-01 3:34 ` Huang, Honglei
2026-07-01 3:16 ` ✓ Xe.CI.FULL: success for drm/gpusvm: split MM and device state across gpusvm/range/pages (rev7) Patchwork
8 siblings, 2 replies; 14+ messages in thread
From: Matthew Brost @ 2026-06-30 14:26 UTC (permalink / raw)
To: Honglei Huang
Cc: sima, rodrigo.vivi, thomas.hellstrom, dakr, intel-xe, aliceryhl,
Alexander.Deucher, Felix.Kuehling, Christian.Koenig, Ray.Huang,
Lingshan.Zhu, Junhua.Shen, Yiru.Ma, amd-gfx, dri-devel
On Tue, Jun 30, 2026 at 06:21:22PM +0800, Honglei Huang wrote:
> The intent of this series is to make drm_gpusvm more flexible and give
> drivers more freedom over how they assemble the MM related and device
> side operations. It implements the direction Matt suggested in [1]:
> Mirror MR in gitlab: [4]
>
> - Move struct drm_gpusvm_pages out of struct drm_gpusvm_range.
> - Embed a struct drm_device in struct drm_gpusvm_pages and drive all
> DMA through it.
> - Drop struct drm_device from struct drm_gpusvm.
> - Have the driver's range structure embed one or more struct
> drm_gpusvm_pages in addition to struct drm_gpusvm_range.
> - Drop the range-based helpers (drm_gpusvm_range_pages_valid,
> drm_gpusvm_range_get_pages, drm_gpusvm_range_unmap_pages) and update
> drivers to use the drm_gpusvm_pages helpers instead.
>
> In essence the series does only two abstractions, plus the xe
> adaptation that follows from them:
>
> - range vs pages: split drm_gpusvm_range (MM / VA range state) from
> drm_gpusvm_pages (device physical related), so the two sides can
> have independent lifetimes and ownership.
> - drm_gpusvm vs drm_device: make drm_gpusvm pure MM level and push
> the device side down onto drm_gpusvm_pages, which is where DMA
> actually happens.
> - xe is updated to fit the modifications, no functional change
> intended.
>
> V10:
> Fix two issues found by the AI review:
> - patch 1: fix a KCSAN data race in xe_svm_alloc_vram(): read
> range->base.flags.__flags with READ_ONCE() and assert on a local
> copy, pairing with the WRITE_ONCE() in
> drm_gpusvm_range_set_unmapped().
> - patch 3: remove the DMA unmap in xe_svm_fini(): since
> drm_gpusvm_range_remove() no longer unmaps synchronously, explicitly
> drm_gpusvm_unmap_pages() all remaining ranges before
> drm_gpusvm_fini().
>
> V9:
> - patch 3: fix the build with CONFIG_DRM_XE_GPUSVM disabled: move
> pages out of the nested base struct in the stub xe_svm_range and
> route has_dma_mapping through range->pages. No functional change.
>
> V8:
> - patch 4: add reviewed-by for Matt's review.
>
> V7:
> - patch 1: split MM state flags: the AI review found a KCSAN / memory
> model cleanliness issue. Address it for consistency with
> drm_gpusvm_pages_flags, set the range flags with WRITE_ONCE() on
> __flags and read them with READ_ONCE().
>
> V6:
> - The AI review flagged a potential DMA free issue: the DMA unmap
> step was moved into the range_free callback, but on the invalidate
> path a range can be removed from the MMU interval tree while its DMA
> mappings are still live, so a concurrent unmap event can miss it.
> - patch 3: have xe_svm_range embed one drm_gpusvm_pages: explicitly
> call drm_gpusvm_unmap_pages() before drm_gpusvm_range_remove() in the
> garbage collector, so a range is never off the tree while still DMA
> mapped, and document this caller contract in drm_gpusvm_range_remove()
> kernel-doc.
> - patch 4: move struct drm_gpusvm_pages out: document the
> unmap before remove contract in the garbage collector example and
> note that range_free()'s drm_gpusvm_free_pages() as a final fallback.
> - patch 1: split MM state flags: return -EACCES directly.
> - Fold in the pre existing IOVA/DMA unmap fixes the AI review found
> previously sent separately: the uninitialized dma_addr[0].dir on
> the get_pages() error path, the whole reservation IOVA free for
> mixed ranges, and the device mapping leak on the get_pages() error
> path. [6]
>
> V5:
> - add reviewed-by in patches 1, 2, 3, 5 for Matt's review.
>
> V4:
> - drm_gpusvm_init_pages(): memset() the pages to zero before recording
> the owning drm_device.
> - DOC: overview: recommend a zeroing allocator: kcalloc() for the
> N:1 pages array.
> - Rebased onto the latest drm-xe.
> - The AI review of this series flagged two preexisting issues in the
> IOVA unmap path that are not introduced by this series; they are
> fixed in a separate series [5].
>
> V3:
> - Fix a kernel-doc/Sphinx warning from the kernel test robot: use
> ".. code-block:: c" for the drm_gpusvm_pages example in DOC: overview.
> - drm_gpusvm_range_set_unmapped(): use WRITE_ONCE() on the whole
> pages[i].flags.__flags word to pair with the lockless READ_ONCE()
> readers and avoid a data race.
> - xe_userptr_setup(): call drm_gpusvm_init_pages() before
> mmu_interval_notifier_insert() to avoid exposing uninitialized
> pages.drm to invalidation callbacks.
> - Fix per commit build of the set_unmapped() pages.
>
> V2:
> - Followed in Matt's v0 review fixups [2]:
> - keep unmapped flag in pages structures.
> - add pages_count to drm_gpusvm_range_set_unmapped() to set the pages
> unmapped flag, so the framework can check unmapped status in
> drm_gpusvm_get_pages().
> - Add drm_gpusvm_init_pages to init the drm_device and sequence number.
> - Remove drm_device from drm_gpusvm_get_pages() parameters.
> - Reworked the DOC: overview and usage examples to describe the new
> model: struct drm_gpusvm_pages, the 1:1 / N:1 driver layouts, and
> examples that operate on a driver embedded pages object by the
> drm_gpusvm_pages helpers and etc.
> - remove WARN_ON_ONCE in __drm_gpusvm_unmap_pages.
> - Dropped RFC.
>
> Follow-up (not in this series):
>
> - modify drm_gpusvm_get_pages() to support one time hmm range fault
> and multi drm device dma mapping.
> - Add no dma device support for drm_gpusvm_get_pages().
>
> tests:
> AMDGPU:
> based on amdgpu adaptation patch in [3], but still SVM:DRM = 1:1,
> 1:n is on going needs many modifications and testings.
>
> Tested on gfx943 (MI300X) and gfx906 (MI60) with XNACK on/off:
> - KFD test: 95%+ passed.
> - ROCR test: all passed.
> - HIP catch test: gfx943 (MI300X): 99% passed.
> gfx906 (MI60): 99% passed.
> INTEL XE:
> CI tests passed in rev5 tests.[7]
CI full is in flight, but it seems likely to pass. Once it completes, we
can merge this; we just need to decide which branch to use.
The series does not apply cleanly to drm-misc-next because it depends on
changes in drm-xe-next that have not yet been merged into drm-misc-next.
It does apply cleanly to drm-xe-next, though.
If we merge the patches in drm-xe-next and pick them up via a rebase in
the AMD trees, that works. Alternatively, we can ask the drm-misc-next
maintainers to rebase and apply them there. Either option works for me.
Matt
>
> links:
> [1] https://lore.kernel.org/amd-gfx/acRgr7QwdULsn6G2@gsse-cloud1/#:~:text=I%20think%20roughly,drm_gpusvm_pages%0A%20%20helpers%20instead.
> [2] https://gitlab.freedesktop.org/mbrost/xe-kernel-driver-svn-perf-6-15-2025/-/commit/623f6a50c037d9e44f6c9fbe6859a0ba7ad50177
> [3] https://lore.kernel.org/amd-gfx/20260603065030.2554403-1-honglei1.huang@amd.com/
> [4] https://gitlab.freedesktop.org/drm/xe/kernel/-/merge_requests/360
> [5] https://lore.kernel.org/all/20260627033325.3795298-1-honglei1.huang@amd.com/
> [6] https://lore.kernel.org/all/20260628061757.4093701-1-honglei1.huang@amd.com/
> [7] https://patchwork.freedesktop.org/series/169384/#rev5
>
> Honglei Huang (5):
> drm/gpusvm: split MM state flags out of drm_gpusvm_pages_flags
> drm/gpusvm: embed struct drm_device into drm_gpusvm_pages
> drm/xe: have xe_svm_range embed one drm_gpusvm_pages
> drm/gpusvm: move struct drm_gpusvm_pages out of struct
> drm_gpusvm_range
> drm/gpusvm: let the drm_gpusvm core context purely MM level
>
> drivers/gpu/drm/drm_gpusvm.c | 243 +++++++++++++++++++-------------
> drivers/gpu/drm/xe/xe_pt.c | 2 +-
> drivers/gpu/drm/xe/xe_svm.c | 66 +++++++--
> drivers/gpu/drm/xe/xe_svm.h | 14 +-
> drivers/gpu/drm/xe/xe_userptr.c | 5 +-
> include/drm/drm_gpusvm.h | 67 ++++++---
> 6 files changed, 255 insertions(+), 142 deletions(-)
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages
2026-06-30 14:26 ` [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Matthew Brost
@ 2026-06-30 14:33 ` Danilo Krummrich
2026-07-01 15:56 ` Thomas Hellström
2026-07-01 3:34 ` Huang, Honglei
1 sibling, 1 reply; 14+ messages in thread
From: Danilo Krummrich @ 2026-06-30 14:33 UTC (permalink / raw)
To: Matthew Brost
Cc: Honglei Huang, sima, rodrigo.vivi, thomas.hellstrom, intel-xe,
aliceryhl, Alexander.Deucher, Felix.Kuehling, Christian.Koenig,
Ray.Huang, Lingshan.Zhu, Junhua.Shen, Yiru.Ma, amd-gfx, dri-devel
On Tue Jun 30, 2026 at 4:26 PM CEST, Matthew Brost wrote:
> If we merge the patches in drm-xe-next and pick them up via a rebase in the
> AMD trees, that works.
IIUC what your are proposing this will create duplicate commits, which should be
avoided.
If the series is needed in multiple trees it is better to pick a common base and
share via a tag that can be merged in all relevant trees.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages
2026-06-30 14:33 ` Danilo Krummrich
@ 2026-07-01 15:56 ` Thomas Hellström
2026-07-01 16:26 ` Danilo Krummrich
0 siblings, 1 reply; 14+ messages in thread
From: Thomas Hellström @ 2026-07-01 15:56 UTC (permalink / raw)
To: Danilo Krummrich, Matthew Brost
Cc: Honglei Huang, sima, rodrigo.vivi, intel-xe, aliceryhl,
Alexander.Deucher, Felix.Kuehling, Christian.Koenig, Ray.Huang,
Lingshan.Zhu, Junhua.Shen, Yiru.Ma, amd-gfx, dri-devel
Hi Danilo,
On Tue, 2026-06-30 at 16:33 +0200, Danilo Krummrich wrote:
> On Tue Jun 30, 2026 at 4:26 PM CEST, Matthew Brost wrote:
> > If we merge the patches in drm-xe-next and pick them up via a
> > rebase in the
> > AMD trees, that works.
>
> IIUC what your are proposing this will create duplicate commits,
> which should be
> avoided.
>
> If the series is needed in multiple trees it is better to pick a
> common base and
> share via a tag that can be merged in all relevant trees.
Our standard workflow if we need commits merged elsewhere in the DRM
tree is to wait for it to appear in drm-next and then backmerge drm-
next into our branch. It sounds like that's what Matthew is proposing
here? And it wouldn't create duplicate commits?
Thanks,
Thomas
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages
2026-07-01 15:56 ` Thomas Hellström
@ 2026-07-01 16:26 ` Danilo Krummrich
0 siblings, 0 replies; 14+ messages in thread
From: Danilo Krummrich @ 2026-07-01 16:26 UTC (permalink / raw)
To: Thomas Hellström
Cc: Matthew Brost, Honglei Huang, sima, rodrigo.vivi, intel-xe,
aliceryhl, Alexander.Deucher, Felix.Kuehling, Christian.Koenig,
Ray.Huang, Lingshan.Zhu, Junhua.Shen, Yiru.Ma, amd-gfx, dri-devel
On Wed Jul 1, 2026 at 5:56 PM CEST, Thomas Hellström wrote:
> Hi Danilo,
>
> On Tue, 2026-06-30 at 16:33 +0200, Danilo Krummrich wrote:
>> On Tue Jun 30, 2026 at 4:26 PM CEST, Matthew Brost wrote:
>> > If we merge the patches in drm-xe-next and pick them up via a
>> > rebase in the
>> > AMD trees, that works.
>>
>> IIUC what your are proposing this will create duplicate commits,
>> which should be
>> avoided.
>>
>> If the series is needed in multiple trees it is better to pick a
>> common base and
>> share via a tag that can be merged in all relevant trees.
>
> Our standard workflow if we need commits merged elsewhere in the DRM
> tree is to wait for it to appear in drm-next and then backmerge drm-
> next into our branch. It sounds like that's what Matthew is proposing
> here? And it wouldn't create duplicate commits?
Sure, that works. But "merge in tree A and pick up via rebase in tree B" would
create duplicate commits, which we should avoid.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages
2026-06-30 14:26 ` [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Matthew Brost
2026-06-30 14:33 ` Danilo Krummrich
@ 2026-07-01 3:34 ` Huang, Honglei
1 sibling, 0 replies; 14+ messages in thread
From: Huang, Honglei @ 2026-07-01 3:34 UTC (permalink / raw)
To: Matthew Brost
Cc: sima, rodrigo.vivi, thomas.hellstrom, dakr, intel-xe, aliceryhl,
Alexander.Deucher, Felix.Kuehling, Christian.Koenig, Ray.Huang,
Lingshan.Zhu, Junhua.Shen, Yiru.Ma, amd-gfx, dri-devel
On 6/30/2026 10:26 PM, Matthew Brost wrote:
> On Tue, Jun 30, 2026 at 06:21:22PM +0800, Honglei Huang wrote:
>> The intent of this series is to make drm_gpusvm more flexible and give
>> drivers more freedom over how they assemble the MM related and device
>> side operations. It implements the direction Matt suggested in [1]:
>> Mirror MR in gitlab: [4]
>>
>> - Move struct drm_gpusvm_pages out of struct drm_gpusvm_range.
>> - Embed a struct drm_device in struct drm_gpusvm_pages and drive all
>> DMA through it.
>> - Drop struct drm_device from struct drm_gpusvm.
>> - Have the driver's range structure embed one or more struct
>> drm_gpusvm_pages in addition to struct drm_gpusvm_range.
>> - Drop the range-based helpers (drm_gpusvm_range_pages_valid,
>> drm_gpusvm_range_get_pages, drm_gpusvm_range_unmap_pages) and update
>> drivers to use the drm_gpusvm_pages helpers instead.
>>
>> In essence the series does only two abstractions, plus the xe
>> adaptation that follows from them:
>>
>> - range vs pages: split drm_gpusvm_range (MM / VA range state) from
>> drm_gpusvm_pages (device physical related), so the two sides can
>> have independent lifetimes and ownership.
>> - drm_gpusvm vs drm_device: make drm_gpusvm pure MM level and push
>> the device side down onto drm_gpusvm_pages, which is where DMA
>> actually happens.
>> - xe is updated to fit the modifications, no functional change
>> intended.
>>
>> V10:
>> Fix two issues found by the AI review:
>> - patch 1: fix a KCSAN data race in xe_svm_alloc_vram(): read
>> range->base.flags.__flags with READ_ONCE() and assert on a local
>> copy, pairing with the WRITE_ONCE() in
>> drm_gpusvm_range_set_unmapped().
>> - patch 3: remove the DMA unmap in xe_svm_fini(): since
>> drm_gpusvm_range_remove() no longer unmaps synchronously, explicitly
>> drm_gpusvm_unmap_pages() all remaining ranges before
>> drm_gpusvm_fini().
>>
>> V9:
>> - patch 3: fix the build with CONFIG_DRM_XE_GPUSVM disabled: move
>> pages out of the nested base struct in the stub xe_svm_range and
>> route has_dma_mapping through range->pages. No functional change.
>>
>> V8:
>> - patch 4: add reviewed-by for Matt's review.
>>
>> V7:
>> - patch 1: split MM state flags: the AI review found a KCSAN / memory
>> model cleanliness issue. Address it for consistency with
>> drm_gpusvm_pages_flags, set the range flags with WRITE_ONCE() on
>> __flags and read them with READ_ONCE().
>>
>> V6:
>> - The AI review flagged a potential DMA free issue: the DMA unmap
>> step was moved into the range_free callback, but on the invalidate
>> path a range can be removed from the MMU interval tree while its DMA
>> mappings are still live, so a concurrent unmap event can miss it.
>> - patch 3: have xe_svm_range embed one drm_gpusvm_pages: explicitly
>> call drm_gpusvm_unmap_pages() before drm_gpusvm_range_remove() in the
>> garbage collector, so a range is never off the tree while still DMA
>> mapped, and document this caller contract in drm_gpusvm_range_remove()
>> kernel-doc.
>> - patch 4: move struct drm_gpusvm_pages out: document the
>> unmap before remove contract in the garbage collector example and
>> note that range_free()'s drm_gpusvm_free_pages() as a final fallback.
>> - patch 1: split MM state flags: return -EACCES directly.
>> - Fold in the pre existing IOVA/DMA unmap fixes the AI review found
>> previously sent separately: the uninitialized dma_addr[0].dir on
>> the get_pages() error path, the whole reservation IOVA free for
>> mixed ranges, and the device mapping leak on the get_pages() error
>> path. [6]
>>
>> V5:
>> - add reviewed-by in patches 1, 2, 3, 5 for Matt's review.
>>
>> V4:
>> - drm_gpusvm_init_pages(): memset() the pages to zero before recording
>> the owning drm_device.
>> - DOC: overview: recommend a zeroing allocator: kcalloc() for the
>> N:1 pages array.
>> - Rebased onto the latest drm-xe.
>> - The AI review of this series flagged two preexisting issues in the
>> IOVA unmap path that are not introduced by this series; they are
>> fixed in a separate series [5].
>>
>> V3:
>> - Fix a kernel-doc/Sphinx warning from the kernel test robot: use
>> ".. code-block:: c" for the drm_gpusvm_pages example in DOC: overview.
>> - drm_gpusvm_range_set_unmapped(): use WRITE_ONCE() on the whole
>> pages[i].flags.__flags word to pair with the lockless READ_ONCE()
>> readers and avoid a data race.
>> - xe_userptr_setup(): call drm_gpusvm_init_pages() before
>> mmu_interval_notifier_insert() to avoid exposing uninitialized
>> pages.drm to invalidation callbacks.
>> - Fix per commit build of the set_unmapped() pages.
>>
>> V2:
>> - Followed in Matt's v0 review fixups [2]:
>> - keep unmapped flag in pages structures.
>> - add pages_count to drm_gpusvm_range_set_unmapped() to set the pages
>> unmapped flag, so the framework can check unmapped status in
>> drm_gpusvm_get_pages().
>> - Add drm_gpusvm_init_pages to init the drm_device and sequence number.
>> - Remove drm_device from drm_gpusvm_get_pages() parameters.
>> - Reworked the DOC: overview and usage examples to describe the new
>> model: struct drm_gpusvm_pages, the 1:1 / N:1 driver layouts, and
>> examples that operate on a driver embedded pages object by the
>> drm_gpusvm_pages helpers and etc.
>> - remove WARN_ON_ONCE in __drm_gpusvm_unmap_pages.
>> - Dropped RFC.
>>
>> Follow-up (not in this series):
>>
>> - modify drm_gpusvm_get_pages() to support one time hmm range fault
>> and multi drm device dma mapping.
>> - Add no dma device support for drm_gpusvm_get_pages().
>>
>> tests:
>> AMDGPU:
>> based on amdgpu adaptation patch in [3], but still SVM:DRM = 1:1,
>> 1:n is on going needs many modifications and testings.
>>
>> Tested on gfx943 (MI300X) and gfx906 (MI60) with XNACK on/off:
>> - KFD test: 95%+ passed.
>> - ROCR test: all passed.
>> - HIP catch test: gfx943 (MI300X): 99% passed.
>> gfx906 (MI60): 99% passed.
>> INTEL XE:
>> CI tests passed in rev5 tests.[7]
>
>
> CI full is in flight, but it seems likely to pass. Once it completes, we
> can merge this; we just need to decide which branch to use.
>
> The series does not apply cleanly to drm-misc-next because it depends on
> changes in drm-xe-next that have not yet been merged into drm-misc-next.
> It does apply cleanly to drm-xe-next, though.
>
> If we merge the patches in drm-xe-next and pick them up via a rebase in
> the AMD trees, that works. Alternatively, we can ask the drm-misc-next
> maintainers to rebase and apply them there. Either option works for me.
>
Thanks a lot, Matt, for the guidance and the reviews in this series.
For the merge, happy to rebase onto whatever base/tag decided, just
let me know.
And will work on the follow up works.
Regards,
Honglei
> Matt
>
>>
>> links:
>> [1] https://lore.kernel.org/amd-gfx/acRgr7QwdULsn6G2@gsse-cloud1/#:~:text=I%20think%20roughly,drm_gpusvm_pages%0A%20%20helpers%20instead.
>> [2] https://gitlab.freedesktop.org/mbrost/xe-kernel-driver-svn-perf-6-15-2025/-/commit/623f6a50c037d9e44f6c9fbe6859a0ba7ad50177
>> [3] https://lore.kernel.org/amd-gfx/20260603065030.2554403-1-honglei1.huang@amd.com/
>> [4] https://gitlab.freedesktop.org/drm/xe/kernel/-/merge_requests/360
>> [5] https://lore.kernel.org/all/20260627033325.3795298-1-honglei1.huang@amd.com/
>> [6] https://lore.kernel.org/all/20260628061757.4093701-1-honglei1.huang@amd.com/
>> [7] https://patchwork.freedesktop.org/series/169384/#rev5
>>
>> Honglei Huang (5):
>> drm/gpusvm: split MM state flags out of drm_gpusvm_pages_flags
>> drm/gpusvm: embed struct drm_device into drm_gpusvm_pages
>> drm/xe: have xe_svm_range embed one drm_gpusvm_pages
>> drm/gpusvm: move struct drm_gpusvm_pages out of struct
>> drm_gpusvm_range
>> drm/gpusvm: let the drm_gpusvm core context purely MM level
>>
>> drivers/gpu/drm/drm_gpusvm.c | 243 +++++++++++++++++++-------------
>> drivers/gpu/drm/xe/xe_pt.c | 2 +-
>> drivers/gpu/drm/xe/xe_svm.c | 66 +++++++--
>> drivers/gpu/drm/xe/xe_svm.h | 14 +-
>> drivers/gpu/drm/xe/xe_userptr.c | 5 +-
>> include/drm/drm_gpusvm.h | 67 ++++++---
>> 6 files changed, 255 insertions(+), 142 deletions(-)
>>
>> --
>> 2.34.1
>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* ✓ Xe.CI.FULL: success for drm/gpusvm: split MM and device state across gpusvm/range/pages (rev7)
2026-06-30 10:21 [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Honglei Huang
` (7 preceding siblings ...)
2026-06-30 14:26 ` [PATCH v10 0/5] drm/gpusvm: split MM and device state across gpusvm/range/pages Matthew Brost
@ 2026-07-01 3:16 ` Patchwork
8 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2026-07-01 3:16 UTC (permalink / raw)
To: Honglei Huang; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 59169 bytes --]
== Series Details ==
Series: drm/gpusvm: split MM and device state across gpusvm/range/pages (rev7)
URL : https://patchwork.freedesktop.org/series/169384/
State : success
== Summary ==
CI Bug Log - changes from xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f_FULL -> xe-pw-169384v7_FULL
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-169384v7_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
- shard-lnl: [PASS][1] -> [FAIL][2] ([Intel XE#8098]) +1 other test fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-lnl-1/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
* igt@kms_big_fb@linear-32bpp-rotate-270:
- shard-lnl: NOTRUN -> [SKIP][3] ([Intel XE#1407])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_big_fb@linear-32bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#1124]) +1 other test skip
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
* igt@kms_big_fb@yf-tiled-8bpp-rotate-0:
- shard-lnl: NOTRUN -> [SKIP][5] ([Intel XE#1124]) +7 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_big_fb@yf-tiled-8bpp-rotate-0.html
* igt@kms_bw@connected-linear-tiling-3-displays-target-2160x1440p:
- shard-lnl: NOTRUN -> [SKIP][6] ([Intel XE#7679]) +1 other test skip
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_bw@connected-linear-tiling-3-displays-target-2160x1440p.html
* igt@kms_bw@connected-linear-tiling-4-displays-target-1920x1080p:
- shard-lnl: NOTRUN -> [SKIP][7] ([Intel XE#8365])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_bw@connected-linear-tiling-4-displays-target-1920x1080p.html
* igt@kms_bw@linear-tiling-2-displays-target-3840x2160p:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#367]) +1 other test skip
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_bw@linear-tiling-2-displays-target-3840x2160p.html
* igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2887]) +4 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@kms_ccs@bad-pixel-format-4-tiled-dg2-mc-ccs.html
* igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#2652]) +7 other tests skip
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2.html
* igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs:
- shard-lnl: NOTRUN -> [SKIP][11] ([Intel XE#2887]) +6 other tests skip
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-ccs:
- shard-lnl: NOTRUN -> [SKIP][12] ([Intel XE#3432]) +1 other test skip
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_ccs@crc-primary-suspend-y-tiled-ccs.html
* igt@kms_cdclk@mode-transition@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#4417] / [Intel XE#5447]) +3 other tests skip
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_cdclk@mode-transition@pipe-b-edp-1.html
* igt@kms_cdclk@plane-scaling:
- shard-lnl: NOTRUN -> [SKIP][14] ([Intel XE#4416] / [Intel XE#7381]) +3 other tests skip
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_cdclk@plane-scaling.html
* igt@kms_chamelium_audio@dp-audio:
- shard-lnl: NOTRUN -> [SKIP][15] ([Intel XE#373]) +4 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_chamelium_audio@dp-audio.html
* igt@kms_chamelium_color@degamma:
- shard-lnl: NOTRUN -> [SKIP][16] ([Intel XE#306] / [Intel XE#7358]) +1 other test skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_chamelium_color@degamma.html
* igt@kms_chamelium_color_pipeline@plane-lut1d:
- shard-lnl: NOTRUN -> [SKIP][17] ([Intel XE#7358])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_chamelium_color_pipeline@plane-lut1d.html
* igt@kms_chamelium_color_pipeline@plane-lut1d-lut1d:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#7358])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_chamelium_color_pipeline@plane-lut1d-lut1d.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#2390] / [Intel XE#6974])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_content_protection@legacy:
- shard-bmg: NOTRUN -> [FAIL][20] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +2 other tests fail
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_content_protection@legacy.html
* igt@kms_content_protection@legacy-hdcp14:
- shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#7642]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_content_protection@legacy-hdcp14.html
* igt@kms_cursor_crc@cursor-offscreen-512x170:
- shard-lnl: NOTRUN -> [SKIP][22] ([Intel XE#2321] / [Intel XE#7355])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_cursor_crc@cursor-offscreen-512x170.html
* igt@kms_cursor_crc@cursor-offscreen-max-size:
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#2320])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_cursor_crc@cursor-offscreen-max-size.html
* igt@kms_cursor_crc@cursor-rapid-movement-256x85:
- shard-lnl: NOTRUN -> [SKIP][24] ([Intel XE#1424]) +3 other tests skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_cursor_crc@cursor-rapid-movement-256x85.html
* igt@kms_cursor_crc@cursor-rapid-movement-512x170:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#2321] / [Intel XE#7355])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-atomic:
- shard-lnl: NOTRUN -> [SKIP][26] ([Intel XE#309] / [Intel XE#7343])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#2286] / [Intel XE#6035])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html
* igt@kms_dp_link_training@uhbr-mst:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#4354] / [Intel XE#7386])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@kms_dp_link_training@uhbr-mst.html
* igt@kms_dsc@dsc-with-bpc-formats-bigjoiner:
- shard-lnl: NOTRUN -> [SKIP][29] ([Intel XE#8265])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_dsc@dsc-with-bpc-formats-bigjoiner.html
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
- shard-lnl: NOTRUN -> [SKIP][30] ([Intel XE#4422] / [Intel XE#7442])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html
* igt@kms_fbcon_fbt@psr-suspend:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#6126] / [Intel XE#776])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_fbcon_fbt@psr-suspend.html
* igt@kms_feature_discovery@display-3x:
- shard-lnl: NOTRUN -> [SKIP][32] ([Intel XE#703] / [Intel XE#7448])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_feature_discovery@display-3x.html
* igt@kms_flip@2x-plain-flip-ts-check:
- shard-lnl: NOTRUN -> [SKIP][33] ([Intel XE#1421]) +3 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_flip@2x-plain-flip-ts-check.html
* igt@kms_flip_scaled_crc@flip-32bpp-yuv-linear-to-32bpp-yuv-linear-reflect-x:
- shard-lnl: NOTRUN -> [SKIP][34] ([Intel XE#7179])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_flip_scaled_crc@flip-32bpp-yuv-linear-to-32bpp-yuv-linear-reflect-x.html
* igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling:
- shard-lnl: NOTRUN -> [SKIP][35] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385]) +1 other test skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][36] ([Intel XE#1397] / [Intel XE#7385]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-linear-to-32bpp-linear-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][37] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#7178] / [Intel XE#7351])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#2311]) +11 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#7061] / [Intel XE#7356]) +3 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#4141]) +2 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][42] ([Intel XE#6312] / [Intel XE#651]) +6 other tests skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-cur-indfb-move:
- shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#6312]) +9 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcdrrshdr-1p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-scndscrn-cur-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][44] ([Intel XE#7905]) +23 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_frontbuffer_tracking@fbcdrrshdr-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][45] ([Intel XE#7865]) +17 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][46] ([Intel XE#2313]) +9 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][47] ([Intel XE#656] / [Intel XE#7905]) +22 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][48] ([Intel XE#7061]) +5 other tests skip
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-blt.html
* igt@kms_hdmi_inject@inject-audio:
- shard-lnl: NOTRUN -> [SKIP][49] ([Intel XE#1470] / [Intel XE#2853])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_hdmi_inject@inject-audio.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [PASS][50] -> [SKIP][51] ([Intel XE#1503])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-2/igt@kms_hdr@invalid-hdr.html
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-5/igt@kms_hdr@invalid-hdr.html
* igt@kms_pipe_stress@stress-xrgb8888-yftiled:
- shard-lnl: NOTRUN -> [SKIP][52] ([Intel XE#6912] / [Intel XE#7375])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_pipe_stress@stress-xrgb8888-yftiled.html
* igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier:
- shard-bmg: NOTRUN -> [SKIP][53] ([Intel XE#7283])
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier.html
* igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier:
- shard-lnl: NOTRUN -> [SKIP][54] ([Intel XE#7283]) +2 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier.html
* igt@kms_plane_lowres@tiling-x@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][55] ([Intel XE#599] / [Intel XE#7382]) +3 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_plane_lowres@tiling-x@pipe-b-edp-1.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#2763] / [Intel XE#6886]) +3 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75@pipe-a:
- shard-lnl: NOTRUN -> [SKIP][57] ([Intel XE#2763] / [Intel XE#6886]) +7 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75@pipe-a.html
* igt@kms_pm_dc@dc3co-vpb-simulation@pr:
- shard-lnl: NOTRUN -> [SKIP][58] ([Intel XE#8395]) +1 other test skip
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_pm_dc@dc3co-vpb-simulation@pr.html
* igt@kms_pm_dc@dc3co-vpb-simulation@psr2:
- shard-lnl: NOTRUN -> [SKIP][59] ([Intel XE#8396])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_pm_dc@dc3co-vpb-simulation@psr2.html
* igt@kms_pm_rpm@package-g7:
- shard-lnl: NOTRUN -> [SKIP][60] ([Intel XE#6813])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_pm_rpm@package-g7.html
* igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area:
- shard-lnl: NOTRUN -> [SKIP][61] ([Intel XE#2893] / [Intel XE#7304]) +3 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_psr2_sf@fbc-pr-plane-move-sf-dmg-area.html
* igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf:
- shard-bmg: NOTRUN -> [SKIP][62] ([Intel XE#1489])
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@kms_psr2_sf@pr-overlay-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr@fbc-psr2-no-drrs:
- shard-lnl: NOTRUN -> [SKIP][63] ([Intel XE#1406] / [Intel XE#7345]) +1 other test skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_psr@fbc-psr2-no-drrs.html
* igt@kms_psr@fbc-psr2-no-drrs@edp-1:
- shard-lnl: NOTRUN -> [SKIP][64] ([Intel XE#1406] / [Intel XE#4609]) +1 other test skip
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@kms_psr@fbc-psr2-no-drrs@edp-1.html
* igt@kms_psr@pr-primary-blt:
- shard-lnl: NOTRUN -> [SKIP][65] ([Intel XE#1406]) +2 other tests skip
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_psr@pr-primary-blt.html
* igt@kms_psr@pr-primary-page-flip:
- shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#2234] / [Intel XE#2850])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@kms_psr@pr-primary-page-flip.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-bmg: NOTRUN -> [SKIP][67] ([Intel XE#7795])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_rotation_crc@sprite-rotation-90:
- shard-bmg: NOTRUN -> [SKIP][68] ([Intel XE#3904] / [Intel XE#7342])
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_rotation_crc@sprite-rotation-90.html
* igt@kms_sharpness_filter@invalid-filter-with-plane:
- shard-bmg: NOTRUN -> [SKIP][69] ([Intel XE#6503])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_sharpness_filter@invalid-filter-with-plane.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-lnl: NOTRUN -> [SKIP][70] ([Intel XE#362] / [Intel XE#5848])
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_vrr@negative-basic:
- shard-lnl: NOTRUN -> [SKIP][71] ([Intel XE#1499])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_vrr@negative-basic.html
* igt@xe_compute_preempt@compute-preempt-many-vram-evict@engine-drm_xe_engine_class_compute:
- shard-bmg: [PASS][72] -> [INCOMPLETE][73] ([Intel XE#8515]) +1 other test incomplete
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-1/igt@xe_compute_preempt@compute-preempt-many-vram-evict@engine-drm_xe_engine_class_compute.html
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-3/igt@xe_compute_preempt@compute-preempt-many-vram-evict@engine-drm_xe_engine_class_compute.html
* igt@xe_eudebug@basic-client:
- shard-bmg: NOTRUN -> [SKIP][74] ([Intel XE#7636])
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@xe_eudebug@basic-client.html
* igt@xe_eudebug_sriov@deny-sriov:
- shard-bmg: NOTRUN -> [SKIP][75] ([Intel XE#5793] / [Intel XE#7320] / [Intel XE#7464])
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@xe_eudebug_sriov@deny-sriov.html
* igt@xe_evict@evict-beng-mixed-threads-large-multi-vm:
- shard-lnl: NOTRUN -> [SKIP][76] ([Intel XE#6540] / [Intel XE#688]) +6 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@xe_evict@evict-beng-mixed-threads-large-multi-vm.html
* igt@xe_evict@evict-mixed-threads-small-multi-queue:
- shard-bmg: NOTRUN -> [SKIP][77] ([Intel XE#8370])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@xe_evict@evict-mixed-threads-small-multi-queue.html
* igt@xe_exec_balancer@no-exec-parallel-userptr-invalidate-race:
- shard-lnl: NOTRUN -> [SKIP][78] ([Intel XE#7482]) +13 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@xe_exec_balancer@no-exec-parallel-userptr-invalidate-race.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-bind:
- shard-bmg: NOTRUN -> [SKIP][79] ([Intel XE#2322] / [Intel XE#7372])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-bind.html
* igt@xe_exec_basic@multigpu-once-null-rebind:
- shard-lnl: NOTRUN -> [SKIP][80] ([Intel XE#1392]) +6 other tests skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@xe_exec_basic@multigpu-once-null-rebind.html
* igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-rebind-imm:
- shard-lnl: NOTRUN -> [SKIP][81] ([Intel XE#8374]) +3 other tests skip
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-rebind-imm.html
* igt@xe_exec_fault_mode@many-multi-queue-imm:
- shard-bmg: NOTRUN -> [SKIP][82] ([Intel XE#8374]) +1 other test skip
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@xe_exec_fault_mode@many-multi-queue-imm.html
* igt@xe_exec_multi_queue@many-execs-close-fd-smem:
- shard-bmg: NOTRUN -> [SKIP][83] ([Intel XE#8364]) +8 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@xe_exec_multi_queue@many-execs-close-fd-smem.html
* igt@xe_exec_multi_queue@many-execs-preempt-mode-fault-dyn-priority:
- shard-lnl: NOTRUN -> [SKIP][84] ([Intel XE#8364]) +18 other tests skip
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@xe_exec_multi_queue@many-execs-preempt-mode-fault-dyn-priority.html
* igt@xe_exec_reset@multi-queue-gt-reset:
- shard-bmg: NOTRUN -> [SKIP][85] ([Intel XE#8369]) +1 other test skip
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@xe_exec_reset@multi-queue-gt-reset.html
* igt@xe_exec_sip_eudebug@breakpoint-writesip:
- shard-lnl: NOTRUN -> [SKIP][86] ([Intel XE#7636]) +11 other tests skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@xe_exec_sip_eudebug@breakpoint-writesip.html
* igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic:
- shard-lnl: NOTRUN -> [SKIP][87] ([Intel XE#8378]) +7 other tests skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic.html
* igt@xe_exec_threads@threads-multi-queue-mixed-fd-userptr-invalidate:
- shard-bmg: NOTRUN -> [SKIP][88] ([Intel XE#8378]) +3 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@xe_exec_threads@threads-multi-queue-mixed-fd-userptr-invalidate.html
* igt@xe_gpgpu_fill@offset-4x4:
- shard-lnl: NOTRUN -> [SKIP][89] ([Intel XE#7954])
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@xe_gpgpu_fill@offset-4x4.html
* igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit:
- shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#2229]) +1 other test skip
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit.html
* igt@xe_module_load@many-reload:
- shard-bmg: [PASS][91] -> [ABORT][92] ([Intel XE#8007])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-3/igt@xe_module_load@many-reload.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-1/igt@xe_module_load@many-reload.html
* igt@xe_multigpu_svm@mgpu-latency-prefetch:
- shard-bmg: NOTRUN -> [SKIP][93] ([Intel XE#6964])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@xe_multigpu_svm@mgpu-latency-prefetch.html
* igt@xe_multigpu_svm@mgpu-xgpu-access-prefetch:
- shard-lnl: NOTRUN -> [SKIP][94] ([Intel XE#6964]) +2 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@xe_multigpu_svm@mgpu-xgpu-access-prefetch.html
* igt@xe_non_msix@walker-interrupt-notification-non-msix:
- shard-lnl: NOTRUN -> [SKIP][95] ([Intel XE#7622])
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@xe_non_msix@walker-interrupt-notification-non-msix.html
* igt@xe_page_reclaim@random:
- shard-bmg: NOTRUN -> [SKIP][96] ([Intel XE#7793])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@xe_page_reclaim@random.html
* igt@xe_pat@pat-sw-hw-reset-compare:
- shard-lnl: NOTRUN -> [FAIL][97] ([Intel XE#7695])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@xe_pat@pat-sw-hw-reset-compare.html
* igt@xe_peer2peer@write:
- shard-lnl: NOTRUN -> [SKIP][98] ([Intel XE#1061] / [Intel XE#7326] / [Intel XE#7353])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@xe_peer2peer@write.html
* igt@xe_pm@d3cold-mmap-vram:
- shard-lnl: NOTRUN -> [SKIP][99] ([Intel XE#2284] / [Intel XE#366] / [Intel XE#7370])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@xe_pm@d3cold-mmap-vram.html
* igt@xe_pm@s3-multiple-execs:
- shard-lnl: NOTRUN -> [SKIP][100] ([Intel XE#584] / [Intel XE#7369])
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@xe_pm@s3-multiple-execs.html
* igt@xe_query@multigpu-query-invalid-size:
- shard-lnl: NOTRUN -> [SKIP][101] ([Intel XE#944]) +1 other test skip
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@xe_query@multigpu-query-invalid-size.html
* igt@xe_query@multigpu-query-mem-usage:
- shard-bmg: NOTRUN -> [SKIP][102] ([Intel XE#944]) +1 other test skip
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-2/igt@xe_query@multigpu-query-mem-usage.html
* igt@xe_sriov_admin@sched-priority-write-readback-vfs-disabled:
- shard-lnl: NOTRUN -> [SKIP][103] ([Intel XE#7174])
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@xe_sriov_admin@sched-priority-write-readback-vfs-disabled.html
* igt@xe_sriov_flr@flr-twice:
- shard-lnl: NOTRUN -> [SKIP][104] ([Intel XE#4273])
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@xe_sriov_flr@flr-twice.html
* igt@xe_sriov_scheduling@nonpreempt-engine-resets-low-priority:
- shard-lnl: NOTRUN -> [SKIP][105] ([Intel XE#8339])
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@xe_sriov_scheduling@nonpreempt-engine-resets-low-priority.html
* igt@xe_sriov_vram@vf-access-after-resize-down:
- shard-lnl: NOTRUN -> [SKIP][106] ([Intel XE#6376] / [Intel XE#7330] / [Intel XE#7422])
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@xe_sriov_vram@vf-access-after-resize-down.html
* igt@xe_vm@overcommit-fault-vram-lr-no-overcommit:
- shard-lnl: NOTRUN -> [SKIP][107] ([Intel XE#7892])
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@xe_vm@overcommit-fault-vram-lr-no-overcommit.html
#### Possible fixes ####
* igt@core_hotunplug@unbind-rebind:
- shard-bmg: [SKIP][108] ([Intel XE#8517]) -> [PASS][109]
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@core_hotunplug@unbind-rebind.html
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@core_hotunplug@unbind-rebind.html
* igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-bmg: [SKIP][110] ([Intel XE#8480]) -> [PASS][111] +134 other tests pass
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@linear-8bpp-rotate-0:
- shard-lnl: [ABORT][112] ([Intel XE#4760]) -> [PASS][113]
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-lnl-1/igt@kms_big_fb@linear-8bpp-rotate-0.html
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-2/igt@kms_big_fb@linear-8bpp-rotate-0.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [FAIL][114] ([Intel XE#7571]) -> [PASS][115]
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-4/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
- shard-lnl: [FAIL][116] ([Intel XE#301]) -> [PASS][117] +3 other tests pass
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
* igt@kms_pm_rpm@basic-rte:
- shard-bmg: [SKIP][118] -> [PASS][119] +1 other test pass
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_pm_rpm@basic-rte.html
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_pm_rpm@basic-rte.html
* igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-prefetch:
- shard-bmg: [DMESG-FAIL][120] ([Intel XE#7774]) -> [PASS][121]
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-prefetch.html
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-invalidate-prefetch.html
* igt@xe_fault_injection@inject-fault-probe-function-guc_wait_ucode:
- shard-bmg: [ABORT][122] ([Intel XE#8007]) -> [PASS][123] +1 other test pass
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-4/igt@xe_fault_injection@inject-fault-probe-function-guc_wait_ucode.html
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-7/igt@xe_fault_injection@inject-fault-probe-function-guc_wait_ucode.html
* igt@xe_intel_bb@blit-reloc:
- shard-lnl: [ABORT][124] ([Intel XE#8007]) -> [PASS][125]
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-lnl-1/igt@xe_intel_bb@blit-reloc.html
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-6/igt@xe_intel_bb@blit-reloc.html
#### Warnings ####
* igt@kms_big_fb@4-tiled-32bpp-rotate-90:
- shard-bmg: [SKIP][126] ([Intel XE#8480]) -> [SKIP][127] ([Intel XE#2327])
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-bmg: [SKIP][128] ([Intel XE#8480]) -> [SKIP][129] ([Intel XE#1124]) +2 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_bw@linear-tiling-4-displays-target-3840x2160p:
- shard-bmg: [SKIP][130] ([Intel XE#8480]) -> [SKIP][131] ([Intel XE#367]) +1 other test skip
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_bw@linear-tiling-4-displays-target-3840x2160p.html
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_bw@linear-tiling-4-displays-target-3840x2160p.html
* igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs:
- shard-bmg: [SKIP][132] ([Intel XE#8480]) -> [SKIP][133] ([Intel XE#2652])
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs:
- shard-bmg: [SKIP][134] ([Intel XE#8480]) -> [SKIP][135] ([Intel XE#2887]) +2 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs.html
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_ccs@crc-sprite-planes-basic-yf-tiled-ccs.html
* igt@kms_chamelium_color_pipeline@plane-ctm3x4:
- shard-bmg: [SKIP][136] ([Intel XE#8480]) -> [SKIP][137] ([Intel XE#7358])
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_chamelium_color_pipeline@plane-ctm3x4.html
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_chamelium_color_pipeline@plane-ctm3x4.html
* igt@kms_chamelium_hpd@dp-hpd-after-suspend:
- shard-bmg: [SKIP][138] ([Intel XE#8480]) -> [SKIP][139] ([Intel XE#2252]) +1 other test skip
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html
* igt@kms_content_protection@lic-type-0-hdcp14:
- shard-bmg: [SKIP][140] ([Intel XE#8480]) -> [FAIL][141] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374])
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_content_protection@lic-type-0-hdcp14.html
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_content_protection@lic-type-0-hdcp14.html
* igt@kms_cursor_crc@cursor-random-64x21:
- shard-bmg: [SKIP][142] ([Intel XE#8480]) -> [SKIP][143] ([Intel XE#2320])
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_cursor_crc@cursor-random-64x21.html
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_cursor_crc@cursor-random-64x21.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions:
- shard-lnl: [SKIP][144] ([Intel XE#309] / [Intel XE#7343]) -> [SKIP][145] ([Intel XE#309] / [Intel XE#7343] / [Intel XE#7935])
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-lnl-5/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-lnl-8/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html
* igt@kms_dp_link_training@non-uhbr-mst:
- shard-bmg: [SKIP][146] ([Intel XE#8480]) -> [SKIP][147] ([Intel XE#4354] / [Intel XE#5882])
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_dp_link_training@non-uhbr-mst.html
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_dp_link_training@non-uhbr-mst.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
- shard-bmg: [SKIP][148] ([Intel XE#8480]) -> [SKIP][149] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
* igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-blt:
- shard-bmg: [SKIP][150] ([Intel XE#8480]) -> [SKIP][151] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-blt.html
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_frontbuffer_tracking@drrs-abgr161616f-draw-blt.html
* igt@kms_frontbuffer_tracking@drrshdr-1p-rte:
- shard-bmg: [SKIP][152] ([Intel XE#8480]) -> [SKIP][153] ([Intel XE#2311]) +9 other tests skip
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_frontbuffer_tracking@drrshdr-1p-rte.html
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_frontbuffer_tracking@drrshdr-1p-rte.html
* igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-mmap-wc:
- shard-bmg: [SKIP][154] ([Intel XE#8480]) -> [SKIP][155] ([Intel XE#7061]) +3 other tests skip
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-mmap-wc.html
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_frontbuffer_tracking@drrshdr-argb161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
- shard-bmg: [SKIP][156] ([Intel XE#8480]) -> [SKIP][157] ([Intel XE#4141]) +2 other tests skip
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary:
- shard-bmg: [SKIP][158] ([Intel XE#8480]) -> [SKIP][159] ([Intel XE#2313]) +13 other tests skip
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][160] ([Intel XE#3374] / [Intel XE#3544]) -> [SKIP][161] ([Intel XE#3544])
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-7/igt@kms_hdr@brightness-with-hdr.html
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-9/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier:
- shard-bmg: [SKIP][162] ([Intel XE#8480]) -> [SKIP][163] ([Intel XE#7283])
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier.html
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-cc-modifier.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5:
- shard-bmg: [SKIP][164] ([Intel XE#8480]) -> [SKIP][165] ([Intel XE#2763] / [Intel XE#6886])
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5.html
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf:
- shard-bmg: [SKIP][166] ([Intel XE#8480]) -> [SKIP][167] ([Intel XE#1489]) +1 other test skip
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf.html
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr@psr-sprite-plane-onoff:
- shard-bmg: [SKIP][168] ([Intel XE#8480]) -> [SKIP][169] ([Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@kms_psr@psr-sprite-plane-onoff.html
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@kms_psr@psr-sprite-plane-onoff.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [SKIP][170] ([Intel XE#2426] / [Intel XE#5848]) -> [FAIL][171] ([Intel XE#1729] / [Intel XE#7424])
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern.html
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern.html
* igt@xe_eudebug@multigpu-basic-client:
- shard-bmg: [SKIP][172] ([Intel XE#8480]) -> [SKIP][173] ([Intel XE#7636]) +1 other test skip
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_eudebug@multigpu-basic-client.html
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@xe_eudebug@multigpu-basic-client.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-rebind:
- shard-bmg: [SKIP][174] ([Intel XE#8480]) -> [SKIP][175] ([Intel XE#2322] / [Intel XE#7372]) +1 other test skip
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-rebind.html
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-rebind.html
* igt@xe_exec_fault_mode@many-execqueues-multi-queue-imm:
- shard-bmg: [SKIP][176] ([Intel XE#8480]) -> [SKIP][177] ([Intel XE#8374]) +4 other tests skip
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_exec_fault_mode@many-execqueues-multi-queue-imm.html
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@xe_exec_fault_mode@many-execqueues-multi-queue-imm.html
* igt@xe_exec_multi_queue@many-execs-preempt-mode-close-fd:
- shard-bmg: [SKIP][178] ([Intel XE#8480]) -> [SKIP][179] ([Intel XE#8364]) +3 other tests skip
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_exec_multi_queue@many-execs-preempt-mode-close-fd.html
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@xe_exec_multi_queue@many-execs-preempt-mode-close-fd.html
* igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr-invalidate-race:
- shard-bmg: [SKIP][180] ([Intel XE#8480]) -> [SKIP][181] ([Intel XE#8378]) +1 other test skip
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr-invalidate-race.html
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@xe_exec_threads@threads-multi-queue-cm-fd-userptr-invalidate-race.html
* igt@xe_mmap@small-bar:
- shard-bmg: [SKIP][182] ([Intel XE#8480]) -> [SKIP][183] ([Intel XE#586] / [Intel XE#7323] / [Intel XE#7384])
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_mmap@small-bar.html
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@xe_mmap@small-bar.html
* igt@xe_page_reclaim@invalid-1g:
- shard-bmg: [SKIP][184] ([Intel XE#8480]) -> [SKIP][185] ([Intel XE#7793])
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_page_reclaim@invalid-1g.html
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@xe_page_reclaim@invalid-1g.html
* igt@xe_pxp@pxp-optout:
- shard-bmg: [SKIP][186] ([Intel XE#8480]) -> [SKIP][187] ([Intel XE#4733] / [Intel XE#7417])
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_pxp@pxp-optout.html
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@xe_pxp@pxp-optout.html
* igt@xe_query@multigpu-query-topology:
- shard-bmg: [SKIP][188] ([Intel XE#8480]) -> [SKIP][189] ([Intel XE#944])
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f/shard-bmg-5/igt@xe_query@multigpu-query-topology.html
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/shard-bmg-8/igt@xe_query@multigpu-query-topology.html
[Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1470
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[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#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2853]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2853
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3374
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4273]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4273
[Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4416]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4416
[Intel XE#4417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4417
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#4760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4760
[Intel XE#5447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5447
[Intel XE#5793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5793
[Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586
[Intel XE#5882]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5882
[Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
[Intel XE#6035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6035
[Intel XE#6126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6126
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#6376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6376
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#6813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6813
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
[Intel XE#6912]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6912
[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#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7174]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7174
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7179]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7179
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
[Intel XE#7320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7320
[Intel XE#7323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7323
[Intel XE#7326]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7326
[Intel XE#7330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7330
[Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
[Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
[Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7353]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7353
[Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7369
[Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
[Intel XE#7375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7375
[Intel XE#7381]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7381
[Intel XE#7382]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7382
[Intel XE#7384]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7384
[Intel XE#7385]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7385
[Intel XE#7386]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7386
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7422
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442
[Intel XE#7448]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7448
[Intel XE#7464]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7464
[Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
[Intel XE#7571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7571
[Intel XE#7622]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7622
[Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
[Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
[Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
[Intel XE#7695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7695
[Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
[Intel XE#7774]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7774
[Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
[Intel XE#7795]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7795
[Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
[Intel XE#7892]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7892
[Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
[Intel XE#7935]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7935
[Intel XE#7954]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7954
[Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
[Intel XE#8098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8098
[Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
[Intel XE#8339]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8339
[Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
[Intel XE#8365]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8365
[Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
[Intel XE#8370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8370
[Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
[Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
[Intel XE#8395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8395
[Intel XE#8396]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8396
[Intel XE#8480]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8480
[Intel XE#8515]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8515
[Intel XE#8517]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8517
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f -> xe-pw-169384v7
IGT_8988: 8988
xe-5309-a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f: a2d82f27ac35c691c1c65b40c72b13d8b2a7f91f
xe-pw-169384v7: 169384v7
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-169384v7/index.html
[-- Attachment #2: Type: text/html, Size: 69126 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread