Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/7] Enable THP support in drm_pagemap
@ 2026-01-09  8:54 Francois Dugast
  2026-01-09  8:54 ` [PATCH v3 1/7] mm: Add folio_split_unref helper Francois Dugast
                   ` (14 more replies)
  0 siblings, 15 replies; 42+ messages in thread
From: Francois Dugast @ 2026-01-09  8:54 UTC (permalink / raw)
  To: intel-xe; +Cc: dri-devel, Francois Dugast

Use Balbir Singh's series for device-private THP support [1] and previous
preparation work in drm_pagemap [2] to add 2MB/THP support in xe. This leads
to significant performance improvements when using SVM with 2MB pages.

[1] https://lore.kernel.org/linux-mm/20251001065707.920170-1-balbirs@nvidia.com/
[2] https://patchwork.freedesktop.org/series/151754/

v2:
- rebase on top of multi-device SVM
- add drm_pagemap_cpages() with temporary patch
- address other feedback from Matt Brost on v1

v3:
The major change is to remove the dependency to the mm/huge_memory
helper migrate_device_split_page() that was called explicitely when
a 2M buddy allocation backed by a large folio would be later reused
for a smaller allocation (4K or 64K). Instead, the first 3 patches
provided by Matthew Brost ensure large folios are split at the time
of freeing.

Francois Dugast (3):
  drm/pagemap: Unlock and put folios when possible
  drm/pagemap: Add helper to access zone_device_data
  drm/pagemap: Enable THP support for GPU memory migration

Matthew Brost (4):
  mm: Add folio_split_unref helper
  fs/dax: Use folio_split_unref helper
  mm: Split device-private and coherent folios before freeing
  drm/pagemap: Correct cpages calculation for migrate_vma_setup

 drivers/gpu/drm/drm_gpusvm.c  |   7 +-
 drivers/gpu/drm/drm_pagemap.c | 154 ++++++++++++++++++++++++++++------
 fs/dax.c                      |  25 +-----
 include/drm/drm_pagemap.h     |  15 ++++
 include/linux/huge_mm.h       |   1 +
 mm/huge_memory.c              |  39 +++++++++
 mm/memremap.c                 |   2 +
 7 files changed, 190 insertions(+), 53 deletions(-)

-- 
2.43.0


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

* [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
@ 2026-01-09  8:54 ` Francois Dugast
  2026-01-09 13:19   ` David Hildenbrand (Red Hat)
  2026-01-09  8:54 ` [PATCH v3 2/7] fs/dax: Use " Francois Dugast
                   ` (13 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Francois Dugast @ 2026-01-09  8:54 UTC (permalink / raw)
  To: intel-xe
  Cc: dri-devel, Matthew Brost, Balbir Singh, Andrew Morton,
	David Hildenbrand, Lorenzo Stoakes, Zi Yan, Baolin Wang,
	Liam R. Howlett, Nico Pache, Ryan Roberts, Dev Jain, Barry Song,
	Lance Yang, linux-mm, linux-kernel, Alistair Popple,
	Francois Dugast

From: Matthew Brost <matthew.brost@intel.com>

Add folio_split_unref helper which splits an unreferenced folio
(refcount == 0) into individual pages. Intended to be called on special
pages (e.g., device-private, DAX, etc.) when returning the folio to the
free page pool.

Cc: Balbir Singh <balbirs@nvidia.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: David Hildenbrand <david@kernel.org>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Zi Yan <ziy@nvidia.com>
Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
Cc: Nico Pache <npache@redhat.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Dev Jain <dev.jain@arm.com>
Cc: Barry Song <baohua@kernel.org>
Cc: Lance Yang <lance.yang@linux.dev>
Cc: linux-mm@kvack.org
Cc: linux-kernel@vger.kernel.org
Suggested-by: Alistair Popple <apopple@nvidia.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Francois Dugast <francois.dugast@intel.com>
---
 include/linux/huge_mm.h |  1 +
 mm/huge_memory.c        | 39 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index a4d9f964dfde..18cb9728d8f1 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -369,6 +369,7 @@ enum split_type {
 	SPLIT_TYPE_NON_UNIFORM,
 };
 
+void folio_split_unref(struct folio *folio);
 int __split_huge_page_to_list_to_order(struct page *page, struct list_head *list,
 		unsigned int new_order);
 int folio_split_unmapped(struct folio *folio, unsigned int new_order);
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 40cf59301c21..0eb9e6ad8639 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -3580,6 +3580,45 @@ static void __split_folio_to_order(struct folio *folio, int old_order,
 		ClearPageCompound(&folio->page);
 }
 
+/**
+ * folio_split_unref() - split an unreferenced folio (refcount == 0)
+ * @folio: the to-be-split folio
+ *
+ * Split an unreferenced folio (refcount == 0) into individual pages.
+ * Intended to be called on special pages (e.g., device-private, DAX, etc.)
+ * when returning the folio to the free page pool.
+ */
+void folio_split_unref(struct folio *folio)
+{
+	struct dev_pagemap *pgmap = page_pgmap(&folio->page);
+	int order, i;
+
+	folio->mapping = NULL;
+	order = folio_order(folio);
+	if (!order)
+		return;
+
+	folio_reset_order(folio);
+
+	for (i = 0; i < (1UL << order); i++) {
+		struct page *page = folio_page(folio, i);
+		struct folio *new_folio = (struct folio *)page;
+
+		ClearPageHead(page);
+		clear_compound_head(page);
+
+		new_folio->mapping = NULL;
+		/*
+		 * Reset pgmap which was over-written by
+		 * prep_compound_page().
+		 */
+		new_folio->pgmap = pgmap;
+		new_folio->share = 0;	/* fsdax only, unused for device private */
+		VM_WARN_ON_FOLIO(folio_ref_count(new_folio), new_folio);
+	}
+}
+EXPORT_SYMBOL_GPL(folio_split_unref);
+
 /**
  * __split_unmapped_folio() - splits an unmapped @folio to lower order folios in
  * two ways: uniform split or non-uniform split.
-- 
2.43.0


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

* [PATCH v3 2/7] fs/dax: Use folio_split_unref helper
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
  2026-01-09  8:54 ` [PATCH v3 1/7] mm: Add folio_split_unref helper Francois Dugast
@ 2026-01-09  8:54 ` Francois Dugast
  2026-01-09  8:54 ` [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing Francois Dugast
                   ` (12 subsequent siblings)
  14 siblings, 0 replies; 42+ messages in thread
From: Francois Dugast @ 2026-01-09  8:54 UTC (permalink / raw)
  To: intel-xe
  Cc: dri-devel, Matthew Brost, Dan Williams, Matthew Wilcox, Jan Kara,
	Alexander Viro, Christian Brauner, linux-fsdevel, nvdimm,
	linux-kernel, Alistair Popple, Francois Dugast

From: Matthew Brost <matthew.brost@intel.com>

Use folio_split_unref helper to split a folio into individual upon final
put of a fsdax page.

Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Jan Kara <jack@suse.cz>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Christian Brauner <brauner@kernel.org>
Cc: linux-fsdevel@vger.kernel.org
Cc: nvdimm@lists.linux.dev
Cc: linux-kernel@vger.kernel.org
Suggested-by: Alistair Popple <apopple@nvidia.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Francois Dugast <francois.dugast@intel.com>
---
 fs/dax.c | 25 +------------------------
 1 file changed, 1 insertion(+), 24 deletions(-)

diff --git a/fs/dax.c b/fs/dax.c
index 289e6254aa30..90ec68785f40 100644
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -381,7 +381,6 @@ static void dax_folio_make_shared(struct folio *folio)
 static inline unsigned long dax_folio_put(struct folio *folio)
 {
 	unsigned long ref;
-	int order, i;
 
 	if (!dax_folio_is_shared(folio))
 		ref = 0;
@@ -391,29 +390,7 @@ static inline unsigned long dax_folio_put(struct folio *folio)
 	if (ref)
 		return ref;
 
-	folio->mapping = NULL;
-	order = folio_order(folio);
-	if (!order)
-		return 0;
-	folio_reset_order(folio);
-
-	for (i = 0; i < (1UL << order); i++) {
-		struct dev_pagemap *pgmap = page_pgmap(&folio->page);
-		struct page *page = folio_page(folio, i);
-		struct folio *new_folio = (struct folio *)page;
-
-		ClearPageHead(page);
-		clear_compound_head(page);
-
-		new_folio->mapping = NULL;
-		/*
-		 * Reset pgmap which was over-written by
-		 * prep_compound_page().
-		 */
-		new_folio->pgmap = pgmap;
-		new_folio->share = 0;
-		WARN_ON_ONCE(folio_ref_count(new_folio));
-	}
+	folio_split_unref(folio);
 
 	return ref;
 }
-- 
2.43.0


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

* [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
  2026-01-09  8:54 ` [PATCH v3 1/7] mm: Add folio_split_unref helper Francois Dugast
  2026-01-09  8:54 ` [PATCH v3 2/7] fs/dax: Use " Francois Dugast
@ 2026-01-09  8:54 ` Francois Dugast
  2026-01-09 11:09   ` Mika Penttilä
  2026-01-09  8:54 ` [PATCH v3 4/7] drm/pagemap: Unlock and put folios when possible Francois Dugast
                   ` (11 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Francois Dugast @ 2026-01-09  8:54 UTC (permalink / raw)
  To: intel-xe
  Cc: dri-devel, Matthew Brost, Balbir Singh, Alistair Popple, Zi Yan,
	David Hildenbrand, Oscar Salvador, Andrew Morton, linux-mm,
	linux-cxl, linux-kernel, Francois Dugast

From: Matthew Brost <matthew.brost@intel.com>

Split device-private and coherent folios into individual pages before
freeing so that any order folio can be formed upon the next use of the
pages.

Cc: Balbir Singh <balbirs@nvidia.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Zi Yan <ziy@nvidia.com>
Cc: David Hildenbrand <david@kernel.org>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org
Cc: linux-cxl@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Francois Dugast <francois.dugast@intel.com>
---
 mm/memremap.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/mm/memremap.c b/mm/memremap.c
index 63c6ab4fdf08..7289cdd6862f 100644
--- a/mm/memremap.c
+++ b/mm/memremap.c
@@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
 	case MEMORY_DEVICE_COHERENT:
 		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
 			break;
+
+		folio_split_unref(folio);
 		pgmap->ops->folio_free(folio);
 		percpu_ref_put_many(&folio->pgmap->ref, nr);
 		break;
-- 
2.43.0


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

* [PATCH v3 4/7] drm/pagemap: Unlock and put folios when possible
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (2 preceding siblings ...)
  2026-01-09  8:54 ` [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing Francois Dugast
@ 2026-01-09  8:54 ` Francois Dugast
  2026-01-09  8:54 ` [PATCH v3 5/7] drm/pagemap: Add helper to access zone_device_data Francois Dugast
                   ` (10 subsequent siblings)
  14 siblings, 0 replies; 42+ messages in thread
From: Francois Dugast @ 2026-01-09  8:54 UTC (permalink / raw)
  To: intel-xe; +Cc: dri-devel, Francois Dugast, Matthew Brost

If the page is part of a folio, unlock and put the whole folio at once
instead of individual pages one after the other. This will reduce the
amount of operations once device THP are in use.

Suggested-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Francois Dugast <francois.dugast@intel.com>
---
 drivers/gpu/drm/drm_pagemap.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c
index 03ee39a761a4..a686a58508cf 100644
--- a/drivers/gpu/drm/drm_pagemap.c
+++ b/drivers/gpu/drm/drm_pagemap.c
@@ -154,15 +154,15 @@ static void drm_pagemap_zdd_put(struct drm_pagemap_zdd *zdd)
 }
 
 /**
- * drm_pagemap_migration_unlock_put_page() - Put a migration page
- * @page: Pointer to the page to put
+ * drm_pagemap_migration_unlock_put_folio() - Put a migration folio
+ * @folio: Pointer to the folio to put
  *
- * This function unlocks and puts a page.
+ * This function unlocks and puts a folio.
  */
-static void drm_pagemap_migration_unlock_put_page(struct page *page)
+static void drm_pagemap_migration_unlock_put_folio(struct folio *folio)
 {
-	unlock_page(page);
-	put_page(page);
+	folio_unlock(folio);
+	folio_put(folio);
 }
 
 /**
@@ -177,15 +177,23 @@ static void drm_pagemap_migration_unlock_put_pages(unsigned long npages,
 {
 	unsigned long i;
 
-	for (i = 0; i < npages; ++i) {
+	for (i = 0; i < npages;) {
 		struct page *page;
+		struct folio *folio;
+		unsigned int order = 0;
 
 		if (!migrate_pfn[i])
-			continue;
+			goto next;
 
 		page = migrate_pfn_to_page(migrate_pfn[i]);
-		drm_pagemap_migration_unlock_put_page(page);
+		folio = page_folio(page);
+		order = folio_order(folio);
+
+		drm_pagemap_migration_unlock_put_folio(folio);
 		migrate_pfn[i] = 0;
+
+next:
+		i += NR_PAGES(order);
 	}
 }
 
-- 
2.43.0


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

* [PATCH v3 5/7] drm/pagemap: Add helper to access zone_device_data
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (3 preceding siblings ...)
  2026-01-09  8:54 ` [PATCH v3 4/7] drm/pagemap: Unlock and put folios when possible Francois Dugast
@ 2026-01-09  8:54 ` Francois Dugast
  2026-01-09  8:54 ` [PATCH v3 6/7] drm/pagemap: Correct cpages calculation for migrate_vma_setup Francois Dugast
                   ` (9 subsequent siblings)
  14 siblings, 0 replies; 42+ messages in thread
From: Francois Dugast @ 2026-01-09  8:54 UTC (permalink / raw)
  To: intel-xe; +Cc: dri-devel, Francois Dugast, Matthew Brost

This new helper helps ensure all accesses to zone_device_data use the
correct API whether the page is part of a folio or not.

v2:
- Move to drm_pagemap.h, stick to folio_zone_device_data (Matthew Brost)
- Return struct drm_pagemap_zdd * (Matthew Brost)

Suggested-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Francois Dugast <francois.dugast@intel.com>
---
 drivers/gpu/drm/drm_gpusvm.c  |  7 +++++--
 drivers/gpu/drm/drm_pagemap.c | 21 ++++++++++++---------
 include/drm/drm_pagemap.h     | 15 +++++++++++++++
 3 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index aa9a0b60e727..585d913d3d19 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -1488,12 +1488,15 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm,
 		order = drm_gpusvm_hmm_pfn_to_order(pfns[i], i, npages);
 		if (is_device_private_page(page) ||
 		    is_device_coherent_page(page)) {
+			struct drm_pagemap_zdd *__zdd =
+				drm_pagemap_page_zone_device_data(page);
+
 			if (!ctx->allow_mixed &&
-			    zdd != page->zone_device_data && i > 0) {
+			    zdd != __zdd && i > 0) {
 				err = -EOPNOTSUPP;
 				goto err_unmap;
 			}
-			zdd = page->zone_device_data;
+			zdd = __zdd;
 			if (pagemap != page_pgmap(page)) {
 				if (i > 0) {
 					err = -EOPNOTSUPP;
diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c
index a686a58508cf..543d9f39b008 100644
--- a/drivers/gpu/drm/drm_pagemap.c
+++ b/drivers/gpu/drm/drm_pagemap.c
@@ -252,7 +252,7 @@ static int drm_pagemap_migrate_map_pages(struct device *dev,
 		order = folio_order(folio);
 
 		if (is_device_private_page(page)) {
-			struct drm_pagemap_zdd *zdd = page->zone_device_data;
+			struct drm_pagemap_zdd *zdd = drm_pagemap_page_zone_device_data(page);
 			struct drm_pagemap *dpagemap = zdd->dpagemap;
 			struct drm_pagemap_addr addr;
 
@@ -323,7 +323,7 @@ static void drm_pagemap_migrate_unmap_pages(struct device *dev,
 			goto next;
 
 		if (is_zone_device_page(page)) {
-			struct drm_pagemap_zdd *zdd = page->zone_device_data;
+			struct drm_pagemap_zdd *zdd = drm_pagemap_page_zone_device_data(page);
 			struct drm_pagemap *dpagemap = zdd->dpagemap;
 
 			dpagemap->ops->device_unmap(dpagemap, dev, pagemap_addr[i]);
@@ -611,7 +611,8 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation,
 
 		pages[i] = NULL;
 		if (src_page && is_device_private_page(src_page)) {
-			struct drm_pagemap_zdd *src_zdd = src_page->zone_device_data;
+			struct drm_pagemap_zdd *src_zdd =
+				drm_pagemap_page_zone_device_data(src_page);
 
 			if (page_pgmap(src_page) == pagemap &&
 			    !mdetails->can_migrate_same_pagemap) {
@@ -733,8 +734,8 @@ static int drm_pagemap_migrate_populate_ram_pfn(struct vm_area_struct *vas,
 			goto next;
 
 		if (fault_page) {
-			if (src_page->zone_device_data !=
-			    fault_page->zone_device_data)
+			if (drm_pagemap_page_zone_device_data(src_page) !=
+			    drm_pagemap_page_zone_device_data(fault_page))
 				goto next;
 		}
 
@@ -1075,7 +1076,7 @@ static int __drm_pagemap_migrate_to_ram(struct vm_area_struct *vas,
 	void *buf;
 	int i, err = 0;
 
-	zdd = page->zone_device_data;
+	zdd = drm_pagemap_page_zone_device_data(page);
 	if (time_before64(get_jiffies_64(), zdd->devmem_allocation->timeslice_expiration))
 		return 0;
 
@@ -1158,7 +1159,9 @@ static int __drm_pagemap_migrate_to_ram(struct vm_area_struct *vas,
  */
 static void drm_pagemap_folio_free(struct folio *folio)
 {
-	drm_pagemap_zdd_put(folio->page.zone_device_data);
+	struct page *page = folio_page(folio, 0);
+
+	drm_pagemap_zdd_put(drm_pagemap_page_zone_device_data(page));
 }
 
 /**
@@ -1174,7 +1177,7 @@ static void drm_pagemap_folio_free(struct folio *folio)
  */
 static vm_fault_t drm_pagemap_migrate_to_ram(struct vm_fault *vmf)
 {
-	struct drm_pagemap_zdd *zdd = vmf->page->zone_device_data;
+	struct drm_pagemap_zdd *zdd = drm_pagemap_page_zone_device_data(vmf->page);
 	int err;
 
 	err = __drm_pagemap_migrate_to_ram(vmf->vma,
@@ -1240,7 +1243,7 @@ EXPORT_SYMBOL_GPL(drm_pagemap_devmem_init);
  */
 struct drm_pagemap *drm_pagemap_page_to_dpagemap(struct page *page)
 {
-	struct drm_pagemap_zdd *zdd = page->zone_device_data;
+	struct drm_pagemap_zdd *zdd = drm_pagemap_page_zone_device_data(page);
 
 	return zdd->devmem_allocation->dpagemap;
 }
diff --git a/include/drm/drm_pagemap.h b/include/drm/drm_pagemap.h
index 46e9c58f09e0..736fb6cb7b33 100644
--- a/include/drm/drm_pagemap.h
+++ b/include/drm/drm_pagemap.h
@@ -4,6 +4,7 @@
 
 #include <linux/dma-direction.h>
 #include <linux/hmm.h>
+#include <linux/memremap.h>
 #include <linux/types.h>
 
 #define NR_PAGES(order) (1U << (order))
@@ -359,4 +360,18 @@ int drm_pagemap_populate_mm(struct drm_pagemap *dpagemap,
 void drm_pagemap_destroy(struct drm_pagemap *dpagemap, bool is_atomic_or_reclaim);
 
 int drm_pagemap_reinit(struct drm_pagemap *dpagemap);
+
+/**
+ * drm_pagemap_page_zone_device_data() - Page to zone_device_data
+ * @page: Pointer to the page
+ *
+ * Return: Page's zone_device_data
+ */
+static inline struct drm_pagemap_zdd *drm_pagemap_page_zone_device_data(struct page *page)
+{
+	struct folio *folio = page_folio(page);
+
+	return folio_zone_device_data(folio);
+}
+
 #endif
-- 
2.43.0


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

* [PATCH v3 6/7] drm/pagemap: Correct cpages calculation for migrate_vma_setup
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (4 preceding siblings ...)
  2026-01-09  8:54 ` [PATCH v3 5/7] drm/pagemap: Add helper to access zone_device_data Francois Dugast
@ 2026-01-09  8:54 ` Francois Dugast
  2026-01-09  8:54 ` [PATCH v3 7/7] drm/pagemap: Enable THP support for GPU memory migration Francois Dugast
                   ` (8 subsequent siblings)
  14 siblings, 0 replies; 42+ messages in thread
From: Francois Dugast @ 2026-01-09  8:54 UTC (permalink / raw)
  To: intel-xe; +Cc: dri-devel, Matthew Brost, Francois Dugast

From: Matthew Brost <matthew.brost@intel.com>

cpages returned from migrate_vma_setup represents the total number of
individual pages found, not the number of 4K pages. The math in
drm_pagemap_migrate_to_devmem for npages is based on the number of 4K
pages, so cpages != npages can fail even if the entire memory range is
found in migrate_vma_setup (e.g., when a single 2M page is found).
Add drm_pagemap_cpages, which converts cpages to the number of 4K pages
found.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Francois Dugast <francois.dugast@intel.com>
---
 drivers/gpu/drm/drm_pagemap.c | 38 ++++++++++++++++++++++++++++++++++-
 1 file changed, 37 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c
index 543d9f39b008..121234cef38c 100644
--- a/drivers/gpu/drm/drm_pagemap.c
+++ b/drivers/gpu/drm/drm_pagemap.c
@@ -452,6 +452,41 @@ static int drm_pagemap_migrate_range(struct drm_pagemap_devmem *devmem,
 	return ret;
 }
 
+/**
+ * drm_pagemap_cpages() - Count collected pages
+ * @migrate_pfn: Array of migrate_pfn entries to account
+ * @npages: Number of entries in @migrate_pfn
+ *
+ * Compute the total number of minimum-sized pages represented by the
+ * collected entries in @migrate_pfn. The total is derived from the
+ * order encoded in each entry.
+ *
+ * Return: Total number of minimum-sized pages.
+ */
+static int drm_pagemap_cpages(unsigned long *migrate_pfn, unsigned long npages)
+{
+	unsigned long i, cpages = 0;
+
+	for (i = 0; i < npages;) {
+		struct page *page = migrate_pfn_to_page(migrate_pfn[i]);
+		struct folio *folio;
+		unsigned int order = 0;
+
+		if (page) {
+			folio = page_folio(page);
+			order = folio_order(folio);
+			cpages += NR_PAGES(order);
+		} else if (migrate_pfn[i] & MIGRATE_PFN_COMPOUND) {
+			order = HPAGE_PMD_ORDER;
+			cpages += NR_PAGES(order);
+		}
+
+		i += NR_PAGES(order);
+	}
+
+	return cpages;
+}
+
 /**
  * drm_pagemap_migrate_to_devmem() - Migrate a struct mm_struct range to device memory
  * @devmem_allocation: The device memory allocation to migrate to.
@@ -564,7 +599,8 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation,
 		goto err_free;
 	}
 
-	if (migrate.cpages != npages) {
+	if (migrate.cpages != npages &&
+	    drm_pagemap_cpages(migrate.src, npages) != npages) {
 		/*
 		 * Some pages to migrate. But we want to migrate all or
 		 * nothing. Raced or unknown device pages.
-- 
2.43.0


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

* [PATCH v3 7/7] drm/pagemap: Enable THP support for GPU memory migration
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (5 preceding siblings ...)
  2026-01-09  8:54 ` [PATCH v3 6/7] drm/pagemap: Correct cpages calculation for migrate_vma_setup Francois Dugast
@ 2026-01-09  8:54 ` Francois Dugast
  2026-01-09 23:33   ` Matthew Brost
  2026-01-09  9:33 ` ✓ CI.KUnit: success for Enable THP support in drm_pagemap (rev3) Patchwork
                   ` (7 subsequent siblings)
  14 siblings, 1 reply; 42+ messages in thread
From: Francois Dugast @ 2026-01-09  8:54 UTC (permalink / raw)
  To: intel-xe
  Cc: dri-devel, Francois Dugast, Matthew Brost, Thomas Hellström,
	Michal Mrozek

This enables support for Transparent Huge Pages (THP) for device pages by
using MIGRATE_VMA_SELECT_COMPOUND during migration. It removes the need to
split folios and loop multiple times over all pages to perform required
operations at page level. Instead, we rely on newly introduced support for
higher orders in drm_pagemap and folio-level API.

In Xe, this drastically improves performance when using SVM. The GT stats
below collected after a 2MB page fault show overall servicing is more than
7 times faster, and thanks to reduced CPU overhead the time spent on the
actual copy goes from 23% without THP to 80% with THP:

Without THP:

    svm_2M_pagefault_us: 966
    svm_2M_migrate_us: 942
    svm_2M_device_copy_us: 223
    svm_2M_get_pages_us: 9
    svm_2M_bind_us: 10

With THP:

    svm_2M_pagefault_us: 132
    svm_2M_migrate_us: 128
    svm_2M_device_copy_us: 106
    svm_2M_get_pages_us: 1
    svm_2M_bind_us: 2

v2:
- Fix one occurrence of drm_pagemap_get_devmem_page() (Matthew Brost)

v3:
- Remove migrate_device_split_page() and folio_split_lock, instead rely on
  free_zone_device_folio() to split folios before freeing (Matthew Brost)
- Assert folio order is HPAGE_PMD_ORDER (Matthew Brost)
- Always use folio_set_zone_device_data() in split (Matthew Brost)

Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Michal Mrozek <michal.mrozek@intel.com>
Signed-off-by: Francois Dugast <francois.dugast@intel.com>
---
 drivers/gpu/drm/drm_pagemap.c | 69 +++++++++++++++++++++++++++++++----
 1 file changed, 61 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c
index 121234cef38c..5b89140edb8e 100644
--- a/drivers/gpu/drm/drm_pagemap.c
+++ b/drivers/gpu/drm/drm_pagemap.c
@@ -200,16 +200,20 @@ static void drm_pagemap_migration_unlock_put_pages(unsigned long npages,
 /**
  * drm_pagemap_get_devmem_page() - Get a reference to a device memory page
  * @page: Pointer to the page
+ * @order: Order
  * @zdd: Pointer to the GPU SVM zone device data
  *
  * This function associates the given page with the specified GPU SVM zone
  * device data and initializes it for zone device usage.
  */
 static void drm_pagemap_get_devmem_page(struct page *page,
+					unsigned int order,
 					struct drm_pagemap_zdd *zdd)
 {
-	page->zone_device_data = drm_pagemap_zdd_get(zdd);
-	zone_device_page_init(page, 0);
+	struct folio *folio = page_folio(page);
+
+	folio_set_zone_device_data(folio, drm_pagemap_zdd_get(zdd));
+	zone_device_page_init(page, order);
 }
 
 /**
@@ -534,7 +538,8 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation,
 		 * rare and only occur when the madvise attributes of memory are
 		 * changed or atomics are being used.
 		 */
-		.flags		= MIGRATE_VMA_SELECT_SYSTEM | MIGRATE_VMA_SELECT_DEVICE_COHERENT,
+		.flags		= MIGRATE_VMA_SELECT_SYSTEM | MIGRATE_VMA_SELECT_DEVICE_COHERENT |
+				  MIGRATE_VMA_SELECT_COMPOUND,
 	};
 	unsigned long i, npages = npages_in_range(start, end);
 	unsigned long own_pages = 0, migrated_pages = 0;
@@ -640,10 +645,12 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation,
 
 	own_pages = 0;
 
-	for (i = 0; i < npages; ++i) {
+	for (i = 0; i < npages;) {
+		unsigned long j;
 		struct page *page = pfn_to_page(migrate.dst[i]);
 		struct page *src_page = migrate_pfn_to_page(migrate.src[i]);
 		cur.start = i;
+		unsigned int order = 0;
 
 		pages[i] = NULL;
 		if (src_page && is_device_private_page(src_page)) {
@@ -670,7 +677,20 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation,
 			pages[i] = page;
 		}
 		migrate.dst[i] = migrate_pfn(migrate.dst[i]);
-		drm_pagemap_get_devmem_page(page, zdd);
+
+		if (migrate.src[i] & MIGRATE_PFN_COMPOUND) {
+			drm_WARN_ONCE(dpagemap->drm, src_page &&
+				      folio_order(page_folio(src_page)) != HPAGE_PMD_ORDER,
+				      "Unexpected folio order\n");
+
+			order = HPAGE_PMD_ORDER;
+			migrate.dst[i] |= MIGRATE_PFN_COMPOUND;
+
+			for (j = 1; j < NR_PAGES(order) && i + j < npages; j++)
+				migrate.dst[i + j] = 0;
+		}
+
+		drm_pagemap_get_devmem_page(page, order, zdd);
 
 		/* If we switched the migrating drm_pagemap, migrate previous pages now */
 		err = drm_pagemap_migrate_range(devmem_allocation, migrate.src, migrate.dst,
@@ -680,7 +700,10 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation,
 			npages = i + 1;
 			goto err_finalize;
 		}
+
+		i += NR_PAGES(order);
 	}
+
 	cur.start = npages;
 	cur.ops = NULL; /* Force migration */
 	err = drm_pagemap_migrate_range(devmem_allocation, migrate.src, migrate.dst,
@@ -789,6 +812,8 @@ static int drm_pagemap_migrate_populate_ram_pfn(struct vm_area_struct *vas,
 		page = folio_page(folio, 0);
 		mpfn[i] = migrate_pfn(page_to_pfn(page));
 
+		if (order)
+			mpfn[i] |= MIGRATE_PFN_COMPOUND;
 next:
 		if (page)
 			addr += page_size(page);
@@ -1044,8 +1069,15 @@ int drm_pagemap_evict_to_ram(struct drm_pagemap_devmem *devmem_allocation)
 	if (err)
 		goto err_finalize;
 
-	for (i = 0; i < npages; ++i)
+	for (i = 0; i < npages;) {
+		unsigned int order = 0;
+
 		pages[i] = migrate_pfn_to_page(src[i]);
+		if (pages[i])
+			order = folio_order(page_folio(pages[i]));
+
+		i += NR_PAGES(order);
+	}
 
 	err = ops->copy_to_ram(pages, pagemap_addr, npages, NULL);
 	if (err)
@@ -1098,7 +1130,8 @@ static int __drm_pagemap_migrate_to_ram(struct vm_area_struct *vas,
 		.vma		= vas,
 		.pgmap_owner	= page_pgmap(page)->owner,
 		.flags		= MIGRATE_VMA_SELECT_DEVICE_PRIVATE |
-		MIGRATE_VMA_SELECT_DEVICE_COHERENT,
+				  MIGRATE_VMA_SELECT_DEVICE_COHERENT |
+				  MIGRATE_VMA_SELECT_COMPOUND,
 		.fault_page	= page,
 	};
 	struct drm_pagemap_migrate_details mdetails = {};
@@ -1164,8 +1197,15 @@ static int __drm_pagemap_migrate_to_ram(struct vm_area_struct *vas,
 	if (err)
 		goto err_finalize;
 
-	for (i = 0; i < npages; ++i)
+	for (i = 0; i < npages;) {
+		unsigned int order = 0;
+
 		pages[i] = migrate_pfn_to_page(migrate.src[i]);
+		if (pages[i])
+			order = folio_order(page_folio(pages[i]));
+
+		i += NR_PAGES(order);
+	}
 
 	err = ops->copy_to_ram(pages, pagemap_addr, npages, NULL);
 	if (err)
@@ -1223,9 +1263,22 @@ static vm_fault_t drm_pagemap_migrate_to_ram(struct vm_fault *vmf)
 	return err ? VM_FAULT_SIGBUS : 0;
 }
 
+static void drm_pagemap_folio_split(struct folio *orig_folio, struct folio *new_folio)
+{
+	struct drm_pagemap_zdd *zdd;
+
+	if (!new_folio)
+		return;
+
+	new_folio->pgmap = orig_folio->pgmap;
+	zdd = folio_zone_device_data(orig_folio);
+	folio_set_zone_device_data(new_folio, drm_pagemap_zdd_get(zdd));
+}
+
 static const struct dev_pagemap_ops drm_pagemap_pagemap_ops = {
 	.folio_free = drm_pagemap_folio_free,
 	.migrate_to_ram = drm_pagemap_migrate_to_ram,
+	.folio_split = drm_pagemap_folio_split,
 };
 
 /**
-- 
2.43.0


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

* ✓ CI.KUnit: success for Enable THP support in drm_pagemap (rev3)
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (6 preceding siblings ...)
  2026-01-09  8:54 ` [PATCH v3 7/7] drm/pagemap: Enable THP support for GPU memory migration Francois Dugast
@ 2026-01-09  9:33 ` Patchwork
  2026-01-09  9:49 ` ✗ CI.checksparse: warning " Patchwork
                   ` (6 subsequent siblings)
  14 siblings, 0 replies; 42+ messages in thread
From: Patchwork @ 2026-01-09  9:33 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: Enable THP support in drm_pagemap (rev3)
URL   : https://patchwork.freedesktop.org/series/159119/
State : success

== Summary ==

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

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

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

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



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

* ✗ CI.checksparse: warning for Enable THP support in drm_pagemap (rev3)
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (7 preceding siblings ...)
  2026-01-09  9:33 ` ✓ CI.KUnit: success for Enable THP support in drm_pagemap (rev3) Patchwork
@ 2026-01-09  9:49 ` Patchwork
  2026-01-09 10:34 ` ✗ Xe.CI.BAT: failure " Patchwork
                   ` (5 subsequent siblings)
  14 siblings, 0 replies; 42+ messages in thread
From: Patchwork @ 2026-01-09  9:49 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: Enable THP support in drm_pagemap (rev3)
URL   : https://patchwork.freedesktop.org/series/159119/
State : warning

== Summary ==

+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 8c03c66faa101a552d780d9e9ec0cdcc0f80e317
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/display/drm_dp_helper.c:1979:1: error: bad constant expression
+drivers/gpu/drm/display/drm_dp_helper.c:1980:1: error: bad constant expression
+drivers/gpu/drm/display/drm_dp_helper.c:2144:1: error: bad constant expression
+drivers/gpu/drm/display/drm_dp_helper.c:2145:1: error: bad constant expression
+drivers/gpu/drm/drm_bridge.c:1643:1: error: bad constant expression
+drivers/gpu/drm/drm_bridge.c:1644:1: error: bad constant expression
+drivers/gpu/drm/drm_bridge.c:1645:1: error: bad constant expression
+drivers/gpu/drm/drm_bridge.c:1645:1: error: bad constant expression
+drivers/gpu/drm/drm_drv.c:60:1: error: bad constant expression
+drivers/gpu/drm/drm_drv.c:61:1: error: bad constant expression
+drivers/gpu/drm/drm_drv.c:62:1: error: bad constant expression
+drivers/gpu/drm/drm_drv.c:62:1: error: bad constant expression
+drivers/gpu/drm/drm_edid.c:1800:1: error: bad constant expression
+drivers/gpu/drm/drm_edid.c:1801:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_framebuffer_helper.c:23:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:28:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:967:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:968:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:969:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:969:1: error: bad constant expression
+drivers/gpu/drm/drm_panel.c:733:1: error: bad constant expression
+drivers/gpu/drm/drm_panel.c:734:1: error: bad constant expression
+drivers/gpu/drm/drm_panel.c:735:1: error: bad constant expression
+drivers/gpu/drm/drm_panel.c:735:1: error: bad constant expression
+drivers/gpu/drm/drm_panel_orientation_quirks.c:601:1: error: bad constant expression
+drivers/gpu/drm/drm_panel_orientation_quirks.c:602:1: error: bad constant expression
+drivers/gpu/drm/drm_panel_orientation_quirks.c:602:1: error: bad constant expression
+drivers/gpu/drm/drm_prime.c:44:1: error: bad constant expression
+drivers/gpu/drm/drm_probe_helper.c:68:1: error: bad constant expression
+drivers/gpu/drm/drm_simple_kms_helper.c:457:1: error: bad constant expression
+drivers/gpu/drm/drm_simple_kms_helper.c:458:1: error: bad constant expression
+drivers/gpu/drm/drm_simple_kms_helper.c:458:1: error: bad constant expression
+drivers/gpu/drm/drm_vblank.c:173:1: error: bad constant expression
+drivers/gpu/drm/drm_vblank.c:174:1: error: bad constant expression
+drivers/gpu/drm/drm_vblank.c:175:1: error: bad constant expression
+drivers/gpu/drm/drm_vblank.c:176:1: error: bad constant expression
+drivers/gpu/drm/i915/display/dvo_ch7017.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/dvo_ch7xxx.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/dvo_ivch.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/dvo_ns2501.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/dvo_sil164.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/dvo_tfp410.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/g4x_dp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/g4x_hdmi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/hsw_ips.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/i9xx_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/i9xx_wm.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/icl_dsi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_dsi.h):
+drivers/gpu/drm/i915/display/intel_acpi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_alpm.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_atomic.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_audio.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_backlight.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_bios.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_bw.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_casf.c:147:21: error: too long token expansion
+drivers/gpu/drm/i915/display/intel_casf.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_color.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_colorop.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_color_pipeline.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_combo_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_connector.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_crtc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_crt.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_crtc_state_dump.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_cursor.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_cx0_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dbuf_bw.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_ddi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_debugfs.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_device.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_driver.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_irq.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_display_power.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_power_map.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_power_well.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_reset.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_rps.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dmc.c:131:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:134:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:137:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:140:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:143:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:146:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:149:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:153:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:154:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:157:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:160:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:163:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:170:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:174:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:178:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:182:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:186:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp_aux.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp_hdcp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dpio_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.drivers/gpu/drm/i915/display/intel_dmc.c:166:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dp_link_training.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dpll.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dpll_mgr.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp_mst.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dpt.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dpt_common.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp_test.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_drrs.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dsb.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dsi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_dsi.h):
+drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dsi_vbt.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dvo.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_encoder.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fb_bo.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fbc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_fb.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fb_pin.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fdi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fifo_underrun.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_flipq.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_frontbuffer.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_global_state.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_gmbus.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_hdcp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_hdmi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_hotplug.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_hotplug_irq.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_initial_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_link_bw.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_load_detect.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_lspcon.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_lt_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_lvds.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_modeset_lock.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_modeset_setup.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_modeset_verify.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_opregion.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_overlay.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_panel.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_pch_display.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_pch_refclk.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_pfit.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_pipe_crc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_pmdemand.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_pps.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_quirks.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_sdvo.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_snps_hdmi_pll.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_snps_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_sprite.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_sprite_uapi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_tc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_tv.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_vblank.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_vdsc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_vga.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_vrr.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_wm.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/skl_prefill.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/skl_scaler.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/skl_universal_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/skl_watermark.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/vlv_clock.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/vlv_dsi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/vlv_dsi_pll.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/vlv_sideband.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c:18:1: error: bad constant expression
+drivers/gpu/drm/i915/gem/i915_gem_pages.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/gt/intel_reset.c:1569:12: warning: context imbalance in '_intel_gt_reset_lock' - different lock contexts for basic block
+drivers/gpu/drm/i915/gt/intel_sseu.c:600:17: error: too long token expansion
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:193:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_active.c:1062:16: warning: context imbalance in '__i915_active_fence_set' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    expected struct list_head const *list
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    got struct list_head [noderef] __rcu *pos
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/i915/i915_gpu_error.c:692:3: warning: symbol 'guc_hw_reg_state' was not declared. Should it be static?
+drivers/gpu/drm/i915/i915_initial_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/i915_irq.c:467:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:467:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:475:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:475:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:518:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:518:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:526:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:526:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:575:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:575:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:578:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:578:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:582:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:582:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_mitigations.c:133:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:125:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:126:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:128:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:129:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:129:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_panic.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/i915_params.c:100:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:100:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:104:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:104:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:107:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:107:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:110:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:110:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:119:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:119:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:123:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:123:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:125:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:125:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:66:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:66:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:69:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:69:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:73:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:73:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:79:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:79:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:84:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:84:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:88:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:88:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:91:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:91:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:95:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:95:1: error: bad constant expression
+drivers/gpu/drm/i915/intel_uncore.c:1930:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1931:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1932:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1933:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1998:1: warning: context imbalance in 'gen6_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1999:1: warning: context imbalance in 'gen6_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2000:1: warning: context imbalance in 'gen6_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2020:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2021:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2022:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_wakeref.c:148:19: warning: context imbalance in 'wakeref_auto_timeout' - unexpected unlock
+drivers/gpu/drm/ttm/ttm_bo.c:1203:31: warning: symbol 'ttm_swap_ops' was not declared. Should it be static?
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:465:28:    expected void volatile [noderef] __iomem *addr
+drivers/gpu/drm/ttm/ttm_bo_util.c:465:28:    got void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:465:28: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/ttm/ttm_pool.c:119:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_pool.c:120:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:54:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:55:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:59:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:60:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:217:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:218:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:218:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:219:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:220:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:221:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:52:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:53:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_object.c:34:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_prime.c:30:1: error: bad constant expression
+h):
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression

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



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

* ✗ Xe.CI.BAT: failure for Enable THP support in drm_pagemap (rev3)
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (8 preceding siblings ...)
  2026-01-09  9:49 ` ✗ CI.checksparse: warning " Patchwork
@ 2026-01-09 10:34 ` Patchwork
  2026-01-09 11:59 ` ✗ Xe.CI.Full: " Patchwork
                   ` (4 subsequent siblings)
  14 siblings, 0 replies; 42+ messages in thread
From: Patchwork @ 2026-01-09 10:34 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

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

== Series Details ==

Series: Enable THP support in drm_pagemap (rev3)
URL   : https://patchwork.freedesktop.org/series/159119/
State : failure

== Summary ==

CI Bug Log - changes from xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335_BAT -> xe-pw-159119v3_BAT
====================================================

Summary
-------

  **FAILURE**

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

  

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

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-159119v3_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@xe_waitfence@engine:
    - bat-bmg-2:          [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/bat-bmg-2/igt@xe_waitfence@engine.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/bat-bmg-2/igt@xe_waitfence@engine.html

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

  Here are the changes found in xe-pw-159119v3_BAT that come from known issues:

### IGT changes ###

#### Possible fixes ####

  * igt@xe_waitfence@engine:
    - bat-dg2-oem2:       [FAIL][3] ([Intel XE#6519]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/bat-dg2-oem2/igt@xe_waitfence@engine.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/bat-dg2-oem2/igt@xe_waitfence@engine.html

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


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

  * IGT: IGT_8692 -> IGT_8693
  * Linux: xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335 -> xe-pw-159119v3

  IGT_8692: 8692
  IGT_8693: 8693
  xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335: 9e5d93261e35cda4189383e8746fef35c7d0d335
  xe-pw-159119v3: 159119v3

== Logs ==

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

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

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09  8:54 ` [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing Francois Dugast
@ 2026-01-09 11:09   ` Mika Penttilä
  2026-01-09 17:28     ` Zi Yan
  0 siblings, 1 reply; 42+ messages in thread
From: Mika Penttilä @ 2026-01-09 11:09 UTC (permalink / raw)
  To: Francois Dugast, intel-xe
  Cc: dri-devel, Matthew Brost, Balbir Singh, Alistair Popple, Zi Yan,
	David Hildenbrand, Oscar Salvador, Andrew Morton, linux-mm,
	linux-cxl, linux-kernel

Hi,

On 1/9/26 10:54, Francois Dugast wrote:

> From: Matthew Brost <matthew.brost@intel.com>
>
> Split device-private and coherent folios into individual pages before
> freeing so that any order folio can be formed upon the next use of the
> pages.
>
> Cc: Balbir Singh <balbirs@nvidia.com>
> Cc: Alistair Popple <apopple@nvidia.com>
> Cc: Zi Yan <ziy@nvidia.com>
> Cc: David Hildenbrand <david@kernel.org>
> Cc: Oscar Salvador <osalvador@suse.de>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: linux-mm@kvack.org
> Cc: linux-cxl@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> ---
>  mm/memremap.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/mm/memremap.c b/mm/memremap.c
> index 63c6ab4fdf08..7289cdd6862f 100644
> --- a/mm/memremap.c
> +++ b/mm/memremap.c
> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
>  	case MEMORY_DEVICE_COHERENT:
>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
>  			break;
> +
> +		folio_split_unref(folio);
>  		pgmap->ops->folio_free(folio);
>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
>  		break;

This breaks folio_free implementations like nouveau_dmem_folio_free
which checks the folio order and act upon that.
Maybe add an order parameter to folio_free or let the driver handle the split?

Thanks,
Mika


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

* ✗ Xe.CI.Full: failure for Enable THP support in drm_pagemap (rev3)
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (9 preceding siblings ...)
  2026-01-09 10:34 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2026-01-09 11:59 ` Patchwork
  2026-01-09 12:37 ` ✓ CI.KUnit: success for Enable THP support in drm_pagemap (rev4) Patchwork
                   ` (3 subsequent siblings)
  14 siblings, 0 replies; 42+ messages in thread
From: Patchwork @ 2026-01-09 11:59 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

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

== Series Details ==

Series: Enable THP support in drm_pagemap (rev3)
URL   : https://patchwork.freedesktop.org/series/159119/
State : failure

== Summary ==

CI Bug Log - changes from xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335_FULL -> xe-pw-159119v3_FULL
====================================================

Summary
-------

  **FAILURE**

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

  

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

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-159119v3_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@kms_flip@2x-flip-vs-panning:
    - shard-bmg:          [PASS][1] -> [DMESG-WARN][2] +1 other test dmesg-warn
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-9/igt@kms_flip@2x-flip-vs-panning.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_flip@2x-flip-vs-panning.html

  * igt@kms_plane_cursor@primary@pipe-d-dp-2-size-128:
    - shard-bmg:          NOTRUN -> [FAIL][3] +1 other test fail
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_plane_cursor@primary@pipe-d-dp-2-size-128.html

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

  Here are the changes found in xe-pw-159119v3_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
    - shard-bmg:          NOTRUN -> [SKIP][4] ([Intel XE#2370]) +1 other test skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-90:
    - shard-bmg:          NOTRUN -> [SKIP][5] ([Intel XE#2327]) +7 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@kms_big_fb@x-tiled-16bpp-rotate-90.html

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

  * igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#607])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-lnl:          NOTRUN -> [SKIP][8] ([Intel XE#1124]) +2 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-4/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-bmg:          NOTRUN -> [SKIP][9] ([Intel XE#1124]) +13 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p:
    - shard-bmg:          NOTRUN -> [SKIP][10] ([Intel XE#2314] / [Intel XE#2894]) +2 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html

  * igt@kms_bw@linear-tiling-2-displays-2160x1440p:
    - shard-lnl:          NOTRUN -> [SKIP][11] ([Intel XE#367])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-4/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html

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

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][13] ([Intel XE#2887]) +1 other test skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-8/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-mc-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-d-hdmi-a-3:
    - shard-bmg:          NOTRUN -> [SKIP][14] ([Intel XE#2652] / [Intel XE#787]) +26 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-9/igt@kms_ccs@crc-primary-suspend-4-tiled-lnl-ccs@pipe-d-hdmi-a-3.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][15] ([Intel XE#3432]) +3 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][16] ([Intel XE#2887]) +24 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_chamelium_color@ctm-blue-to-red:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#2325]) +2 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@kms_chamelium_color@ctm-blue-to-red.html

  * igt@kms_chamelium_color@gamma:
    - shard-lnl:          NOTRUN -> [SKIP][18] ([Intel XE#306])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-4/igt@kms_chamelium_color@gamma.html

  * igt@kms_chamelium_frames@hdmi-aspect-ratio:
    - shard-bmg:          NOTRUN -> [SKIP][19] ([Intel XE#2252]) +16 other tests skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_chamelium_frames@hdmi-aspect-ratio.html

  * igt@kms_chamelium_hpd@dp-hpd-after-hibernate:
    - shard-lnl:          NOTRUN -> [SKIP][20] ([Intel XE#373]) +1 other test skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-2/igt@kms_chamelium_hpd@dp-hpd-after-hibernate.html

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

  * igt@kms_content_protection@dp-mst-lic-type-0-hdcp14:
    - shard-bmg:          NOTRUN -> [SKIP][22] ([Intel XE#6974])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@kms_content_protection@dp-mst-lic-type-0-hdcp14.html

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

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

  * igt@kms_content_protection@mei-interface:
    - shard-bmg:          NOTRUN -> [SKIP][25] ([Intel XE#2341])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-9/igt@kms_content_protection@mei-interface.html

  * igt@kms_content_protection@uevent-hdcp14:
    - shard-bmg:          NOTRUN -> [FAIL][26] ([Intel XE#6707]) +1 other test fail
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_content_protection@uevent-hdcp14.html

  * igt@kms_cursor_crc@cursor-onscreen-64x21:
    - shard-lnl:          NOTRUN -> [SKIP][27] ([Intel XE#1424])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-5/igt@kms_cursor_crc@cursor-onscreen-64x21.html

  * igt@kms_cursor_crc@cursor-onscreen-max-size:
    - shard-bmg:          NOTRUN -> [SKIP][28] ([Intel XE#2320]) +6 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@kms_cursor_crc@cursor-onscreen-max-size.html

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

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-lnl:          NOTRUN -> [SKIP][30] ([Intel XE#2321])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-4/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_edge_walk@256x256-right-edge:
    - shard-bmg:          NOTRUN -> [FAIL][31] ([Intel XE#6841]) +1 other test fail
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_cursor_edge_walk@256x256-right-edge.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size:
    - shard-lnl:          NOTRUN -> [SKIP][32] ([Intel XE#309])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-8/igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size.html

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

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3:
    - shard-bmg:          NOTRUN -> [SKIP][34] ([Intel XE#1340])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3.html

  * igt@kms_dsc@dsc-with-output-formats:
    - shard-bmg:          NOTRUN -> [SKIP][35] ([Intel XE#2244]) +2 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_dsc@dsc-with-output-formats.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
    - shard-bmg:          NOTRUN -> [SKIP][36] ([Intel XE#4422]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html

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

  * igt@kms_feature_discovery@display-3x:
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#2373])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@kms_feature_discovery@display-3x.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible:
    - shard-lnl:          NOTRUN -> [SKIP][39] ([Intel XE#1421]) +2 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-4/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
    - shard-lnl:          [PASS][40] -> [FAIL][41] ([Intel XE#301])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
    - shard-bmg:          [PASS][42] -> [INCOMPLETE][43] ([Intel XE#2049] / [Intel XE#2597]) +1 other test incomplete
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-2/igt@kms_flip@flip-vs-suspend-interruptible.html
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@kms_flip@flip-vs-suspend-interruptible.html

  * igt@kms_flip@flip-vs-suspend@c-hdmi-a3:
    - shard-bmg:          NOTRUN -> [INCOMPLETE][44] ([Intel XE#2049] / [Intel XE#2597]) +1 other test incomplete
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-9/igt@kms_flip@flip-vs-suspend@c-hdmi-a3.html

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

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#2380]) +1 other test skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling:
    - shard-lnl:          NOTRUN -> [SKIP][47] ([Intel XE#1401] / [Intel XE#1745])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-3/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][48] ([Intel XE#1401])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-3/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][49] ([Intel XE#2293] / [Intel XE#2380]) +8 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][50] ([Intel XE#4141]) +23 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][51] ([Intel XE#651]) +1 other test skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-3/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][52] ([Intel XE#2311]) +53 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][53] ([Intel XE#2313]) +52 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@plane-fbc-rte:
    - shard-bmg:          NOTRUN -> [SKIP][54] ([Intel XE#2350])
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_frontbuffer_tracking@plane-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render:
    - shard-lnl:          NOTRUN -> [SKIP][55] ([Intel XE#656]) +7 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-5/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html

  * igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-2:
    - shard-bmg:          [PASS][56] -> [ABORT][57] ([Intel XE#6740]) +1 other test abort
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-10/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-2.html
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-2.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-lnl:          NOTRUN -> [SKIP][58] ([Intel XE#1503])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-8/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_joiner@basic-big-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][59] ([Intel XE#6901]) +1 other test skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_joiner@basic-big-joiner.html

  * igt@kms_joiner@basic-max-non-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][60] ([Intel XE#4298])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@kms_joiner@basic-max-non-joiner.html

  * igt@kms_joiner@invalid-modeset-force-ultra-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][61] ([Intel XE#6911]) +1 other test skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
    - shard-lnl:          NOTRUN -> [SKIP][62] ([Intel XE#6900])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-1/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-bmg:          NOTRUN -> [SKIP][63] ([Intel XE#2501])
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_panel_fitting@atomic-fastset:
    - shard-bmg:          NOTRUN -> [SKIP][64] ([Intel XE#2486])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@kms_panel_fitting@atomic-fastset.html

  * igt@kms_plane_lowres@tiling-none@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][65] ([Intel XE#599]) +4 other tests skip
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-8/igt@kms_plane_lowres@tiling-none@pipe-b-edp-1.html

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

  * igt@kms_plane_multiple@tiling-y:
    - shard-bmg:          NOTRUN -> [SKIP][67] ([Intel XE#5020])
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_plane_multiple@tiling-y.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b:
    - shard-bmg:          NOTRUN -> [SKIP][68] ([Intel XE#6886]) +9 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b.html

  * igt@kms_pm_backlight@fade:
    - shard-bmg:          NOTRUN -> [SKIP][69] ([Intel XE#870]) +1 other test skip
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_pm_backlight@fade.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-bmg:          NOTRUN -> [SKIP][70] ([Intel XE#2392])
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@kms_pm_dc@dc6-psr.html

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

  * igt@kms_psr2_sf@pr-plane-move-sf-dmg-area:
    - shard-lnl:          NOTRUN -> [SKIP][72] ([Intel XE#1406] / [Intel XE#2893]) +1 other test skip
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-3/igt@kms_psr2_sf@pr-plane-move-sf-dmg-area.html

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

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

  * igt@kms_psr@psr2-no-drrs:
    - shard-bmg:          NOTRUN -> [SKIP][75] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +18 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@kms_psr@psr2-no-drrs.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-bmg:          NOTRUN -> [SKIP][76] ([Intel XE#3414] / [Intel XE#3904]) +2 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_sharpness_filter@filter-basic:
    - shard-bmg:          NOTRUN -> [SKIP][77] ([Intel XE#6503]) +1 other test skip
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@kms_sharpness_filter@filter-basic.html

  * igt@kms_tv_load_detect@load-detect:
    - shard-bmg:          NOTRUN -> [SKIP][78] ([Intel XE#2450])
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@kms_tv_load_detect@load-detect.html

  * igt@kms_vrr@cmrr:
    - shard-bmg:          NOTRUN -> [SKIP][79] ([Intel XE#2168])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@kms_vrr@cmrr.html

  * igt@kms_vrr@flip-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][80] ([Intel XE#1499]) +2 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@kms_vrr@flip-suspend.html

  * igt@kms_vrr@seamless-rr-switch-vrr:
    - shard-lnl:          NOTRUN -> [SKIP][81] ([Intel XE#1499])
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-4/igt@kms_vrr@seamless-rr-switch-vrr.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all:
    - shard-bmg:          NOTRUN -> [FAIL][82] ([Intel XE#5937])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@sriov_basic@enable-vfs-bind-unbind-each-numvfs-all.html

  * igt@xe_compute@ccs-mode-basic:
    - shard-bmg:          NOTRUN -> [SKIP][83] ([Intel XE#6599])
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@xe_compute@ccs-mode-basic.html

  * igt@xe_create@multigpu-create-massive-size:
    - shard-bmg:          NOTRUN -> [SKIP][84] ([Intel XE#2504])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@xe_create@multigpu-create-massive-size.html

  * igt@xe_eudebug@basic-vm-access-faultable:
    - shard-lnl:          NOTRUN -> [SKIP][85] ([Intel XE#4837]) +2 other tests skip
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-5/igt@xe_eudebug@basic-vm-access-faultable.html

  * igt@xe_eudebug@vm-bind-clear:
    - shard-bmg:          NOTRUN -> [SKIP][86] ([Intel XE#4837]) +14 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@xe_eudebug@vm-bind-clear.html

  * igt@xe_eudebug_online@breakpoint-many-sessions-single-tile:
    - shard-bmg:          NOTRUN -> [SKIP][87] ([Intel XE#4837] / [Intel XE#6665]) +8 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@xe_eudebug_online@breakpoint-many-sessions-single-tile.html

  * igt@xe_eudebug_online@pagefault-one-of-many:
    - shard-lnl:          NOTRUN -> [SKIP][88] ([Intel XE#6665])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-4/igt@xe_eudebug_online@pagefault-one-of-many.html

  * igt@xe_eudebug_online@resume-dss:
    - shard-lnl:          NOTRUN -> [SKIP][89] ([Intel XE#4837] / [Intel XE#6665])
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-7/igt@xe_eudebug_online@resume-dss.html

  * igt@xe_evict@evict-small-cm:
    - shard-lnl:          NOTRUN -> [SKIP][90] ([Intel XE#688]) +1 other test skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-3/igt@xe_evict@evict-small-cm.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][91] ([Intel XE#2322]) +14 other tests skip
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate.html

  * igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap:
    - shard-lnl:          NOTRUN -> [SKIP][92] ([Intel XE#1392]) +2 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-1/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html

  * igt@xe_exec_multi_queue@many-execs-preempt-mode-fault-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][93] ([Intel XE#6874]) +50 other tests skip
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@xe_exec_multi_queue@many-execs-preempt-mode-fault-userptr-invalidate.html

  * igt@xe_exec_multi_queue@many-execs-priority:
    - shard-lnl:          NOTRUN -> [SKIP][94] ([Intel XE#6874]) +5 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-1/igt@xe_exec_multi_queue@many-execs-priority.html

  * igt@xe_exec_system_allocator@many-64k-mmap-free-huge-nomemset:
    - shard-bmg:          NOTRUN -> [SKIP][95] ([Intel XE#5007]) +1 other test skip
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-9/igt@xe_exec_system_allocator@many-64k-mmap-free-huge-nomemset.html

  * igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset:
    - shard-bmg:          NOTRUN -> [SKIP][96] ([Intel XE#4943]) +30 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-mmap-new-huge:
    - shard-lnl:          NOTRUN -> [SKIP][97] ([Intel XE#4943]) +3 other tests skip
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-4/igt@xe_exec_system_allocator@threads-shared-vm-many-large-execqueues-mmap-new-huge.html

  * igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add:
    - shard-bmg:          NOTRUN -> [SKIP][98] ([Intel XE#6281])
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@xe_fault_injection@exec-queue-create-fail-xe_pxp_exec_queue_add.html

  * igt@xe_module_load@force-load:
    - shard-bmg:          NOTRUN -> [SKIP][99] ([Intel XE#2457])
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@xe_module_load@force-load.html

  * igt@xe_module_load@load:
    - shard-bmg:          ([PASS][100], [PASS][101], [PASS][102], [PASS][103], [PASS][104], [PASS][105], [PASS][106], [PASS][107], [PASS][108], [PASS][109], [PASS][110], [PASS][111], [PASS][112]) -> ([SKIP][113], [PASS][114], [PASS][115], [PASS][116], [PASS][117], [PASS][118], [PASS][119], [PASS][120], [PASS][121], [PASS][122], [PASS][123], [PASS][124], [PASS][125], [PASS][126]) ([Intel XE#2457])
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-1/igt@xe_module_load@load.html
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-10/igt@xe_module_load@load.html
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-10/igt@xe_module_load@load.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-2/igt@xe_module_load@load.html
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-9/igt@xe_module_load@load.html
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-2/igt@xe_module_load@load.html
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-10/igt@xe_module_load@load.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-2/igt@xe_module_load@load.html
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-1/igt@xe_module_load@load.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-1/igt@xe_module_load@load.html
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-9/igt@xe_module_load@load.html
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-9/igt@xe_module_load@load.html
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-3/igt@xe_module_load@load.html
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@xe_module_load@load.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-9/igt@xe_module_load@load.html
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@xe_module_load@load.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-9/igt@xe_module_load@load.html
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@xe_module_load@load.html
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@xe_module_load@load.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@xe_module_load@load.html
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@xe_module_load@load.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-3/igt@xe_module_load@load.html
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@xe_module_load@load.html
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@xe_module_load@load.html
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@xe_module_load@load.html
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@xe_module_load@load.html
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@xe_module_load@load.html

  * igt@xe_multigpu_svm@mgpu-concurrent-access-basic:
    - shard-bmg:          NOTRUN -> [SKIP][127] ([Intel XE#6964]) +7 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-9/igt@xe_multigpu_svm@mgpu-concurrent-access-basic.html

  * igt@xe_multigpu_svm@mgpu-migration-prefetch:
    - shard-lnl:          NOTRUN -> [SKIP][128] ([Intel XE#6964]) +1 other test skip
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-7/igt@xe_multigpu_svm@mgpu-migration-prefetch.html

  * igt@xe_pat@pat-index-xelpg:
    - shard-bmg:          NOTRUN -> [SKIP][129] ([Intel XE#2236])
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-10/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_peer2peer@write:
    - shard-bmg:          NOTRUN -> [SKIP][130] ([Intel XE#2427] / [Intel XE#6953])
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@xe_peer2peer@write.html

  * igt@xe_pm@d3cold-basic:
    - shard-bmg:          NOTRUN -> [SKIP][131] ([Intel XE#2284]) +3 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@xe_pm@d3cold-basic.html

  * igt@xe_pm@d3hot-i2c:
    - shard-bmg:          NOTRUN -> [SKIP][132] ([Intel XE#5742])
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-9/igt@xe_pm@d3hot-i2c.html

  * igt@xe_pxp@pxp-termination-key-update-post-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][133] ([Intel XE#4733]) +1 other test skip
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@xe_pxp@pxp-termination-key-update-post-suspend.html

  * igt@xe_query@multigpu-query-invalid-cs-cycles:
    - shard-bmg:          NOTRUN -> [SKIP][134] ([Intel XE#944]) +6 other tests skip
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-1/igt@xe_query@multigpu-query-invalid-cs-cycles.html

  * igt@xe_query@multigpu-query-topology:
    - shard-lnl:          NOTRUN -> [SKIP][135] ([Intel XE#944])
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-8/igt@xe_query@multigpu-query-topology.html

  
#### Possible fixes ####

  * igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1:
    - shard-lnl:          [FAIL][136] ([Intel XE#6054]) -> [PASS][137] +3 other tests pass
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-lnl-8/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-3/igt@kms_async_flips@async-flip-with-page-flip-events-linear-atomic@pipe-c-edp-1.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1:
    - shard-lnl:          [FAIL][138] ([Intel XE#301]) -> [PASS][139]
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html

  * igt@kms_hdr@bpc-switch-suspend:
    - shard-bmg:          [ABORT][140] ([Intel XE#6740]) -> [PASS][141] +3 other tests pass
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-9/igt@kms_hdr@bpc-switch-suspend.html
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@kms_hdr@bpc-switch-suspend.html

  * igt@testdisplay:
    - shard-bmg:          [ABORT][142] ([Intel XE#6976]) -> [PASS][143]
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-bmg-10/igt@testdisplay.html
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-bmg-2/igt@testdisplay.html

  * igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma:
    - shard-lnl:          [FAIL][144] ([Intel XE#5625]) -> [PASS][145]
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335/shard-lnl-5/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v3/shard-lnl-7/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-multi-vma.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1340
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [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#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#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
  [Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2236]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2236
  [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
  [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#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2328
  [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
  [Intel XE#2350]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2350
  [Intel XE#2370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2370
  [Intel XE#2373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2373
  [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
  [Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
  [Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
  [Intel XE#2392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2392
  [Intel XE#2393]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2393
  [Intel XE#2427]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2427
  [Intel XE#2450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2450
  [Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
  [Intel XE#2486]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2486
  [Intel XE#2501]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2501
  [Intel XE#2504]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2504
  [Intel XE#2505]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2505
  [Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
  [Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#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#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#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#4156]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4156
  [Intel XE#4298]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4298
  [Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
  [Intel XE#5007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5007
  [Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
  [Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
  [Intel XE#5742]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5742
  [Intel XE#5937]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5937
  [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
  [Intel XE#6054]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6054
  [Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
  [Intel XE#6281]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6281
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#6599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6599
  [Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665
  [Intel XE#6707]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6707
  [Intel XE#6740]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6740
  [Intel XE#6841]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6841
  [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
  [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#6900]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6900
  [Intel XE#6901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6901
  [Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
  [Intel XE#6953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6953
  [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#6976]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6976
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * IGT: IGT_8692 -> IGT_8693
  * Linux: xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335 -> xe-pw-159119v3

  IGT_8692: 8692
  IGT_8693: 8693
  xe-4354-9e5d93261e35cda4189383e8746fef35c7d0d335: 9e5d93261e35cda4189383e8746fef35c7d0d335
  xe-pw-159119v3: 159119v3

== Logs ==

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

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

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

* ✓ CI.KUnit: success for Enable THP support in drm_pagemap (rev4)
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (10 preceding siblings ...)
  2026-01-09 11:59 ` ✗ Xe.CI.Full: " Patchwork
@ 2026-01-09 12:37 ` Patchwork
  2026-01-09 12:53 ` ✗ CI.checksparse: warning " Patchwork
                   ` (2 subsequent siblings)
  14 siblings, 0 replies; 42+ messages in thread
From: Patchwork @ 2026-01-09 12:37 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: Enable THP support in drm_pagemap (rev4)
URL   : https://patchwork.freedesktop.org/series/159119/
State : success

== Summary ==

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

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

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

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



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

* ✗ CI.checksparse: warning for Enable THP support in drm_pagemap (rev4)
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (11 preceding siblings ...)
  2026-01-09 12:37 ` ✓ CI.KUnit: success for Enable THP support in drm_pagemap (rev4) Patchwork
@ 2026-01-09 12:53 ` Patchwork
  2026-01-09 13:26 ` ✓ Xe.CI.BAT: success " Patchwork
  2026-01-09 16:37 ` ✗ Xe.CI.Full: failure " Patchwork
  14 siblings, 0 replies; 42+ messages in thread
From: Patchwork @ 2026-01-09 12:53 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: Enable THP support in drm_pagemap (rev4)
URL   : https://patchwork.freedesktop.org/series/159119/
State : warning

== Summary ==

+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 5fca7141362c8198f287f7aaba7ea2c87ac0de49
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/display/drm_dp_helper.c:1979:1: error: bad constant expression
+drivers/gpu/drm/display/drm_dp_helper.c:1980:1: error: bad constant expression
+drivers/gpu/drm/display/drm_dp_helper.c:2144:1: error: bad constant expression
+drivers/gpu/drm/display/drm_dp_helper.c:2145:1: error: bad constant expression
+drivers/gpu/drm/drm_bridge.c:1643:1: error: bad constant expression
+drivers/gpu/drm/drm_bridge.c:1644:1: error: bad constant expression
+drivers/gpu/drm/drm_bridge.c:1645:1: error: bad constant expression
+drivers/gpu/drm/drm_bridge.c:1645:1: error: bad constant expression
+drivers/gpu/drm/drm_drv.c:60:1: error: bad constant expression
+drivers/gpu/drm/drm_drv.c:61:1: error: bad constant expression
+drivers/gpu/drm/drm_drv.c:62:1: error: bad constant expression
+drivers/gpu/drm/drm_drv.c:62:1: error: bad constant expression
+drivers/gpu/drm/drm_edid.c:1800:1: error: bad constant expression
+drivers/gpu/drm/drm_edid.c:1801:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_framebuffer_helper.c:23:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:28:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:967:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:968:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:969:1: error: bad constant expression
+drivers/gpu/drm/drm_gem_shmem_helper.c:969:1: error: bad constant expression
+drivers/gpu/drm/drm_panel.c:733:1: error: bad constant expression
+drivers/gpu/drm/drm_panel.c:734:1: error: bad constant expression
+drivers/gpu/drm/drm_panel.c:735:1: error: bad constant expression
+drivers/gpu/drm/drm_panel.c:735:1: error: bad constant expression
+drivers/gpu/drm/drm_panel_orientation_quirks.c:601:1: error: bad constant expression
+drivers/gpu/drm/drm_panel_orientation_quirks.c:602:1: error: bad constant expression
+drivers/gpu/drm/drm_panel_orientation_quirks.c:602:1: error: bad constant expression
+drivers/gpu/drm/drm_prime.c:44:1: error: bad constant expression
+drivers/gpu/drm/drm_probe_helper.c:68:1: error: bad constant expression
+drivers/gpu/drm/drm_simple_kms_helper.c:457:1: error: bad constant expression
+drivers/gpu/drm/drm_simple_kms_helper.c:458:1: error: bad constant expression
+drivers/gpu/drm/drm_simple_kms_helper.c:458:1: error: bad constant expression
+drivers/gpu/drm/drm_vblank.c:173:1: error: bad constant expression
+drivers/gpu/drm/drm_vblank.c:174:1: error: bad constant expression
+drivers/gpu/drm/drm_vblank.c:175:1: error: bad constant expression
+drivers/gpu/drm/drm_vblank.c:176:1: error: bad constant expression
+drivers/gpu/drm/i915/display/dvo_ch7017.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/dvo_ch7xxx.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/dvo_ivch.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/dvo_ns2501.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/dvo_sil164.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/dvo_tfp410.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/g4x_dp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/g4x_hdmi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/hsw_ips.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/i9xx_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/i9xx_wm.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/icl_dsi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_dsi.h):
+drivers/gpu/drm/i915/display/intel_acpi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_alpm.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_atomic.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_audio.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_backlight.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_bios.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_bw.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_casf.c:147:21: error: too long token expansion
+drivers/gpu/drm/i915/display/intel_casf.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_color.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_colorop.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_color_pipeline.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_combo_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_connector.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_crtc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_crt.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_crtc_state_dump.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_cursor.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_cx0_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dbuf_bw.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_ddi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_debugfs.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_device.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_driver.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_irq.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_display_power.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_power_map.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_power_well.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_reset.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_display_rps.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dmc.c:131:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:134:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:137:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:140:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:143:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:146:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:149:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:153:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:154:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:157:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:160:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:163:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:166:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:170:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:174:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:178:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:182:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c:186:1: error: bad constant expression
+drivers/gpu/drm/i915/display/intel_dmc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp_aux.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp_hdcp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dpio_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp_link_training.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dpll.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dpll_mgr.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp_mst.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dpt.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dpt_common.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dp_test.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_drrs.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dsb.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dsi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_dsi.h):
+drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dsi_vbt.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_dvo.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_encoder.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fb_bo.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fbc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_fb.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fb_pin.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fdi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_fifo_underrun.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_flipq.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_frontbuffer.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_global_state.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_gmbus.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_hdcp.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_hdmi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_hotplug.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_hotplug_irq.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_initial_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_link_bw.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_load_detect.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_lspcon.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_lt_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_lvds.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_modeset_lock.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_modeset_setup.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_modeset_verify.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_opregion.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_overlay.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_panel.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_pch_display.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_pch_refclk.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_pfit.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_pipe_crc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_pmdemand.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/intel_pps.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_quirks.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_sdvo.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_snps_hdmi_pll.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_snps_phy.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_sprite.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_sprite_uapi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_tc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_tv.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_vblank.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_vdsc.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_vga.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_vrr.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/intel_wm.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/skl_prefill.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/skl_scaler.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h, drivers/gpu/drm/i915/display/intel_display_trace.h):
+drivers/gpu/drm/i915/display/skl_universal_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/skl_watermark.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/vlv_clock.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/vlv_dsi.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/vlv_dsi_pll.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/display/vlv_sideband.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c:18:1: error: bad constant expression
+drivers/gpu/drm/i915/gem/i915_gem_pages.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/gt/intel_reset.c:1569:12: warning: context imbalance in '_intel_gt_reset_lock' - different lock contexts for basic block
+drivers/gpu/drm/i915/gt/intel_sseu.c:600:17: error: too long token expansion
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:191:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:192:1: error: bad constant expression
+drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c:193:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_active.c:1062:16: warning: context imbalance in '__i915_active_fence_set' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    expected struct list_head const *list
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    got struct list_head [noderef] __rcu *pos
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9:    struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/i915/i915_gpu_error.c:692:3: warning: symbol 'guc_hw_reg_state' was not declared. Should it be static?
+drivers/gpu/drm/i915/i915_initial_plane.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/i915_irq.c:467:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:467:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:475:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:475:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:480:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:518:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:518:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:526:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:526:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:531:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:575:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:575:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:578:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:578:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:582:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:582:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:589:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_mitigations.c:133:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:125:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:126:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:128:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:129:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_module.c:129:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_panic.c: note: in included file (through drivers/gpu/drm/i915/display/intel_display_types.h):
+drivers/gpu/drm/i915/i915_params.c:100:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:100:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:104:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:104:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:107:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:107:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:110:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:110:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:119:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:119:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:123:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:123:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:125:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:125:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:66:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:66:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:69:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:69:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:73:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:73:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:79:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:79:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:84:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:84:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:88:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:88:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:91:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:91:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:95:1: error: bad constant expression
+drivers/gpu/drm/i915/i915_params.c:95:1: error: bad constant expression
+drivers/gpu/drm/i915/intel_uncore.c:1930:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1931:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1932:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1933:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1998:1: warning: context imbalance in 'gen6_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1999:1: warning: context imbalance in 'gen6_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2000:1: warning: context imbalance in 'gen6_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2020:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2021:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2022:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_wakeref.c:148:19: warning: context imbalance in 'wakeref_auto_timeout' - unexpected unlock
+drivers/gpu/drm/ttm/ttm_bo.c:1203:31: warning: symbol 'ttm_swap_ops' was not declared. Should it be static?
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38:    expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38:    got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:465:28:    expected void volatile [noderef] __iomem *addr
+drivers/gpu/drm/ttm/ttm_bo_util.c:465:28:    got void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:465:28: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/ttm/ttm_pool.c:119:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_pool.c:120:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:54:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:55:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:59:1: error: bad constant expression
+drivers/gpu/drm/ttm/ttm_tt.c:60:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:217:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:218:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:218:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:219:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:220:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:221:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:52:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_drv.c:53:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_object.c:34:1: error: bad constant expression
+drivers/gpu/drm/virtio/virtgpu_prime.c:30:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression
+./include/linux/pwm.h:13:1: error: bad constant expression

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



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

* Re: [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09  8:54 ` [PATCH v3 1/7] mm: Add folio_split_unref helper Francois Dugast
@ 2026-01-09 13:19   ` David Hildenbrand (Red Hat)
  2026-01-09 13:26     ` David Hildenbrand (Red Hat)
  2026-01-09 18:37     ` Andrew Morton
  0 siblings, 2 replies; 42+ messages in thread
From: David Hildenbrand (Red Hat) @ 2026-01-09 13:19 UTC (permalink / raw)
  To: Francois Dugast, intel-xe
  Cc: dri-devel, Matthew Brost, Balbir Singh, Andrew Morton,
	Lorenzo Stoakes, Zi Yan, Baolin Wang, Liam R. Howlett, Nico Pache,
	Ryan Roberts, Dev Jain, Barry Song, Lance Yang, linux-mm,
	linux-kernel, Alistair Popple

On 1/9/26 09:54, Francois Dugast wrote:
> From: Matthew Brost <matthew.brost@intel.com>
> 
> Add folio_split_unref helper which splits an unreferenced folio

split_unref reads like "split and unref".

You probably want to call this something like "folio_split_frozen" ?

The very definition of "frozen" is "refcount = 0 ", so you can simplify 
the documentation.

Are the folios you want to pass in there completely unused (-> free) or 
might they still be in use (e.g., migration entries point at them during 
folio split)

So I am not sure yet if this should be "folio_split_frozen()" or 
"folio_split_freed()" or sth like that.

I'm not CCed on the other patches in the series or the cover letter, so 
I don't see the context.

You should describe in this patch here in which context the function is 
supposed to be used in later commits.


> (refcount == 0) into individual pages. Intended to be called on special
> pages (e.g., device-private, DAX, etc.) when returning the folio to the
> free page pool.
> 
> Cc: Balbir Singh <balbirs@nvidia.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: David Hildenbrand <david@kernel.org>
> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
> Cc: Zi Yan <ziy@nvidia.com>
> Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
> Cc: "Liam R. Howlett" <Liam.Howlett@oracle.com>
> Cc: Nico Pache <npache@redhat.com>
> Cc: Ryan Roberts <ryan.roberts@arm.com>
> Cc: Dev Jain <dev.jain@arm.com>
> Cc: Barry Song <baohua@kernel.org>
> Cc: Lance Yang <lance.yang@linux.dev>
> Cc: linux-mm@kvack.org
> Cc: linux-kernel@vger.kernel.org
> Suggested-by: Alistair Popple <apopple@nvidia.com>
> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> ---
>   include/linux/huge_mm.h |  1 +
>   mm/huge_memory.c        | 39 +++++++++++++++++++++++++++++++++++++++
>   2 files changed, 40 insertions(+)
> 
> diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
> index a4d9f964dfde..18cb9728d8f1 100644
> --- a/include/linux/huge_mm.h
> +++ b/include/linux/huge_mm.h
> @@ -369,6 +369,7 @@ enum split_type {
>   	SPLIT_TYPE_NON_UNIFORM,
>   };
>   
> +void folio_split_unref(struct folio *folio);
>   int __split_huge_page_to_list_to_order(struct page *page, struct list_head *list,
>   		unsigned int new_order);
>   int folio_split_unmapped(struct folio *folio, unsigned int new_order);
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index 40cf59301c21..0eb9e6ad8639 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -3580,6 +3580,45 @@ static void __split_folio_to_order(struct folio *folio, int old_order,
>   		ClearPageCompound(&folio->page);
>   }
>   
> +/**
> + * folio_split_unref() - split an unreferenced folio (refcount == 0)
> + * @folio: the to-be-split folio
> + *
> + * Split an unreferenced folio (refcount == 0) into individual pages.
> + * Intended to be called on special pages (e.g., device-private, DAX, etc.)
> + * when returning the folio to the free page pool.
> + */
> +void folio_split_unref(struct folio *folio)
> +{
> +	struct dev_pagemap *pgmap = page_pgmap(&folio->page);
> +	int order, i;
> +
> +	folio->mapping = NULL;

It's unclear why you mess with the mapping. Usually, throughout a folio 
split, we populate the folio->mapping to all split folios.


-- 
Cheers

David

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

* Re: [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09 13:19   ` David Hildenbrand (Red Hat)
@ 2026-01-09 13:26     ` David Hildenbrand (Red Hat)
  2026-01-09 14:30       ` Zi Yan
  2026-01-09 18:37     ` Andrew Morton
  1 sibling, 1 reply; 42+ messages in thread
From: David Hildenbrand (Red Hat) @ 2026-01-09 13:26 UTC (permalink / raw)
  To: Francois Dugast, intel-xe
  Cc: dri-devel, Matthew Brost, Balbir Singh, Andrew Morton,
	Lorenzo Stoakes, Zi Yan, Baolin Wang, Liam R. Howlett, Nico Pache,
	Ryan Roberts, Dev Jain, Barry Song, Lance Yang, linux-mm,
	linux-kernel, Alistair Popple

On 1/9/26 14:19, David Hildenbrand (Red Hat) wrote:
> On 1/9/26 09:54, Francois Dugast wrote:
>> From: Matthew Brost <matthew.brost@intel.com>
>>
>> Add folio_split_unref helper which splits an unreferenced folio
> 
> split_unref reads like "split and unref".
> 
> You probably want to call this something like "folio_split_frozen" ?
> 
> The very definition of "frozen" is "refcount = 0 ", so you can simplify
> the documentation.
> 
> Are the folios you want to pass in there completely unused (-> free) or
> might they still be in use (e.g., migration entries point at them during
> folio split)
> 
> So I am not sure yet if this should be "folio_split_frozen()" or
> "folio_split_freed()" or sth like that.
> 
> I'm not CCed on the other patches in the series or the cover letter, so
> I don't see the context.
> 

Ah, I was CCed on #3 where we call this function on folios that are 
getting freed.

In that case it would be acceptable to initialize folio->mapping (and 
folio->index?) of the split folios. Do we also have to initialize 
folio->flags, folio->private etc?

See __split_huge_page_tail().

folio_split_freed() would likely be best, because then it is clearer 
that there is absolutely no state to copy from the large folio.

> You should describe in this patch here in which context the function is
> supposed to be used in later commits.

-- 
Cheers

David

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

* ✓ Xe.CI.BAT: success for Enable THP support in drm_pagemap (rev4)
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (12 preceding siblings ...)
  2026-01-09 12:53 ` ✗ CI.checksparse: warning " Patchwork
@ 2026-01-09 13:26 ` Patchwork
  2026-01-09 16:37 ` ✗ Xe.CI.Full: failure " Patchwork
  14 siblings, 0 replies; 42+ messages in thread
From: Patchwork @ 2026-01-09 13:26 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

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

== Series Details ==

Series: Enable THP support in drm_pagemap (rev4)
URL   : https://patchwork.freedesktop.org/series/159119/
State : success

== Summary ==

CI Bug Log - changes from xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49_BAT -> xe-pw-159119v4_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  No changes in participating hosts


Changes
-------

  No changes found


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

  * Linux: xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49 -> xe-pw-159119v4

  IGT_8693: 8693
  xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49: 5fca7141362c8198f287f7aaba7ea2c87ac0de49
  xe-pw-159119v4: 159119v4

== Logs ==

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

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

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

* Re: [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09 13:26     ` David Hildenbrand (Red Hat)
@ 2026-01-09 14:30       ` Zi Yan
  2026-01-09 15:11         ` David Hildenbrand (Red Hat)
  0 siblings, 1 reply; 42+ messages in thread
From: Zi Yan @ 2026-01-09 14:30 UTC (permalink / raw)
  To: David Hildenbrand (Red Hat)
  Cc: Francois Dugast, intel-xe, dri-devel, Matthew Brost, Balbir Singh,
	Andrew Morton, Lorenzo Stoakes, Baolin Wang, Liam R. Howlett,
	Nico Pache, Ryan Roberts, Dev Jain, Barry Song, Lance Yang,
	linux-mm, linux-kernel, Alistair Popple

On 9 Jan 2026, at 8:26, David Hildenbrand (Red Hat) wrote:

> On 1/9/26 14:19, David Hildenbrand (Red Hat) wrote:
>> On 1/9/26 09:54, Francois Dugast wrote:
>>> From: Matthew Brost <matthew.brost@intel.com>
>>>
>>> Add folio_split_unref helper which splits an unreferenced folio
>>
>> split_unref reads like "split and unref".
>>
>> You probably want to call this something like "folio_split_frozen" ?
>>
>> The very definition of "frozen" is "refcount = 0 ", so you can simplify
>> the documentation.
>>
>> Are the folios you want to pass in there completely unused (-> free) or
>> might they still be in use (e.g., migration entries point at them during
>> folio split)
>>
>> So I am not sure yet if this should be "folio_split_frozen()" or
>> "folio_split_freed()" or sth like that.
>>
>> I'm not CCed on the other patches in the series or the cover letter, so
>> I don't see the context.
>>
>
> Ah, I was CCed on #3 where we call this function on folios that are getting freed.
>
> In that case it would be acceptable to initialize folio->mapping (and folio->index?) of the split folios. Do we also have to initialize folio->flags, folio->private etc?
>
> See __split_huge_page_tail().
>
> folio_split_freed() would likely be best, because then it is clearer that there is absolutely no state to copy from the large folio.

Yes, basically, we do not have a reverse function of prep_compound_page() and
open codes the reverse process in free_pages_prepare(). For zone devices,
zone_device_page_init() calls prep_compound_page() to form a folio but
free_zone_device_folio() never does the reverse. FS DAX has its own
dax_folio_put() to do it. Alistair suggested to come up with a helper
function for both FS DAX and free_zone_device_folio().

Maybe free_zone_device_folio_prepare() is better. And put it in mm/memremap.c.

>
>> You should describe in this patch here in which context the function is
>> supposed to be used in later commits.
>
> -- 
> Cheers
>
> David


Best Regards,
Yan, Zi

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

* Re: [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09 14:30       ` Zi Yan
@ 2026-01-09 15:11         ` David Hildenbrand (Red Hat)
  2026-01-09 18:38           ` Matthew Brost
  0 siblings, 1 reply; 42+ messages in thread
From: David Hildenbrand (Red Hat) @ 2026-01-09 15:11 UTC (permalink / raw)
  To: Zi Yan
  Cc: Francois Dugast, intel-xe, dri-devel, Matthew Brost, Balbir Singh,
	Andrew Morton, Lorenzo Stoakes, Baolin Wang, Liam R. Howlett,
	Nico Pache, Ryan Roberts, Dev Jain, Barry Song, Lance Yang,
	linux-mm, linux-kernel, Alistair Popple

On 1/9/26 15:30, Zi Yan wrote:
> On 9 Jan 2026, at 8:26, David Hildenbrand (Red Hat) wrote:
> 
>> On 1/9/26 14:19, David Hildenbrand (Red Hat) wrote:
>>> On 1/9/26 09:54, Francois Dugast wrote:
>>>> From: Matthew Brost <matthew.brost@intel.com>
>>>>
>>>> Add folio_split_unref helper which splits an unreferenced folio
>>>
>>> split_unref reads like "split and unref".
>>>
>>> You probably want to call this something like "folio_split_frozen" ?
>>>
>>> The very definition of "frozen" is "refcount = 0 ", so you can simplify
>>> the documentation.
>>>
>>> Are the folios you want to pass in there completely unused (-> free) or
>>> might they still be in use (e.g., migration entries point at them during
>>> folio split)
>>>
>>> So I am not sure yet if this should be "folio_split_frozen()" or
>>> "folio_split_freed()" or sth like that.
>>>
>>> I'm not CCed on the other patches in the series or the cover letter, so
>>> I don't see the context.
>>>
>>
>> Ah, I was CCed on #3 where we call this function on folios that are getting freed.
>>
>> In that case it would be acceptable to initialize folio->mapping (and folio->index?) of the split folios. Do we also have to initialize folio->flags, folio->private etc?
>>
>> See __split_huge_page_tail().
>>
>> folio_split_freed() would likely be best, because then it is clearer that there is absolutely no state to copy from the large folio.
> 
> Yes, basically, we do not have a reverse function of prep_compound_page() and
> open codes the reverse process in free_pages_prepare(). For zone devices,
> zone_device_page_init() calls prep_compound_page() to form a folio but
> free_zone_device_folio() never does the reverse. FS DAX has its own
> dax_folio_put() to do it. Alistair suggested to come up with a helper
> function for both FS DAX and free_zone_device_folio().
> 
> Maybe free_zone_device_folio_prepare() is better. And put it in mm/memremap.c.

That would be even better, if we can limit this completely to zone_device.
-- 
Cheers

David

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

* ✗ Xe.CI.Full: failure for Enable THP support in drm_pagemap (rev4)
  2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
                   ` (13 preceding siblings ...)
  2026-01-09 13:26 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2026-01-09 16:37 ` Patchwork
  14 siblings, 0 replies; 42+ messages in thread
From: Patchwork @ 2026-01-09 16:37 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

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

== Series Details ==

Series: Enable THP support in drm_pagemap (rev4)
URL   : https://patchwork.freedesktop.org/series/159119/
State : failure

== Summary ==

CI Bug Log - changes from xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49_FULL -> xe-pw-159119v4_FULL
====================================================

Summary
-------

  **FAILURE**

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

  

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

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-159119v4_FULL:

### IGT changes ###

#### Possible regressions ####

  * igt@core_setmaster@master-drop-set-user:
    - shard-bmg:          NOTRUN -> [FAIL][1]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@core_setmaster@master-drop-set-user.html

  * igt@kms_plane_cursor@viewport@pipe-d-dp-2-size-256:
    - shard-bmg:          [PASS][2] -> [FAIL][3] +3 other tests fail
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-10/igt@kms_plane_cursor@viewport@pipe-d-dp-2-size-256.html
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_plane_cursor@viewport@pipe-d-dp-2-size-256.html

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

  Here are the changes found in xe-pw-159119v4_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-bmg:          NOTRUN -> [SKIP][4] ([Intel XE#2233])
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-bmg:          NOTRUN -> [SKIP][5] ([Intel XE#1124]) +4 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180:
    - shard-lnl:          NOTRUN -> [SKIP][6] ([Intel XE#1124])
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html

  * igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#2314] / [Intel XE#2894])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_bw@connected-linear-tiling-3-displays-2560x1440p.html

  * igt@kms_bw@linear-tiling-3-displays-3840x2160p:
    - shard-bmg:          NOTRUN -> [SKIP][8] ([Intel XE#367])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@kms_bw@linear-tiling-3-displays-3840x2160p.html

  * igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][9] ([Intel XE#2887]) +6 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][10] ([Intel XE#3432]) +1 other test skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@random-ccs-data-4-tiled-mtl-mc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][11] ([Intel XE#2887]) +3 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_ccs@random-ccs-data-4-tiled-mtl-mc-ccs.html

  * igt@kms_chamelium_frames@vga-frame-dump:
    - shard-lnl:          NOTRUN -> [SKIP][12] ([Intel XE#373])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_chamelium_frames@vga-frame-dump.html

  * igt@kms_chamelium_hpd@dp-hpd-after-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][13] ([Intel XE#2252]) +5 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html

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

  * igt@kms_content_protection@srm@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][15] ([Intel XE#1178] / [Intel XE#3304]) +1 other test fail
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_content_protection@srm@pipe-a-dp-2.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-bmg:          NOTRUN -> [SKIP][16] ([Intel XE#2321])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-max-size:
    - shard-lnl:          NOTRUN -> [SKIP][17] ([Intel XE#1424])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_cursor_crc@cursor-rapid-movement-max-size.html

  * igt@kms_cursor_crc@cursor-sliding-64x21:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#2320])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_cursor_crc@cursor-sliding-64x21.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
    - shard-lnl:          NOTRUN -> [SKIP][19] ([Intel XE#309]) +1 other test skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html

  * igt@kms_dp_link_training@uhbr-mst:
    - shard-lnl:          NOTRUN -> [SKIP][20] ([Intel XE#4354])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_dp_link_training@uhbr-mst.html

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

  * igt@kms_fbcon_fbt@psr:
    - shard-bmg:          NOTRUN -> [SKIP][22] ([Intel XE#776])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_fbcon_fbt@psr.html

  * igt@kms_flip@2x-flip-vs-blocking-wf-vblank@bc-dp2-hdmi-a3:
    - shard-bmg:          [PASS][23] -> [DMESG-FAIL][24] ([Intel XE#5545]) +1 other test dmesg-fail
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_flip@2x-flip-vs-blocking-wf-vblank@bc-dp2-hdmi-a3.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_flip@2x-flip-vs-blocking-wf-vblank@bc-dp2-hdmi-a3.html

  * igt@kms_flip@plain-flip-fb-recreate-interruptible@a-edp1:
    - shard-lnl:          [PASS][25] -> [FAIL][26] ([Intel XE#3098]) +1 other test fail
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-lnl-7/igt@kms_flip@plain-flip-fb-recreate-interruptible@a-edp1.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-4/igt@kms_flip@plain-flip-fb-recreate-interruptible@a-edp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling:
    - shard-lnl:          NOTRUN -> [SKIP][27] ([Intel XE#1401] / [Intel XE#1745])
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling@pipe-a-default-mode:
    - shard-lnl:          NOTRUN -> [SKIP][28] ([Intel XE#1401])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][29] ([Intel XE#2293] / [Intel XE#2380])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@kms_flip_scaled_crc@flip-32bpp-yftileccs-to-64bpp-yftile-upscaling.html

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

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][31] ([Intel XE#656]) +6 other tests skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@drrs-shrfb-scaledprimary:
    - shard-lnl:          NOTRUN -> [SKIP][32] ([Intel XE#651]) +1 other test skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_frontbuffer_tracking@drrs-shrfb-scaledprimary.html

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

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][34] ([Intel XE#2311]) +17 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][35] ([Intel XE#6557] / [Intel XE#6703]) +3 other tests skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-suspend.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][36] ([Intel XE#2313]) +15 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-blt.html

  * igt@kms_hdr@static-toggle@pipe-a-dp-2:
    - shard-bmg:          [PASS][37] -> [ABORT][38] ([Intel XE#6740]) +1 other test abort
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-10/igt@kms_hdr@static-toggle@pipe-a-dp-2.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-9/igt@kms_hdr@static-toggle@pipe-a-dp-2.html

  * igt@kms_panel_fitting@legacy:
    - shard-bmg:          NOTRUN -> [SKIP][39] ([Intel XE#2486])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_panel_fitting@legacy.html

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

  * igt@kms_pm_dc@dc5-dpms-negative:
    - shard-lnl:          NOTRUN -> [SKIP][41] ([Intel XE#1131])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_pm_dc@dc5-dpms-negative.html

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

  * igt@kms_pm_rpm@dpms-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][43] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#836])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_pm_rpm@dpms-lpsp.html

  * igt@kms_pm_rpm@universal-planes-dpms:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#6693]) +1 other test skip
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_pm_rpm@universal-planes-dpms.html

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

  * igt@kms_psr@fbc-pr-sprite-plane-onoff:
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#1406] / [Intel XE#6703]) +4 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_psr@fbc-pr-sprite-plane-onoff.html

  * igt@kms_psr@psr-basic:
    - shard-bmg:          NOTRUN -> [SKIP][47] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +9 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_psr@psr-basic.html

  * igt@kms_setmode@invalid-clone-single-crtc-stealing:
    - shard-lnl:          NOTRUN -> [SKIP][48] ([Intel XE#1435])
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_setmode@invalid-clone-single-crtc-stealing.html

  * igt@kms_sharpness_filter@filter-tap:
    - shard-bmg:          NOTRUN -> [SKIP][49] ([Intel XE#6503]) +1 other test skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_sharpness_filter@filter-tap.html

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

  * igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1:
    - shard-lnl:          [PASS][51] -> [FAIL][52] ([Intel XE#2142]) +1 other test fail
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-lnl-4/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-8/igt@kms_vrr@seamless-rr-switch-virtual@pipe-a-edp-1.html

  * igt@xe_eudebug@basic-exec-queues-enable:
    - shard-lnl:          NOTRUN -> [SKIP][53] ([Intel XE#4837])
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@xe_eudebug@basic-exec-queues-enable.html

  * igt@xe_eudebug@basic-read-event:
    - shard-bmg:          NOTRUN -> [SKIP][54] ([Intel XE#4837]) +1 other test skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@xe_eudebug@basic-read-event.html

  * igt@xe_eudebug_online@interrupt-all-set-breakpoint:
    - shard-lnl:          NOTRUN -> [SKIP][55] ([Intel XE#4837] / [Intel XE#6665]) +1 other test skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@xe_eudebug_online@interrupt-all-set-breakpoint.html

  * igt@xe_eudebug_online@set-breakpoint-sigint-debugger:
    - shard-bmg:          NOTRUN -> [SKIP][56] ([Intel XE#4837] / [Intel XE#6665]) +3 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@xe_eudebug_online@set-breakpoint-sigint-debugger.html

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

  * igt@xe_evict@evict-beng-threads-large-multi-vm:
    - shard-lnl:          NOTRUN -> [SKIP][58] ([Intel XE#688]) +1 other test skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@xe_evict@evict-beng-threads-large-multi-vm.html

  * igt@xe_exec_balancer@many-execqueues-cm-virtual-userptr-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][59] ([Intel XE#6703]) +202 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@xe_exec_balancer@many-execqueues-cm-virtual-userptr-rebind.html

  * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr:
    - shard-lnl:          NOTRUN -> [SKIP][60] ([Intel XE#1392]) +1 other test skip
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr.html

  * igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][61] ([Intel XE#2322]) +2 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate.html

  * igt@xe_exec_multi_queue@few-execs-preempt-mode-basic:
    - shard-bmg:          NOTRUN -> [SKIP][62] ([Intel XE#6874]) +12 other tests skip
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@xe_exec_multi_queue@few-execs-preempt-mode-basic.html

  * igt@xe_exec_multi_queue@max-queues-preempt-mode-fault-dyn-priority:
    - shard-lnl:          NOTRUN -> [SKIP][63] ([Intel XE#6874]) +4 other tests skip
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@xe_exec_multi_queue@max-queues-preempt-mode-fault-dyn-priority.html

  * igt@xe_exec_system_allocator@madvise-no-range-invalidate-same-attr:
    - shard-lnl:          NOTRUN -> [WARN][64] ([Intel XE#5786])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@xe_exec_system_allocator@madvise-no-range-invalidate-same-attr.html

  * igt@xe_exec_system_allocator@many-64k-mmap-free-huge-nomemset:
    - shard-bmg:          NOTRUN -> [SKIP][65] ([Intel XE#5007])
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@xe_exec_system_allocator@many-64k-mmap-free-huge-nomemset.html

  * igt@xe_exec_system_allocator@many-stride-new-prefetch:
    - shard-bmg:          NOTRUN -> [INCOMPLETE][66] ([Intel XE#6480])
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@xe_exec_system_allocator@many-stride-new-prefetch.html

  * igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-new-huge:
    - shard-bmg:          NOTRUN -> [SKIP][67] ([Intel XE#4943]) +14 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-new-huge.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-large-mmap-free-huge:
    - shard-lnl:          NOTRUN -> [SKIP][68] ([Intel XE#4943]) +3 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@xe_exec_system_allocator@threads-shared-vm-many-large-mmap-free-huge.html

  * igt@xe_live_ktest@xe_dma_buf:
    - shard-bmg:          [PASS][69] -> [FAIL][70] ([Intel XE#6558]) +1 other test fail
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@xe_live_ktest@xe_dma_buf.html
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@xe_live_ktest@xe_dma_buf.html

  * igt@xe_live_ktest@xe_migrate@xe_migrate_sanity_kunit:
    - shard-bmg:          NOTRUN -> [FAIL][71] ([Intel XE#6558]) +2 other tests fail
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@xe_live_ktest@xe_migrate@xe_migrate_sanity_kunit.html

  * igt@xe_multigpu_svm@mgpu-concurrent-access-basic:
    - shard-bmg:          NOTRUN -> [SKIP][72] ([Intel XE#6964]) +1 other test skip
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@xe_multigpu_svm@mgpu-concurrent-access-basic.html

  * igt@xe_pm@d3hot-i2c:
    - shard-bmg:          NOTRUN -> [SKIP][73] ([Intel XE#5742])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@xe_pm@d3hot-i2c.html

  * igt@xe_pxp@pxp-stale-bo-exec-post-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][74] ([Intel XE#4733])
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@xe_pxp@pxp-stale-bo-exec-post-suspend.html

  * igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
    - shard-bmg:          NOTRUN -> [SKIP][75] ([Intel XE#944])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-1/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html

  * igt@xe_query@multigpu-query-pxp-status:
    - shard-lnl:          NOTRUN -> [SKIP][76] ([Intel XE#944])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@xe_query@multigpu-query-pxp-status.html

  * igt@xe_sysfs_scheduler@job_timeout_ms-min-max:
    - shard-bmg:          [PASS][77] -> [SKIP][78] ([Intel XE#6703]) +113 other tests skip
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@xe_sysfs_scheduler@job_timeout_ms-min-max.html
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@xe_sysfs_scheduler@job_timeout_ms-min-max.html

  
#### Possible fixes ####

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
    - shard-bmg:          [INCOMPLETE][79] ([Intel XE#6819] / [Intel XE#6904]) -> [PASS][80]
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-3/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-dp-2:
    - shard-bmg:          [INCOMPLETE][81] -> [PASS][82]
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-3/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-dp-2.html
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_atomic_transition@plane-all-modeset-transition-fencing@pipe-a-dp-2.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
    - shard-lnl:          [FAIL][83] ([Intel XE#301]) -> [PASS][84] +1 other test pass
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html

  * igt@kms_flip@flip-vs-suspend:
    - shard-lnl:          [INCOMPLETE][85] ([Intel XE#6906]) -> [PASS][86]
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-lnl-4/igt@kms_flip@flip-vs-suspend.html
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_flip@flip-vs-suspend.html

  * igt@kms_flip@flip-vs-suspend@c-edp1:
    - shard-lnl:          [INCOMPLETE][87] -> [PASS][88]
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-lnl-4/igt@kms_flip@flip-vs-suspend@c-edp1.html
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-5/igt@kms_flip@flip-vs-suspend@c-edp1.html

  * igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-2:
    - shard-bmg:          [ABORT][89] ([Intel XE#6740]) -> [PASS][90] +1 other test pass
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-3/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-2.html
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-10/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-2.html

  * igt@kms_setmode@basic@pipe-b-edp-1:
    - shard-lnl:          [FAIL][91] ([Intel XE#6361]) -> [PASS][92] +2 other tests pass
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-lnl-2/igt@kms_setmode@basic@pipe-b-edp-1.html
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-7/igt@kms_setmode@basic@pipe-b-edp-1.html

  * igt@kms_vrr@cmrr@pipe-a-edp-1:
    - shard-lnl:          [FAIL][93] ([Intel XE#4459]) -> [PASS][94] +1 other test pass
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-lnl-7/igt@kms_vrr@cmrr@pipe-a-edp-1.html
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-4/igt@kms_vrr@cmrr@pipe-a-edp-1.html

  * igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma:
    - shard-lnl:          [FAIL][95] ([Intel XE#5625]) -> [PASS][96]
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-lnl-8/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-lnl-3/igt@xe_exec_system_allocator@pat-index-madvise-pat-idx-uc-single-vma.html

  
#### Warnings ####

  * igt@kms_big_fb@x-tiled-16bpp-rotate-270:
    - shard-bmg:          [SKIP][97] ([Intel XE#2327]) -> [SKIP][98] ([Intel XE#6703])
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-bmg:          [SKIP][99] ([Intel XE#1124]) -> [SKIP][100] ([Intel XE#6703]) +1 other test skip
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p:
    - shard-bmg:          [SKIP][101] ([Intel XE#2314] / [Intel XE#2894]) -> [SKIP][102] ([Intel XE#6703])
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html

  * igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs:
    - shard-bmg:          [SKIP][103] ([Intel XE#2887]) -> [SKIP][104] ([Intel XE#6703]) +2 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs.html
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_ccs@missing-ccs-buffer-yf-tiled-ccs.html

  * igt@kms_chamelium_color@ctm-limited-range:
    - shard-bmg:          [SKIP][105] ([Intel XE#2325]) -> [SKIP][106] ([Intel XE#6703])
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_chamelium_color@ctm-limited-range.html
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_chamelium_color@ctm-limited-range.html

  * igt@kms_chamelium_hpd@vga-hpd-fast:
    - shard-bmg:          [SKIP][107] ([Intel XE#2252]) -> [SKIP][108] ([Intel XE#6703])
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_chamelium_hpd@vga-hpd-fast.html
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_chamelium_hpd@vga-hpd-fast.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt:
    - shard-bmg:          [SKIP][109] ([Intel XE#4141]) -> [SKIP][110] ([Intel XE#6703]) +2 other tests skip
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt.html
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen:
    - shard-bmg:          [SKIP][111] ([Intel XE#2311]) -> [SKIP][112] ([Intel XE#6703]) +5 other tests skip
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen.html
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt:
    - shard-bmg:          [SKIP][113] ([Intel XE#2313]) -> [SKIP][114] ([Intel XE#6703]) +4 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-bmg:          [SKIP][115] ([Intel XE#2392]) -> [SKIP][116] ([Intel XE#6703])
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_pm_dc@dc6-psr.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf:
    - shard-bmg:          [SKIP][117] ([Intel XE#1406] / [Intel XE#1489]) -> [SKIP][118] ([Intel XE#1406] / [Intel XE#6703]) +1 other test skip
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_psr2_sf@psr2-overlay-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr@psr2-no-drrs:
    - shard-bmg:          [SKIP][119] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) -> [SKIP][120] ([Intel XE#1406] / [Intel XE#6703]) +1 other test skip
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_psr@psr2-no-drrs.html
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_psr@psr2-no-drrs.html

  * igt@kms_rotation_crc@sprite-rotation-90:
    - shard-bmg:          [SKIP][121] ([Intel XE#3414] / [Intel XE#3904]) -> [SKIP][122] ([Intel XE#6703]) +1 other test skip
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@kms_rotation_crc@sprite-rotation-90.html
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@kms_rotation_crc@sprite-rotation-90.html

  * igt@xe_eudebug@basic-client-th:
    - shard-bmg:          [SKIP][123] ([Intel XE#4837]) -> [SKIP][124] ([Intel XE#6703])
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@xe_eudebug@basic-client-th.html
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@xe_eudebug@basic-client-th.html

  * igt@xe_eudebug_online@resume-one:
    - shard-bmg:          [SKIP][125] ([Intel XE#4837] / [Intel XE#6665]) -> [SKIP][126] ([Intel XE#6703])
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@xe_eudebug_online@resume-one.html
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@xe_eudebug_online@resume-one.html

  * igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-userptr:
    - shard-bmg:          [SKIP][127] ([Intel XE#6874]) -> [SKIP][128] ([Intel XE#6703]) +2 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-userptr.html
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@xe_exec_multi_queue@one-queue-preempt-mode-fault-userptr.html

  * igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset:
    - shard-bmg:          [SKIP][129] ([Intel XE#4943]) -> [SKIP][130] ([Intel XE#6703]) +4 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset.html
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@xe_exec_system_allocator@many-execqueues-mmap-huge-nomemset.html

  * igt@xe_pat@pat-index-xelpg:
    - shard-bmg:          [SKIP][131] ([Intel XE#2236]) -> [SKIP][132] ([Intel XE#6703])
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@xe_pat@pat-index-xelpg.html
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_query@multigpu-query-hwconfig:
    - shard-bmg:          [SKIP][133] ([Intel XE#944]) -> [SKIP][134] ([Intel XE#6703]) +1 other test skip
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49/shard-bmg-1/igt@xe_query@multigpu-query-hwconfig.html
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-159119v4/shard-bmg-2/igt@xe_query@multigpu-query-hwconfig.html

  
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1131]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1131
  [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#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#2142]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2142
  [Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
  [Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2236]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2236
  [Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
  [Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
  [Intel XE#2392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2392
  [Intel XE#2393]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2393
  [Intel XE#2486]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2486
  [Intel XE#2505]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2505
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#3098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3098
  [Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
  [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#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#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
  [Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
  [Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
  [Intel XE#5007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5007
  [Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
  [Intel XE#5625]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5625
  [Intel XE#5742]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5742
  [Intel XE#5786]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5786
  [Intel XE#5793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5793
  [Intel XE#6361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6361
  [Intel XE#6480]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6480
  [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#6557]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6557
  [Intel XE#6558]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6558
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665
  [Intel XE#6693]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6693
  [Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
  [Intel XE#6740]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6740
  [Intel XE#6819]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6819
  [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#6904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6904
  [Intel XE#6906]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6906
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * Linux: xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49 -> xe-pw-159119v4

  IGT_8693: 8693
  xe-4356-5fca7141362c8198f287f7aaba7ea2c87ac0de49: 5fca7141362c8198f287f7aaba7ea2c87ac0de49
  xe-pw-159119v4: 159119v4

== Logs ==

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

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

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 11:09   ` Mika Penttilä
@ 2026-01-09 17:28     ` Zi Yan
  2026-01-09 18:26       ` Matthew Brost
  0 siblings, 1 reply; 42+ messages in thread
From: Zi Yan @ 2026-01-09 17:28 UTC (permalink / raw)
  To: Mika Penttilä
  Cc: Francois Dugast, intel-xe, dri-devel, Matthew Brost, Balbir Singh,
	Alistair Popple, David Hildenbrand, Oscar Salvador, Andrew Morton,
	linux-mm, linux-cxl, linux-kernel

On 9 Jan 2026, at 6:09, Mika Penttilä wrote:

> Hi,
>
> On 1/9/26 10:54, Francois Dugast wrote:
>
>> From: Matthew Brost <matthew.brost@intel.com>
>>
>> Split device-private and coherent folios into individual pages before
>> freeing so that any order folio can be formed upon the next use of the
>> pages.
>>
>> Cc: Balbir Singh <balbirs@nvidia.com>
>> Cc: Alistair Popple <apopple@nvidia.com>
>> Cc: Zi Yan <ziy@nvidia.com>
>> Cc: David Hildenbrand <david@kernel.org>
>> Cc: Oscar Salvador <osalvador@suse.de>
>> Cc: Andrew Morton <akpm@linux-foundation.org>
>> Cc: linux-mm@kvack.org
>> Cc: linux-cxl@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org
>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>> ---
>>  mm/memremap.c | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/mm/memremap.c b/mm/memremap.c
>> index 63c6ab4fdf08..7289cdd6862f 100644
>> --- a/mm/memremap.c
>> +++ b/mm/memremap.c
>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
>>  	case MEMORY_DEVICE_COHERENT:
>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
>>  			break;
>> +
>> +		folio_split_unref(folio);
>>  		pgmap->ops->folio_free(folio);
>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
>>  		break;
>
> This breaks folio_free implementations like nouveau_dmem_folio_free
> which checks the folio order and act upon that.
> Maybe add an order parameter to folio_free or let the driver handle the split?

Passing an order parameter might be better to avoid exposing core MM internals
by asking drivers to undo compound pages.

Best Regards,
Yan, Zi

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 17:28     ` Zi Yan
@ 2026-01-09 18:26       ` Matthew Brost
  2026-01-09 18:53         ` Zi Yan
  0 siblings, 1 reply; 42+ messages in thread
From: Matthew Brost @ 2026-01-09 18:26 UTC (permalink / raw)
  To: Zi Yan
  Cc: Mika Penttilä, Francois Dugast, intel-xe, dri-devel,
	Balbir Singh, Alistair Popple, David Hildenbrand, Oscar Salvador,
	Andrew Morton, linux-mm, linux-cxl, linux-kernel

On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
> 
> > Hi,
> >
> > On 1/9/26 10:54, Francois Dugast wrote:
> >
> >> From: Matthew Brost <matthew.brost@intel.com>
> >>
> >> Split device-private and coherent folios into individual pages before
> >> freeing so that any order folio can be formed upon the next use of the
> >> pages.
> >>
> >> Cc: Balbir Singh <balbirs@nvidia.com>
> >> Cc: Alistair Popple <apopple@nvidia.com>
> >> Cc: Zi Yan <ziy@nvidia.com>
> >> Cc: David Hildenbrand <david@kernel.org>
> >> Cc: Oscar Salvador <osalvador@suse.de>
> >> Cc: Andrew Morton <akpm@linux-foundation.org>
> >> Cc: linux-mm@kvack.org
> >> Cc: linux-cxl@vger.kernel.org
> >> Cc: linux-kernel@vger.kernel.org
> >> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> >> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> >> ---
> >>  mm/memremap.c | 2 ++
> >>  1 file changed, 2 insertions(+)
> >>
> >> diff --git a/mm/memremap.c b/mm/memremap.c
> >> index 63c6ab4fdf08..7289cdd6862f 100644
> >> --- a/mm/memremap.c
> >> +++ b/mm/memremap.c
> >> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
> >>  	case MEMORY_DEVICE_COHERENT:
> >>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
> >>  			break;
> >> +
> >> +		folio_split_unref(folio);
> >>  		pgmap->ops->folio_free(folio);
> >>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
> >>  		break;
> >
> > This breaks folio_free implementations like nouveau_dmem_folio_free
> > which checks the folio order and act upon that.
> > Maybe add an order parameter to folio_free or let the driver handle the split?

'let the driver handle the split?' - I had consisder this as an option.

> 
> Passing an order parameter might be better to avoid exposing core MM internals
> by asking drivers to undo compound pages.
> 

It looks like Nouveau tracks free folios and free pages—something Xe’s
device memory allocator (DRM Buddy) cannot do. I guess this answers my
earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
SVM with respect to reusing folios. It appears Nouveau prefers not to
split the folio, so I’m leaning toward moving this call into the
driver’s folio_free function.

Matt

> Best Regards,
> Yan, Zi

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

* Re: [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09 13:19   ` David Hildenbrand (Red Hat)
  2026-01-09 13:26     ` David Hildenbrand (Red Hat)
@ 2026-01-09 18:37     ` Andrew Morton
  2026-01-09 18:41       ` Zi Yan
  2026-01-09 18:43       ` Matthew Brost
  1 sibling, 2 replies; 42+ messages in thread
From: Andrew Morton @ 2026-01-09 18:37 UTC (permalink / raw)
  To: David Hildenbrand (Red Hat)
  Cc: Francois Dugast, intel-xe, dri-devel, Matthew Brost, Balbir Singh,
	Lorenzo Stoakes, Zi Yan, Baolin Wang, Liam R. Howlett, Nico Pache,
	Ryan Roberts, Dev Jain, Barry Song, Lance Yang, linux-mm,
	linux-kernel, Alistair Popple

On Fri, 9 Jan 2026 14:19:16 +0100 "David Hildenbrand (Red Hat)" <david@kernel.org> wrote:

> I'm not CCed on the other patches in the series or the cover letter, so 
> I don't see the context.

Both linux-mm and I received a random subset of this series.  Something
went wrong.

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

* Re: [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09 15:11         ` David Hildenbrand (Red Hat)
@ 2026-01-09 18:38           ` Matthew Brost
  0 siblings, 0 replies; 42+ messages in thread
From: Matthew Brost @ 2026-01-09 18:38 UTC (permalink / raw)
  To: David Hildenbrand (Red Hat)
  Cc: Zi Yan, Francois Dugast, intel-xe, dri-devel, Balbir Singh,
	Andrew Morton, Lorenzo Stoakes, Baolin Wang, Liam R. Howlett,
	Nico Pache, Ryan Roberts, Dev Jain, Barry Song, Lance Yang,
	linux-mm, linux-kernel, Alistair Popple

On Fri, Jan 09, 2026 at 04:11:23PM +0100, David Hildenbrand (Red Hat) wrote:
> On 1/9/26 15:30, Zi Yan wrote:
> > On 9 Jan 2026, at 8:26, David Hildenbrand (Red Hat) wrote:
> > 
> > > On 1/9/26 14:19, David Hildenbrand (Red Hat) wrote:
> > > > On 1/9/26 09:54, Francois Dugast wrote:
> > > > > From: Matthew Brost <matthew.brost@intel.com>
> > > > > 
> > > > > Add folio_split_unref helper which splits an unreferenced folio
> > > > 
> > > > split_unref reads like "split and unref".
> > > > 
> > > > You probably want to call this something like "folio_split_frozen" ?
> > > > 
> > > > The very definition of "frozen" is "refcount = 0 ", so you can simplify
> > > > the documentation.
> > > > 
> > > > Are the folios you want to pass in there completely unused (-> free) or
> > > > might they still be in use (e.g., migration entries point at them during
> > > > folio split)
> > > > 
> > > > So I am not sure yet if this should be "folio_split_frozen()" or
> > > > "folio_split_freed()" or sth like that.
> > > > 
> > > > I'm not CCed on the other patches in the series or the cover letter, so
> > > > I don't see the context.

Here is a patchwork link to the entire series:
https://patchwork.freedesktop.org/series/159119/

> > > > 
> > > 
> > > Ah, I was CCed on #3 where we call this function on folios that are getting freed.
> > > 
> > > In that case it would be acceptable to initialize folio->mapping (and folio->index?) of the split folios. Do we also have to initialize folio->flags, folio->private etc?
> > >

I lifted this code from FSDAX here:
https://elixir.bootlin.com/linux/v6.18.4/source/fs/dax.c#L394

It seemly does everything we need for a zone_device split.

> > > See __split_huge_page_tail().
> > > 

I'm not seeing this function defined anywhere.

> > > folio_split_freed() would likely be best, because then it is clearer that there is absolutely no state to copy from the large folio.
> > 
> > Yes, basically, we do not have a reverse function of prep_compound_page() and
> > open codes the reverse process in free_pages_prepare(). For zone devices,
> > zone_device_page_init() calls prep_compound_page() to form a folio but
> > free_zone_device_folio() never does the reverse. FS DAX has its own
> > dax_folio_put() to do it. Alistair suggested to come up with a helper
> > function for both FS DAX and free_zone_device_folio().
> > 
> > Maybe free_zone_device_folio_prepare() is better. And put it in mm/memremap.c.

+1 can rename and move.

> 
> That would be even better, if we can limit this completely to zone_device.

Yes, I believe this function should only used by device private, device
coherent, and fsdax folios which are all zone_device. I can add warning
in this function too if it is called on non-zone_device folio too.

Matt 

> -- 
> Cheers
> 
> David

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

* Re: [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09 18:37     ` Andrew Morton
@ 2026-01-09 18:41       ` Zi Yan
  2026-01-09 18:54         ` Francois Dugast
  2026-01-09 18:43       ` Matthew Brost
  1 sibling, 1 reply; 42+ messages in thread
From: Zi Yan @ 2026-01-09 18:41 UTC (permalink / raw)
  To: Andrew Morton, Francois Dugast
  Cc: David Hildenbrand (Red Hat), intel-xe, dri-devel, Matthew Brost,
	Balbir Singh, Lorenzo Stoakes, Baolin Wang, Liam R. Howlett,
	Nico Pache, Ryan Roberts, Dev Jain, Barry Song, Lance Yang,
	linux-mm, linux-kernel, Alistair Popple

On 9 Jan 2026, at 13:37, Andrew Morton wrote:

> On Fri, 9 Jan 2026 14:19:16 +0100 "David Hildenbrand (Red Hat)" <david@kernel.org> wrote:
>
>> I'm not CCed on the other patches in the series or the cover letter, so
>> I don't see the context.
>
> Both linux-mm and I received a random subset of this series.  Something
> went wrong.

Apparently, the whole series[1] was sent to intel-xe and dri-devel lists
and only mm part was sent to linux-mm and related people.

Hi Francois,

Do you mind CCing linux-mm and MM people in the whole series next time?

Thanks.

[1] https://lore.kernel.org/all/20260109085605.443316-1-francois.dugast@intel.com/

Best Regards,
Yan, Zi

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

* Re: [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09 18:37     ` Andrew Morton
  2026-01-09 18:41       ` Zi Yan
@ 2026-01-09 18:43       ` Matthew Brost
  2026-01-09 19:22         ` Andrew Morton
  1 sibling, 1 reply; 42+ messages in thread
From: Matthew Brost @ 2026-01-09 18:43 UTC (permalink / raw)
  To: Andrew Morton
  Cc: David Hildenbrand (Red Hat), Francois Dugast, intel-xe, dri-devel,
	Balbir Singh, Lorenzo Stoakes, Zi Yan, Baolin Wang,
	Liam R. Howlett, Nico Pache, Ryan Roberts, Dev Jain, Barry Song,
	Lance Yang, linux-mm, linux-kernel, Alistair Popple

On Fri, Jan 09, 2026 at 10:37:41AM -0800, Andrew Morton wrote:
> On Fri, 9 Jan 2026 14:19:16 +0100 "David Hildenbrand (Red Hat)" <david@kernel.org> wrote:
> 
> > I'm not CCed on the other patches in the series or the cover letter, so 
> > I don't see the context.
> 
> Both linux-mm and I received a random subset of this series.  Something
> went wrong.

Apologies for the list workflow issues. Here is the link to the entire
series [1].

For future reference, when we submit core MM patches in a series, should
we CC linux-mm plus MM maintainers on all patches in the series, even
those that do not touch core MM?

Matt

[1] https://patchwork.freedesktop.org/series/159119/

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 18:26       ` Matthew Brost
@ 2026-01-09 18:53         ` Zi Yan
  2026-01-09 19:08           ` Matthew Brost
  0 siblings, 1 reply; 42+ messages in thread
From: Zi Yan @ 2026-01-09 18:53 UTC (permalink / raw)
  To: Matthew Brost
  Cc: Mika Penttilä, Francois Dugast, intel-xe, dri-devel,
	Balbir Singh, Alistair Popple, David Hildenbrand, Oscar Salvador,
	Andrew Morton, linux-mm, linux-cxl, linux-kernel

On 9 Jan 2026, at 13:26, Matthew Brost wrote:

> On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
>> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
>>
>>> Hi,
>>>
>>> On 1/9/26 10:54, Francois Dugast wrote:
>>>
>>>> From: Matthew Brost <matthew.brost@intel.com>
>>>>
>>>> Split device-private and coherent folios into individual pages before
>>>> freeing so that any order folio can be formed upon the next use of the
>>>> pages.
>>>>
>>>> Cc: Balbir Singh <balbirs@nvidia.com>
>>>> Cc: Alistair Popple <apopple@nvidia.com>
>>>> Cc: Zi Yan <ziy@nvidia.com>
>>>> Cc: David Hildenbrand <david@kernel.org>
>>>> Cc: Oscar Salvador <osalvador@suse.de>
>>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>>> Cc: linux-mm@kvack.org
>>>> Cc: linux-cxl@vger.kernel.org
>>>> Cc: linux-kernel@vger.kernel.org
>>>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
>>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>>>> ---
>>>>  mm/memremap.c | 2 ++
>>>>  1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/mm/memremap.c b/mm/memremap.c
>>>> index 63c6ab4fdf08..7289cdd6862f 100644
>>>> --- a/mm/memremap.c
>>>> +++ b/mm/memremap.c
>>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
>>>>  	case MEMORY_DEVICE_COHERENT:
>>>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
>>>>  			break;
>>>> +
>>>> +		folio_split_unref(folio);
>>>>  		pgmap->ops->folio_free(folio);
>>>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
>>>>  		break;
>>>
>>> This breaks folio_free implementations like nouveau_dmem_folio_free
>>> which checks the folio order and act upon that.
>>> Maybe add an order parameter to folio_free or let the driver handle the split?
>
> 'let the driver handle the split?' - I had consisder this as an option.
>
>>
>> Passing an order parameter might be better to avoid exposing core MM internals
>> by asking drivers to undo compound pages.
>>
>
> It looks like Nouveau tracks free folios and free pages—something Xe’s
> device memory allocator (DRM Buddy) cannot do. I guess this answers my
> earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
> SVM with respect to reusing folios. It appears Nouveau prefers not to
> split the folio, so I’m leaning toward moving this call into the
> driver’s folio_free function.

No, that creates asymmetric page handling and is error prone.

In addition, looking at nouveau’s implementation in
nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios,
which is never split, and passes it to zone_device_folio_init(). This
is wrong, since if the folio is large, it will go through prep_compound_page()
again. The bug has not manifested because there is only order-9 large folios.
Once mTHP support is added, how is nouveau going to allocate a order-4 folio
from a free order-9 folio? Maintain a per-order free folio list and
reimplement a buddy allocator? Nevertheless, nouveau’s implementation
is wrong by calling prep_compound_page() on a folio (already compound page).

Best Regards,
Yan, Zi

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

* Re: [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09 18:41       ` Zi Yan
@ 2026-01-09 18:54         ` Francois Dugast
  0 siblings, 0 replies; 42+ messages in thread
From: Francois Dugast @ 2026-01-09 18:54 UTC (permalink / raw)
  To: Zi Yan
  Cc: Andrew Morton, David Hildenbrand (Red Hat), intel-xe, dri-devel,
	Matthew Brost, Balbir Singh, Lorenzo Stoakes, Baolin Wang,
	Liam R. Howlett, Nico Pache, Ryan Roberts, Dev Jain, Barry Song,
	Lance Yang, linux-mm, linux-kernel, Alistair Popple

On Fri, Jan 09, 2026 at 01:41:04PM -0500, Zi Yan wrote:
> On 9 Jan 2026, at 13:37, Andrew Morton wrote:
> 
> > On Fri, 9 Jan 2026 14:19:16 +0100 "David Hildenbrand (Red Hat)" <david@kernel.org> wrote:
> >
> >> I'm not CCed on the other patches in the series or the cover letter, so
> >> I don't see the context.
> >
> > Both linux-mm and I received a random subset of this series.  Something
> > went wrong.
> 
> Apparently, the whole series[1] was sent to intel-xe and dri-devel lists
> and only mm part was sent to linux-mm and related people.
> 
> Hi Francois,
> 
> Do you mind CCing linux-mm and MM people in the whole series next time?

Sure, will do to ensure context is provided. Sorry for the confusion.

Francois

> 
> Thanks.
> 
> [1] https://lore.kernel.org/all/20260109085605.443316-1-francois.dugast@intel.com/
> 
> Best Regards,
> Yan, Zi

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 18:53         ` Zi Yan
@ 2026-01-09 19:08           ` Matthew Brost
  2026-01-09 19:23             ` Zi Yan
  0 siblings, 1 reply; 42+ messages in thread
From: Matthew Brost @ 2026-01-09 19:08 UTC (permalink / raw)
  To: Zi Yan
  Cc: Mika Penttilä, Francois Dugast, intel-xe, dri-devel,
	Balbir Singh, Alistair Popple, David Hildenbrand, Oscar Salvador,
	Andrew Morton, linux-mm, linux-cxl, linux-kernel

On Fri, Jan 09, 2026 at 01:53:33PM -0500, Zi Yan wrote:
> On 9 Jan 2026, at 13:26, Matthew Brost wrote:
> 
> > On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
> >> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
> >>
> >>> Hi,
> >>>
> >>> On 1/9/26 10:54, Francois Dugast wrote:
> >>>
> >>>> From: Matthew Brost <matthew.brost@intel.com>
> >>>>
> >>>> Split device-private and coherent folios into individual pages before
> >>>> freeing so that any order folio can be formed upon the next use of the
> >>>> pages.
> >>>>
> >>>> Cc: Balbir Singh <balbirs@nvidia.com>
> >>>> Cc: Alistair Popple <apopple@nvidia.com>
> >>>> Cc: Zi Yan <ziy@nvidia.com>
> >>>> Cc: David Hildenbrand <david@kernel.org>
> >>>> Cc: Oscar Salvador <osalvador@suse.de>
> >>>> Cc: Andrew Morton <akpm@linux-foundation.org>
> >>>> Cc: linux-mm@kvack.org
> >>>> Cc: linux-cxl@vger.kernel.org
> >>>> Cc: linux-kernel@vger.kernel.org
> >>>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> >>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> >>>> ---
> >>>>  mm/memremap.c | 2 ++
> >>>>  1 file changed, 2 insertions(+)
> >>>>
> >>>> diff --git a/mm/memremap.c b/mm/memremap.c
> >>>> index 63c6ab4fdf08..7289cdd6862f 100644
> >>>> --- a/mm/memremap.c
> >>>> +++ b/mm/memremap.c
> >>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
> >>>>  	case MEMORY_DEVICE_COHERENT:
> >>>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
> >>>>  			break;
> >>>> +
> >>>> +		folio_split_unref(folio);
> >>>>  		pgmap->ops->folio_free(folio);
> >>>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
> >>>>  		break;
> >>>
> >>> This breaks folio_free implementations like nouveau_dmem_folio_free
> >>> which checks the folio order and act upon that.
> >>> Maybe add an order parameter to folio_free or let the driver handle the split?
> >
> > 'let the driver handle the split?' - I had consisder this as an option.
> >
> >>
> >> Passing an order parameter might be better to avoid exposing core MM internals
> >> by asking drivers to undo compound pages.
> >>
> >
> > It looks like Nouveau tracks free folios and free pages—something Xe’s
> > device memory allocator (DRM Buddy) cannot do. I guess this answers my
> > earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
> > SVM with respect to reusing folios. It appears Nouveau prefers not to
> > split the folio, so I’m leaning toward moving this call into the
> > driver’s folio_free function.
> 
> No, that creates asymmetric page handling and is error prone.
> 

I agree it is asymmetric and symmetric is likely better.

> In addition, looking at nouveau’s implementation in
> nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios,
> which is never split, and passes it to zone_device_folio_init(). This
> is wrong, since if the folio is large, it will go through prep_compound_page()
> again. The bug has not manifested because there is only order-9 large folios.
> Once mTHP support is added, how is nouveau going to allocate a order-4 folio
> from a free order-9 folio? Maintain a per-order free folio list and
> reimplement a buddy allocator? Nevertheless, nouveau’s implementation

The way Nouveau handles memory allocations here looks wrong to me—it
should probably use DRM Buddy and convert a block buddy to pages rather
than tracking a free folio list and free page list. But this is not my
driver.

> is wrong by calling prep_compound_page() on a folio (already compound page).
>

I don’t disagree that this implementation is questionable.

So what’s the suggestion here—add folio order to folio_free just to
accommodate Nouveau’s rather odd memory allocation algorithm? That
doesn’t seem right to me either.

Matt
 
> Best Regards,
> Yan, Zi

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

* Re: [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09 18:43       ` Matthew Brost
@ 2026-01-09 19:22         ` Andrew Morton
  2026-01-09 19:26           ` Liam R. Howlett
  0 siblings, 1 reply; 42+ messages in thread
From: Andrew Morton @ 2026-01-09 19:22 UTC (permalink / raw)
  To: Matthew Brost
  Cc: David Hildenbrand (Red Hat), Francois Dugast, intel-xe, dri-devel,
	Balbir Singh, Lorenzo Stoakes, Zi Yan, Baolin Wang,
	Liam R. Howlett, Nico Pache, Ryan Roberts, Dev Jain, Barry Song,
	Lance Yang, linux-mm, linux-kernel, Alistair Popple

On Fri, 9 Jan 2026 10:43:06 -0800 Matthew Brost <matthew.brost@intel.com> wrote:

> On Fri, Jan 09, 2026 at 10:37:41AM -0800, Andrew Morton wrote:
> > On Fri, 9 Jan 2026 14:19:16 +0100 "David Hildenbrand (Red Hat)" <david@kernel.org> wrote:
> > 
> > > I'm not CCed on the other patches in the series or the cover letter, so 
> > > I don't see the context.
> > 
> > Both linux-mm and I received a random subset of this series.  Something
> > went wrong.
> 
> Apologies for the list workflow issues. Here is the link to the entire
> series [1].

Cool.  It might be best to spray it all out again, after any IT issues
are fixed.

> For future reference, when we submit core MM patches in a series, should
> we CC linux-mm plus MM maintainers on all patches in the series, even
> those that do not touch core MM?

I think that's best.  I personally don't like seeing just a subset,
although it's trivial to go find the rest on the list.  I've heard
others state that preference, I don't know where the consensus lies.


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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 19:08           ` Matthew Brost
@ 2026-01-09 19:23             ` Zi Yan
  2026-01-09 20:03               ` Matthew Brost
  0 siblings, 1 reply; 42+ messages in thread
From: Zi Yan @ 2026-01-09 19:23 UTC (permalink / raw)
  To: Matthew Brost
  Cc: Mika Penttilä, Francois Dugast, intel-xe, dri-devel,
	Balbir Singh, Alistair Popple, David Hildenbrand, Oscar Salvador,
	Andrew Morton, linux-mm, linux-cxl, linux-kernel

On 9 Jan 2026, at 14:08, Matthew Brost wrote:

> On Fri, Jan 09, 2026 at 01:53:33PM -0500, Zi Yan wrote:
>> On 9 Jan 2026, at 13:26, Matthew Brost wrote:
>>
>>> On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
>>>> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> On 1/9/26 10:54, Francois Dugast wrote:
>>>>>
>>>>>> From: Matthew Brost <matthew.brost@intel.com>
>>>>>>
>>>>>> Split device-private and coherent folios into individual pages before
>>>>>> freeing so that any order folio can be formed upon the next use of the
>>>>>> pages.
>>>>>>
>>>>>> Cc: Balbir Singh <balbirs@nvidia.com>
>>>>>> Cc: Alistair Popple <apopple@nvidia.com>
>>>>>> Cc: Zi Yan <ziy@nvidia.com>
>>>>>> Cc: David Hildenbrand <david@kernel.org>
>>>>>> Cc: Oscar Salvador <osalvador@suse.de>
>>>>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>>>>> Cc: linux-mm@kvack.org
>>>>>> Cc: linux-cxl@vger.kernel.org
>>>>>> Cc: linux-kernel@vger.kernel.org
>>>>>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
>>>>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>>>>>> ---
>>>>>>  mm/memremap.c | 2 ++
>>>>>>  1 file changed, 2 insertions(+)
>>>>>>
>>>>>> diff --git a/mm/memremap.c b/mm/memremap.c
>>>>>> index 63c6ab4fdf08..7289cdd6862f 100644
>>>>>> --- a/mm/memremap.c
>>>>>> +++ b/mm/memremap.c
>>>>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
>>>>>>  	case MEMORY_DEVICE_COHERENT:
>>>>>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
>>>>>>  			break;
>>>>>> +
>>>>>> +		folio_split_unref(folio);
>>>>>>  		pgmap->ops->folio_free(folio);
>>>>>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
>>>>>>  		break;
>>>>>
>>>>> This breaks folio_free implementations like nouveau_dmem_folio_free
>>>>> which checks the folio order and act upon that.
>>>>> Maybe add an order parameter to folio_free or let the driver handle the split?
>>>
>>> 'let the driver handle the split?' - I had consisder this as an option.
>>>
>>>>
>>>> Passing an order parameter might be better to avoid exposing core MM internals
>>>> by asking drivers to undo compound pages.
>>>>
>>>
>>> It looks like Nouveau tracks free folios and free pages—something Xe’s
>>> device memory allocator (DRM Buddy) cannot do. I guess this answers my
>>> earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
>>> SVM with respect to reusing folios. It appears Nouveau prefers not to
>>> split the folio, so I’m leaning toward moving this call into the
>>> driver’s folio_free function.
>>
>> No, that creates asymmetric page handling and is error prone.
>>
>
> I agree it is asymmetric and symmetric is likely better.
>
>> In addition, looking at nouveau’s implementation in
>> nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios,
>> which is never split, and passes it to zone_device_folio_init(). This
>> is wrong, since if the folio is large, it will go through prep_compound_page()
>> again. The bug has not manifested because there is only order-9 large folios.
>> Once mTHP support is added, how is nouveau going to allocate a order-4 folio
>> from a free order-9 folio? Maintain a per-order free folio list and
>> reimplement a buddy allocator? Nevertheless, nouveau’s implementation
>
> The way Nouveau handles memory allocations here looks wrong to me—it
> should probably use DRM Buddy and convert a block buddy to pages rather
> than tracking a free folio list and free page list. But this is not my
> driver.
>
>> is wrong by calling prep_compound_page() on a folio (already compound page).
>>
>
> I don’t disagree that this implementation is questionable.
>
> So what’s the suggestion here—add folio order to folio_free just to
> accommodate Nouveau’s rather odd memory allocation algorithm? That
> doesn’t seem right to me either.

Splitting the folio in free_zone_device_folio() and passing folio order
to folio_free() make sense to me, since after the split, the folio passed
to folio_free() contains no order information, but just the used-to-be
head page and the remaining 511 pages are free. How does Intel Xe driver
handle it without knowing folio order?

Do we really need the order info in ->folio_free() if the folio is split
in free_zone_device_folio()? free_zone_device_folio() should just call
->folio_free() 2^order times to free individual page.


Best Regards,
Yan, Zi

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

* Re: [PATCH v3 1/7] mm: Add folio_split_unref helper
  2026-01-09 19:22         ` Andrew Morton
@ 2026-01-09 19:26           ` Liam R. Howlett
  0 siblings, 0 replies; 42+ messages in thread
From: Liam R. Howlett @ 2026-01-09 19:26 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Matthew Brost, David Hildenbrand (Red Hat), Francois Dugast,
	intel-xe, dri-devel, Balbir Singh, Lorenzo Stoakes, Zi Yan,
	Baolin Wang, Nico Pache, Ryan Roberts, Dev Jain, Barry Song,
	Lance Yang, linux-mm, linux-kernel, Alistair Popple

* Andrew Morton <akpm@linux-foundation.org> [260109 14:23]:
> On Fri, 9 Jan 2026 10:43:06 -0800 Matthew Brost <matthew.brost@intel.com> wrote:
> 
> > On Fri, Jan 09, 2026 at 10:37:41AM -0800, Andrew Morton wrote:
> > > On Fri, 9 Jan 2026 14:19:16 +0100 "David Hildenbrand (Red Hat)" <david@kernel.org> wrote:
> > > 
> > > > I'm not CCed on the other patches in the series or the cover letter, so 
> > > > I don't see the context.
> > > 
> > > Both linux-mm and I received a random subset of this series.  Something
> > > went wrong.
> > 
> > Apologies for the list workflow issues. Here is the link to the entire
> > series [1].
> 
> Cool.  It might be best to spray it all out again, after any IT issues
> are fixed.
> 
> > For future reference, when we submit core MM patches in a series, should
> > we CC linux-mm plus MM maintainers on all patches in the series, even
> > those that do not touch core MM?
> 
> I think that's best.  I personally don't like seeing just a subset,
> although it's trivial to go find the rest on the list.  I've heard
> others state that preference, I don't know where the consensus lies.

If you include the cover letter to everyone, then b4 can get the full
set with minimal effort.  It's probably worth telling people the overall
goal, if any of the patches are going to them.

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 19:23             ` Zi Yan
@ 2026-01-09 20:03               ` Matthew Brost
  2026-01-09 20:15                 ` Zi Yan
  0 siblings, 1 reply; 42+ messages in thread
From: Matthew Brost @ 2026-01-09 20:03 UTC (permalink / raw)
  To: Zi Yan
  Cc: Mika Penttilä, Francois Dugast, intel-xe, dri-devel,
	Balbir Singh, Alistair Popple, David Hildenbrand, Oscar Salvador,
	Andrew Morton, linux-mm, linux-cxl, linux-kernel

On Fri, Jan 09, 2026 at 02:23:49PM -0500, Zi Yan wrote:
> On 9 Jan 2026, at 14:08, Matthew Brost wrote:
> 
> > On Fri, Jan 09, 2026 at 01:53:33PM -0500, Zi Yan wrote:
> >> On 9 Jan 2026, at 13:26, Matthew Brost wrote:
> >>
> >>> On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
> >>>> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
> >>>>
> >>>>> Hi,
> >>>>>
> >>>>> On 1/9/26 10:54, Francois Dugast wrote:
> >>>>>
> >>>>>> From: Matthew Brost <matthew.brost@intel.com>
> >>>>>>
> >>>>>> Split device-private and coherent folios into individual pages before
> >>>>>> freeing so that any order folio can be formed upon the next use of the
> >>>>>> pages.
> >>>>>>
> >>>>>> Cc: Balbir Singh <balbirs@nvidia.com>
> >>>>>> Cc: Alistair Popple <apopple@nvidia.com>
> >>>>>> Cc: Zi Yan <ziy@nvidia.com>
> >>>>>> Cc: David Hildenbrand <david@kernel.org>
> >>>>>> Cc: Oscar Salvador <osalvador@suse.de>
> >>>>>> Cc: Andrew Morton <akpm@linux-foundation.org>
> >>>>>> Cc: linux-mm@kvack.org
> >>>>>> Cc: linux-cxl@vger.kernel.org
> >>>>>> Cc: linux-kernel@vger.kernel.org
> >>>>>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> >>>>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> >>>>>> ---
> >>>>>>  mm/memremap.c | 2 ++
> >>>>>>  1 file changed, 2 insertions(+)
> >>>>>>
> >>>>>> diff --git a/mm/memremap.c b/mm/memremap.c
> >>>>>> index 63c6ab4fdf08..7289cdd6862f 100644
> >>>>>> --- a/mm/memremap.c
> >>>>>> +++ b/mm/memremap.c
> >>>>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
> >>>>>>  	case MEMORY_DEVICE_COHERENT:
> >>>>>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
> >>>>>>  			break;
> >>>>>> +
> >>>>>> +		folio_split_unref(folio);
> >>>>>>  		pgmap->ops->folio_free(folio);
> >>>>>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
> >>>>>>  		break;
> >>>>>
> >>>>> This breaks folio_free implementations like nouveau_dmem_folio_free
> >>>>> which checks the folio order and act upon that.
> >>>>> Maybe add an order parameter to folio_free or let the driver handle the split?
> >>>
> >>> 'let the driver handle the split?' - I had consisder this as an option.
> >>>
> >>>>
> >>>> Passing an order parameter might be better to avoid exposing core MM internals
> >>>> by asking drivers to undo compound pages.
> >>>>
> >>>
> >>> It looks like Nouveau tracks free folios and free pages—something Xe’s
> >>> device memory allocator (DRM Buddy) cannot do. I guess this answers my
> >>> earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
> >>> SVM with respect to reusing folios. It appears Nouveau prefers not to
> >>> split the folio, so I’m leaning toward moving this call into the
> >>> driver’s folio_free function.
> >>
> >> No, that creates asymmetric page handling and is error prone.
> >>
> >
> > I agree it is asymmetric and symmetric is likely better.
> >
> >> In addition, looking at nouveau’s implementation in
> >> nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios,
> >> which is never split, and passes it to zone_device_folio_init(). This
> >> is wrong, since if the folio is large, it will go through prep_compound_page()
> >> again. The bug has not manifested because there is only order-9 large folios.
> >> Once mTHP support is added, how is nouveau going to allocate a order-4 folio
> >> from a free order-9 folio? Maintain a per-order free folio list and
> >> reimplement a buddy allocator? Nevertheless, nouveau’s implementation
> >
> > The way Nouveau handles memory allocations here looks wrong to me—it
> > should probably use DRM Buddy and convert a block buddy to pages rather
> > than tracking a free folio list and free page list. But this is not my
> > driver.
> >
> >> is wrong by calling prep_compound_page() on a folio (already compound page).
> >>
> >
> > I don’t disagree that this implementation is questionable.
> >
> > So what’s the suggestion here—add folio order to folio_free just to
> > accommodate Nouveau’s rather odd memory allocation algorithm? That
> > doesn’t seem right to me either.
> 
> Splitting the folio in free_zone_device_folio() and passing folio order
> to folio_free() make sense to me, since after the split, the folio passed

If this is concensous / direction - I can do this but a tree wide
change.

I do have another question for everyone here - do we think this spliting
implementation should be considered a Fixes so this can go into 6.19?

> to folio_free() contains no order information, but just the used-to-be
> head page and the remaining 511 pages are free. How does Intel Xe driver
> handle it without knowing folio order?
> 

It’s a bit convoluted, but folio/page->zone_device_data points to a
reference-counted object in GPU SVM. When the object’s reference count
drops to zero, we callback into the driver layer to release the memory.
In Xe, this is a TTM BO that resolves to a DRM Buddy allocation, which
is then released. If it’s not clear, our original allocation size
determines the granularity at which we free the backing store.

> Do we really need the order info in ->folio_free() if the folio is split
> in free_zone_device_folio()? free_zone_device_folio() should just call
> ->folio_free() 2^order times to free individual page.
> 

No. If it’s a higher-order folio—let’s say a 2MB folio—we have one
reference to our GPU SVM object, so we can free the backing in a single
->folio_free call.

Now, if that folio gets split at some point into 4KB pages, then we’d
have 512 references to this object set up in the ->folio_split calls.
We’d then expect 512 ->folio_free() calls. Same case here: if, for
whatever reason, we can’t create a 2MB device page during a 2MB
migration and need to create 512 4KB pages so we'd have 512 references
to our GPU SVM object.

Matt

> 
> Best Regards,
> Yan, Zi

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 20:03               ` Matthew Brost
@ 2026-01-09 20:15                 ` Zi Yan
  2026-01-09 21:34                   ` Balbir Singh
  0 siblings, 1 reply; 42+ messages in thread
From: Zi Yan @ 2026-01-09 20:15 UTC (permalink / raw)
  To: Matthew Brost
  Cc: Mika Penttilä, Francois Dugast, intel-xe, dri-devel,
	Balbir Singh, Alistair Popple, David Hildenbrand, Oscar Salvador,
	Andrew Morton, linux-mm, linux-cxl, linux-kernel

On 9 Jan 2026, at 15:03, Matthew Brost wrote:

> On Fri, Jan 09, 2026 at 02:23:49PM -0500, Zi Yan wrote:
>> On 9 Jan 2026, at 14:08, Matthew Brost wrote:
>>
>>> On Fri, Jan 09, 2026 at 01:53:33PM -0500, Zi Yan wrote:
>>>> On 9 Jan 2026, at 13:26, Matthew Brost wrote:
>>>>
>>>>> On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
>>>>>> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> On 1/9/26 10:54, Francois Dugast wrote:
>>>>>>>
>>>>>>>> From: Matthew Brost <matthew.brost@intel.com>
>>>>>>>>
>>>>>>>> Split device-private and coherent folios into individual pages before
>>>>>>>> freeing so that any order folio can be formed upon the next use of the
>>>>>>>> pages.
>>>>>>>>
>>>>>>>> Cc: Balbir Singh <balbirs@nvidia.com>
>>>>>>>> Cc: Alistair Popple <apopple@nvidia.com>
>>>>>>>> Cc: Zi Yan <ziy@nvidia.com>
>>>>>>>> Cc: David Hildenbrand <david@kernel.org>
>>>>>>>> Cc: Oscar Salvador <osalvador@suse.de>
>>>>>>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>>>>>>> Cc: linux-mm@kvack.org
>>>>>>>> Cc: linux-cxl@vger.kernel.org
>>>>>>>> Cc: linux-kernel@vger.kernel.org
>>>>>>>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
>>>>>>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>>>>>>>> ---
>>>>>>>>  mm/memremap.c | 2 ++
>>>>>>>>  1 file changed, 2 insertions(+)
>>>>>>>>
>>>>>>>> diff --git a/mm/memremap.c b/mm/memremap.c
>>>>>>>> index 63c6ab4fdf08..7289cdd6862f 100644
>>>>>>>> --- a/mm/memremap.c
>>>>>>>> +++ b/mm/memremap.c
>>>>>>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
>>>>>>>>  	case MEMORY_DEVICE_COHERENT:
>>>>>>>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
>>>>>>>>  			break;
>>>>>>>> +
>>>>>>>> +		folio_split_unref(folio);
>>>>>>>>  		pgmap->ops->folio_free(folio);
>>>>>>>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
>>>>>>>>  		break;
>>>>>>>
>>>>>>> This breaks folio_free implementations like nouveau_dmem_folio_free
>>>>>>> which checks the folio order and act upon that.
>>>>>>> Maybe add an order parameter to folio_free or let the driver handle the split?
>>>>>
>>>>> 'let the driver handle the split?' - I had consisder this as an option.
>>>>>
>>>>>>
>>>>>> Passing an order parameter might be better to avoid exposing core MM internals
>>>>>> by asking drivers to undo compound pages.
>>>>>>
>>>>>
>>>>> It looks like Nouveau tracks free folios and free pages—something Xe’s
>>>>> device memory allocator (DRM Buddy) cannot do. I guess this answers my
>>>>> earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
>>>>> SVM with respect to reusing folios. It appears Nouveau prefers not to
>>>>> split the folio, so I’m leaning toward moving this call into the
>>>>> driver’s folio_free function.
>>>>
>>>> No, that creates asymmetric page handling and is error prone.
>>>>
>>>
>>> I agree it is asymmetric and symmetric is likely better.
>>>
>>>> In addition, looking at nouveau’s implementation in
>>>> nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios,
>>>> which is never split, and passes it to zone_device_folio_init(). This
>>>> is wrong, since if the folio is large, it will go through prep_compound_page()
>>>> again. The bug has not manifested because there is only order-9 large folios.
>>>> Once mTHP support is added, how is nouveau going to allocate a order-4 folio
>>>> from a free order-9 folio? Maintain a per-order free folio list and
>>>> reimplement a buddy allocator? Nevertheless, nouveau’s implementation
>>>
>>> The way Nouveau handles memory allocations here looks wrong to me—it
>>> should probably use DRM Buddy and convert a block buddy to pages rather
>>> than tracking a free folio list and free page list. But this is not my
>>> driver.
>>>
>>>> is wrong by calling prep_compound_page() on a folio (already compound page).
>>>>
>>>
>>> I don’t disagree that this implementation is questionable.
>>>
>>> So what’s the suggestion here—add folio order to folio_free just to
>>> accommodate Nouveau’s rather odd memory allocation algorithm? That
>>> doesn’t seem right to me either.
>>
>> Splitting the folio in free_zone_device_folio() and passing folio order
>> to folio_free() make sense to me, since after the split, the folio passed
>
> If this is concensous / direction - I can do this but a tree wide
> change.
>
> I do have another question for everyone here - do we think this spliting
> implementation should be considered a Fixes so this can go into 6.19?

IMHO, this should be a fix, since it is wrong to call prep_compound_page()
on a large folio. IIUC this seems to only affect nouveau now, I will let
them to decide.

>
>> to folio_free() contains no order information, but just the used-to-be
>> head page and the remaining 511 pages are free. How does Intel Xe driver
>> handle it without knowing folio order?
>>
>
> It’s a bit convoluted, but folio/page->zone_device_data points to a
> reference-counted object in GPU SVM. When the object’s reference count
> drops to zero, we callback into the driver layer to release the memory.
> In Xe, this is a TTM BO that resolves to a DRM Buddy allocation, which
> is then released. If it’s not clear, our original allocation size
> determines the granularity at which we free the backing store.
>
>> Do we really need the order info in ->folio_free() if the folio is split
>> in free_zone_device_folio()? free_zone_device_folio() should just call
>> ->folio_free() 2^order times to free individual page.
>>
>
> No. If it’s a higher-order folio—let’s say a 2MB folio—we have one
> reference to our GPU SVM object, so we can free the backing in a single
> ->folio_free call.
>
> Now, if that folio gets split at some point into 4KB pages, then we’d
> have 512 references to this object set up in the ->folio_split calls.
> We’d then expect 512 ->folio_free() calls. Same case here: if, for
> whatever reason, we can’t create a 2MB device page during a 2MB
> migration and need to create 512 4KB pages so we'd have 512 references
> to our GPU SVM object.

Thank you for the explanation. Adding folio order to ->folio_free() makes
sense to me now.

Best Regards,
Yan, Zi

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 20:15                 ` Zi Yan
@ 2026-01-09 21:34                   ` Balbir Singh
  2026-01-09 21:43                     ` Zi Yan
  0 siblings, 1 reply; 42+ messages in thread
From: Balbir Singh @ 2026-01-09 21:34 UTC (permalink / raw)
  To: Zi Yan, Matthew Brost
  Cc: Mika Penttilä, Francois Dugast, intel-xe, dri-devel,
	Alistair Popple, David Hildenbrand, Oscar Salvador, Andrew Morton,
	linux-mm, linux-cxl, linux-kernel

On 1/10/26 06:15, Zi Yan wrote:
> On 9 Jan 2026, at 15:03, Matthew Brost wrote:
> 
>> On Fri, Jan 09, 2026 at 02:23:49PM -0500, Zi Yan wrote:
>>> On 9 Jan 2026, at 14:08, Matthew Brost wrote:
>>>
>>>> On Fri, Jan 09, 2026 at 01:53:33PM -0500, Zi Yan wrote:
>>>>> On 9 Jan 2026, at 13:26, Matthew Brost wrote:
>>>>>
>>>>>> On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
>>>>>>> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> On 1/9/26 10:54, Francois Dugast wrote:
>>>>>>>>
>>>>>>>>> From: Matthew Brost <matthew.brost@intel.com>
>>>>>>>>>
>>>>>>>>> Split device-private and coherent folios into individual pages before
>>>>>>>>> freeing so that any order folio can be formed upon the next use of the
>>>>>>>>> pages.
>>>>>>>>>
>>>>>>>>> Cc: Balbir Singh <balbirs@nvidia.com>
>>>>>>>>> Cc: Alistair Popple <apopple@nvidia.com>
>>>>>>>>> Cc: Zi Yan <ziy@nvidia.com>
>>>>>>>>> Cc: David Hildenbrand <david@kernel.org>
>>>>>>>>> Cc: Oscar Salvador <osalvador@suse.de>
>>>>>>>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>>>>>>>> Cc: linux-mm@kvack.org
>>>>>>>>> Cc: linux-cxl@vger.kernel.org
>>>>>>>>> Cc: linux-kernel@vger.kernel.org
>>>>>>>>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
>>>>>>>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>>>>>>>>> ---
>>>>>>>>>  mm/memremap.c | 2 ++
>>>>>>>>>  1 file changed, 2 insertions(+)
>>>>>>>>>
>>>>>>>>> diff --git a/mm/memremap.c b/mm/memremap.c
>>>>>>>>> index 63c6ab4fdf08..7289cdd6862f 100644
>>>>>>>>> --- a/mm/memremap.c
>>>>>>>>> +++ b/mm/memremap.c
>>>>>>>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
>>>>>>>>>  	case MEMORY_DEVICE_COHERENT:
>>>>>>>>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
>>>>>>>>>  			break;
>>>>>>>>> +
>>>>>>>>> +		folio_split_unref(folio);
>>>>>>>>>  		pgmap->ops->folio_free(folio);
>>>>>>>>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
>>>>>>>>>  		break;
>>>>>>>>
>>>>>>>> This breaks folio_free implementations like nouveau_dmem_folio_free
>>>>>>>> which checks the folio order and act upon that.
>>>>>>>> Maybe add an order parameter to folio_free or let the driver handle the split?
>>>>>>
>>>>>> 'let the driver handle the split?' - I had consisder this as an option.
>>>>>>
>>>>>>>
>>>>>>> Passing an order parameter might be better to avoid exposing core MM internals
>>>>>>> by asking drivers to undo compound pages.
>>>>>>>
>>>>>>
>>>>>> It looks like Nouveau tracks free folios and free pages—something Xe’s
>>>>>> device memory allocator (DRM Buddy) cannot do. I guess this answers my
>>>>>> earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
>>>>>> SVM with respect to reusing folios. It appears Nouveau prefers not to
>>>>>> split the folio, so I’m leaning toward moving this call into the
>>>>>> driver’s folio_free function.
>>>>>
>>>>> No, that creates asymmetric page handling and is error prone.
>>>>>
>>>>
>>>> I agree it is asymmetric and symmetric is likely better.
>>>>
>>>>> In addition, looking at nouveau’s implementation in
>>>>> nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios,
>>>>> which is never split, and passes it to zone_device_folio_init(). This
>>>>> is wrong, since if the folio is large, it will go through prep_compound_page()
>>>>> again. The bug has not manifested because there is only order-9 large folios.
>>>>> Once mTHP support is added, how is nouveau going to allocate a order-4 folio
>>>>> from a free order-9 folio? Maintain a per-order free folio list and
>>>>> reimplement a buddy allocator? Nevertheless, nouveau’s implementation
>>>>
>>>> The way Nouveau handles memory allocations here looks wrong to me—it
>>>> should probably use DRM Buddy and convert a block buddy to pages rather
>>>> than tracking a free folio list and free page list. But this is not my
>>>> driver.
>>>>
>>>>> is wrong by calling prep_compound_page() on a folio (already compound page).
>>>>>
>>>>
>>>> I don’t disagree that this implementation is questionable.
>>>>
>>>> So what’s the suggestion here—add folio order to folio_free just to
>>>> accommodate Nouveau’s rather odd memory allocation algorithm? That
>>>> doesn’t seem right to me either.
>>>
>>> Splitting the folio in free_zone_device_folio() and passing folio order
>>> to folio_free() make sense to me, since after the split, the folio passed
>>
>> If this is concensous / direction - I can do this but a tree wide
>> change.
>>
>> I do have another question for everyone here - do we think this spliting
>> implementation should be considered a Fixes so this can go into 6.19?
> 
> IMHO, this should be a fix, since it is wrong to call prep_compound_page()
> on a large folio. IIUC this seems to only affect nouveau now, I will let
> them to decide.
> 

Agreed, free_zone_device_folio() needs to split the folio on put.


>>
>>> to folio_free() contains no order information, but just the used-to-be
>>> head page and the remaining 511 pages are free. How does Intel Xe driver
>>> handle it without knowing folio order?
>>>
>>
>> It’s a bit convoluted, but folio/page->zone_device_data points to a
>> reference-counted object in GPU SVM. When the object’s reference count
>> drops to zero, we callback into the driver layer to release the memory.
>> In Xe, this is a TTM BO that resolves to a DRM Buddy allocation, which
>> is then released. If it’s not clear, our original allocation size
>> determines the granularity at which we free the backing store.
>>
>>> Do we really need the order info in ->folio_free() if the folio is split
>>> in free_zone_device_folio()? free_zone_device_folio() should just call
>>> ->folio_free() 2^order times to free individual page.
>>>
>>
>> No. If it’s a higher-order folio—let’s say a 2MB folio—we have one
>> reference to our GPU SVM object, so we can free the backing in a single
>> ->folio_free call.
>>
>> Now, if that folio gets split at some point into 4KB pages, then we’d
>> have 512 references to this object set up in the ->folio_split calls.
>> We’d then expect 512 ->folio_free() calls. Same case here: if, for
>> whatever reason, we can’t create a 2MB device page during a 2MB
>> migration and need to create 512 4KB pages so we'd have 512 references
>> to our GPU SVM object.
> 

I still don't follow why the folio_order does not capture the order of the folio.
If the folio is split, we should now have 512 split folios for THP

> Thank you for the explanation. Adding folio order to ->folio_free() makes
> sense to me now.
> 


Balbir

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 21:34                   ` Balbir Singh
@ 2026-01-09 21:43                     ` Zi Yan
  2026-01-09 22:11                       ` Balbir Singh
  0 siblings, 1 reply; 42+ messages in thread
From: Zi Yan @ 2026-01-09 21:43 UTC (permalink / raw)
  To: Balbir Singh
  Cc: Matthew Brost, Mika Penttilä, Francois Dugast, intel-xe,
	dri-devel, Alistair Popple, David Hildenbrand, Oscar Salvador,
	Andrew Morton, linux-mm, linux-cxl, linux-kernel

On 9 Jan 2026, at 16:34, Balbir Singh wrote:

> On 1/10/26 06:15, Zi Yan wrote:
>> On 9 Jan 2026, at 15:03, Matthew Brost wrote:
>>
>>> On Fri, Jan 09, 2026 at 02:23:49PM -0500, Zi Yan wrote:
>>>> On 9 Jan 2026, at 14:08, Matthew Brost wrote:
>>>>
>>>>> On Fri, Jan 09, 2026 at 01:53:33PM -0500, Zi Yan wrote:
>>>>>> On 9 Jan 2026, at 13:26, Matthew Brost wrote:
>>>>>>
>>>>>>> On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
>>>>>>>> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> On 1/9/26 10:54, Francois Dugast wrote:
>>>>>>>>>
>>>>>>>>>> From: Matthew Brost <matthew.brost@intel.com>
>>>>>>>>>>
>>>>>>>>>> Split device-private and coherent folios into individual pages before
>>>>>>>>>> freeing so that any order folio can be formed upon the next use of the
>>>>>>>>>> pages.
>>>>>>>>>>
>>>>>>>>>> Cc: Balbir Singh <balbirs@nvidia.com>
>>>>>>>>>> Cc: Alistair Popple <apopple@nvidia.com>
>>>>>>>>>> Cc: Zi Yan <ziy@nvidia.com>
>>>>>>>>>> Cc: David Hildenbrand <david@kernel.org>
>>>>>>>>>> Cc: Oscar Salvador <osalvador@suse.de>
>>>>>>>>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>>>>>>>>> Cc: linux-mm@kvack.org
>>>>>>>>>> Cc: linux-cxl@vger.kernel.org
>>>>>>>>>> Cc: linux-kernel@vger.kernel.org
>>>>>>>>>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
>>>>>>>>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>>>>>>>>>> ---
>>>>>>>>>>  mm/memremap.c | 2 ++
>>>>>>>>>>  1 file changed, 2 insertions(+)
>>>>>>>>>>
>>>>>>>>>> diff --git a/mm/memremap.c b/mm/memremap.c
>>>>>>>>>> index 63c6ab4fdf08..7289cdd6862f 100644
>>>>>>>>>> --- a/mm/memremap.c
>>>>>>>>>> +++ b/mm/memremap.c
>>>>>>>>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
>>>>>>>>>>  	case MEMORY_DEVICE_COHERENT:
>>>>>>>>>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
>>>>>>>>>>  			break;
>>>>>>>>>> +
>>>>>>>>>> +		folio_split_unref(folio);
>>>>>>>>>>  		pgmap->ops->folio_free(folio);
>>>>>>>>>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
>>>>>>>>>>  		break;
>>>>>>>>>
>>>>>>>>> This breaks folio_free implementations like nouveau_dmem_folio_free
>>>>>>>>> which checks the folio order and act upon that.
>>>>>>>>> Maybe add an order parameter to folio_free or let the driver handle the split?
>>>>>>>
>>>>>>> 'let the driver handle the split?' - I had consisder this as an option.
>>>>>>>
>>>>>>>>
>>>>>>>> Passing an order parameter might be better to avoid exposing core MM internals
>>>>>>>> by asking drivers to undo compound pages.
>>>>>>>>
>>>>>>>
>>>>>>> It looks like Nouveau tracks free folios and free pages—something Xe’s
>>>>>>> device memory allocator (DRM Buddy) cannot do. I guess this answers my
>>>>>>> earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
>>>>>>> SVM with respect to reusing folios. It appears Nouveau prefers not to
>>>>>>> split the folio, so I’m leaning toward moving this call into the
>>>>>>> driver’s folio_free function.
>>>>>>
>>>>>> No, that creates asymmetric page handling and is error prone.
>>>>>>
>>>>>
>>>>> I agree it is asymmetric and symmetric is likely better.
>>>>>
>>>>>> In addition, looking at nouveau’s implementation in
>>>>>> nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios,
>>>>>> which is never split, and passes it to zone_device_folio_init(). This
>>>>>> is wrong, since if the folio is large, it will go through prep_compound_page()
>>>>>> again. The bug has not manifested because there is only order-9 large folios.
>>>>>> Once mTHP support is added, how is nouveau going to allocate a order-4 folio
>>>>>> from a free order-9 folio? Maintain a per-order free folio list and
>>>>>> reimplement a buddy allocator? Nevertheless, nouveau’s implementation
>>>>>
>>>>> The way Nouveau handles memory allocations here looks wrong to me—it
>>>>> should probably use DRM Buddy and convert a block buddy to pages rather
>>>>> than tracking a free folio list and free page list. But this is not my
>>>>> driver.
>>>>>
>>>>>> is wrong by calling prep_compound_page() on a folio (already compound page).
>>>>>>
>>>>>
>>>>> I don’t disagree that this implementation is questionable.
>>>>>
>>>>> So what’s the suggestion here—add folio order to folio_free just to
>>>>> accommodate Nouveau’s rather odd memory allocation algorithm? That
>>>>> doesn’t seem right to me either.
>>>>
>>>> Splitting the folio in free_zone_device_folio() and passing folio order
>>>> to folio_free() make sense to me, since after the split, the folio passed
>>>
>>> If this is concensous / direction - I can do this but a tree wide
>>> change.
>>>
>>> I do have another question for everyone here - do we think this spliting
>>> implementation should be considered a Fixes so this can go into 6.19?
>>
>> IMHO, this should be a fix, since it is wrong to call prep_compound_page()
>> on a large folio. IIUC this seems to only affect nouveau now, I will let
>> them to decide.
>>
>
> Agreed, free_zone_device_folio() needs to split the folio on put.
>
>
>>>
>>>> to folio_free() contains no order information, but just the used-to-be
>>>> head page and the remaining 511 pages are free. How does Intel Xe driver
>>>> handle it without knowing folio order?
>>>>
>>>
>>> It’s a bit convoluted, but folio/page->zone_device_data points to a
>>> reference-counted object in GPU SVM. When the object’s reference count
>>> drops to zero, we callback into the driver layer to release the memory.
>>> In Xe, this is a TTM BO that resolves to a DRM Buddy allocation, which
>>> is then released. If it’s not clear, our original allocation size
>>> determines the granularity at which we free the backing store.
>>>
>>>> Do we really need the order info in ->folio_free() if the folio is split
>>>> in free_zone_device_folio()? free_zone_device_folio() should just call
>>>> ->folio_free() 2^order times to free individual page.
>>>>
>>>
>>> No. If it’s a higher-order folio—let’s say a 2MB folio—we have one
>>> reference to our GPU SVM object, so we can free the backing in a single
>>> ->folio_free call.
>>>
>>> Now, if that folio gets split at some point into 4KB pages, then we’d
>>> have 512 references to this object set up in the ->folio_split calls.
>>> We’d then expect 512 ->folio_free() calls. Same case here: if, for
>>> whatever reason, we can’t create a 2MB device page during a 2MB
>>> migration and need to create 512 4KB pages so we'd have 512 references
>>> to our GPU SVM object.
>>
>
> I still don't follow why the folio_order does not capture the order of the folio.
> If the folio is split, we should now have 512 split folios for THP

folio_order() should return 0 after the folio is split.

In terms of the number of after-split folios, it is 512 for current code base
since THP is only 2MB in zone devices, but not future proof if mTHP support
is added. It also causes confusion in core MM, where folio can have
all kinds of orders.


Best Regards,
Yan, Zi

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 21:43                     ` Zi Yan
@ 2026-01-09 22:11                       ` Balbir Singh
  2026-01-09 22:14                         ` Zi Yan
  0 siblings, 1 reply; 42+ messages in thread
From: Balbir Singh @ 2026-01-09 22:11 UTC (permalink / raw)
  To: Zi Yan
  Cc: Matthew Brost, Mika Penttilä, Francois Dugast, intel-xe,
	dri-devel, Alistair Popple, David Hildenbrand, Oscar Salvador,
	Andrew Morton, linux-mm, linux-cxl, linux-kernel

On 1/10/26 07:43, Zi Yan wrote:
> On 9 Jan 2026, at 16:34, Balbir Singh wrote:
> 
>> On 1/10/26 06:15, Zi Yan wrote:
>>> On 9 Jan 2026, at 15:03, Matthew Brost wrote:
>>>
>>>> On Fri, Jan 09, 2026 at 02:23:49PM -0500, Zi Yan wrote:
>>>>> On 9 Jan 2026, at 14:08, Matthew Brost wrote:
>>>>>
>>>>>> On Fri, Jan 09, 2026 at 01:53:33PM -0500, Zi Yan wrote:
>>>>>>> On 9 Jan 2026, at 13:26, Matthew Brost wrote:
>>>>>>>
>>>>>>>> On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
>>>>>>>>> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> On 1/9/26 10:54, Francois Dugast wrote:
>>>>>>>>>>
>>>>>>>>>>> From: Matthew Brost <matthew.brost@intel.com>
>>>>>>>>>>>
>>>>>>>>>>> Split device-private and coherent folios into individual pages before
>>>>>>>>>>> freeing so that any order folio can be formed upon the next use of the
>>>>>>>>>>> pages.
>>>>>>>>>>>
>>>>>>>>>>> Cc: Balbir Singh <balbirs@nvidia.com>
>>>>>>>>>>> Cc: Alistair Popple <apopple@nvidia.com>
>>>>>>>>>>> Cc: Zi Yan <ziy@nvidia.com>
>>>>>>>>>>> Cc: David Hildenbrand <david@kernel.org>
>>>>>>>>>>> Cc: Oscar Salvador <osalvador@suse.de>
>>>>>>>>>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>>>>>>>>>> Cc: linux-mm@kvack.org
>>>>>>>>>>> Cc: linux-cxl@vger.kernel.org
>>>>>>>>>>> Cc: linux-kernel@vger.kernel.org
>>>>>>>>>>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
>>>>>>>>>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>>>>>>>>>>> ---
>>>>>>>>>>>  mm/memremap.c | 2 ++
>>>>>>>>>>>  1 file changed, 2 insertions(+)
>>>>>>>>>>>
>>>>>>>>>>> diff --git a/mm/memremap.c b/mm/memremap.c
>>>>>>>>>>> index 63c6ab4fdf08..7289cdd6862f 100644
>>>>>>>>>>> --- a/mm/memremap.c
>>>>>>>>>>> +++ b/mm/memremap.c
>>>>>>>>>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
>>>>>>>>>>>  	case MEMORY_DEVICE_COHERENT:
>>>>>>>>>>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
>>>>>>>>>>>  			break;
>>>>>>>>>>> +
>>>>>>>>>>> +		folio_split_unref(folio);
>>>>>>>>>>>  		pgmap->ops->folio_free(folio);
>>>>>>>>>>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
>>>>>>>>>>>  		break;
>>>>>>>>>>
>>>>>>>>>> This breaks folio_free implementations like nouveau_dmem_folio_free
>>>>>>>>>> which checks the folio order and act upon that.
>>>>>>>>>> Maybe add an order parameter to folio_free or let the driver handle the split?
>>>>>>>>
>>>>>>>> 'let the driver handle the split?' - I had consisder this as an option.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Passing an order parameter might be better to avoid exposing core MM internals
>>>>>>>>> by asking drivers to undo compound pages.
>>>>>>>>>
>>>>>>>>
>>>>>>>> It looks like Nouveau tracks free folios and free pages—something Xe’s
>>>>>>>> device memory allocator (DRM Buddy) cannot do. I guess this answers my
>>>>>>>> earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
>>>>>>>> SVM with respect to reusing folios. It appears Nouveau prefers not to
>>>>>>>> split the folio, so I’m leaning toward moving this call into the
>>>>>>>> driver’s folio_free function.
>>>>>>>
>>>>>>> No, that creates asymmetric page handling and is error prone.
>>>>>>>
>>>>>>
>>>>>> I agree it is asymmetric and symmetric is likely better.
>>>>>>
>>>>>>> In addition, looking at nouveau’s implementation in
>>>>>>> nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios,
>>>>>>> which is never split, and passes it to zone_device_folio_init(). This
>>>>>>> is wrong, since if the folio is large, it will go through prep_compound_page()
>>>>>>> again. The bug has not manifested because there is only order-9 large folios.
>>>>>>> Once mTHP support is added, how is nouveau going to allocate a order-4 folio
>>>>>>> from a free order-9 folio? Maintain a per-order free folio list and
>>>>>>> reimplement a buddy allocator? Nevertheless, nouveau’s implementation
>>>>>>
>>>>>> The way Nouveau handles memory allocations here looks wrong to me—it
>>>>>> should probably use DRM Buddy and convert a block buddy to pages rather
>>>>>> than tracking a free folio list and free page list. But this is not my
>>>>>> driver.
>>>>>>
>>>>>>> is wrong by calling prep_compound_page() on a folio (already compound page).
>>>>>>>
>>>>>>
>>>>>> I don’t disagree that this implementation is questionable.
>>>>>>
>>>>>> So what’s the suggestion here—add folio order to folio_free just to
>>>>>> accommodate Nouveau’s rather odd memory allocation algorithm? That
>>>>>> doesn’t seem right to me either.
>>>>>
>>>>> Splitting the folio in free_zone_device_folio() and passing folio order
>>>>> to folio_free() make sense to me, since after the split, the folio passed
>>>>
>>>> If this is concensous / direction - I can do this but a tree wide
>>>> change.
>>>>
>>>> I do have another question for everyone here - do we think this spliting
>>>> implementation should be considered a Fixes so this can go into 6.19?
>>>
>>> IMHO, this should be a fix, since it is wrong to call prep_compound_page()
>>> on a large folio. IIUC this seems to only affect nouveau now, I will let
>>> them to decide.
>>>
>>
>> Agreed, free_zone_device_folio() needs to split the folio on put.
>>
>>
>>>>
>>>>> to folio_free() contains no order information, but just the used-to-be
>>>>> head page and the remaining 511 pages are free. How does Intel Xe driver
>>>>> handle it without knowing folio order?
>>>>>
>>>>
>>>> It’s a bit convoluted, but folio/page->zone_device_data points to a
>>>> reference-counted object in GPU SVM. When the object’s reference count
>>>> drops to zero, we callback into the driver layer to release the memory.
>>>> In Xe, this is a TTM BO that resolves to a DRM Buddy allocation, which
>>>> is then released. If it’s not clear, our original allocation size
>>>> determines the granularity at which we free the backing store.
>>>>
>>>>> Do we really need the order info in ->folio_free() if the folio is split
>>>>> in free_zone_device_folio()? free_zone_device_folio() should just call
>>>>> ->folio_free() 2^order times to free individual page.
>>>>>
>>>>
>>>> No. If it’s a higher-order folio—let’s say a 2MB folio—we have one
>>>> reference to our GPU SVM object, so we can free the backing in a single
>>>> ->folio_free call.
>>>>
>>>> Now, if that folio gets split at some point into 4KB pages, then we’d
>>>> have 512 references to this object set up in the ->folio_split calls.
>>>> We’d then expect 512 ->folio_free() calls. Same case here: if, for
>>>> whatever reason, we can’t create a 2MB device page during a 2MB
>>>> migration and need to create 512 4KB pages so we'd have 512 references
>>>> to our GPU SVM object.
>>>
>>
>> I still don't follow why the folio_order does not capture the order of the folio.
>> If the folio is split, we should now have 512 split folios for THP
> 
> folio_order() should return 0 after the folio is split.
> 
> In terms of the number of after-split folios, it is 512 for current code base
> since THP is only 2MB in zone devices, but not future proof if mTHP support
> is added. It also causes confusion in core MM, where folio can have
> all kinds of orders.
> 
> 

I see that folio_split_unref() to see that there is no driver
callback during the split. Patch 3 controls the order of

+		folio_split_unref(folio);
 		pgmap->ops->folio_free(folio);

@Matthew, is there a reason to do the split prior to free? pgmap->ops->folio_free(folio)
shouldn't impact the folio itself, the backing memory can be freed and then the
folio split?


Balbir

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 22:11                       ` Balbir Singh
@ 2026-01-09 22:14                         ` Zi Yan
  2026-01-09 22:36                           ` Balbir Singh
  0 siblings, 1 reply; 42+ messages in thread
From: Zi Yan @ 2026-01-09 22:14 UTC (permalink / raw)
  To: Balbir Singh
  Cc: Matthew Brost, Mika Penttilä, Francois Dugast, intel-xe,
	dri-devel, Alistair Popple, David Hildenbrand, Oscar Salvador,
	Andrew Morton, linux-mm, linux-cxl, linux-kernel

On 9 Jan 2026, at 17:11, Balbir Singh wrote:

> On 1/10/26 07:43, Zi Yan wrote:
>> On 9 Jan 2026, at 16:34, Balbir Singh wrote:
>>
>>> On 1/10/26 06:15, Zi Yan wrote:
>>>> On 9 Jan 2026, at 15:03, Matthew Brost wrote:
>>>>
>>>>> On Fri, Jan 09, 2026 at 02:23:49PM -0500, Zi Yan wrote:
>>>>>> On 9 Jan 2026, at 14:08, Matthew Brost wrote:
>>>>>>
>>>>>>> On Fri, Jan 09, 2026 at 01:53:33PM -0500, Zi Yan wrote:
>>>>>>>> On 9 Jan 2026, at 13:26, Matthew Brost wrote:
>>>>>>>>
>>>>>>>>> On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
>>>>>>>>>> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>>
>>>>>>>>>>> On 1/9/26 10:54, Francois Dugast wrote:
>>>>>>>>>>>
>>>>>>>>>>>> From: Matthew Brost <matthew.brost@intel.com>
>>>>>>>>>>>>
>>>>>>>>>>>> Split device-private and coherent folios into individual pages before
>>>>>>>>>>>> freeing so that any order folio can be formed upon the next use of the
>>>>>>>>>>>> pages.
>>>>>>>>>>>>
>>>>>>>>>>>> Cc: Balbir Singh <balbirs@nvidia.com>
>>>>>>>>>>>> Cc: Alistair Popple <apopple@nvidia.com>
>>>>>>>>>>>> Cc: Zi Yan <ziy@nvidia.com>
>>>>>>>>>>>> Cc: David Hildenbrand <david@kernel.org>
>>>>>>>>>>>> Cc: Oscar Salvador <osalvador@suse.de>
>>>>>>>>>>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>>>>>>>>>>> Cc: linux-mm@kvack.org
>>>>>>>>>>>> Cc: linux-cxl@vger.kernel.org
>>>>>>>>>>>> Cc: linux-kernel@vger.kernel.org
>>>>>>>>>>>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
>>>>>>>>>>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>>>>>>>>>>>> ---
>>>>>>>>>>>>  mm/memremap.c | 2 ++
>>>>>>>>>>>>  1 file changed, 2 insertions(+)
>>>>>>>>>>>>
>>>>>>>>>>>> diff --git a/mm/memremap.c b/mm/memremap.c
>>>>>>>>>>>> index 63c6ab4fdf08..7289cdd6862f 100644
>>>>>>>>>>>> --- a/mm/memremap.c
>>>>>>>>>>>> +++ b/mm/memremap.c
>>>>>>>>>>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
>>>>>>>>>>>>  	case MEMORY_DEVICE_COHERENT:
>>>>>>>>>>>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
>>>>>>>>>>>>  			break;
>>>>>>>>>>>> +
>>>>>>>>>>>> +		folio_split_unref(folio);
>>>>>>>>>>>>  		pgmap->ops->folio_free(folio);
>>>>>>>>>>>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
>>>>>>>>>>>>  		break;
>>>>>>>>>>>
>>>>>>>>>>> This breaks folio_free implementations like nouveau_dmem_folio_free
>>>>>>>>>>> which checks the folio order and act upon that.
>>>>>>>>>>> Maybe add an order parameter to folio_free or let the driver handle the split?
>>>>>>>>>
>>>>>>>>> 'let the driver handle the split?' - I had consisder this as an option.
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Passing an order parameter might be better to avoid exposing core MM internals
>>>>>>>>>> by asking drivers to undo compound pages.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> It looks like Nouveau tracks free folios and free pages—something Xe’s
>>>>>>>>> device memory allocator (DRM Buddy) cannot do. I guess this answers my
>>>>>>>>> earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
>>>>>>>>> SVM with respect to reusing folios. It appears Nouveau prefers not to
>>>>>>>>> split the folio, so I’m leaning toward moving this call into the
>>>>>>>>> driver’s folio_free function.
>>>>>>>>
>>>>>>>> No, that creates asymmetric page handling and is error prone.
>>>>>>>>
>>>>>>>
>>>>>>> I agree it is asymmetric and symmetric is likely better.
>>>>>>>
>>>>>>>> In addition, looking at nouveau’s implementation in
>>>>>>>> nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios,
>>>>>>>> which is never split, and passes it to zone_device_folio_init(). This
>>>>>>>> is wrong, since if the folio is large, it will go through prep_compound_page()
>>>>>>>> again. The bug has not manifested because there is only order-9 large folios.
>>>>>>>> Once mTHP support is added, how is nouveau going to allocate a order-4 folio
>>>>>>>> from a free order-9 folio? Maintain a per-order free folio list and
>>>>>>>> reimplement a buddy allocator? Nevertheless, nouveau’s implementation
>>>>>>>
>>>>>>> The way Nouveau handles memory allocations here looks wrong to me—it
>>>>>>> should probably use DRM Buddy and convert a block buddy to pages rather
>>>>>>> than tracking a free folio list and free page list. But this is not my
>>>>>>> driver.
>>>>>>>
>>>>>>>> is wrong by calling prep_compound_page() on a folio (already compound page).
>>>>>>>>
>>>>>>>
>>>>>>> I don’t disagree that this implementation is questionable.
>>>>>>>
>>>>>>> So what’s the suggestion here—add folio order to folio_free just to
>>>>>>> accommodate Nouveau’s rather odd memory allocation algorithm? That
>>>>>>> doesn’t seem right to me either.
>>>>>>
>>>>>> Splitting the folio in free_zone_device_folio() and passing folio order
>>>>>> to folio_free() make sense to me, since after the split, the folio passed
>>>>>
>>>>> If this is concensous / direction - I can do this but a tree wide
>>>>> change.
>>>>>
>>>>> I do have another question for everyone here - do we think this spliting
>>>>> implementation should be considered a Fixes so this can go into 6.19?
>>>>
>>>> IMHO, this should be a fix, since it is wrong to call prep_compound_page()
>>>> on a large folio. IIUC this seems to only affect nouveau now, I will let
>>>> them to decide.
>>>>
>>>
>>> Agreed, free_zone_device_folio() needs to split the folio on put.
>>>
>>>
>>>>>
>>>>>> to folio_free() contains no order information, but just the used-to-be
>>>>>> head page and the remaining 511 pages are free. How does Intel Xe driver
>>>>>> handle it without knowing folio order?
>>>>>>
>>>>>
>>>>> It’s a bit convoluted, but folio/page->zone_device_data points to a
>>>>> reference-counted object in GPU SVM. When the object’s reference count
>>>>> drops to zero, we callback into the driver layer to release the memory.
>>>>> In Xe, this is a TTM BO that resolves to a DRM Buddy allocation, which
>>>>> is then released. If it’s not clear, our original allocation size
>>>>> determines the granularity at which we free the backing store.
>>>>>
>>>>>> Do we really need the order info in ->folio_free() if the folio is split
>>>>>> in free_zone_device_folio()? free_zone_device_folio() should just call
>>>>>> ->folio_free() 2^order times to free individual page.
>>>>>>
>>>>>
>>>>> No. If it’s a higher-order folio—let’s say a 2MB folio—we have one
>>>>> reference to our GPU SVM object, so we can free the backing in a single
>>>>> ->folio_free call.
>>>>>
>>>>> Now, if that folio gets split at some point into 4KB pages, then we’d
>>>>> have 512 references to this object set up in the ->folio_split calls.
>>>>> We’d then expect 512 ->folio_free() calls. Same case here: if, for
>>>>> whatever reason, we can’t create a 2MB device page during a 2MB
>>>>> migration and need to create 512 4KB pages so we'd have 512 references
>>>>> to our GPU SVM object.
>>>>
>>>
>>> I still don't follow why the folio_order does not capture the order of the folio.
>>> If the folio is split, we should now have 512 split folios for THP
>>
>> folio_order() should return 0 after the folio is split.
>>
>> In terms of the number of after-split folios, it is 512 for current code base
>> since THP is only 2MB in zone devices, but not future proof if mTHP support
>> is added. It also causes confusion in core MM, where folio can have
>> all kinds of orders.
>>
>>
>
> I see that folio_split_unref() to see that there is no driver
> callback during the split. Patch 3 controls the order of
>
> +		folio_split_unref(folio);
>  		pgmap->ops->folio_free(folio);
>
> @Matthew, is there a reason to do the split prior to free? pgmap->ops->folio_free(folio)
> shouldn't impact the folio itself, the backing memory can be freed and then the
> folio split?

Quote Matthew from [1]:

... this step must be done before calling folio_free and include a barrier,
as the page can be immediately reallocated.

[1] https://lore.kernel.org/all/aV8TuK5255NXd2PS@lstrano-desk.jf.intel.com/

Best Regards,
Yan, Zi

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 22:14                         ` Zi Yan
@ 2026-01-09 22:36                           ` Balbir Singh
  2026-01-09 23:15                             ` Matthew Brost
  0 siblings, 1 reply; 42+ messages in thread
From: Balbir Singh @ 2026-01-09 22:36 UTC (permalink / raw)
  To: Zi Yan
  Cc: Matthew Brost, Mika Penttilä, Francois Dugast, intel-xe,
	dri-devel, Alistair Popple, David Hildenbrand, Oscar Salvador,
	Andrew Morton, linux-mm, linux-cxl, linux-kernel

On 1/10/26 08:14, Zi Yan wrote:
> On 9 Jan 2026, at 17:11, Balbir Singh wrote:
> 
>> On 1/10/26 07:43, Zi Yan wrote:
>>> On 9 Jan 2026, at 16:34, Balbir Singh wrote:
>>>
>>>> On 1/10/26 06:15, Zi Yan wrote:
>>>>> On 9 Jan 2026, at 15:03, Matthew Brost wrote:
>>>>>
>>>>>> On Fri, Jan 09, 2026 at 02:23:49PM -0500, Zi Yan wrote:
>>>>>>> On 9 Jan 2026, at 14:08, Matthew Brost wrote:
>>>>>>>
>>>>>>>> On Fri, Jan 09, 2026 at 01:53:33PM -0500, Zi Yan wrote:
>>>>>>>>> On 9 Jan 2026, at 13:26, Matthew Brost wrote:
>>>>>>>>>
>>>>>>>>>> On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
>>>>>>>>>>> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> On 1/9/26 10:54, Francois Dugast wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> From: Matthew Brost <matthew.brost@intel.com>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Split device-private and coherent folios into individual pages before
>>>>>>>>>>>>> freeing so that any order folio can be formed upon the next use of the
>>>>>>>>>>>>> pages.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Cc: Balbir Singh <balbirs@nvidia.com>
>>>>>>>>>>>>> Cc: Alistair Popple <apopple@nvidia.com>
>>>>>>>>>>>>> Cc: Zi Yan <ziy@nvidia.com>
>>>>>>>>>>>>> Cc: David Hildenbrand <david@kernel.org>
>>>>>>>>>>>>> Cc: Oscar Salvador <osalvador@suse.de>
>>>>>>>>>>>>> Cc: Andrew Morton <akpm@linux-foundation.org>
>>>>>>>>>>>>> Cc: linux-mm@kvack.org
>>>>>>>>>>>>> Cc: linux-cxl@vger.kernel.org
>>>>>>>>>>>>> Cc: linux-kernel@vger.kernel.org
>>>>>>>>>>>>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
>>>>>>>>>>>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>>>>>>>>>>>>> ---
>>>>>>>>>>>>>  mm/memremap.c | 2 ++
>>>>>>>>>>>>>  1 file changed, 2 insertions(+)
>>>>>>>>>>>>>
>>>>>>>>>>>>> diff --git a/mm/memremap.c b/mm/memremap.c
>>>>>>>>>>>>> index 63c6ab4fdf08..7289cdd6862f 100644
>>>>>>>>>>>>> --- a/mm/memremap.c
>>>>>>>>>>>>> +++ b/mm/memremap.c
>>>>>>>>>>>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
>>>>>>>>>>>>>  	case MEMORY_DEVICE_COHERENT:
>>>>>>>>>>>>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
>>>>>>>>>>>>>  			break;
>>>>>>>>>>>>> +
>>>>>>>>>>>>> +		folio_split_unref(folio);
>>>>>>>>>>>>>  		pgmap->ops->folio_free(folio);
>>>>>>>>>>>>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
>>>>>>>>>>>>>  		break;
>>>>>>>>>>>>
>>>>>>>>>>>> This breaks folio_free implementations like nouveau_dmem_folio_free
>>>>>>>>>>>> which checks the folio order and act upon that.
>>>>>>>>>>>> Maybe add an order parameter to folio_free or let the driver handle the split?
>>>>>>>>>>
>>>>>>>>>> 'let the driver handle the split?' - I had consisder this as an option.
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Passing an order parameter might be better to avoid exposing core MM internals
>>>>>>>>>>> by asking drivers to undo compound pages.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> It looks like Nouveau tracks free folios and free pages—something Xe’s
>>>>>>>>>> device memory allocator (DRM Buddy) cannot do. I guess this answers my
>>>>>>>>>> earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
>>>>>>>>>> SVM with respect to reusing folios. It appears Nouveau prefers not to
>>>>>>>>>> split the folio, so I’m leaning toward moving this call into the
>>>>>>>>>> driver’s folio_free function.
>>>>>>>>>
>>>>>>>>> No, that creates asymmetric page handling and is error prone.
>>>>>>>>>
>>>>>>>>
>>>>>>>> I agree it is asymmetric and symmetric is likely better.
>>>>>>>>
>>>>>>>>> In addition, looking at nouveau’s implementation in
>>>>>>>>> nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios,
>>>>>>>>> which is never split, and passes it to zone_device_folio_init(). This
>>>>>>>>> is wrong, since if the folio is large, it will go through prep_compound_page()
>>>>>>>>> again. The bug has not manifested because there is only order-9 large folios.
>>>>>>>>> Once mTHP support is added, how is nouveau going to allocate a order-4 folio
>>>>>>>>> from a free order-9 folio? Maintain a per-order free folio list and
>>>>>>>>> reimplement a buddy allocator? Nevertheless, nouveau’s implementation
>>>>>>>>
>>>>>>>> The way Nouveau handles memory allocations here looks wrong to me—it
>>>>>>>> should probably use DRM Buddy and convert a block buddy to pages rather
>>>>>>>> than tracking a free folio list and free page list. But this is not my
>>>>>>>> driver.
>>>>>>>>
>>>>>>>>> is wrong by calling prep_compound_page() on a folio (already compound page).
>>>>>>>>>
>>>>>>>>
>>>>>>>> I don’t disagree that this implementation is questionable.
>>>>>>>>
>>>>>>>> So what’s the suggestion here—add folio order to folio_free just to
>>>>>>>> accommodate Nouveau’s rather odd memory allocation algorithm? That
>>>>>>>> doesn’t seem right to me either.
>>>>>>>
>>>>>>> Splitting the folio in free_zone_device_folio() and passing folio order
>>>>>>> to folio_free() make sense to me, since after the split, the folio passed
>>>>>>
>>>>>> If this is concensous / direction - I can do this but a tree wide
>>>>>> change.
>>>>>>
>>>>>> I do have another question for everyone here - do we think this spliting
>>>>>> implementation should be considered a Fixes so this can go into 6.19?
>>>>>
>>>>> IMHO, this should be a fix, since it is wrong to call prep_compound_page()
>>>>> on a large folio. IIUC this seems to only affect nouveau now, I will let
>>>>> them to decide.
>>>>>
>>>>
>>>> Agreed, free_zone_device_folio() needs to split the folio on put.
>>>>
>>>>
>>>>>>
>>>>>>> to folio_free() contains no order information, but just the used-to-be
>>>>>>> head page and the remaining 511 pages are free. How does Intel Xe driver
>>>>>>> handle it without knowing folio order?
>>>>>>>
>>>>>>
>>>>>> It’s a bit convoluted, but folio/page->zone_device_data points to a
>>>>>> reference-counted object in GPU SVM. When the object’s reference count
>>>>>> drops to zero, we callback into the driver layer to release the memory.
>>>>>> In Xe, this is a TTM BO that resolves to a DRM Buddy allocation, which
>>>>>> is then released. If it’s not clear, our original allocation size
>>>>>> determines the granularity at which we free the backing store.
>>>>>>
>>>>>>> Do we really need the order info in ->folio_free() if the folio is split
>>>>>>> in free_zone_device_folio()? free_zone_device_folio() should just call
>>>>>>> ->folio_free() 2^order times to free individual page.
>>>>>>>
>>>>>>
>>>>>> No. If it’s a higher-order folio—let’s say a 2MB folio—we have one
>>>>>> reference to our GPU SVM object, so we can free the backing in a single
>>>>>> ->folio_free call.
>>>>>>
>>>>>> Now, if that folio gets split at some point into 4KB pages, then we’d
>>>>>> have 512 references to this object set up in the ->folio_split calls.
>>>>>> We’d then expect 512 ->folio_free() calls. Same case here: if, for
>>>>>> whatever reason, we can’t create a 2MB device page during a 2MB
>>>>>> migration and need to create 512 4KB pages so we'd have 512 references
>>>>>> to our GPU SVM object.
>>>>>
>>>>
>>>> I still don't follow why the folio_order does not capture the order of the folio.
>>>> If the folio is split, we should now have 512 split folios for THP
>>>
>>> folio_order() should return 0 after the folio is split.
>>>
>>> In terms of the number of after-split folios, it is 512 for current code base
>>> since THP is only 2MB in zone devices, but not future proof if mTHP support
>>> is added. It also causes confusion in core MM, where folio can have
>>> all kinds of orders.
>>>
>>>
>>
>> I see that folio_split_unref() to see that there is no driver
>> callback during the split. Patch 3 controls the order of
>>
>> +		folio_split_unref(folio);
>>  		pgmap->ops->folio_free(folio);
>>
>> @Matthew, is there a reason to do the split prior to free? pgmap->ops->folio_free(folio)
>> shouldn't impact the folio itself, the backing memory can be freed and then the
>> folio split?
> 
> Quote Matthew from [1]:
> 
> ... this step must be done before calling folio_free and include a barrier,
> as the page can be immediately reallocated.
> 
> [1] https://lore.kernel.org/all/aV8TuK5255NXd2PS@lstrano-desk.jf.intel.com/
> 

Thanks, I am not a TTM/BO expert

So that leaves us with

1. Pass the order to folio_free()
2. Consider calling folio_free() callback for each split folio during folio_split_unref(),
   but that means the driver needs to consolidate all the relevant information

#1 works, but the information there is stale, in the sense that we are passing in the
old order information, the order is useful for the driver to know the size of it's
backing allocation
#2 should work too, but it means PMD_ORDER frees as opposed to 1

Balbir

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

* Re: [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing
  2026-01-09 22:36                           ` Balbir Singh
@ 2026-01-09 23:15                             ` Matthew Brost
  0 siblings, 0 replies; 42+ messages in thread
From: Matthew Brost @ 2026-01-09 23:15 UTC (permalink / raw)
  To: Balbir Singh
  Cc: Zi Yan, Mika Penttilä, Francois Dugast, intel-xe, dri-devel,
	Alistair Popple, David Hildenbrand, Oscar Salvador, Andrew Morton,
	linux-mm, linux-cxl, linux-kernel

On Sat, Jan 10, 2026 at 09:36:04AM +1100, Balbir Singh wrote:
> On 1/10/26 08:14, Zi Yan wrote:
> > On 9 Jan 2026, at 17:11, Balbir Singh wrote:
> > 
> >> On 1/10/26 07:43, Zi Yan wrote:
> >>> On 9 Jan 2026, at 16:34, Balbir Singh wrote:
> >>>
> >>>> On 1/10/26 06:15, Zi Yan wrote:
> >>>>> On 9 Jan 2026, at 15:03, Matthew Brost wrote:
> >>>>>
> >>>>>> On Fri, Jan 09, 2026 at 02:23:49PM -0500, Zi Yan wrote:
> >>>>>>> On 9 Jan 2026, at 14:08, Matthew Brost wrote:
> >>>>>>>
> >>>>>>>> On Fri, Jan 09, 2026 at 01:53:33PM -0500, Zi Yan wrote:
> >>>>>>>>> On 9 Jan 2026, at 13:26, Matthew Brost wrote:
> >>>>>>>>>
> >>>>>>>>>> On Fri, Jan 09, 2026 at 12:28:22PM -0500, Zi Yan wrote:
> >>>>>>>>>>> On 9 Jan 2026, at 6:09, Mika Penttilä wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> Hi,
> >>>>>>>>>>>>
> >>>>>>>>>>>> On 1/9/26 10:54, Francois Dugast wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>> From: Matthew Brost <matthew.brost@intel.com>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Split device-private and coherent folios into individual pages before
> >>>>>>>>>>>>> freeing so that any order folio can be formed upon the next use of the
> >>>>>>>>>>>>> pages.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Cc: Balbir Singh <balbirs@nvidia.com>
> >>>>>>>>>>>>> Cc: Alistair Popple <apopple@nvidia.com>
> >>>>>>>>>>>>> Cc: Zi Yan <ziy@nvidia.com>
> >>>>>>>>>>>>> Cc: David Hildenbrand <david@kernel.org>
> >>>>>>>>>>>>> Cc: Oscar Salvador <osalvador@suse.de>
> >>>>>>>>>>>>> Cc: Andrew Morton <akpm@linux-foundation.org>
> >>>>>>>>>>>>> Cc: linux-mm@kvack.org
> >>>>>>>>>>>>> Cc: linux-cxl@vger.kernel.org
> >>>>>>>>>>>>> Cc: linux-kernel@vger.kernel.org
> >>>>>>>>>>>>> Signed-off-by: Matthew Brost <matthew.brost@intel.com>
> >>>>>>>>>>>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> >>>>>>>>>>>>> ---
> >>>>>>>>>>>>>  mm/memremap.c | 2 ++
> >>>>>>>>>>>>>  1 file changed, 2 insertions(+)
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> diff --git a/mm/memremap.c b/mm/memremap.c
> >>>>>>>>>>>>> index 63c6ab4fdf08..7289cdd6862f 100644
> >>>>>>>>>>>>> --- a/mm/memremap.c
> >>>>>>>>>>>>> +++ b/mm/memremap.c
> >>>>>>>>>>>>> @@ -453,6 +453,8 @@ void free_zone_device_folio(struct folio *folio)
> >>>>>>>>>>>>>  	case MEMORY_DEVICE_COHERENT:
> >>>>>>>>>>>>>  		if (WARN_ON_ONCE(!pgmap->ops || !pgmap->ops->folio_free))
> >>>>>>>>>>>>>  			break;
> >>>>>>>>>>>>> +
> >>>>>>>>>>>>> +		folio_split_unref(folio);
> >>>>>>>>>>>>>  		pgmap->ops->folio_free(folio);
> >>>>>>>>>>>>>  		percpu_ref_put_many(&folio->pgmap->ref, nr);
> >>>>>>>>>>>>>  		break;
> >>>>>>>>>>>>
> >>>>>>>>>>>> This breaks folio_free implementations like nouveau_dmem_folio_free
> >>>>>>>>>>>> which checks the folio order and act upon that.
> >>>>>>>>>>>> Maybe add an order parameter to folio_free or let the driver handle the split?
> >>>>>>>>>>
> >>>>>>>>>> 'let the driver handle the split?' - I had consisder this as an option.
> >>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> Passing an order parameter might be better to avoid exposing core MM internals
> >>>>>>>>>>> by asking drivers to undo compound pages.
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> It looks like Nouveau tracks free folios and free pages—something Xe’s
> >>>>>>>>>> device memory allocator (DRM Buddy) cannot do. I guess this answers my
> >>>>>>>>>> earlier question of how Nouveau avoids hitting the same bug as Xe / GPU
> >>>>>>>>>> SVM with respect to reusing folios. It appears Nouveau prefers not to
> >>>>>>>>>> split the folio, so I’m leaning toward moving this call into the
> >>>>>>>>>> driver’s folio_free function.
> >>>>>>>>>
> >>>>>>>>> No, that creates asymmetric page handling and is error prone.
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>> I agree it is asymmetric and symmetric is likely better.
> >>>>>>>>
> >>>>>>>>> In addition, looking at nouveau’s implementation in
> >>>>>>>>> nouveau_dmem_page_alloc_locked(), it gets a folio from drm->dmem->free_folios,
> >>>>>>>>> which is never split, and passes it to zone_device_folio_init(). This
> >>>>>>>>> is wrong, since if the folio is large, it will go through prep_compound_page()
> >>>>>>>>> again. The bug has not manifested because there is only order-9 large folios.
> >>>>>>>>> Once mTHP support is added, how is nouveau going to allocate a order-4 folio
> >>>>>>>>> from a free order-9 folio? Maintain a per-order free folio list and
> >>>>>>>>> reimplement a buddy allocator? Nevertheless, nouveau’s implementation
> >>>>>>>>
> >>>>>>>> The way Nouveau handles memory allocations here looks wrong to me—it
> >>>>>>>> should probably use DRM Buddy and convert a block buddy to pages rather
> >>>>>>>> than tracking a free folio list and free page list. But this is not my
> >>>>>>>> driver.
> >>>>>>>>
> >>>>>>>>> is wrong by calling prep_compound_page() on a folio (already compound page).
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>> I don’t disagree that this implementation is questionable.
> >>>>>>>>
> >>>>>>>> So what’s the suggestion here—add folio order to folio_free just to
> >>>>>>>> accommodate Nouveau’s rather odd memory allocation algorithm? That
> >>>>>>>> doesn’t seem right to me either.
> >>>>>>>
> >>>>>>> Splitting the folio in free_zone_device_folio() and passing folio order
> >>>>>>> to folio_free() make sense to me, since after the split, the folio passed
> >>>>>>
> >>>>>> If this is concensous / direction - I can do this but a tree wide
> >>>>>> change.
> >>>>>>
> >>>>>> I do have another question for everyone here - do we think this spliting
> >>>>>> implementation should be considered a Fixes so this can go into 6.19?
> >>>>>
> >>>>> IMHO, this should be a fix, since it is wrong to call prep_compound_page()
> >>>>> on a large folio. IIUC this seems to only affect nouveau now, I will let
> >>>>> them to decide.
> >>>>>
> >>>>
> >>>> Agreed, free_zone_device_folio() needs to split the folio on put.
> >>>>
> >>>>
> >>>>>>
> >>>>>>> to folio_free() contains no order information, but just the used-to-be
> >>>>>>> head page and the remaining 511 pages are free. How does Intel Xe driver
> >>>>>>> handle it without knowing folio order?
> >>>>>>>
> >>>>>>
> >>>>>> It’s a bit convoluted, but folio/page->zone_device_data points to a
> >>>>>> reference-counted object in GPU SVM. When the object’s reference count
> >>>>>> drops to zero, we callback into the driver layer to release the memory.
> >>>>>> In Xe, this is a TTM BO that resolves to a DRM Buddy allocation, which
> >>>>>> is then released. If it’s not clear, our original allocation size
> >>>>>> determines the granularity at which we free the backing store.
> >>>>>>
> >>>>>>> Do we really need the order info in ->folio_free() if the folio is split
> >>>>>>> in free_zone_device_folio()? free_zone_device_folio() should just call
> >>>>>>> ->folio_free() 2^order times to free individual page.
> >>>>>>>
> >>>>>>
> >>>>>> No. If it’s a higher-order folio—let’s say a 2MB folio—we have one
> >>>>>> reference to our GPU SVM object, so we can free the backing in a single
> >>>>>> ->folio_free call.
> >>>>>>
> >>>>>> Now, if that folio gets split at some point into 4KB pages, then we’d
> >>>>>> have 512 references to this object set up in the ->folio_split calls.
> >>>>>> We’d then expect 512 ->folio_free() calls. Same case here: if, for
> >>>>>> whatever reason, we can’t create a 2MB device page during a 2MB
> >>>>>> migration and need to create 512 4KB pages so we'd have 512 references
> >>>>>> to our GPU SVM object.
> >>>>>
> >>>>
> >>>> I still don't follow why the folio_order does not capture the order of the folio.
> >>>> If the folio is split, we should now have 512 split folios for THP
> >>>
> >>> folio_order() should return 0 after the folio is split.
> >>>
> >>> In terms of the number of after-split folios, it is 512 for current code base
> >>> since THP is only 2MB in zone devices, but not future proof if mTHP support
> >>> is added. It also causes confusion in core MM, where folio can have
> >>> all kinds of orders.
> >>>
> >>>
> >>
> >> I see that folio_split_unref() to see that there is no driver
> >> callback during the split. Patch 3 controls the order of
> >>
> >> +		folio_split_unref(folio);
> >>  		pgmap->ops->folio_free(folio);
> >>
> >> @Matthew, is there a reason to do the split prior to free? pgmap->ops->folio_free(folio)
> >> shouldn't impact the folio itself, the backing memory can be freed and then the
> >> folio split?
> > 
> > Quote Matthew from [1]:
> > 
> > ... this step must be done before calling folio_free and include a barrier,

Actually, I think it’s fine without a barrier—I confused myself a bit
there. But yes, it must be split before releasing the memory back to the
pool from which it can be reallocated.

> > as the page can be immediately reallocated.
> > 
> > [1] https://lore.kernel.org/all/aV8TuK5255NXd2PS@lstrano-desk.jf.intel.com/
> > 
> 
> Thanks, I am not a TTM/BO expert
> 
> So that leaves us with
> 
> 1. Pass the order to folio_free()
> 2. Consider calling folio_free() callback for each split folio during folio_split_unref(),
>    but that means the driver needs to consolidate all the relevant information
> 
> #1 works, but the information there is stale, in the sense that we are passing in the
> old order information, the order is useful for the driver to know the size of it's
> backing allocation

#1 is my preference here. We don’t need this information in GPU SVM for
Xe, but Nouveau does, and I see a straightforward change in Nouveau.

In this case, “order” means the folio plus the number of pages being
released, with each individual page in an initialized state (i.e., not
compound and with a proper pgmap value, they look the pages output from
memremap_pages, etc...).

I think this interface actually makes sense now that I’ve written it
down. My next revision will implement this along with the renaming
suggestions for s/folio_split_unref/free_zone_device_folio_prepare
agreed upon in patch #1. I’ll also likely mark the relevant core MM
patches wirh fixes tags in my next revision so 6.19 has the correct
folio-splitting behavior - it would be a bit odd to have kernel floating
around with different behavior here.

Let me know if anyone has objections before I move forward with this.

Matt

> #2 should work too, but it means PMD_ORDER frees as opposed to 1
> 
> Balbir

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

* Re: [PATCH v3 7/7] drm/pagemap: Enable THP support for GPU memory migration
  2026-01-09  8:54 ` [PATCH v3 7/7] drm/pagemap: Enable THP support for GPU memory migration Francois Dugast
@ 2026-01-09 23:33   ` Matthew Brost
  0 siblings, 0 replies; 42+ messages in thread
From: Matthew Brost @ 2026-01-09 23:33 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe, dri-devel, Thomas Hellström, Michal Mrozek

On Fri, Jan 09, 2026 at 09:54:27AM +0100, Francois Dugast wrote:
> This enables support for Transparent Huge Pages (THP) for device pages by
> using MIGRATE_VMA_SELECT_COMPOUND during migration. It removes the need to
> split folios and loop multiple times over all pages to perform required
> operations at page level. Instead, we rely on newly introduced support for
> higher orders in drm_pagemap and folio-level API.
> 
> In Xe, this drastically improves performance when using SVM. The GT stats
> below collected after a 2MB page fault show overall servicing is more than
> 7 times faster, and thanks to reduced CPU overhead the time spent on the
> actual copy goes from 23% without THP to 80% with THP:
> 
> Without THP:
> 
>     svm_2M_pagefault_us: 966
>     svm_2M_migrate_us: 942
>     svm_2M_device_copy_us: 223
>     svm_2M_get_pages_us: 9
>     svm_2M_bind_us: 10
> 
> With THP:
> 
>     svm_2M_pagefault_us: 132
>     svm_2M_migrate_us: 128
>     svm_2M_device_copy_us: 106
>     svm_2M_get_pages_us: 1
>     svm_2M_bind_us: 2
> 
> v2:
> - Fix one occurrence of drm_pagemap_get_devmem_page() (Matthew Brost)
> 
> v3:
> - Remove migrate_device_split_page() and folio_split_lock, instead rely on
>   free_zone_device_folio() to split folios before freeing (Matthew Brost)
> - Assert folio order is HPAGE_PMD_ORDER (Matthew Brost)
> - Always use folio_set_zone_device_data() in split (Matthew Brost)
> 
> Cc: Matthew Brost <matthew.brost@intel.com>
> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> Cc: Michal Mrozek <michal.mrozek@intel.com>
> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> ---
>  drivers/gpu/drm/drm_pagemap.c | 69 +++++++++++++++++++++++++++++++----
>  1 file changed, 61 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_pagemap.c b/drivers/gpu/drm/drm_pagemap.c
> index 121234cef38c..5b89140edb8e 100644
> --- a/drivers/gpu/drm/drm_pagemap.c
> +++ b/drivers/gpu/drm/drm_pagemap.c
> @@ -200,16 +200,20 @@ static void drm_pagemap_migration_unlock_put_pages(unsigned long npages,
>  /**
>   * drm_pagemap_get_devmem_page() - Get a reference to a device memory page
>   * @page: Pointer to the page
> + * @order: Order
>   * @zdd: Pointer to the GPU SVM zone device data
>   *
>   * This function associates the given page with the specified GPU SVM zone
>   * device data and initializes it for zone device usage.
>   */
>  static void drm_pagemap_get_devmem_page(struct page *page,
> +					unsigned int order,
>  					struct drm_pagemap_zdd *zdd)
>  {
> -	page->zone_device_data = drm_pagemap_zdd_get(zdd);
> -	zone_device_page_init(page, 0);
> +	struct folio *folio = page_folio(page);
> +
> +	folio_set_zone_device_data(folio, drm_pagemap_zdd_get(zdd));
> +	zone_device_page_init(page, order);
>  }
>  
>  /**
> @@ -534,7 +538,8 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation,
>  		 * rare and only occur when the madvise attributes of memory are
>  		 * changed or atomics are being used.
>  		 */
> -		.flags		= MIGRATE_VMA_SELECT_SYSTEM | MIGRATE_VMA_SELECT_DEVICE_COHERENT,
> +		.flags		= MIGRATE_VMA_SELECT_SYSTEM | MIGRATE_VMA_SELECT_DEVICE_COHERENT |
> +				  MIGRATE_VMA_SELECT_COMPOUND,
>  	};
>  	unsigned long i, npages = npages_in_range(start, end);
>  	unsigned long own_pages = 0, migrated_pages = 0;
> @@ -640,10 +645,12 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation,
>  
>  	own_pages = 0;
>  
> -	for (i = 0; i < npages; ++i) {
> +	for (i = 0; i < npages;) {
> +		unsigned long j;
>  		struct page *page = pfn_to_page(migrate.dst[i]);
>  		struct page *src_page = migrate_pfn_to_page(migrate.src[i]);
>  		cur.start = i;
> +		unsigned int order = 0;

Move 'cur.start = i;' after order variable.

How about this warning too? As we have agreed device folios should be
split in the core MM upon freeing.

drm_WARN_ONCE(dpagemap->drm, folio_order(page_folio(page)),
	      "Unexpected compound device page found\n");

>  
>  		pages[i] = NULL;
>  		if (src_page && is_device_private_page(src_page)) {
> @@ -670,7 +677,20 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation,
>  			pages[i] = page;
>  		}
>  		migrate.dst[i] = migrate_pfn(migrate.dst[i]);

You can't see this in this diff but above here has a 'continue'
statement. With increment being removed from the loop this could just
loop forever. So s/continue/goto next/ or increment 'i' before the
continue.

> -		drm_pagemap_get_devmem_page(page, zdd);
> +
> +		if (migrate.src[i] & MIGRATE_PFN_COMPOUND) {
> +			drm_WARN_ONCE(dpagemap->drm, src_page &&
> +				      folio_order(page_folio(src_page)) != HPAGE_PMD_ORDER,
> +				      "Unexpected folio order\n");
> +
> +			order = HPAGE_PMD_ORDER;
> +			migrate.dst[i] |= MIGRATE_PFN_COMPOUND;
> +
> +			for (j = 1; j < NR_PAGES(order) && i + j < npages; j++)
> +				migrate.dst[i + j] = 0;
> +		}
> +
> +		drm_pagemap_get_devmem_page(page, order, zdd);
>  
>  		/* If we switched the migrating drm_pagemap, migrate previous pages now */
>  		err = drm_pagemap_migrate_range(devmem_allocation, migrate.src, migrate.dst,
> @@ -680,7 +700,10 @@ int drm_pagemap_migrate_to_devmem(struct drm_pagemap_devmem *devmem_allocation,
>  			npages = i + 1;
>  			goto err_finalize;
>  		}
> +

next:
> +		i += NR_PAGES(order);

Matt

>  	}
> +
>  	cur.start = npages;
>  	cur.ops = NULL; /* Force migration */
>  	err = drm_pagemap_migrate_range(devmem_allocation, migrate.src, migrate.dst,
> @@ -789,6 +812,8 @@ static int drm_pagemap_migrate_populate_ram_pfn(struct vm_area_struct *vas,
>  		page = folio_page(folio, 0);
>  		mpfn[i] = migrate_pfn(page_to_pfn(page));
>  
> +		if (order)
> +			mpfn[i] |= MIGRATE_PFN_COMPOUND;
>  next:
>  		if (page)
>  			addr += page_size(page);
> @@ -1044,8 +1069,15 @@ int drm_pagemap_evict_to_ram(struct drm_pagemap_devmem *devmem_allocation)
>  	if (err)
>  		goto err_finalize;
>  
> -	for (i = 0; i < npages; ++i)
> +	for (i = 0; i < npages;) {
> +		unsigned int order = 0;
> +
>  		pages[i] = migrate_pfn_to_page(src[i]);
> +		if (pages[i])
> +			order = folio_order(page_folio(pages[i]));
> +
> +		i += NR_PAGES(order);
> +	}
>  
>  	err = ops->copy_to_ram(pages, pagemap_addr, npages, NULL);
>  	if (err)
> @@ -1098,7 +1130,8 @@ static int __drm_pagemap_migrate_to_ram(struct vm_area_struct *vas,
>  		.vma		= vas,
>  		.pgmap_owner	= page_pgmap(page)->owner,
>  		.flags		= MIGRATE_VMA_SELECT_DEVICE_PRIVATE |
> -		MIGRATE_VMA_SELECT_DEVICE_COHERENT,
> +				  MIGRATE_VMA_SELECT_DEVICE_COHERENT |
> +				  MIGRATE_VMA_SELECT_COMPOUND,
>  		.fault_page	= page,
>  	};
>  	struct drm_pagemap_migrate_details mdetails = {};
> @@ -1164,8 +1197,15 @@ static int __drm_pagemap_migrate_to_ram(struct vm_area_struct *vas,
>  	if (err)
>  		goto err_finalize;
>  
> -	for (i = 0; i < npages; ++i)
> +	for (i = 0; i < npages;) {
> +		unsigned int order = 0;
> +
>  		pages[i] = migrate_pfn_to_page(migrate.src[i]);
> +		if (pages[i])
> +			order = folio_order(page_folio(pages[i]));
> +
> +		i += NR_PAGES(order);
> +	}
>  
>  	err = ops->copy_to_ram(pages, pagemap_addr, npages, NULL);
>  	if (err)
> @@ -1223,9 +1263,22 @@ static vm_fault_t drm_pagemap_migrate_to_ram(struct vm_fault *vmf)
>  	return err ? VM_FAULT_SIGBUS : 0;
>  }
>  
> +static void drm_pagemap_folio_split(struct folio *orig_folio, struct folio *new_folio)
> +{
> +	struct drm_pagemap_zdd *zdd;
> +
> +	if (!new_folio)
> +		return;
> +
> +	new_folio->pgmap = orig_folio->pgmap;
> +	zdd = folio_zone_device_data(orig_folio);
> +	folio_set_zone_device_data(new_folio, drm_pagemap_zdd_get(zdd));
> +}
> +
>  static const struct dev_pagemap_ops drm_pagemap_pagemap_ops = {
>  	.folio_free = drm_pagemap_folio_free,
>  	.migrate_to_ram = drm_pagemap_migrate_to_ram,
> +	.folio_split = drm_pagemap_folio_split,
>  };
>  
>  /**
> -- 
> 2.43.0
> 

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

end of thread, other threads:[~2026-01-09 23:34 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-09  8:54 [PATCH v3 0/7] Enable THP support in drm_pagemap Francois Dugast
2026-01-09  8:54 ` [PATCH v3 1/7] mm: Add folio_split_unref helper Francois Dugast
2026-01-09 13:19   ` David Hildenbrand (Red Hat)
2026-01-09 13:26     ` David Hildenbrand (Red Hat)
2026-01-09 14:30       ` Zi Yan
2026-01-09 15:11         ` David Hildenbrand (Red Hat)
2026-01-09 18:38           ` Matthew Brost
2026-01-09 18:37     ` Andrew Morton
2026-01-09 18:41       ` Zi Yan
2026-01-09 18:54         ` Francois Dugast
2026-01-09 18:43       ` Matthew Brost
2026-01-09 19:22         ` Andrew Morton
2026-01-09 19:26           ` Liam R. Howlett
2026-01-09  8:54 ` [PATCH v3 2/7] fs/dax: Use " Francois Dugast
2026-01-09  8:54 ` [PATCH v3 3/7] mm: Split device-private and coherent folios before freeing Francois Dugast
2026-01-09 11:09   ` Mika Penttilä
2026-01-09 17:28     ` Zi Yan
2026-01-09 18:26       ` Matthew Brost
2026-01-09 18:53         ` Zi Yan
2026-01-09 19:08           ` Matthew Brost
2026-01-09 19:23             ` Zi Yan
2026-01-09 20:03               ` Matthew Brost
2026-01-09 20:15                 ` Zi Yan
2026-01-09 21:34                   ` Balbir Singh
2026-01-09 21:43                     ` Zi Yan
2026-01-09 22:11                       ` Balbir Singh
2026-01-09 22:14                         ` Zi Yan
2026-01-09 22:36                           ` Balbir Singh
2026-01-09 23:15                             ` Matthew Brost
2026-01-09  8:54 ` [PATCH v3 4/7] drm/pagemap: Unlock and put folios when possible Francois Dugast
2026-01-09  8:54 ` [PATCH v3 5/7] drm/pagemap: Add helper to access zone_device_data Francois Dugast
2026-01-09  8:54 ` [PATCH v3 6/7] drm/pagemap: Correct cpages calculation for migrate_vma_setup Francois Dugast
2026-01-09  8:54 ` [PATCH v3 7/7] drm/pagemap: Enable THP support for GPU memory migration Francois Dugast
2026-01-09 23:33   ` Matthew Brost
2026-01-09  9:33 ` ✓ CI.KUnit: success for Enable THP support in drm_pagemap (rev3) Patchwork
2026-01-09  9:49 ` ✗ CI.checksparse: warning " Patchwork
2026-01-09 10:34 ` ✗ Xe.CI.BAT: failure " Patchwork
2026-01-09 11:59 ` ✗ Xe.CI.Full: " Patchwork
2026-01-09 12:37 ` ✓ CI.KUnit: success for Enable THP support in drm_pagemap (rev4) Patchwork
2026-01-09 12:53 ` ✗ CI.checksparse: warning " Patchwork
2026-01-09 13:26 ` ✓ Xe.CI.BAT: success " Patchwork
2026-01-09 16:37 ` ✗ Xe.CI.Full: failure " Patchwork

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