Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [CI 01/44] mm/hmm: let users to tag specific PFNs
@ 2024-06-14 21:57 Oak Zeng
  2024-06-14 21:57 ` [CI 02/44] dma-mapping: provide an interface to allocate IOVA Oak Zeng
                   ` (58 more replies)
  0 siblings, 59 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

From: Leon Romanovsky <leonro@nvidia.com>

Introduce new sticky flag, which isn't overwritten by HMM range fault.
Such flag allows users to tag specific PFNs with extra data in addition
to already filled by HMM.

Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
 include/linux/hmm.h |  3 +++
 mm/hmm.c            | 34 +++++++++++++++++++++-------------
 2 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/include/linux/hmm.h b/include/linux/hmm.h
index 126a36571667..b90902baa593 100644
--- a/include/linux/hmm.h
+++ b/include/linux/hmm.h
@@ -23,6 +23,7 @@ struct mmu_interval_notifier;
  * HMM_PFN_WRITE - if the page memory can be written to (requires HMM_PFN_VALID)
  * HMM_PFN_ERROR - accessing the pfn is impossible and the device should
  *                 fail. ie poisoned memory, special pages, no vma, etc
+ * HMM_PFN_STICKY - Flag preserved on input-to-output transformation
  *
  * On input:
  * 0                 - Return the current state of the page, do not fault it.
@@ -36,6 +37,8 @@ enum hmm_pfn_flags {
 	HMM_PFN_VALID = 1UL << (BITS_PER_LONG - 1),
 	HMM_PFN_WRITE = 1UL << (BITS_PER_LONG - 2),
 	HMM_PFN_ERROR = 1UL << (BITS_PER_LONG - 3),
+	/* Sticky lag, carried from Input to Output */
+	HMM_PFN_STICKY = 1UL << (BITS_PER_LONG - 7),
 	HMM_PFN_ORDER_SHIFT = (BITS_PER_LONG - 8),
 
 	/* Input flags */
diff --git a/mm/hmm.c b/mm/hmm.c
index 93aebd9cc130..a244071085b1 100644
--- a/mm/hmm.c
+++ b/mm/hmm.c
@@ -44,8 +44,10 @@ static int hmm_pfns_fill(unsigned long addr, unsigned long end,
 {
 	unsigned long i = (addr - range->start) >> PAGE_SHIFT;
 
-	for (; addr < end; addr += PAGE_SIZE, i++)
-		range->hmm_pfns[i] = cpu_flags;
+	for (; addr < end; addr += PAGE_SIZE, i++) {
+		range->hmm_pfns[i] &= HMM_PFN_STICKY;
+		range->hmm_pfns[i] |= cpu_flags;
+	}
 	return 0;
 }
 
@@ -202,8 +204,10 @@ static int hmm_vma_handle_pmd(struct mm_walk *walk, unsigned long addr,
 		return hmm_vma_fault(addr, end, required_fault, walk);
 
 	pfn = pmd_pfn(pmd) + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
-	for (i = 0; addr < end; addr += PAGE_SIZE, i++, pfn++)
-		hmm_pfns[i] = pfn | cpu_flags;
+	for (i = 0; addr < end; addr += PAGE_SIZE, i++, pfn++) {
+		hmm_pfns[i] &= HMM_PFN_STICKY;
+		hmm_pfns[i] |= pfn | cpu_flags;
+	}
 	return 0;
 }
 #else /* CONFIG_TRANSPARENT_HUGEPAGE */
@@ -236,7 +240,7 @@ static int hmm_vma_handle_pte(struct mm_walk *walk, unsigned long addr,
 			hmm_pte_need_fault(hmm_vma_walk, pfn_req_flags, 0);
 		if (required_fault)
 			goto fault;
-		*hmm_pfn = 0;
+		*hmm_pfn = *hmm_pfn & HMM_PFN_STICKY;
 		return 0;
 	}
 
@@ -253,14 +257,14 @@ static int hmm_vma_handle_pte(struct mm_walk *walk, unsigned long addr,
 			cpu_flags = HMM_PFN_VALID;
 			if (is_writable_device_private_entry(entry))
 				cpu_flags |= HMM_PFN_WRITE;
-			*hmm_pfn = swp_offset_pfn(entry) | cpu_flags;
+			*hmm_pfn = (*hmm_pfn & HMM_PFN_STICKY) | swp_offset_pfn(entry) | cpu_flags;
 			return 0;
 		}
 
 		required_fault =
 			hmm_pte_need_fault(hmm_vma_walk, pfn_req_flags, 0);
 		if (!required_fault) {
-			*hmm_pfn = 0;
+			*hmm_pfn = *hmm_pfn & HMM_PFN_STICKY;
 			return 0;
 		}
 
@@ -304,11 +308,11 @@ static int hmm_vma_handle_pte(struct mm_walk *walk, unsigned long addr,
 			pte_unmap(ptep);
 			return -EFAULT;
 		}
-		*hmm_pfn = HMM_PFN_ERROR;
+		*hmm_pfn = (*hmm_pfn & HMM_PFN_STICKY) | HMM_PFN_ERROR;
 		return 0;
 	}
 
-	*hmm_pfn = pte_pfn(pte) | cpu_flags;
+	*hmm_pfn = (*hmm_pfn & HMM_PFN_STICKY) | pte_pfn(pte) | cpu_flags;
 	return 0;
 
 fault:
@@ -448,8 +452,10 @@ static int hmm_vma_walk_pud(pud_t *pudp, unsigned long start, unsigned long end,
 		}
 
 		pfn = pud_pfn(pud) + ((addr & ~PUD_MASK) >> PAGE_SHIFT);
-		for (i = 0; i < npages; ++i, ++pfn)
-			hmm_pfns[i] = pfn | cpu_flags;
+		for (i = 0; i < npages; ++i, ++pfn) {
+			hmm_pfns[i] &= HMM_PFN_STICKY;
+			hmm_pfns[i] |= pfn | cpu_flags;
+		}
 		goto out_unlock;
 	}
 
@@ -507,8 +513,10 @@ static int hmm_vma_walk_hugetlb_entry(pte_t *pte, unsigned long hmask,
 	}
 
 	pfn = pte_pfn(entry) + ((start & ~hmask) >> PAGE_SHIFT);
-	for (; addr < end; addr += PAGE_SIZE, i++, pfn++)
-		range->hmm_pfns[i] = pfn | cpu_flags;
+	for (; addr < end; addr += PAGE_SIZE, i++, pfn++) {
+		range->hmm_pfns[i] &= HMM_PFN_STICKY;
+		range->hmm_pfns[i] |= pfn | cpu_flags;
+	}
 
 	spin_unlock(ptl);
 	return 0;
-- 
2.26.3


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

* [CI 02/44] dma-mapping: provide an interface to allocate IOVA
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 03/44] dma-mapping: provide callbacks to link/unlink pages to specific IOVA Oak Zeng
                   ` (57 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

From: Leon Romanovsky <leonro@nvidia.com>

Existing .map_page() callback provides two things at the same time:
allocates IOVA and links DMA pages. That combination works great for
most of the callers who use it in control paths, but less effective
in fast paths.

These advanced callers already manage their data in some sort of
database and can perform IOVA allocation in advance, leaving range
linkage operation to be in fast path.

Provide an interface to allocate/deallocate IOVA and next patch
link/unlink DMA ranges to that specific IOVA.

Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
 include/linux/dma-map-ops.h |  3 +++
 include/linux/dma-mapping.h | 20 ++++++++++++++++++++
 kernel/dma/mapping.c        | 30 ++++++++++++++++++++++++++++++
 3 files changed, 53 insertions(+)

diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h
index 02a1c825896b..23e5e2f63a1c 100644
--- a/include/linux/dma-map-ops.h
+++ b/include/linux/dma-map-ops.h
@@ -86,6 +86,9 @@ struct dma_map_ops {
 	size_t (*max_mapping_size)(struct device *dev);
 	size_t (*opt_mapping_size)(void);
 	unsigned long (*get_merge_boundary)(struct device *dev);
+
+	dma_addr_t (*alloc_iova)(struct device *dev, size_t size);
+	void (*free_iova)(struct device *dev, dma_addr_t dma_addr, size_t size);
 };
 
 #ifdef CONFIG_DMA_OPS
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index f693aafe221f..34a3b6420606 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -91,6 +91,16 @@ static inline void debug_dma_map_single(struct device *dev, const void *addr,
 }
 #endif /* CONFIG_DMA_API_DEBUG */
 
+struct dma_iova_attrs {
+	/* OUT field */
+	dma_addr_t addr;
+	/* IN fields */
+	struct device *dev;
+	size_t size;
+	enum dma_data_direction dir;
+	unsigned long attrs;
+};
+
 #ifdef CONFIG_HAS_DMA
 static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
 {
@@ -101,6 +111,9 @@ static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
 	return 0;
 }
 
+int dma_alloc_iova(struct dma_iova_attrs *iova);
+void dma_free_iova(struct dma_iova_attrs *iova);
+
 dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page,
 		size_t offset, size_t size, enum dma_data_direction dir,
 		unsigned long attrs);
@@ -150,6 +163,13 @@ void dma_vunmap_noncontiguous(struct device *dev, void *vaddr);
 int dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
 		size_t size, struct sg_table *sgt);
 #else /* CONFIG_HAS_DMA */
+static inline int dma_alloc_iova(struct dma_iova_attrs *iova)
+{
+	return -EOPNOTSUPP;
+}
+static inline void dma_free_iova(struct dma_iova_attrs *iova)
+{
+}
 static inline dma_addr_t dma_map_page_attrs(struct device *dev,
 		struct page *page, size_t offset, size_t size,
 		enum dma_data_direction dir, unsigned long attrs)
diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
index 81de84318ccc..4d14637d186b 100644
--- a/kernel/dma/mapping.c
+++ b/kernel/dma/mapping.c
@@ -183,6 +183,36 @@ void dma_unmap_page_attrs(struct device *dev, dma_addr_t addr, size_t size,
 }
 EXPORT_SYMBOL(dma_unmap_page_attrs);
 
+int dma_alloc_iova(struct dma_iova_attrs *iova)
+{
+	struct device *dev = iova->dev;
+	const struct dma_map_ops *ops = get_dma_ops(dev);
+
+	if (dma_map_direct(dev, ops) || !ops->alloc_iova) {
+		iova->addr = 0;
+		return 0;
+	}
+
+	iova->addr = ops->alloc_iova(dev, iova->size);
+	if (dma_mapping_error(dev, iova->addr))
+		return -ENOMEM;
+
+	return 0;
+}
+EXPORT_SYMBOL(dma_alloc_iova);
+
+void dma_free_iova(struct dma_iova_attrs *iova)
+{
+	struct device *dev = iova->dev;
+	const struct dma_map_ops *ops = get_dma_ops(dev);
+
+	if (dma_map_direct(dev, ops) || !ops->free_iova)
+		return;
+
+	ops->free_iova(dev, iova->addr, iova->size);
+}
+EXPORT_SYMBOL(dma_free_iova);
+
 static int __dma_map_sg_attrs(struct device *dev, struct scatterlist *sg,
 	 int nents, enum dma_data_direction dir, unsigned long attrs)
 {
-- 
2.26.3


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

* [CI 03/44] dma-mapping: provide callbacks to link/unlink pages to specific IOVA
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
  2024-06-14 21:57 ` [CI 02/44] dma-mapping: provide an interface to allocate IOVA Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 04/44] iommu/dma: Provide an interface to allow preallocate IOVA Oak Zeng
                   ` (56 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

From: Leon Romanovsky <leonro@nvidia.com>

Introduce new DMA link/unlink API to provide a way for advanced users
to directly map/unmap pages without ned to allocate IOVA on every map
call.

Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
 include/linux/dma-map-ops.h | 10 +++++++
 include/linux/dma-mapping.h | 13 +++++++++
 kernel/dma/debug.h          |  2 ++
 kernel/dma/direct.h         |  3 ++
 kernel/dma/mapping.c        | 57 +++++++++++++++++++++++++++++++++++++
 5 files changed, 85 insertions(+)

diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h
index 23e5e2f63a1c..292326ac5a12 100644
--- a/include/linux/dma-map-ops.h
+++ b/include/linux/dma-map-ops.h
@@ -89,6 +89,13 @@ struct dma_map_ops {
 
 	dma_addr_t (*alloc_iova)(struct device *dev, size_t size);
 	void (*free_iova)(struct device *dev, dma_addr_t dma_addr, size_t size);
+	dma_addr_t (*link_range)(struct device *dev, struct page *page,
+				 unsigned long offset, dma_addr_t addr,
+				 size_t size, enum dma_data_direction dir,
+				 unsigned long attrs);
+	void (*unlink_range)(struct device *dev, dma_addr_t dma_handle,
+			     size_t size, enum dma_data_direction dir,
+			     unsigned long attrs);
 };
 
 #ifdef CONFIG_DMA_OPS
@@ -440,6 +447,9 @@ bool arch_dma_unmap_sg_direct(struct device *dev, struct scatterlist *sg,
 #define arch_dma_unmap_sg_direct(d, s, n)	(false)
 #endif
 
+#define arch_dma_link_range_direct arch_dma_map_page_direct
+#define arch_dma_unlink_range_direct arch_dma_unmap_page_direct
+
 #ifdef CONFIG_ARCH_HAS_SETUP_DMA_OPS
 void arch_setup_dma_ops(struct device *dev, bool coherent);
 #else
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index 34a3b6420606..223b5477e36e 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -113,6 +113,9 @@ static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
 
 int dma_alloc_iova(struct dma_iova_attrs *iova);
 void dma_free_iova(struct dma_iova_attrs *iova);
+dma_addr_t dma_link_range(struct page *page, unsigned long offset,
+			  struct dma_iova_attrs *iova, dma_addr_t dma_offset);
+void dma_unlink_range(struct dma_iova_attrs *iova, dma_addr_t dma_offset);
 
 dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page,
 		size_t offset, size_t size, enum dma_data_direction dir,
@@ -170,6 +173,16 @@ static inline int dma_alloc_iova(struct dma_iova_attrs *iova)
 static inline void dma_free_iova(struct dma_iova_attrs *iova)
 {
 }
+static inline dma_addr_t dma_link_range(struct page *page, unsigned long offset,
+					struct dma_iova_attrs *iova,
+					dma_addr_t dma_offset)
+{
+	return DMA_MAPPING_ERROR;
+}
+static inline void dma_unlink_range(struct dma_iova_attrs *iova,
+				    dma_addr_t dma_offset)
+{
+}
 static inline dma_addr_t dma_map_page_attrs(struct device *dev,
 		struct page *page, size_t offset, size_t size,
 		enum dma_data_direction dir, unsigned long attrs)
diff --git a/kernel/dma/debug.h b/kernel/dma/debug.h
index f525197d3cae..3d529f355c6d 100644
--- a/kernel/dma/debug.h
+++ b/kernel/dma/debug.h
@@ -127,4 +127,6 @@ static inline void debug_dma_sync_sg_for_device(struct device *dev,
 {
 }
 #endif /* CONFIG_DMA_API_DEBUG */
+#define debug_dma_link_range debug_dma_map_page
+#define debug_dma_unlink_range debug_dma_unmap_page
 #endif /* _KERNEL_DMA_DEBUG_H */
diff --git a/kernel/dma/direct.h b/kernel/dma/direct.h
index 18d346118fe8..1c30e1cd607a 100644
--- a/kernel/dma/direct.h
+++ b/kernel/dma/direct.h
@@ -125,4 +125,7 @@ static inline void dma_direct_unmap_page(struct device *dev, dma_addr_t addr,
 		swiotlb_tbl_unmap_single(dev, phys, size, dir,
 					 attrs | DMA_ATTR_SKIP_CPU_SYNC);
 }
+
+#define dma_direct_link_range dma_direct_map_page
+#define dma_direct_unlink_range dma_direct_unmap_page
 #endif /* _KERNEL_DMA_DIRECT_H */
diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
index 4d14637d186b..787d7516434f 100644
--- a/kernel/dma/mapping.c
+++ b/kernel/dma/mapping.c
@@ -213,6 +213,63 @@ void dma_free_iova(struct dma_iova_attrs *iova)
 }
 EXPORT_SYMBOL(dma_free_iova);
 
+/**
+ * dma_link_range - Link a physical page to DMA address
+ * @page: The page to be mapped
+ * @offset: The offset within the page
+ * @iova: Preallocated IOVA attributes
+ * @dma_offset: DMA offset form which this page needs to be linked
+ *
+ * dma_alloc_iova() allocates IOVA based on the size specified by ther user in
+ * iova->size. Call this function after IOVA allocation to link @page from
+ * @offset to get the DMA address. Note that very first call to this function
+ * will have @dma_offset set to 0 in the IOVA space allocated from
+ * dma_alloc_iova(). For subsequent calls to this function on same @iova,
+ * @dma_offset needs to be advanced by the caller with the size of previous
+ * page that was linked + DMA address returned for the previous page that was
+ * linked by this function.
+ */
+dma_addr_t dma_link_range(struct page *page, unsigned long offset,
+			  struct dma_iova_attrs *iova, dma_addr_t dma_offset)
+{
+	struct device *dev = iova->dev;
+	size_t size = iova->size;
+	enum dma_data_direction dir = iova->dir;
+	unsigned long attrs = iova->attrs;
+	dma_addr_t addr = iova->addr + dma_offset;
+	const struct dma_map_ops *ops = get_dma_ops(dev);
+
+	if (dma_map_direct(dev, ops) ||
+	    arch_dma_link_range_direct(dev, page_to_phys(page) + offset + size))
+		addr = dma_direct_link_range(dev, page, offset, size, dir, attrs);
+	else if (ops->link_range)
+		addr = ops->link_range(dev, page, offset, addr, size, dir, attrs);
+
+	kmsan_handle_dma(page, offset, size, dir);
+	debug_dma_link_range(dev, page, offset, size, dir, addr, attrs);
+	return addr;
+}
+EXPORT_SYMBOL(dma_link_range);
+
+void dma_unlink_range(struct dma_iova_attrs *iova, dma_addr_t dma_offset)
+{
+	struct device *dev = iova->dev;
+	size_t size = iova->size;
+	enum dma_data_direction dir = iova->dir;
+	unsigned long attrs = iova->attrs;
+	dma_addr_t addr = iova->addr + dma_offset;
+	const struct dma_map_ops *ops = get_dma_ops(dev);
+
+	if (dma_map_direct(dev, ops) ||
+	    arch_dma_unlink_range_direct(dev, addr + size))
+		dma_direct_unlink_range(dev, addr, size, dir, attrs);
+	else if (ops->unlink_range)
+		ops->unlink_range(dev, addr, size, dir, attrs);
+
+	debug_dma_unlink_range(dev, addr, size, dir);
+}
+EXPORT_SYMBOL(dma_unlink_range);
+
 static int __dma_map_sg_attrs(struct device *dev, struct scatterlist *sg,
 	 int nents, enum dma_data_direction dir, unsigned long attrs)
 {
-- 
2.26.3


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

* [CI 04/44] iommu/dma: Provide an interface to allow preallocate IOVA
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
  2024-06-14 21:57 ` [CI 02/44] dma-mapping: provide an interface to allocate IOVA Oak Zeng
  2024-06-14 21:57 ` [CI 03/44] dma-mapping: provide callbacks to link/unlink pages to specific IOVA Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 05/44] iommu/dma: Prepare map/unmap page functions to receive IOVA Oak Zeng
                   ` (55 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

From: Leon Romanovsky <leonro@nvidia.com>

Separate IOVA allocation to dedicated callback so it will allow
cache of IOVA and reuse it in fast paths for devices which support
ODP (on-demand-paging) mechanism.

Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
 drivers/iommu/dma-iommu.c | 50 +++++++++++++++++++++++++++++----------
 1 file changed, 38 insertions(+), 12 deletions(-)

diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
index 43520e7275cc..9ce8298047f5 100644
--- a/drivers/iommu/dma-iommu.c
+++ b/drivers/iommu/dma-iommu.c
@@ -357,7 +357,7 @@ int iommu_dma_init_fq(struct iommu_domain *domain)
 	atomic_set(&cookie->fq_timer_on, 0);
 	/*
 	 * Prevent incomplete fq state being observable. Pairs with path from
-	 * __iommu_dma_unmap() through iommu_dma_free_iova() to queue_iova()
+	 * __iommu_dma_unmap() through __iommu_dma_free_iova() to queue_iova()
 	 */
 	smp_wmb();
 	WRITE_ONCE(cookie->fq_domain, domain);
@@ -758,7 +758,7 @@ static int dma_info_to_prot(enum dma_data_direction dir, bool coherent,
 	}
 }
 
-static dma_addr_t iommu_dma_alloc_iova(struct iommu_domain *domain,
+static dma_addr_t __iommu_dma_alloc_iova(struct iommu_domain *domain,
 		size_t size, u64 dma_limit, struct device *dev)
 {
 	struct iommu_dma_cookie *cookie = domain->iova_cookie;
@@ -804,7 +804,7 @@ static dma_addr_t iommu_dma_alloc_iova(struct iommu_domain *domain,
 	return (dma_addr_t)iova << shift;
 }
 
-static void iommu_dma_free_iova(struct iommu_dma_cookie *cookie,
+static void __iommu_dma_free_iova(struct iommu_dma_cookie *cookie,
 		dma_addr_t iova, size_t size, struct iommu_iotlb_gather *gather)
 {
 	struct iova_domain *iovad = &cookie->iovad;
@@ -841,7 +841,7 @@ static void __iommu_dma_unmap(struct device *dev, dma_addr_t dma_addr,
 
 	if (!iotlb_gather.queued)
 		iommu_iotlb_sync(domain, &iotlb_gather);
-	iommu_dma_free_iova(cookie, dma_addr, size, &iotlb_gather);
+	__iommu_dma_free_iova(cookie, dma_addr, size, &iotlb_gather);
 }
 
 static dma_addr_t __iommu_dma_map(struct device *dev, phys_addr_t phys,
@@ -864,12 +864,12 @@ static dma_addr_t __iommu_dma_map(struct device *dev, phys_addr_t phys,
 
 	size = iova_align(iovad, size + iova_off);
 
-	iova = iommu_dma_alloc_iova(domain, size, dma_mask, dev);
+	iova = __iommu_dma_alloc_iova(domain, size, dma_mask, dev);
 	if (!iova)
 		return DMA_MAPPING_ERROR;
 
 	if (iommu_map(domain, iova, phys - iova_off, size, prot, GFP_ATOMIC)) {
-		iommu_dma_free_iova(cookie, iova, size, NULL);
+		__iommu_dma_free_iova(cookie, iova, size, NULL);
 		return DMA_MAPPING_ERROR;
 	}
 	return iova + iova_off;
@@ -973,7 +973,7 @@ static struct page **__iommu_dma_alloc_noncontiguous(struct device *dev,
 		return NULL;
 
 	size = iova_align(iovad, size);
-	iova = iommu_dma_alloc_iova(domain, size, dev->coherent_dma_mask, dev);
+	iova = __iommu_dma_alloc_iova(domain, size, dev->coherent_dma_mask, dev);
 	if (!iova)
 		goto out_free_pages;
 
@@ -1007,7 +1007,7 @@ static struct page **__iommu_dma_alloc_noncontiguous(struct device *dev,
 out_free_sg:
 	sg_free_table(sgt);
 out_free_iova:
-	iommu_dma_free_iova(cookie, iova, size, NULL);
+	__iommu_dma_free_iova(cookie, iova, size, NULL);
 out_free_pages:
 	__iommu_dma_free_pages(pages, count);
 	return NULL;
@@ -1442,7 +1442,7 @@ static int iommu_dma_map_sg(struct device *dev, struct scatterlist *sg,
 	if (!iova_len)
 		return __finalise_sg(dev, sg, nents, 0);
 
-	iova = iommu_dma_alloc_iova(domain, iova_len, dma_get_mask(dev), dev);
+	iova = __iommu_dma_alloc_iova(domain, iova_len, dma_get_mask(dev), dev);
 	if (!iova) {
 		ret = -ENOMEM;
 		goto out_restore_sg;
@@ -1459,7 +1459,7 @@ static int iommu_dma_map_sg(struct device *dev, struct scatterlist *sg,
 	return __finalise_sg(dev, sg, nents, iova);
 
 out_free_iova:
-	iommu_dma_free_iova(cookie, iova, iova_len, NULL);
+	__iommu_dma_free_iova(cookie, iova, iova_len, NULL);
 out_restore_sg:
 	__invalidate_sg(sg, nents);
 out:
@@ -1720,6 +1720,30 @@ static size_t iommu_dma_max_mapping_size(struct device *dev)
 	return SIZE_MAX;
 }
 
+static dma_addr_t iommu_dma_alloc_iova(struct device *dev, size_t size)
+{
+	struct iommu_domain *domain = iommu_get_dma_domain(dev);
+	struct iommu_dma_cookie *cookie = domain->iova_cookie;
+	struct iova_domain *iovad = &cookie->iovad;
+	dma_addr_t dma_mask = dma_get_mask(dev);
+
+	size = iova_align(iovad, size);
+	return __iommu_dma_alloc_iova(domain, size, dma_mask, dev);
+}
+
+static void iommu_dma_free_iova(struct device *dev, dma_addr_t iova,
+				size_t size)
+{
+	struct iommu_domain *domain = iommu_get_dma_domain(dev);
+	struct iommu_dma_cookie *cookie = domain->iova_cookie;
+	struct iova_domain *iovad = &cookie->iovad;
+	struct iommu_iotlb_gather iotlb_gather;
+
+	size = iova_align(iovad, size);
+	iommu_iotlb_gather_init(&iotlb_gather);
+	__iommu_dma_free_iova(cookie, iova, size, &iotlb_gather);
+}
+
 static const struct dma_map_ops iommu_dma_ops = {
 	.flags			= DMA_F_PCI_P2PDMA_SUPPORTED |
 				  DMA_F_CAN_SKIP_SYNC,
@@ -1744,6 +1768,8 @@ static const struct dma_map_ops iommu_dma_ops = {
 	.get_merge_boundary	= iommu_dma_get_merge_boundary,
 	.opt_mapping_size	= iommu_dma_opt_mapping_size,
 	.max_mapping_size       = iommu_dma_max_mapping_size,
+	.alloc_iova		= iommu_dma_alloc_iova,
+	.free_iova		= iommu_dma_free_iova,
 };
 
 void iommu_setup_dma_ops(struct device *dev)
@@ -1786,7 +1812,7 @@ static struct iommu_dma_msi_page *iommu_dma_get_msi_page(struct device *dev,
 	if (!msi_page)
 		return NULL;
 
-	iova = iommu_dma_alloc_iova(domain, size, dma_get_mask(dev), dev);
+	iova = __iommu_dma_alloc_iova(domain, size, dma_get_mask(dev), dev);
 	if (!iova)
 		goto out_free_page;
 
@@ -1800,7 +1826,7 @@ static struct iommu_dma_msi_page *iommu_dma_get_msi_page(struct device *dev,
 	return msi_page;
 
 out_free_iova:
-	iommu_dma_free_iova(cookie, iova, size, NULL);
+	__iommu_dma_free_iova(cookie, iova, size, NULL);
 out_free_page:
 	kfree(msi_page);
 	return NULL;
-- 
2.26.3


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

* [CI 05/44] iommu/dma: Prepare map/unmap page functions to receive IOVA
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (2 preceding siblings ...)
  2024-06-14 21:57 ` [CI 04/44] iommu/dma: Provide an interface to allow preallocate IOVA Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 06/44] iommu/dma: Implement link/unlink page callbacks Oak Zeng
                   ` (54 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

From: Leon Romanovsky <leonro@nvidia.com>

Extend the existing map_page/unmap_page function implementations to get
preallocated IOVA. In such case, the IOVA allocation needs to be
skipped, but rest of the code stays the same.

Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
 drivers/iommu/dma-iommu.c | 68 ++++++++++++++++++++++++++-------------
 1 file changed, 45 insertions(+), 23 deletions(-)

diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
index 9ce8298047f5..dbef2581a98c 100644
--- a/drivers/iommu/dma-iommu.c
+++ b/drivers/iommu/dma-iommu.c
@@ -822,7 +822,7 @@ static void __iommu_dma_free_iova(struct iommu_dma_cookie *cookie,
 }
 
 static void __iommu_dma_unmap(struct device *dev, dma_addr_t dma_addr,
-		size_t size)
+			      size_t size, bool free_iova)
 {
 	struct iommu_domain *domain = iommu_get_dma_domain(dev);
 	struct iommu_dma_cookie *cookie = domain->iova_cookie;
@@ -841,17 +841,19 @@ static void __iommu_dma_unmap(struct device *dev, dma_addr_t dma_addr,
 
 	if (!iotlb_gather.queued)
 		iommu_iotlb_sync(domain, &iotlb_gather);
-	__iommu_dma_free_iova(cookie, dma_addr, size, &iotlb_gather);
+	if (free_iova)
+		__iommu_dma_free_iova(cookie, dma_addr, size, &iotlb_gather);
 }
 
 static dma_addr_t __iommu_dma_map(struct device *dev, phys_addr_t phys,
-		size_t size, int prot, u64 dma_mask)
+				  dma_addr_t iova, size_t size, int prot,
+				  u64 dma_mask)
 {
 	struct iommu_domain *domain = iommu_get_dma_domain(dev);
 	struct iommu_dma_cookie *cookie = domain->iova_cookie;
 	struct iova_domain *iovad = &cookie->iovad;
 	size_t iova_off = iova_offset(iovad, phys);
-	dma_addr_t iova;
+	bool no_iova = !iova;
 
 	if (static_branch_unlikely(&iommu_deferred_attach_enabled) &&
 	    iommu_deferred_attach(dev, domain))
@@ -864,12 +866,14 @@ static dma_addr_t __iommu_dma_map(struct device *dev, phys_addr_t phys,
 
 	size = iova_align(iovad, size + iova_off);
 
-	iova = __iommu_dma_alloc_iova(domain, size, dma_mask, dev);
+	if (no_iova)
+		iova = __iommu_dma_alloc_iova(domain, size, dma_mask, dev);
 	if (!iova)
 		return DMA_MAPPING_ERROR;
 
 	if (iommu_map(domain, iova, phys - iova_off, size, prot, GFP_ATOMIC)) {
-		__iommu_dma_free_iova(cookie, iova, size, NULL);
+		if (no_iova)
+			__iommu_dma_free_iova(cookie, iova, size, NULL);
 		return DMA_MAPPING_ERROR;
 	}
 	return iova + iova_off;
@@ -1034,7 +1038,7 @@ static void *iommu_dma_alloc_remap(struct device *dev, size_t size,
 	return vaddr;
 
 out_unmap:
-	__iommu_dma_unmap(dev, *dma_handle, size);
+	__iommu_dma_unmap(dev, *dma_handle, size, true);
 	__iommu_dma_free_pages(pages, PAGE_ALIGN(size) >> PAGE_SHIFT);
 	return NULL;
 }
@@ -1063,7 +1067,7 @@ static void iommu_dma_free_noncontiguous(struct device *dev, size_t size,
 {
 	struct dma_sgt_handle *sh = sgt_handle(sgt);
 
-	__iommu_dma_unmap(dev, sgt->sgl->dma_address, size);
+	__iommu_dma_unmap(dev, sgt->sgl->dma_address, size, true);
 	__iommu_dma_free_pages(sh->pages, PAGE_ALIGN(size) >> PAGE_SHIFT);
 	sg_free_table(&sh->sgt);
 	kfree(sh);
@@ -1134,9 +1138,11 @@ static void iommu_dma_sync_sg_for_device(struct device *dev,
 			arch_sync_dma_for_device(sg_phys(sg), sg->length, dir);
 }
 
-static dma_addr_t iommu_dma_map_page(struct device *dev, struct page *page,
-		unsigned long offset, size_t size, enum dma_data_direction dir,
-		unsigned long attrs)
+static dma_addr_t __iommu_dma_map_pages(struct device *dev, struct page *page,
+					unsigned long offset, dma_addr_t iova,
+					size_t size,
+					enum dma_data_direction dir,
+					unsigned long attrs)
 {
 	phys_addr_t phys = page_to_phys(page) + offset;
 	bool coherent = dev_is_dma_coherent(dev);
@@ -1144,7 +1150,7 @@ static dma_addr_t iommu_dma_map_page(struct device *dev, struct page *page,
 	struct iommu_domain *domain = iommu_get_dma_domain(dev);
 	struct iommu_dma_cookie *cookie = domain->iova_cookie;
 	struct iova_domain *iovad = &cookie->iovad;
-	dma_addr_t iova, dma_mask = dma_get_mask(dev);
+	dma_addr_t addr, dma_mask = dma_get_mask(dev);
 
 	/*
 	 * If both the physical buffer start address and size are
@@ -1188,14 +1194,23 @@ static dma_addr_t iommu_dma_map_page(struct device *dev, struct page *page,
 	if (!coherent && !(attrs & DMA_ATTR_SKIP_CPU_SYNC))
 		arch_sync_dma_for_device(phys, size, dir);
 
-	iova = __iommu_dma_map(dev, phys, size, prot, dma_mask);
-	if (iova == DMA_MAPPING_ERROR && is_swiotlb_buffer(dev, phys))
+	addr = __iommu_dma_map(dev, phys, iova, size, prot, dma_mask);
+	if (addr == DMA_MAPPING_ERROR && is_swiotlb_buffer(dev, phys))
 		swiotlb_tbl_unmap_single(dev, phys, size, dir, attrs);
-	return iova;
+	return addr;
 }
 
-static void iommu_dma_unmap_page(struct device *dev, dma_addr_t dma_handle,
-		size_t size, enum dma_data_direction dir, unsigned long attrs)
+static dma_addr_t iommu_dma_map_page(struct device *dev, struct page *page,
+				     unsigned long offset, size_t size,
+				     enum dma_data_direction dir,
+				     unsigned long attrs)
+{
+	return __iommu_dma_map_pages(dev, page, offset, 0, size, dir, attrs);
+}
+
+static void __iommu_dma_unmap_pages(struct device *dev, dma_addr_t dma_handle,
+				    size_t size, enum dma_data_direction dir,
+				    unsigned long attrs, bool free_iova)
 {
 	struct iommu_domain *domain = iommu_get_dma_domain(dev);
 	phys_addr_t phys;
@@ -1207,12 +1222,19 @@ static void iommu_dma_unmap_page(struct device *dev, dma_addr_t dma_handle,
 	if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC) && !dev_is_dma_coherent(dev))
 		arch_sync_dma_for_cpu(phys, size, dir);
 
-	__iommu_dma_unmap(dev, dma_handle, size);
+	__iommu_dma_unmap(dev, dma_handle, size, free_iova);
 
 	if (unlikely(is_swiotlb_buffer(dev, phys)))
 		swiotlb_tbl_unmap_single(dev, phys, size, dir, attrs);
 }
 
+static void iommu_dma_unmap_page(struct device *dev, dma_addr_t dma_handle,
+				 size_t size, enum dma_data_direction dir,
+				 unsigned long attrs)
+{
+	__iommu_dma_unmap_pages(dev, dma_handle, size, dir, attrs, true);
+}
+
 /*
  * Prepare a successfully-mapped scatterlist to give back to the caller.
  *
@@ -1515,13 +1537,13 @@ static void iommu_dma_unmap_sg(struct device *dev, struct scatterlist *sg,
 	}
 
 	if (end)
-		__iommu_dma_unmap(dev, start, end - start);
+		__iommu_dma_unmap(dev, start, end - start, true);
 }
 
 static dma_addr_t iommu_dma_map_resource(struct device *dev, phys_addr_t phys,
 		size_t size, enum dma_data_direction dir, unsigned long attrs)
 {
-	return __iommu_dma_map(dev, phys, size,
+	return __iommu_dma_map(dev, phys, 0, size,
 			dma_info_to_prot(dir, false, attrs) | IOMMU_MMIO,
 			dma_get_mask(dev));
 }
@@ -1529,7 +1551,7 @@ static dma_addr_t iommu_dma_map_resource(struct device *dev, phys_addr_t phys,
 static void iommu_dma_unmap_resource(struct device *dev, dma_addr_t handle,
 		size_t size, enum dma_data_direction dir, unsigned long attrs)
 {
-	__iommu_dma_unmap(dev, handle, size);
+	__iommu_dma_unmap(dev, handle, size, true);
 }
 
 static void __iommu_dma_free(struct device *dev, size_t size, void *cpu_addr)
@@ -1566,7 +1588,7 @@ static void __iommu_dma_free(struct device *dev, size_t size, void *cpu_addr)
 static void iommu_dma_free(struct device *dev, size_t size, void *cpu_addr,
 		dma_addr_t handle, unsigned long attrs)
 {
-	__iommu_dma_unmap(dev, handle, size);
+	__iommu_dma_unmap(dev, handle, size, true);
 	__iommu_dma_free(dev, size, cpu_addr);
 }
 
@@ -1632,7 +1654,7 @@ static void *iommu_dma_alloc(struct device *dev, size_t size,
 	if (!cpu_addr)
 		return NULL;
 
-	*handle = __iommu_dma_map(dev, page_to_phys(page), size, ioprot,
+	*handle = __iommu_dma_map(dev, page_to_phys(page), 0, size, ioprot,
 			dev->coherent_dma_mask);
 	if (*handle == DMA_MAPPING_ERROR) {
 		__iommu_dma_free(dev, size, cpu_addr);
-- 
2.26.3


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

* [CI 06/44] iommu/dma: Implement link/unlink page callbacks
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (3 preceding siblings ...)
  2024-06-14 21:57 ` [CI 05/44] iommu/dma: Prepare map/unmap page functions to receive IOVA Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 07/44] mm: Add an empty implementation of zone_device_page_init Oak Zeng
                   ` (53 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

From: Leon Romanovsky <leonro@nvidia.com>

Add an implementation of link/unlink interface to perform in map/unmap
pages in fast patch for pre-allocated IOVA.

Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
 drivers/iommu/dma-iommu.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
index dbef2581a98c..ddf402e7c8a3 100644
--- a/drivers/iommu/dma-iommu.c
+++ b/drivers/iommu/dma-iommu.c
@@ -1766,6 +1766,21 @@ static void iommu_dma_free_iova(struct device *dev, dma_addr_t iova,
 	__iommu_dma_free_iova(cookie, iova, size, &iotlb_gather);
 }
 
+static dma_addr_t iommu_dma_link_range(struct device *dev, struct page *page,
+				       unsigned long offset, dma_addr_t iova,
+				       size_t size, enum dma_data_direction dir,
+				       unsigned long attrs)
+{
+	return __iommu_dma_map_pages(dev, page, offset, iova, size, dir, attrs);
+}
+
+static void iommu_dma_unlink_range(struct device *dev, dma_addr_t addr,
+				   size_t size, enum dma_data_direction dir,
+				   unsigned long attrs)
+{
+	__iommu_dma_unmap_pages(dev, addr, size, dir, attrs, false);
+}
+
 static const struct dma_map_ops iommu_dma_ops = {
 	.flags			= DMA_F_PCI_P2PDMA_SUPPORTED |
 				  DMA_F_CAN_SKIP_SYNC,
@@ -1792,6 +1807,8 @@ static const struct dma_map_ops iommu_dma_ops = {
 	.max_mapping_size       = iommu_dma_max_mapping_size,
 	.alloc_iova		= iommu_dma_alloc_iova,
 	.free_iova		= iommu_dma_free_iova,
+	.link_range		= iommu_dma_link_range,
+	.unlink_range		= iommu_dma_unlink_range,
 };
 
 void iommu_setup_dma_ops(struct device *dev)
-- 
2.26.3


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

* [CI 07/44] mm: Add an empty implementation of zone_device_page_init
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (4 preceding siblings ...)
  2024-06-14 21:57 ` [CI 06/44] iommu/dma: Implement link/unlink page callbacks Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 08/44] drm: Move GPUVA_START/LAST to drm_gpuvm.h Oak Zeng
                   ` (52 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

Add an empty implementation of zone_device_page_init when
CONFIG_ZONE_DEVICE is not enabled and print a warning message
in this empty implementation.

This is to fix some kunit test as showed below. On some architecture
such as um, ZONE_DEVICE can't be enabled and calling to
zone_device_page_int would trigger below error:

[szeng@szeng-desk kernel]$ ./tools/testing/kunit/kunit.py run --kunitconfig ./drivers/gpu/drm/xe/.kunitconfig
[11:42:42] Configuring KUnit Kernel ...
[11:42:42] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=24
ERROR:root:../drivers/gpu/drm/./drm_svm.c: In function ‘__drm_svm_init_device_pages’:
../drivers/gpu/drm/./drm_svm.c:978:3: error: implicit declaration of function ‘zone_device_page_init’ [-Werror=implicit-function-declaration]
  978 |   zone_device_page_init(page);
      |   ^~~~~~~~~~~~~~~~~~~~~

Cc: Alistair Popple <apopple@nvidia.com>
Cc: Michael J. Ruhl <michael.j.ruhl@intel.com>
Cc: Lucas Demarchi <lucas.demarchi@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 include/linux/memremap.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/include/linux/memremap.h b/include/linux/memremap.h
index 3f7143ade32c..bf7727915a68 100644
--- a/include/linux/memremap.h
+++ b/include/linux/memremap.h
@@ -199,6 +199,16 @@ bool pgmap_pfn_valid(struct dev_pagemap *pgmap, unsigned long pfn);
 
 unsigned long memremap_compat_align(void);
 #else
+static inline void zone_device_page_init(struct page *page)
+{
+	/*
+	 * Fail attempts to call zone_device_page_init without
+	 * ZONE_DEVICE support enabled.
+	 */
+	WARN_ON_ONCE(1);
+	return;
+}
+
 static inline void *devm_memremap_pages(struct device *dev,
 		struct dev_pagemap *pgmap)
 {
-- 
2.26.3


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

* [CI 08/44] drm: Move GPUVA_START/LAST to drm_gpuvm.h
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (5 preceding siblings ...)
  2024-06-14 21:57 ` [CI 07/44] mm: Add an empty implementation of zone_device_page_init Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 09/44] drm/svm: Mark drm_gpuvm to participate SVM Oak Zeng
                   ` (51 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

Move them to .h file so they can be used outside of drm_gpuvm.c.
Also add a GPUVA_END micro.

Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/drm_gpuvm.c | 3 ---
 include/drm/drm_gpuvm.h     | 4 ++++
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index f9eb56f24bef..7402ed6f1d33 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -867,9 +867,6 @@ __drm_gpuvm_bo_list_del(struct drm_gpuvm *gpuvm, spinlock_t *lock,
 
 #define to_drm_gpuva(__node)	container_of((__node), struct drm_gpuva, rb.node)
 
-#define GPUVA_START(node) ((node)->va.addr)
-#define GPUVA_LAST(node) ((node)->va.addr + (node)->va.range - 1)
-
 /* We do not actually use drm_gpuva_it_next(), tell the compiler to not complain
  * about this.
  */
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index 00d4e43b76b6..429dc0d82eba 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -38,6 +38,10 @@ struct drm_gpuvm;
 struct drm_gpuvm_bo;
 struct drm_gpuvm_ops;
 
+#define GPUVA_START(node) ((node)->va.addr)
+#define GPUVA_LAST(node) ((node)->va.addr + (node)->va.range - 1)
+#define GPUVA_END(node) ((node)->va.addr + (node)->va.range)
+
 /**
  * enum drm_gpuva_flags - flags for struct drm_gpuva
  */
-- 
2.26.3


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

* [CI 09/44] drm/svm: Mark drm_gpuvm to participate SVM
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (6 preceding siblings ...)
  2024-06-14 21:57 ` [CI 08/44] drm: Move GPUVA_START/LAST to drm_gpuvm.h Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 10/44] drm/svm: introduce drm_mem_region concept Oak Zeng
                   ` (50 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

A mm_struct field is added to drm_gpuvm. Also add a parameter to
drm_gpuvm_init to say whether this gpuvm participate svm (shared
virtual memory with CPU process). Under SVM, CPU program and GPU
program share one process virtual address space.

Cc: Dave Airlie <airlied@redhat.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Felix Kuehling <felix.kuehling@amd.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: <dri-devel@lists.freedesktop.org>
Suggested-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/drm_gpuvm.c            | 7 ++++++-
 drivers/gpu/drm/nouveau/nouveau_uvmm.c | 2 +-
 drivers/gpu/drm/xe/xe_vm.c             | 2 +-
 include/drm/drm_gpuvm.h                | 8 +++++++-
 4 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index 7402ed6f1d33..5f246ca472a8 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -984,6 +984,8 @@ EXPORT_SYMBOL_GPL(drm_gpuvm_resv_object_alloc);
  * @reserve_offset: the start of the kernel reserved GPU VA area
  * @reserve_range: the size of the kernel reserved GPU VA area
  * @ops: &drm_gpuvm_ops called on &drm_gpuvm_sm_map / &drm_gpuvm_sm_unmap
+ * @participate_svm: whether this gpuvm participat shared virtual memory
+ * with CPU mm
  *
  * The &drm_gpuvm must be initialized with this function before use.
  *
@@ -997,7 +999,7 @@ drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 	       struct drm_gem_object *r_obj,
 	       u64 start_offset, u64 range,
 	       u64 reserve_offset, u64 reserve_range,
-	       const struct drm_gpuvm_ops *ops)
+	       const struct drm_gpuvm_ops *ops, bool participate_svm)
 {
 	gpuvm->rb.tree = RB_ROOT_CACHED;
 	INIT_LIST_HEAD(&gpuvm->rb.list);
@@ -1016,6 +1018,9 @@ drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 	gpuvm->drm = drm;
 	gpuvm->r_obj = r_obj;
 
+	if (participate_svm)
+		gpuvm->mm = current->mm;
+
 	drm_gem_object_get(r_obj);
 
 	drm_gpuvm_warn_check_overflow(gpuvm, start_offset, range);
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index ee02cd833c5e..0d11f1733e29 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -1861,7 +1861,7 @@ nouveau_uvmm_ioctl_vm_init(struct drm_device *dev,
 		       NOUVEAU_VA_SPACE_END,
 		       init->kernel_managed_addr,
 		       init->kernel_managed_size,
-		       &gpuvm_ops);
+		       &gpuvm_ops, false);
 	/* GPUVM takes care from here on. */
 	drm_gem_object_put(r_obj);
 
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index ffda487653d8..bcb0a38b31ae 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1363,7 +1363,7 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 	}
 
 	drm_gpuvm_init(&vm->gpuvm, "Xe VM", DRM_GPUVM_RESV_PROTECTED, &xe->drm,
-		       vm_resv_obj, 0, vm->size, 0, 0, &gpuvm_ops);
+		       vm_resv_obj, 0, vm->size, 0, 0, &gpuvm_ops, false);
 
 	drm_gem_object_put(vm_resv_obj);
 
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index 429dc0d82eba..838dd7137f07 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -242,6 +242,12 @@ struct drm_gpuvm {
 	 * @drm: the &drm_device this VM lives in
 	 */
 	struct drm_device *drm;
+	/**
+	 * @mm: the process &mm_struct which create this gpuvm.
+	 * This is only used for shared virtual memory where virtual
+	 * address space is shared b/t CPU and GPU program.
+	 */
+	struct mm_struct *mm;
 
 	/**
 	 * @mm_start: start of the VA space
@@ -342,7 +348,7 @@ void drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 		    struct drm_gem_object *r_obj,
 		    u64 start_offset, u64 range,
 		    u64 reserve_offset, u64 reserve_range,
-		    const struct drm_gpuvm_ops *ops);
+		    const struct drm_gpuvm_ops *ops, bool participate_svm);
 
 /**
  * drm_gpuvm_get() - acquire a struct drm_gpuvm reference
-- 
2.26.3


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

* [CI 10/44] drm/svm: introduce drm_mem_region concept
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (7 preceding siblings ...)
  2024-06-14 21:57 ` [CI 09/44] drm/svm: Mark drm_gpuvm to participate SVM Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 11/44] drm/svm: introduce hmmptr and helper functions Oak Zeng
                   ` (49 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

As its name indicates, a drm_mem_region represent a memory region on
a drm device, e.g., a GPU's HBM memory.

In a memory region, we have address information of this region, from
both CPU (hpa_base) and GPU (dpa_base) perspectives. It has a pagemap
member which is used to memremap memory region to ZONE_DEVICE. It also
has some interfaces for drm to callback driver to allocate/free memory from
this region, migrate data to/from this memory region, get a pagemap
owner of a memory region, and get the drm device which own the memory
region.

This is introduced for system allocator implementation, so the memory
allocation and free interfaces are page based.

A few helper functions are also introduced:
1) drm_mem_region_page_to_dpa: calculate device physical address for
   a page
2) drm_page_to_mem_region: retrieve drm memory region that a page
   resides in

v1: use page parameter instead of pfn (Matt)
Add drm_WARN_ON(mr != drm_page_to_mem_region(page)) (Matt)

Cc: Dave Airlie <airlied@redhat.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Felix Kuehling <felix.kuehling@amd.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: <dri-devel@lists.freedesktop.org>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 include/drm/drm_svm.h | 165 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 165 insertions(+)
 create mode 100644 include/drm/drm_svm.h

diff --git a/include/drm/drm_svm.h b/include/drm/drm_svm.h
new file mode 100644
index 000000000000..ceeba53e12b8
--- /dev/null
+++ b/include/drm/drm_svm.h
@@ -0,0 +1,165 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef _DRM_SVM__
+#define _DRM_SVM__
+
+#include <linux/compiler_types.h>
+#include <linux/memremap.h>
+#include <linux/types.h>
+#include <drm/drm_print.h>
+
+struct dma_fence;
+struct drm_mem_region;
+
+/**
+ * struct migrate_vec - a migration vector is an array of addresses,
+ * each of which represents one page.
+ * When it is system memory page, the address is a dmap-mapped address.
+ * When it is vram page, the address is device physical address.
+ */
+struct migrate_vec {
+	/**
+	 * @mr: the memory region that pages reside.
+	 * When it is system memory page, mr is NULL.
+	 */
+	struct drm_mem_region *mr;
+	/** @npages: number of pages */
+	u64 npages;
+	/**
+	 * @addr_vec: address vector
+	 * each item in addr_vec is an address of a page
+	 */
+	union {
+		/** @dma_addr: dma-mapped address of the page, only valid for system pages*/
+		dma_addr_t dma_addr;
+		/** @dpa: device physical address of the page, only valid for vram page*/
+		phys_addr_t dpa;
+	} addr_vec[];
+};
+
+/**
+ * struct drm_mem_region_ops - memory region operations such as memory allocation
+ * and migration etc. Driver is supposed to implement those operations.
+ */
+struct drm_mem_region_ops {
+	/**
+	 * @drm_mem_region_alloc_pages: Called from drm to driver to allocate
+	 * device VRAM memory
+	 * @mr: The memory region where to allocate device VRAM memory from
+	 * @npages: number of pages to allocate
+	 * @pfns: Used to return pfns of each page
+	 */
+	int (*drm_mem_region_alloc_pages)(struct drm_mem_region *mr,
+					  unsigned long npags, unsigned long *pfns);
+	/**
+	 * @drm_mem_region_free_page: Called from drm to free one page of device memory
+	 * @page: point to the page to free
+	 */
+	void (*drm_mem_region_free_page)(struct page *page);
+	/**
+	 * @drm_mem_region_migrate: Called from drm to migrate memory from src to
+	 * dst. Driver is supposed to implement this function using device hardware
+	 * accelerators such as DMA. DRM subsystem call this function to migrate
+	 * memory b/t system memory and device memory region
+	 *
+	 * @src_vec: source migration vector
+	 * @dst_vec: destination migration vector
+	 */
+	struct dma_fence* (*drm_mem_region_migrate)(struct migrate_vec *src_vec,
+						    struct migrate_vec *dst_vec);
+	/**
+	 * @drm_mem_region_pagemap_owner: Return the pagemap owner of a memory
+	 * region. Pagemap owner is the owner of the device memory. It is
+	 * defined by device driver and opaque to drm layer. Drm uses pagemap
+	 * owner to set up page migrations (see hmm function migrate_vma_setup)
+	 * and range population (see hmm functio hmm_range_fault). Driver has
+	 * the freedom to choose the right pagemap owner.
+	 *
+	 * @mr: the memory region which we want to get the page map owner
+	 */
+	void* (*drm_mem_region_pagemap_owner)(struct drm_mem_region *mr);
+	/**
+	 * @drm_mem_region_get_device: Return the drm device which has this memory
+	 * region.
+	 *
+	 * @mr: the memory region
+	 */
+	struct drm_device* (*drm_mem_region_get_device)(struct drm_mem_region *mr);
+};
+
+/**
+ * struct drm_mem_region - memory region structure
+ * This is used to describe a memory region in drm
+ * device, such as HBM memory or CXL extension memory.
+ *
+ * drm_mem_region is converted from the xe_mem_region
+ * concept. xe_mem_region is moved to drm layer and renamed
+ * as drm_mem_region.
+ *
+ * drm_mem_region is supposed to be embedded in some driver struct such as
+ * "struct xe_tile" or "struct amdgpu_device"
+ */
+struct drm_mem_region {
+	/** @dev_private: device private data which is opaque to drm layer */
+	void *dev_private;
+	/** @dpa_base: This memory regions's DPA (device physical address) base */
+	resource_size_t dpa_base;
+	/**
+	 * @usable_size: usable size of VRAM
+	 *
+	 * Usable size of VRAM excluding reserved portions
+	 * (e.g stolen mem)
+	 */
+	resource_size_t usable_size;
+	/** @pagemap: Used to remap device memory as ZONE_DEVICE */
+	struct dev_pagemap pagemap;
+	/**
+	 * @hpa_base: base host physical address
+	 *
+	 * This is generated when remap device memory as ZONE_DEVICE
+	 */
+	resource_size_t hpa_base;
+	/**
+	 * @mr_ops: memory region operation function pointers
+	 */
+	struct drm_mem_region_ops mr_ops;
+};
+
+/**
+ * drm_page_to_mem_region() - Get a page's memory region
+ *
+ * @page: a struct page pointer pointing to a page in vram memory region
+ */
+static inline struct drm_mem_region *drm_page_to_mem_region(struct page *page)
+{
+	return container_of(page->pgmap, struct drm_mem_region, pagemap);
+}
+
+/**
+ * drm_mem_region_page_to_dpa() - Calculate page's device physical address
+ *
+ * @mr: The memory region that page resides in
+ * @page: page to calculate dpa for
+ *
+ * Returns: the device physical address of the page
+ */
+static inline u64 drm_mem_region_page_to_dpa(struct drm_mem_region *mr, struct page *page)
+{
+	struct drm_device *drm;
+	u64 pfn = page_to_pfn(page);
+	u64 offset;
+	u64 dpa;
+
+	drm = mr->mr_ops.drm_mem_region_get_device(mr);
+	drm_WARN_ON_ONCE(drm, mr != drm_page_to_mem_region(page));
+	drm_WARN_ON_ONCE(drm, (pfn << PAGE_SHIFT) < mr->hpa_base);
+	drm_WARN_ON_ONCE(drm, (pfn << PAGE_SHIFT) >=  mr->hpa_base + mr->usable_size);
+	offset = (pfn << PAGE_SHIFT) - mr->hpa_base;
+	dpa = mr->dpa_base + offset;
+
+	return dpa;
+}
+#endif
-- 
2.26.3


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

* [CI 11/44] drm/svm: introduce hmmptr and helper functions
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (8 preceding siblings ...)
  2024-06-14 21:57 ` [CI 10/44] drm/svm: introduce drm_mem_region concept Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 12/44] drm/svm: Introduce helper to remap drm memory region Oak Zeng
                   ` (48 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

A hmmptr is a pointer in a CPU program, like a userptr. but unlike
a userptr, a hmmptr can also be migrated to device local memory. The
other way to look at is, userptr is a special hmmptr without the
capability of migration - userptr's backing store is always in system
memory.

This is built on top of kernel HMM infrastructure thus is called hmmptr.

This is the key concept to implement SVM (shared virtual memory) at drm
drivers. With SVM, all the valid virtual address in a CPU program is
also valid for GPU program, if the GPUVM participate SVM. This is
implemented thru hmmptr concept.

Helper functions are introduced to init, release, populate and dma-map
/unmap hmmptr. Helper will also be introduced to migrate a range of
hmmptr to device memory. With those helpers, driver can easily
implement the SVM address space mirroring and migration functionalities.

Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Felix Kuehling <felix.kuehling@amd.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Leon Romanovsky <leonro@nvidia.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Krishna Bommu <krishnaiah.bommu@intel.com>
Cc: <dri-devel@lists.freedesktop.org>
Suggested-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Co-developed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/Makefile  |   1 +
 drivers/gpu/drm/drm_svm.c | 325 ++++++++++++++++++++++++++++++++++++++
 include/drm/drm_svm.h     |  63 ++++++++
 3 files changed, 389 insertions(+)
 create mode 100644 drivers/gpu/drm/drm_svm.c

diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index 68cc9258ffc4..1e4237d80cff 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -68,6 +68,7 @@ drm-y := \
 	drm_prime.o \
 	drm_print.o \
 	drm_property.o \
+	drm_svm.o \
 	drm_syncobj.o \
 	drm_sysfs.o \
 	drm_trace_points.o \
diff --git a/drivers/gpu/drm/drm_svm.c b/drivers/gpu/drm/drm_svm.c
new file mode 100644
index 000000000000..b88616491409
--- /dev/null
+++ b/drivers/gpu/drm/drm_svm.c
@@ -0,0 +1,325 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#include <linux/scatterlist.h>
+#include <linux/mmu_notifier.h>
+#include <linux/dma-mapping.h>
+#include <linux/memremap.h>
+#include <drm/drm_gem_dma_helper.h>
+#include <drm/drm_svm.h>
+#include <linux/swap.h>
+#include <linux/bug.h>
+#include <linux/hmm.h>
+#include <linux/mm.h>
+
+static u64 __npages_in_range(unsigned long start, unsigned long end)
+{
+	return (PAGE_ALIGN(end) - PAGE_ALIGN_DOWN(start)) >> PAGE_SHIFT;
+}
+
+/**
+ * __mark_range_accessed() - mark a range is accessed, so core mm
+ * have such information for memory eviction or write back to
+ * hard disk
+ *
+ * @hmm_pfn: hmm_pfn array to mark
+ * @npages: how many pages to mark
+ * @write: if write to this range, we mark pages in this range
+ * as dirty
+ */
+static void __mark_range_accessed(unsigned long *hmm_pfn, int npages, bool write)
+{
+	struct page *page;
+	u64 i;
+
+	for (i = 0; i < npages; i++) {
+		page = hmm_pfn_to_page(hmm_pfn[i]);
+		if (write)
+			set_page_dirty_lock(page);
+
+		mark_page_accessed(page);
+	}
+}
+
+static inline u64 __hmmptr_start(struct drm_hmmptr *hmmptr)
+{
+	struct drm_gpuva *gpuva = hmmptr->get_gpuva(hmmptr);
+	u64 start = GPUVA_START(gpuva);
+
+	return start;
+}
+
+static inline u64 __hmmptr_end(struct drm_hmmptr *hmmptr)
+{
+	struct drm_gpuva *gpuva = hmmptr->get_gpuva(hmmptr);
+	u64 end = GPUVA_END(gpuva);
+
+	return end;
+}
+
+static inline u64 __hmmptr_cpu_start(struct drm_hmmptr *hmmptr)
+{
+	struct drm_gpuva *gpuva = hmmptr->get_gpuva(hmmptr);
+
+	/**
+	 * FIXME: xekmd right now use gem.offset for userptr
+	 * Maybe this need to be reconsidered.
+	 */
+	return gpuva->gem.offset;
+}
+
+static inline u64 __hmmptr_cpu_end(struct drm_hmmptr *hmmptr)
+{
+	return __hmmptr_cpu_start(hmmptr) +
+			(__hmmptr_end(hmmptr) - __hmmptr_start(hmmptr));
+}
+
+static inline struct drm_device *__hmmptr_to_drm(struct drm_hmmptr *hmmptr)
+{
+	struct drm_gpuva *gpuva = hmmptr->get_gpuva(hmmptr);
+	struct drm_gpuvm *gpuvm = gpuva->vm;
+	struct drm_device *drm = gpuvm->drm;
+
+	return drm;
+}
+
+/**
+ * drm_svm_hmmptr_unmap_dma_pages() - dma unmap a section (must be page boudary) of
+ * hmmptr from iova space
+ *
+ * @hmmptr: hmmptr to dma unmap
+ * @page_idx: from which page to start the unmapping
+ * @npages: how many pages to unmap
+ */
+void drm_svm_hmmptr_unmap_dma_pages(struct drm_hmmptr *hmmptr, u64 page_idx, u64 npages)
+{
+	u64 tpages = __npages_in_range(__hmmptr_start(hmmptr), __hmmptr_end(hmmptr));
+	struct drm_device *drm = __hmmptr_to_drm(hmmptr);
+	unsigned long *hmm_pfn = hmmptr->pfn;
+	struct page *page;
+	u64 i;
+
+	drm_WARN_ON_ONCE(drm, page_idx + npages > tpages);
+	for (i = 0; i < npages; i++) {
+		page = hmm_pfn_to_page(hmm_pfn[i + page_idx]);
+		if (!page)
+			continue;
+
+		if (!is_device_private_page(page))
+			dma_unlink_range(&hmmptr->iova, (i + page_idx) << PAGE_SHIFT);
+	}
+}
+EXPORT_SYMBOL_GPL(drm_svm_hmmptr_unmap_dma_pages);
+
+/**
+ * drm_svm_hmmptr_map_dma_pages() - dma map a section (must be page boudary) of
+ * hmmptr to iova space
+ *
+ * @hmmptr: hmmptr to dma map
+ * @page_idx: from which page to start the mapping
+ * @npages: how many pages to map
+ */
+void drm_svm_hmmptr_map_dma_pages(struct drm_hmmptr *hmmptr, u64 page_idx, u64 npages)
+{
+	u64 tpages = __npages_in_range(__hmmptr_start(hmmptr), __hmmptr_end(hmmptr));
+	unsigned long *hmm_pfn = hmmptr->pfn;
+	struct drm_device *drm = __hmmptr_to_drm(hmmptr);
+	struct page *page;
+	bool range_is_device_pages;
+	u64 i;
+
+	drm_WARN_ON_ONCE(drm, page_idx + npages > tpages);
+	for (i = page_idx; i < page_idx + npages; i++) {
+		page = hmm_pfn_to_page(hmm_pfn[i]);
+		drm_WARN_ON_ONCE(drm, !page);
+		if (i == page_idx)
+			range_is_device_pages = is_device_private_page(page);
+
+		if (range_is_device_pages != is_device_private_page(page))
+			drm_warn_once(drm, "Found mixed system and device pages plancement\n");
+
+		if (!is_device_private_page(page))
+			hmmptr->dma_addr[i] = dma_link_range(page, 0, &hmmptr->iova,
+							     i << PAGE_SHIFT);
+	}
+}
+EXPORT_SYMBOL_GPL(drm_svm_hmmptr_map_dma_pages);
+
+/**
+ * drm_svm_hmmptr_init() - initialize a hmmptr
+ *
+ * @hmmptr: the hmmptr to initialize
+ * @ops: the mmu interval notifier ops used to invalidate hmmptr
+ */
+int drm_svm_hmmptr_init(struct drm_hmmptr *hmmptr,
+			const struct mmu_interval_notifier_ops *ops)
+{
+	struct drm_gpuva *gpuva = hmmptr->get_gpuva(hmmptr);
+	struct dma_iova_attrs *iova = &hmmptr->iova;
+	struct drm_gpuvm *gpuvm = gpuva->vm;
+	struct drm_device *drm = gpuvm->drm;
+	u64 cpu_va_start = __hmmptr_cpu_start(hmmptr);
+	u64 start = GPUVA_START(gpuva);
+	u64 end = GPUVA_END(gpuva);
+	size_t npages;
+	int ret;
+
+	start = ALIGN_DOWN(start, PAGE_SIZE);
+	end = ALIGN(end, PAGE_SIZE);
+	npages = __npages_in_range(start, end);
+	hmmptr->pfn = kvcalloc(npages, sizeof(*hmmptr->pfn), GFP_KERNEL);
+	if (!hmmptr->pfn)
+		return -ENOMEM;
+
+	hmmptr->dma_addr = kvcalloc(npages, sizeof(*hmmptr->dma_addr), GFP_KERNEL);
+	if (!hmmptr->dma_addr) {
+		ret = -ENOMEM;
+		goto free_pfn;
+	}
+
+	iova->dev = drm->dev;
+	iova->size = end - start;
+	iova->dir = DMA_BIDIRECTIONAL;
+	ret = dma_alloc_iova(iova);
+	if (ret)
+		goto free_dma_addr;
+
+	ret = mmu_interval_notifier_insert(&hmmptr->notifier, current->mm,
+					   cpu_va_start, end - start, ops);
+	if (ret)
+		goto free_iova;
+
+	hmmptr->notifier_seq = LONG_MAX;
+	return 0;
+
+free_iova:
+	dma_free_iova(iova);
+free_dma_addr:
+	kvfree(hmmptr->dma_addr);
+free_pfn:
+	kvfree(hmmptr->pfn);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(drm_svm_hmmptr_init);
+
+/**
+ * drm_svm_hmmptr_release() - release a hmmptr
+ *
+ * @hmmptr: the hmmptr to release
+ */
+void drm_svm_hmmptr_release(struct drm_hmmptr *hmmptr)
+{
+	u64 npages = __npages_in_range(__hmmptr_start(hmmptr), __hmmptr_end(hmmptr));
+
+	drm_svm_hmmptr_unmap_dma_pages(hmmptr, 0, npages);
+	mmu_interval_notifier_remove(&hmmptr->notifier);
+	dma_free_iova(&hmmptr->iova);
+	kvfree(hmmptr->pfn);
+	kvfree(hmmptr->dma_addr);
+}
+EXPORT_SYMBOL_GPL(drm_svm_hmmptr_release);
+
+/**
+ * drm_svm_hmmptr_populate() - Populate physical pages of the range of hmmptr
+ *
+ * @hmmptr: hmmptr to populate
+ * @owner: avoid fault for pages owned by owner, only report the current pfn.
+ * @start: start CPU VA of the range
+ * @end: end CPU VA of the range
+ * @write: Populate range for write purpose
+ * @is_mmap_locked: Whether the caller hold mmap lock
+ *
+ * This function populate the physical pages of a hmmptr range. The
+ * populated physical pages is saved in hmmptr's pfn array.
+ * It is similar to get_user_pages but call hmm_range_fault.
+ *
+ * There are two usage model of this API:
+ *
+ * 1) use it for legacy userptr code: pass owner as NULL, fault-in the range
+ * in system pages
+ *
+ * 2) use it for svm: Usually caller would first migrate a range to device
+ * pages, then call this function with owner as the device pages owner. This way
+ * this function won't cause a fault, only report the range's backing pfns which
+ * is already in device memory.
+ *
+ * This function also read mmu notifier sequence # (
+ * mmu_interval_read_begin), for the purpose of later comparison
+ * (through mmu_interval_read_retry). The usage model is, driver first
+ * call this function to populate a range of a hmmptr, then call
+ * mmu_interval_read_retry to see whether need to retry before programming
+ * GPU page table. Since we only populate a sub-range of the whole hmmptr
+ * here, even if the recorded hmmptr->notifier_seq equals to notifier's
+ * current sequence no, it doesn't means the whole hmmptr is up to date.
+ * Driver is *required* to always call this function before check a retry.
+ *
+ * This must be called with mmap read or write lock held.
+ *
+ * returns: 0 for success; negative error no on failure
+ */
+int drm_svm_hmmptr_populate(struct drm_hmmptr *hmmptr, void *owner, u64 start, u64 end,
+			    bool write, bool is_mmap_locked)
+{
+	unsigned long timeout =
+		jiffies + msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT);
+	struct hmm_range hmm_range;
+	struct mm_struct *mm = hmmptr->notifier.mm;
+	struct drm_device *drm = __hmmptr_to_drm(hmmptr);
+	int pfn_index, npages;
+	int ret;
+
+	drm_WARN_ON_ONCE(drm, start < __hmmptr_cpu_start(hmmptr));
+	drm_WARN_ON_ONCE(drm, end > __hmmptr_cpu_end(hmmptr));
+	if (!PAGE_ALIGNED(start) || !PAGE_ALIGNED(end))
+		pr_warn("drm svm populate unaligned range [%llx~%llx)\n", start, end);
+
+	if (is_mmap_locked)
+		mmap_assert_locked(mm);
+
+	if (!mmget_not_zero(mm))
+		return -EFAULT;
+
+	hmm_range.notifier = &hmmptr->notifier;
+	hmm_range.start = start;
+	hmm_range.end = end;
+	npages = __npages_in_range(start, end);
+	pfn_index = (start - __hmmptr_cpu_start(hmmptr)) >> PAGE_SHIFT;
+	hmm_range.hmm_pfns = hmmptr->pfn + pfn_index;
+	hmm_range.default_flags = HMM_PFN_REQ_FAULT;
+	if (write)
+		hmm_range.default_flags |= HMM_PFN_REQ_WRITE;
+	hmm_range.dev_private_owner = owner;
+
+	while (true) {
+		hmm_range.notifier_seq = mmu_interval_read_begin(&hmmptr->notifier);
+
+		if (!is_mmap_locked)
+			mmap_read_lock(mm);
+
+		ret = hmm_range_fault(&hmm_range);
+
+		if (!is_mmap_locked)
+			mmap_read_unlock(mm);
+
+		if (ret == -EBUSY) {
+			if (time_after(jiffies, timeout))
+				break;
+
+			continue;
+		}
+		break;
+	}
+
+	mmput(mm);
+
+	if (ret)
+		return ret;
+
+	__mark_range_accessed(hmm_range.hmm_pfns, npages, write);
+	hmmptr->notifier_seq = hmm_range.notifier_seq;
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(drm_svm_hmmptr_populate);
diff --git a/include/drm/drm_svm.h b/include/drm/drm_svm.h
index ceeba53e12b8..0914b10e0954 100644
--- a/include/drm/drm_svm.h
+++ b/include/drm/drm_svm.h
@@ -7,7 +7,10 @@
 #define _DRM_SVM__
 
 #include <linux/compiler_types.h>
+#include <linux/mmu_notifier.h>
+#include <linux/dma-mapping.h>
 #include <linux/memremap.h>
+#include <drm/drm_gpuvm.h>
 #include <linux/types.h>
 #include <drm/drm_print.h>
 
@@ -162,4 +165,64 @@ static inline u64 drm_mem_region_page_to_dpa(struct drm_mem_region *mr, struct p
 
 	return dpa;
 }
+
+/**
+ * struct drm_hmmptr- hmmptr pointer
+ *
+ * A hmmptr is a pointer in a CPU program that can be access by GPU program
+ * also, like a userptr. but unlike a userptr, a hmmptr can also be migrated
+ * to device local memory. The other way to look at is, userptr is a special
+ * hmmptr without the capability of migration - userptr's backing store is
+ * always in system memory.
+ *
+ * A hmmptr can have mixed backing pages in system and GPU vram.
+ *
+ * hmmptr is supposed to be embedded in driver's GPU virtual range management
+ * struct such as xe_vma etc. hmmptr itself doesn't have a range. hmmptr
+ * depends on driver's data structure (such as xe_vma) to live in a gpuvm's
+ * process space and RB-tree.
+ *
+ * With hmmptr concept, SVM and traditional userptr can share codes around
+ * mmu notifier, backing store population etc.
+ *
+ * This is built on top of kernel HMM infrastructure thus is called hmmptr.
+ */
+struct drm_hmmptr {
+	/**
+	 * @notifier: MMU notifier for hmmptr
+	 */
+	struct mmu_interval_notifier notifier;
+	/** @notifier_seq: notifier sequence number */
+	unsigned long notifier_seq;
+	/**
+	 * @pfn: An array of pfn used for page population
+	 * Note this is hmm_pfn, not normal core mm pfn
+	 */
+	unsigned long *pfn;
+	/**
+	 * @dma_addr: An array to hold the dma mapped address
+	 * of each page, only used when page is in sram.
+	 */
+	dma_addr_t *dma_addr;
+	/**
+	 * @iova: iova hold the dma-address of this hmmptr.
+	 * iova is only used when the backing pages are in sram.
+	 */
+	struct dma_iova_attrs iova;
+	/**
+	 * @get_gpuva: callback function to get gpuva of this hmmptr
+	 * FIXME: Probably have direct gpuva member in hmmptr
+	 */
+	struct drm_gpuva * (*get_gpuva)(struct drm_hmmptr *hmmptr);
+};
+
+int drm_svm_hmmptr_init(struct drm_hmmptr *hmmptr,
+			const struct mmu_interval_notifier_ops *ops);
+void drm_svm_hmmptr_release(struct drm_hmmptr *hmmptr);
+void drm_svm_hmmptr_map_dma_pages(struct drm_hmmptr *hmmptr,
+				  u64 page_idx, u64 npages);
+void drm_svm_hmmptr_unmap_dma_pages(struct drm_hmmptr *hmmptr,
+				    u64 page_idx, u64 npages);
+int drm_svm_hmmptr_populate(struct drm_hmmptr *hmmptr, void *owner, u64 start,
+			    u64 end, bool write, bool is_mmap_locked);
 #endif
-- 
2.26.3


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

* [CI 12/44] drm/svm: Introduce helper to remap drm memory region
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (9 preceding siblings ...)
  2024-06-14 21:57 ` [CI 11/44] drm/svm: introduce hmmptr and helper functions Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 13/44] drm/svm: handle CPU page fault Oak Zeng
                   ` (47 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

Helper function drm_svm_register_mem_region to remap GPU vram
using devm_memremap_pages, so each GPU vram page is backed by
struct page.

Those struct pages are created to allow hmm migrate buffer b/t
GPU vram and CPU system memory using existing Linux migration
mechanism (i.e., migrating b/t CPU system memory and hard disk).

This is prepare work to enable svm (shared virtual memory) through
Linux kernel hmm framework. The memory remap's page map type is set
to MEMORY_DEVICE_PRIVATE for now. This means even though each GPU
vram page get a struct page and can be mapped in CPU page table,
but such pages are treated as GPU's private resource, so CPU can't
access them. If CPU access such page, a page fault is triggered
and page will be migrate to system memory.

For GPU device which supports coherent memory protocol b/t CPU and
GPU (such as CXL and CAPI protocol), we can remap device memory as
MEMORY_DEVICE_COHERENT. This is TBD.

v1: Support a memory type interface for register_mem_region (Himal)

Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Felix Kuehling <felix.kuehling@amd.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Leon Romanovsky <leonro@nvidia.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: <dri-devel@lists.freedesktop.org>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
Co-developed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
---
 drivers/gpu/drm/drm_svm.c | 57 +++++++++++++++++++++++++++++++++++++++
 include/drm/drm_svm.h     |  4 +++
 2 files changed, 61 insertions(+)

diff --git a/drivers/gpu/drm/drm_svm.c b/drivers/gpu/drm/drm_svm.c
index b88616491409..2c0cb2f82b28 100644
--- a/drivers/gpu/drm/drm_svm.c
+++ b/drivers/gpu/drm/drm_svm.c
@@ -12,6 +12,7 @@
 #include <linux/swap.h>
 #include <linux/bug.h>
 #include <linux/hmm.h>
+#include <linux/pci.h>
 #include <linux/mm.h>
 
 static u64 __npages_in_range(unsigned long start, unsigned long end)
@@ -323,3 +324,59 @@ int drm_svm_hmmptr_populate(struct drm_hmmptr *hmmptr, void *owner, u64 start, u
 	return ret;
 }
 EXPORT_SYMBOL_GPL(drm_svm_hmmptr_populate);
+
+static struct dev_pagemap_ops drm_devm_pagemap_ops;
+
+/**
+ * drm_svm_register_mem_region: Remap and provide memmap backing for device memory
+ * @drm: drm device who want to register a memory region
+ * @mr: memory region to register
+ * @type: ZONE_DEVICE memory type
+ *
+ * This remap device memory to host physical address space and create
+ * struct page to back device memory
+ *
+ * Return: 0 on success standard error code otherwise
+ */
+int drm_svm_register_mem_region(const struct drm_device *drm,
+				struct drm_mem_region *mr,
+				enum memory_type type)
+{
+	struct device *dev = &to_pci_dev(drm->dev)->dev;
+	struct resource *res;
+	void *addr;
+	int ret;
+
+	/**FIXME: support MEMORY_DEVICE_COHERENT in the future*/
+	if (type != MEMORY_DEVICE_PRIVATE)
+		return -EINVAL;
+
+	res = devm_request_free_mem_region(dev, &iomem_resource,
+					   mr->usable_size);
+	if (IS_ERR(res)) {
+		ret = PTR_ERR(res);
+		return ret;
+	}
+
+	drm_devm_pagemap_ops.page_free = mr->mr_ops.drm_mem_region_free_page;
+	mr->pagemap.type = type;
+	mr->pagemap.range.start = res->start;
+	mr->pagemap.range.end = res->end;
+	mr->pagemap.nr_range = 1;
+	mr->pagemap.ops = &drm_devm_pagemap_ops;
+	mr->pagemap.owner = mr->mr_ops.drm_mem_region_pagemap_owner(mr);
+	addr = devm_memremap_pages(dev, &mr->pagemap);
+	if (IS_ERR(addr)) {
+		devm_release_mem_region(dev, res->start, resource_size(res));
+		ret = PTR_ERR(addr);
+		drm_err(drm, "Failed to remap memory region %p, errno %d\n",
+			mr, ret);
+		return ret;
+	}
+	mr->hpa_base = res->start;
+
+	drm_info(drm, "Registered device memory [%llx-%llx] to devm, remapped to %pr\n",
+		 mr->dpa_base, mr->dpa_base + mr->usable_size, res);
+	return 0;
+}
+EXPORT_SYMBOL_GPL(drm_svm_register_mem_region);
diff --git a/include/drm/drm_svm.h b/include/drm/drm_svm.h
index 0914b10e0954..40849c16062b 100644
--- a/include/drm/drm_svm.h
+++ b/include/drm/drm_svm.h
@@ -166,6 +166,10 @@ static inline u64 drm_mem_region_page_to_dpa(struct drm_mem_region *mr, struct p
 	return dpa;
 }
 
+int drm_svm_register_mem_region(const struct drm_device *drm,
+				struct drm_mem_region *mr,
+				enum memory_type type);
+
 /**
  * struct drm_hmmptr- hmmptr pointer
  *
-- 
2.26.3


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

* [CI 13/44] drm/svm: handle CPU page fault
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (10 preceding siblings ...)
  2024-06-14 21:57 ` [CI 12/44] drm/svm: Introduce helper to remap drm memory region Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 14/44] drm/svm: Migrate a range of hmmptr to vram Oak Zeng
                   ` (46 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

Under the picture of svm, CPU and GPU program share the same
virtual address space. The backing store of this virtual address
space can be either in system memory or device memory. Since GPU
device memory is remaped as DEVICE_PRIVATE, CPU can't access it.
Any CPU access to device memory causes a page fault. Implement
a page fault handler to migrate memory back to system memory and
map it to CPU page table so the CPU program can proceed.

Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Felix Kuehling <felix.kuehling@amd.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Leon Romanovsky <leonro@nvidia.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: <dri-devel@lists.freedesktop.org>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/drm_svm.c | 280 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 279 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_svm.c b/drivers/gpu/drm/drm_svm.c
index 2c0cb2f82b28..1e6db4857a22 100644
--- a/drivers/gpu/drm/drm_svm.c
+++ b/drivers/gpu/drm/drm_svm.c
@@ -6,7 +6,9 @@
 #include <linux/scatterlist.h>
 #include <linux/mmu_notifier.h>
 #include <linux/dma-mapping.h>
+#include <linux/overflow.h>
 #include <linux/memremap.h>
+#include <linux/migrate.h>
 #include <drm/drm_gem_dma_helper.h>
 #include <drm/drm_svm.h>
 #include <linux/swap.h>
@@ -325,7 +327,283 @@ int drm_svm_hmmptr_populate(struct drm_hmmptr *hmmptr, void *owner, u64 start, u
 }
 EXPORT_SYMBOL_GPL(drm_svm_hmmptr_populate);
 
-static struct dev_pagemap_ops drm_devm_pagemap_ops;
+static void __drm_svm_free_pages(unsigned long *mpfn, unsigned long npages)
+{
+	struct page *page;
+	int j;
+
+	for (j = 0; j < npages; j++) {
+		page = migrate_pfn_to_page(mpfn[j]);
+		mpfn[j] = 0;
+		if (page) {
+			unlock_page(page);
+			put_page(page);
+		}
+	}
+}
+
+/**
+ * __drm_svm_alloc_host_pages() - allocate host pages for the fault vma
+ *
+ * @vma: the fault vma that we need allocate page for
+ * @addr: the virtual address that we allocate pages for
+ * @mpfn: used to output the migration pfns of the allocated pages
+ * @npages: number of pages to allocate
+ *
+ * This function allocate host pages for a specified vma.
+ *
+ * When this function returns, the pages are locked.
+ *
+ * Return 0 on success
+ * error code otherwise
+ */
+static int __drm_svm_alloc_host_pages(struct vm_area_struct *vma,
+				      unsigned long addr,
+				      u64 npages,
+				      unsigned long *mpfn)
+{
+	struct page *page;
+	int i;
+
+	for (i = 0; i < npages; i++) {
+		page = alloc_page_vma(GFP_HIGHUSER, vma, addr);
+		if (unlikely(!page))
+			goto free_allocated;
+
+		/**Lock page per hmm requirement, see hmm.rst*/
+		lock_page(page);
+
+		mpfn[i] = migrate_pfn(page_to_pfn(page));
+		addr += PAGE_SIZE;
+	}
+	return 0;
+
+free_allocated:
+	__drm_svm_free_pages(mpfn, i);
+	return -ENOMEM;
+}
+
+static struct migrate_vec *__generate_migrate_vec_vram(unsigned long *mpfn,
+						       bool is_migrate_src,
+						       unsigned long npages)
+{
+	struct migrate_vec *vec;
+	int size = struct_size(vec, addr_vec, npages);
+	struct drm_mem_region *mr;
+	struct page *page;
+	u64 dpa;
+	int i, j;
+
+	WARN_ON_ONCE(is_migrate_src && npages != 1);
+	vec = kzalloc(size, GFP_KERNEL);
+	if (!vec)
+		return NULL;
+
+	mr = drm_page_to_mem_region(page);
+	for (i = 0, j = 0; i < npages; i++) {
+		/**
+		 * We only migrate one page from vram to sram on CPU page fault today.
+		 * If this source page is not marked with _MIGRATE flag, something is
+		 * wrong. We need to report error to core mm.
+		 *
+		 * If we move to multiple pages migration, below logic need a revisit,
+		 * as it is fine to only migrate some pages (but not all) as indicated
+		 * by hmm.
+		 */
+		if (is_migrate_src && !(mpfn[i] & MIGRATE_PFN_MIGRATE)) {
+			pr_err("Migrate from vram to sram: MIGRATE_PFN_MIGRATE flag is not set\n");
+			kfree(vec);
+			return NULL;
+		}
+
+		page = migrate_pfn_to_page(mpfn[i]);
+		if (!page || !is_device_private_page(page)) {
+			pr_err("No page or wrong page zone in %s\n", __func__);
+			kfree(vec);
+			return NULL;
+		}
+
+		dpa = drm_mem_region_page_to_dpa(mr, page);
+		vec->addr_vec[j++].dpa = dpa;
+	}
+	vec->mr = mr;
+	vec->npages = j;
+	return vec;
+}
+
+static struct migrate_vec *__generate_migrate_vec_sram(struct device *dev,
+						       unsigned long *mpfn,
+						       bool is_migrate_src,
+						       unsigned long npages)
+{
+	enum dma_data_direction dir = is_migrate_src ? DMA_TO_DEVICE : DMA_FROM_DEVICE;
+	struct migrate_vec *vec;
+	int size = struct_size(vec, addr_vec, npages);
+	dma_addr_t dma_addr;
+	struct page *page;
+	int i, j, k;
+
+	page = migrate_pfn_to_page(mpfn[0]);
+	if (unlikely(!page))
+		return NULL;
+
+	vec = kzalloc(size, GFP_KERNEL);
+	if (!vec)
+		return NULL;
+
+	for (i = 0, k = 0 ; i < npages; i++) {
+		if (is_migrate_src && !(mpfn[i] & MIGRATE_PFN_MIGRATE))
+			continue;
+
+		page = migrate_pfn_to_page(mpfn[i]);
+		if (!page || is_device_private_page(page)) {
+			pr_err("No page or wrong page zone in %s\n", __func__);
+			goto undo_dma_mapping;
+		}
+
+		dma_addr = dma_map_page(dev, page, 0, PAGE_SIZE, dir);
+		if (unlikely(dma_mapping_error(dev, dma_addr)))
+			goto undo_dma_mapping;
+
+		vec->addr_vec[k++].dma_addr = dma_addr;
+	}
+
+	vec->mr = NULL;
+	vec->npages = k;
+	return vec;
+
+undo_dma_mapping:
+	for (j = 0; j < k; j++) {
+		if (vec->addr_vec[j].dma_addr)
+			dma_unmap_page(dev, vec->addr_vec[j].dma_addr, PAGE_SIZE, dir);
+	}
+	kfree(vec);
+	return NULL;
+}
+
+static void __free_migrate_vec_sram(struct device *dev, struct migrate_vec *vec,
+				    bool is_migrate_src)
+{
+	enum dma_data_direction dir = is_migrate_src ? DMA_TO_DEVICE : DMA_FROM_DEVICE;
+	int i;
+
+	WARN_ON_ONCE(vec->mr);
+
+	for (i = 0; i < vec->npages; i++) {
+		dma_unmap_page(dev, vec->addr_vec[i].dma_addr, PAGE_SIZE, dir);
+		/** No need to free host pages. migrate_vma_finalize take care */
+	}
+	kfree(vec);
+}
+
+static void __free_migrate_vec_vram(struct migrate_vec *vec)
+{
+	WARN_ON_ONCE(!vec->mr);
+
+	kfree(vec);
+}
+
+/**
+ * drm_svm_migrate_to_sram() - Migrate memory back to sram on CPU page fault
+ *
+ * @vmf: cpu vm fault structure, contains fault information such as vma etc.
+ *
+ * Note, this is in CPU's vm fault handler, caller holds the mmap read lock.
+ *
+ * This function migrate one page at the fault address. This is the normal
+ * core mm page fault scheme. Linux doesn't aggressively prefault at CPU page
+ * fault time. It only fault-in one page to recover the fault address. Even
+ * if we migrate more than one page, core mm still only program one pte entry
+ * (covers one page).See logic in function handle_pte_fault. do_swap_page
+ * eventually calls to drm_svm_migrate_to_sram in our case.
+ *
+ * We call migrate_vma_setup to set up the migration. During migrate_vma_setup,
+ * device page table is invalidated before migration (by calling the driver registered
+ * mmu notifier)
+ *
+ * We call migrate_vma_finalize to finalize the migration. During migrate_vma_finalize,
+ * device pages of the source buffer is freed (by calling memory region's
+ * drm_mem_region_free_page callback function)
+ *
+ * Return:
+ * 0 on success
+ * VM_FAULT_SIGBUS: failed to migrate page to system memory, application
+ * will be signaled a SIGBUG
+ */
+static vm_fault_t drm_svm_migrate_to_sram(struct vm_fault *vmf)
+{
+	struct drm_mem_region *mr = drm_page_to_mem_region(vmf->page);
+	struct drm_device *drm = mr->mr_ops.drm_mem_region_get_device(mr);
+	unsigned long src_pfn = 0, dst_pfn = 0;
+	struct device *dev = drm->dev;
+	struct vm_area_struct *vma = vmf->vma;
+	struct migrate_vec *src;
+	struct migrate_vec *dst;
+	struct dma_fence *fence;
+	vm_fault_t ret = 0, r;
+
+	struct migrate_vma migrate_vma = {
+		.vma		= vma,
+		.start		= ALIGN_DOWN(vmf->address, PAGE_SIZE),
+		.end		= ALIGN_DOWN(vmf->address, PAGE_SIZE) + PAGE_SIZE,
+		.src		= &src_pfn,
+		.dst		= &dst_pfn,
+		.pgmap_owner	= mr->mr_ops.drm_mem_region_pagemap_owner(mr),
+		.flags		= MIGRATE_VMA_SELECT_DEVICE_PRIVATE,
+		.fault_page = vmf->page,
+	};
+
+	if (migrate_vma_setup(&migrate_vma) < 0)
+		return VM_FAULT_SIGBUS;
+
+	if (!migrate_vma.cpages)
+		return 0;
+
+	r = __drm_svm_alloc_host_pages(vma, migrate_vma.start, 1, migrate_vma.dst);
+	if (r) {
+		ret = VM_FAULT_OOM;
+		goto migrate_finalize;
+	}
+
+	src = __generate_migrate_vec_vram(migrate_vma.src, true, 1);
+	if (!src) {
+		ret = VM_FAULT_SIGBUS;
+		goto free_host_pages;
+	}
+
+	dst = __generate_migrate_vec_sram(dev, migrate_vma.dst, false, 1);
+	if (!dst) {
+		ret = VM_FAULT_SIGBUS;
+		goto free_migrate_src;
+	}
+
+	fence = mr->mr_ops.drm_mem_region_migrate(src, dst);
+	if (IS_ERR(fence)) {
+		ret = VM_FAULT_SIGBUS;
+		goto free_migrate_dst;
+	}
+	dma_fence_wait(fence, false);
+	dma_fence_put(fence);
+
+	migrate_vma_pages(&migrate_vma);
+
+free_migrate_dst:
+	__free_migrate_vec_sram(dev, dst, false);
+free_migrate_src:
+	__free_migrate_vec_vram(src);
+free_host_pages:
+	if (ret)
+		__drm_svm_free_pages(migrate_vma.dst, 1);
+migrate_finalize:
+	if (ret)
+		memset(migrate_vma.dst, 0, sizeof(*migrate_vma.dst));
+	migrate_vma_finalize(&migrate_vma);
+	return ret;
+}
+
+static struct dev_pagemap_ops drm_devm_pagemap_ops = {
+	.migrate_to_ram = drm_svm_migrate_to_sram,
+};
 
 /**
  * drm_svm_register_mem_region: Remap and provide memmap backing for device memory
-- 
2.26.3


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

* [CI 14/44] drm/svm: Migrate a range of hmmptr to vram
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (11 preceding siblings ...)
  2024-06-14 21:57 ` [CI 13/44] drm/svm: handle CPU page fault Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 15/44] drm/svm: Add DRM SVM documentation Oak Zeng
                   ` (45 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

Introduce a helper function drm_svm_migrate_hmmptr_to_vram to migrate
any sub-range of a hmmptr to vram. The range has to be at page boundary.
This is supposed to be called by the driver to migrate a hmmptr to vram.

Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Felix Kuehling <felix.kuehling@amd.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: <dri-devel@lists.freedesktop.org>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/drm_svm.c | 122 ++++++++++++++++++++++++++++++++++++++
 include/drm/drm_svm.h     |   4 ++
 2 files changed, 126 insertions(+)

diff --git a/drivers/gpu/drm/drm_svm.c b/drivers/gpu/drm/drm_svm.c
index 1e6db4857a22..3209aeff1406 100644
--- a/drivers/gpu/drm/drm_svm.c
+++ b/drivers/gpu/drm/drm_svm.c
@@ -658,3 +658,125 @@ int drm_svm_register_mem_region(const struct drm_device *drm,
 	return 0;
 }
 EXPORT_SYMBOL_GPL(drm_svm_register_mem_region);
+
+static void __drm_svm_init_device_pages(unsigned long *pfn, unsigned long npages)
+{
+	struct page *page;
+	int i;
+
+	for (i = 0; i < npages; i++) {
+		page = pfn_to_page(pfn[i]);
+		zone_device_page_init(page);
+		pfn[i] = migrate_pfn(pfn[i]);
+	}
+}
+
+/**
+ * drm_svm_migrate_hmmptr_to_vram() - migrate a sub-range of a hmmptr to vram
+ * Must be called with mmap_read_lock held.
+ *
+ * @vm: the vm that the hmmptr belongs to
+ * @mr: the destination memory region we want to migrate to
+ * @hmmptr: the hmmptr to migrate.
+ * @start: start(CPU virtual address, inclusive) of the range to migrate
+ * @end: end(CPU virtual address, exclusive) of the range to migrate
+ *
+ * Returns: negative errno on faiure, 0 on success
+ */
+int drm_svm_migrate_hmmptr_to_vram(struct drm_gpuvm *vm,
+				   struct drm_mem_region *mr,
+				   struct drm_hmmptr *hmmptr,
+				   unsigned long start, unsigned long end)
+{
+	struct drm_device *drm = mr->mr_ops.drm_mem_region_get_device(mr);
+	struct mm_struct *mm = vm->mm;
+	unsigned long npages = __npages_in_range(start, end);
+	struct vm_area_struct *vas;
+	struct migrate_vma migrate = {
+		.start		= ALIGN_DOWN(start, PAGE_SIZE),
+		.end		= ALIGN(end, PAGE_SIZE),
+		.pgmap_owner	= mr->mr_ops.drm_mem_region_pagemap_owner(mr),
+		.flags          = MIGRATE_VMA_SELECT_SYSTEM,
+	};
+	struct device *dev = drm->dev;
+	struct dma_fence *fence;
+	struct migrate_vec *src;
+	struct migrate_vec *dst;
+	int ret = 0;
+	void *buf;
+
+	mmap_assert_locked(mm);
+
+	drm_WARN_ON_ONCE(drm, start < __hmmptr_cpu_start(hmmptr));
+	drm_WARN_ON_ONCE(drm, end > __hmmptr_cpu_end(hmmptr));
+
+	vas = find_vma_intersection(mm, start, end);
+	if (!vas)
+		return -ENOENT;
+
+	migrate.vma = vas;
+	buf = kvcalloc(npages, 2 * sizeof(*migrate.src), GFP_KERNEL);
+	if (!buf)
+		return -ENOMEM;
+
+	migrate.src = buf;
+	migrate.dst = migrate.src + npages;
+	ret = migrate_vma_setup(&migrate);
+	if (ret) {
+		drm_warn(drm, "vma setup returned %d for range [0x%lx - 0x%lx]\n",
+			 ret, start, end);
+		goto free_buf;
+	}
+
+	/**
+	 * Partial migration is just normal. Print a message for now.
+	 * Once this behavior is verified, delete this warning.
+	 */
+	if (migrate.cpages != npages)
+		drm_warn(drm, "Partial migration for range [0x%lx - 0x%lx], range is %ld pages, migrate only %ld pages\n",
+			 start, end, npages, migrate.cpages);
+
+	ret = mr->mr_ops.drm_mem_region_alloc_pages(mr, migrate.cpages, migrate.dst);
+	if (ret)
+		goto migrate_finalize;
+
+	__drm_svm_init_device_pages(migrate.dst, migrate.cpages);
+
+	src = __generate_migrate_vec_sram(dev, migrate.src, true, npages);
+	if (!src) {
+		ret = -EFAULT;
+		goto free_device_pages;
+	}
+
+	dst = __generate_migrate_vec_vram(migrate.dst, false, migrate.cpages);
+	if (!dst) {
+		ret = -EFAULT;
+		goto free_migrate_src;
+	}
+
+	fence = mr->mr_ops.drm_mem_region_migrate(src, dst);
+	if (IS_ERR(fence)) {
+		ret = -EIO;
+		goto free_migrate_dst;
+	}
+	dma_fence_wait(fence, false);
+	dma_fence_put(fence);
+
+	migrate_vma_pages(&migrate);
+
+free_migrate_dst:
+	__free_migrate_vec_vram(dst);
+free_migrate_src:
+	__free_migrate_vec_sram(dev, src, true);
+free_device_pages:
+	if (ret)
+		__drm_svm_free_pages(migrate.dst, migrate.cpages);
+migrate_finalize:
+	if (ret)
+		memset(migrate.dst, 0, sizeof(*migrate.dst) * migrate.cpages);
+	migrate_vma_finalize(&migrate);
+free_buf:
+	kvfree(buf);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(drm_svm_migrate_hmmptr_to_vram);
diff --git a/include/drm/drm_svm.h b/include/drm/drm_svm.h
index 40849c16062b..4a97ab030569 100644
--- a/include/drm/drm_svm.h
+++ b/include/drm/drm_svm.h
@@ -229,4 +229,8 @@ void drm_svm_hmmptr_unmap_dma_pages(struct drm_hmmptr *hmmptr,
 				    u64 page_idx, u64 npages);
 int drm_svm_hmmptr_populate(struct drm_hmmptr *hmmptr, void *owner, u64 start,
 			    u64 end, bool write, bool is_mmap_locked);
+int drm_svm_migrate_hmmptr_to_vram(struct drm_gpuvm *vm,
+				   struct drm_mem_region *mr,
+				   struct drm_hmmptr *hmmptr,
+				   unsigned long start, unsigned long end);
 #endif
-- 
2.26.3


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

* [CI 15/44] drm/svm: Add DRM SVM documentation
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (12 preceding siblings ...)
  2024-06-14 21:57 ` [CI 14/44] drm/svm: Migrate a range of hmmptr to vram Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 16/44] drm/svm: Introduce DRM_SVM kernel config Oak Zeng
                   ` (44 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

The purpose of DRM SVM design is to provide helpers and infrastructure
to facilitate driver implementation of SVM (shared virtual memory)
function.

The overview part described the helpers that DRM layer provdes and the
virtual function interfaces that driver has to implement if driver use
drm SVM layer to implement SVM functionality.

Unlike legacy DRM BO (buffer object) based physical memory management,
DRM SVM use a complete page centric memory management. This has
fundamental impact to the memory allocate, free, eviction and migration
logic. It also requires the driver to support range (which is required
to be page boundary) based GPU page table update and invalidation. The
page centric design section described this design.

Lock design is one of the key of the design, which is described in the
lock design section.

There are other sections described the memory attributes API design and
the memory eviction design.

Create a DRM SVM section in drm-mm.rst and generate SVM documents under
this document section.

Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Felix Kuehling <felix.kuehling@amd.com>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: <dri-devel@lists.freedesktop.org>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 Documentation/gpu/drm-mm.rst |  42 +++++
 drivers/gpu/drm/drm_svm.c    | 309 +++++++++++++++++++++++++++++++++++
 2 files changed, 351 insertions(+)

diff --git a/Documentation/gpu/drm-mm.rst b/Documentation/gpu/drm-mm.rst
index d55751cad67c..fa968abb9387 100644
--- a/Documentation/gpu/drm-mm.rst
+++ b/Documentation/gpu/drm-mm.rst
@@ -573,3 +573,45 @@ Scheduler Function References
 
 .. kernel-doc:: drivers/gpu/drm/scheduler/sched_entity.c
    :export:
+
+DRM SVM
+======
+
+Overview
+-------
+
+.. kernel-doc:: drivers/gpu/drm/drm_svm.c
+   :doc: Overview
+
+Page centric design
+------------------
+
+.. kernel-doc:: drivers/gpu/drm/drm_svm.c
+   :doc: page centric design
+
+Lock design
+-----------
+
+.. kernel-doc:: drivers/gpu/drm/drm_svm.c
+   :doc: lock design
+
+Memory hints
+-----------
+
+.. kernel-doc:: drivers/gpu/drm/drm_svm.c
+   :doc: Memory hints
+
+Memory eviction
+-----------
+
+.. kernel-doc:: drivers/gpu/drm/drm_svm.c
+   :doc: pag granularity eviction
+
+Function References
+-----------------------------
+
+.. kernel-doc:: include/drm/drm_svm.h
+   :internal:
+
+.. kernel-doc:: drivers/gpu/drm/drm_svm.c
+   :export:
diff --git a/drivers/gpu/drm/drm_svm.c b/drivers/gpu/drm/drm_svm.c
index 3209aeff1406..5a7a523550fe 100644
--- a/drivers/gpu/drm/drm_svm.c
+++ b/drivers/gpu/drm/drm_svm.c
@@ -17,6 +17,315 @@
 #include <linux/pci.h>
 #include <linux/mm.h>
 
+/**
+ * DOC: Overview
+ *
+ * Shared Virtual Memory (SVM) allows the programmer to use a shared virtual
+ * address space between threads executing on CPUs and GPUs. It abstracts
+ * away from the user the location of the backing memory, and hence simplifies
+ * the user programming model. In a non-SVM memory model, user need to explicitly
+ * decide memory placement such as device or system memory, also user need to
+ * explicitly migrate memory b/t device and system memory. Under SVM, KMD takes
+ * care of memory migration implicitly.
+ *
+ * SVM makes use of default OS memory allocation and mapping interface such as
+ * malloc() and mmap(). The pointer returned from malloc() and mmap() can be
+ * directly used on both CPU and GPU program. Any CPU program local variables
+ * or global variables can also be used by GPU program.
+ *
+ * SVM also provides API to set virtual address range based memory attributes
+ * such as preferred memory location, memory migration granularity, and memory
+ * atomic attributes etc. This is similar to Linux madvise API.
+ *
+ * DRM SVM implementation is based on Linux kernel Heterogeneous Memory Management
+ * (HMM) framework. HMM provides address space mirroring and data migration helpers.
+ *
+ * This is the DRM layer abstraction of the SVM implementation. The target of this
+ * abstraction is to provide common SVM functions which can be shared between all
+ * DRM drivers. The key functionality of DRM layer is to provide a infrastructure
+ * for driver to achieve process space mirroring and data migration.
+ *
+ * The DRM abstraction is based on two concepts:
+ *
+ * 1) DRM memory region: represents physical memory on GPU devices. Memory region
+ * has operations(callback functions) such as allocate/free memory, memory copy etc.
+ *
+ * 2) hmmptr: similar to userptr with the exception that a hmmptr can be migrated
+ * b/t system memory and device memories. Currently hmmptr is a very thin layer deal
+ * with mmu notifier register/unregister and page population. The hmmptr invalidation
+ * and gpu page table update is left to driver.
+ *
+ * See more details of those concepts in the kernel DOC in drm_svm.h.
+ *
+ * The DRM SVM layer provides helper functions for driver writer to:
+ *
+ * 1) register a DRM memory region, along which some driver callback functions to
+ * allocate/free device memory, migrate memory b/t system memory and GPU device memory
+ * etc.
+ *
+ * 2) create a :c:type:`drm_hmmptr`: Create a hmmptr and register mmu interval notifier
+ * for this hmmptr.
+ *
+ * 3) populate a :c:type:`drm_hmmptr`: Populate the CPU page table, for the purpose of
+ * address space mirroring.
+ *
+ * 4) migrate a range of :c:type:`drm_hmmptr` to GPU device memory
+ *
+ * Note migration of hmmptr (or partial of hmmptr) is DRM internal, triggered by CPU
+ * page fault. This is not exposed to driver.
+ *
+ * With above DRM facilities, it is very simple for vendors to implement a SVM system
+ * alloator driver:
+ *
+ * 1) Implement GPU device memory allocation and free callback functions
+ *
+ * 2) Implement a vendor specific data migration callback function using GPU HW such as DMA
+ *
+ * 3) Implement a vendor specific hmmptr GPU page table invalidation callback function
+ *
+ * 4) On device initialization, register GPU device memory to DRM using the DRM memory
+ * region registration helper
+ *
+ * 4) In GPU page fault handler, call drm helpers to create hmmptr if necessary, migrate
+ * range of hmmptr to GPU device memory per migration policy, and populate range of hmmptr
+ * to program/mirror the hmmptr range in GPU page table. Resume GPU HW execution.
+ *
+ *
+ * There are 3 events which can trigger SVM subsystem in actions:
+ *
+ * 1. A mmu notifier callback
+ *
+ * Since SVM need to mirror the program's CPU virtual address space from GPU side,
+ * when program's CPU address space changes, SVM need to make an identical change
+ * from GPU side. SVM/hmm use mmu interval notifier to achieve this. SVM register
+ * a mmu interval notifier call back function to core mm, and whenever a CPU side
+ * virtual address space is changed (i.e., when a virtual address range is unmapped
+ * from CPU calling munmap), the registered callback function will be called from
+ * core mm. SVM then mirror the CPU address space change from GPU side, i.e., unmap
+ * or invalidate the virtual address range from GPU page table.
+ *
+ * This part of the work is mainly left to driver. Driver need to implement the GPU
+ * page table invalidation function. The invalidation has to be virtual address range
+ * based, instead of invalidate the whole hmmptr on each callback.
+ *
+ * 2. A GPU page fault
+ *
+ * At the very beginning of a process's life, no virtual address of the process
+ * is mapped on GPU page table. So when GPU access any virtual address of the process
+ * a GPU page fault is triggered. SVM then decide the best memory location of the
+ * fault address (mainly from performance consideration. Some times also consider
+ * correctness requirement such as whether GPU can perform atomics operation to
+ * certain memory location), migrate memory if necessary, and map the fault address
+ * to GPU page table.
+ *
+ * This part of work is also mainly left to driver implementor for flexibility consideration.
+ * Driver can call DRM SVM layer helper to migrate a sub-range of a hmmptr to device
+ * memory, and call DRM helper to populate the physical pages of a hmmptr.
+ *
+ * 3. A CPU page fault
+ *
+ * A CPU page fault is usually managed by Linux core mm. But in a CPU and GPU
+ * mix programming environment, the backing store of a virtual address range
+ * can be in GPU's local memory which is not visible to CPU (DEVICE_PRIVATE),
+ * so CPU page fault handler need to migrate such pages to system memory for
+ * CPU to be able to access them. Such memory migration is device specific.
+ * HMM has a callback function (migrate_to_ram function of the dev_pagemap_ops)
+ * for device driver to implement.
+ *
+ * This part of the work is mainly done at DRM abstraction layer. DRM layer
+ * call the vendor specific memory region data migration callback function
+ * to migrate data from GPU memory to system memory, if needed. The whole
+ * CPU page fault processing is transparent to driver implementation.
+ *
+ */
+
+/**
+ * DOC: page centric design
+ *
+ * Unlike the non-SVM memory allocator (such as gem_create, vm_bind etc), there
+ * is no buffer object (BO, such as struct ttm_buffer_object, struct drm_gem_object),
+ * in DRM SVM design. We deliberately choose this implementation option to achieve true
+ * page granularity memory placement, allocation, free, validation, eviction and migration.
+ * In a BO centric world, all above operate at a granularity of buffer object, e.g.,
+ * you can't evict or migrate partial of a BO.
+ *
+ * The drm buddy allocator is essentially buddy block granularity, e.g., user can’t
+ * return a few pages of memory back to buddy (so other users can use the freed pages)
+ * until user finishes the whole buddy block. The minimal free size is buddy block.
+ *
+ * To achieve the goal, a drm page cache layer is introduced. DRM page cache layer
+ * provide interface for user to allocate and free memory at page granularity. DRM
+ * page cache layer allocate memory from DRM buddy if it can't meet user's memory
+ * allocation request with the cached pages. DRM page cache free a buddy block when
+ * all the pages in a block are freed by users.
+ *
+ * Both TTM-based driver and SVM are now required to allocate memory from DRM page
+ * cache layer instead of directly from DRM buddy. This is necessary to achieve goal
+ * because, in the direct DRM buddy scheme, pages freed from TTM-based driver and
+ * from SVM, are kept locally until the whole DRM buddy block is freed. So SVM can't
+ * use TTM freed pages until the whole DRM buddy block is freed, and vice versa.
+ *
+ * To support a true page granularity design, SVM subsystem implemented page granularity
+ * migration, eviction, page table update and invalidation.
+ *
+ * Legacy driver can stay with BO-based scheme, but a lot of driver internal interfaces
+ * such as page table codes are modified to support page granularity scheme so those
+ * interfaces can be shared b/t SVM and BO-based driver.
+ *
+ * TTM-based driver can still free memory at coarse grain granularity such as only free
+ * when the BO is finished; while system allocator will apply the page granularity memory
+ * free.
+ *
+ * Currently page cache layer track the usage of each page using a simple bitmap scheme.
+ * When all pages in a block are not used anymore, it returns this block back to drm
+ * buddy subsystem. This scheme can be fine tunned.
+ *
+ * See more in :doc: Page granularity eviction
+ *
+ */
+
+/**
+ * DOC: lock design
+ *
+ * Since under the picture of SVM, CPU program and GPU program share one virtual
+ * address space, we need rather complex lock design to avoid race conditions.
+ * For example, while GPU is accessing a virtual address range, the same range
+ * could be munmapped from CPU side, or the backing store of the same range
+ * could be moved to another physical place due to memory pressure. The lock
+ * design essentially need to serialize the GPU page table invalidate, data
+ * migration, CPU page table population and GPU page table re-validation.
+ *
+ * There are multiple locks involved in this scheme:
+ *
+ * 1. mm mmap_lock
+ * mm's mmap_lock is a read write semaphore used to protect mm's address
+ * space. Linux core mm hold this lock whenever it need to change process
+ * space's memory mapping, for example, during a user munmap process, or
+ * during a page migration triggered by kernel NUMA balance. MMU interval
+ * notifier callback function is called mmap_lock hold.
+ *
+ * Driver is required to hold mmap_read_lock when it calls the DRM hmmptr
+ * population helper to populate CPU page tables.
+ *
+ * 2. driver's gpuvm dma-resv
+ * driver's dma reservation object is used protect GPU page table update.
+ * This is usually per GPUVM based, e.g., for xekmd this is xe_vm's dma-resv.
+ * For BO type vma, dma resv is enough for page table update. For userptr
+ * and hmmptr, besides dma resv, we need an extra page_table_lock to avoid
+ * page table update collision with userptr invalidation. See below.
+ *
+ * 3. driver's page_table_lock
+ * page_table_lock is used to protect userptr/hmmptr GPU page table update,
+ * to avoid a update collision with userptr invalidation. So page_table_lock
+ * is required in the userptr invalidate callback function. Notifier_lock
+ * is the "user_lock" in the documentation of mmu_interval_read_begin(),
+ * which is a hard requirement per mmu notifier design. In xekmd design,
+ * this lock is xe_vm::userptr::notifier_lock.
+ *
+ * Note currently the page_table_lock is a coarse grain lock design which
+ * is whole GPU VM based. This coarse grain design can be fine tunned to
+ * a per page table based fine grain lock, similar to the core mm split
+ * page table lock.
+ *
+ * Lock order
+ * Acquiring locks in the same order can avoid deadlocks. The locking
+ * order of above locks are:
+ *
+ * mmap_lock => gpuvm::dma-resv => page_table_lock
+ *
+ * This lock order is a hard requirement per existing codes. For example,
+ * the mmap_lock and dma-resv order is explicitly defined in dma_resv_lockdep().
+ *
+ *
+ * Use case, pseudo codes:
+ *
+ * Take the concurrent GPU page fault handler and user munmap as an example,
+ * the locking codes looks broadly like below:
+ *
+ * In GPU page fault handler:                                                                           munmap from user:
+ *
+ * again:
+ * Mmap_read_lock()                                                                                     mmap_write_lock()
+ * call drm_svm_migrate_hmmptr_to_vram to migrate hmmptr if needed                                      mmu_notifier_invalidate_range_start(), call hmmptr->invalidate()
+ * hmmptr.notifier_seq = mmu_interval_read_begin(&hmmptr.notifier)                                          down_write(page_table_lock);
+ * call drm_svm_populate_hmmptr to populate hmmptr                                                          mmu_interval_set_seq();
+ * Mmap_read_unlock                                                                                         invalidate hmmptr from GPU page table
+ *                                                                                                          up_write(page_table_lock);
+ * dma_resv_lock()                                                                                      mmu_notifier_invalidate_range_end()
+ * down_read(page_table_lock);                                                                            mmap_write_unlock();
+ * if (!mmu_interval_read_retry() {
+ *     //collision with userptr invalidation, retry
+ *     up_read(page_table_lock);
+ *     dma_resv_unlock()
+ *     goto again;
+ * }
+ *
+ * update_gpu_page_table()
+ * up_read(page_table_lock);
+ * dma_resv_unlock()
+ *
+ *
+ * In above codes, we hold mmap_read_lock to populate hmmptr because we
+ * need to walk the CPU page table. Since the munmap hold a mmap_write_lock,
+ * the hmmptr population can't colide with munmap.
+ *
+ * After that, we update GPU page table with the hmmptr pfns/pages populated
+ * above. We hold both dma-resv object to protect and page_table_lock for GPU
+ * page table update.
+ *
+ * Since we don't hold the mmap_lock during GPU page table update, user
+ * might perform munmap simultaneously which can cause userptr invalidation.
+ * If such collision happens, we will have to retry hmmptr population.
+ *
+ * Once we confirmed there is no need to retry, we can update GPU page table
+ * safely without have to worry about munmap/hmmptr->invalidate(), because
+ * during this retry confirmation and GPU page table update we hold the
+ * page_table_lock. The same page_table_lock is also hold in the hmmptr->invalidate
+ * callback.
+ */
+
+/**
+ * DOC: Memory hints: TBD
+ */
+
+/**
+ * DOC: Page granularity eviction
+ *
+ * One of the DRM SVM design requirement is to evict memory at true page granularity.
+ * To achieve this goal, we removed buffer object concept in DRM SVM design. This
+ * means we won't build SVM upon TTM infrastructure like amdgpu or xekmd does.
+ *
+ * Even though this approach is true page granularity, it does create a problem for
+ * memory eviction when there is memory pressure: memory allocated by SVM and memory
+ * allocated by TTM should be able to mutually evict from each other. TTM's resource
+ * manager maintains a LRU list for each memory type and this list is used to pick up
+ * the memory eviction victim. Since we don't use TTM for SVM implementation, SVM
+ * allocated memory can't be added to TTM resource manager's LRU list. Thus SVM
+ * allocated memory and TTM allocated memory are not mutually evictable.
+ *
+ * We solve this problem by creating a shared LRU list b/t SVM and TTM, or any other
+ * resource manager. This is named drm evictable LRU.
+ *
+ * The basic idea is, abstract a drm_lru_entity structure which is supposed to be
+ * embedded in ttm_resource structure, or any other resource manager such as used
+ * in SVM implementation. So a LRU entity can represent memory resource used by
+ * both TTM and SVM.
+ *
+ * The resource LRU list is a list of drm_lru_entity. drm_lru_entity has eviction
+ * function pointers which can be used to call back drivers' specific eviction
+ * function to evict a memory resource.
+ *
+ * Driver specific eviction function from both TTM and SVM should follow the same
+ * lock order to avoid any lock inversion. The current plan is, SVM subsystem to
+ * follow exactly the same locking order used in TTM-based eviction process.
+ *
+ * A device-wide global drm_lru_manager is introduced to manage a shared LRU list
+ * between TTM and SVM. drm lru manager provides a evict_first function to evict
+ * the first memory resource from LRU list. This function can be called from TTM,
+ * SVM, thus all the memory allocated in the drm sub-system can be mutually evicted.
+ *
+ */
+
 static u64 __npages_in_range(unsigned long start, unsigned long end)
 {
 	return (PAGE_ALIGN(end) - PAGE_ALIGN_DOWN(start)) >> PAGE_SHIFT;
-- 
2.26.3


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

* [CI 16/44] drm/svm: Introduce DRM_SVM kernel config
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (13 preceding siblings ...)
  2024-06-14 21:57 ` [CI 15/44] drm/svm: Add DRM SVM documentation Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 17/44] drm/xe: s/xe_tile_migrate_engine/xe_tile_migrate_exec_queue Oak Zeng
                   ` (43 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

Introduce a DRM_SVM kernel config entry for
DRM svm feature. DRM svm provides helpers for
driver to implement share virtual address space
between CPU and GPU program.

Cc: Daniel Vetter <daniel.vetter@intel.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Felix Kuehling <felix.kuehling@amd.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Krishna Bommu <krishnaiah.bommu@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: <dri-devel@lists.freedesktop.org>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/Kconfig  | 23 ++++++++++++++++++
 drivers/gpu/drm/Makefile |  2 +-
 include/drm/drm_svm.h    | 50 ++++++++++++++++++++++++++++++++++++----
 3 files changed, 70 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 981f43d4ca8c..2d9079f65ab0 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -312,6 +312,29 @@ config DRM_SCHED
 	tristate
 	depends on DRM
 
+config DRM_SVM
+	bool "Enable Shared Virtual Memory support in DRM"
+	depends on DRM
+	depends on ARCH_ENABLE_MEMORY_HOTPLUG
+	depends on ARCH_ENABLE_MEMORY_HOTREMOVE
+	depends on MEMORY_HOTPLUG
+	depends on MEMORY_HOTREMOVE
+	depends on ARCH_HAS_PTE_DEVMAP
+	depends on SPARSEMEM_VMEMMAP
+	depends on ZONE_DEVICE
+	depends on DEVICE_PRIVATE
+	depends on MMU
+	select HMM_MIRROR
+	select MMU_NOTIFIER
+	default y
+	help
+	  Choose this option if you want Shared Virtual Memory (SVM)
+	  and userptr support in DRM. With SVM, virtual address space
+	  is shared between CPU and GPU program. This means any virtual
+	  address such as malloc or mmap returned, variables on stack,
+	  or global ointers, can be used for GPU program transparently.
+	  If you are not sure, say yes.
+
 source "drivers/gpu/drm/i2c/Kconfig"
 
 source "drivers/gpu/drm/arm/Kconfig"
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index 1e4237d80cff..b129a25d404c 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -68,7 +68,6 @@ drm-y := \
 	drm_prime.o \
 	drm_print.o \
 	drm_property.o \
-	drm_svm.o \
 	drm_syncobj.o \
 	drm_sysfs.o \
 	drm_trace_points.o \
@@ -91,6 +90,7 @@ drm-$(CONFIG_DRM_PRIVACY_SCREEN) += \
 drm-$(CONFIG_DRM_ACCEL) += ../../accel/drm_accel.o
 drm-$(CONFIG_DRM_PANIC) += drm_panic.o
 obj-$(CONFIG_DRM)	+= drm.o
+obj-$(CONFIG_DRM_SVM)   += drm_svm.o
 
 obj-$(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) += drm_panel_orientation_quirks.o
 
diff --git a/include/drm/drm_svm.h b/include/drm/drm_svm.h
index 4a97ab030569..17888091d7f4 100644
--- a/include/drm/drm_svm.h
+++ b/include/drm/drm_svm.h
@@ -166,10 +166,6 @@ static inline u64 drm_mem_region_page_to_dpa(struct drm_mem_region *mr, struct p
 	return dpa;
 }
 
-int drm_svm_register_mem_region(const struct drm_device *drm,
-				struct drm_mem_region *mr,
-				enum memory_type type);
-
 /**
  * struct drm_hmmptr- hmmptr pointer
  *
@@ -220,6 +216,11 @@ struct drm_hmmptr {
 	struct drm_gpuva * (*get_gpuva)(struct drm_hmmptr *hmmptr);
 };
 
+#if defined(CONFIG_DRM_SVM)
+int drm_svm_register_mem_region(const struct drm_device *drm,
+				struct drm_mem_region *mr,
+				enum memory_type type);
+
 int drm_svm_hmmptr_init(struct drm_hmmptr *hmmptr,
 			const struct mmu_interval_notifier_ops *ops);
 void drm_svm_hmmptr_release(struct drm_hmmptr *hmmptr);
@@ -233,4 +234,45 @@ int drm_svm_migrate_hmmptr_to_vram(struct drm_gpuvm *vm,
 				   struct drm_mem_region *mr,
 				   struct drm_hmmptr *hmmptr,
 				   unsigned long start, unsigned long end);
+#else
+static inline int drm_svm_register_mem_region(const struct drm_device *drm,
+					      struct drm_mem_region *mr,
+					      enum memory_type type)
+{
+	DRM_WARN_ONCE("DRM_SVM kernel config is not enabled, "
+		      "Add CONFIG_DRM_SVM in config file to fix this\n");
+	return -ENODEV;
+}
+
+static inline int drm_svm_hmmptr_init(struct drm_hmmptr *hmmptr,
+				      const struct mmu_interval_notifier_ops *ops)
+{
+	DRM_WARN_ONCE("DRM_SVM kernel config is not enabled, "
+		      "Add CONFIG_DRM_SVM in config file to fix this\n");
+	return -ENODEV;
+}
+static inline void drm_svm_hmmptr_release(struct drm_hmmptr *hmmptr) {}
+static inline void drm_svm_hmmptr_map_dma_pages(struct drm_hmmptr *hmmptr,
+						u64 page_idx, u64 npages) {}
+static inline void drm_svm_hmmptr_unmap_dma_pages(struct drm_hmmptr *hmmptr,
+						  u64 page_idx, u64 npages) {}
+static inline int drm_svm_hmmptr_populate(struct drm_hmmptr *hmmptr, void *owner, u64 start,
+					  u64 end, bool write, bool is_mmap_locked)
+{
+	DRM_WARN_ONCE("DRM_SVM kernel config is not enabled, "
+		      "Add CONFIG_DRM_SVM in config file to fix this\n");
+	return -ENODEV;
+}
+
+static inline int drm_svm_migrate_hmmptr_to_vram(struct drm_gpuvm *vm,
+						 struct drm_mem_region *mr,
+						 struct drm_hmmptr *hmmptr,
+						 unsigned long start, unsigned long end)
+{
+	DRM_WARN_ONCE("DRM_SVM kernel config is not enabled, "
+		      "Add CONFIG_DRM_SVM in config file to fix this\n");
+	return -ENODEV;
+}
+#endif
+
 #endif
-- 
2.26.3


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

* [CI 17/44] drm/xe: s/xe_tile_migrate_engine/xe_tile_migrate_exec_queue
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (14 preceding siblings ...)
  2024-06-14 21:57 ` [CI 16/44] drm/svm: Introduce DRM_SVM kernel config Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 18/44] drm/xe: Add xe_vm_pgtable_update_op to xe_vma_ops Oak Zeng
                   ` (42 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

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

Engine is old nomenclature, replace with exec queue.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_migrate.c | 9 ++++-----
 drivers/gpu/drm/xe/xe_migrate.h | 2 +-
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
index 05f933787860..af62783d34ac 100644
--- a/drivers/gpu/drm/xe/xe_migrate.c
+++ b/drivers/gpu/drm/xe/xe_migrate.c
@@ -84,15 +84,14 @@ struct xe_migrate {
 #define MAX_PTE_PER_SDI 0x1FE
 
 /**
- * xe_tile_migrate_engine() - Get this tile's migrate engine.
+ * xe_tile_migrate_exec_queue() - Get this tile's migrate exec queue.
  * @tile: The tile.
  *
- * Returns the default migrate engine of this tile.
- * TODO: Perhaps this function is slightly misplaced, and even unneeded?
+ * Returns the default migrate exec queue of this tile.
  *
- * Return: The default migrate engine
+ * Return: The default migrate exec queue
  */
-struct xe_exec_queue *xe_tile_migrate_engine(struct xe_tile *tile)
+struct xe_exec_queue *xe_tile_migrate_exec_queue(struct xe_tile *tile)
 {
 	return tile->migrate->q;
 }
diff --git a/drivers/gpu/drm/xe/xe_migrate.h b/drivers/gpu/drm/xe/xe_migrate.h
index 951f19318ea4..a5bcaafe4a99 100644
--- a/drivers/gpu/drm/xe/xe_migrate.h
+++ b/drivers/gpu/drm/xe/xe_migrate.h
@@ -106,5 +106,5 @@ xe_migrate_update_pgtables(struct xe_migrate *m,
 
 void xe_migrate_wait(struct xe_migrate *m);
 
-struct xe_exec_queue *xe_tile_migrate_engine(struct xe_tile *tile);
+struct xe_exec_queue *xe_tile_migrate_exec_queue(struct xe_tile *tile);
 #endif
-- 
2.26.3


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

* [CI 18/44] drm/xe: Add xe_vm_pgtable_update_op to xe_vma_ops
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (15 preceding siblings ...)
  2024-06-14 21:57 ` [CI 17/44] drm/xe: s/xe_tile_migrate_engine/xe_tile_migrate_exec_queue Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 19/44] drm/xe: Convert multiple bind ops into single job Oak Zeng
                   ` (41 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

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

Each xe_vma_op resolves to 0-3 pt_ops. Add storage for the pt_ops to
xe_vma_ops which is dynamically allocated based the number and types of
xe_vma_op in the xe_vma_ops list. Allocation only implemented in this
patch.

This will help with converting xe_vma_ops (multiple xe_vma_op) in a
atomic update unit.

Cc: Oak Zeng <oak.zeng@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_pt_types.h | 12 ++++++
 drivers/gpu/drm/xe/xe_vm.c       | 66 +++++++++++++++++++++++++++++++-
 drivers/gpu/drm/xe/xe_vm_types.h |  8 ++++
 3 files changed, 84 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_pt_types.h b/drivers/gpu/drm/xe/xe_pt_types.h
index cee70cb0f014..2093150f461e 100644
--- a/drivers/gpu/drm/xe/xe_pt_types.h
+++ b/drivers/gpu/drm/xe/xe_pt_types.h
@@ -74,4 +74,16 @@ struct xe_vm_pgtable_update {
 	u32 flags;
 };
 
+/** struct xe_vm_pgtable_update_op - Page table update operation */
+struct xe_vm_pgtable_update_op {
+	/** @entries: entries to update for this operation */
+	struct xe_vm_pgtable_update entries[XE_VM_MAX_LEVEL * 2 + 1];
+	/** @num_entries: number of entries for this update operation */
+	u32 num_entries;
+	/** @bind: is a bind */
+	bool bind;
+	/** @rebind: is a rebind */
+	bool rebind;
+};
+
 #endif
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index bcb0a38b31ae..65d4070e9e71 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -712,6 +712,42 @@ int xe_vm_userptr_check_repin(struct xe_vm *vm)
 		list_empty_careful(&vm->userptr.invalidated)) ? 0 : -EAGAIN;
 }
 
+static int xe_vma_ops_alloc(struct xe_vma_ops *vops)
+{
+	int i;
+
+	for (i = 0; i < XE_MAX_TILES_PER_DEVICE; ++i) {
+		if (!vops->pt_update_ops[i].num_ops)
+			continue;
+
+		vops->pt_update_ops[i].ops =
+			kmalloc_array(vops->pt_update_ops[i].num_ops,
+				      sizeof(*vops->pt_update_ops[i].ops),
+				      GFP_KERNEL);
+		if (!vops->pt_update_ops[i].ops)
+			return -ENOMEM;
+	}
+
+	return 0;
+}
+
+static void xe_vma_ops_fini(struct xe_vma_ops *vops)
+{
+	int i;
+
+	for (i = 0; i < XE_MAX_TILES_PER_DEVICE; ++i)
+		kfree(vops->pt_update_ops[i].ops);
+}
+
+static void xe_vma_ops_incr_pt_update_ops(struct xe_vma_ops *vops, u8 tile_mask)
+{
+	int i;
+
+	for (i = 0; i < XE_MAX_TILES_PER_DEVICE; ++i)
+		if (BIT(i) & tile_mask)
+			++vops->pt_update_ops[i].num_ops;
+}
+
 static void xe_vm_populate_rebind(struct xe_vma_op *op, struct xe_vma *vma,
 				  u8 tile_mask)
 {
@@ -739,6 +775,7 @@ static int xe_vm_ops_add_rebind(struct xe_vma_ops *vops, struct xe_vma *vma,
 
 	xe_vm_populate_rebind(op, vma, tile_mask);
 	list_add_tail(&op->link, &vops->list);
+	xe_vma_ops_incr_pt_update_ops(vops, tile_mask);
 
 	return 0;
 }
@@ -779,6 +816,10 @@ int xe_vm_rebind(struct xe_vm *vm, bool rebind_worker)
 			goto free_ops;
 	}
 
+	err = xe_vma_ops_alloc(&vops);
+	if (err)
+		goto free_ops;
+
 	fence = ops_execute(vm, &vops);
 	if (IS_ERR(fence)) {
 		err = PTR_ERR(fence);
@@ -793,6 +834,7 @@ int xe_vm_rebind(struct xe_vm *vm, bool rebind_worker)
 		list_del(&op->link);
 		kfree(op);
 	}
+	xe_vma_ops_fini(&vops);
 
 	return err;
 }
@@ -814,12 +856,20 @@ struct dma_fence *xe_vma_rebind(struct xe_vm *vm, struct xe_vma *vma, u8 tile_ma
 	if (err)
 		return ERR_PTR(err);
 
+	err = xe_vma_ops_alloc(&vops);
+	if (err) {
+		fence = ERR_PTR(err);
+		goto free_ops;
+	}
+
 	fence = ops_execute(vm, &vops);
 
+free_ops:
 	list_for_each_entry_safe(op, next_op, &vops.list, link) {
 		list_del(&op->link);
 		kfree(op);
 	}
+	xe_vma_ops_fini(&vops);
 
 	return fence;
 }
@@ -2282,7 +2332,6 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)
 	return err;
 }
 
-
 static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct xe_exec_queue *q,
 				   struct drm_gpuva_ops *ops,
 				   struct xe_sync_entry *syncs, u32 num_syncs,
@@ -2334,6 +2383,9 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct xe_exec_queue *q,
 				return PTR_ERR(vma);
 
 			op->map.vma = vma;
+			if (op->map.immediate || !xe_vm_in_fault_mode(vm))
+				xe_vma_ops_incr_pt_update_ops(vops,
+							      op->tile_mask);
 			break;
 		}
 		case DRM_GPUVA_OP_REMAP:
@@ -2378,6 +2430,8 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct xe_exec_queue *q,
 					vm_dbg(&xe->drm, "REMAP:SKIP_PREV: addr=0x%016llx, range=0x%016llx",
 					       (ULL)op->remap.start,
 					       (ULL)op->remap.range);
+				} else {
+					xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
 				}
 			}
 
@@ -2414,13 +2468,16 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct xe_exec_queue *q,
 					vm_dbg(&xe->drm, "REMAP:SKIP_NEXT: addr=0x%016llx, range=0x%016llx",
 					       (ULL)op->remap.start,
 					       (ULL)op->remap.range);
+				} else {
+					xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
 				}
 			}
+			xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
 			break;
 		}
 		case DRM_GPUVA_OP_UNMAP:
 		case DRM_GPUVA_OP_PREFETCH:
-			/* Nothing to do */
+			xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
 			break;
 		default:
 			drm_warn(&vm->xe->drm, "NOT POSSIBLE");
@@ -3267,11 +3324,16 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 		goto unwind_ops;
 	}
 
+	err = xe_vma_ops_alloc(&vops);
+	if (err)
+		goto unwind_ops;
+
 	err = vm_bind_ioctl_ops_execute(vm, &vops);
 
 unwind_ops:
 	if (err && err != -ENODATA)
 		vm_bind_ioctl_ops_unwind(vm, ops, args->num_binds);
+	xe_vma_ops_fini(&vops);
 	for (i = args->num_binds - 1; i >= 0; --i)
 		if (ops[i])
 			drm_gpuva_ops_free(&vm->gpuvm, ops[i]);
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index ce1a63a5e3e7..211c88801182 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -21,6 +21,7 @@ struct xe_bo;
 struct xe_sync_entry;
 struct xe_user_fence;
 struct xe_vm;
+struct xe_vm_pgtable_update_op;
 
 #define XE_VMA_READ_ONLY	DRM_GPUVA_USERBITS
 #define XE_VMA_DESTROYED	(DRM_GPUVA_USERBITS << 1)
@@ -368,6 +369,13 @@ struct xe_vma_ops {
 	struct xe_sync_entry *syncs;
 	/** @num_syncs: number of syncs */
 	u32 num_syncs;
+	/** @pt_update_ops: page table update operations */
+	struct {
+		/** @ops: operations */
+		struct xe_vm_pgtable_update_op *ops;
+		/** @num_ops: number of operations */
+		u32 num_ops;
+	} pt_update_ops[XE_MAX_TILES_PER_DEVICE];
 };
 
 #endif
-- 
2.26.3


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

* [CI 19/44] drm/xe: Convert multiple bind ops into single job
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (16 preceding siblings ...)
  2024-06-14 21:57 ` [CI 18/44] drm/xe: Add xe_vm_pgtable_update_op to xe_vma_ops Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 20/44] drm/xe: Update VM trace events Oak Zeng
                   ` (40 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

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

This aligns with the uAPI of an array of binds or single bind that
results in multiple GPUVA ops to be considered a single atomic
operations.

The implemenation is roughly:
- xe_vma_ops is a list of xe_vma_op (GPUVA op)
- each xe_vma_op resolves to 0-3 PT ops
- xe_vma_ops creates a single job
- if at any point during binding a failure occurs, xe_vma_ops contains
  the information necessary unwind the PT and VMA (GPUVA) state

v2:
 - add missing dma-resv slot reservation (CI, testing)
v3:
 - rebase (Oak)

Cc: Oak Zeng <oak.zeng@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_bo_types.h |    2 +
 drivers/gpu/drm/xe/xe_migrate.c  |  301 ++++----
 drivers/gpu/drm/xe/xe_migrate.h  |   32 +-
 drivers/gpu/drm/xe/xe_pt.c       | 1108 +++++++++++++++++++-----------
 drivers/gpu/drm/xe/xe_pt.h       |   14 +-
 drivers/gpu/drm/xe/xe_pt_types.h |   36 +
 drivers/gpu/drm/xe/xe_vm.c       |  519 +++-----------
 drivers/gpu/drm/xe/xe_vm.h       |    2 +
 drivers/gpu/drm/xe/xe_vm_types.h |   45 +-
 9 files changed, 1036 insertions(+), 1023 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
index 86422e113d39..02d68873558a 100644
--- a/drivers/gpu/drm/xe/xe_bo_types.h
+++ b/drivers/gpu/drm/xe/xe_bo_types.h
@@ -58,6 +58,8 @@ struct xe_bo {
 #endif
 	/** @freed: List node for delayed put. */
 	struct llist_node freed;
+	/** @update_index: Update index if PT BO */
+	int update_index;
 	/** @created: Whether the bo has passed initial creation */
 	bool created;
 
diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
index af62783d34ac..63b4aa2af030 100644
--- a/drivers/gpu/drm/xe/xe_migrate.c
+++ b/drivers/gpu/drm/xe/xe_migrate.c
@@ -1125,6 +1125,7 @@ struct dma_fence *xe_migrate_clear(struct xe_migrate *m,
 }
 
 static void write_pgtable(struct xe_tile *tile, struct xe_bb *bb, u64 ppgtt_ofs,
+			  const struct xe_vm_pgtable_update_op *pt_op,
 			  const struct xe_vm_pgtable_update *update,
 			  struct xe_migrate_pt_update *pt_update)
 {
@@ -1159,8 +1160,12 @@ static void write_pgtable(struct xe_tile *tile, struct xe_bb *bb, u64 ppgtt_ofs,
 		bb->cs[bb->len++] = MI_STORE_DATA_IMM | MI_SDI_NUM_QW(chunk);
 		bb->cs[bb->len++] = lower_32_bits(addr);
 		bb->cs[bb->len++] = upper_32_bits(addr);
-		ops->populate(pt_update, tile, NULL, bb->cs + bb->len, ofs, chunk,
-			      update);
+		if (pt_op->bind)
+			ops->populate(pt_update, tile, NULL, bb->cs + bb->len,
+				      ofs, chunk, update);
+		else
+			ops->clear(pt_update, tile, NULL, bb->cs + bb->len,
+				   ofs, chunk, update);
 
 		bb->len += chunk * 2;
 		ofs += chunk;
@@ -1185,114 +1190,58 @@ struct migrate_test_params {
 
 static struct dma_fence *
 xe_migrate_update_pgtables_cpu(struct xe_migrate *m,
-			       struct xe_vm *vm, struct xe_bo *bo,
-			       const struct  xe_vm_pgtable_update *updates,
-			       u32 num_updates, bool wait_vm,
 			       struct xe_migrate_pt_update *pt_update)
 {
 	XE_TEST_DECLARE(struct migrate_test_params *test =
 			to_migrate_test_params
 			(xe_cur_kunit_priv(XE_TEST_LIVE_MIGRATE));)
 	const struct xe_migrate_pt_update_ops *ops = pt_update->ops;
-	struct dma_fence *fence;
+	struct xe_vm *vm = pt_update->vops->vm;
+	struct xe_vm_pgtable_update_ops *pt_update_ops =
+		&pt_update->vops->pt_update_ops[pt_update->tile_id];
 	int err;
-	u32 i;
+	u32 j, i;
 
 	if (XE_TEST_ONLY(test && test->force_gpu))
 		return ERR_PTR(-ETIME);
 
-	if (bo && !dma_resv_test_signaled(bo->ttm.base.resv,
-					  DMA_RESV_USAGE_KERNEL))
-		return ERR_PTR(-ETIME);
-
-	if (wait_vm && !dma_resv_test_signaled(xe_vm_resv(vm),
-					       DMA_RESV_USAGE_BOOKKEEP))
-		return ERR_PTR(-ETIME);
-
 	if (ops->pre_commit) {
 		pt_update->job = NULL;
 		err = ops->pre_commit(pt_update);
 		if (err)
 			return ERR_PTR(err);
 	}
-	for (i = 0; i < num_updates; i++) {
-		const struct xe_vm_pgtable_update *update = &updates[i];
-
-		ops->populate(pt_update, m->tile, &update->pt_bo->vmap, NULL,
-			      update->ofs, update->qwords, update);
-	}
-
-	if (vm) {
-		trace_xe_vm_cpu_bind(vm);
-		xe_device_wmb(vm->xe);
-	}
-
-	fence = dma_fence_get_stub();
-
-	return fence;
-}
 
-static bool no_in_syncs(struct xe_vm *vm, struct xe_exec_queue *q,
-			struct xe_sync_entry *syncs, u32 num_syncs)
-{
-	struct dma_fence *fence;
-	int i;
-
-	for (i = 0; i < num_syncs; i++) {
-		fence = syncs[i].fence;
-
-		if (fence && !test_bit(DMA_FENCE_FLAG_SIGNALED_BIT,
-				       &fence->flags))
-			return false;
-	}
-	if (q) {
-		fence = xe_exec_queue_last_fence_get(q, vm);
-		if (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) {
-			dma_fence_put(fence);
-			return false;
+	for (j = 0; j < pt_update_ops->num_ops; ++j) {
+		const struct xe_vm_pgtable_update_op *pt_op =
+			&pt_update_ops->ops[j];
+
+		for (i = 0; i < pt_op->num_entries; i++) {
+			const struct xe_vm_pgtable_update *update =
+				&pt_op->entries[i];
+
+			if (pt_op->bind)
+				ops->populate(pt_update, m->tile,
+					      &update->pt_bo->vmap, NULL,
+					      update->ofs, update->qwords,
+					      update);
+			else
+				ops->clear(pt_update, m->tile,
+					   &update->pt_bo->vmap, NULL,
+					   update->ofs, update->qwords, update);
 		}
-		dma_fence_put(fence);
 	}
 
-	return true;
+	trace_xe_vm_cpu_bind(vm);
+	xe_device_wmb(vm->xe);
+
+	return dma_fence_get_stub();
 }
 
-/**
- * xe_migrate_update_pgtables() - Pipelined page-table update
- * @m: The migrate context.
- * @vm: The vm we'll be updating.
- * @bo: The bo whose dma-resv we will await before updating, or NULL if userptr.
- * @q: The exec queue to be used for the update or NULL if the default
- * migration engine is to be used.
- * @updates: An array of update descriptors.
- * @num_updates: Number of descriptors in @updates.
- * @syncs: Array of xe_sync_entry to await before updating. Note that waits
- * will block the engine timeline.
- * @num_syncs: Number of entries in @syncs.
- * @pt_update: Pointer to a struct xe_migrate_pt_update, which contains
- * pointers to callback functions and, if subclassed, private arguments to
- * those.
- *
- * Perform a pipelined page-table update. The update descriptors are typically
- * built under the same lock critical section as a call to this function. If
- * using the default engine for the updates, they will be performed in the
- * order they grab the job_mutex. If different engines are used, external
- * synchronization is needed for overlapping updates to maintain page-table
- * consistency. Note that the meaing of "overlapping" is that the updates
- * touch the same page-table, which might be a higher-level page-directory.
- * If no pipelining is needed, then updates may be performed by the cpu.
- *
- * Return: A dma_fence that, when signaled, indicates the update completion.
- */
-struct dma_fence *
-xe_migrate_update_pgtables(struct xe_migrate *m,
-			   struct xe_vm *vm,
-			   struct xe_bo *bo,
-			   struct xe_exec_queue *q,
-			   const struct xe_vm_pgtable_update *updates,
-			   u32 num_updates,
-			   struct xe_sync_entry *syncs, u32 num_syncs,
-			   struct xe_migrate_pt_update *pt_update)
+static struct dma_fence *
+__xe_migrate_update_pgtables(struct xe_migrate *m,
+			     struct xe_migrate_pt_update *pt_update,
+			     struct xe_vm_pgtable_update_ops *pt_update_ops)
 {
 	const struct xe_migrate_pt_update_ops *ops = pt_update->ops;
 	struct xe_tile *tile = m->tile;
@@ -1301,59 +1250,45 @@ xe_migrate_update_pgtables(struct xe_migrate *m,
 	struct xe_sched_job *job;
 	struct dma_fence *fence;
 	struct drm_suballoc *sa_bo = NULL;
-	struct xe_vma *vma = pt_update->vma;
 	struct xe_bb *bb;
-	u32 i, batch_size, ppgtt_ofs, update_idx, page_ofs = 0;
+	u32 i, j, batch_size = 0, ppgtt_ofs, update_idx, page_ofs = 0;
+	u32 num_updates = 0, current_update = 0;
 	u64 addr;
 	int err = 0;
-	bool usm = !q && xe->info.has_usm;
-	bool first_munmap_rebind = vma &&
-		vma->gpuva.flags & XE_VMA_FIRST_REBIND;
-	struct xe_exec_queue *q_override = !q ? m->q : q;
-	u16 pat_index = xe->pat.idx[XE_CACHE_WB];
+	bool is_migrate = pt_update_ops->q == m->q;
+	bool usm = is_migrate && xe->info.has_usm;
+
+	for (i = 0; i < pt_update_ops->num_ops; ++i) {
+		struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[i];
+		struct xe_vm_pgtable_update *updates = pt_op->entries;
+
+		num_updates += pt_op->num_entries;
+		for (j = 0; j < pt_op->num_entries; ++j) {
+			u32 num_cmds = DIV_ROUND_UP(updates[j].qwords, 0x1ff);
 
-	/* Use the CPU if no in syncs and engine is idle */
-	if (no_in_syncs(vm, q, syncs, num_syncs) && xe_exec_queue_is_idle(q_override)) {
-		fence =  xe_migrate_update_pgtables_cpu(m, vm, bo, updates,
-							num_updates,
-							first_munmap_rebind,
-							pt_update);
-		if (!IS_ERR(fence) || fence == ERR_PTR(-EAGAIN))
-			return fence;
+			/* align noop + MI_STORE_DATA_IMM cmd prefix */
+			batch_size += 4 * num_cmds + updates[j].qwords * 2;
+		}
 	}
 
 	/* fixed + PTE entries */
 	if (IS_DGFX(xe))
-		batch_size = 2;
+		batch_size += 2;
 	else
-		batch_size = 6 + num_updates * 2;
-
-	for (i = 0; i < num_updates; i++) {
-		u32 num_cmds = DIV_ROUND_UP(updates[i].qwords, MAX_PTE_PER_SDI);
+		batch_size += 6 + num_updates * 2;
 
-		/* align noop + MI_STORE_DATA_IMM cmd prefix */
-		batch_size += 4 * num_cmds + updates[i].qwords * 2;
-	}
-
-	/*
-	 * XXX: Create temp bo to copy from, if batch_size becomes too big?
-	 *
-	 * Worst case: Sum(2 * (each lower level page size) + (top level page size))
-	 * Should be reasonably bound..
-	 */
-	xe_tile_assert(tile, batch_size < SZ_128K);
-
-	bb = xe_bb_new(gt, batch_size, !q && xe->info.has_usm);
+	bb = xe_bb_new(gt, batch_size, usm);
 	if (IS_ERR(bb))
 		return ERR_CAST(bb);
 
 	/* For sysmem PTE's, need to map them in our hole.. */
 	if (!IS_DGFX(xe)) {
 		ppgtt_ofs = NUM_KERNEL_PDE - 1;
-		if (q) {
-			xe_tile_assert(tile, num_updates <= NUM_VMUSA_WRITES_PER_UNIT);
+		if (!is_migrate) {
+			u32 num_units = DIV_ROUND_UP(num_updates,
+						     NUM_VMUSA_WRITES_PER_UNIT);
 
-			sa_bo = drm_suballoc_new(&m->vm_update_sa, 1,
+			sa_bo = drm_suballoc_new(&m->vm_update_sa, num_units,
 						 GFP_KERNEL, true, 0);
 			if (IS_ERR(sa_bo)) {
 				err = PTR_ERR(sa_bo);
@@ -1373,14 +1308,26 @@ xe_migrate_update_pgtables(struct xe_migrate *m,
 		bb->cs[bb->len++] = ppgtt_ofs * XE_PAGE_SIZE + page_ofs;
 		bb->cs[bb->len++] = 0; /* upper_32_bits */
 
-		for (i = 0; i < num_updates; i++) {
-			struct xe_bo *pt_bo = updates[i].pt_bo;
+		for (i = 0; i < pt_update_ops->num_ops; ++i) {
+			struct xe_vm_pgtable_update_op *pt_op =
+				&pt_update_ops->ops[i];
+			struct xe_vm_pgtable_update *updates = pt_op->entries;
 
-			xe_tile_assert(tile, pt_bo->size == SZ_4K);
+			for (j = 0; j < pt_op->num_entries; ++j, ++current_update) {
+				struct xe_vm *vm = pt_update->vops->vm;
+				struct xe_bo *pt_bo = updates[j].pt_bo;
 
-			addr = vm->pt_ops->pte_encode_bo(pt_bo, 0, pat_index, 0);
-			bb->cs[bb->len++] = lower_32_bits(addr);
-			bb->cs[bb->len++] = upper_32_bits(addr);
+				xe_tile_assert(tile, pt_bo->size == SZ_4K);
+
+				/* Map a PT at most once */
+				if (pt_bo->update_index < 0)
+					pt_bo->update_index = current_update;
+
+				addr = vm->pt_ops->pte_encode_bo(pt_bo, 0,
+								 XE_CACHE_WB, 0);
+				bb->cs[bb->len++] = lower_32_bits(addr);
+				bb->cs[bb->len++] = upper_32_bits(addr);
+			}
 		}
 
 		bb->cs[bb->len++] = MI_BATCH_BUFFER_END;
@@ -1388,19 +1335,39 @@ xe_migrate_update_pgtables(struct xe_migrate *m,
 
 		addr = xe_migrate_vm_addr(ppgtt_ofs, 0) +
 			(page_ofs / sizeof(u64)) * XE_PAGE_SIZE;
-		for (i = 0; i < num_updates; i++)
-			write_pgtable(tile, bb, addr + i * XE_PAGE_SIZE,
-				      &updates[i], pt_update);
+		for (i = 0; i < pt_update_ops->num_ops; ++i) {
+			struct xe_vm_pgtable_update_op *pt_op =
+				&pt_update_ops->ops[i];
+			struct xe_vm_pgtable_update *updates = pt_op->entries;
+
+			for (j = 0; j < pt_op->num_entries; ++j) {
+				struct xe_bo *pt_bo = updates[j].pt_bo;
+
+				write_pgtable(tile, bb, addr +
+					      pt_bo->update_index * XE_PAGE_SIZE,
+					      pt_op, &updates[j], pt_update);
+			}
+		}
 	} else {
 		/* phys pages, no preamble required */
 		bb->cs[bb->len++] = MI_BATCH_BUFFER_END;
 		update_idx = bb->len;
 
-		for (i = 0; i < num_updates; i++)
-			write_pgtable(tile, bb, 0, &updates[i], pt_update);
+		for (i = 0; i < pt_update_ops->num_ops; ++i) {
+			struct xe_vm_pgtable_update_op *pt_op =
+				&pt_update_ops->ops[i];
+			struct xe_vm_pgtable_update *updates = pt_op->entries;
+
+			for (j = 0; j < pt_op->num_entries; ++j)
+				write_pgtable(tile, bb, 0, pt_op, &updates[j],
+					      pt_update);
+		}
 	}
 
-	job = xe_bb_create_migration_job(q ?: m->q, bb,
+	if (is_migrate)
+		mutex_lock(&m->job_mutex);
+
+	job = xe_bb_create_migration_job(pt_update_ops->q, bb,
 					 xe_migrate_batch_base(m, usm),
 					 update_idx);
 	if (IS_ERR(job)) {
@@ -1408,46 +1375,18 @@ xe_migrate_update_pgtables(struct xe_migrate *m,
 		goto err_bb;
 	}
 
-	/* Wait on BO move */
-	if (bo) {
-		err = xe_sched_job_add_deps(job, bo->ttm.base.resv,
-					    DMA_RESV_USAGE_KERNEL);
-		if (err)
-			goto err_job;
-	}
-
-	/*
-	 * Munmap style VM unbind, need to wait for all jobs to be complete /
-	 * trigger preempts before moving forward
-	 */
-	if (first_munmap_rebind) {
-		err = xe_sched_job_add_deps(job, xe_vm_resv(vm),
-					    DMA_RESV_USAGE_BOOKKEEP);
-		if (err)
-			goto err_job;
-	}
-
-	err = xe_sched_job_last_fence_add_dep(job, vm);
-	for (i = 0; !err && i < num_syncs; i++)
-		err = xe_sync_entry_add_deps(&syncs[i], job);
-
-	if (err)
-		goto err_job;
-
 	if (ops->pre_commit) {
 		pt_update->job = job;
 		err = ops->pre_commit(pt_update);
 		if (err)
 			goto err_job;
 	}
-	if (!q)
-		mutex_lock(&m->job_mutex);
 
 	xe_sched_job_arm(job);
 	fence = dma_fence_get(&job->drm.s_fence->finished);
 	xe_sched_job_push(job);
 
-	if (!q)
+	if (is_migrate)
 		mutex_unlock(&m->job_mutex);
 
 	xe_bb_free(bb, fence);
@@ -1458,12 +1397,46 @@ xe_migrate_update_pgtables(struct xe_migrate *m,
 err_job:
 	xe_sched_job_put(job);
 err_bb:
+	if (is_migrate)
+		mutex_unlock(&m->job_mutex);
 	xe_bb_free(bb, NULL);
 err:
 	drm_suballoc_free(sa_bo, NULL);
 	return ERR_PTR(err);
 }
 
+/**
+ * xe_migrate_update_pgtables() - Pipelined page-table update
+ * @m: The migrate context.
+ * @pt_update: PT update arguments
+ *
+ * Perform a pipelined page-table update. The update descriptors are typically
+ * built under the same lock critical section as a call to this function. If
+ * using the default engine for the updates, they will be performed in the
+ * order they grab the job_mutex. If different engines are used, external
+ * synchronization is needed for overlapping updates to maintain page-table
+ * consistency. Note that the meaing of "overlapping" is that the updates
+ * touch the same page-table, which might be a higher-level page-directory.
+ * If no pipelining is needed, then updates may be performed by the cpu.
+ *
+ * Return: A dma_fence that, when signaled, indicates the update completion.
+ */
+struct dma_fence *
+xe_migrate_update_pgtables(struct xe_migrate *m,
+			   struct xe_migrate_pt_update *pt_update)
+
+{
+	struct xe_vm_pgtable_update_ops *pt_update_ops =
+		&pt_update->vops->pt_update_ops[pt_update->tile_id];
+	struct dma_fence *fence;
+
+	fence =  xe_migrate_update_pgtables_cpu(m, pt_update);
+	if (!IS_ERR(fence))
+		return fence;
+
+	return __xe_migrate_update_pgtables(m, pt_update, pt_update_ops);
+}
+
 /**
  * xe_migrate_wait() - Complete all operations using the xe_migrate context
  * @m: Migrate context to wait for.
diff --git a/drivers/gpu/drm/xe/xe_migrate.h b/drivers/gpu/drm/xe/xe_migrate.h
index a5bcaafe4a99..453e0ecf5034 100644
--- a/drivers/gpu/drm/xe/xe_migrate.h
+++ b/drivers/gpu/drm/xe/xe_migrate.h
@@ -47,6 +47,24 @@ struct xe_migrate_pt_update_ops {
 			 struct xe_tile *tile, struct iosys_map *map,
 			 void *pos, u32 ofs, u32 num_qwords,
 			 const struct xe_vm_pgtable_update *update);
+	/**
+	 * @clear: Clear a command buffer or page-table with ptes.
+	 * @pt_update: Embeddable callback argument.
+	 * @tile: The tile for the current operation.
+	 * @map: struct iosys_map into the memory to be populated.
+	 * @pos: If @map is NULL, map into the memory to be populated.
+	 * @ofs: qword offset into @map, unused if @map is NULL.
+	 * @num_qwords: Number of qwords to write.
+	 * @update: Information about the PTEs to be inserted.
+	 *
+	 * This interface is intended to be used as a callback into the
+	 * page-table system to populate command buffers or shared
+	 * page-tables with PTEs.
+	 */
+	void (*clear)(struct xe_migrate_pt_update *pt_update,
+		      struct xe_tile *tile, struct iosys_map *map,
+		      void *pos, u32 ofs, u32 num_qwords,
+		      const struct xe_vm_pgtable_update *update);
 
 	/**
 	 * @pre_commit: Callback to be called just before arming the
@@ -67,14 +85,10 @@ struct xe_migrate_pt_update_ops {
 struct xe_migrate_pt_update {
 	/** @ops: Pointer to the struct xe_migrate_pt_update_ops callbacks */
 	const struct xe_migrate_pt_update_ops *ops;
-	/** @vma: The vma we're updating the pagetable for. */
-	struct xe_vma *vma;
+	/** @vops: VMA operations */
+	struct xe_vma_ops *vops;
 	/** @job: The job if a GPU page-table update. NULL otherwise */
 	struct xe_sched_job *job;
-	/** @start: Start of update for the range fence */
-	u64 start;
-	/** @last: Last of update for the range fence */
-	u64 last;
 	/** @tile_id: Tile ID of the update */
 	u8 tile_id;
 };
@@ -96,12 +110,6 @@ struct xe_vm *xe_migrate_get_vm(struct xe_migrate *m);
 
 struct dma_fence *
 xe_migrate_update_pgtables(struct xe_migrate *m,
-			   struct xe_vm *vm,
-			   struct xe_bo *bo,
-			   struct xe_exec_queue *q,
-			   const struct xe_vm_pgtable_update *updates,
-			   u32 num_updates,
-			   struct xe_sync_entry *syncs, u32 num_syncs,
 			   struct xe_migrate_pt_update *pt_update);
 
 void xe_migrate_wait(struct xe_migrate *m);
diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index ade9e7a3a0ad..8c61bb2c034d 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -9,12 +9,14 @@
 #include "xe_bo.h"
 #include "xe_device.h"
 #include "xe_drm_client.h"
+#include "xe_exec_queue.h"
 #include "xe_gt.h"
 #include "xe_gt_tlb_invalidation.h"
 #include "xe_migrate.h"
 #include "xe_pt_types.h"
 #include "xe_pt_walk.h"
 #include "xe_res_cursor.h"
+#include "xe_sync.h"
 #include "xe_trace.h"
 #include "xe_ttm_stolen_mgr.h"
 #include "xe_vm.h"
@@ -325,6 +327,7 @@ xe_pt_new_shared(struct xe_walk_update *wupd, struct xe_pt *parent,
 	entry->pt = parent;
 	entry->flags = 0;
 	entry->qwords = 0;
+	entry->pt_bo->update_index = -1;
 
 	if (alloc_entries) {
 		entry->pt_entries = kmalloc_array(XE_PDES,
@@ -864,9 +867,7 @@ static void xe_pt_commit_locks_assert(struct xe_vma *vma)
 
 	lockdep_assert_held(&vm->lock);
 
-	if (xe_vma_is_userptr(vma))
-		lockdep_assert_held_read(&vm->userptr.notifier_lock);
-	else if (!xe_vma_is_null(vma))
+	if (!xe_vma_is_userptr(vma) && !xe_vma_is_null(vma))
 		dma_resv_assert_held(xe_vma_bo(vma)->ttm.base.resv);
 
 	xe_vm_assert_held(vm);
@@ -888,10 +889,8 @@ static void xe_pt_commit_bind(struct xe_vma *vma,
 		if (!rebind)
 			pt->num_live += entries[i].qwords;
 
-		if (!pt->level) {
-			kfree(entries[i].pt_entries);
+		if (!pt->level)
 			continue;
-		}
 
 		pt_dir = as_xe_pt_dir(pt);
 		for (j = 0; j < entries[i].qwords; j++) {
@@ -904,10 +903,18 @@ static void xe_pt_commit_bind(struct xe_vma *vma,
 
 			pt_dir->children[j_] = &newpte->base;
 		}
-		kfree(entries[i].pt_entries);
 	}
 }
 
+static void xe_pt_free_bind(struct xe_vm_pgtable_update *entries,
+			    u32 num_entries)
+{
+	u32 i;
+
+	for (i = 0; i < num_entries; i++)
+		kfree(entries[i].pt_entries);
+}
+
 static int
 xe_pt_prepare_bind(struct xe_tile *tile, struct xe_vma *vma,
 		   struct xe_vm_pgtable_update *entries, u32 *num_entries)
@@ -926,12 +933,13 @@ xe_pt_prepare_bind(struct xe_tile *tile, struct xe_vma *vma,
 
 static void xe_vm_dbg_print_entries(struct xe_device *xe,
 				    const struct xe_vm_pgtable_update *entries,
-				    unsigned int num_entries)
+				    unsigned int num_entries, bool bind)
 #if (IS_ENABLED(CONFIG_DRM_XE_DEBUG_VM))
 {
 	unsigned int i;
 
-	vm_dbg(&xe->drm, "%u entries to update\n", num_entries);
+	vm_dbg(&xe->drm, "%s: %u entries to update\n", bind ? "bind" : "unbind",
+	       num_entries);
 	for (i = 0; i < num_entries; i++) {
 		const struct xe_vm_pgtable_update *entry = &entries[i];
 		struct xe_pt *xe_pt = entry->pt;
@@ -952,66 +960,122 @@ static void xe_vm_dbg_print_entries(struct xe_device *xe,
 {}
 #endif
 
-#ifdef CONFIG_DRM_XE_USERPTR_INVAL_INJECT
+static int job_add_deps(struct xe_sched_job *job, struct dma_resv *resv,
+			enum dma_resv_usage usage)
+{
+	return drm_sched_job_add_resv_dependencies(&job->drm, resv, usage);
+}
 
-static int xe_pt_userptr_inject_eagain(struct xe_userptr_vma *uvma)
+static bool no_in_syncs(struct xe_sync_entry *syncs, u32 num_syncs)
 {
-	u32 divisor = uvma->userptr.divisor ? uvma->userptr.divisor : 2;
-	static u32 count;
+	int i;
 
-	if (count++ % divisor == divisor - 1) {
-		struct xe_vm *vm = xe_vma_vm(&uvma->vma);
+	for (i = 0; i < num_syncs; i++) {
+		struct dma_fence *fence = syncs[i].fence;
 
-		uvma->userptr.divisor = divisor << 1;
-		spin_lock(&vm->userptr.invalidated_lock);
-		list_move_tail(&uvma->userptr.invalidate_link,
-			       &vm->userptr.invalidated);
-		spin_unlock(&vm->userptr.invalidated_lock);
-		return true;
+		if (fence && !test_bit(DMA_FENCE_FLAG_SIGNALED_BIT,
+				       &fence->flags))
+			return false;
 	}
 
-	return false;
+	return true;
 }
 
-#else
-
-static bool xe_pt_userptr_inject_eagain(struct xe_userptr_vma *uvma)
+static int vma_add_deps(struct xe_vma *vma, struct xe_sched_job *job)
 {
-	return false;
+	struct xe_bo *bo = xe_vma_bo(vma);
+
+	xe_bo_assert_held(bo);
+
+	if (bo && !bo->vm) {
+		if (!job) {
+			if (!dma_resv_test_signaled(bo->ttm.base.resv,
+						    DMA_RESV_USAGE_KERNEL))
+				return -ETIME;
+		} else {
+			return job_add_deps(job, bo->ttm.base.resv,
+					    DMA_RESV_USAGE_KERNEL);
+		}
+	}
+
+	return 0;
 }
 
-#endif
+static int op_add_deps(struct xe_vm *vm, struct xe_vma_op *op,
+		       struct xe_sched_job *job)
+{
+	int err = 0;
 
-/**
- * struct xe_pt_migrate_pt_update - Callback argument for pre-commit callbacks
- * @base: Base we derive from.
- * @bind: Whether this is a bind or an unbind operation. A bind operation
- *        makes the pre-commit callback error with -EAGAIN if it detects a
- *        pending invalidation.
- * @locked: Whether the pre-commit callback locked the userptr notifier lock
- *          and it needs unlocking.
- */
-struct xe_pt_migrate_pt_update {
-	struct xe_migrate_pt_update base;
-	bool bind;
-	bool locked;
-};
+	switch (op->base.op) {
+	case DRM_GPUVA_OP_MAP:
+		if (!op->map.immediate && xe_vm_in_fault_mode(vm))
+			break;
+
+		err = vma_add_deps(op->map.vma, job);
+		break;
+	case DRM_GPUVA_OP_REMAP:
+		if (op->remap.prev)
+			err = vma_add_deps(op->remap.prev, job);
+		if (!err && op->remap.next)
+			err = vma_add_deps(op->remap.next, job);
+		break;
+	case DRM_GPUVA_OP_UNMAP:
+		break;
+	case DRM_GPUVA_OP_PREFETCH:
+		err = vma_add_deps(gpuva_to_vma(op->base.prefetch.va), job);
+		break;
+	default:
+		drm_warn(&vm->xe->drm, "NOT POSSIBLE");
+	}
+
+	return err;
+}
 
-/*
- * This function adds the needed dependencies to a page-table update job
- * to make sure racing jobs for separate bind engines don't race writing
- * to the same page-table range, wreaking havoc. Initially use a single
- * fence for the entire VM. An optimization would use smaller granularity.
- */
 static int xe_pt_vm_dependencies(struct xe_sched_job *job,
-				 struct xe_range_fence_tree *rftree,
-				 u64 start, u64 last)
+				 struct xe_vm *vm,
+				 struct xe_vma_ops *vops,
+				 struct xe_vm_pgtable_update_ops *pt_update_ops,
+				 struct xe_range_fence_tree *rftree)
 {
 	struct xe_range_fence *rtfence;
 	struct dma_fence *fence;
-	int err;
+	struct xe_vma_op *op;
+	int err = 0, i;
 
-	rtfence = xe_range_fence_tree_first(rftree, start, last);
+	xe_vm_assert_held(vm);
+
+	if (!job && !no_in_syncs(vops->syncs, vops->num_syncs))
+		return -ETIME;
+
+	if (!job && !xe_exec_queue_is_idle(pt_update_ops->q))
+		return -ETIME;
+
+	if (pt_update_ops->wait_vm_bookkeep) {
+		if (!job) {
+			if (!dma_resv_test_signaled(xe_vm_resv(vm),
+						    DMA_RESV_USAGE_BOOKKEEP))
+				return -ETIME;
+		} else {
+			err = job_add_deps(job, xe_vm_resv(vm),
+					   DMA_RESV_USAGE_BOOKKEEP);
+			if (err)
+				return err;
+		}
+	} else if (pt_update_ops->wait_vm_kernel) {
+		if (!job) {
+			if (!dma_resv_test_signaled(xe_vm_resv(vm),
+						    DMA_RESV_USAGE_KERNEL))
+				return -ETIME;
+		} else {
+			err = job_add_deps(job, xe_vm_resv(vm),
+					   DMA_RESV_USAGE_KERNEL);
+			if (err)
+				return err;
+		}
+	}
+
+	rtfence = xe_range_fence_tree_first(rftree, pt_update_ops->start,
+					    pt_update_ops->last);
 	while (rtfence) {
 		fence = rtfence->fence;
 
@@ -1029,80 +1093,168 @@ static int xe_pt_vm_dependencies(struct xe_sched_job *job,
 				return err;
 		}
 
-		rtfence = xe_range_fence_tree_next(rtfence, start, last);
+		rtfence = xe_range_fence_tree_next(rtfence,
+						   pt_update_ops->start,
+						   pt_update_ops->last);
 	}
 
-	return 0;
+	list_for_each_entry(op, &vops->list, link) {
+		err = op_add_deps(vm, op, job);
+		if (err)
+			return err;
+	}
+
+	for (i = 0; job && !err && i < vops->num_syncs; i++)
+		err = xe_sync_entry_add_deps(&vops->syncs[i], job);
+
+	return err;
 }
 
 static int xe_pt_pre_commit(struct xe_migrate_pt_update *pt_update)
 {
-	struct xe_range_fence_tree *rftree =
-		&xe_vma_vm(pt_update->vma)->rftree[pt_update->tile_id];
+	struct xe_vma_ops *vops = pt_update->vops;
+	struct xe_vm *vm = vops->vm;
+	struct xe_range_fence_tree *rftree = &vm->rftree[pt_update->tile_id];
+	struct xe_vm_pgtable_update_ops *pt_update_ops =
+		&vops->pt_update_ops[pt_update->tile_id];
+
+	return xe_pt_vm_dependencies(pt_update->job, vm, pt_update->vops,
+				     pt_update_ops, rftree);
+}
+
+#ifdef CONFIG_DRM_XE_USERPTR_INVAL_INJECT
+
+static bool xe_pt_userptr_inject_eagain(struct xe_userptr_vma *uvma)
+{
+	u32 divisor = uvma->userptr.divisor ? uvma->userptr.divisor : 2;
+	static u32 count;
 
-	return xe_pt_vm_dependencies(pt_update->job, rftree,
-				     pt_update->start, pt_update->last);
+	if (count++ % divisor == divisor - 1) {
+		uvma->userptr.divisor = divisor << 1;
+		return true;
+	}
+
+	return false;
 }
 
-static int xe_pt_userptr_pre_commit(struct xe_migrate_pt_update *pt_update)
+#else
+
+static bool xe_pt_userptr_inject_eagain(struct xe_userptr_vma *uvma)
 {
-	struct xe_pt_migrate_pt_update *userptr_update =
-		container_of(pt_update, typeof(*userptr_update), base);
-	struct xe_userptr_vma *uvma = to_userptr_vma(pt_update->vma);
-	unsigned long notifier_seq = uvma->userptr.notifier_seq;
-	struct xe_vm *vm = xe_vma_vm(&uvma->vma);
-	int err = xe_pt_vm_dependencies(pt_update->job,
-					&vm->rftree[pt_update->tile_id],
-					pt_update->start,
-					pt_update->last);
+	return false;
+}
 
-	if (err)
-		return err;
+#endif
 
-	userptr_update->locked = false;
+static int vma_check_userptr(struct xe_vm *vm, struct xe_vma *vma,
+			     struct xe_vm_pgtable_update_ops *pt_update)
+{
+	struct xe_userptr_vma *uvma;
+	unsigned long notifier_seq;
 
-	/*
-	 * Wait until nobody is running the invalidation notifier, and
-	 * since we're exiting the loop holding the notifier lock,
-	 * nobody can proceed invalidating either.
-	 *
-	 * Note that we don't update the vma->userptr.notifier_seq since
-	 * we don't update the userptr pages.
-	 */
-	do {
-		down_read(&vm->userptr.notifier_lock);
-		if (!mmu_interval_read_retry(&uvma->userptr.notifier,
-					     notifier_seq))
-			break;
+	lockdep_assert_held_read(&vm->userptr.notifier_lock);
 
-		up_read(&vm->userptr.notifier_lock);
+	if (!xe_vma_is_userptr(vma))
+		return 0;
 
-		if (userptr_update->bind)
-			return -EAGAIN;
+	uvma = to_userptr_vma(vma);
+	notifier_seq = uvma->userptr.notifier_seq;
 
-		notifier_seq = mmu_interval_read_begin(&uvma->userptr.notifier);
-	} while (true);
+	if (uvma->userptr.initial_bind && !xe_vm_in_fault_mode(vm))
+               return 0;
 
-	/* Inject errors to test_whether they are handled correctly */
-	if (userptr_update->bind && xe_pt_userptr_inject_eagain(uvma)) {
-		up_read(&vm->userptr.notifier_lock);
+	if (!mmu_interval_read_retry(&uvma->userptr.notifier,
+				     notifier_seq) &&
+	    !xe_pt_userptr_inject_eagain(uvma))
+		return 0;
+
+	if (xe_vm_in_fault_mode(vm)) {
 		return -EAGAIN;
-	}
+	} else {
+		spin_lock(&vm->userptr.invalidated_lock);
+		list_move_tail(&uvma->userptr.invalidate_link,
+			       &vm->userptr.invalidated);
+		spin_unlock(&vm->userptr.invalidated_lock);
 
-	userptr_update->locked = true;
+		if (xe_vm_in_preempt_fence_mode(vm)) {
+			struct dma_resv_iter cursor;
+			struct dma_fence *fence;
+			long err;
+
+			dma_resv_iter_begin(&cursor, xe_vm_resv(vm),
+					    DMA_RESV_USAGE_BOOKKEEP);
+			dma_resv_for_each_fence_unlocked(&cursor, fence)
+				dma_fence_enable_sw_signaling(fence);
+			dma_resv_iter_end(&cursor);
+
+			err = dma_resv_wait_timeout(xe_vm_resv(vm),
+						    DMA_RESV_USAGE_BOOKKEEP,
+						    false, MAX_SCHEDULE_TIMEOUT);
+			XE_WARN_ON(err <= 0);
+		}
+	}
 
 	return 0;
 }
 
-static const struct xe_migrate_pt_update_ops bind_ops = {
-	.populate = xe_vm_populate_pgtable,
-	.pre_commit = xe_pt_pre_commit,
-};
+static int op_check_userptr(struct xe_vm *vm, struct xe_vma_op *op,
+			    struct xe_vm_pgtable_update_ops *pt_update)
+{
+	int err = 0;
 
-static const struct xe_migrate_pt_update_ops userptr_bind_ops = {
-	.populate = xe_vm_populate_pgtable,
-	.pre_commit = xe_pt_userptr_pre_commit,
-};
+	lockdep_assert_held_read(&vm->userptr.notifier_lock);
+
+	switch (op->base.op) {
+	case DRM_GPUVA_OP_MAP:
+		if (!op->map.immediate && xe_vm_in_fault_mode(vm))
+			break;
+
+		err = vma_check_userptr(vm, op->map.vma, pt_update);
+		break;
+	case DRM_GPUVA_OP_REMAP:
+		if (op->remap.prev)
+			err = vma_check_userptr(vm, op->remap.prev, pt_update);
+		if (!err && op->remap.next)
+			err = vma_check_userptr(vm, op->remap.next, pt_update);
+		break;
+	case DRM_GPUVA_OP_UNMAP:
+		break;
+	case DRM_GPUVA_OP_PREFETCH:
+		err = vma_check_userptr(vm, gpuva_to_vma(op->base.prefetch.va),
+					pt_update);
+		break;
+	default:
+		drm_warn(&vm->xe->drm, "NOT POSSIBLE");
+	}
+
+	return err;
+}
+
+static int xe_pt_userptr_pre_commit(struct xe_migrate_pt_update *pt_update)
+{
+	struct xe_vm *vm = pt_update->vops->vm;
+	struct xe_vma_ops *vops = pt_update->vops;
+	struct xe_vm_pgtable_update_ops *pt_update_ops =
+		&vops->pt_update_ops[pt_update->tile_id];
+	struct xe_vma_op *op;
+	int err;
+
+	err = xe_pt_pre_commit(pt_update);
+	if (err)
+		return err;
+
+	down_read(&vm->userptr.notifier_lock);
+
+	list_for_each_entry(op, &vops->list, link) {
+		err = op_check_userptr(vm, op, pt_update_ops);
+		if (err) {
+			up_read(&vm->userptr.notifier_lock);
+			break;
+		}
+	}
+
+	return err;
+}
 
 struct invalidation_fence {
 	struct xe_gt_tlb_invalidation_fence base;
@@ -1200,190 +1352,6 @@ static int invalidation_fence_init(struct xe_gt *gt,
 	return ret && ret != -ENOENT ? ret : 0;
 }
 
-static void xe_pt_calc_rfence_interval(struct xe_vma *vma,
-				       struct xe_pt_migrate_pt_update *update,
-				       struct xe_vm_pgtable_update *entries,
-				       u32 num_entries)
-{
-	int i, level = 0;
-
-	for (i = 0; i < num_entries; i++) {
-		const struct xe_vm_pgtable_update *entry = &entries[i];
-
-		if (entry->pt->level > level)
-			level = entry->pt->level;
-	}
-
-	/* Greedy (non-optimal) calculation but simple */
-	update->base.start = ALIGN_DOWN(xe_vma_start(vma),
-					0x1ull << xe_pt_shift(level));
-	update->base.last = ALIGN(xe_vma_end(vma),
-				  0x1ull << xe_pt_shift(level)) - 1;
-}
-
-/**
- * __xe_pt_bind_vma() - Build and connect a page-table tree for the vma
- * address range.
- * @tile: The tile to bind for.
- * @vma: The vma to bind.
- * @q: The exec_queue with which to do pipelined page-table updates.
- * @syncs: Entries to sync on before binding the built tree to the live vm tree.
- * @num_syncs: Number of @sync entries.
- * @rebind: Whether we're rebinding this vma to the same address range without
- * an unbind in-between.
- *
- * This function builds a page-table tree (see xe_pt_stage_bind() for more
- * information on page-table building), and the xe_vm_pgtable_update entries
- * abstracting the operations needed to attach it to the main vm tree. It
- * then takes the relevant locks and updates the metadata side of the main
- * vm tree and submits the operations for pipelined attachment of the
- * gpu page-table to the vm main tree, (which can be done either by the
- * cpu and the GPU).
- *
- * Return: A valid dma-fence representing the pipelined attachment operation
- * on success, an error pointer on error.
- */
-struct dma_fence *
-__xe_pt_bind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue *q,
-		 struct xe_sync_entry *syncs, u32 num_syncs,
-		 bool rebind)
-{
-	struct xe_vm_pgtable_update entries[XE_VM_MAX_LEVEL * 2 + 1];
-	struct xe_pt_migrate_pt_update bind_pt_update = {
-		.base = {
-			.ops = xe_vma_is_userptr(vma) ? &userptr_bind_ops : &bind_ops,
-			.vma = vma,
-			.tile_id = tile->id,
-		},
-		.bind = true,
-	};
-	struct xe_vm *vm = xe_vma_vm(vma);
-	u32 num_entries;
-	struct dma_fence *fence;
-	struct invalidation_fence *ifence = NULL;
-	struct xe_range_fence *rfence;
-	int err;
-
-	bind_pt_update.locked = false;
-	xe_bo_assert_held(xe_vma_bo(vma));
-	xe_vm_assert_held(vm);
-
-	vm_dbg(&xe_vma_vm(vma)->xe->drm,
-	       "Preparing bind, with range [%llx...%llx) engine %p.\n",
-	       xe_vma_start(vma), xe_vma_end(vma), q);
-
-	err = xe_pt_prepare_bind(tile, vma, entries, &num_entries);
-	if (err)
-		goto err;
-
-	err = dma_resv_reserve_fences(xe_vm_resv(vm), 1);
-	if (!err && !xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
-		err = dma_resv_reserve_fences(xe_vma_bo(vma)->ttm.base.resv, 1);
-	if (err)
-		goto err;
-
-	xe_tile_assert(tile, num_entries <= ARRAY_SIZE(entries));
-
-	xe_vm_dbg_print_entries(tile_to_xe(tile), entries, num_entries);
-	xe_pt_calc_rfence_interval(vma, &bind_pt_update, entries,
-				   num_entries);
-
-	/*
-	 * If rebind, we have to invalidate TLB on !LR vms to invalidate
-	 * cached PTEs point to freed memory. on LR vms this is done
-	 * automatically when the context is re-enabled by the rebind worker,
-	 * or in fault mode it was invalidated on PTE zapping.
-	 *
-	 * If !rebind, and scratch enabled VMs, there is a chance the scratch
-	 * PTE is already cached in the TLB so it needs to be invalidated.
-	 * on !LR VMs this is done in the ring ops preceding a batch, but on
-	 * non-faulting LR, in particular on user-space batch buffer chaining,
-	 * it needs to be done here.
-	 */
-	if ((!rebind && xe_vm_has_scratch(vm) && xe_vm_in_preempt_fence_mode(vm))) {
-		ifence = kzalloc(sizeof(*ifence), GFP_KERNEL);
-		if (!ifence)
-			return ERR_PTR(-ENOMEM);
-	} else if (rebind && !xe_vm_in_lr_mode(vm)) {
-		/* We bump also if batch_invalidate_tlb is true */
-		vm->tlb_flush_seqno++;
-	}
-
-	rfence = kzalloc(sizeof(*rfence), GFP_KERNEL);
-	if (!rfence) {
-		kfree(ifence);
-		return ERR_PTR(-ENOMEM);
-	}
-
-	fence = xe_migrate_update_pgtables(tile->migrate,
-					   vm, xe_vma_bo(vma), q,
-					   entries, num_entries,
-					   syncs, num_syncs,
-					   &bind_pt_update.base);
-	if (!IS_ERR(fence)) {
-		bool last_munmap_rebind = vma->gpuva.flags & XE_VMA_LAST_REBIND;
-		LLIST_HEAD(deferred);
-		int err;
-
-		err = xe_range_fence_insert(&vm->rftree[tile->id], rfence,
-					    &xe_range_fence_kfree_ops,
-					    bind_pt_update.base.start,
-					    bind_pt_update.base.last, fence);
-		if (err)
-			dma_fence_wait(fence, false);
-
-		/* TLB invalidation must be done before signaling rebind */
-		if (ifence) {
-			int err = invalidation_fence_init(tile->primary_gt,
-							  ifence, fence,
-							  xe_vma_start(vma),
-							  xe_vma_end(vma),
-							  xe_vma_vm(vma)->usm.asid);
-			if (err) {
-				dma_fence_put(fence);
-				kfree(ifence);
-				return ERR_PTR(err);
-			}
-			fence = &ifence->base.base;
-		}
-
-		/* add shared fence now for pagetable delayed destroy */
-		dma_resv_add_fence(xe_vm_resv(vm), fence, rebind ||
-				   last_munmap_rebind ?
-				   DMA_RESV_USAGE_KERNEL :
-				   DMA_RESV_USAGE_BOOKKEEP);
-
-		if (!xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
-			dma_resv_add_fence(xe_vma_bo(vma)->ttm.base.resv, fence,
-					   DMA_RESV_USAGE_BOOKKEEP);
-		xe_pt_commit_bind(vma, entries, num_entries, rebind,
-				  bind_pt_update.locked ? &deferred : NULL);
-
-		/* This vma is live (again?) now */
-		vma->tile_present |= BIT(tile->id);
-
-		if (bind_pt_update.locked) {
-			to_userptr_vma(vma)->userptr.initial_bind = true;
-			up_read(&vm->userptr.notifier_lock);
-			xe_bo_put_commit(&deferred);
-		}
-		if (!rebind && last_munmap_rebind &&
-		    xe_vm_in_preempt_fence_mode(vm))
-			xe_vm_queue_rebind_worker(vm);
-	} else {
-		kfree(rfence);
-		kfree(ifence);
-		if (bind_pt_update.locked)
-			up_read(&vm->userptr.notifier_lock);
-		xe_pt_abort_bind(vma, entries, num_entries);
-	}
-
-	return fence;
-
-err:
-	return ERR_PTR(err);
-}
-
 struct xe_pt_stage_unbind_walk {
 	/** @base: The pagewalk base-class. */
 	struct xe_pt_walk base;
@@ -1534,8 +1502,8 @@ xe_migrate_clear_pgtable_callback(struct xe_migrate_pt_update *pt_update,
 				  void *ptr, u32 qword_ofs, u32 num_qwords,
 				  const struct xe_vm_pgtable_update *update)
 {
-	struct xe_vma *vma = pt_update->vma;
-	u64 empty = __xe_pt_empty_pte(tile, xe_vma_vm(vma), update->pt->level);
+	struct xe_vm *vm = pt_update->vops->vm;
+	u64 empty = __xe_pt_empty_pte(tile, vm, update->pt->level);
 	int i;
 
 	if (map && map->is_iomem)
@@ -1579,151 +1547,487 @@ xe_pt_commit_unbind(struct xe_vma *vma,
 	}
 }
 
-static const struct xe_migrate_pt_update_ops unbind_ops = {
-	.populate = xe_migrate_clear_pgtable_callback,
-	.pre_commit = xe_pt_pre_commit,
-};
+static void
+xe_pt_update_ops_rfence_interval(struct xe_vm_pgtable_update_ops *pt_update_ops,
+				 struct xe_vma *vma)
+{
+	u32 current_op = pt_update_ops->current_op;
+	struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[current_op];
+	int i, level = 0;
+	u64 start, last;
 
-static const struct xe_migrate_pt_update_ops userptr_unbind_ops = {
-	.populate = xe_migrate_clear_pgtable_callback,
-	.pre_commit = xe_pt_userptr_pre_commit,
-};
+	for (i = 0; i < pt_op->num_entries; i++) {
+		const struct xe_vm_pgtable_update *entry = &pt_op->entries[i];
 
-/**
- * __xe_pt_unbind_vma() - Disconnect and free a page-table tree for the vma
- * address range.
- * @tile: The tile to unbind for.
- * @vma: The vma to unbind.
- * @q: The exec_queue with which to do pipelined page-table updates.
- * @syncs: Entries to sync on before disconnecting the tree to be destroyed.
- * @num_syncs: Number of @sync entries.
- *
- * This function builds a the xe_vm_pgtable_update entries abstracting the
- * operations needed to detach the page-table tree to be destroyed from the
- * man vm tree.
- * It then takes the relevant locks and submits the operations for
- * pipelined detachment of the gpu page-table from  the vm main tree,
- * (which can be done either by the cpu and the GPU), Finally it frees the
- * detached page-table tree.
- *
- * Return: A valid dma-fence representing the pipelined detachment operation
- * on success, an error pointer on error.
- */
-struct dma_fence *
-__xe_pt_unbind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue *q,
-		   struct xe_sync_entry *syncs, u32 num_syncs)
+		if (entry->pt->level > level)
+			level = entry->pt->level;
+	}
+
+	/* Greedy (non-optimal) calculation but simple */
+	start = ALIGN_DOWN(xe_vma_start(vma), 0x1ull << xe_pt_shift(level));
+	last = ALIGN(xe_vma_end(vma), 0x1ull << xe_pt_shift(level)) - 1;
+
+	if (start < pt_update_ops->start)
+		pt_update_ops->start = start;
+	if (last > pt_update_ops->last)
+		pt_update_ops->last = last;
+}
+
+static int vma_reserve_fences(struct xe_device *xe, struct xe_vma *vma)
 {
-	struct xe_vm_pgtable_update entries[XE_VM_MAX_LEVEL * 2 + 1];
-	struct xe_pt_migrate_pt_update unbind_pt_update = {
-		.base = {
-			.ops = xe_vma_is_userptr(vma) ? &userptr_unbind_ops :
-			&unbind_ops,
-			.vma = vma,
-			.tile_id = tile->id,
-		},
-	};
-	struct xe_vm *vm = xe_vma_vm(vma);
-	u32 num_entries;
-	struct dma_fence *fence = NULL;
-	struct invalidation_fence *ifence;
-	struct xe_range_fence *rfence;
-	int err;
+	if (!xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
+		return dma_resv_reserve_fences(xe_vma_bo(vma)->ttm.base.resv,
+					       xe->info.tile_count);
 
-	LLIST_HEAD(deferred);
+	return 0;
+}
+
+static int bind_op_prepare(struct xe_vm *vm, struct xe_tile *tile,
+			   struct xe_vm_pgtable_update_ops *pt_update_ops,
+			   struct xe_vma *vma)
+{
+	u32 current_op = pt_update_ops->current_op;
+	struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[current_op];
+	struct llist_head *deferred = &pt_update_ops->deferred;
+	int err;
 
 	xe_bo_assert_held(xe_vma_bo(vma));
-	xe_vm_assert_held(vm);
 
 	vm_dbg(&xe_vma_vm(vma)->xe->drm,
-	       "Preparing unbind, with range [%llx...%llx) engine %p.\n",
-	       xe_vma_start(vma), xe_vma_end(vma), q);
-
-	num_entries = xe_pt_stage_unbind(tile, vma, entries);
-	xe_tile_assert(tile, num_entries <= ARRAY_SIZE(entries));
+	       "Preparing bind, with range [%llx...%llx)\n",
+	       xe_vma_start(vma), xe_vma_end(vma) - 1);
 
-	xe_vm_dbg_print_entries(tile_to_xe(tile), entries, num_entries);
-	xe_pt_calc_rfence_interval(vma, &unbind_pt_update, entries,
-				   num_entries);
+	pt_op->vma = NULL;
+	pt_op->bind = true;
+	pt_op->rebind = BIT(tile->id) & vma->tile_present;
 
-	err = dma_resv_reserve_fences(xe_vm_resv(vm), 1);
-	if (!err && !xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
-		err = dma_resv_reserve_fences(xe_vma_bo(vma)->ttm.base.resv, 1);
+	err = vma_reserve_fences(tile_to_xe(tile), vma);
 	if (err)
-		return ERR_PTR(err);
+		return err;
 
-	ifence = kzalloc(sizeof(*ifence), GFP_KERNEL);
-	if (!ifence)
-		return ERR_PTR(-ENOMEM);
+	err = xe_pt_prepare_bind(tile, vma, pt_op->entries,
+				 &pt_op->num_entries);
+	if (!err) {
+		xe_tile_assert(tile, pt_op->num_entries <=
+			       ARRAY_SIZE(pt_op->entries));
+		xe_vm_dbg_print_entries(tile_to_xe(tile), pt_op->entries,
+					pt_op->num_entries, true);
 
-	rfence = kzalloc(sizeof(*rfence), GFP_KERNEL);
-	if (!rfence) {
-		kfree(ifence);
-		return ERR_PTR(-ENOMEM);
+		xe_pt_update_ops_rfence_interval(pt_update_ops, vma);
+		++pt_update_ops->current_op;
+		pt_update_ops->needs_userptr_lock |= xe_vma_is_userptr(vma);
+
+		/*
+		 * If rebind, we have to invalidate TLB on !LR vms to invalidate
+		 * cached PTEs point to freed memory. on LR vms this is done
+		 * automatically when the context is re-enabled by the rebind
+		 * worker, or in fault mode it was invalidated on PTE zapping.
+		 *
+		 * If !rebind, and scratch enabled VMs, there is a chance the
+		 * scratch PTE is already cached in the TLB so it needs to be
+		 * invalidated. on !LR VMs this is done in the ring ops
+		 * preceding a batch, but on non-faulting LR, in particular on
+		 * user-space batch buffer chaining, it needs to be done here.
+		 */
+		pt_update_ops->needs_invalidation |=
+			(pt_op->rebind && !xe_vm_in_lr_mode(vm) &&
+			!vm->batch_invalidate_tlb) ||
+			(!pt_op->rebind && vm->scratch_pt[tile->id] &&
+			 xe_vm_in_preempt_fence_mode(vm));
+
+		/* FIXME: Don't commit right away */
+		vma->tile_staged |= BIT(tile->id);
+		pt_op->vma = vma;
+		xe_pt_commit_bind(vma, pt_op->entries, pt_op->num_entries,
+				  pt_op->rebind, deferred);
 	}
 
+	return err;
+}
+
+static int unbind_op_prepare(struct xe_tile *tile,
+			     struct xe_vm_pgtable_update_ops *pt_update_ops,
+			     struct xe_vma *vma)
+{
+	u32 current_op = pt_update_ops->current_op;
+	struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[current_op];
+	struct llist_head *deferred = &pt_update_ops->deferred;
+	int err;
+
+	if (!((vma->tile_present | vma->tile_staged) & BIT(tile->id)))
+		return 0;
+
+	xe_bo_assert_held(xe_vma_bo(vma));
+
+	vm_dbg(&xe_vma_vm(vma)->xe->drm,
+	       "Preparing unbind, with range [%llx...%llx)\n",
+	       xe_vma_start(vma), xe_vma_end(vma) - 1);
+
 	/*
-	 * Even if we were already evicted and unbind to destroy, we need to
-	 * clear again here. The eviction may have updated pagetables at a
-	 * lower level, because it needs to be more conservative.
+	 * Wait for invalidation to complete. Can corrupt internal page table
+	 * state if an invalidation is running while preparing an unbind.
 	 */
-	fence = xe_migrate_update_pgtables(tile->migrate,
-					   vm, NULL, q ? q :
-					   vm->q[tile->id],
-					   entries, num_entries,
-					   syncs, num_syncs,
-					   &unbind_pt_update.base);
-	if (!IS_ERR(fence)) {
-		int err;
-
-		err = xe_range_fence_insert(&vm->rftree[tile->id], rfence,
-					    &xe_range_fence_kfree_ops,
-					    unbind_pt_update.base.start,
-					    unbind_pt_update.base.last, fence);
-		if (err)
-			dma_fence_wait(fence, false);
+	if (xe_vma_is_userptr(vma) && xe_vm_in_fault_mode(xe_vma_vm(vma)))
+		mmu_interval_read_begin(&to_userptr_vma(vma)->userptr.notifier);
 
-		/* TLB invalidation must be done before signaling unbind */
-		err = invalidation_fence_init(tile->primary_gt, ifence, fence,
-					      xe_vma_start(vma),
-					      xe_vma_end(vma),
-					      xe_vma_vm(vma)->usm.asid);
-		if (err) {
-			dma_fence_put(fence);
-			kfree(ifence);
-			return ERR_PTR(err);
+	pt_op->vma = vma;
+	pt_op->bind = false;
+	pt_op->rebind = false;
+
+	err = vma_reserve_fences(tile_to_xe(tile), vma);
+	if (err)
+		return err;
+
+	pt_op->num_entries = xe_pt_stage_unbind(tile, vma, pt_op->entries);
+
+	xe_vm_dbg_print_entries(tile_to_xe(tile), pt_op->entries,
+				pt_op->num_entries, false);
+	xe_pt_update_ops_rfence_interval(pt_update_ops, vma);
+	++pt_update_ops->current_op;
+	pt_update_ops->needs_userptr_lock |= xe_vma_is_userptr(vma);
+	pt_update_ops->needs_invalidation = true;
+
+	/* FIXME: Don't commit right away */
+	xe_pt_commit_unbind(vma, pt_op->entries, pt_op->num_entries,
+			    deferred);
+
+	return 0;
+}
+
+static int op_prepare(struct xe_vm *vm,
+		      struct xe_tile *tile,
+		      struct xe_vm_pgtable_update_ops *pt_update_ops,
+		      struct xe_vma_op *op)
+{
+	int err = 0;
+
+	xe_vm_assert_held(vm);
+
+	switch (op->base.op) {
+	case DRM_GPUVA_OP_MAP:
+		if (!op->map.immediate && xe_vm_in_fault_mode(vm))
+			break;
+
+		err = bind_op_prepare(vm, tile, pt_update_ops, op->map.vma);
+		pt_update_ops->wait_vm_kernel = true;
+		break;
+	case DRM_GPUVA_OP_REMAP:
+		err = unbind_op_prepare(tile, pt_update_ops,
+					gpuva_to_vma(op->base.remap.unmap->va));
+
+		if (!err && op->remap.prev) {
+			err = bind_op_prepare(vm, tile, pt_update_ops,
+					      op->remap.prev);
+			pt_update_ops->wait_vm_bookkeep = true;
 		}
-		fence = &ifence->base.base;
+		if (!err && op->remap.next) {
+			err = bind_op_prepare(vm, tile, pt_update_ops,
+					      op->remap.next);
+			pt_update_ops->wait_vm_bookkeep = true;
+		}
+		break;
+	case DRM_GPUVA_OP_UNMAP:
+		err = unbind_op_prepare(tile, pt_update_ops,
+					gpuva_to_vma(op->base.unmap.va));
+		break;
+	case DRM_GPUVA_OP_PREFETCH:
+		err = bind_op_prepare(vm, tile, pt_update_ops,
+				      gpuva_to_vma(op->base.prefetch.va));
+		pt_update_ops->wait_vm_kernel = true;
+		break;
+	default:
+		drm_warn(&vm->xe->drm, "NOT POSSIBLE");
+	}
 
-		/* add shared fence now for pagetable delayed destroy */
-		dma_resv_add_fence(xe_vm_resv(vm), fence,
-				   DMA_RESV_USAGE_BOOKKEEP);
+	return err;
+}
 
-		/* This fence will be installed by caller when doing eviction */
-		if (!xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
-			dma_resv_add_fence(xe_vma_bo(vma)->ttm.base.resv, fence,
-					   DMA_RESV_USAGE_BOOKKEEP);
-		xe_pt_commit_unbind(vma, entries, num_entries,
-				    unbind_pt_update.locked ? &deferred : NULL);
-		vma->tile_present &= ~BIT(tile->id);
-	} else {
-		kfree(rfence);
-		kfree(ifence);
+static void
+xe_pt_update_ops_init(struct xe_vm_pgtable_update_ops *pt_update_ops)
+{
+	init_llist_head(&pt_update_ops->deferred);
+	pt_update_ops->start = ~0x0ull;
+	pt_update_ops->last = 0x0ull;
+}
+
+/**
+ * xe_pt_update_ops_prepare() - Prepare PT update operations
+ * @tile: Tile of PT update operations
+ * @vops: VMA operationa
+ *
+ * Prepare PT update operations which includes updating internal PT state,
+ * allocate memory for page tables, populate page table being pruned in, and
+ * create PT update operations for leaf insertion / removal.
+ *
+ * Return: 0 on success, negative error code on error.
+ */
+int xe_pt_update_ops_prepare(struct xe_tile *tile, struct xe_vma_ops *vops)
+{
+	struct xe_vm_pgtable_update_ops *pt_update_ops =
+		&vops->pt_update_ops[tile->id];
+	struct xe_vma_op *op;
+	int err;
+
+	lockdep_assert_held(&vops->vm->lock);
+	xe_vm_assert_held(vops->vm);
+
+	xe_pt_update_ops_init(pt_update_ops);
+
+	err = dma_resv_reserve_fences(xe_vm_resv(vops->vm),
+				      tile_to_xe(tile)->info.tile_count);
+	if (err)
+		return err;
+
+	list_for_each_entry(op, &vops->list, link) {
+		err = op_prepare(vops->vm, tile, pt_update_ops, op);
+
+		if (err)
+			return err;
 	}
 
-	if (!vma->tile_present)
-		list_del_init(&vma->combined_links.rebind);
+	xe_tile_assert(tile, pt_update_ops->current_op <=
+		       pt_update_ops->num_ops);
+
+	return 0;
+}
+
+static void bind_op_commit(struct xe_vm *vm, struct xe_tile *tile,
+			   struct xe_vm_pgtable_update_ops *pt_update_ops,
+			   struct xe_vma *vma, struct dma_fence *fence)
+{
+	if (!xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
+		dma_resv_add_fence(xe_vma_bo(vma)->ttm.base.resv, fence,
+				   pt_update_ops->wait_vm_bookkeep ?
+				   DMA_RESV_USAGE_KERNEL :
+				   DMA_RESV_USAGE_BOOKKEEP);
+	vma->tile_present |= BIT(tile->id);
+	vma->tile_staged &= ~BIT(tile->id);
+	if (xe_vma_is_userptr(vma)) {
+		lockdep_assert_held_read(&vm->userptr.notifier_lock);
+		to_userptr_vma(vma)->userptr.initial_bind = true;
+	}
 
-	if (unbind_pt_update.locked) {
-		xe_tile_assert(tile, xe_vma_is_userptr(vma));
+	/*
+	 * Kick rebind worker if this bind triggers preempt fences and not in
+	 * the rebind worker
+	 */
+	if (pt_update_ops->wait_vm_bookkeep &&
+	    xe_vm_in_preempt_fence_mode(vm) &&
+	    !current->mm)
+		xe_vm_queue_rebind_worker(vm);
+}
+
+static void unbind_op_commit(struct xe_vm *vm, struct xe_tile *tile,
+			     struct xe_vm_pgtable_update_ops *pt_update_ops,
+			     struct xe_vma *vma, struct dma_fence *fence)
+{
+	if (!xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
+		dma_resv_add_fence(xe_vma_bo(vma)->ttm.base.resv, fence,
+				   pt_update_ops->wait_vm_bookkeep ?
+				   DMA_RESV_USAGE_KERNEL :
+				   DMA_RESV_USAGE_BOOKKEEP);
+	vma->tile_present &= ~BIT(tile->id);
+	if (!vma->tile_present) {
+		list_del_init(&vma->combined_links.rebind);
+		if (xe_vma_is_userptr(vma)) {
+			lockdep_assert_held_read(&vm->userptr.notifier_lock);
 
-		if (!vma->tile_present) {
 			spin_lock(&vm->userptr.invalidated_lock);
 			list_del_init(&to_userptr_vma(vma)->userptr.invalidate_link);
 			spin_unlock(&vm->userptr.invalidated_lock);
 		}
-		up_read(&vm->userptr.notifier_lock);
-		xe_bo_put_commit(&deferred);
 	}
+}
+
+static void op_commit(struct xe_vm *vm,
+		      struct xe_tile *tile,
+		      struct xe_vm_pgtable_update_ops *pt_update_ops,
+		      struct xe_vma_op *op, struct dma_fence *fence)
+{
+	xe_vm_assert_held(vm);
+
+	switch (op->base.op) {
+	case DRM_GPUVA_OP_MAP:
+		if (!op->map.immediate && xe_vm_in_fault_mode(vm))
+			break;
+
+		bind_op_commit(vm, tile, pt_update_ops, op->map.vma, fence);
+		break;
+	case DRM_GPUVA_OP_REMAP:
+		unbind_op_commit(vm, tile, pt_update_ops,
+				 gpuva_to_vma(op->base.remap.unmap->va), fence);
+
+		if (op->remap.prev)
+			bind_op_commit(vm, tile, pt_update_ops, op->remap.prev,
+				       fence);
+		if (op->remap.next)
+			bind_op_commit(vm, tile, pt_update_ops, op->remap.next,
+				       fence);
+		break;
+	case DRM_GPUVA_OP_UNMAP:
+		unbind_op_commit(vm, tile, pt_update_ops,
+				 gpuva_to_vma(op->base.unmap.va), fence);
+		break;
+	case DRM_GPUVA_OP_PREFETCH:
+		bind_op_commit(vm, tile, pt_update_ops,
+			       gpuva_to_vma(op->base.prefetch.va), fence);
+		break;
+	default:
+		drm_warn(&vm->xe->drm, "NOT POSSIBLE");
+	}
+}
+
+static const struct xe_migrate_pt_update_ops migrate_ops = {
+	.populate = xe_vm_populate_pgtable,
+	.clear = xe_migrate_clear_pgtable_callback,
+	.pre_commit = xe_pt_pre_commit,
+};
+
+static const struct xe_migrate_pt_update_ops userptr_migrate_ops = {
+	.populate = xe_vm_populate_pgtable,
+	.clear = xe_migrate_clear_pgtable_callback,
+	.pre_commit = xe_pt_userptr_pre_commit,
+};
+
+/**
+ * xe_pt_update_ops_run() - Run PT update operations
+ * @tile: Tile of PT update operations
+ * @vops: VMA operationa
+ *
+ * Run PT update operations which includes committing internal PT state changes,
+ * creating job for PT update operations for leaf insertion / removal, and
+ * installing job fence in various places.
+  *
+ * Return: fence on success, negative ERR_PTR on error.
+ */
+struct dma_fence *
+xe_pt_update_ops_run(struct xe_tile *tile, struct xe_vma_ops *vops)
+{
+	struct xe_vm *vm = vops->vm;
+	struct xe_vm_pgtable_update_ops *pt_update_ops =
+		&vops->pt_update_ops[tile->id];
+	struct dma_fence *fence;
+	struct invalidation_fence *ifence = NULL;
+	struct xe_range_fence *rfence;
+	struct xe_vma_op *op;
+	int err = 0;
+	struct xe_migrate_pt_update update = {
+		.ops = pt_update_ops->needs_userptr_lock ?
+			&userptr_migrate_ops :
+			&migrate_ops,
+		.vops = vops,
+		.tile_id = tile->id
+	};
+
+	lockdep_assert_held(&vm->lock);
+	xe_vm_assert_held(vm);
+
+	if (!pt_update_ops->current_op) {
+		xe_tile_assert(tile, xe_vm_in_fault_mode(vm));
+
+		return dma_fence_get_stub();
+	}
+
+	if (pt_update_ops->needs_invalidation) {
+		ifence = kzalloc(sizeof(*ifence), GFP_KERNEL);
+		if (!ifence)
+			return ERR_PTR(-ENOMEM);
+	}
+
+	rfence = kzalloc(sizeof(*rfence), GFP_KERNEL);
+	if (!rfence) {
+		err = -ENOMEM;
+		goto free_ifence;
+	}
+
+	fence = xe_migrate_update_pgtables(tile->migrate, &update);
+	if (IS_ERR(fence)) {
+		err = PTR_ERR(fence);
+		goto free_rfence;
+	}
+
+	err = xe_range_fence_insert(&vm->rftree[tile->id], rfence,
+				    &xe_range_fence_kfree_ops,
+				    pt_update_ops->start,
+				    pt_update_ops->last, fence);
+	if (err)
+		dma_fence_wait(fence, false);
+
+	/* tlb invalidation must be done before signaling rebind */
+	if (ifence) {
+		err = invalidation_fence_init(tile->primary_gt, ifence, fence,
+					      pt_update_ops->start,
+					      pt_update_ops->last,
+					      vm->usm.asid);
+		if (err)
+			goto put_fence;
+		fence = &ifence->base.base;
+	}
+
+	dma_resv_add_fence(xe_vm_resv(vm), fence,
+			   pt_update_ops->wait_vm_bookkeep ?
+			   DMA_RESV_USAGE_KERNEL :
+			   DMA_RESV_USAGE_BOOKKEEP);
+
+	list_for_each_entry(op, &vops->list, link)
+		op_commit(vops->vm, tile, pt_update_ops, op, fence);
+
+	if (pt_update_ops->needs_userptr_lock)
+		up_read(&vm->userptr.notifier_lock);
 
 	return fence;
+
+put_fence:
+	if (pt_update_ops->needs_userptr_lock)
+		up_read(&vm->userptr.notifier_lock);
+	dma_fence_put(fence);
+free_rfence:
+	kfree(rfence);
+free_ifence:
+	kfree(ifence);
+
+	return ERR_PTR(err);
 }
+
+/**
+ * xe_pt_update_ops_fini() - Finish PT update operations
+ * @tile: Tile of PT update operations
+ * @vops: VMA operations
+ *
+ * Finish PT update operations by committing to destroy page table memory
+ */
+void xe_pt_update_ops_fini(struct xe_tile *tile, struct xe_vma_ops *vops)
+{
+	struct xe_vm_pgtable_update_ops *pt_update_ops =
+		&vops->pt_update_ops[tile->id];
+	int i;
+
+	lockdep_assert_held(&vops->vm->lock);
+	xe_vm_assert_held(vops->vm);
+
+	/* FIXME: Not 100% correct */
+	for (i = 0; i < pt_update_ops->num_ops; ++i) {
+		struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[i];
+
+		if (pt_op->bind)
+			xe_pt_free_bind(pt_op->entries, pt_op->num_entries);
+	}
+	xe_bo_put_commit(&vops->pt_update_ops[tile->id].deferred);
+}
+
+/**
+ * xe_pt_update_ops_abort() - Abort PT update operations
+ * @tile: Tile of PT update operations
+ * @vops: VMA operationa
+ *
+ *  Abort PT update operations by unwinding internal PT state
+ */
+void xe_pt_update_ops_abort(struct xe_tile *tile, struct xe_vma_ops *vops)
+{
+	lockdep_assert_held(&vops->vm->lock);
+	xe_vm_assert_held(vops->vm);
+
+	/* FIXME: Just kill VM for now + cleanup PTs */
+	xe_bo_put_commit(&vops->pt_update_ops[tile->id].deferred);
+	xe_vm_kill(vops->vm, false);
+ }
diff --git a/drivers/gpu/drm/xe/xe_pt.h b/drivers/gpu/drm/xe/xe_pt.h
index 71a4fbfcff43..9ab386431cad 100644
--- a/drivers/gpu/drm/xe/xe_pt.h
+++ b/drivers/gpu/drm/xe/xe_pt.h
@@ -17,6 +17,7 @@ struct xe_sync_entry;
 struct xe_tile;
 struct xe_vm;
 struct xe_vma;
+struct xe_vma_ops;
 
 /* Largest huge pte is currently 1GiB. May become device dependent. */
 #define MAX_HUGEPTE_LEVEL 2
@@ -34,14 +35,11 @@ void xe_pt_populate_empty(struct xe_tile *tile, struct xe_vm *vm,
 
 void xe_pt_destroy(struct xe_pt *pt, u32 flags, struct llist_head *deferred);
 
-struct dma_fence *
-__xe_pt_bind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue *q,
-		 struct xe_sync_entry *syncs, u32 num_syncs,
-		 bool rebind);
-
-struct dma_fence *
-__xe_pt_unbind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue *q,
-		   struct xe_sync_entry *syncs, u32 num_syncs);
+int xe_pt_update_ops_prepare(struct xe_tile *tile, struct xe_vma_ops *vops);
+struct dma_fence *xe_pt_update_ops_run(struct xe_tile *tile,
+				       struct xe_vma_ops *vops);
+void xe_pt_update_ops_fini(struct xe_tile *tile, struct xe_vma_ops *vops);
+void xe_pt_update_ops_abort(struct xe_tile *tile, struct xe_vma_ops *vops);
 
 bool xe_pt_zap_ptes(struct xe_tile *tile, struct xe_vma *vma);
 
diff --git a/drivers/gpu/drm/xe/xe_pt_types.h b/drivers/gpu/drm/xe/xe_pt_types.h
index 2093150f461e..384cc04de719 100644
--- a/drivers/gpu/drm/xe/xe_pt_types.h
+++ b/drivers/gpu/drm/xe/xe_pt_types.h
@@ -78,6 +78,8 @@ struct xe_vm_pgtable_update {
 struct xe_vm_pgtable_update_op {
 	/** @entries: entries to update for this operation */
 	struct xe_vm_pgtable_update entries[XE_VM_MAX_LEVEL * 2 + 1];
+	/** @vma: VMA for operation, operation not valid if NULL */
+	struct xe_vma *vma;
 	/** @num_entries: number of entries for this update operation */
 	u32 num_entries;
 	/** @bind: is a bind */
@@ -86,4 +88,38 @@ struct xe_vm_pgtable_update_op {
 	bool rebind;
 };
 
+/** struct xe_vm_pgtable_update_ops: page table update operations */
+struct xe_vm_pgtable_update_ops {
+	/** @ops: operations */
+	struct xe_vm_pgtable_update_op *ops;
+	/** @deferred: deferred list to destroy PT entries */
+	struct llist_head deferred;
+	/** @q: exec queue for PT operations */
+	struct xe_exec_queue *q;
+	/** @start: start address of ops */
+	u64 start;
+	/** @last: last address of ops */
+	u64 last;
+	/** @num_ops: number of operations */
+	u32 num_ops;
+	/** @current_op: current operations */
+	u32 current_op;
+	/** @needs_userptr_lock: Needs userptr lock */
+	bool needs_userptr_lock;
+	/** @needs_invalidation: Needs invalidation */
+	bool needs_invalidation;
+	/**
+	 * @wait_vm_bookkeep: PT operations need to wait until VM is idle
+	 * (bookkeep dma-resv slots are idle) and stage all future VM activity
+	 * behind these operations (install PT operations into VM kernel
+	 * dma-resv slot).
+	 */
+	bool wait_vm_bookkeep;
+	/**
+	 * @wait_vm_kernel: PT operations need to wait until VM kernel dma-resv
+	 * slots are idle.
+	 */
+	bool wait_vm_kernel;
+};
+
 #endif
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 65d4070e9e71..f2bd712cef97 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -315,7 +315,7 @@ int __xe_vm_userptr_needs_repin(struct xe_vm *vm)
 
 #define XE_VM_REBIND_RETRY_TIMEOUT_MS 1000
 
-static void xe_vm_kill(struct xe_vm *vm, bool unlocked)
+void xe_vm_kill(struct xe_vm *vm, bool unlocked)
 {
 	struct xe_exec_queue *q;
 
@@ -792,7 +792,7 @@ int xe_vm_rebind(struct xe_vm *vm, bool rebind_worker)
 	struct xe_vma *vma, *next;
 	struct xe_vma_ops vops;
 	struct xe_vma_op *op, *next_op;
-	int err;
+	int err, i;
 
 	lockdep_assert_held(&vm->lock);
 	if ((xe_vm_in_lr_mode(vm) && !rebind_worker) ||
@@ -800,6 +800,8 @@ int xe_vm_rebind(struct xe_vm *vm, bool rebind_worker)
 		return 0;
 
 	xe_vma_ops_init(&vops, vm, NULL, NULL, 0);
+	for (i = 0; i < XE_MAX_TILES_PER_DEVICE; ++i)
+		vops.pt_update_ops[i].wait_vm_bookkeep = true;
 
 	xe_vm_assert_held(vm);
 	list_for_each_entry(vma, &vm->rebind_list, combined_links.rebind) {
@@ -844,6 +846,8 @@ struct dma_fence *xe_vma_rebind(struct xe_vm *vm, struct xe_vma *vma, u8 tile_ma
 	struct dma_fence *fence = NULL;
 	struct xe_vma_ops vops;
 	struct xe_vma_op *op, *next_op;
+	struct xe_tile *tile;
+	u8 id;
 	int err;
 
 	lockdep_assert_held(&vm->lock);
@@ -851,6 +855,11 @@ struct dma_fence *xe_vma_rebind(struct xe_vm *vm, struct xe_vma *vma, u8 tile_ma
 	xe_assert(vm->xe, xe_vm_in_fault_mode(vm));
 
 	xe_vma_ops_init(&vops, vm, NULL, NULL, 0);
+	for_each_tile(tile, vm->xe, id) {
+		vops.pt_update_ops[id].wait_vm_bookkeep = true;
+		vops.pt_update_ops[tile->id].q =
+			xe_tile_migrate_exec_queue(tile);
+	}
 
 	err = xe_vm_ops_add_rebind(&vops, vma, tile_mask);
 	if (err)
@@ -1691,147 +1700,6 @@ to_wait_exec_queue(struct xe_vm *vm, struct xe_exec_queue *q)
 	return q ? q : vm->q[0];
 }
 
-static struct dma_fence *
-xe_vm_unbind_vma(struct xe_vma *vma, struct xe_exec_queue *q,
-		 struct xe_sync_entry *syncs, u32 num_syncs,
-		 bool first_op, bool last_op)
-{
-	struct xe_vm *vm = xe_vma_vm(vma);
-	struct xe_exec_queue *wait_exec_queue = to_wait_exec_queue(vm, q);
-	struct xe_tile *tile;
-	struct dma_fence *fence = NULL;
-	struct dma_fence **fences = NULL;
-	struct dma_fence_array *cf = NULL;
-	int cur_fence = 0;
-	int number_tiles = hweight8(vma->tile_present);
-	int err;
-	u8 id;
-
-	trace_xe_vma_unbind(vma);
-
-	if (number_tiles > 1) {
-		fences = kmalloc_array(number_tiles, sizeof(*fences),
-				       GFP_KERNEL);
-		if (!fences)
-			return ERR_PTR(-ENOMEM);
-	}
-
-	for_each_tile(tile, vm->xe, id) {
-		if (!(vma->tile_present & BIT(id)))
-			goto next;
-
-		fence = __xe_pt_unbind_vma(tile, vma, q ? q : vm->q[id],
-					   first_op ? syncs : NULL,
-					   first_op ? num_syncs : 0);
-		if (IS_ERR(fence)) {
-			err = PTR_ERR(fence);
-			goto err_fences;
-		}
-
-		if (fences)
-			fences[cur_fence++] = fence;
-
-next:
-		if (q && vm->pt_root[id] && !list_empty(&q->multi_gt_list))
-			q = list_next_entry(q, multi_gt_list);
-	}
-
-	if (fences) {
-		cf = dma_fence_array_create(number_tiles, fences,
-					    vm->composite_fence_ctx,
-					    vm->composite_fence_seqno++,
-					    false);
-		if (!cf) {
-			--vm->composite_fence_seqno;
-			err = -ENOMEM;
-			goto err_fences;
-		}
-	}
-
-	fence = cf ? &cf->base : !fence ?
-		xe_exec_queue_last_fence_get(wait_exec_queue, vm) : fence;
-
-	return fence;
-
-err_fences:
-	if (fences) {
-		while (cur_fence)
-			dma_fence_put(fences[--cur_fence]);
-		kfree(fences);
-	}
-
-	return ERR_PTR(err);
-}
-
-static struct dma_fence *
-xe_vm_bind_vma(struct xe_vma *vma, struct xe_exec_queue *q,
-	       struct xe_sync_entry *syncs, u32 num_syncs,
-	       u8 tile_mask, bool first_op, bool last_op)
-{
-	struct xe_tile *tile;
-	struct dma_fence *fence;
-	struct dma_fence **fences = NULL;
-	struct dma_fence_array *cf = NULL;
-	struct xe_vm *vm = xe_vma_vm(vma);
-	int cur_fence = 0;
-	int number_tiles = hweight8(tile_mask);
-	int err;
-	u8 id;
-
-	trace_xe_vma_bind(vma);
-
-	if (number_tiles > 1) {
-		fences = kmalloc_array(number_tiles, sizeof(*fences),
-				       GFP_KERNEL);
-		if (!fences)
-			return ERR_PTR(-ENOMEM);
-	}
-
-	for_each_tile(tile, vm->xe, id) {
-		if (!(tile_mask & BIT(id)))
-			goto next;
-
-		fence = __xe_pt_bind_vma(tile, vma, q ? q : vm->q[id],
-					 first_op ? syncs : NULL,
-					 first_op ? num_syncs : 0,
-					 vma->tile_present & BIT(id));
-		if (IS_ERR(fence)) {
-			err = PTR_ERR(fence);
-			goto err_fences;
-		}
-
-		if (fences)
-			fences[cur_fence++] = fence;
-
-next:
-		if (q && vm->pt_root[id] && !list_empty(&q->multi_gt_list))
-			q = list_next_entry(q, multi_gt_list);
-	}
-
-	if (fences) {
-		cf = dma_fence_array_create(number_tiles, fences,
-					    vm->composite_fence_ctx,
-					    vm->composite_fence_seqno++,
-					    false);
-		if (!cf) {
-			--vm->composite_fence_seqno;
-			err = -ENOMEM;
-			goto err_fences;
-		}
-	}
-
-	return cf ? &cf->base : fence;
-
-err_fences:
-	if (fences) {
-		while (cur_fence)
-			dma_fence_put(fences[--cur_fence]);
-		kfree(fences);
-	}
-
-	return ERR_PTR(err);
-}
-
 static struct xe_user_fence *
 find_ufence_get(struct xe_sync_entry *syncs, u32 num_syncs)
 {
@@ -1847,48 +1715,6 @@ find_ufence_get(struct xe_sync_entry *syncs, u32 num_syncs)
 	return NULL;
 }
 
-static struct dma_fence *
-xe_vm_bind(struct xe_vm *vm, struct xe_vma *vma, struct xe_exec_queue *q,
-	   struct xe_bo *bo, struct xe_sync_entry *syncs, u32 num_syncs,
-	   u8 tile_mask, bool immediate, bool first_op, bool last_op)
-{
-	struct dma_fence *fence;
-	struct xe_exec_queue *wait_exec_queue = to_wait_exec_queue(vm, q);
-
-	xe_vm_assert_held(vm);
-	xe_bo_assert_held(bo);
-
-	if (immediate) {
-		fence = xe_vm_bind_vma(vma, q, syncs, num_syncs, tile_mask,
-				       first_op, last_op);
-		if (IS_ERR(fence))
-			return fence;
-	} else {
-		xe_assert(vm->xe, xe_vm_in_fault_mode(vm));
-
-		fence = xe_exec_queue_last_fence_get(wait_exec_queue, vm);
-	}
-
-	return fence;
-}
-
-static struct dma_fence *
-xe_vm_unbind(struct xe_vm *vm, struct xe_vma *vma,
-	     struct xe_exec_queue *q, struct xe_sync_entry *syncs,
-	     u32 num_syncs, bool first_op, bool last_op)
-{
-	struct dma_fence *fence;
-
-	xe_vm_assert_held(vm);
-	xe_bo_assert_held(xe_vma_bo(vma));
-
-	fence = xe_vm_unbind_vma(vma, q, syncs, num_syncs, first_op, last_op);
-	if (IS_ERR(fence))
-		return fence;
-
-	return fence;
-}
-
 #define ALL_DRM_XE_VM_CREATE_FLAGS (DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE | \
 				    DRM_XE_VM_CREATE_FLAG_LR_MODE | \
 				    DRM_XE_VM_CREATE_FLAG_FAULT_MODE)
@@ -2029,21 +1855,6 @@ static const u32 region_to_mem_type[] = {
 	XE_PL_VRAM1,
 };
 
-static struct dma_fence *
-xe_vm_prefetch(struct xe_vm *vm, struct xe_vma *vma,
-	       struct xe_exec_queue *q, struct xe_sync_entry *syncs,
-	       u32 num_syncs, bool first_op, bool last_op)
-{
-	struct xe_exec_queue *wait_exec_queue = to_wait_exec_queue(vm, q);
-
-	if (vma->tile_mask != (vma->tile_present & ~vma->tile_invalidated)) {
-		return xe_vm_bind(vm, vma, q, xe_vma_bo(vma), syncs, num_syncs,
-				  vma->tile_mask, true, first_op, last_op);
-	} else {
-		return xe_exec_queue_last_fence_get(wait_exec_queue, vm);
-	}
-}
-
 static void prep_vma_destroy(struct xe_vm *vm, struct xe_vma *vma,
 			     bool post_commit)
 {
@@ -2332,13 +2143,10 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)
 	return err;
 }
 
-static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct xe_exec_queue *q,
-				   struct drm_gpuva_ops *ops,
-				   struct xe_sync_entry *syncs, u32 num_syncs,
-				   struct xe_vma_ops *vops, bool last)
+static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
+				   struct xe_vma_ops *vops)
 {
 	struct xe_device *xe = vm->xe;
-	struct xe_vma_op *last_op = NULL;
 	struct drm_gpuva_op *__op;
 	struct xe_tile *tile;
 	u8 id, tile_mask = 0;
@@ -2352,19 +2160,10 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct xe_exec_queue *q,
 	drm_gpuva_for_each_op(__op, ops) {
 		struct xe_vma_op *op = gpuva_op_to_vma_op(__op);
 		struct xe_vma *vma;
-		bool first = list_empty(&vops->list);
 		unsigned int flags = 0;
 
 		INIT_LIST_HEAD(&op->link);
 		list_add_tail(&op->link, &vops->list);
-
-		if (first) {
-			op->flags |= XE_VMA_OP_FIRST;
-			op->num_syncs = num_syncs;
-			op->syncs = syncs;
-		}
-
-		op->q = q;
 		op->tile_mask = tile_mask;
 
 		switch (op->base.op) {
@@ -2477,197 +2276,21 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct xe_exec_queue *q,
 		}
 		case DRM_GPUVA_OP_UNMAP:
 		case DRM_GPUVA_OP_PREFETCH:
+			/* FIXME: Need to skip some prefetch ops */
 			xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
 			break;
 		default:
 			drm_warn(&vm->xe->drm, "NOT POSSIBLE");
 		}
 
-		last_op = op;
-
 		err = xe_vma_op_commit(vm, op);
 		if (err)
 			return err;
 	}
 
-	/* FIXME: Unhandled corner case */
-	XE_WARN_ON(!last_op && last && !list_empty(&vops->list));
-
-	if (!last_op)
-		return 0;
-
-	if (last) {
-		last_op->flags |= XE_VMA_OP_LAST;
-		last_op->num_syncs = num_syncs;
-		last_op->syncs = syncs;
-	}
-
 	return 0;
 }
 
-static struct dma_fence *op_execute(struct xe_vm *vm, struct xe_vma *vma,
-				    struct xe_vma_op *op)
-{
-	struct dma_fence *fence = NULL;
-
-	lockdep_assert_held(&vm->lock);
-
-	xe_vm_assert_held(vm);
-	xe_bo_assert_held(xe_vma_bo(vma));
-
-	switch (op->base.op) {
-	case DRM_GPUVA_OP_MAP:
-		fence = xe_vm_bind(vm, vma, op->q, xe_vma_bo(vma),
-				   op->syncs, op->num_syncs,
-				   op->tile_mask,
-				   op->map.immediate || !xe_vm_in_fault_mode(vm),
-				   op->flags & XE_VMA_OP_FIRST,
-				   op->flags & XE_VMA_OP_LAST);
-		break;
-	case DRM_GPUVA_OP_REMAP:
-	{
-		bool prev = !!op->remap.prev;
-		bool next = !!op->remap.next;
-
-		if (!op->remap.unmap_done) {
-			if (prev || next)
-				vma->gpuva.flags |= XE_VMA_FIRST_REBIND;
-			fence = xe_vm_unbind(vm, vma, op->q, op->syncs,
-					     op->num_syncs,
-					     op->flags & XE_VMA_OP_FIRST,
-					     op->flags & XE_VMA_OP_LAST &&
-					     !prev && !next);
-			if (IS_ERR(fence))
-				break;
-			op->remap.unmap_done = true;
-		}
-
-		if (prev) {
-			op->remap.prev->gpuva.flags |= XE_VMA_LAST_REBIND;
-			dma_fence_put(fence);
-			fence = xe_vm_bind(vm, op->remap.prev, op->q,
-					   xe_vma_bo(op->remap.prev), op->syncs,
-					   op->num_syncs,
-					   op->remap.prev->tile_mask, true,
-					   false,
-					   op->flags & XE_VMA_OP_LAST && !next);
-			op->remap.prev->gpuva.flags &= ~XE_VMA_LAST_REBIND;
-			if (IS_ERR(fence))
-				break;
-			op->remap.prev = NULL;
-		}
-
-		if (next) {
-			op->remap.next->gpuva.flags |= XE_VMA_LAST_REBIND;
-			dma_fence_put(fence);
-			fence = xe_vm_bind(vm, op->remap.next, op->q,
-					   xe_vma_bo(op->remap.next),
-					   op->syncs, op->num_syncs,
-					   op->remap.next->tile_mask, true,
-					   false, op->flags & XE_VMA_OP_LAST);
-			op->remap.next->gpuva.flags &= ~XE_VMA_LAST_REBIND;
-			if (IS_ERR(fence))
-				break;
-			op->remap.next = NULL;
-		}
-
-		break;
-	}
-	case DRM_GPUVA_OP_UNMAP:
-		fence = xe_vm_unbind(vm, vma, op->q, op->syncs,
-				     op->num_syncs, op->flags & XE_VMA_OP_FIRST,
-				     op->flags & XE_VMA_OP_LAST);
-		break;
-	case DRM_GPUVA_OP_PREFETCH:
-		fence = xe_vm_prefetch(vm, vma, op->q, op->syncs, op->num_syncs,
-				       op->flags & XE_VMA_OP_FIRST,
-				       op->flags & XE_VMA_OP_LAST);
-		break;
-	default:
-		drm_warn(&vm->xe->drm, "NOT POSSIBLE");
-	}
-
-	if (IS_ERR(fence))
-		trace_xe_vma_fail(vma);
-
-	return fence;
-}
-
-static struct dma_fence *
-__xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
-		    struct xe_vma_op *op)
-{
-	struct dma_fence *fence;
-	int err;
-
-retry_userptr:
-	fence = op_execute(vm, vma, op);
-	if (IS_ERR(fence) && PTR_ERR(fence) == -EAGAIN) {
-		lockdep_assert_held_write(&vm->lock);
-
-		if (op->base.op == DRM_GPUVA_OP_REMAP) {
-			if (!op->remap.unmap_done)
-				vma = gpuva_to_vma(op->base.remap.unmap->va);
-			else if (op->remap.prev)
-				vma = op->remap.prev;
-			else
-				vma = op->remap.next;
-		}
-
-		if (xe_vma_is_userptr(vma)) {
-			err = xe_vma_userptr_pin_pages(to_userptr_vma(vma));
-			if (!err)
-				goto retry_userptr;
-
-			fence = ERR_PTR(err);
-			trace_xe_vma_fail(vma);
-		}
-	}
-
-	return fence;
-}
-
-static struct dma_fence *
-xe_vma_op_execute(struct xe_vm *vm, struct xe_vma_op *op)
-{
-	struct dma_fence *fence = ERR_PTR(-ENOMEM);
-
-	lockdep_assert_held(&vm->lock);
-
-	switch (op->base.op) {
-	case DRM_GPUVA_OP_MAP:
-		fence = __xe_vma_op_execute(vm, op->map.vma, op);
-		break;
-	case DRM_GPUVA_OP_REMAP:
-	{
-		struct xe_vma *vma;
-
-		if (!op->remap.unmap_done)
-			vma = gpuva_to_vma(op->base.remap.unmap->va);
-		else if (op->remap.prev)
-			vma = op->remap.prev;
-		else
-			vma = op->remap.next;
-
-		fence = __xe_vma_op_execute(vm, vma, op);
-		break;
-	}
-	case DRM_GPUVA_OP_UNMAP:
-		fence = __xe_vma_op_execute(vm, gpuva_to_vma(op->base.unmap.va),
-					    op);
-		break;
-	case DRM_GPUVA_OP_PREFETCH:
-		fence = __xe_vma_op_execute(vm,
-					    gpuva_to_vma(op->base.prefetch.va),
-					    op);
-		break;
-	default:
-		drm_warn(&vm->xe->drm, "NOT POSSIBLE");
-	}
-
-	return fence;
-}
-
 static void xe_vma_op_unwind(struct xe_vm *vm, struct xe_vma_op *op,
 			     bool post_commit, bool prev_post_commit,
 			     bool next_post_commit)
@@ -2853,23 +2476,110 @@ static int vm_bind_ioctl_ops_lock_and_prep(struct drm_exec *exec,
 	return 0;
 }
 
+static int vm_ops_setup_tile_args(struct xe_vm *vm, struct xe_vma_ops *vops)
+{
+	struct xe_exec_queue *q = vops->q;
+	struct xe_tile *tile;
+	int number_tiles = 0;
+	u8 id;
+
+	for_each_tile(tile, vm->xe, id) {
+		if (vops->pt_update_ops[id].num_ops)
+			++number_tiles;
+
+		if (vops->pt_update_ops[id].q)
+			continue;
+
+		if (q) {
+			vops->pt_update_ops[id].q = q;
+			if (vm->pt_root[id] && !list_empty(&q->multi_gt_list))
+				q = list_next_entry(q, multi_gt_list);
+		} else {
+			vops->pt_update_ops[id].q = vm->q[id];
+		}
+	}
+
+	return number_tiles;
+}
+
 static struct dma_fence *ops_execute(struct xe_vm *vm,
 				     struct xe_vma_ops *vops)
 {
-	struct xe_vma_op *op, *next;
+	struct xe_tile *tile;
 	struct dma_fence *fence = NULL;
+	struct dma_fence **fences = NULL;
+	struct dma_fence_array *cf = NULL;
+	int number_tiles = 0, current_fence = 0, err;
+	u8 id;
 
-	list_for_each_entry_safe(op, next, &vops->list, link) {
-		dma_fence_put(fence);
-		fence = xe_vma_op_execute(vm, op);
-		if (IS_ERR(fence)) {
-			drm_warn(&vm->xe->drm, "VM op(%d) failed with %ld",
-				 op->base.op, PTR_ERR(fence));
-			fence = ERR_PTR(-ENOSPC);
-			break;
+	number_tiles = vm_ops_setup_tile_args(vm, vops);
+	if (number_tiles == 0)
+		return ERR_PTR(-ENODATA);
+
+	if (number_tiles > 1) {
+		fences = kmalloc_array(number_tiles, sizeof(*fences),
+				       GFP_KERNEL);
+		if (!fences)
+			return ERR_PTR(-ENOMEM);
+	}
+
+	for_each_tile(tile, vm->xe, id) {
+		if (!vops->pt_update_ops[id].num_ops)
+			continue;
+
+		err = xe_pt_update_ops_prepare(tile, vops);
+		if (err) {
+			fence = ERR_PTR(err);
+			goto err_out;
 		}
 	}
 
+	for_each_tile(tile, vm->xe, id) {
+		if (!vops->pt_update_ops[id].num_ops)
+			continue;
+
+		fence = xe_pt_update_ops_run(tile, vops);
+		if (IS_ERR(fence))
+			goto err_out;
+
+		if (fences)
+			fences[current_fence++] = fence;
+	}
+
+	if (fences) {
+		cf = dma_fence_array_create(number_tiles, fences,
+					    vm->composite_fence_ctx,
+					    vm->composite_fence_seqno++,
+					    false);
+		if (!cf) {
+			--vm->composite_fence_seqno;
+			fence = ERR_PTR(-ENOMEM);
+			goto err_out;
+		}
+		fence = &cf->base;
+	}
+
+	for_each_tile(tile, vm->xe, id) {
+		if (!vops->pt_update_ops[id].num_ops)
+			continue;
+
+		xe_pt_update_ops_fini(tile, vops);
+	}
+
+	return fence;
+
+err_out:
+	for_each_tile(tile, vm->xe, id) {
+		if (!vops->pt_update_ops[id].num_ops)
+			continue;
+
+		xe_pt_update_ops_abort(tile, vops);
+	}
+	while (current_fence)
+		dma_fence_put(fences[--current_fence]);
+	kfree(fences);
+	kfree(cf);
+
 	return fence;
 }
 
@@ -2950,12 +2660,10 @@ static int vm_bind_ioctl_ops_execute(struct xe_vm *vm,
 		fence = ops_execute(vm, vops);
 		if (IS_ERR(fence)) {
 			err = PTR_ERR(fence);
-			/* FIXME: Killing VM rather than proper error handling */
-			xe_vm_kill(vm, false);
 			goto unlock;
-		} else {
-			vm_bind_ioctl_ops_fini(vm, vops, fence);
 		}
+
+		vm_bind_ioctl_ops_fini(vm, vops, fence);
 	}
 
 unlock:
@@ -3312,8 +3020,7 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 			goto unwind_ops;
 		}
 
-		err = vm_bind_ioctl_ops_parse(vm, q, ops[i], syncs, num_syncs,
-					      &vops, i == args->num_binds - 1);
+		err = vm_bind_ioctl_ops_parse(vm, ops[i], &vops);
 		if (err)
 			goto unwind_ops;
 	}
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index b481608b12f1..c864dba35e1d 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -259,6 +259,8 @@ static inline struct dma_resv *xe_vm_resv(struct xe_vm *vm)
 	return drm_gpuvm_resv(&vm->gpuvm);
 }
 
+void xe_vm_kill(struct xe_vm *vm, bool unlocked);
+
 /**
  * xe_vm_assert_held(vm) - Assert that the vm's reservation object is held.
  * @vm: The vm
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 211c88801182..27d651093d30 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -26,14 +26,12 @@ struct xe_vm_pgtable_update_op;
 #define XE_VMA_READ_ONLY	DRM_GPUVA_USERBITS
 #define XE_VMA_DESTROYED	(DRM_GPUVA_USERBITS << 1)
 #define XE_VMA_ATOMIC_PTE_BIT	(DRM_GPUVA_USERBITS << 2)
-#define XE_VMA_FIRST_REBIND	(DRM_GPUVA_USERBITS << 3)
-#define XE_VMA_LAST_REBIND	(DRM_GPUVA_USERBITS << 4)
-#define XE_VMA_PTE_4K		(DRM_GPUVA_USERBITS << 5)
-#define XE_VMA_PTE_2M		(DRM_GPUVA_USERBITS << 6)
-#define XE_VMA_PTE_1G		(DRM_GPUVA_USERBITS << 7)
-#define XE_VMA_PTE_64K		(DRM_GPUVA_USERBITS << 8)
-#define XE_VMA_PTE_COMPACT	(DRM_GPUVA_USERBITS << 9)
-#define XE_VMA_DUMPABLE		(DRM_GPUVA_USERBITS << 10)
+#define XE_VMA_PTE_4K		(DRM_GPUVA_USERBITS << 3)
+#define XE_VMA_PTE_2M		(DRM_GPUVA_USERBITS << 4)
+#define XE_VMA_PTE_1G		(DRM_GPUVA_USERBITS << 5)
+#define XE_VMA_PTE_64K		(DRM_GPUVA_USERBITS << 6)
+#define XE_VMA_PTE_COMPACT	(DRM_GPUVA_USERBITS << 7)
+#define XE_VMA_DUMPABLE		(DRM_GPUVA_USERBITS << 8)
 
 /** struct xe_userptr - User pointer */
 struct xe_userptr {
@@ -100,6 +98,9 @@ struct xe_vma {
 	 */
 	u8 tile_present;
 
+	/** @tile_staged: bind is staged for this VMA */
+	u8 tile_staged;
+
 	/**
 	 * @pat_index: The pat index to use when encoding the PTEs for this vma.
 	 */
@@ -315,31 +316,18 @@ struct xe_vma_op_prefetch {
 
 /** enum xe_vma_op_flags - flags for VMA operation */
 enum xe_vma_op_flags {
-	/** @XE_VMA_OP_FIRST: first VMA operation for a set of syncs */
-	XE_VMA_OP_FIRST			= BIT(0),
-	/** @XE_VMA_OP_LAST: last VMA operation for a set of syncs */
-	XE_VMA_OP_LAST			= BIT(1),
 	/** @XE_VMA_OP_COMMITTED: VMA operation committed */
-	XE_VMA_OP_COMMITTED		= BIT(2),
+	XE_VMA_OP_COMMITTED		= BIT(0),
 	/** @XE_VMA_OP_PREV_COMMITTED: Previous VMA operation committed */
-	XE_VMA_OP_PREV_COMMITTED	= BIT(3),
+	XE_VMA_OP_PREV_COMMITTED	= BIT(1),
 	/** @XE_VMA_OP_NEXT_COMMITTED: Next VMA operation committed */
-	XE_VMA_OP_NEXT_COMMITTED	= BIT(4),
+	XE_VMA_OP_NEXT_COMMITTED	= BIT(2),
 };
 
 /** struct xe_vma_op - VMA operation */
 struct xe_vma_op {
 	/** @base: GPUVA base operation */
 	struct drm_gpuva_op base;
-	/** @q: exec queue for this operation */
-	struct xe_exec_queue *q;
-	/**
-	 * @syncs: syncs for this operation, only used on first and last
-	 * operation
-	 */
-	struct xe_sync_entry *syncs;
-	/** @num_syncs: number of syncs */
-	u32 num_syncs;
 	/** @link: async operation link */
 	struct list_head link;
 	/** @flags: operation flags */
@@ -363,19 +351,14 @@ struct xe_vma_ops {
 	struct list_head list;
 	/** @vm: VM */
 	struct xe_vm *vm;
-	/** @q: exec queue these operations */
+	/** @q: exec queue for VMA operations */
 	struct xe_exec_queue *q;
 	/** @syncs: syncs these operation */
 	struct xe_sync_entry *syncs;
 	/** @num_syncs: number of syncs */
 	u32 num_syncs;
 	/** @pt_update_ops: page table update operations */
-	struct {
-		/** @ops: operations */
-		struct xe_vm_pgtable_update_op *ops;
-		/** @num_ops: number of operations */
-		u32 num_ops;
-	} pt_update_ops[XE_MAX_TILES_PER_DEVICE];
+	struct xe_vm_pgtable_update_ops pt_update_ops[XE_MAX_TILES_PER_DEVICE];
 };
 
 #endif
-- 
2.26.3


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

* [CI 20/44] drm/xe: Update VM trace events
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (17 preceding siblings ...)
  2024-06-14 21:57 ` [CI 19/44] drm/xe: Convert multiple bind ops into single job Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 21/44] drm/xe: Update PT layer with better error handling Oak Zeng
                   ` (39 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

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

The trace events have changed moving to a single job per VM bind IOCTL,
update the trace events align with old behavior as much as possible.

v1: Rebase (Oak)

Cc: Oak Zeng <oak.zeng@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_trace_bo.h | 10 ++++----
 drivers/gpu/drm/xe/xe_vm.c       | 42 ++++++++++++++++++++++++++++++--
 2 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_trace_bo.h b/drivers/gpu/drm/xe/xe_trace_bo.h
index f39f09ed3495..9b1a1d4304ae 100644
--- a/drivers/gpu/drm/xe/xe_trace_bo.h
+++ b/drivers/gpu/drm/xe/xe_trace_bo.h
@@ -117,11 +117,6 @@ DEFINE_EVENT(xe_vma, xe_vma_acc,
 	     TP_ARGS(vma)
 );
 
-DEFINE_EVENT(xe_vma, xe_vma_fail,
-	     TP_PROTO(struct xe_vma *vma),
-	     TP_ARGS(vma)
-);
-
 DEFINE_EVENT(xe_vma, xe_vma_bind,
 	     TP_PROTO(struct xe_vma *vma),
 	     TP_ARGS(vma)
@@ -237,6 +232,11 @@ DEFINE_EVENT(xe_vm, xe_vm_rebind_worker_exit,
 	     TP_ARGS(vm)
 );
 
+DEFINE_EVENT(xe_vm, xe_vm_ops_fail,
+	     TP_PROTO(struct xe_vm *vm),
+	     TP_ARGS(vm)
+);
+
 #endif
 
 /* This part must be outside protection */
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index f2bd712cef97..8e15177284a9 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -2476,6 +2476,38 @@ static int vm_bind_ioctl_ops_lock_and_prep(struct drm_exec *exec,
 	return 0;
 }
 
+static void op_trace(struct xe_vma_op *op)
+{
+	switch (op->base.op) {
+	case DRM_GPUVA_OP_MAP:
+		trace_xe_vma_bind(op->map.vma);
+		break;
+	case DRM_GPUVA_OP_REMAP:
+		trace_xe_vma_unbind(gpuva_to_vma(op->base.remap.unmap->va));
+		if (op->remap.prev)
+			trace_xe_vma_bind(op->remap.prev);
+		if (op->remap.next)
+			trace_xe_vma_bind(op->remap.next);
+		break;
+	case DRM_GPUVA_OP_UNMAP:
+		trace_xe_vma_unbind(gpuva_to_vma(op->base.unmap.va));
+		break;
+	case DRM_GPUVA_OP_PREFETCH:
+		trace_xe_vma_bind(gpuva_to_vma(op->base.prefetch.va));
+		break;
+	default:
+		XE_WARN_ON("NOT POSSIBLE");
+	}
+}
+
+static void trace_xe_vm_ops_execute(struct xe_vma_ops *vops)
+{
+	struct xe_vma_op *op;
+
+	list_for_each_entry(op, &vops->list, link)
+		op_trace(op);
+}
+
 static int vm_ops_setup_tile_args(struct xe_vm *vm, struct xe_vma_ops *vops)
 {
 	struct xe_exec_queue *q = vops->q;
@@ -2519,8 +2551,10 @@ static struct dma_fence *ops_execute(struct xe_vm *vm,
 	if (number_tiles > 1) {
 		fences = kmalloc_array(number_tiles, sizeof(*fences),
 				       GFP_KERNEL);
-		if (!fences)
-			return ERR_PTR(-ENOMEM);
+		if (!fences) {
+			fence = ERR_PTR(-ENOMEM);
+			goto err_trace;
+		}
 	}
 
 	for_each_tile(tile, vm->xe, id) {
@@ -2534,6 +2568,8 @@ static struct dma_fence *ops_execute(struct xe_vm *vm,
 		}
 	}
 
+	trace_xe_vm_ops_execute(vops);
+
 	for_each_tile(tile, vm->xe, id) {
 		if (!vops->pt_update_ops[id].num_ops)
 			continue;
@@ -2580,6 +2616,8 @@ static struct dma_fence *ops_execute(struct xe_vm *vm,
 	kfree(fences);
 	kfree(cf);
 
+err_trace:
+	trace_xe_vm_ops_fail(vm);
 	return fence;
 }
 
-- 
2.26.3


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

* [CI 21/44] drm/xe: Update PT layer with better error handling
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (18 preceding siblings ...)
  2024-06-14 21:57 ` [CI 20/44] drm/xe: Update VM trace events Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 22/44] drm/xe: Retry BO allocation Oak Zeng
                   ` (38 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

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

Update PT layer so if a memory allocation for a PTE fails the error can
be propagated to the user without requiring to be killed.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_pt.c | 208 ++++++++++++++++++++++++++++---------
 1 file changed, 160 insertions(+), 48 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index 8c61bb2c034d..62aec1a42249 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -845,19 +845,27 @@ xe_vm_populate_pgtable(struct xe_migrate_pt_update *pt_update, struct xe_tile *t
 	}
 }
 
-static void xe_pt_abort_bind(struct xe_vma *vma,
-			     struct xe_vm_pgtable_update *entries,
-			     u32 num_entries)
+static void xe_pt_cancel_bind(struct xe_vma *vma,
+			      struct xe_vm_pgtable_update *entries,
+			      u32 num_entries)
 {
 	u32 i, j;
 
 	for (i = 0; i < num_entries; i++) {
-		if (!entries[i].pt_entries)
+		struct xe_pt *pt = entries[i].pt;
+
+		if (!pt)
 			continue;
 
-		for (j = 0; j < entries[i].qwords; j++)
-			xe_pt_destroy(entries[i].pt_entries[j].pt, xe_vma_vm(vma)->flags, NULL);
+		if (pt->level) {
+			for (j = 0; j < entries[i].qwords; j++)
+				xe_pt_destroy(entries[i].pt_entries[j].pt,
+					      xe_vma_vm(vma)->flags, NULL);
+		}
+
 		kfree(entries[i].pt_entries);
+		entries[i].pt_entries = NULL;
+		entries[i].qwords = 0;
 	}
 }
 
@@ -873,10 +881,61 @@ static void xe_pt_commit_locks_assert(struct xe_vma *vma)
 	xe_vm_assert_held(vm);
 }
 
-static void xe_pt_commit_bind(struct xe_vma *vma,
-			      struct xe_vm_pgtable_update *entries,
-			      u32 num_entries, bool rebind,
-			      struct llist_head *deferred)
+static void xe_pt_commit(struct xe_vma *vma,
+			 struct xe_vm_pgtable_update *entries,
+			 u32 num_entries, struct llist_head *deferred)
+{
+	u32 i, j;
+
+	xe_pt_commit_locks_assert(vma);
+
+	for (i = 0; i < num_entries; i++) {
+		struct xe_pt *pt = entries[i].pt;
+
+		if (!pt->level)
+			continue;
+
+		for (j = 0; j < entries[i].qwords; j++) {
+			struct xe_pt *oldpte = entries[i].pt_entries[j].pt;
+
+			xe_pt_destroy(oldpte, xe_vma_vm(vma)->flags, deferred);
+		}
+	}
+}
+
+static void xe_pt_abort_bind(struct xe_vma *vma,
+			     struct xe_vm_pgtable_update *entries,
+			     u32 num_entries, bool rebind)
+{
+	int i, j;
+
+	xe_pt_commit_locks_assert(vma);
+
+	for (i = num_entries - 1; i >= 0; --i) {
+		struct xe_pt *pt = entries[i].pt;
+		struct xe_pt_dir *pt_dir;
+
+		if (!rebind)
+			pt->num_live -= entries[i].qwords;
+
+		if (!pt->level)
+			continue;
+
+		pt_dir = as_xe_pt_dir(pt);
+		for (j = 0; j < entries[i].qwords; j++) {
+			u32 j_ = j + entries[i].ofs;
+			struct xe_pt *newpte = xe_pt_entry(pt_dir, j_);
+			struct xe_pt *oldpte = entries[i].pt_entries[j].pt;
+
+			pt_dir->children[j_] = oldpte ? &oldpte->base : 0;
+			xe_pt_destroy(newpte, xe_vma_vm(vma)->flags, NULL);
+		}
+	}
+}
+
+static void xe_pt_commit_prepare_bind(struct xe_vma *vma,
+				      struct xe_vm_pgtable_update *entries,
+				      u32 num_entries, bool rebind)
 {
 	u32 i, j;
 
@@ -896,12 +955,13 @@ static void xe_pt_commit_bind(struct xe_vma *vma,
 		for (j = 0; j < entries[i].qwords; j++) {
 			u32 j_ = j + entries[i].ofs;
 			struct xe_pt *newpte = entries[i].pt_entries[j].pt;
+			struct xe_pt *oldpte = NULL;
 
 			if (xe_pt_entry(pt_dir, j_))
-				xe_pt_destroy(xe_pt_entry(pt_dir, j_),
-					      xe_vma_vm(vma)->flags, deferred);
+				oldpte = xe_pt_entry(pt_dir, j_);
 
 			pt_dir->children[j_] = &newpte->base;
+			entries[i].pt_entries[j].pt = oldpte;
 		}
 	}
 }
@@ -925,8 +985,6 @@ xe_pt_prepare_bind(struct xe_tile *tile, struct xe_vma *vma,
 	err = xe_pt_stage_bind(tile, vma, entries, num_entries);
 	if (!err)
 		xe_tile_assert(tile, *num_entries);
-	else /* abort! */
-		xe_pt_abort_bind(vma, entries, *num_entries);
 
 	return err;
 }
@@ -1449,7 +1507,7 @@ xe_pt_stage_unbind_post_descend(struct xe_ptw *parent, pgoff_t offset,
 				     &end_offset))
 		return 0;
 
-	(void)xe_pt_new_shared(&xe_walk->wupd, xe_child, offset, false);
+	(void)xe_pt_new_shared(&xe_walk->wupd, xe_child, offset, true);
 	xe_walk->wupd.updates[level].update->qwords = end_offset - offset;
 
 	return 0;
@@ -1517,32 +1575,57 @@ xe_migrate_clear_pgtable_callback(struct xe_migrate_pt_update *pt_update,
 		memset64(ptr, empty, num_qwords);
 }
 
+static void xe_pt_abort_unbind(struct xe_vma *vma,
+			       struct xe_vm_pgtable_update *entries,
+			       u32 num_entries)
+{
+	int j, i;
+
+	xe_pt_commit_locks_assert(vma);
+
+	for (j = num_entries - 1; j >= 0; --j) {
+		struct xe_vm_pgtable_update *entry = &entries[j];
+		struct xe_pt *pt = entry->pt;
+		struct xe_pt_dir *pt_dir = as_xe_pt_dir(pt);
+
+		pt->num_live += entry->qwords;
+
+		if (!pt->level)
+			continue;
+
+		for (i = entry->ofs; i < entry->ofs + entry->qwords; i++)
+			pt_dir->children[i] =
+				entries[j].pt_entries[i - entry->ofs].pt ?
+				&entries[j].pt_entries[i - entry->ofs].pt->base : 0;
+	}
+}
+
 static void
-xe_pt_commit_unbind(struct xe_vma *vma,
-		    struct xe_vm_pgtable_update *entries, u32 num_entries,
-		    struct llist_head *deferred)
+xe_pt_commit_prepare_unbind(struct xe_vma *vma,
+			    struct xe_vm_pgtable_update *entries,
+			    u32 num_entries)
 {
-	u32 j;
+	int j, i;
 
 	xe_pt_commit_locks_assert(vma);
 
 	for (j = 0; j < num_entries; ++j) {
 		struct xe_vm_pgtable_update *entry = &entries[j];
 		struct xe_pt *pt = entry->pt;
+		struct xe_pt_dir *pt_dir;
 
 		pt->num_live -= entry->qwords;
-		if (pt->level) {
-			struct xe_pt_dir *pt_dir = as_xe_pt_dir(pt);
-			u32 i;
-
-			for (i = entry->ofs; i < entry->ofs + entry->qwords;
-			     i++) {
-				if (xe_pt_entry(pt_dir, i))
-					xe_pt_destroy(xe_pt_entry(pt_dir, i),
-						      xe_vma_vm(vma)->flags, deferred);
+		if (!pt->level)
+			continue;
 
-				pt_dir->children[i] = NULL;
-			}
+		pt_dir = as_xe_pt_dir(pt);
+		for (i = entry->ofs; i < entry->ofs + entry->qwords; i++) {
+			if (xe_pt_entry(pt_dir, i))
+				entries[j].pt_entries[i - entry->ofs].pt =
+					xe_pt_entry(pt_dir, i);
+			else
+				entries[j].pt_entries[i - entry->ofs].pt = NULL;
+			pt_dir->children[i] = NULL;
 		}
 	}
 }
@@ -1588,7 +1671,6 @@ static int bind_op_prepare(struct xe_vm *vm, struct xe_tile *tile,
 {
 	u32 current_op = pt_update_ops->current_op;
 	struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[current_op];
-	struct llist_head *deferred = &pt_update_ops->deferred;
 	int err;
 
 	xe_bo_assert_held(xe_vma_bo(vma));
@@ -1635,11 +1717,12 @@ static int bind_op_prepare(struct xe_vm *vm, struct xe_tile *tile,
 			(!pt_op->rebind && vm->scratch_pt[tile->id] &&
 			 xe_vm_in_preempt_fence_mode(vm));
 
-		/* FIXME: Don't commit right away */
 		vma->tile_staged |= BIT(tile->id);
 		pt_op->vma = vma;
-		xe_pt_commit_bind(vma, pt_op->entries, pt_op->num_entries,
-				  pt_op->rebind, deferred);
+		xe_pt_commit_prepare_bind(vma, pt_op->entries,
+					  pt_op->num_entries, pt_op->rebind);
+	} else {
+		xe_pt_cancel_bind(vma, pt_op->entries, pt_op->num_entries);
 	}
 
 	return err;
@@ -1651,7 +1734,6 @@ static int unbind_op_prepare(struct xe_tile *tile,
 {
 	u32 current_op = pt_update_ops->current_op;
 	struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[current_op];
-	struct llist_head *deferred = &pt_update_ops->deferred;
 	int err;
 
 	if (!((vma->tile_present | vma->tile_staged) & BIT(tile->id)))
@@ -1687,9 +1769,7 @@ static int unbind_op_prepare(struct xe_tile *tile,
 	pt_update_ops->needs_userptr_lock |= xe_vma_is_userptr(vma);
 	pt_update_ops->needs_invalidation = true;
 
-	/* FIXME: Don't commit right away */
-	xe_pt_commit_unbind(vma, pt_op->entries, pt_op->num_entries,
-			    deferred);
+	xe_pt_commit_prepare_unbind(vma, pt_op->entries, pt_op->num_entries);
 
 	return 0;
 }
@@ -1910,7 +1990,7 @@ xe_pt_update_ops_run(struct xe_tile *tile, struct xe_vma_ops *vops)
 	struct invalidation_fence *ifence = NULL;
 	struct xe_range_fence *rfence;
 	struct xe_vma_op *op;
-	int err = 0;
+	int err = 0, i;
 	struct xe_migrate_pt_update update = {
 		.ops = pt_update_ops->needs_userptr_lock ?
 			&userptr_migrate_ops :
@@ -1930,8 +2010,10 @@ xe_pt_update_ops_run(struct xe_tile *tile, struct xe_vma_ops *vops)
 
 	if (pt_update_ops->needs_invalidation) {
 		ifence = kzalloc(sizeof(*ifence), GFP_KERNEL);
-		if (!ifence)
-			return ERR_PTR(-ENOMEM);
+		if (!ifence) {
+			err = -ENOMEM;
+			goto kill_vm_tile1;
+		}
 	}
 
 	rfence = kzalloc(sizeof(*rfence), GFP_KERNEL);
@@ -1946,6 +2028,15 @@ xe_pt_update_ops_run(struct xe_tile *tile, struct xe_vma_ops *vops)
 		goto free_rfence;
 	}
 
+	/* Point of no return - VM killed if failure after this */
+	for (i = 0; i < pt_update_ops->current_op; ++i) {
+		struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[i];
+
+		xe_pt_commit(pt_op->vma, pt_op->entries,
+			     pt_op->num_entries, &pt_update_ops->deferred);
+		pt_op->vma = NULL;	/* skip in xe_pt_update_ops_abort */
+	}
+
 	err = xe_range_fence_insert(&vm->rftree[tile->id], rfence,
 				    &xe_range_fence_kfree_ops,
 				    pt_update_ops->start,
@@ -1981,10 +2072,15 @@ xe_pt_update_ops_run(struct xe_tile *tile, struct xe_vma_ops *vops)
 	if (pt_update_ops->needs_userptr_lock)
 		up_read(&vm->userptr.notifier_lock);
 	dma_fence_put(fence);
+	if (!tile->id)
+		xe_vm_kill(vops->vm, false);
 free_rfence:
 	kfree(rfence);
 free_ifence:
 	kfree(ifence);
+kill_vm_tile1:
+	if (err != -EAGAIN && tile->id)
+		xe_vm_kill(vops->vm, false);
 
 	return ERR_PTR(err);
 }
@@ -2005,12 +2101,10 @@ void xe_pt_update_ops_fini(struct xe_tile *tile, struct xe_vma_ops *vops)
 	lockdep_assert_held(&vops->vm->lock);
 	xe_vm_assert_held(vops->vm);
 
-	/* FIXME: Not 100% correct */
-	for (i = 0; i < pt_update_ops->num_ops; ++i) {
+	for (i = 0; i < pt_update_ops->current_op; ++i) {
 		struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[i];
 
-		if (pt_op->bind)
-			xe_pt_free_bind(pt_op->entries, pt_op->num_entries);
+		xe_pt_free_bind(pt_op->entries, pt_op->num_entries);
 	}
 	xe_bo_put_commit(&vops->pt_update_ops[tile->id].deferred);
 }
@@ -2024,10 +2118,28 @@ void xe_pt_update_ops_fini(struct xe_tile *tile, struct xe_vma_ops *vops)
  */
 void xe_pt_update_ops_abort(struct xe_tile *tile, struct xe_vma_ops *vops)
 {
+	struct xe_vm_pgtable_update_ops *pt_update_ops =
+		&vops->pt_update_ops[tile->id];
+	int i;
+
 	lockdep_assert_held(&vops->vm->lock);
 	xe_vm_assert_held(vops->vm);
 
-	/* FIXME: Just kill VM for now + cleanup PTs */
+	for (i = pt_update_ops->num_ops - 1; i >= 0; --i) {
+		struct xe_vm_pgtable_update_op *pt_op =
+			&pt_update_ops->ops[i];
+
+		if (!pt_op->vma || i >= pt_update_ops->current_op)
+			continue;
+
+		if (pt_op->bind)
+			xe_pt_abort_bind(pt_op->vma, pt_op->entries,
+					 pt_op->num_entries,
+					 pt_op->rebind);
+		else
+			xe_pt_abort_unbind(pt_op->vma, pt_op->entries,
+					   pt_op->num_entries);
+	}
+
 	xe_bo_put_commit(&vops->pt_update_ops[tile->id].deferred);
-	xe_vm_kill(vops->vm, false);
- }
+}
-- 
2.26.3


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

* [CI 22/44] drm/xe: Retry BO allocation
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (19 preceding siblings ...)
  2024-06-14 21:57 ` [CI 21/44] drm/xe: Update PT layer with better error handling Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 23/44] drm/xe/uapi: Add DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag Oak Zeng
                   ` (37 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

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

TTM doesn't support fair eviction via WW locking, this mitigated in by
using retry loops in exec and preempt rebind worker. Extend this retry
loop to BO allocation. Once TTM supports fair eviction this patch can be
reverted.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 74294f1b05bc..8fe78f7b000f 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -1929,6 +1929,7 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
 	struct xe_file *xef = to_xe_file(file);
 	struct drm_xe_gem_create *args = data;
 	struct xe_vm *vm = NULL;
+	ktime_t end = 0;
 	struct xe_bo *bo;
 	unsigned int bo_flags;
 	u32 handle;
@@ -1994,11 +1995,14 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
 		vm = xe_vm_lookup(xef, args->vm_id);
 		if (XE_IOCTL_DBG(xe, !vm))
 			return -ENOENT;
+	}
+
+retry:
+	if (vm) {
 		err = xe_vm_lock(vm, true);
 		if (err)
 			goto out_vm;
 	}
-
 	bo = xe_bo_create_user(xe, NULL, vm, args->size, args->cpu_caching,
 			       ttm_bo_type_device, bo_flags);
 
@@ -2007,6 +2011,8 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
 
 	if (IS_ERR(bo)) {
 		err = PTR_ERR(bo);
+		if (xe_vm_validate_should_retry(NULL, err, &end))
+			goto retry;
 		goto out_vm;
 	}
 
-- 
2.26.3


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

* [CI 23/44] drm/xe/uapi: Add DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (20 preceding siblings ...)
  2024-06-14 21:57 ` [CI 22/44] drm/xe: Retry BO allocation Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 24/44] drm/xe: Add a helper to calculate userptr end address Oak Zeng
                   ` (36 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

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

Add the DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag, which is used to
create unpopulated virtual memory areas (VMAs) without memory backing or
GPU page tables. These VMAs are referred to as system allocator VMAs.
The idea is that upon a page fault, the memory backing and GPU page
tables will be populated.

System allocator VMAs only update GPUVM state; they do not have an
internal page table (PT) state, nor do they have GPU mappings.

It is expected that system allocator VMAs will be mixed with buffer
object (BO) VMAs within a single VM. In other words, system allocations
and runtime allocations can be mixed within a single user-mode driver
(UMD) program.

Expected usage:

- Bind the entire virtual address (VA) space upon program load using the
  DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag and DRM_XE_VM_BIND_OP_MAP op.
- If a buffer object (BO) requires GPU mapping, reserve an address range
  using mmap, unbind the address range from system allocator using
  DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag and DRM_XE_VM_BIND_OP_UNMAP op,
  and bind the BO to the reserved address using existing bind IOCTLs
  (runtime allocation).
- If a BO no longer requires GPU mapping, bind the mapping address with
  the DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag.
- Any malloc'd address accessed by the GPU will be faulted in via the
  SVM implementation (system allocation).
- Upon freeing any malloc'd data, the SVM implementation will remove GPU
  mappings.

v1:
  fix commit message (Oak)
  rebase with lastest xekmd, fix conflict in xe_analyze_vm (Oak)
  allow UNMAP operation for system allocator (Krishna)

FIXME: Not enforcing DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR for fault mode
VMs

FIXME: Only supporting 1 to 1 mapping between user address space and
GPU address space

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
Signed-off-by: Krishna Bommu <krishnaiah.bommu@intel.com>
---
 drivers/gpu/drm/xe/xe_pt.c       |  73 +++++++++++++++++----
 drivers/gpu/drm/xe/xe_vm.c       | 107 ++++++++++++++++++++-----------
 drivers/gpu/drm/xe/xe_vm.h       |   8 ++-
 drivers/gpu/drm/xe/xe_vm_types.h |   3 +
 include/uapi/drm/xe_drm.h        |  11 +++-
 5 files changed, 148 insertions(+), 54 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index 62aec1a42249..5c2043c90556 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -1064,6 +1064,11 @@ static int op_add_deps(struct xe_vm *vm, struct xe_vma_op *op,
 {
 	int err = 0;
 
+	/*
+	 * No need to check for is_system_allocator here as vma_add_deps is a
+	 * NOP if VMA is_system_allocator
+	 */
+
 	switch (op->base.op) {
 	case DRM_GPUVA_OP_MAP:
 		if (!op->map.immediate && xe_vm_in_fault_mode(vm))
@@ -1673,6 +1678,7 @@ static int bind_op_prepare(struct xe_vm *vm, struct xe_tile *tile,
 	struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[current_op];
 	int err;
 
+	xe_tile_assert(tile, !xe_vma_is_system_allocator(vma));
 	xe_bo_assert_held(xe_vma_bo(vma));
 
 	vm_dbg(&xe_vma_vm(vma)->xe->drm,
@@ -1739,6 +1745,7 @@ static int unbind_op_prepare(struct xe_tile *tile,
 	if (!((vma->tile_present | vma->tile_staged) & BIT(tile->id)))
 		return 0;
 
+	xe_tile_assert(tile, !xe_vma_is_system_allocator(vma));
 	xe_bo_assert_held(xe_vma_bo(vma));
 
 	vm_dbg(&xe_vma_vm(vma)->xe->drm,
@@ -1785,15 +1792,21 @@ static int op_prepare(struct xe_vm *vm,
 
 	switch (op->base.op) {
 	case DRM_GPUVA_OP_MAP:
-		if (!op->map.immediate && xe_vm_in_fault_mode(vm))
+		if ((!op->map.immediate && xe_vm_in_fault_mode(vm)) ||
+		    op->map.is_system_allocator)
 			break;
 
 		err = bind_op_prepare(vm, tile, pt_update_ops, op->map.vma);
 		pt_update_ops->wait_vm_kernel = true;
 		break;
 	case DRM_GPUVA_OP_REMAP:
-		err = unbind_op_prepare(tile, pt_update_ops,
-					gpuva_to_vma(op->base.remap.unmap->va));
+	{
+		struct xe_vma *old = gpuva_to_vma(op->base.remap.unmap->va);
+
+		if (xe_vma_is_system_allocator(old))
+			break;
+
+		err = unbind_op_prepare(tile, pt_update_ops, old);
 
 		if (!err && op->remap.prev) {
 			err = bind_op_prepare(vm, tile, pt_update_ops,
@@ -1806,15 +1819,28 @@ static int op_prepare(struct xe_vm *vm,
 			pt_update_ops->wait_vm_bookkeep = true;
 		}
 		break;
+	}
 	case DRM_GPUVA_OP_UNMAP:
-		err = unbind_op_prepare(tile, pt_update_ops,
-					gpuva_to_vma(op->base.unmap.va));
+	{
+		struct xe_vma *vma = gpuva_to_vma(op->base.unmap.va);
+
+		if (xe_vma_is_system_allocator(vma))
+			break;
+
+		err = unbind_op_prepare(tile, pt_update_ops, vma);
 		break;
+	}
 	case DRM_GPUVA_OP_PREFETCH:
-		err = bind_op_prepare(vm, tile, pt_update_ops,
-				      gpuva_to_vma(op->base.prefetch.va));
+	{
+		struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
+
+		if (xe_vma_is_system_allocator(vma))
+			break;
+
+		err = bind_op_prepare(vm, tile, pt_update_ops, vma);
 		pt_update_ops->wait_vm_kernel = true;
 		break;
+	}
 	default:
 		drm_warn(&vm->xe->drm, "NOT POSSIBLE");
 	}
@@ -1875,6 +1901,8 @@ static void bind_op_commit(struct xe_vm *vm, struct xe_tile *tile,
 			   struct xe_vm_pgtable_update_ops *pt_update_ops,
 			   struct xe_vma *vma, struct dma_fence *fence)
 {
+	xe_tile_assert(tile, !xe_vma_is_system_allocator(vma));
+
 	if (!xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
 		dma_resv_add_fence(xe_vma_bo(vma)->ttm.base.resv, fence,
 				   pt_update_ops->wait_vm_bookkeep ?
@@ -1901,6 +1929,8 @@ static void unbind_op_commit(struct xe_vm *vm, struct xe_tile *tile,
 			     struct xe_vm_pgtable_update_ops *pt_update_ops,
 			     struct xe_vma *vma, struct dma_fence *fence)
 {
+	xe_tile_assert(tile, !xe_vma_is_system_allocator(vma));
+
 	if (!xe_vma_has_no_bo(vma) && !xe_vma_bo(vma)->vm)
 		dma_resv_add_fence(xe_vma_bo(vma)->ttm.base.resv, fence,
 				   pt_update_ops->wait_vm_bookkeep ?
@@ -1928,14 +1958,20 @@ static void op_commit(struct xe_vm *vm,
 
 	switch (op->base.op) {
 	case DRM_GPUVA_OP_MAP:
-		if (!op->map.immediate && xe_vm_in_fault_mode(vm))
+		if ((!op->map.immediate && xe_vm_in_fault_mode(vm)) ||
+		    op->map.is_system_allocator)
 			break;
 
 		bind_op_commit(vm, tile, pt_update_ops, op->map.vma, fence);
 		break;
 	case DRM_GPUVA_OP_REMAP:
-		unbind_op_commit(vm, tile, pt_update_ops,
-				 gpuva_to_vma(op->base.remap.unmap->va), fence);
+	{
+		struct xe_vma *old = gpuva_to_vma(op->base.remap.unmap->va);
+
+		if (xe_vma_is_system_allocator(old))
+			break;
+
+		unbind_op_commit(vm, tile, pt_update_ops, old, fence);
 
 		if (op->remap.prev)
 			bind_op_commit(vm, tile, pt_update_ops, op->remap.prev,
@@ -1944,14 +1980,23 @@ static void op_commit(struct xe_vm *vm,
 			bind_op_commit(vm, tile, pt_update_ops, op->remap.next,
 				       fence);
 		break;
+	}
 	case DRM_GPUVA_OP_UNMAP:
-		unbind_op_commit(vm, tile, pt_update_ops,
-				 gpuva_to_vma(op->base.unmap.va), fence);
+	{
+		struct xe_vma *vma = gpuva_to_vma(op->base.unmap.va);
+
+		if (!xe_vma_is_system_allocator(vma))
+			unbind_op_commit(vm, tile, pt_update_ops, vma, fence);
 		break;
+	}
 	case DRM_GPUVA_OP_PREFETCH:
-		bind_op_commit(vm, tile, pt_update_ops,
-			       gpuva_to_vma(op->base.prefetch.va), fence);
+	{
+		struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
+
+		if (!xe_vma_is_system_allocator(vma))
+			bind_op_commit(vm, tile, pt_update_ops, vma, fence);
 		break;
+	}
 	default:
 		drm_warn(&vm->xe->drm, "NOT POSSIBLE");
 	}
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 8e15177284a9..f40ea5f11c33 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -891,9 +891,10 @@ static void xe_vma_free(struct xe_vma *vma)
 		kfree(vma);
 }
 
-#define VMA_CREATE_FLAG_READ_ONLY	BIT(0)
-#define VMA_CREATE_FLAG_IS_NULL		BIT(1)
-#define VMA_CREATE_FLAG_DUMPABLE	BIT(2)
+#define VMA_CREATE_FLAG_READ_ONLY		BIT(0)
+#define VMA_CREATE_FLAG_IS_NULL			BIT(1)
+#define VMA_CREATE_FLAG_DUMPABLE		BIT(2)
+#define VMA_CREATE_FLAG_IS_SYSTEM_ALLOCATOR	BIT(3)
 
 static struct xe_vma *xe_vma_create(struct xe_vm *vm,
 				    struct xe_bo *bo,
@@ -907,6 +908,8 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
 	bool read_only = (flags & VMA_CREATE_FLAG_READ_ONLY);
 	bool is_null = (flags & VMA_CREATE_FLAG_IS_NULL);
 	bool dumpable = (flags & VMA_CREATE_FLAG_DUMPABLE);
+	bool is_system_allocator =
+		(flags & VMA_CREATE_FLAG_IS_SYSTEM_ALLOCATOR);
 
 	xe_assert(vm->xe, start < end);
 	xe_assert(vm->xe, end < vm->size);
@@ -915,7 +918,7 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
 	 * Allocate and ensure that the xe_vma_is_userptr() return
 	 * matches what was allocated.
 	 */
-	if (!bo && !is_null) {
+	if (!bo && !is_null && !is_system_allocator) {
 		struct xe_userptr_vma *uvma = kzalloc(sizeof(*uvma), GFP_KERNEL);
 
 		if (!uvma)
@@ -927,6 +930,8 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
 		if (!vma)
 			return ERR_PTR(-ENOMEM);
 
+		if (is_system_allocator)
+			vma->gpuva.flags |= XE_VMA_SYSTEM_ALLOCATOR;
 		if (is_null)
 			vma->gpuva.flags |= DRM_GPUVA_SPARSE;
 		if (bo)
@@ -969,7 +974,7 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
 		drm_gpuva_link(&vma->gpuva, vm_bo);
 		drm_gpuvm_bo_put(vm_bo);
 	} else /* userptr or null */ {
-		if (!is_null) {
+		if (!is_null && !is_system_allocator) {
 			struct xe_userptr *userptr = &to_userptr_vma(vma)->userptr;
 			u64 size = end - start + 1;
 			int err;
@@ -1019,7 +1024,7 @@ static void xe_vma_destroy_late(struct xe_vma *vma)
 		 */
 		mmu_interval_notifier_remove(&userptr->notifier);
 		xe_vm_put(vm);
-	} else if (xe_vma_is_null(vma)) {
+	} else if (xe_vma_is_null(vma) || xe_vma_is_system_allocator(vma)) {
 		xe_vm_put(vm);
 	} else {
 		xe_bo_put(xe_vma_bo(vma));
@@ -1058,7 +1063,7 @@ static void xe_vma_destroy(struct xe_vma *vma, struct dma_fence *fence)
 		spin_lock(&vm->userptr.invalidated_lock);
 		list_del(&to_userptr_vma(vma)->userptr.invalidate_link);
 		spin_unlock(&vm->userptr.invalidated_lock);
-	} else if (!xe_vma_is_null(vma)) {
+	} else if (!xe_vma_is_null(vma) && !xe_vma_is_system_allocator(vma)) {
 		xe_bo_assert_held(xe_vma_bo(vma));
 
 		drm_gpuva_unlink(&vma->gpuva);
@@ -1983,6 +1988,8 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
 			op->map.read_only =
 				flags & DRM_XE_VM_BIND_FLAG_READONLY;
 			op->map.is_null = flags & DRM_XE_VM_BIND_FLAG_NULL;
+			op->map.is_system_allocator = flags &
+				DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR;
 			op->map.dumpable = flags & DRM_XE_VM_BIND_FLAG_DUMPABLE;
 			op->map.pat_index = pat_index;
 		} else if (__op->op == DRM_GPUVA_OP_PREFETCH) {
@@ -2175,6 +2182,8 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 				VMA_CREATE_FLAG_IS_NULL : 0;
 			flags |= op->map.dumpable ?
 				VMA_CREATE_FLAG_DUMPABLE : 0;
+			flags |= op->map.is_system_allocator ?
+				VMA_CREATE_FLAG_IS_SYSTEM_ALLOCATOR : 0;
 
 			vma = new_vma(vm, &op->base.map, op->map.pat_index,
 				      flags);
@@ -2182,7 +2191,8 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 				return PTR_ERR(vma);
 
 			op->map.vma = vma;
-			if (op->map.immediate || !xe_vm_in_fault_mode(vm))
+			if ((op->map.immediate || !xe_vm_in_fault_mode(vm)) &&
+			    !op->map.is_system_allocator)
 				xe_vma_ops_incr_pt_update_ops(vops,
 							      op->tile_mask);
 			break;
@@ -2191,21 +2201,24 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 		{
 			struct xe_vma *old =
 				gpuva_to_vma(op->base.remap.unmap->va);
+			bool skip = xe_vma_is_system_allocator(old);
 
 			op->remap.start = xe_vma_start(old);
 			op->remap.range = xe_vma_size(old);
 
-			if (op->base.remap.prev) {
-				flags |= op->base.remap.unmap->va->flags &
-					XE_VMA_READ_ONLY ?
-					VMA_CREATE_FLAG_READ_ONLY : 0;
-				flags |= op->base.remap.unmap->va->flags &
-					DRM_GPUVA_SPARSE ?
-					VMA_CREATE_FLAG_IS_NULL : 0;
-				flags |= op->base.remap.unmap->va->flags &
-					XE_VMA_DUMPABLE ?
-					VMA_CREATE_FLAG_DUMPABLE : 0;
+			flags |= op->base.remap.unmap->va->flags &
+				XE_VMA_READ_ONLY ?
+				VMA_CREATE_FLAG_READ_ONLY : 0;
+			flags |= op->base.remap.unmap->va->flags &
+				DRM_GPUVA_SPARSE ?
+				VMA_CREATE_FLAG_IS_NULL : 0;
+			flags |= op->base.remap.unmap->va->flags &
+				XE_VMA_DUMPABLE ?
+				VMA_CREATE_FLAG_DUMPABLE : 0;
+			flags |= xe_vma_is_system_allocator(old) ?
+				VMA_CREATE_FLAG_IS_SYSTEM_ALLOCATOR : 0;
 
+			if (op->base.remap.prev) {
 				vma = new_vma(vm, op->base.remap.prev,
 					      old->pat_index, flags);
 				if (IS_ERR(vma))
@@ -2217,9 +2230,10 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 				 * Userptr creates a new SG mapping so
 				 * we must also rebind.
 				 */
-				op->remap.skip_prev = !xe_vma_is_userptr(old) &&
+				op->remap.skip_prev = skip ||
+					(!xe_vma_is_userptr(old) &&
 					IS_ALIGNED(xe_vma_end(vma),
-						   xe_vma_max_pte_size(old));
+						   xe_vma_max_pte_size(old)));
 				if (op->remap.skip_prev) {
 					xe_vma_set_pte_size(vma, xe_vma_max_pte_size(old));
 					op->remap.range -=
@@ -2235,16 +2249,6 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 			}
 
 			if (op->base.remap.next) {
-				flags |= op->base.remap.unmap->va->flags &
-					XE_VMA_READ_ONLY ?
-					VMA_CREATE_FLAG_READ_ONLY : 0;
-				flags |= op->base.remap.unmap->va->flags &
-					DRM_GPUVA_SPARSE ?
-					VMA_CREATE_FLAG_IS_NULL : 0;
-				flags |= op->base.remap.unmap->va->flags &
-					XE_VMA_DUMPABLE ?
-					VMA_CREATE_FLAG_DUMPABLE : 0;
-
 				vma = new_vma(vm, op->base.remap.next,
 					      old->pat_index, flags);
 				if (IS_ERR(vma))
@@ -2256,9 +2260,10 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 				 * Userptr creates a new SG mapping so
 				 * we must also rebind.
 				 */
-				op->remap.skip_next = !xe_vma_is_userptr(old) &&
+				op->remap.skip_next = skip ||
+					(!xe_vma_is_userptr(old) &&
 					IS_ALIGNED(xe_vma_start(vma),
-						   xe_vma_max_pte_size(old));
+						   xe_vma_max_pte_size(old)));
 				if (op->remap.skip_next) {
 					xe_vma_set_pte_size(vma, xe_vma_max_pte_size(old));
 					op->remap.range -=
@@ -2271,14 +2276,27 @@ static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
 					xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
 				}
 			}
-			xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
+			if (!skip)
+				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
 			break;
 		}
 		case DRM_GPUVA_OP_UNMAP:
+		{
+			struct xe_vma *vma = gpuva_to_vma(op->base.unmap.va);
+
+			if (!xe_vma_is_system_allocator(vma))
+				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
+			break;
+		}
 		case DRM_GPUVA_OP_PREFETCH:
+		{
+			struct xe_vma *vma = gpuva_to_vma(op->base.prefetch.va);
+
 			/* FIXME: Need to skip some prefetch ops */
-			xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
+			if (!xe_vma_is_system_allocator(vma))
+				xe_vma_ops_incr_pt_update_ops(vops, op->tile_mask);
 			break;
+		}
 		default:
 			drm_warn(&vm->xe->drm, "NOT POSSIBLE");
 		}
@@ -2713,7 +2731,8 @@ static int vm_bind_ioctl_ops_execute(struct xe_vm *vm,
 	(DRM_XE_VM_BIND_FLAG_READONLY | \
 	 DRM_XE_VM_BIND_FLAG_IMMEDIATE | \
 	 DRM_XE_VM_BIND_FLAG_NULL | \
-	 DRM_XE_VM_BIND_FLAG_DUMPABLE)
+	 DRM_XE_VM_BIND_FLAG_DUMPABLE | \
+	 DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR)
 #define XE_64K_PAGE_MASK 0xffffull
 #define ALL_DRM_XE_SYNCS_FLAGS (DRM_XE_SYNCS_FLAG_WAIT_FOR_OP)
 
@@ -2761,9 +2780,17 @@ static int vm_bind_ioctl_check_args(struct xe_device *xe,
 		u64 obj_offset = (*bind_ops)[i].obj_offset;
 		u32 prefetch_region = (*bind_ops)[i].prefetch_mem_region_instance;
 		bool is_null = flags & DRM_XE_VM_BIND_FLAG_NULL;
+		bool is_system_allocator = flags &
+			DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR;
 		u16 pat_index = (*bind_ops)[i].pat_index;
 		u16 coh_mode;
 
+		/* FIXME: Disabling system allocator for now */
+		if (XE_IOCTL_DBG(xe, is_system_allocator)) {
+			err = -EOPNOTSUPP;
+			goto free_bind_ops;
+		}
+
 		if (XE_IOCTL_DBG(xe, pat_index >= xe->pat.n_entries)) {
 			err = -EINVAL;
 			goto free_bind_ops;
@@ -2784,13 +2811,16 @@ static int vm_bind_ioctl_check_args(struct xe_device *xe,
 
 		if (XE_IOCTL_DBG(xe, op > DRM_XE_VM_BIND_OP_PREFETCH) ||
 		    XE_IOCTL_DBG(xe, flags & ~SUPPORTED_FLAGS) ||
-		    XE_IOCTL_DBG(xe, obj && is_null) ||
-		    XE_IOCTL_DBG(xe, obj_offset && is_null) ||
+		    XE_IOCTL_DBG(xe, obj && (is_null || is_system_allocator)) ||
+		    XE_IOCTL_DBG(xe, obj_offset &&
+				 (is_null || is_system_allocator)) ||
 		    XE_IOCTL_DBG(xe, op != DRM_XE_VM_BIND_OP_MAP &&
 				 is_null) ||
+		    XE_IOCTL_DBG(xe, op != DRM_XE_VM_BIND_OP_MAP &&
+				 op != DRM_XE_VM_BIND_OP_UNMAP && is_system_allocator) ||
 		    XE_IOCTL_DBG(xe, !obj &&
 				 op == DRM_XE_VM_BIND_OP_MAP &&
-				 !is_null) ||
+				 !is_null && !is_system_allocator) ||
 		    XE_IOCTL_DBG(xe, !obj &&
 				 op == DRM_XE_VM_BIND_OP_UNMAP_ALL) ||
 		    XE_IOCTL_DBG(xe, addr &&
@@ -3155,6 +3185,7 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
 	int ret;
 
 	xe_assert(xe, !xe_vma_is_null(vma));
+	xe_assert(xe, !xe_vma_is_system_allocator(vma));
 	trace_xe_vma_invalidate(vma);
 
 	vm_dbg(&xe_vma_vm(vma)->xe->drm,
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index c864dba35e1d..1a5aed678214 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -151,6 +151,11 @@ static inline bool xe_vma_is_null(struct xe_vma *vma)
 	return vma->gpuva.flags & DRM_GPUVA_SPARSE;
 }
 
+static inline bool xe_vma_is_system_allocator(struct xe_vma *vma)
+{
+	return vma->gpuva.flags & XE_VMA_SYSTEM_ALLOCATOR;
+}
+
 static inline bool xe_vma_has_no_bo(struct xe_vma *vma)
 {
 	return !xe_vma_bo(vma);
@@ -158,7 +163,8 @@ static inline bool xe_vma_has_no_bo(struct xe_vma *vma)
 
 static inline bool xe_vma_is_userptr(struct xe_vma *vma)
 {
-	return xe_vma_has_no_bo(vma) && !xe_vma_is_null(vma);
+	return xe_vma_has_no_bo(vma) && !xe_vma_is_null(vma) &&
+		!xe_vma_is_system_allocator(vma);
 }
 
 /**
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 27d651093d30..e1d3dd699380 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -32,6 +32,7 @@ struct xe_vm_pgtable_update_op;
 #define XE_VMA_PTE_64K		(DRM_GPUVA_USERBITS << 6)
 #define XE_VMA_PTE_COMPACT	(DRM_GPUVA_USERBITS << 7)
 #define XE_VMA_DUMPABLE		(DRM_GPUVA_USERBITS << 8)
+#define XE_VMA_SYSTEM_ALLOCATOR	(DRM_GPUVA_USERBITS << 9)
 
 /** struct xe_userptr - User pointer */
 struct xe_userptr {
@@ -284,6 +285,8 @@ struct xe_vma_op_map {
 	bool read_only;
 	/** @is_null: is NULL binding */
 	bool is_null;
+	/** @is_system_allocator: is system allocator binding */
+	bool is_system_allocator;
 	/** @dumpable: whether BO is dumped on GPU hang */
 	bool dumpable;
 	/** @pat_index: The pat index to use for this operation. */
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index d7b0903c22b2..af8ee6f929d4 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -885,6 +885,12 @@ struct drm_xe_vm_destroy {
  *    will only be valid for DRM_XE_VM_BIND_OP_MAP operations, the BO
  *    handle MBZ, and the BO offset MBZ. This flag is intended to
  *    implement VK sparse bindings.
+ *  - %DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR - When the system allocator flag is
+ *    set, no mappings are created rather the range is reserved for system
+ *    allocations which will be populated on GPU page faults. Only valid on VMs
+ *    with DRM_XE_VM_CREATE_FLAG_FAULT_MODE set. The system allocator flag are
+ *    only valid for DRM_XE_VM_BIND_OP_MAP operations, the BO handle MBZ, and
+ *    the BO offset MBZ.
  */
 struct drm_xe_vm_bind_op {
 	/** @extensions: Pointer to the first extension struct, if any */
@@ -937,7 +943,9 @@ struct drm_xe_vm_bind_op {
 	 * on the @pat_index. For such mappings there is no actual memory being
 	 * mapped (the address in the PTE is invalid), so the various PAT memory
 	 * attributes likely do not apply.  Simply leaving as zero is one
-	 * option (still a valid pat_index).
+	 * option (still a valid pat_index). Same applies to
+	 * DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR bindings as for such mapping
+	 * there is no actual memory being mapped.
 	 */
 	__u16 pat_index;
 
@@ -975,6 +983,7 @@ struct drm_xe_vm_bind_op {
 #define DRM_XE_VM_BIND_FLAG_IMMEDIATE	(1 << 1)
 #define DRM_XE_VM_BIND_FLAG_NULL	(1 << 2)
 #define DRM_XE_VM_BIND_FLAG_DUMPABLE	(1 << 3)
+#define DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR	(1 << 4)
 	/** @flags: Bind flags */
 	__u32 flags;
 
-- 
2.26.3


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

* [CI 24/44] drm/xe: Add a helper to calculate userptr end address
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (21 preceding siblings ...)
  2024-06-14 21:57 ` [CI 23/44] drm/xe/uapi: Add DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 25/44] drm/xe: Add dma_addr res cursor Oak Zeng
                   ` (35 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

xe_vma_userptr_end is added to calculate a userptr end.

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_vm.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 1a5aed678214..89f3306561ad 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -146,6 +146,11 @@ static inline u64 xe_vma_userptr(struct xe_vma *vma)
 	return vma->gpuva.gem.offset;
 }
 
+static inline u64 xe_vma_userptr_end(struct xe_vma *vma)
+{
+	return vma->gpuva.gem.offset + xe_vma_size(vma);
+}
+
 static inline bool xe_vma_is_null(struct xe_vma *vma)
 {
 	return vma->gpuva.flags & DRM_GPUVA_SPARSE;
-- 
2.26.3


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

* [CI 25/44] drm/xe: Add dma_addr res cursor
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (22 preceding siblings ...)
  2024-06-14 21:57 ` [CI 24/44] drm/xe: Add a helper to calculate userptr end address Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:57 ` [CI 26/44] drm/xe: Use drm_mem_region for xe Oak Zeng
                   ` (34 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

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

Add dma_addr resource cursor.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_res_cursor.h | 50 +++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_res_cursor.h b/drivers/gpu/drm/xe/xe_res_cursor.h
index 655af89b31a9..b17b3375f6d9 100644
--- a/drivers/gpu/drm/xe/xe_res_cursor.h
+++ b/drivers/gpu/drm/xe/xe_res_cursor.h
@@ -44,7 +44,9 @@ struct xe_res_cursor {
 	u64 remaining;
 	void *node;
 	u32 mem_type;
+	unsigned int order;
 	struct scatterlist *sgl;
+	const dma_addr_t *dma_addr;
 	struct drm_buddy *mm;
 };
 
@@ -71,6 +73,7 @@ static inline void xe_res_first(struct ttm_resource *res,
 				struct xe_res_cursor *cur)
 {
 	cur->sgl = NULL;
+	cur->dma_addr = NULL;
 	if (!res)
 		goto fallback;
 
@@ -161,11 +164,43 @@ static inline void xe_res_first_sg(const struct sg_table *sg,
 	cur->start = start;
 	cur->remaining = size;
 	cur->size = 0;
+	cur->dma_addr = NULL;
 	cur->sgl = sg->sgl;
 	cur->mem_type = XE_PL_TT;
 	__xe_res_sg_next(cur);
 }
 
+/**
+ * xe_res_first_dma - initialize a xe_res_cursor with dma_addr array
+ *
+ * @dma_addr: dma_addr array to walk
+ * @start: Start of the range
+ * @size: Size of the range
+ * @order: Order of dma mapping. i.e. PAGE_SIZE << order is mapping size
+ * @cur: cursor object to initialize
+ *
+ * Start walking over the range of allocations between @start and @size.
+ */
+static inline void xe_res_first_dma(const dma_addr_t *dma_addr,
+				    u64 start, u64 size,
+				    unsigned int order,
+				    struct xe_res_cursor *cur)
+{
+	XE_WARN_ON(start);
+	XE_WARN_ON(!dma_addr);
+	XE_WARN_ON(!IS_ALIGNED(start, PAGE_SIZE) ||
+		   !IS_ALIGNED(size, PAGE_SIZE));
+
+	cur->node = NULL;
+	cur->start = start;
+	cur->remaining = size;
+	cur->size = PAGE_SIZE << order;
+	cur->dma_addr = dma_addr;
+	cur->order = order;
+	cur->sgl = NULL;
+	cur->mem_type = XE_PL_TT;
+}
+
 /**
  * xe_res_next - advance the cursor
  *
@@ -192,6 +227,13 @@ static inline void xe_res_next(struct xe_res_cursor *cur, u64 size)
 		return;
 	}
 
+	if (cur->dma_addr) {
+		cur->size = (PAGE_SIZE << cur->order) -
+			(size - cur->size);
+		cur->start += size;
+		return;
+	}
+
 	if (cur->sgl) {
 		cur->start += size;
 		__xe_res_sg_next(cur);
@@ -233,6 +275,12 @@ static inline void xe_res_next(struct xe_res_cursor *cur, u64 size)
  */
 static inline u64 xe_res_dma(const struct xe_res_cursor *cur)
 {
-	return cur->sgl ? sg_dma_address(cur->sgl) + cur->start : cur->start;
+	if (cur->dma_addr)
+		return cur->dma_addr[cur->start >> (PAGE_SHIFT + cur->order)] +
+			(cur->start & ((PAGE_SIZE << cur->order) - 1));
+	else if (cur->sgl)
+		return sg_dma_address(cur->sgl) + cur->start;
+	else
+		return cur->start;
 }
 #endif
-- 
2.26.3


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

* [CI 26/44] drm/xe: Use drm_mem_region for xe
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (23 preceding siblings ...)
  2024-06-14 21:57 ` [CI 25/44] drm/xe: Add dma_addr res cursor Oak Zeng
@ 2024-06-14 21:57 ` Oak Zeng
  2024-06-14 21:58 ` [CI 27/44] drm/xe: use drm_hmmptr in xe Oak Zeng
                   ` (33 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:57 UTC (permalink / raw)
  To: intel-xe

drm_mem_region was introduced to move some memory management
codes to drm layer so it can be shared b/t different vendor
drivers. This patch apply drm_mem_region concept to xekmd
driver.

drm_mem_region is the parent class of xe_mem_region. Some
xe_mem_region member such as dpa_base is deleted as it
is already in the parent class.

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/display/xe_fb_pin.c        |  2 +-
 drivers/gpu/drm/xe/display/xe_plane_initial.c |  2 +-
 drivers/gpu/drm/xe/xe_bo.c                    |  6 ++---
 drivers/gpu/drm/xe/xe_device_types.h          | 11 ++--------
 drivers/gpu/drm/xe/xe_migrate.c               |  8 +++----
 drivers/gpu/drm/xe/xe_query.c                 |  2 +-
 drivers/gpu/drm/xe/xe_tile.c                  |  2 +-
 drivers/gpu/drm/xe/xe_ttm_vram_mgr.c          |  2 +-
 drivers/gpu/drm/xe/xe_vram.c                  | 22 +++++++++++--------
 9 files changed, 27 insertions(+), 30 deletions(-)

diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index a2f417209124..5c4590c62c08 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -272,7 +272,7 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
 		 * accessible.  This is important on small-bar systems where
 		 * only some subset of VRAM is CPU accessible.
 		 */
-		if (tile->mem.vram.io_size < tile->mem.vram.usable_size) {
+		if (tile->mem.vram.io_size < tile->mem.vram.drm_mr.usable_size) {
 			ret = -EINVAL;
 			goto err;
 		}
diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c
index e135b20962d9..c2c079a2b133 100644
--- a/drivers/gpu/drm/xe/display/xe_plane_initial.c
+++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c
@@ -86,7 +86,7 @@ initial_plane_bo(struct xe_device *xe,
 		 * We don't currently expect this to ever be placed in the
 		 * stolen portion.
 		 */
-		if (phys_base >= tile0->mem.vram.usable_size) {
+		if (phys_base >= tile0->mem.vram.drm_mr.usable_size) {
 			drm_err(&xe->drm,
 				"Initial plane programming using invalid range, phys_base=%pa\n",
 				&phys_base);
diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 8fe78f7b000f..371ea9a5dd16 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -172,7 +172,7 @@ static void add_vram(struct xe_device *xe, struct xe_bo *bo,
 	xe_assert(xe, *c < ARRAY_SIZE(bo->placements));
 
 	vram = to_xe_ttm_vram_mgr(ttm_manager_type(&xe->ttm, mem_type))->vram;
-	xe_assert(xe, vram && vram->usable_size);
+	xe_assert(xe, vram && vram->drm_mr.usable_size);
 	io_size = vram->io_size;
 
 	/*
@@ -183,7 +183,7 @@ static void add_vram(struct xe_device *xe, struct xe_bo *bo,
 			XE_BO_FLAG_GGTT))
 		place.flags |= TTM_PL_FLAG_CONTIGUOUS;
 
-	if (io_size < vram->usable_size) {
+	if (io_size < vram->drm_mr.usable_size) {
 		if (bo_flags & XE_BO_FLAG_NEEDS_CPU_ACCESS) {
 			place.fpfn = 0;
 			place.lpfn = io_size >> PAGE_SHIFT;
@@ -1637,7 +1637,7 @@ uint64_t vram_region_gpu_offset(struct ttm_resource *res)
 	if (res->mem_type == XE_PL_STOLEN)
 		return xe_ttm_stolen_gpu_offset(xe);
 
-	return res_to_mem_region(res)->dpa_base;
+	return res_to_mem_region(res)->drm_mr.dpa_base;
 }
 
 /**
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index f1c09824b145..cf61b52e6d84 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -11,6 +11,7 @@
 #include <drm/drm_device.h>
 #include <drm/drm_file.h>
 #include <drm/ttm/ttm_device.h>
+#include <drm/drm_svm.h>
 
 #include "xe_devcoredump_types.h"
 #include "xe_heci_gsc.h"
@@ -69,6 +70,7 @@ struct xe_pat_ops;
  * device, such as HBM memory or CXL extension memory.
  */
 struct xe_mem_region {
+	struct drm_mem_region drm_mr;
 	/** @io_start: IO start address of this VRAM instance */
 	resource_size_t io_start;
 	/**
@@ -81,15 +83,6 @@ struct xe_mem_region {
 	 * configuration is known as small-bar.
 	 */
 	resource_size_t io_size;
-	/** @dpa_base: This memory regions's DPA (device physical address) base */
-	resource_size_t dpa_base;
-	/**
-	 * @usable_size: usable size of VRAM
-	 *
-	 * Usable size of VRAM excluding reserved portions
-	 * (e.g stolen mem)
-	 */
-	resource_size_t usable_size;
 	/**
 	 * @actual_physical_size: Actual VRAM size
 	 *
diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
index 63b4aa2af030..540afc85d289 100644
--- a/drivers/gpu/drm/xe/xe_migrate.c
+++ b/drivers/gpu/drm/xe/xe_migrate.c
@@ -126,7 +126,7 @@ static u64 xe_migrate_vram_ofs(struct xe_device *xe, u64 addr)
 	 * Remove the DPA to get a correct offset into identity table for the
 	 * migrate offset
 	 */
-	addr -= xe->mem.vram.dpa_base;
+	addr -= xe->mem.vram.drm_mr.dpa_base;
 	return addr + (256ULL << xe_pt_shift(2));
 }
 
@@ -256,21 +256,21 @@ static int xe_migrate_prepare_vm(struct xe_tile *tile, struct xe_migrate *m,
 		u64 pos, ofs, flags;
 		/* XXX: Unclear if this should be usable_size? */
 		u64 vram_limit =  xe->mem.vram.actual_physical_size +
-			xe->mem.vram.dpa_base;
+			xe->mem.vram.drm_mr.dpa_base;
 
 		level = 2;
 		ofs = map_ofs + XE_PAGE_SIZE * level + 256 * 8;
 		flags = vm->pt_ops->pte_encode_addr(xe, 0, pat_index, level,
 						    true, 0);
 
-		xe_assert(xe, IS_ALIGNED(xe->mem.vram.usable_size, SZ_2M));
+		xe_assert(xe, IS_ALIGNED(xe->mem.vram.drm_mr.usable_size, SZ_2M));
 
 		/*
 		 * Use 1GB pages when possible, last chunk always use 2M
 		 * pages as mixing reserved memory (stolen, WOCPM) with a single
 		 * mapping is not allowed on certain platforms.
 		 */
-		for (pos = xe->mem.vram.dpa_base; pos < vram_limit;
+		for (pos = xe->mem.vram.drm_mr.dpa_base; pos < vram_limit;
 		     pos += SZ_1G, ofs += 8) {
 			if (pos + SZ_1G >= vram_limit) {
 				u64 pt31_ofs = bo->size - XE_PAGE_SIZE;
diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
index 995effcb904b..8b3d63420cef 100644
--- a/drivers/gpu/drm/xe/xe_query.c
+++ b/drivers/gpu/drm/xe/xe_query.c
@@ -334,7 +334,7 @@ static int query_config(struct xe_device *xe, struct drm_xe_device_query *query)
 	config->num_params = num_params;
 	config->info[DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID] =
 		xe->info.devid | (xe->info.revid << 16);
-	if (xe_device_get_root_tile(xe)->mem.vram.usable_size)
+	if (xe_device_get_root_tile(xe)->mem.vram.drm_mr.usable_size)
 		config->info[DRM_XE_QUERY_CONFIG_FLAGS] =
 			DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM;
 	config->info[DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT] =
diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
index 15ea0a942f67..109f3118e821 100644
--- a/drivers/gpu/drm/xe/xe_tile.c
+++ b/drivers/gpu/drm/xe/xe_tile.c
@@ -132,7 +132,7 @@ static int tile_ttm_mgr_init(struct xe_tile *tile)
 	struct xe_device *xe = tile_to_xe(tile);
 	int err;
 
-	if (tile->mem.vram.usable_size) {
+	if (tile->mem.vram.drm_mr.usable_size) {
 		err = xe_ttm_vram_mgr_init(tile, tile->mem.vram_mgr);
 		if (err)
 			return err;
diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
index fe3779fdba2c..dd31b24fb07d 100644
--- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
+++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
@@ -364,7 +364,7 @@ int xe_ttm_vram_mgr_init(struct xe_tile *tile, struct xe_ttm_vram_mgr *mgr)
 
 	mgr->vram = vram;
 	return __xe_ttm_vram_mgr_init(xe, mgr, XE_PL_VRAM0 + tile->id,
-				      vram->usable_size, vram->io_size,
+				      vram->drm_mr.usable_size, vram->io_size,
 				      PAGE_SIZE);
 }
 
diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
index 5bcd59190353..ca2b0085281a 100644
--- a/drivers/gpu/drm/xe/xe_vram.c
+++ b/drivers/gpu/drm/xe/xe_vram.c
@@ -150,7 +150,7 @@ static int determine_lmem_bar_size(struct xe_device *xe)
 		return -EIO;
 
 	/* XXX: Need to change when xe link code is ready */
-	xe->mem.vram.dpa_base = 0;
+	xe->mem.vram.drm_mr.dpa_base = 0;
 
 	/* set up a map to the total memory area. */
 	xe->mem.vram.mapping = ioremap_wc(xe->mem.vram.io_start, xe->mem.vram.io_size);
@@ -333,17 +333,21 @@ int xe_vram_probe(struct xe_device *xe)
 			return -ENODEV;
 		}
 
-		tile->mem.vram.dpa_base = xe->mem.vram.dpa_base + tile_offset;
-		tile->mem.vram.usable_size = vram_size;
+		tile->mem.vram.drm_mr.dpa_base = xe->mem.vram.drm_mr.dpa_base + tile_offset;
+		tile->mem.vram.drm_mr.usable_size = vram_size;
 		tile->mem.vram.mapping = xe->mem.vram.mapping + tile_offset;
 
-		if (tile->mem.vram.io_size < tile->mem.vram.usable_size)
+		if (tile->mem.vram.io_size < tile->mem.vram.drm_mr.usable_size)
 			drm_info(&xe->drm, "Small BAR device\n");
-		drm_info(&xe->drm, "VRAM[%u, %u]: Actual physical size %pa, usable size exclude stolen %pa, CPU accessible size %pa\n", id,
-			 tile->id, &tile->mem.vram.actual_physical_size, &tile->mem.vram.usable_size, &tile->mem.vram.io_size);
-		drm_info(&xe->drm, "VRAM[%u, %u]: DPA range: [%pa-%llx], io range: [%pa-%llx]\n", id, tile->id,
-			 &tile->mem.vram.dpa_base, tile->mem.vram.dpa_base + (u64)tile->mem.vram.actual_physical_size,
-			 &tile->mem.vram.io_start, tile->mem.vram.io_start + (u64)tile->mem.vram.io_size);
+		drm_info(&xe->drm, "VRAM[%u, %u]: Actual physical size %pa, usable size exclude stolen %pa, CPU accessible size %pa\n",
+			 id, tile->id, &tile->mem.vram.actual_physical_size,
+			 &tile->mem.vram.drm_mr.usable_size, &tile->mem.vram.io_size);
+		drm_info(&xe->drm, "VRAM[%u, %u]: DPA range: [%pa-%llx], io range: [%pa-%llx]\n",
+			 id, tile->id, &tile->mem.vram.drm_mr.dpa_base,
+			 tile->mem.vram.drm_mr.dpa_base +
+			 (u64)tile->mem.vram.actual_physical_size,
+			 &tile->mem.vram.io_start,
+			 tile->mem.vram.io_start + (u64)tile->mem.vram.io_size);
 
 		/* calculate total size using tile size to get the correct HW sizing */
 		total_size += tile_size;
-- 
2.26.3


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

* [CI 27/44] drm/xe: use drm_hmmptr in xe
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (24 preceding siblings ...)
  2024-06-14 21:57 ` [CI 26/44] drm/xe: Use drm_mem_region for xe Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 28/44] drm/xe: Moving to range based vma invalidation Oak Zeng
                   ` (32 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

drm_hmmptr was created to move some userptr and svm logic
such as mmu notifier registration, range population etc
to drm layer, so those logic can be shared b/t vendor
drivers.

This patch apply the drm_hmmptr to xekmd driver. drm_hmmptr
is the parent class of xe_userptr.

Most of the changes are straight forward, such as some
xe_userptr members are now moved to drm_hmmptr. Since
drm_hmmptr doesn't use scatter-gather table for dma
address anymore, we changed to the dma-address cursor
from the sg cursor during page table building.

xe_hmm.c and xe_hmm.h are removed, as the logic is
now moved to drm_svm.c

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Krishna Bommu <krishnaiah.bommu@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/Makefile      |   2 -
 drivers/gpu/drm/xe/xe_hmm.c      | 253 -------------------------------
 drivers/gpu/drm/xe/xe_hmm.h      |  11 --
 drivers/gpu/drm/xe/xe_pt.c       |  10 +-
 drivers/gpu/drm/xe/xe_vm.c       |  89 ++++++++---
 drivers/gpu/drm/xe/xe_vm_types.h |  11 +-
 6 files changed, 71 insertions(+), 305 deletions(-)
 delete mode 100644 drivers/gpu/drm/xe/xe_hmm.c
 delete mode 100644 drivers/gpu/drm/xe/xe_hmm.h

diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 1905a80e61e3..b30b70b7213f 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -128,8 +128,6 @@ xe-y += xe_bb.o \
 	xe_wa.o \
 	xe_wopcm.o
 
-xe-$(CONFIG_HMM_MIRROR) += xe_hmm.o
-
 # graphics hardware monitoring (HWMON) support
 xe-$(CONFIG_HWMON) += xe_hwmon.o
 
diff --git a/drivers/gpu/drm/xe/xe_hmm.c b/drivers/gpu/drm/xe/xe_hmm.c
deleted file mode 100644
index 2c32dc46f7d4..000000000000
--- a/drivers/gpu/drm/xe/xe_hmm.c
+++ /dev/null
@@ -1,253 +0,0 @@
-// SPDX-License-Identifier: MIT
-/*
- * Copyright © 2024 Intel Corporation
- */
-
-#include <linux/scatterlist.h>
-#include <linux/mmu_notifier.h>
-#include <linux/dma-mapping.h>
-#include <linux/memremap.h>
-#include <linux/swap.h>
-#include <linux/hmm.h>
-#include <linux/mm.h>
-#include "xe_hmm.h"
-#include "xe_vm.h"
-#include "xe_bo.h"
-
-static u64 xe_npages_in_range(unsigned long start, unsigned long end)
-{
-	return (end - start) >> PAGE_SHIFT;
-}
-
-/*
- * xe_mark_range_accessed() - mark a range is accessed, so core mm
- * have such information for memory eviction or write back to
- * hard disk
- *
- * @range: the range to mark
- * @write: if write to this range, we mark pages in this range
- * as dirty
- */
-static void xe_mark_range_accessed(struct hmm_range *range, bool write)
-{
-	struct page *page;
-	u64 i, npages;
-
-	npages = xe_npages_in_range(range->start, range->end);
-	for (i = 0; i < npages; i++) {
-		page = hmm_pfn_to_page(range->hmm_pfns[i]);
-		if (write)
-			set_page_dirty_lock(page);
-
-		mark_page_accessed(page);
-	}
-}
-
-/*
- * xe_build_sg() - build a scatter gather table for all the physical pages/pfn
- * in a hmm_range. dma-map pages if necessary. dma-address is save in sg table
- * and will be used to program GPU page table later.
- *
- * @xe: the xe device who will access the dma-address in sg table
- * @range: the hmm range that we build the sg table from. range->hmm_pfns[]
- * has the pfn numbers of pages that back up this hmm address range.
- * @st: pointer to the sg table.
- * @write: whether we write to this range. This decides dma map direction
- * for system pages. If write we map it bi-diretional; otherwise
- * DMA_TO_DEVICE
- *
- * All the contiguous pfns will be collapsed into one entry in
- * the scatter gather table. This is for the purpose of efficiently
- * programming GPU page table.
- *
- * The dma_address in the sg table will later be used by GPU to
- * access memory. So if the memory is system memory, we need to
- * do a dma-mapping so it can be accessed by GPU/DMA.
- *
- * FIXME: This function currently only support pages in system
- * memory. If the memory is GPU local memory (of the GPU who
- * is going to access memory), we need gpu dpa (device physical
- * address), and there is no need of dma-mapping. This is TBD.
- *
- * FIXME: dma-mapping for peer gpu device to access remote gpu's
- * memory. Add this when you support p2p
- *
- * This function allocates the storage of the sg table. It is
- * caller's responsibility to free it calling sg_free_table.
- *
- * Returns 0 if successful; -ENOMEM if fails to allocate memory
- */
-static int xe_build_sg(struct xe_device *xe, struct hmm_range *range,
-		       struct sg_table *st, bool write)
-{
-	struct device *dev = xe->drm.dev;
-	struct page **pages;
-	u64 i, npages;
-	int ret;
-
-	npages = xe_npages_in_range(range->start, range->end);
-	pages = kvmalloc_array(npages, sizeof(*pages), GFP_KERNEL);
-	if (!pages)
-		return -ENOMEM;
-
-	for (i = 0; i < npages; i++) {
-		pages[i] = hmm_pfn_to_page(range->hmm_pfns[i]);
-		xe_assert(xe, !is_device_private_page(pages[i]));
-	}
-
-	ret = sg_alloc_table_from_pages_segment(st, pages, npages, 0, npages << PAGE_SHIFT,
-						xe_sg_segment_size(dev), GFP_KERNEL);
-	if (ret)
-		goto free_pages;
-
-	ret = dma_map_sgtable(dev, st, write ? DMA_BIDIRECTIONAL : DMA_TO_DEVICE,
-			      DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_NO_KERNEL_MAPPING);
-	if (ret) {
-		sg_free_table(st);
-		st = NULL;
-	}
-
-free_pages:
-	kvfree(pages);
-	return ret;
-}
-
-/*
- * xe_hmm_userptr_free_sg() - Free the scatter gather table of userptr
- *
- * @uvma: the userptr vma which hold the scatter gather table
- *
- * With function xe_userptr_populate_range, we allocate storage of
- * the userptr sg table. This is a helper function to free this
- * sg table, and dma unmap the address in the table.
- */
-void xe_hmm_userptr_free_sg(struct xe_userptr_vma *uvma)
-{
-	struct xe_userptr *userptr = &uvma->userptr;
-	struct xe_vma *vma = &uvma->vma;
-	bool write = !xe_vma_read_only(vma);
-	struct xe_vm *vm = xe_vma_vm(vma);
-	struct xe_device *xe = vm->xe;
-	struct device *dev = xe->drm.dev;
-
-	xe_assert(xe, userptr->sg);
-	dma_unmap_sgtable(dev, userptr->sg,
-			  write ? DMA_BIDIRECTIONAL : DMA_TO_DEVICE, 0);
-
-	sg_free_table(userptr->sg);
-	userptr->sg = NULL;
-}
-
-/**
- * xe_hmm_userptr_populate_range() - Populate physical pages of a virtual
- * address range
- *
- * @uvma: userptr vma which has information of the range to populate.
- * @is_mm_mmap_locked: True if mmap_read_lock is already acquired by caller.
- *
- * This function populate the physical pages of a virtual
- * address range. The populated physical pages is saved in
- * userptr's sg table. It is similar to get_user_pages but call
- * hmm_range_fault.
- *
- * This function also read mmu notifier sequence # (
- * mmu_interval_read_begin), for the purpose of later
- * comparison (through mmu_interval_read_retry).
- *
- * This must be called with mmap read or write lock held.
- *
- * This function allocates the storage of the userptr sg table.
- * It is caller's responsibility to free it calling sg_free_table.
- *
- * returns: 0 for succuss; negative error no on failure
- */
-int xe_hmm_userptr_populate_range(struct xe_userptr_vma *uvma,
-				  bool is_mm_mmap_locked)
-{
-	unsigned long timeout =
-		jiffies + msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT);
-	unsigned long *pfns, flags = HMM_PFN_REQ_FAULT;
-	struct xe_userptr *userptr;
-	struct xe_vma *vma = &uvma->vma;
-	u64 userptr_start = xe_vma_userptr(vma);
-	u64 userptr_end = userptr_start + xe_vma_size(vma);
-	struct xe_vm *vm = xe_vma_vm(vma);
-	struct hmm_range hmm_range;
-	bool write = !xe_vma_read_only(vma);
-	unsigned long notifier_seq;
-	u64 npages;
-	int ret;
-
-	userptr = &uvma->userptr;
-
-	if (is_mm_mmap_locked)
-		mmap_assert_locked(userptr->notifier.mm);
-
-	if (vma->gpuva.flags & XE_VMA_DESTROYED)
-		return 0;
-
-	notifier_seq = mmu_interval_read_begin(&userptr->notifier);
-	if (notifier_seq == userptr->notifier_seq)
-		return 0;
-
-	if (userptr->sg)
-		xe_hmm_userptr_free_sg(uvma);
-
-	npages = xe_npages_in_range(userptr_start, userptr_end);
-	pfns = kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL);
-	if (unlikely(!pfns))
-		return -ENOMEM;
-
-	if (write)
-		flags |= HMM_PFN_REQ_WRITE;
-
-	if (!mmget_not_zero(userptr->notifier.mm)) {
-		ret = -EFAULT;
-		goto free_pfns;
-	}
-
-	hmm_range.default_flags = flags;
-	hmm_range.hmm_pfns = pfns;
-	hmm_range.notifier = &userptr->notifier;
-	hmm_range.start = userptr_start;
-	hmm_range.end = userptr_end;
-	hmm_range.dev_private_owner = vm->xe;
-
-	while (true) {
-		hmm_range.notifier_seq = mmu_interval_read_begin(&userptr->notifier);
-
-		if (!is_mm_mmap_locked)
-			mmap_read_lock(userptr->notifier.mm);
-
-		ret = hmm_range_fault(&hmm_range);
-
-		if (!is_mm_mmap_locked)
-			mmap_read_unlock(userptr->notifier.mm);
-
-		if (ret == -EBUSY) {
-			if (time_after(jiffies, timeout))
-				break;
-
-			continue;
-		}
-		break;
-	}
-
-	mmput(userptr->notifier.mm);
-
-	if (ret)
-		goto free_pfns;
-
-	ret = xe_build_sg(vm->xe, &hmm_range, &userptr->sgt, write);
-	if (ret)
-		goto free_pfns;
-
-	xe_mark_range_accessed(&hmm_range, write);
-	userptr->sg = &userptr->sgt;
-	userptr->notifier_seq = hmm_range.notifier_seq;
-
-free_pfns:
-	kvfree(pfns);
-	return ret;
-}
-
diff --git a/drivers/gpu/drm/xe/xe_hmm.h b/drivers/gpu/drm/xe/xe_hmm.h
deleted file mode 100644
index 909dc2bdcd97..000000000000
--- a/drivers/gpu/drm/xe/xe_hmm.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* SPDX-License-Identifier: MIT
- *
- * Copyright © 2024 Intel Corporation
- */
-
-#include <linux/types.h>
-
-struct xe_userptr_vma;
-
-int xe_hmm_userptr_populate_range(struct xe_userptr_vma *uvma, bool is_mm_mmap_locked);
-void xe_hmm_userptr_free_sg(struct xe_userptr_vma *uvma);
diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index 5c2043c90556..e4b42aa2517f 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -669,8 +669,8 @@ xe_pt_stage_bind(struct xe_tile *tile, struct xe_vma *vma,
 
 	if (!xe_vma_is_null(vma)) {
 		if (xe_vma_is_userptr(vma))
-			xe_res_first_sg(to_userptr_vma(vma)->userptr.sg, 0,
-					xe_vma_size(vma), &curs);
+			xe_res_first_dma(to_userptr_vma(vma)->userptr.hmmptr.dma_addr,
+					 0, xe_vma_size(vma), 0, &curs);
 		else if (xe_bo_is_vram(bo) || xe_bo_is_stolen(bo))
 			xe_res_first(bo->ttm.resource, xe_vma_bo_offset(vma),
 				     xe_vma_size(vma), &curs);
@@ -1221,12 +1221,12 @@ static int vma_check_userptr(struct xe_vm *vm, struct xe_vma *vma,
 		return 0;
 
 	uvma = to_userptr_vma(vma);
-	notifier_seq = uvma->userptr.notifier_seq;
+	notifier_seq = uvma->userptr.hmmptr.notifier_seq;
 
 	if (uvma->userptr.initial_bind && !xe_vm_in_fault_mode(vm))
                return 0;
 
-	if (!mmu_interval_read_retry(&uvma->userptr.notifier,
+	if (!mmu_interval_read_retry(&uvma->userptr.hmmptr.notifier,
 				     notifier_seq) &&
 	    !xe_pt_userptr_inject_eagain(uvma))
 		return 0;
@@ -1757,7 +1757,7 @@ static int unbind_op_prepare(struct xe_tile *tile,
 	 * state if an invalidation is running while preparing an unbind.
 	 */
 	if (xe_vma_is_userptr(vma) && xe_vm_in_fault_mode(xe_vma_vm(vma)))
-		mmu_interval_read_begin(&to_userptr_vma(vma)->userptr.notifier);
+		mmu_interval_read_begin(&to_userptr_vma(vma)->userptr.hmmptr.notifier);
 
 	pt_op->vma = vma;
 	pt_op->bind = false;
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index f40ea5f11c33..97c6f25760ac 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -38,7 +38,6 @@
 #include "xe_sync.h"
 #include "xe_trace_bo.h"
 #include "xe_wa.h"
-#include "xe_hmm.h"
 
 static struct drm_gem_object *xe_vm_obj(struct xe_vm *vm)
 {
@@ -59,21 +58,63 @@ static struct drm_gem_object *xe_vm_obj(struct xe_vm *vm)
  */
 int xe_vma_userptr_check_repin(struct xe_userptr_vma *uvma)
 {
-	return mmu_interval_check_retry(&uvma->userptr.notifier,
-					uvma->userptr.notifier_seq) ?
+	return mmu_interval_check_retry(&uvma->userptr.hmmptr.notifier,
+					uvma->userptr.hmmptr.notifier_seq) ?
 		-EAGAIN : 0;
 }
 
+static void xe_vma_userptr_dma_map_pages(struct xe_userptr_vma *uvma,
+					 u64 start, u64 end)
+{
+	struct drm_hmmptr *hmmptr = &uvma->userptr.hmmptr;
+	struct xe_vma *vma = &uvma->vma;
+	struct xe_vm *vm = xe_vma_vm(vma);
+	struct xe_device *xe = vm->xe;
+	u64 npages = (end - start) >> PAGE_SHIFT;
+	u64 page_idx = (start - xe_vma_userptr(vma)) >> PAGE_SHIFT;
+
+	xe_assert(xe, xe_vma_is_userptr(vma));
+	xe_assert(xe, start >= xe_vma_userptr(vma));
+	xe_assert(xe, end <= xe_vma_userptr_end(vma));
+	drm_svm_hmmptr_map_dma_pages(hmmptr, page_idx, npages);
+}
+
+static void xe_vma_userptr_dma_unmap_pages(struct xe_userptr_vma *uvma,
+					   u64 start, u64 end)
+{
+	struct drm_hmmptr *hmmptr = &uvma->userptr.hmmptr;
+	struct xe_vma *vma = &uvma->vma;
+	struct xe_vm *vm = xe_vma_vm(vma);
+	struct xe_device *xe = vm->xe;
+	u64 npages = (end - start) >> PAGE_SHIFT;
+	u64 page_idx = (start - xe_vma_userptr(vma)) >> PAGE_SHIFT;
+
+	xe_assert(xe, xe_vma_is_userptr(vma));
+	xe_assert(xe, start >= xe_vma_userptr(vma));
+	xe_assert(xe, end <= xe_vma_userptr_end(vma));
+
+	drm_svm_hmmptr_unmap_dma_pages(hmmptr, page_idx, npages);
+}
+
 int xe_vma_userptr_pin_pages(struct xe_userptr_vma *uvma)
 {
+	struct drm_hmmptr *hmmptr = &uvma->userptr.hmmptr;
 	struct xe_vma *vma = &uvma->vma;
 	struct xe_vm *vm = xe_vma_vm(vma);
 	struct xe_device *xe = vm->xe;
+	int ret;
 
 	lockdep_assert_held(&vm->lock);
 	xe_assert(xe, xe_vma_is_userptr(vma));
 
-	return xe_hmm_userptr_populate_range(uvma, false);
+	ret = drm_svm_hmmptr_populate(hmmptr, NULL, xe_vma_userptr(vma),
+				      xe_vma_userptr(vma) + xe_vma_size(vma),
+				      !xe_vma_read_only(vma), false);
+	if (ret)
+		return ret;
+
+	xe_vma_userptr_dma_map_pages(uvma, xe_vma_userptr(vma), xe_vma_userptr_end(vma));
+	return 0;
 }
 
 static bool preempt_fences_waiting(struct xe_vm *vm)
@@ -574,7 +615,7 @@ static bool vma_userptr_invalidate(struct mmu_interval_notifier *mni,
 				   const struct mmu_notifier_range *range,
 				   unsigned long cur_seq)
 {
-	struct xe_userptr *userptr = container_of(mni, typeof(*userptr), notifier);
+	struct xe_userptr *userptr = container_of(mni, typeof(*userptr), hmmptr.notifier);
 	struct xe_userptr_vma *uvma = container_of(userptr, typeof(*uvma), userptr);
 	struct xe_vma *vma = &uvma->vma;
 	struct xe_vm *vm = xe_vma_vm(vma);
@@ -637,6 +678,8 @@ static bool vma_userptr_invalidate(struct mmu_interval_notifier *mni,
 		XE_WARN_ON(err);
 	}
 
+	xe_vma_userptr_dma_unmap_pages(uvma, xe_vma_userptr(vma), xe_vma_userptr_end(vma));
+
 	trace_xe_vma_userptr_invalidate_complete(vma);
 
 	return true;
@@ -891,6 +934,16 @@ static void xe_vma_free(struct xe_vma *vma)
 		kfree(vma);
 }
 
+static struct drm_gpuva *xe_hmmptr_get_gpuva(struct drm_hmmptr *hmmptr)
+{
+	struct xe_userptr_vma *uvma;
+	struct xe_vma *vma;
+
+	uvma = container_of(hmmptr, typeof(*uvma), userptr.hmmptr);
+	vma = &uvma->vma;
+	return &vma->gpuva;
+}
+
 #define VMA_CREATE_FLAG_READ_ONLY		BIT(0)
 #define VMA_CREATE_FLAG_IS_NULL			BIT(1)
 #define VMA_CREATE_FLAG_DUMPABLE		BIT(2)
@@ -976,23 +1029,19 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
 	} else /* userptr or null */ {
 		if (!is_null && !is_system_allocator) {
 			struct xe_userptr *userptr = &to_userptr_vma(vma)->userptr;
-			u64 size = end - start + 1;
 			int err;
 
 			INIT_LIST_HEAD(&userptr->invalidate_link);
 			INIT_LIST_HEAD(&userptr->repin_link);
 			vma->gpuva.gem.offset = bo_offset_or_userptr;
 
-			err = mmu_interval_notifier_insert(&userptr->notifier,
-							   current->mm,
-							   xe_vma_userptr(vma), size,
-							   &vma_userptr_notifier_ops);
+			userptr->hmmptr.get_gpuva = &xe_hmmptr_get_gpuva;
+			err = drm_svm_hmmptr_init(&userptr->hmmptr,
+						  &vma_userptr_notifier_ops);
 			if (err) {
 				xe_vma_free(vma);
 				return ERR_PTR(err);
 			}
-
-			userptr->notifier_seq = LONG_MAX;
 		}
 
 		xe_vm_get(vm);
@@ -1014,15 +1063,7 @@ static void xe_vma_destroy_late(struct xe_vma *vma)
 		struct xe_userptr_vma *uvma = to_userptr_vma(vma);
 		struct xe_userptr *userptr = &uvma->userptr;
 
-		if (userptr->sg)
-			xe_hmm_userptr_free_sg(uvma);
-
-		/*
-		 * Since userptr pages are not pinned, we can't remove
-		 * the notifer until we're sure the GPU is not accessing
-		 * them anymore
-		 */
-		mmu_interval_notifier_remove(&userptr->notifier);
+		drm_svm_hmmptr_release(&userptr->hmmptr);
 		xe_vm_put(vm);
 	} else if (xe_vma_is_null(vma) || xe_vma_is_system_allocator(vma)) {
 		xe_vm_put(vm);
@@ -3196,8 +3237,8 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
 	if (IS_ENABLED(CONFIG_PROVE_LOCKING)) {
 		if (xe_vma_is_userptr(vma)) {
 			WARN_ON_ONCE(!mmu_interval_check_retry
-				     (&to_userptr_vma(vma)->userptr.notifier,
-				      to_userptr_vma(vma)->userptr.notifier_seq));
+				     (&to_userptr_vma(vma)->userptr.hmmptr.notifier,
+				      to_userptr_vma(vma)->userptr.hmmptr.notifier_seq));
 			WARN_ON_ONCE(!dma_resv_test_signaled(xe_vm_resv(xe_vma_vm(vma)),
 							     DMA_RESV_USAGE_BOOKKEEP));
 
@@ -3283,7 +3324,7 @@ struct xe_vm_snapshot *xe_vm_snapshot_capture(struct xe_vm *vm)
 			snap->snap[i].bo_ofs = xe_vma_bo_offset(vma);
 		} else if (xe_vma_is_userptr(vma)) {
 			struct mm_struct *mm =
-				to_userptr_vma(vma)->userptr.notifier.mm;
+				to_userptr_vma(vma)->userptr.hmmptr.notifier.mm;
 
 			if (mmget_not_zero(mm))
 				snap->snap[i].mm = mm;
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index e1d3dd699380..976982972a06 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -36,20 +36,11 @@ struct xe_vm_pgtable_update_op;
 
 /** struct xe_userptr - User pointer */
 struct xe_userptr {
+	struct drm_hmmptr hmmptr;
 	/** @invalidate_link: Link for the vm::userptr.invalidated list */
 	struct list_head invalidate_link;
 	/** @userptr: link into VM repin list if userptr. */
 	struct list_head repin_link;
-	/**
-	 * @notifier: MMU notifier for user pointer (invalidation call back)
-	 */
-	struct mmu_interval_notifier notifier;
-	/** @sgt: storage for a scatter gather table */
-	struct sg_table sgt;
-	/** @sg: allocated scatter gather table */
-	struct sg_table *sg;
-	/** @notifier_seq: notifier sequence number */
-	unsigned long notifier_seq;
 	/**
 	 * @initial_bind: user pointer has been bound at least once.
 	 * write: vm->userptr.notifier_lock in read mode and vm->resv held.
-- 
2.26.3


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

* [CI 28/44] drm/xe: Moving to range based vma invalidation
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (25 preceding siblings ...)
  2024-06-14 21:58 ` [CI 27/44] drm/xe: use drm_hmmptr in xe Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 29/44] drm/xe: Support range based page table update Oak Zeng
                   ` (31 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

New parameters are introduced to the vma invalidation function to allow
partially invalidate a vma.

For userptr invalidation, we now only invalidate the mmu notified range
instead of the whole vma. This is more efficient than the whole vma based
invalidation.

For other cases, still keep the whole vma invalidation scheme.

One of the consequence of this change is, we now don't have information
whether a vma is fully invalidated or not, because vma can be partially
invalidated now. The tile_invalidated member is deleted due to this
reason.

This is prepare work for system allocator where we want to apply range
based vma invalidation. It is also reasonable to apply the same scheme
for userptr invalidation.

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c           |  2 +-
 drivers/gpu/drm/xe/xe_gt_pagefault.c | 11 ---------
 drivers/gpu/drm/xe/xe_pt.c           | 16 +++++++++---
 drivers/gpu/drm/xe/xe_pt.h           |  2 +-
 drivers/gpu/drm/xe/xe_vm.c           | 37 +++++++++++++++++++---------
 drivers/gpu/drm/xe/xe_vm.h           |  2 +-
 drivers/gpu/drm/xe/xe_vm_types.h     |  3 ---
 7 files changed, 41 insertions(+), 32 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 371ea9a5dd16..71670e7397fc 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -514,7 +514,7 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
 			struct xe_vma *vma = gpuva_to_vma(gpuva);
 
 			trace_xe_vma_evict(vma);
-			ret = xe_vm_invalidate_vma(vma);
+			ret = xe_vm_invalidate_vma(vma, xe_vma_start(vma), xe_vma_end(vma));
 			if (XE_WARN_ON(ret))
 				return ret;
 		}
diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
index 9292d5468868..9e84cff964b8 100644
--- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
@@ -65,12 +65,6 @@ static bool access_is_atomic(enum access_type access_type)
 	return access_type == ACCESS_TYPE_ATOMIC;
 }
 
-static bool vma_is_valid(struct xe_tile *tile, struct xe_vma *vma)
-{
-	return BIT(tile->id) & vma->tile_present &&
-		!(BIT(tile->id) & vma->tile_invalidated);
-}
-
 static bool vma_matches(struct xe_vma *vma, u64 page_addr)
 {
 	if (page_addr > xe_vma_end(vma) - 1 ||
@@ -138,10 +132,6 @@ static int handle_vma_pagefault(struct xe_tile *tile, struct pagefault *pf,
 	trace_xe_vma_pagefault(vma);
 	atomic = access_is_atomic(pf->access_type);
 
-	/* Check if VMA is valid */
-	if (vma_is_valid(tile, vma) && !atomic)
-		return 0;
-
 retry_userptr:
 	if (xe_vma_is_userptr(vma) &&
 	    xe_vma_userptr_check_repin(to_userptr_vma(vma))) {
@@ -175,7 +165,6 @@ static int handle_vma_pagefault(struct xe_tile *tile, struct pagefault *pf,
 
 	dma_fence_wait(fence, false);
 	dma_fence_put(fence);
-	vma->tile_invalidated &= ~BIT(tile->id);
 
 unlock_dma_resv:
 	drm_exec_fini(&exec);
diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index e4b42aa2517f..415386852e3b 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -792,6 +792,8 @@ static const struct xe_pt_walk_ops xe_pt_zap_ptes_ops = {
  * xe_pt_zap_ptes() - Zap (zero) gpu ptes of an address range
  * @tile: The tile we're zapping for.
  * @vma: GPU VMA detailing address range.
+ * @start: start of the range.
+ * @end: end of the range.
  *
  * Eviction and Userptr invalidation needs to be able to zap the
  * gpu ptes of a given address range in pagefaulting mode.
@@ -803,8 +805,11 @@ static const struct xe_pt_walk_ops xe_pt_zap_ptes_ops = {
  *
  * Return: Whether ptes were actually updated and a TLB invalidation is
  * required.
+ *
+ * FIXME: double confirm xe_pt_walk_shared support walking of a sub-range of
+ * vma (vs whole vma)
  */
-bool xe_pt_zap_ptes(struct xe_tile *tile, struct xe_vma *vma)
+bool xe_pt_zap_ptes(struct xe_tile *tile, struct xe_vma *vma, u64 start, u64 end)
 {
 	struct xe_pt_zap_ptes_walk xe_walk = {
 		.base = {
@@ -815,13 +820,16 @@ bool xe_pt_zap_ptes(struct xe_tile *tile, struct xe_vma *vma)
 		.tile = tile,
 	};
 	struct xe_pt *pt = xe_vma_vm(vma)->pt_root[tile->id];
-	u8 pt_mask = (vma->tile_present & ~vma->tile_invalidated);
+	u8 pt_mask = vma->tile_present;
+
+	xe_assert(tile_to_xe(tile), start >= xe_vma_start(vma));
+	xe_assert(tile_to_xe(tile), end <= xe_vma_end(vma));
 
 	if (!(pt_mask & BIT(tile->id)))
 		return false;
 
-	(void)xe_pt_walk_shared(&pt->base, pt->level, xe_vma_start(vma),
-				xe_vma_end(vma), &xe_walk.base);
+	(void)xe_pt_walk_shared(&pt->base, pt->level, start,
+				end, &xe_walk.base);
 
 	return xe_walk.needs_invalidate;
 }
diff --git a/drivers/gpu/drm/xe/xe_pt.h b/drivers/gpu/drm/xe/xe_pt.h
index 9ab386431cad..aa8ff28e75b0 100644
--- a/drivers/gpu/drm/xe/xe_pt.h
+++ b/drivers/gpu/drm/xe/xe_pt.h
@@ -41,6 +41,6 @@ struct dma_fence *xe_pt_update_ops_run(struct xe_tile *tile,
 void xe_pt_update_ops_fini(struct xe_tile *tile, struct xe_vma_ops *vops);
 void xe_pt_update_ops_abort(struct xe_tile *tile, struct xe_vma_ops *vops);
 
-bool xe_pt_zap_ptes(struct xe_tile *tile, struct xe_vma *vma);
+bool xe_pt_zap_ptes(struct xe_tile *tile, struct xe_vma *vma, u64 start, u64 end);
 
 #endif
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 97c6f25760ac..b0da8821fc9e 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -617,21 +617,31 @@ static bool vma_userptr_invalidate(struct mmu_interval_notifier *mni,
 {
 	struct xe_userptr *userptr = container_of(mni, typeof(*userptr), hmmptr.notifier);
 	struct xe_userptr_vma *uvma = container_of(userptr, typeof(*uvma), userptr);
+	u64 range_start, range_end, range_size, range_offset;
 	struct xe_vma *vma = &uvma->vma;
 	struct xe_vm *vm = xe_vma_vm(vma);
 	struct dma_resv_iter cursor;
 	struct dma_fence *fence;
+	u64 start, end;
 	long err;
 
+	range_start = max_t(u64, xe_vma_userptr(vma), range->start);
+	range_end = min_t(u64, xe_vma_userptr_end(vma), range->end);
+	range_size = range_end - range_start;
+	range_offset = range_start - xe_vma_userptr(vma);
+
 	xe_assert(vm->xe, xe_vma_is_userptr(vma));
 	trace_xe_vma_userptr_invalidate(vma);
 
+	start = xe_vma_start(vma) + range_offset;
+	end = start + range_size;
+
 	if (!mmu_notifier_range_blockable(range))
 		return false;
 
 	vm_dbg(&xe_vma_vm(vma)->xe->drm,
 	       "NOTIFIER: addr=0x%016llx, range=0x%016llx",
-		xe_vma_start(vma), xe_vma_size(vma));
+		start, range_size);
 
 	down_write(&vm->userptr.notifier_lock);
 	mmu_interval_set_seq(mni, cur_seq);
@@ -674,11 +684,11 @@ static bool vma_userptr_invalidate(struct mmu_interval_notifier *mni,
 	XE_WARN_ON(err <= 0);
 
 	if (xe_vm_in_fault_mode(vm)) {
-		err = xe_vm_invalidate_vma(vma);
+		err = xe_vm_invalidate_vma(vma, start, end);
 		XE_WARN_ON(err);
 	}
 
-	xe_vma_userptr_dma_unmap_pages(uvma, xe_vma_userptr(vma), xe_vma_userptr_end(vma));
+	xe_vma_userptr_dma_unmap_pages(uvma, range_start, range_end);
 
 	trace_xe_vma_userptr_invalidate_complete(vma);
 
@@ -721,7 +731,8 @@ int xe_vm_userptr_pin(struct xe_vm *vm)
 					      DMA_RESV_USAGE_BOOKKEEP,
 					      false, MAX_SCHEDULE_TIMEOUT);
 
-			err = xe_vm_invalidate_vma(&uvma->vma);
+			err = xe_vm_invalidate_vma(&uvma->vma, xe_vma_start(&uvma->vma),
+						   xe_vma_end(&uvma->vma));
 			xe_vm_unlock(vm);
 			if (err)
 				return err;
@@ -3207,8 +3218,10 @@ void xe_vm_unlock(struct xe_vm *vm)
 }
 
 /**
- * xe_vm_invalidate_vma - invalidate GPU mappings for VMA without a lock
+ * xe_vm_invalidate_vma - invalidate GPU mappings for a range of VMA without a lock
  * @vma: VMA to invalidate
+ * @start: start of the range.
+ * @end: end of the range.
  *
  * Walks a list of page tables leaves which it memset the entries owned by this
  * VMA to zero, invalidates the TLBs, and block until TLBs invalidation is
@@ -3216,7 +3229,7 @@ void xe_vm_unlock(struct xe_vm *vm)
  *
  * Returns 0 for success, negative error code otherwise.
  */
-int xe_vm_invalidate_vma(struct xe_vma *vma)
+int xe_vm_invalidate_vma(struct xe_vma *vma, u64 start, u64 end)
 {
 	struct xe_device *xe = xe_vma_vm(vma)->xe;
 	struct xe_tile *tile;
@@ -3227,11 +3240,13 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
 
 	xe_assert(xe, !xe_vma_is_null(vma));
 	xe_assert(xe, !xe_vma_is_system_allocator(vma));
+	xe_assert(xe, start >= xe_vma_start(vma));
+	xe_assert(xe, end <= xe_vma_end(vma));
 	trace_xe_vma_invalidate(vma);
 
 	vm_dbg(&xe_vma_vm(vma)->xe->drm,
 	       "INVALIDATE: addr=0x%016llx, range=0x%016llx",
-		xe_vma_start(vma), xe_vma_size(vma));
+		start, end - start);
 
 	/* Check that we don't race with page-table updates */
 	if (IS_ENABLED(CONFIG_PROVE_LOCKING)) {
@@ -3248,14 +3263,16 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
 	}
 
 	for_each_tile(tile, xe, id) {
-		if (xe_pt_zap_ptes(tile, vma)) {
+		if (xe_pt_zap_ptes(tile, vma, start, end)) {
 			tile_needs_invalidate |= BIT(id);
 			xe_device_wmb(xe);
 			/*
 			 * FIXME: We potentially need to invalidate multiple
 			 * GTs within the tile
 			 */
-			seqno[id] = xe_gt_tlb_invalidation_vma(tile->primary_gt, NULL, vma);
+			seqno[id] = xe_gt_tlb_invalidation_range(tile->primary_gt, NULL,
+								 start, end,
+								 xe_vma_vm(vma)->usm.asid);
 			if (seqno[id] < 0)
 				return seqno[id];
 		}
@@ -3269,8 +3286,6 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
 		}
 	}
 
-	vma->tile_invalidated = vma->tile_mask;
-
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 89f3306561ad..7c10f6c60b63 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -223,7 +223,7 @@ int xe_vm_rebind(struct xe_vm *vm, bool rebind_worker);
 struct dma_fence *xe_vma_rebind(struct xe_vm *vm, struct xe_vma *vma,
 				u8 tile_mask);
 
-int xe_vm_invalidate_vma(struct xe_vma *vma);
+int xe_vm_invalidate_vma(struct xe_vma *vma, u64 start, u64 end);
 
 static inline void xe_vm_queue_rebind_worker(struct xe_vm *vm)
 {
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 976982972a06..4d9707c19031 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -75,9 +75,6 @@ struct xe_vma {
 		struct work_struct destroy_work;
 	};
 
-	/** @tile_invalidated: VMA has been invalidated */
-	u8 tile_invalidated;
-
 	/** @tile_mask: Tile mask of where to create binding for this VMA */
 	u8 tile_mask;
 
-- 
2.26.3


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

* [CI 29/44] drm/xe: Support range based page table update
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (26 preceding siblings ...)
  2024-06-14 21:58 ` [CI 28/44] drm/xe: Moving to range based vma invalidation Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 30/44] drm/xe/uapi: Add DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM flag Oak Zeng
                   ` (30 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

Currently the page table update interface only supports whole xe_vma
bind. This works fine for BO based driver. But for system allocator,
we need to partially bind a vma to GPU page table.

GPU page table update interface such as xe_vma_rebind is modified
to support partial vma bind. Binding range (start, end) parameters
are added to a few vma bind and page table update functions.

VMA unbind is still whole xe_vma based as there is no requirement
to unbind a vma partiallly.

There is no function change in this patch. It is only a interface
change as a preparation of the coming system allocator codes.

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_gt_pagefault.c |  3 +-
 drivers/gpu/drm/xe/xe_pt.c           | 64 +++++++++++++++++-----------
 drivers/gpu/drm/xe/xe_vm.c           | 23 +++++-----
 drivers/gpu/drm/xe/xe_vm.h           |  2 +-
 4 files changed, 55 insertions(+), 37 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
index 9e84cff964b8..83167fc44dd7 100644
--- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
@@ -154,7 +154,8 @@ static int handle_vma_pagefault(struct xe_tile *tile, struct pagefault *pf,
 
 		/* Bind VMA only to the GT that has faulted */
 		trace_xe_vma_pf_bind(vma);
-		fence = xe_vma_rebind(vm, vma, BIT(tile->id));
+		fence = xe_vma_rebind(vm, vma, xe_vma_start(vma),
+				      xe_vma_end(vma), BIT(tile->id));
 		if (IS_ERR(fence)) {
 			err = PTR_ERR(fence);
 			if (xe_vm_validate_should_retry(&exec, err, &end))
diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index 415386852e3b..3c89a32741f5 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -583,6 +583,8 @@ static const struct xe_pt_walk_ops xe_pt_stage_bind_ops = {
  * range.
  * @tile: The tile we're building for.
  * @vma: The vma indicating the address range.
+ * @start: start of the address range to bind, must be inside vma's va range
+ * @end: end of the address range, must be inside vma's va range
  * @entries: Storage for the update entries used for connecting the tree to
  * the main tree at commit time.
  * @num_entries: On output contains the number of @entries used.
@@ -597,7 +599,7 @@ static const struct xe_pt_walk_ops xe_pt_stage_bind_ops = {
  * Return 0 on success, negative error code on error.
  */
 static int
-xe_pt_stage_bind(struct xe_tile *tile, struct xe_vma *vma,
+xe_pt_stage_bind(struct xe_tile *tile, struct xe_vma *vma, u64 start, u64 end,
 		 struct xe_vm_pgtable_update *entries, u32 *num_entries)
 {
 	struct xe_device *xe = tile_to_xe(tile);
@@ -614,7 +616,7 @@ xe_pt_stage_bind(struct xe_tile *tile, struct xe_vma *vma,
 		.vm = xe_vma_vm(vma),
 		.tile = tile,
 		.curs = &curs,
-		.va_curs_start = xe_vma_start(vma),
+		.va_curs_start = start,
 		.vma = vma,
 		.wupd.entries = entries,
 		.needs_64K = (xe_vma_vm(vma)->flags & XE_VM_FLAG_64K) && is_devmem,
@@ -622,6 +624,8 @@ xe_pt_stage_bind(struct xe_tile *tile, struct xe_vma *vma,
 	struct xe_pt *pt = xe_vma_vm(vma)->pt_root[tile->id];
 	int ret;
 
+	xe_assert(xe, start >= xe_vma_start(vma));
+	xe_assert(xe, end <= xe_vma_end(vma));
 	/**
 	 * Default atomic expectations for different allocation scenarios are as follows:
 	 *
@@ -668,21 +672,24 @@ xe_pt_stage_bind(struct xe_tile *tile, struct xe_vma *vma,
 	xe_bo_assert_held(bo);
 
 	if (!xe_vma_is_null(vma)) {
+		u64 size = end - start;
+		u64 offset = start - xe_vma_start(vma);
+		u64 page_idx = offset >> PAGE_SHIFT;
 		if (xe_vma_is_userptr(vma))
-			xe_res_first_dma(to_userptr_vma(vma)->userptr.hmmptr.dma_addr,
+			xe_res_first_dma(to_userptr_vma(vma)->userptr.hmmptr.dma_addr + page_idx,
 					 0, xe_vma_size(vma), 0, &curs);
 		else if (xe_bo_is_vram(bo) || xe_bo_is_stolen(bo))
-			xe_res_first(bo->ttm.resource, xe_vma_bo_offset(vma),
-				     xe_vma_size(vma), &curs);
+			xe_res_first(bo->ttm.resource, xe_vma_bo_offset(vma) + offset,
+				     size, &curs);
 		else
-			xe_res_first_sg(xe_bo_sg(bo), xe_vma_bo_offset(vma),
-					xe_vma_size(vma), &curs);
+			xe_res_first_sg(xe_bo_sg(bo), xe_vma_bo_offset(vma) + offset,
+					size, &curs);
 	} else {
 		curs.size = xe_vma_size(vma);
 	}
 
-	ret = xe_pt_walk_range(&pt->base, pt->level, xe_vma_start(vma),
-			       xe_vma_end(vma), &xe_walk.base);
+	ret = xe_pt_walk_range(&pt->base, pt->level, start,
+			       end, &xe_walk.base);
 
 	*num_entries = xe_walk.wupd.num_used_entries;
 	return ret;
@@ -984,13 +991,13 @@ static void xe_pt_free_bind(struct xe_vm_pgtable_update *entries,
 }
 
 static int
-xe_pt_prepare_bind(struct xe_tile *tile, struct xe_vma *vma,
+xe_pt_prepare_bind(struct xe_tile *tile, struct xe_vma *vma, u64 start, u64 end,
 		   struct xe_vm_pgtable_update *entries, u32 *num_entries)
 {
 	int err;
 
 	*num_entries = 0;
-	err = xe_pt_stage_bind(tile, vma, entries, num_entries);
+	err = xe_pt_stage_bind(tile, vma, start, end, entries, num_entries);
 	if (!err)
 		xe_tile_assert(tile, *num_entries);
 
@@ -1645,7 +1652,7 @@ xe_pt_commit_prepare_unbind(struct xe_vma *vma,
 
 static void
 xe_pt_update_ops_rfence_interval(struct xe_vm_pgtable_update_ops *pt_update_ops,
-				 struct xe_vma *vma)
+				 u64 start_va, u64 end_va)
 {
 	u32 current_op = pt_update_ops->current_op;
 	struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[current_op];
@@ -1660,8 +1667,8 @@ xe_pt_update_ops_rfence_interval(struct xe_vm_pgtable_update_ops *pt_update_ops,
 	}
 
 	/* Greedy (non-optimal) calculation but simple */
-	start = ALIGN_DOWN(xe_vma_start(vma), 0x1ull << xe_pt_shift(level));
-	last = ALIGN(xe_vma_end(vma), 0x1ull << xe_pt_shift(level)) - 1;
+	start = ALIGN_DOWN(start_va, 0x1ull << xe_pt_shift(level));
+	last = ALIGN(end_va, 0x1ull << xe_pt_shift(level)) - 1;
 
 	if (start < pt_update_ops->start)
 		pt_update_ops->start = start;
@@ -1680,7 +1687,7 @@ static int vma_reserve_fences(struct xe_device *xe, struct xe_vma *vma)
 
 static int bind_op_prepare(struct xe_vm *vm, struct xe_tile *tile,
 			   struct xe_vm_pgtable_update_ops *pt_update_ops,
-			   struct xe_vma *vma)
+			   struct xe_vma *vma, u64 start, u64 end)
 {
 	u32 current_op = pt_update_ops->current_op;
 	struct xe_vm_pgtable_update_op *pt_op = &pt_update_ops->ops[current_op];
@@ -1688,10 +1695,12 @@ static int bind_op_prepare(struct xe_vm *vm, struct xe_tile *tile,
 
 	xe_tile_assert(tile, !xe_vma_is_system_allocator(vma));
 	xe_bo_assert_held(xe_vma_bo(vma));
+	xe_assert(vm->xe, start >= xe_vma_start(vma));
+	xe_assert(vm->xe, end <= xe_vma_end(vma));
 
 	vm_dbg(&xe_vma_vm(vma)->xe->drm,
 	       "Preparing bind, with range [%llx...%llx)\n",
-	       xe_vma_start(vma), xe_vma_end(vma) - 1);
+	       start, end - 1);
 
 	pt_op->vma = NULL;
 	pt_op->bind = true;
@@ -1701,7 +1710,7 @@ static int bind_op_prepare(struct xe_vm *vm, struct xe_tile *tile,
 	if (err)
 		return err;
 
-	err = xe_pt_prepare_bind(tile, vma, pt_op->entries,
+	err = xe_pt_prepare_bind(tile, vma, start, end, pt_op->entries,
 				 &pt_op->num_entries);
 	if (!err) {
 		xe_tile_assert(tile, pt_op->num_entries <=
@@ -1709,7 +1718,7 @@ static int bind_op_prepare(struct xe_vm *vm, struct xe_tile *tile,
 		xe_vm_dbg_print_entries(tile_to_xe(tile), pt_op->entries,
 					pt_op->num_entries, true);
 
-		xe_pt_update_ops_rfence_interval(pt_update_ops, vma);
+		xe_pt_update_ops_rfence_interval(pt_update_ops, start, end);
 		++pt_update_ops->current_op;
 		pt_update_ops->needs_userptr_lock |= xe_vma_is_userptr(vma);
 
@@ -1779,7 +1788,7 @@ static int unbind_op_prepare(struct xe_tile *tile,
 
 	xe_vm_dbg_print_entries(tile_to_xe(tile), pt_op->entries,
 				pt_op->num_entries, false);
-	xe_pt_update_ops_rfence_interval(pt_update_ops, vma);
+	xe_pt_update_ops_rfence_interval(pt_update_ops, xe_vma_start(vma), xe_vma_end(vma));
 	++pt_update_ops->current_op;
 	pt_update_ops->needs_userptr_lock |= xe_vma_is_userptr(vma);
 	pt_update_ops->needs_invalidation = true;
@@ -1804,7 +1813,9 @@ static int op_prepare(struct xe_vm *vm,
 		    op->map.is_system_allocator)
 			break;
 
-		err = bind_op_prepare(vm, tile, pt_update_ops, op->map.vma);
+		err = bind_op_prepare(vm, tile, pt_update_ops, op->map.vma,
+				      op->base.map.va.addr,
+				      op->base.map.va.addr + op->base.map.va.range);
 		pt_update_ops->wait_vm_kernel = true;
 		break;
 	case DRM_GPUVA_OP_REMAP:
@@ -1817,13 +1828,15 @@ static int op_prepare(struct xe_vm *vm,
 		err = unbind_op_prepare(tile, pt_update_ops, old);
 
 		if (!err && op->remap.prev) {
-			err = bind_op_prepare(vm, tile, pt_update_ops,
-					      op->remap.prev);
+			err = bind_op_prepare(vm, tile, pt_update_ops, op->remap.prev,
+					      xe_vma_start(op->remap.prev),
+					      xe_vma_end(op->remap.prev));
 			pt_update_ops->wait_vm_bookkeep = true;
 		}
 		if (!err && op->remap.next) {
-			err = bind_op_prepare(vm, tile, pt_update_ops,
-					      op->remap.next);
+			err = bind_op_prepare(vm, tile, pt_update_ops, op->remap.next,
+					      xe_vma_start(op->remap.next),
+					      xe_vma_end(op->remap.next));
 			pt_update_ops->wait_vm_bookkeep = true;
 		}
 		break;
@@ -1845,7 +1858,8 @@ static int op_prepare(struct xe_vm *vm,
 		if (xe_vma_is_system_allocator(vma))
 			break;
 
-		err = bind_op_prepare(vm, tile, pt_update_ops, vma);
+		err = bind_op_prepare(vm, tile, pt_update_ops, vma,
+				      xe_vma_start(vma), xe_vma_end(vma));
 		pt_update_ops->wait_vm_kernel = true;
 		break;
 	}
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index b0da8821fc9e..147a5d76a0ee 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -803,15 +803,15 @@ static void xe_vma_ops_incr_pt_update_ops(struct xe_vma_ops *vops, u8 tile_mask)
 }
 
 static void xe_vm_populate_rebind(struct xe_vma_op *op, struct xe_vma *vma,
-				  u8 tile_mask)
+				  u64 start, u64 end, u8 tile_mask)
 {
 	INIT_LIST_HEAD(&op->link);
 	op->tile_mask = tile_mask;
 	op->base.op = DRM_GPUVA_OP_MAP;
-	op->base.map.va.addr = vma->gpuva.va.addr;
-	op->base.map.va.range = vma->gpuva.va.range;
+	op->base.map.va.addr = start;
+	op->base.map.va.range = end - start;
 	op->base.map.gem.obj = vma->gpuva.gem.obj;
-	op->base.map.gem.offset = vma->gpuva.gem.offset;
+	op->base.map.gem.offset = vma->gpuva.gem.offset + (start - xe_vma_start(vma));
 	op->map.vma = vma;
 	op->map.immediate = true;
 	op->map.dumpable = vma->gpuva.flags & XE_VMA_DUMPABLE;
@@ -819,7 +819,7 @@ static void xe_vm_populate_rebind(struct xe_vma_op *op, struct xe_vma *vma,
 }
 
 static int xe_vm_ops_add_rebind(struct xe_vma_ops *vops, struct xe_vma *vma,
-				u8 tile_mask)
+				u64 start, u64 end, u8 tile_mask)
 {
 	struct xe_vma_op *op;
 
@@ -827,7 +827,7 @@ static int xe_vm_ops_add_rebind(struct xe_vma_ops *vops, struct xe_vma *vma,
 	if (!op)
 		return -ENOMEM;
 
-	xe_vm_populate_rebind(op, vma, tile_mask);
+	xe_vm_populate_rebind(op, vma, start, end, tile_mask);
 	list_add_tail(&op->link, &vops->list);
 	xe_vma_ops_incr_pt_update_ops(vops, tile_mask);
 
@@ -866,8 +866,8 @@ int xe_vm_rebind(struct xe_vm *vm, bool rebind_worker)
 		else
 			trace_xe_vma_rebind_exec(vma);
 
-		err = xe_vm_ops_add_rebind(&vops, vma,
-					   vma->tile_present);
+		err = xe_vm_ops_add_rebind(&vops, vma, xe_vma_start(vma),
+					   xe_vma_end(vma), vma->tile_present);
 		if (err)
 			goto free_ops;
 	}
@@ -895,7 +895,8 @@ int xe_vm_rebind(struct xe_vm *vm, bool rebind_worker)
 	return err;
 }
 
-struct dma_fence *xe_vma_rebind(struct xe_vm *vm, struct xe_vma *vma, u8 tile_mask)
+struct dma_fence *xe_vma_rebind(struct xe_vm *vm, struct xe_vma *vma,
+				u64 start, u64 end, u8 tile_mask)
 {
 	struct dma_fence *fence = NULL;
 	struct xe_vma_ops vops;
@@ -907,6 +908,8 @@ struct dma_fence *xe_vma_rebind(struct xe_vm *vm, struct xe_vma *vma, u8 tile_ma
 	lockdep_assert_held(&vm->lock);
 	xe_vm_assert_held(vm);
 	xe_assert(vm->xe, xe_vm_in_fault_mode(vm));
+	xe_assert(vm->xe, start >= xe_vma_start(vma));
+	xe_assert(vm->xe, end <= xe_vma_end(vma));
 
 	xe_vma_ops_init(&vops, vm, NULL, NULL, 0);
 	for_each_tile(tile, vm->xe, id) {
@@ -915,7 +918,7 @@ struct dma_fence *xe_vma_rebind(struct xe_vm *vm, struct xe_vma *vma, u8 tile_ma
 			xe_tile_migrate_exec_queue(tile);
 	}
 
-	err = xe_vm_ops_add_rebind(&vops, vma, tile_mask);
+	err = xe_vm_ops_add_rebind(&vops, vma, start, end, tile_mask);
 	if (err)
 		return ERR_PTR(err);
 
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 7c10f6c60b63..680c0c49b2f4 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -221,7 +221,7 @@ int xe_vm_userptr_check_repin(struct xe_vm *vm);
 
 int xe_vm_rebind(struct xe_vm *vm, bool rebind_worker);
 struct dma_fence *xe_vma_rebind(struct xe_vm *vm, struct xe_vma *vma,
-				u8 tile_mask);
+				u64 start, u64 end, u8 tile_mask);
 
 int xe_vm_invalidate_vma(struct xe_vma *vma, u64 start, u64 end);
 
-- 
2.26.3


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

* [CI 30/44] drm/xe/uapi: Add DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM flag
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (27 preceding siblings ...)
  2024-06-14 21:58 ` [CI 29/44] drm/xe: Support range based page table update Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 31/44] drm/xe/svm: Create userptr if page fault occurs on system_allocator VMA Oak Zeng
                   ` (29 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

When a xe_vm is created with DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM,
xe_vm shares the same process address space with the CPU process who
create this xe_vm.

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Suggested-by: Christian Konig <Christian.koenig@amd.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_vm.c       | 2 ++
 drivers/gpu/drm/xe/xe_vm_types.h | 1 +
 include/uapi/drm/xe_drm.h        | 4 ++++
 3 files changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 147a5d76a0ee..4aa5a596475e 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1832,6 +1832,8 @@ int xe_vm_create_ioctl(struct drm_device *dev, void *data,
 		flags |= XE_VM_FLAG_LR_MODE;
 	if (args->flags & DRM_XE_VM_CREATE_FLAG_FAULT_MODE)
 		flags |= XE_VM_FLAG_FAULT_MODE;
+	if (args->flags & DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM)
+		flags |= XE_VM_FLAG_PARTICIPATE_SVM;
 
 	vm = xe_vm_create(xe, flags);
 	if (IS_ERR(vm))
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 4d9707c19031..165c2ca258de 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -143,6 +143,7 @@ struct xe_vm {
 #define XE_VM_FLAG_BANNED		BIT(5)
 #define XE_VM_FLAG_TILE_ID(flags)	FIELD_GET(GENMASK(7, 6), flags)
 #define XE_VM_FLAG_SET_TILE_ID(tile)	FIELD_PREP(GENMASK(7, 6), (tile)->id)
+#define XE_VM_FLAG_PARTICIPATE_SVM		BIT(8)
 	unsigned long flags;
 
 	/** @composite_fence_ctx: context composite fence */
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index af8ee6f929d4..ee09ed1ea3c2 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -830,6 +830,9 @@ struct drm_xe_gem_mmap_offset {
  *    demand when accessed, and also allows per-VM overcommit of memory.
  *    The xe driver internally uses recoverable pagefaults to implement
  *    this.
+ *  - %DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM - This vm participates
+ *    SVM (shared virtual memory), which means this vm share one process
+ *    address space with CPU process who create this xe_vm.
  */
 struct drm_xe_vm_create {
 	/** @extensions: Pointer to the first extension struct, if any */
@@ -838,6 +841,7 @@ struct drm_xe_vm_create {
 #define DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE	(1 << 0)
 #define DRM_XE_VM_CREATE_FLAG_LR_MODE	        (1 << 1)
 #define DRM_XE_VM_CREATE_FLAG_FAULT_MODE	(1 << 2)
+#define DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM	(1 << 3)
 	/** @flags: Flags */
 	__u32 flags;
 
-- 
2.26.3


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

* [CI 31/44] drm/xe/svm: Create userptr if page fault occurs on system_allocator VMA
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (28 preceding siblings ...)
  2024-06-14 21:58 ` [CI 30/44] drm/xe/uapi: Add DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM flag Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 32/44] drm/xe/svm: Add faulted userptr VMA garbage collector Oak Zeng
                   ` (28 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

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

If a page fault occurs on system_allocator VMA, create a userptr VMA to
replaced fault region and map to GPU.

v1: Pass userptr to the req_offset of sm_map_ops_create function. This
fix malloc'd memory failure (Oak)
drop xe_vma_is_userptr(vma) condition. XE_VMA_FAULT_USERPTR
is enough to determine a fault userptr (Matt)

v2: don't pin fault userptr during fault userptr creation. Fault userptr
is created during gpu page fault. After creation, we decide whether we
need to migrate it to GPU vram. So pin fault userptr after migration is
enough. A pin before migration is redundant. (Oak)

v3: remove mm field from xe_vm as we add mm in drm_gpuvm now. rebase (Oak)

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_gt_pagefault.c |  12 +++
 drivers/gpu/drm/xe/xe_vm.c           | 118 +++++++++++++++++++++++++--
 drivers/gpu/drm/xe/xe_vm.h           |   7 ++
 drivers/gpu/drm/xe/xe_vm_types.h     |   1 +
 4 files changed, 133 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
index 83167fc44dd7..e5187d5d51d1 100644
--- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
@@ -132,6 +132,18 @@ static int handle_vma_pagefault(struct xe_tile *tile, struct pagefault *pf,
 	trace_xe_vma_pagefault(vma);
 	atomic = access_is_atomic(pf->access_type);
 
+	/*
+	 * Create userptr VMA if fault occurs in a range reserved for system
+	 * allocator.
+	 */
+	if (xe_vma_is_system_allocator(vma)) {
+		vma = xe_vm_fault_userptr(vm, pf->page_addr);
+		if (IS_ERR(vma)) {
+			xe_vm_kill(vm, true);
+			return PTR_ERR(vma);
+		}
+	}
+
 retry_userptr:
 	if (xe_vma_is_userptr(vma) &&
 	    xe_vma_userptr_check_repin(to_userptr_vma(vma))) {
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 4aa5a596475e..961aeb2bc9b6 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1482,7 +1482,8 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 	}
 
 	drm_gpuvm_init(&vm->gpuvm, "Xe VM", DRM_GPUVM_RESV_PROTECTED, &xe->drm,
-		       vm_resv_obj, 0, vm->size, 0, 0, &gpuvm_ops, false);
+		       vm_resv_obj, 0, vm->size, 0, 0, &gpuvm_ops,
+		       flags & XE_VM_FLAG_PARTICIPATE_SVM);
 
 	drm_gem_object_put(vm_resv_obj);
 
@@ -2093,7 +2094,7 @@ static struct xe_vma *new_vma(struct xe_vm *vm, struct drm_gpuva_op_map *op,
 	if (bo)
 		drm_exec_fini(&exec);
 
-	if (xe_vma_is_userptr(vma)) {
+	if (xe_vma_is_userptr(vma) && !xe_vma_is_fault_userptr(vma)) {
 		err = xe_vma_userptr_pin_pages(to_userptr_vma(vma));
 		if (err) {
 			prep_vma_destroy(vm, vma, false);
@@ -2207,8 +2208,11 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)
 	return err;
 }
 
-static int vm_bind_ioctl_ops_parse(struct xe_vm *vm, struct drm_gpuva_ops *ops,
-				   struct xe_vma_ops *vops)
+static int vm_bind_ioctl_ops_update_gpuvm_state(struct xe_vm *vm,
+						struct drm_gpuva_ops *ops,
+						struct xe_sync_entry *syncs,
+						u32 num_syncs,
+						struct xe_vma_ops *vops)
 {
 	struct xe_device *xe = vm->xe;
 	struct drm_gpuva_op *__op;
@@ -3145,7 +3149,8 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 			goto unwind_ops;
 		}
 
-		err = vm_bind_ioctl_ops_parse(vm, ops[i], &vops);
+		err = vm_bind_ioctl_ops_update_gpuvm_state(vm, ops[i], syncs,
+							   num_syncs, &vops);
 		if (err)
 			goto unwind_ops;
 	}
@@ -3465,3 +3470,106 @@ void xe_vm_snapshot_free(struct xe_vm_snapshot *snap)
 	}
 	kvfree(snap);
 }
+
+/**
+ * xe_vm_fault_userptr() - VM fault userptr
+ * @vm: VM
+ * @fault_addr: fault address
+ *
+ * Create userptr VMA from fault address
+ *
+ * Return: newly created userptr VMA on success, ERR_PTR on failure
+ */
+struct xe_vma *xe_vm_fault_userptr(struct xe_vm *vm, u64 fault_addr)
+{
+	struct vm_area_struct *vas;
+	struct mm_struct *mm = vm->gpuvm.mm;
+	struct xe_vma_ops vops;
+	struct drm_gpuva_ops *ops = NULL;
+	struct drm_gpuva_op *__op;
+	struct xe_vma *vma = NULL;
+	u64 start, range;
+	int err;
+
+	vm_dbg(&vm->xe->drm, "FAULT: addr=0x%016llx", fault_addr);
+
+	if (!mmget_not_zero(mm))
+		return ERR_PTR(-EFAULT);
+
+	kthread_use_mm(mm);
+
+	mmap_read_lock(mm);
+	vas = find_vma_intersection(mm, fault_addr, fault_addr + 4);
+	if (!vas) {
+		err = -ENOENT;
+		goto err_unlock;
+	}
+
+	vm_dbg(&vm->xe->drm, "FOUND VAS: vm_start=0x%016lx, vm_end=0x%016lx",
+	       vas->vm_start, vas->vm_end);
+
+	start = vas->vm_start;
+	range = vas->vm_end - vas->vm_start;
+	mmap_read_unlock(mm);
+
+	ops = drm_gpuvm_sm_map_ops_create(&vm->gpuvm, start, range, 0, start);
+	if (IS_ERR(ops)) {
+		err = PTR_ERR(ops);
+		goto err_kthread;
+	}
+
+	drm_gpuva_for_each_op(__op, ops)
+		print_op(vm->xe, __op);
+
+	xe_vma_ops_init(&vops, vm, NULL, NULL, 0);
+	err = vm_bind_ioctl_ops_update_gpuvm_state(vm, ops, NULL, 0, &vops);
+	if (err)
+		goto err_kthread;
+
+	/*
+	 * No need to execute ops as we just want to update GPUVM state, page
+	 * fault handler will update GPU page tables. Find VMA that needs GPU
+	 * mapping and return to page fault handler.
+	 */
+	xe_vm_lock(vm, false);
+	drm_gpuva_for_each_op(__op, ops) {
+		struct xe_vma_op *op = gpuva_op_to_vma_op(__op);
+
+		if (__op->op == DRM_GPUVA_OP_MAP) {
+			xe_assert(vm->xe, !vma);
+			vma = op->map.vma;
+			vma->gpuva.flags |= XE_VMA_FAULT_USERPTR;
+		} else if (__op->op == DRM_GPUVA_OP_UNMAP) {
+			xe_vma_destroy(gpuva_to_vma(op->base.unmap.va), NULL);
+		} else if (__op->op == DRM_GPUVA_OP_REMAP) {
+			xe_vma_destroy(gpuva_to_vma(op->base.remap.unmap->va),
+				       NULL);
+		}
+	}
+	xe_vm_unlock(vm);
+
+	kthread_unuse_mm(mm);
+	mmput(mm);
+	drm_gpuva_ops_free(&vm->gpuvm, ops);
+
+	return vma;
+
+err_unlock:
+	mmap_read_unlock(mm);
+err_kthread:
+	kthread_unuse_mm(mm);
+	mmput(mm);
+	if (ops) {
+		drm_gpuva_for_each_op_reverse(__op, ops) {
+			struct xe_vma_op *op = gpuva_op_to_vma_op(__op);
+
+			xe_vma_op_unwind(vm, op,
+					 op->flags & XE_VMA_OP_COMMITTED,
+					 op->flags & XE_VMA_OP_PREV_COMMITTED,
+					 op->flags & XE_VMA_OP_NEXT_COMMITTED);
+		}
+		drm_gpuva_ops_free(&vm->gpuvm, ops);
+	}
+
+	return ERR_PTR(err);
+}
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 680c0c49b2f4..a31409b87b8a 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -172,6 +172,11 @@ static inline bool xe_vma_is_userptr(struct xe_vma *vma)
 		!xe_vma_is_system_allocator(vma);
 }
 
+static inline bool xe_vma_is_fault_userptr(struct xe_vma *vma)
+{
+	return vma->gpuva.flags & XE_VMA_FAULT_USERPTR;
+}
+
 /**
  * to_userptr_vma() - Return a pointer to an embedding userptr vma
  * @vma: Pointer to the embedded struct xe_vma
@@ -252,6 +257,8 @@ int xe_vma_userptr_pin_pages(struct xe_userptr_vma *uvma);
 
 int xe_vma_userptr_check_repin(struct xe_userptr_vma *uvma);
 
+struct xe_vma *xe_vm_fault_userptr(struct xe_vm *vm, u64 fault_addr);
+
 bool xe_vm_validate_should_retry(struct drm_exec *exec, int err, ktime_t *end);
 
 int xe_vm_lock_vma(struct drm_exec *exec, struct xe_vma *vma);
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index 165c2ca258de..c1bffa60cefc 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -33,6 +33,7 @@ struct xe_vm_pgtable_update_op;
 #define XE_VMA_PTE_COMPACT	(DRM_GPUVA_USERBITS << 7)
 #define XE_VMA_DUMPABLE		(DRM_GPUVA_USERBITS << 8)
 #define XE_VMA_SYSTEM_ALLOCATOR	(DRM_GPUVA_USERBITS << 9)
+#define XE_VMA_FAULT_USERPTR	(DRM_GPUVA_USERBITS << 10)
 
 /** struct xe_userptr - User pointer */
 struct xe_userptr {
-- 
2.26.3


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

* [CI 32/44] drm/xe/svm: Add faulted userptr VMA garbage collector
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (29 preceding siblings ...)
  2024-06-14 21:58 ` [CI 31/44] drm/xe/svm: Create userptr if page fault occurs on system_allocator VMA Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 33/44] drm/xe: Introduce helper to get tile from memory region Oak Zeng
                   ` (27 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

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

When a faulted userptr VMA (allocated by page handler) is invalidated
add to list which a garbage collector will unmap from GPU, destroy
faulted userptr VMA, and replace with system_allocator VMA.

v1: Run gargabe collector only on MMU_NOTIFY_UNMAP event. For other
    events, we just invalidate GPU page table but keep the vma because
    the userptr is still exist. On next GPU access, we will revalidate
    and rebind this userptr to GPU(Oak)
v2: rebase
    support range based userptr invalidation in garbage collector. Allow
    partial of a userptr to be invalidated (such as trigger by partial
    munmap of a userptr) (Oak)
    Fix vm->lock recursive lock issue (Oak)

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_gt_pagefault.c |   1 +
 drivers/gpu/drm/xe/xe_vm.c           | 162 +++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_vm.h           |   8 ++
 drivers/gpu/drm/xe/xe_vm_types.h     |  15 +++
 4 files changed, 186 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
index e5187d5d51d1..93efee125fc0 100644
--- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
@@ -145,6 +145,7 @@ static int handle_vma_pagefault(struct xe_tile *tile, struct pagefault *pf,
 	}
 
 retry_userptr:
+	xe_vm_userptr_garbage_collector(vm);
 	if (xe_vma_is_userptr(vma) &&
 	    xe_vma_userptr_check_repin(to_userptr_vma(vma))) {
 		struct xe_userptr_vma *uvma = to_userptr_vma(vma);
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 961aeb2bc9b6..418420918bd3 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -690,6 +690,21 @@ static bool vma_userptr_invalidate(struct mmu_interval_notifier *mni,
 
 	xe_vma_userptr_dma_unmap_pages(uvma, range_start, range_end);
 
+	if (range->event == MMU_NOTIFY_UNMAP &&
+	    vma->gpuva.flags & XE_VMA_FAULT_USERPTR &&
+	    !xe_vm_is_closed(vm) && !xe_vm_is_banned(vm) &&
+	    !(vma->gpuva.flags & XE_VMA_DESTROYED) && vma->tile_present) {
+		xe_assert(vm->xe, xe_vm_in_fault_mode(vm));
+		userptr->invalidate_start = start;
+		userptr->invalidate_range = range_size;
+		spin_lock(&vm->userptr.invalidated_lock);
+		list_move_tail(&userptr->invalidate_link,
+			       &vm->userptr.fault_invalidated);
+		spin_unlock(&vm->userptr.invalidated_lock);
+
+		queue_work(system_wq, &vm->userptr.garbage_collector);
+	}
+
 	trace_xe_vma_userptr_invalidate_complete(vma);
 
 	return true;
@@ -1428,6 +1443,8 @@ static void xe_vm_free_scratch(struct xe_vm *vm)
 	}
 }
 
+static void vm_userptr_garbage_collector(struct work_struct *w);
+
 struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 {
 	struct drm_gem_object *vm_resv_obj;
@@ -1453,8 +1470,10 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 
 	INIT_LIST_HEAD(&vm->userptr.repin_list);
 	INIT_LIST_HEAD(&vm->userptr.invalidated);
+	INIT_LIST_HEAD(&vm->userptr.fault_invalidated);
 	init_rwsem(&vm->userptr.notifier_lock);
 	spin_lock_init(&vm->userptr.invalidated_lock);
+	INIT_WORK(&vm->userptr.garbage_collector, vm_userptr_garbage_collector);
 
 	INIT_WORK(&vm->destroy_work, vm_destroy_work_func);
 
@@ -1609,6 +1628,8 @@ void xe_vm_close_and_put(struct xe_vm *vm)
 	xe_vm_close(vm);
 	if (xe_vm_in_preempt_fence_mode(vm))
 		flush_work(&vm->preempt.rebind_work);
+	if (xe_vm_in_fault_mode(vm))
+		flush_work(&vm->userptr.garbage_collector);
 
 	down_write(&vm->lock);
 	for_each_tile(tile, xe, id) {
@@ -3573,3 +3594,144 @@ struct xe_vma *xe_vm_fault_userptr(struct xe_vm *vm, u64 fault_addr)
 
 	return ERR_PTR(err);
 }
+
+static int
+vm_userptr_garbage_collector_destroy_uvma(struct xe_vm *vm,
+					  struct xe_userptr_vma *uvma)
+{
+	struct xe_userptr *userptr = &uvma->userptr;
+	struct mm_struct *mm = vm->gpuvm.mm;
+	struct xe_vma_ops vops;
+	struct drm_gpuva_ops *ops = NULL;
+	struct drm_gpuva_op *__op;
+	struct xe_tile *tile;
+	u8 id;
+	int err;
+
+	vm_dbg(&vm->xe->drm, "GARBAGE COLLECTOR: addr=0x%016llx, range=0x%016llx",
+	       userptr->invalidate_start, userptr->invalidate_range);
+
+	xe_assert(vm->xe, uvma->vma.gpuva.flags & XE_VMA_FAULT_USERPTR);
+	lockdep_assert_held_write(&vm->lock);
+
+	if (!mmget_not_zero(mm))
+		return -EFAULT;
+
+	kthread_use_mm(mm);
+
+	/* Replace xe_userptr_vma sub-range with system_allocator VMA */
+	ops = drm_gpuvm_sm_map_ops_create(&vm->gpuvm,
+					  userptr->invalidate_start,
+					  userptr->invalidate_range, 0, 0);
+	if (IS_ERR(ops)) {
+		err = PTR_ERR(ops);
+		goto err_kthread;
+	}
+
+	drm_gpuva_for_each_op(__op, ops) {
+		struct xe_vma_op *op = gpuva_op_to_vma_op(__op);
+
+		if (__op->op == DRM_GPUVA_OP_MAP) {
+			op->map.immediate = true;
+			op->map.is_system_allocator = true;
+		}
+
+		print_op(vm->xe, __op);
+	}
+
+	xe_vma_ops_init(&vops, vm, NULL, NULL, 0);
+	err = vm_bind_ioctl_ops_update_gpuvm_state(vm, ops, NULL, 0, &vops);
+	if (err)
+		goto err_kthread;
+
+	/*
+	 * Order behind any user operations and use same exec queue as page
+	 * fault handler.
+	 */
+	for_each_tile(tile, vm->xe, id) {
+		vops.pt_update_ops[tile->id].wait_vm_bookkeep = true;
+		vops.pt_update_ops[tile->id].q =
+			xe_tile_migrate_exec_queue(tile);
+	}
+
+	err = xe_vma_ops_alloc(&vops);
+	if (err)
+		goto err_kthread;
+
+	err = vm_bind_ioctl_ops_execute(vm, &vops);
+
+	xe_vma_ops_fini(&vops);
+	kthread_unuse_mm(mm);
+	mmput(mm);
+	drm_gpuva_ops_free(&vm->gpuvm, ops);
+
+	return err;
+
+err_kthread:
+	kthread_unuse_mm(mm);
+	mmput(mm);
+	if (ops)
+		drm_gpuva_ops_free(&vm->gpuvm, ops);
+
+	return err;
+}
+
+static void vm_userptr_garbage_collector_locked(struct xe_vm *vm)
+{
+	struct xe_userptr_vma *uvma, *next;
+	int err;
+
+	xe_assert(vm->xe, xe_vm_in_fault_mode(vm));
+
+	if (xe_vm_is_closed_or_banned(vm))
+		return;
+
+	/*
+	 * FIXME: Could create 1 set of VMA ops for all VMAs on
+	 * fault_invalidated list
+	 */
+	spin_lock(&vm->userptr.invalidated_lock);
+	list_for_each_entry_safe(uvma, next, &vm->userptr.fault_invalidated,
+				 userptr.invalidate_link) {
+		list_del_init(&uvma->userptr.invalidate_link);
+		spin_unlock(&vm->userptr.invalidated_lock);
+
+		err = vm_userptr_garbage_collector_destroy_uvma(vm, uvma);
+		if (err) {
+			XE_WARN_ON("Garbage collection failed, killing VM");
+			xe_vm_kill(vm, true);
+		}
+
+		spin_lock(&vm->userptr.invalidated_lock);
+	}
+	spin_unlock(&vm->userptr.invalidated_lock);
+}
+
+static void vm_userptr_garbage_collector(struct work_struct *w)
+{
+	struct xe_vm *vm =
+		container_of(w, struct xe_vm, userptr.garbage_collector);
+
+	down_write(&vm->lock);
+
+	if (xe_vm_is_closed_or_banned(vm))
+		goto unlock;
+
+	vm_userptr_garbage_collector_locked(vm);
+
+unlock:
+	up_write(&vm->lock);
+}
+
+/**
+ * xe_vm_userptr_garbage_collector() - VM userptr garbage collector
+ * @vm: VM
+ *
+ * For all invalidated faulted userptr VMAs (created by page fault handler)
+ * unmap from GPU, destroy faulted userptr VMA, and replace with
+ * system_allocator VMA.
+ */
+void xe_vm_userptr_garbage_collector(struct xe_vm *vm)
+{
+	vm_userptr_garbage_collector_locked(vm);
+}
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index a31409b87b8a..b3b6ceec39ba 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -285,6 +285,14 @@ void xe_vm_kill(struct xe_vm *vm, bool unlocked);
  */
 #define xe_vm_assert_held(vm) dma_resv_assert_held(xe_vm_resv(vm))
 
+int xe_vm_populate_dummy_rebind(struct xe_vm *vm, struct xe_vma *vma,
+				u8 tile_mask);
+void xe_vma_ops_free(struct xe_vma_ops *vops);
+struct dma_fence *xe_vm_ops_execute(struct xe_vm *vm, struct xe_vma_ops *vops);
+
+void xe_vm_kill(struct xe_vm *vm, bool unlocked);
+void xe_vm_userptr_garbage_collector(struct xe_vm *vm);
+
 #if IS_ENABLED(CONFIG_DRM_XE_DEBUG_VM)
 #define vm_dbg drm_dbg
 #else
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index c1bffa60cefc..6ebe05242997 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -40,6 +40,10 @@ struct xe_userptr {
 	struct drm_hmmptr hmmptr;
 	/** @invalidate_link: Link for the vm::userptr.invalidated list */
 	struct list_head invalidate_link;
+	/** invalidation start address */
+	u64 invalidate_start;
+	/** invalidation range */
+	u64 invalidate_range;
 	/** @userptr: link into VM repin list if userptr. */
 	struct list_head repin_link;
 	/**
@@ -212,6 +216,17 @@ struct xe_vm {
 		 * write mode.
 		 */
 		struct list_head invalidated;
+		/**
+		 * @userptr.fault_invalidated: List of invalidated userptrs,
+		 * craeted by page fault, which will be destroy by the garbage
+		 * collector. Protected from access with the @invalidated_lock.
+		 */
+		struct list_head fault_invalidated;
+		/**
+		 * @userptr.garbage_collector: worker to implement destroying of
+		 * userptrs on @userptr.fault_invalidated list.
+		 */
+		struct work_struct garbage_collector;
 	} userptr;
 
 	/** @preempt: preempt state */
-- 
2.26.3


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

* [CI 33/44] drm/xe: Introduce helper to get tile from memory region
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (30 preceding siblings ...)
  2024-06-14 21:58 ` [CI 32/44] drm/xe/svm: Add faulted userptr VMA garbage collector Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 34/44] drm/xe/svm: implement functions to allocate and free device memory Oak Zeng
                   ` (26 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

Introduce a simple helper to retrieve tile from memory region

v1: move the function to xe_device.h (Matt)
    improve commit message, add kerneldoc (Thomas)
v2: move the function to xe_tile.h (Matt)

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_tile.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_tile.h b/drivers/gpu/drm/xe/xe_tile.h
index 1c9e42ade6b0..091c5a98110a 100644
--- a/drivers/gpu/drm/xe/xe_tile.h
+++ b/drivers/gpu/drm/xe/xe_tile.h
@@ -15,4 +15,12 @@ int xe_tile_init_noalloc(struct xe_tile *tile);
 
 void xe_tile_migrate_wait(struct xe_tile *tile);
 
+/**
+ * xe_mem_region_to_tile() - retrieve tile from memory region
+ * @mr: the memory region we retrieve tile from
+ */
+static inline struct xe_tile *xe_mem_region_to_tile(struct xe_mem_region *mr)
+{
+	return container_of(mr, struct xe_tile, mem.vram);
+}
 #endif
-- 
2.26.3


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

* [CI 34/44] drm/xe/svm: implement functions to allocate and free device memory
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (31 preceding siblings ...)
  2024-06-14 21:58 ` [CI 33/44] drm/xe: Introduce helper to get tile from memory region Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 35/44] drm/xe/svm: Get drm device from drm memory region Oak Zeng
                   ` (25 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

Function xe_svm_alloc_pages allocate pages from drm buddy and perform
house keeping work for all the pages allocated, such as get a page
refcount, set page's zone_device_data to point to the drm buddy block
that the page belongs to.

Function xe_svm_free_page free one page back to drm buddy allocator.

v1: Drop buddy block meta data (Matt)
    Take vram_mgr->lock during buddy operation (Matt)
    Moving to page granularity memory free (Oak)

Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Co-developed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/Makefile |   1 +
 drivers/gpu/drm/xe/xe_svm.c | 148 ++++++++++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_svm.h |  16 ++++
 3 files changed, 165 insertions(+)
 create mode 100644 drivers/gpu/drm/xe/xe_svm.c
 create mode 100644 drivers/gpu/drm/xe/xe_svm.h

diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index b30b70b7213f..3b59d7cb58e9 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -108,6 +108,7 @@ xe-y += xe_bb.o \
 	xe_sa.o \
 	xe_sched_job.o \
 	xe_step.o \
+	xe_svm.o \
 	xe_sync.o \
 	xe_tile.o \
 	xe_tile_sysfs.o \
diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
new file mode 100644
index 000000000000..a64dbbdff1ae
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -0,0 +1,148 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2023 Intel Corporation
+ */
+
+#include <linux/mm_types.h>
+#include <linux/sched/mm.h>
+#include <linux/gfp.h>
+#include <drm/drm_buddy.h>
+#include "xe_ttm_vram_mgr_types.h"
+#include "xe_device_types.h"
+#include "xe_device.h"
+#include "xe_tile.h"
+#include "xe_svm.h"
+#include "xe_assert.h"
+
+/** This is a placeholder for compilation. Will introduce function to drm buddy */
+static void drm_buddy_block_free_subrange(struct drm_buddy_block *block, u64 start,
+					  u64 end, struct list_head *block_list)
+{
+}
+
+static u64 block_offset_to_pfn(struct xe_mem_region *mr, u64 offset)
+{
+	/** DRM buddy's block offset is 0-based*/
+	offset += mr->drm_mr.hpa_base;
+
+	return PHYS_PFN(offset);
+}
+
+void xe_svm_free_page(struct page *page)
+{
+	struct drm_buddy_block *block =
+					(struct drm_buddy_block *)page->zone_device_data;
+	struct drm_mem_region *mr = drm_page_to_mem_region(page);
+	struct xe_mem_region *xe_mr = container_of(mr, struct xe_mem_region, drm_mr);
+	struct xe_tile *tile = xe_mem_region_to_tile(xe_mr);
+	struct drm_buddy *mm = &tile->mem.vram_mgr->mm;
+	u64 size = drm_buddy_block_size(mm, block);
+	u64 pages_per_block = size >> PAGE_SHIFT;
+	u64 block_pfn_first =
+					block_offset_to_pfn(xe_mr, drm_buddy_block_offset(block));
+	u64 page_pfn = page_to_pfn(page);
+	u64 page_idx = page_pfn - block_pfn_first;
+	struct list_head blocks = LIST_HEAD_INIT(blocks);
+	struct drm_buddy_block *tmp;
+	int i;
+
+	xe_assert(tile->xe, page_idx < pages_per_block);
+	drm_buddy_block_free_subrange(block, page_idx << PAGE_SHIFT,
+				      (page_idx << PAGE_SHIFT) + PAGE_SIZE, &blocks);
+
+	/**
+	 * page's buddy_block (record in page's zone_device_data) is changed
+	 * due to above partial free. update zone_device_data.
+	 */
+	list_for_each_entry_safe(block, tmp, &blocks, link) {
+		size = drm_buddy_block_size(mm, block);
+		pages_per_block = size >> PAGE_SHIFT;
+		block_pfn_first =
+					block_offset_to_pfn(xe_mr, drm_buddy_block_offset(block));
+		for (i = 0; i < pages_per_block; i++) {
+			struct page *p;
+
+			p = pfn_to_page(block_pfn_first + i);
+			p->zone_device_data = block;
+		}
+	}
+}
+
+/**
+ * __free_blocks() - free all memory blocks
+ *
+ * @mm: drm_buddy that the blocks belongs to
+ * @blocks: memory blocks list head
+ */
+static void __free_blocks(struct drm_buddy *mm, struct list_head *blocks)
+{
+	struct drm_buddy_block *block, *tmp;
+
+	list_for_each_entry_safe(block, tmp, blocks, link)
+		drm_buddy_free_block(mm, block);
+}
+
+/**
+ * xe_svm_alloc_pages() - allocate device pages from buddy allocator
+ *
+ * @mr: which memory region to allocate device memory from
+ * @npages: how many pages to allocate
+ * @pfn: used to return the pfn of all allocated pages. Must be big enough
+ * to hold at @npages entries.
+ *
+ * This function allocate blocks of memory from drm buddy allocator, and
+ * performs initialization work: set struct page::zone_device_data to point
+ * to the memory block; zone_device_page_init each page allocated; add pages
+ * to lru managers lru list for eviction purpose - this is TBD.
+ *
+ * return: 0 on success
+ * error code otherwise
+ */
+int xe_svm_alloc_pages(struct drm_mem_region *mr,
+		       unsigned long npages, unsigned long *pfn)
+{
+	struct xe_mem_region *xe_mr = container_of(mr, struct xe_mem_region, drm_mr);
+	struct xe_tile *tile = xe_mem_region_to_tile(xe_mr);
+	struct drm_buddy *mm = &tile->mem.vram_mgr->mm;
+	struct drm_buddy_block *block, *tmp;
+	u64 size = npages << PAGE_SHIFT;
+	int ret = 0, i, j = 0;
+	struct list_head blocks;
+
+	mutex_lock(&tile->mem.vram_mgr->lock);
+	ret = drm_buddy_alloc_blocks(mm, 0, mm->size, size, PAGE_SIZE,
+				     &blocks, DRM_BUDDY_CONTIGUOUS_ALLOCATION);
+
+	if (unlikely(ret)) {
+		mutex_unlock(&tile->mem.vram_mgr->lock);
+		return ret;
+	}
+
+	ret = drm_buddy_block_trim(mm, size, &blocks);
+	if (ret) {
+		__free_blocks(mm, &blocks);
+		mutex_unlock(&tile->mem.vram_mgr->lock);
+		return ret;
+	}
+	mutex_unlock(&tile->mem.vram_mgr->lock);
+
+	list_for_each_entry_safe(block, tmp, &blocks, link) {
+		u64 block_pfn_first, pages_per_block;
+
+		size = drm_buddy_block_size(mm, block);
+		pages_per_block = size >> PAGE_SHIFT;
+		block_pfn_first =
+					block_offset_to_pfn(xe_mr, drm_buddy_block_offset(block));
+		for (i = 0; i < pages_per_block; i++) {
+			struct page *page;
+
+			pfn[j++] = block_pfn_first + i;
+			page = pfn_to_page(block_pfn_first + i);
+			/**Lock page per hmm requirement, see hmm.rst.*/
+			zone_device_page_init(page);
+			page->zone_device_data = block;
+		}
+	}
+
+	return ret;
+}
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
new file mode 100644
index 000000000000..2ed3ba240cb1
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: MIT */
+/*
+ * Copyright © 2024 Intel Corporation
+ */
+
+#ifndef _XE_SVM_
+#define _XE_SVM_
+
+struct drm_mem_region;
+struct page;
+
+int xe_svm_alloc_pages(struct drm_mem_region *mr,
+		       unsigned long npages, unsigned long *pfn);
+void xe_svm_free_page(struct page *page);
+
+#endif
-- 
2.26.3


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

* [CI 35/44] drm/xe/svm: Get drm device from drm memory region
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (32 preceding siblings ...)
  2024-06-14 21:58 ` [CI 34/44] drm/xe/svm: implement functions to allocate and free device memory Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 36/44] drm/xe/svm: Get page map owner of a " Oak Zeng
                   ` (24 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

Implement a function xe_mem_region_to_device to
get the drm device which has a specific mem region

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_device.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
index bb07f5669dbb..bae8ebeda20c 100644
--- a/drivers/gpu/drm/xe/xe_device.h
+++ b/drivers/gpu/drm/xe/xe_device.h
@@ -9,6 +9,7 @@
 #include <drm/drm_util.h>
 
 #include "xe_device_types.h"
+#include "xe_tile.h"
 
 static inline struct xe_device *to_xe_device(const struct drm_device *dev)
 {
@@ -170,4 +171,11 @@ static inline bool xe_device_wedged(struct xe_device *xe)
 
 void xe_device_declare_wedged(struct xe_device *xe);
 
+static inline struct drm_device *xe_mem_region_to_device(struct drm_mem_region *mr)
+{
+	struct xe_mem_region *xe_mr = container_of(mr, struct xe_mem_region, drm_mr);
+	struct xe_tile *tile = xe_mem_region_to_tile(xe_mr);
+
+	return &tile->xe->drm;
+}
 #endif
-- 
2.26.3


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

* [CI 36/44] drm/xe/svm: Get page map owner of a memory region
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (33 preceding siblings ...)
  2024-06-14 21:58 ` [CI 35/44] drm/xe/svm: Get drm device from drm memory region Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 37/44] drm/xe/svm: Add migrate layer functions for SVM support Oak Zeng
                   ` (23 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

Introduce function xe_svm_mem_region_to_pagemap_owner to
get a memory region's page map owner.

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_svm.c | 8 ++++++++
 drivers/gpu/drm/xe/xe_svm.h | 1 +
 2 files changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index a64dbbdff1ae..5ea851ce5083 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -146,3 +146,11 @@ int xe_svm_alloc_pages(struct drm_mem_region *mr,
 
 	return ret;
 }
+
+void *xe_svm_mem_region_to_pagemap_owner(struct drm_mem_region *mr)
+{
+	struct xe_mem_region *xe_mr = container_of(mr, struct xe_mem_region, drm_mr);
+	struct xe_tile *tile = xe_mem_region_to_tile(xe_mr);
+
+	return tile->xe;
+}
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 2ed3ba240cb1..4d7dccb97378 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -12,5 +12,6 @@ struct page;
 int xe_svm_alloc_pages(struct drm_mem_region *mr,
 		       unsigned long npages, unsigned long *pfn);
 void xe_svm_free_page(struct page *page);
+void *xe_svm_mem_region_to_pagemap_owner(struct drm_mem_region *mr);
 
 #endif
-- 
2.26.3


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

* [CI 37/44] drm/xe/svm: Add migrate layer functions for SVM support
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (34 preceding siblings ...)
  2024-06-14 21:58 ` [CI 36/44] drm/xe/svm: Get page map owner of a " Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 38/44] drm/xe/svm: introduce svm migration function Oak Zeng
                   ` (22 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

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

Add functions which migrate to / from VRAM accepting a single DPA
argument (VRAM) and array of dma addresses (SRAM).

FIXME: Support non-contiguous VRAM DPA. The VRAM DPA can be an
array and we can dynamically map DPAs into contiguous device
virtual address space like what we did for SRAM, and still use
one single blitter command for migration

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_migrate.c | 126 ++++++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_migrate.h |   5 ++
 2 files changed, 131 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
index 540afc85d289..21d2595ea065 100644
--- a/drivers/gpu/drm/xe/xe_migrate.c
+++ b/drivers/gpu/drm/xe/xe_migrate.c
@@ -1451,6 +1451,132 @@ void xe_migrate_wait(struct xe_migrate *m)
 		dma_fence_wait(m->fence, false);
 }
 
+static u32 pte_update_cmd_size(u64 size)
+{
+	u32 dword;
+	u64 entries = DIV_ROUND_UP(size, XE_PAGE_SIZE);
+
+	XE_WARN_ON(size > MAX_PREEMPTDISABLE_TRANSFER);
+	/*
+	 * MI_STORE_DATA_IMM command is used to update page table. Each
+	 * instruction can update maximumly 0x1ff pte entries. To update
+	 * n (n <= 0x1ff) pte entries, we need:
+	 * 1 dword for the MI_STORE_DATA_IMM command header (opcode etc)
+	 * 2 dword for the page table's physical location
+	 * 2*n dword for value of pte to fill (each pte entry is 2 dwords)
+	 */
+	dword = (1 + 2) * DIV_ROUND_UP(entries, 0x1ff);
+	dword += entries * 2;
+
+	return dword;
+}
+
+static void build_pt_update_batch_sram(struct xe_migrate *m,
+				       struct xe_bb *bb, u32 pt_offset,
+				       dma_addr_t *sram_addr, u32 size)
+{
+	u16 pat_index = tile_to_xe(m->tile)->pat.idx[XE_CACHE_WB];
+	u32 ptes;
+	int i = 0;
+
+	ptes = DIV_ROUND_UP(size, XE_PAGE_SIZE);
+	while (ptes) {
+		u32 chunk = min(0x1ffU, ptes);
+
+		bb->cs[bb->len++] = MI_STORE_DATA_IMM | MI_SDI_NUM_QW(chunk);
+		bb->cs[bb->len++] = pt_offset;
+		bb->cs[bb->len++] = 0;
+
+		pt_offset += chunk * 8;
+		ptes -= chunk;
+
+		while (chunk--) {
+			u64 addr = sram_addr[i++] & PAGE_MASK;
+
+			xe_tile_assert(m->tile, addr);
+			addr = m->q->vm->pt_ops->pte_encode_addr(m->tile->xe,
+								 addr, pat_index,
+								 0, false, 0);
+			bb->cs[bb->len++] = lower_32_bits(addr);
+			bb->cs[bb->len++] = upper_32_bits(addr);
+		}
+	}
+}
+
+struct dma_fence *xe_migrate_vram(struct xe_migrate *m,
+				  unsigned long npages,
+				  dma_addr_t *sram_addr, u64 vram_addr,
+				  bool dst_vram)
+{
+	struct xe_gt *gt = m->tile->primary_gt;
+	struct xe_device *xe = gt_to_xe(gt);
+	struct dma_fence *fence = NULL;
+	u32 batch_size = 2;
+	u64 src_L0_ofs, dst_L0_ofs;
+	u64 round_update_size;
+	struct xe_sched_job *job;
+	struct xe_bb *bb;
+	u32 update_idx, pt_slot = 0;
+	int err;
+
+	round_update_size = min_t(u64, npages * PAGE_SIZE,
+				  MAX_PREEMPTDISABLE_TRANSFER);
+	batch_size += pte_update_cmd_size(round_update_size);
+	batch_size += EMIT_COPY_DW;
+
+	bb = xe_bb_new(gt, batch_size, true);
+	if (IS_ERR(bb)) {
+		err = PTR_ERR(bb);
+		return ERR_PTR(err);
+	}
+
+	build_pt_update_batch_sram(m, bb, pt_slot * XE_PAGE_SIZE,
+				   sram_addr, round_update_size);
+
+	if (dst_vram) {
+		src_L0_ofs = xe_migrate_vm_addr(pt_slot, 0);
+		dst_L0_ofs = xe_migrate_vram_ofs(xe, vram_addr);
+
+	} else {
+		src_L0_ofs = xe_migrate_vram_ofs(xe, vram_addr);
+		dst_L0_ofs = xe_migrate_vm_addr(pt_slot, 0);
+	}
+
+	bb->cs[bb->len++] = MI_BATCH_BUFFER_END;
+	update_idx = bb->len;
+
+	emit_copy(gt, bb, src_L0_ofs, dst_L0_ofs, round_update_size,
+		  XE_PAGE_SIZE);
+
+	mutex_lock(&m->job_mutex);
+	job = xe_bb_create_migration_job(m->q, bb,
+					 xe_migrate_batch_base(m, true),
+					 update_idx);
+	if (IS_ERR(job)) {
+		err = PTR_ERR(job);
+		goto err;
+	}
+
+	xe_sched_job_add_migrate_flush(job, 0);
+	xe_sched_job_arm(job);
+	fence = dma_fence_get(&job->drm.s_fence->finished);
+	xe_sched_job_push(job);
+
+	dma_fence_put(m->fence);
+	m->fence = dma_fence_get(fence);
+	mutex_unlock(&m->job_mutex);
+
+	xe_bb_free(bb, fence);
+
+	return fence;
+
+err:
+	mutex_unlock(&m->job_mutex);
+	xe_bb_free(bb, NULL);
+
+	return ERR_PTR(err);
+}
+
 #if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
 #include "tests/xe_migrate.c"
 #endif
diff --git a/drivers/gpu/drm/xe/xe_migrate.h b/drivers/gpu/drm/xe/xe_migrate.h
index 453e0ecf5034..6313a5452de6 100644
--- a/drivers/gpu/drm/xe/xe_migrate.h
+++ b/drivers/gpu/drm/xe/xe_migrate.h
@@ -115,4 +115,9 @@ xe_migrate_update_pgtables(struct xe_migrate *m,
 void xe_migrate_wait(struct xe_migrate *m);
 
 struct xe_exec_queue *xe_tile_migrate_exec_queue(struct xe_tile *tile);
+
+struct dma_fence *xe_migrate_vram(struct xe_migrate *m,
+				  unsigned long npages,
+				  dma_addr_t *sram_addr, u64 vram_addr,
+				  bool dst_vram);
 #endif
-- 
2.26.3


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

* [CI 38/44] drm/xe/svm: introduce svm migration function
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (35 preceding siblings ...)
  2024-06-14 21:58 ` [CI 37/44] drm/xe/svm: Add migrate layer functions for SVM support Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 39/44] drm/xe/svm: Register xe memory region to drm layer Oak Zeng
                   ` (21 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

xe_svm_migrate is introduced to migrate b/t two migration
vectors. This will be a callback function registered to
drm layer for svm memory migration.

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_svm.c | 46 +++++++++++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_svm.h |  3 +++
 2 files changed, 49 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
index 5ea851ce5083..76795c572454 100644
--- a/drivers/gpu/drm/xe/xe_svm.c
+++ b/drivers/gpu/drm/xe/xe_svm.c
@@ -7,8 +7,10 @@
 #include <linux/sched/mm.h>
 #include <linux/gfp.h>
 #include <drm/drm_buddy.h>
+#include <drm/drm_svm.h>
 #include "xe_ttm_vram_mgr_types.h"
 #include "xe_device_types.h"
+#include "xe_migrate.h"
 #include "xe_device.h"
 #include "xe_tile.h"
 #include "xe_svm.h"
@@ -154,3 +156,47 @@ void *xe_svm_mem_region_to_pagemap_owner(struct drm_mem_region *mr)
 
 	return tile->xe;
 }
+
+/**
+ * xe_svm_migrate() - migrate b/t two migration vectors.
+ * @src_vec: source migration vector
+ * @dst_vec: dst migration vector
+ *
+ * For now this function only support migration b/t system memory
+ * and device memory. It can be extended to support migration b/t
+ * two device memory regions.
+ *
+ * FIXME: right now it requires vram dpa to be physically contiguous.
+ * This is guaranteed by the DRM_BUDDY_CONTIGUOUS_ALLOCATION in
+ * xe_svm_alloc_pages. In the future we can support migration with
+ * non-contiguous vram. This requires change to xe_migrate_vram
+ * to map non-contiguous vram to contiguous device virtual address
+ * space (aka not using identity vram migrate vm mapping)
+ */
+struct dma_fence *xe_svm_migrate(struct migrate_vec *src_vec,
+				 struct migrate_vec *dst_vec)
+{
+	unsigned long npages = src_vec->npages;
+	struct xe_mem_region *xe_mr;
+	struct drm_mem_region *mr;
+	bool dst_vram = false;
+	struct xe_tile *tile;
+	dma_addr_t *sram_addr;
+	u64 vram_addr;
+
+	if (dst_vec->mr) {
+		mr = dst_vec->mr;
+		dst_vram = true;
+		vram_addr = dst_vec->addr_vec[0].dpa;
+		sram_addr = &src_vec->addr_vec[0].dma_addr;
+	} else {
+		mr = src_vec->mr;
+		vram_addr = src_vec->addr_vec[0].dpa;
+		sram_addr = &dst_vec->addr_vec[0].dma_addr;
+	}
+
+	xe_mr = container_of(mr, struct xe_mem_region, drm_mr);
+	tile = xe_mem_region_to_tile(xe_mr);
+
+	return xe_migrate_vram(tile->migrate, npages, sram_addr, vram_addr, dst_vram);
+}
diff --git a/drivers/gpu/drm/xe/xe_svm.h b/drivers/gpu/drm/xe/xe_svm.h
index 4d7dccb97378..3c53200e85a2 100644
--- a/drivers/gpu/drm/xe/xe_svm.h
+++ b/drivers/gpu/drm/xe/xe_svm.h
@@ -8,10 +8,13 @@
 
 struct drm_mem_region;
 struct page;
+struct migrate_vec;
 
 int xe_svm_alloc_pages(struct drm_mem_region *mr,
 		       unsigned long npages, unsigned long *pfn);
 void xe_svm_free_page(struct page *page);
 void *xe_svm_mem_region_to_pagemap_owner(struct drm_mem_region *mr);
+struct dma_fence *xe_svm_migrate(struct migrate_vec *src_vec,
+				 struct migrate_vec *dst_vec);
 
 #endif
-- 
2.26.3


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

* [CI 39/44] drm/xe/svm: Register xe memory region to drm layer
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (36 preceding siblings ...)
  2024-06-14 21:58 ` [CI 38/44] drm/xe/svm: introduce svm migration function Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 40/44] drm/xe/svm: Introduce DRM_XE_SVM kernel config Oak Zeng
                   ` (20 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

Register xe memory region to drm layer for SVM purpose.
This will essentially create struct page backing for
xe device memory, which will be used by SVM functions.

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_tile.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
index 109f3118e821..6c50df281b11 100644
--- a/drivers/gpu/drm/xe/xe_tile.c
+++ b/drivers/gpu/drm/xe/xe_tile.c
@@ -3,7 +3,9 @@
  * Copyright © 2023 Intel Corporation
  */
 
+#include <linux/memremap.h>
 #include <drm/drm_managed.h>
+#include <drm/drm_svm.h>
 
 #include "xe_device.h"
 #include "xe_ggtt.h"
@@ -14,6 +16,7 @@
 #include "xe_tile_sysfs.h"
 #include "xe_ttm_vram_mgr.h"
 #include "xe_wa.h"
+#include "xe_svm.h"
 
 /**
  * DOC: Multi-tile Design
@@ -142,6 +145,15 @@ static int tile_ttm_mgr_init(struct xe_tile *tile)
 	return 0;
 }
 
+static void __init_drm_mem_region_ops(struct drm_mem_region_ops *ops)
+{
+	ops->drm_mem_region_alloc_pages = &xe_svm_alloc_pages;
+	ops->drm_mem_region_free_page = &xe_svm_free_page;
+	ops->drm_mem_region_migrate = &xe_svm_migrate;
+	ops->drm_mem_region_pagemap_owner = &xe_svm_mem_region_to_pagemap_owner;
+	ops->drm_mem_region_get_device = &xe_mem_region_to_device;
+}
+
 /**
  * xe_tile_init_noalloc - Init tile up to the point where allocations can happen.
  * @tile: The tile to initialize.
@@ -159,6 +171,8 @@ static int tile_ttm_mgr_init(struct xe_tile *tile)
 int xe_tile_init_noalloc(struct xe_tile *tile)
 {
 	int err;
+	struct xe_device *xe = tile_to_xe(tile);
+	struct drm_device *drm = &xe->drm;
 
 	err = tile_ttm_mgr_init(tile);
 	if (err)
@@ -172,6 +186,11 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
 
 	err = xe_tile_sysfs_init(tile);
 
+	if (xe->info.has_usm) {
+		__init_drm_mem_region_ops(&tile->mem.vram.drm_mr.mr_ops);
+		drm_svm_register_mem_region(drm, &tile->mem.vram.drm_mr, MEMORY_DEVICE_PRIVATE);
+	}
+
 	return 0;
 }
 
-- 
2.26.3


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

* [CI 40/44] drm/xe/svm: Introduce DRM_XE_SVM kernel config
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (37 preceding siblings ...)
  2024-06-14 21:58 ` [CI 39/44] drm/xe/svm: Register xe memory region to drm layer Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 41/44] drm/xe/svm: Migration from sram to vram for system allocator Oak Zeng
                   ` (19 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

Introduce a DRM_XE_SVM kernel config entry for
xe svm feature. xe svm feature allows share
virtual address space between CPU and GPU program.

v1: Improve commit message (Thomas)
    Avoid using #if directive (Thomas)

Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
Co-developed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
---
 drivers/gpu/drm/xe/Kconfig   | 11 +++++++++++
 drivers/gpu/drm/xe/xe_tile.c | 11 ++++++++---
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
index 7bbe46a98ff1..29d583ed6cd0 100644
--- a/drivers/gpu/drm/xe/Kconfig
+++ b/drivers/gpu/drm/xe/Kconfig
@@ -84,6 +84,17 @@ config DRM_XE_FORCE_PROBE
 	  4571.
 
 	  Use "!*" to block the probe of the driver for all known devices.
+config DRM_XE_SVM
+	bool "Enable Shared Virtual Memory support in xe"
+	depends on DRM_XE
+	depends on DRM_SVM
+	default y
+	help
+	  Choose this option if you want Shared Virtual Memory (SVM)
+	  support in xe. With SVM, virtual address space is shared
+	  between CPU and GPU. This means any virtual address such
+	  as malloc or mmap returns, variables on stack, or global
+	  memory pointers, can be used for GPU transparently.
 
 menu "drm/Xe Debugging"
 depends on DRM_XE
diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
index 6c50df281b11..1f938d001094 100644
--- a/drivers/gpu/drm/xe/xe_tile.c
+++ b/drivers/gpu/drm/xe/xe_tile.c
@@ -171,8 +171,13 @@ static void __init_drm_mem_region_ops(struct drm_mem_region_ops *ops)
 int xe_tile_init_noalloc(struct xe_tile *tile)
 {
 	int err;
-	struct xe_device *xe = tile_to_xe(tile);
-	struct drm_device *drm = &xe->drm;
+	struct xe_device __maybe_unused *xe;
+	struct drm_device __maybe_unused *drm;
+
+	if (IS_ENABLED(CONFIG_DRM_XE_SVM)) {
+		xe = tile_to_xe(tile);
+		drm = &xe->drm;
+	}
 
 	err = tile_ttm_mgr_init(tile);
 	if (err)
@@ -186,7 +191,7 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
 
 	err = xe_tile_sysfs_init(tile);
 
-	if (xe->info.has_usm) {
+	if (IS_ENABLED(CONFIG_DRM_XE_SVM) && xe->info.has_usm) {
 		__init_drm_mem_region_ops(&tile->mem.vram.drm_mr.mr_ops);
 		drm_svm_register_mem_region(drm, &tile->mem.vram.drm_mr, MEMORY_DEVICE_PRIVATE);
 	}
-- 
2.26.3


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

* [CI 41/44] drm/xe/svm: Migration from sram to vram for system allocator
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (38 preceding siblings ...)
  2024-06-14 21:58 ` [CI 40/44] drm/xe/svm: Introduce DRM_XE_SVM kernel config Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 42/44] drm/xe/svm: Determine a vma is backed by device memory Oak Zeng
                   ` (18 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

If applicable, migrate a range of hmmptr from sram to vram for
system allocator. Traditional userptr is not migrated. Only userptr
created during fault (aka userptr split from system allocator vma,
aka fault userptr in codes) can be migrated.

Instead of the whole userptr, only a sub-range of userptr is populated
and bind to GPU page table. Right now the range granularity is 2MiB,
which will be overwritten by memory attribute API.

FIXME: The migration should be conditional on user memory attributes
setting. Add this logic when memory attributes are supported

v1: Use none NULL owner when call drm_svm_hmmptr_populate (Himal)

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_gt_pagefault.c | 42 +++++++++++++++++++++++++---
 drivers/gpu/drm/xe/xe_vm.c           | 18 +++++++-----
 drivers/gpu/drm/xe/xe_vm.h           |  2 +-
 3 files changed, 50 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
index 93efee125fc0..f2a4abcef3b1 100644
--- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
@@ -128,6 +128,12 @@ static int handle_vma_pagefault(struct xe_tile *tile, struct pagefault *pf,
 	ktime_t end = 0;
 	int err;
 	bool atomic;
+	/**FIXME: use migration granularity from memory attributes*/
+	u64 migrate_granularity = SZ_2M;
+	u64 fault_addr = pf->page_addr;
+	u64 fault_offset, fault_cpu_addr;
+	u64 aligned_cpu_fault_start, aligned_cpu_fault_end;
+	u64 cpu_va_start, cpu_va_end, gpu_va_start, gpu_va_end;
 
 	trace_xe_vma_pagefault(vma);
 	atomic = access_is_atomic(pf->access_type);
@@ -144,13 +150,41 @@ static int handle_vma_pagefault(struct xe_tile *tile, struct pagefault *pf,
 		}
 	}
 
+	fault_offset = fault_addr - xe_vma_start(vma);
+	fault_cpu_addr = xe_vma_userptr(vma) + fault_offset;
+	aligned_cpu_fault_start = ALIGN_DOWN(fault_cpu_addr, migrate_granularity);
+	aligned_cpu_fault_end  = aligned_cpu_fault_start + migrate_granularity;
+
+	if (xe_vma_is_userptr(vma)) {
+		cpu_va_start = max_t(u64, xe_vma_userptr(vma), aligned_cpu_fault_start);
+		cpu_va_end = min_t(u64, xe_vma_userptr_end(vma), aligned_cpu_fault_end);
+		gpu_va_start = xe_vma_start(vma) + (cpu_va_start - xe_vma_userptr(vma));
+		gpu_va_end = xe_vma_end(vma) - (xe_vma_userptr_end(vma) - cpu_va_end);
+	} else {
+		gpu_va_start = xe_vma_start(vma);
+		gpu_va_end = xe_vma_end(vma);
+	}
+
 retry_userptr:
 	xe_vm_userptr_garbage_collector(vm);
 	if (xe_vma_is_userptr(vma) &&
 	    xe_vma_userptr_check_repin(to_userptr_vma(vma))) {
 		struct xe_userptr_vma *uvma = to_userptr_vma(vma);
-
-		err = xe_vma_userptr_pin_pages(uvma);
+		struct xe_userptr *userptr = &uvma->userptr;
+		struct drm_hmmptr *hmmptr = &userptr->hmmptr;
+
+		mmap_read_lock(hmmptr->notifier.mm);
+		if (xe_vma_is_fault_userptr(vma)) {
+			/**FIXME: add migration policy here*/
+			err = drm_svm_migrate_hmmptr_to_vram(&vm->gpuvm, &tile->mem.vram.drm_mr,
+							     hmmptr, cpu_va_start, cpu_va_end);
+			if (err) {
+				mmap_read_unlock(hmmptr->notifier.mm);
+				return err;
+			}
+		}
+		err = xe_vma_userptr_pin_pages(uvma, cpu_va_start, cpu_va_end, true);
+		mmap_read_unlock(hmmptr->notifier.mm);
 		if (err)
 			return err;
 	}
@@ -167,8 +201,8 @@ static int handle_vma_pagefault(struct xe_tile *tile, struct pagefault *pf,
 
 		/* Bind VMA only to the GT that has faulted */
 		trace_xe_vma_pf_bind(vma);
-		fence = xe_vma_rebind(vm, vma, xe_vma_start(vma),
-				      xe_vma_end(vma), BIT(tile->id));
+		fence = xe_vma_rebind(vm, vma, gpu_va_start,
+				      gpu_va_end, BIT(tile->id));
 		if (IS_ERR(fence)) {
 			err = PTR_ERR(fence);
 			if (xe_vm_validate_should_retry(&exec, err, &end))
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 418420918bd3..29eb561de326 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -76,6 +76,7 @@ static void xe_vma_userptr_dma_map_pages(struct xe_userptr_vma *uvma,
 	xe_assert(xe, xe_vma_is_userptr(vma));
 	xe_assert(xe, start >= xe_vma_userptr(vma));
 	xe_assert(xe, end <= xe_vma_userptr_end(vma));
+
 	drm_svm_hmmptr_map_dma_pages(hmmptr, page_idx, npages);
 }
 
@@ -96,7 +97,7 @@ static void xe_vma_userptr_dma_unmap_pages(struct xe_userptr_vma *uvma,
 	drm_svm_hmmptr_unmap_dma_pages(hmmptr, page_idx, npages);
 }
 
-int xe_vma_userptr_pin_pages(struct xe_userptr_vma *uvma)
+int xe_vma_userptr_pin_pages(struct xe_userptr_vma *uvma, u64 start, u64 end, bool mmap_locked)
 {
 	struct drm_hmmptr *hmmptr = &uvma->userptr.hmmptr;
 	struct xe_vma *vma = &uvma->vma;
@@ -106,14 +107,15 @@ int xe_vma_userptr_pin_pages(struct xe_userptr_vma *uvma)
 
 	lockdep_assert_held(&vm->lock);
 	xe_assert(xe, xe_vma_is_userptr(vma));
+	xe_assert(xe, start >= xe_vma_userptr(vma));
+	xe_assert(xe, end <= xe_vma_userptr_end(vma));
 
-	ret = drm_svm_hmmptr_populate(hmmptr, NULL, xe_vma_userptr(vma),
-				      xe_vma_userptr(vma) + xe_vma_size(vma),
-				      !xe_vma_read_only(vma), false);
+	ret = drm_svm_hmmptr_populate(hmmptr, xe, start, end,
+				      !xe_vma_read_only(vma), mmap_locked);
 	if (ret)
 		return ret;
 
-	xe_vma_userptr_dma_map_pages(uvma, xe_vma_userptr(vma), xe_vma_userptr_end(vma));
+	xe_vma_userptr_dma_map_pages(uvma, start, end);
 	return 0;
 }
 
@@ -736,7 +738,8 @@ int xe_vm_userptr_pin(struct xe_vm *vm)
 	/* Pin and move to temporary list */
 	list_for_each_entry_safe(uvma, next, &vm->userptr.repin_list,
 				 userptr.repin_link) {
-		err = xe_vma_userptr_pin_pages(uvma);
+		err = xe_vma_userptr_pin_pages(uvma, xe_vma_userptr(&uvma->vma),
+					       xe_vma_userptr_end(&uvma->vma), false);
 		if (err == -EFAULT) {
 			list_del_init(&uvma->userptr.repin_link);
 
@@ -2116,7 +2119,8 @@ static struct xe_vma *new_vma(struct xe_vm *vm, struct drm_gpuva_op_map *op,
 		drm_exec_fini(&exec);
 
 	if (xe_vma_is_userptr(vma) && !xe_vma_is_fault_userptr(vma)) {
-		err = xe_vma_userptr_pin_pages(to_userptr_vma(vma));
+		err = xe_vma_userptr_pin_pages(to_userptr_vma(vma), xe_vma_userptr(vma),
+					       xe_vma_userptr_end(vma), false);
 		if (err) {
 			prep_vma_destroy(vm, vma, false);
 			xe_vma_destroy_unlocked(vma);
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index b3b6ceec39ba..f24891cb1fcb 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -253,7 +253,7 @@ static inline void xe_vm_reactivate_rebind(struct xe_vm *vm)
 	}
 }
 
-int xe_vma_userptr_pin_pages(struct xe_userptr_vma *uvma);
+int xe_vma_userptr_pin_pages(struct xe_userptr_vma *uvma, u64 start, u64 end, bool mmap_locked);
 
 int xe_vma_userptr_check_repin(struct xe_userptr_vma *uvma);
 
-- 
2.26.3


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

* [CI 42/44] drm/xe/svm: Determine a vma is backed by device memory
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (39 preceding siblings ...)
  2024-06-14 21:58 ` [CI 41/44] drm/xe/svm: Migration from sram to vram for system allocator Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 43/44] drm/xe/svm: Introduce hmm_pfn array based resource cursor Oak Zeng
                   ` (17 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

With system allocator, a userptr can now be back by device
memory also. Introduce a helper function xe_vma_is_devmem
to determine whether a range of vma is backed by device memory.

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_pt.c | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index 3c89a32741f5..a576d5cb7727 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -3,6 +3,7 @@
  * Copyright © 2022 Intel Corporation
  */
 
+#include <linux/hmm.h>
 #include "xe_pt.h"
 
 #include "regs/xe_gtt_defs.h"
@@ -578,6 +579,29 @@ static const struct xe_pt_walk_ops xe_pt_stage_bind_ops = {
 	.pt_entry = xe_pt_stage_bind_entry,
 };
 
+static bool xe_vma_is_devmem(struct xe_vma *vma, u64 start)
+{
+	struct xe_bo *bo = xe_vma_bo(vma);
+
+	if (xe_vma_is_userptr(vma)) {
+		struct xe_userptr_vma *uvma = to_userptr_vma(vma);
+		struct drm_hmmptr *hmmptr = &uvma->userptr.hmmptr;
+		u64 offset = start - xe_vma_start(vma);
+		u64 page_idx = offset >> PAGE_SHIFT;
+		u64 hmm_pfn = hmmptr->pfn[page_idx];
+		struct page *page = hmm_pfn_to_page(hmm_pfn);
+
+		/**
+		 * FIXME: Assume there is no mixture system memory and device
+		 * memory placement in the [start, end) range of vma. We might
+		 * need to relook at this in the future.
+		 */
+		return is_device_private_page(page);
+	}
+
+	return bo && (xe_bo_is_vram(bo) || xe_bo_is_stolen_devmem(bo));
+}
+
 /**
  * xe_pt_stage_bind() - Build a disconnected page-table tree for a given address
  * range.
@@ -604,8 +628,7 @@ xe_pt_stage_bind(struct xe_tile *tile, struct xe_vma *vma, u64 start, u64 end,
 {
 	struct xe_device *xe = tile_to_xe(tile);
 	struct xe_bo *bo = xe_vma_bo(vma);
-	bool is_devmem = !xe_vma_is_userptr(vma) && bo &&
-		(xe_bo_is_vram(bo) || xe_bo_is_stolen_devmem(bo));
+	bool is_devmem = xe_vma_is_devmem(vma, start);
 	struct xe_res_cursor curs;
 	struct xe_pt_stage_bind_walk xe_walk = {
 		.base = {
-- 
2.26.3


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

* [CI 43/44] drm/xe/svm: Introduce hmm_pfn array based resource cursor
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (40 preceding siblings ...)
  2024-06-14 21:58 ` [CI 42/44] drm/xe/svm: Determine a vma is backed by device memory Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 21:58 ` [CI 44/44] drm/xe: Enable system allocator uAPI Oak Zeng
                   ` (16 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

This type of resource cursor will be used by system allocator or userptr.
With system allocator, all the backing resource are backed by struct page.
The resource could be in system memory or in gpu device memory. For
userptr, the backing resource is always in system memory.

For system memory, the page is already dma-mapped. The dma-mapped
address is in dma_addr array.

For gpu device memory, we will calculate the device physical address
using hmm_pfn.

Note we support a mixture placement of system memory and device memory.
In the resource range, some of the page could be backed by system mem,
and some by device memory.

Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Brian Welty <brian.welty@intel.com>
Cc: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Signed-off-by: Oak Zeng <oak.zeng@intel.com>
---
 drivers/gpu/drm/xe/xe_pt.c         |  5 +-
 drivers/gpu/drm/xe/xe_res_cursor.h | 80 ++++++++++++++++++++----------
 2 files changed, 57 insertions(+), 28 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index a576d5cb7727..2c550a92af07 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -699,8 +699,9 @@ xe_pt_stage_bind(struct xe_tile *tile, struct xe_vma *vma, u64 start, u64 end,
 		u64 offset = start - xe_vma_start(vma);
 		u64 page_idx = offset >> PAGE_SHIFT;
 		if (xe_vma_is_userptr(vma))
-			xe_res_first_dma(to_userptr_vma(vma)->userptr.hmmptr.dma_addr + page_idx,
-					 0, xe_vma_size(vma), 0, &curs);
+			xe_res_first_hmmptr(to_userptr_vma(vma)->userptr.hmmptr.dma_addr + page_idx,
+					    to_userptr_vma(vma)->userptr.hmmptr.pfn + page_idx,
+					    &tile->mem.vram.drm_mr, size, &curs);
 		else if (xe_bo_is_vram(bo) || xe_bo_is_stolen(bo))
 			xe_res_first(bo->ttm.resource, xe_vma_bo_offset(vma) + offset,
 				     size, &curs);
diff --git a/drivers/gpu/drm/xe/xe_res_cursor.h b/drivers/gpu/drm/xe/xe_res_cursor.h
index b17b3375f6d9..3b071e1796b8 100644
--- a/drivers/gpu/drm/xe/xe_res_cursor.h
+++ b/drivers/gpu/drm/xe/xe_res_cursor.h
@@ -25,12 +25,16 @@
 #define _XE_RES_CURSOR_H_
 
 #include <linux/scatterlist.h>
+#include <linux/mm_types.h>
+#include <linux/memremap.h>
+#include <linux/hmm.h>
 
 #include <drm/drm_mm.h>
 #include <drm/ttm/ttm_placement.h>
 #include <drm/ttm/ttm_range_manager.h>
 #include <drm/ttm/ttm_resource.h>
 #include <drm/ttm/ttm_tt.h>
+#include <drm/drm_svm.h>
 
 #include "xe_bo.h"
 #include "xe_device.h"
@@ -44,10 +48,11 @@ struct xe_res_cursor {
 	u64 remaining;
 	void *node;
 	u32 mem_type;
-	unsigned int order;
 	struct scatterlist *sgl;
-	const dma_addr_t *dma_addr;
+	dma_addr_t *dma_addr;
 	struct drm_buddy *mm;
+	unsigned long *hmm_pfn;
+	struct drm_mem_region *mr;
 };
 
 static struct drm_buddy *xe_res_get_buddy(struct ttm_resource *res)
@@ -80,6 +85,8 @@ static inline void xe_res_first(struct ttm_resource *res,
 	XE_WARN_ON(start + size > res->size);
 
 	cur->mem_type = res->mem_type;
+	cur->hmm_pfn = NULL;
+	cur->mr = NULL;
 
 	switch (cur->mem_type) {
 	case XE_PL_STOLEN:
@@ -160,6 +167,8 @@ static inline void xe_res_first_sg(const struct sg_table *sg,
 				   struct xe_res_cursor *cur)
 {
 	XE_WARN_ON(!sg);
+	cur->hmm_pfn = NULL;
+	cur->mr = NULL;
 	cur->node = NULL;
 	cur->start = start;
 	cur->remaining = size;
@@ -171,34 +180,43 @@ static inline void xe_res_first_sg(const struct sg_table *sg,
 }
 
 /**
- * xe_res_first_dma - initialize a xe_res_cursor with dma_addr array
+ * xe_res_first_hmmptr - initialize a xe_res_cursor for hmmptr
  *
- * @dma_addr: dma_addr array to walk
- * @start: Start of the range
+ * @dma_addr: dma_addr array to walk, valid when resource is in system mem.
+ * @hmm_pfn: a hmm_pfn array, each item contains hmm_pfn of a 4k page.
+ * @mr: memory region that the resource belongs to
  * @size: Size of the range
- * @order: Order of dma mapping. i.e. PAGE_SIZE << order is mapping size
  * @cur: cursor object to initialize
  *
- * Start walking over the range of allocations between @start and @size.
+ * Start walking over the resources used by a hmmptr. For hmmptr,
+ * the backing resource are all backed by struct page. The resource
+ * could be in system memory or in gpu device memory.
+ *
+ * For system memory, the page is already dma-mapped. The dma-mapped
+ * address is in dma_addr array.
+ *
+ * For gpu device memory, we will calculate the device physical address
+ * using hmm_pfn.
+ *
+ * Note we support a mixture placement of system memory and device memory.
+ * In the resource range, some of the page could be backed by system mem,
+ * and some by device memory.
  */
-static inline void xe_res_first_dma(const dma_addr_t *dma_addr,
-				    u64 start, u64 size,
-				    unsigned int order,
-				    struct xe_res_cursor *cur)
+static inline void xe_res_first_hmmptr(dma_addr_t *dma_addr,
+				       unsigned long *hmm_pfn, struct drm_mem_region *mr,
+				       u64 size, struct xe_res_cursor *cur)
 {
-	XE_WARN_ON(start);
 	XE_WARN_ON(!dma_addr);
-	XE_WARN_ON(!IS_ALIGNED(start, PAGE_SIZE) ||
-		   !IS_ALIGNED(size, PAGE_SIZE));
+	XE_WARN_ON(!IS_ALIGNED(size, PAGE_SIZE));
 
 	cur->node = NULL;
-	cur->start = start;
 	cur->remaining = size;
-	cur->size = PAGE_SIZE << order;
+	cur->size = 0;
 	cur->dma_addr = dma_addr;
-	cur->order = order;
 	cur->sgl = NULL;
 	cur->mem_type = XE_PL_TT;
+	cur->hmm_pfn = hmm_pfn;
+	cur->mr = mr;
 }
 
 /**
@@ -221,15 +239,19 @@ static inline void xe_res_next(struct xe_res_cursor *cur, u64 size)
 	if (!cur->remaining)
 		return;
 
-	if (cur->size > size) {
-		cur->size -= size;
-		cur->start += size;
+	if (cur->mr) {
+		int npages;
+
+		XE_WARN_ON(!IS_ALIGNED(size, PAGE_SIZE));
+
+		npages = size >> PAGE_SHIFT;
+		cur->hmm_pfn += npages;
+		cur->dma_addr += npages;
 		return;
 	}
 
-	if (cur->dma_addr) {
-		cur->size = (PAGE_SIZE << cur->order) -
-			(size - cur->size);
+	if (cur->size > size) {
+		cur->size -= size;
 		cur->start += size;
 		return;
 	}
@@ -275,9 +297,15 @@ static inline void xe_res_next(struct xe_res_cursor *cur, u64 size)
  */
 static inline u64 xe_res_dma(const struct xe_res_cursor *cur)
 {
-	if (cur->dma_addr)
-		return cur->dma_addr[cur->start >> (PAGE_SHIFT + cur->order)] +
-			(cur->start & ((PAGE_SIZE << cur->order) - 1));
+	if (cur->mr) {
+		u64 hmm_pfn = *cur->hmm_pfn;
+		struct page *page = hmm_pfn_to_page(hmm_pfn);
+
+		if (is_device_private_page(page))
+			return drm_mem_region_page_to_dpa(cur->mr, page);
+		else
+			return *cur->dma_addr;
+	}
 	else if (cur->sgl)
 		return sg_dma_address(cur->sgl) + cur->start;
 	else
-- 
2.26.3


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

* [CI 44/44] drm/xe: Enable system allocator uAPI
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (41 preceding siblings ...)
  2024-06-14 21:58 ` [CI 43/44] drm/xe/svm: Introduce hmm_pfn array based resource cursor Oak Zeng
@ 2024-06-14 21:58 ` Oak Zeng
  2024-06-14 22:41 ` ✓ CI.Patch_applied: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs Patchwork
                   ` (15 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Oak Zeng @ 2024-06-14 21:58 UTC (permalink / raw)
  To: intel-xe

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

System allocator is now functional, so enable it from
uAPI level.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_vm.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 29eb561de326..f54476038bd9 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -2871,12 +2871,6 @@ static int vm_bind_ioctl_check_args(struct xe_device *xe,
 		u16 pat_index = (*bind_ops)[i].pat_index;
 		u16 coh_mode;
 
-		/* FIXME: Disabling system allocator for now */
-		if (XE_IOCTL_DBG(xe, is_system_allocator)) {
-			err = -EOPNOTSUPP;
-			goto free_bind_ops;
-		}
-
 		if (XE_IOCTL_DBG(xe, pat_index >= xe->pat.n_entries)) {
 			err = -EINVAL;
 			goto free_bind_ops;
-- 
2.26.3


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

* ✓ CI.Patch_applied: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (42 preceding siblings ...)
  2024-06-14 21:58 ` [CI 44/44] drm/xe: Enable system allocator uAPI Oak Zeng
@ 2024-06-14 22:41 ` Patchwork
  2024-06-14 22:42 ` ✗ CI.checkpatch: warning " Patchwork
                   ` (14 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-14 22:41 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
URL   : https://patchwork.freedesktop.org/series/134917/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: e60c2c927983 drm-tip: 2024y-06m-14d-21h-52m-42s UTC integration manifest
=== git am output follows ===
Applying: mm/hmm: let users to tag specific PFNs
Applying: dma-mapping: provide an interface to allocate IOVA
Applying: dma-mapping: provide callbacks to link/unlink pages to specific IOVA
Applying: iommu/dma: Provide an interface to allow preallocate IOVA
Applying: iommu/dma: Prepare map/unmap page functions to receive IOVA
Applying: iommu/dma: Implement link/unlink page callbacks
Applying: mm: Add an empty implementation of zone_device_page_init
Applying: drm: Move GPUVA_START/LAST to drm_gpuvm.h
Applying: drm/svm: Mark drm_gpuvm to participate SVM
Applying: drm/svm: introduce drm_mem_region concept
Applying: drm/svm: introduce hmmptr and helper functions
Applying: drm/svm: Introduce helper to remap drm memory region
Applying: drm/svm: handle CPU page fault
Applying: drm/svm: Migrate a range of hmmptr to vram
Applying: drm/svm: Add DRM SVM documentation
Applying: drm/svm: Introduce DRM_SVM kernel config
Applying: drm/xe: s/xe_tile_migrate_engine/xe_tile_migrate_exec_queue
Applying: drm/xe: Add xe_vm_pgtable_update_op to xe_vma_ops
Applying: drm/xe: Convert multiple bind ops into single job
Applying: drm/xe: Update VM trace events
Applying: drm/xe: Update PT layer with better error handling
Applying: drm/xe: Retry BO allocation
Applying: drm/xe/uapi: Add DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag
Applying: drm/xe: Add a helper to calculate userptr end address
Applying: drm/xe: Add dma_addr res cursor
Applying: drm/xe: Use drm_mem_region for xe
Applying: drm/xe: use drm_hmmptr in xe
Applying: drm/xe: Moving to range based vma invalidation
Applying: drm/xe: Support range based page table update
Applying: drm/xe/uapi: Add DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM flag
Applying: drm/xe/svm: Create userptr if page fault occurs on system_allocator VMA
Applying: drm/xe/svm: Add faulted userptr VMA garbage collector
Applying: drm/xe: Introduce helper to get tile from memory region
Applying: drm/xe/svm: implement functions to allocate and free device memory
Applying: drm/xe/svm: Get drm device from drm memory region
Applying: drm/xe/svm: Get page map owner of a memory region
Applying: drm/xe/svm: Add migrate layer functions for SVM support
Applying: drm/xe/svm: introduce svm migration function
Applying: drm/xe/svm: Register xe memory region to drm layer
Applying: drm/xe/svm: Introduce DRM_XE_SVM kernel config
Applying: drm/xe/svm: Migration from sram to vram for system allocator
Applying: drm/xe/svm: Determine a vma is backed by device memory
Applying: drm/xe/svm: Introduce hmm_pfn array based resource cursor
Applying: drm/xe: Enable system allocator uAPI



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

* ✗ CI.checkpatch: warning for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (43 preceding siblings ...)
  2024-06-14 22:41 ` ✓ CI.Patch_applied: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs Patchwork
@ 2024-06-14 22:42 ` Patchwork
  2024-06-14 22:43 ` ✓ CI.KUnit: success " Patchwork
                   ` (13 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-14 22:42 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
URL   : https://patchwork.freedesktop.org/series/134917/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
51ce9f6cd981d42d7467409d7dbc559a450abc1e
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit b862b5b20028dfdfdcffec44254461579ad28bf9
Author: Matthew Brost <matthew.brost@intel.com>
Date:   Fri Jun 14 17:58:17 2024 -0400

    drm/xe: Enable system allocator uAPI
    
    System allocator is now functional, so enable it from
    uAPI level.
    
    Signed-off-by: Matthew Brost <matthew.brost@intel.com>
+ /mt/dim checkpatch e60c2c92798375b80da09295f5d3cc7db476a9c5 drm-intel
0d627d62aea3 mm/hmm: let users to tag specific PFNs
2d931c2e3d68 dma-mapping: provide an interface to allocate IOVA
-:73: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#73: FILE: include/linux/dma-mapping.h:170:
+}
+static inline void dma_free_iova(struct dma_iova_attrs *iova)

total: 0 errors, 0 warnings, 1 checks, 83 lines checked
cc991e9319bc dma-mapping: provide callbacks to link/unlink pages to specific IOVA
-:59: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#59: FILE: include/linux/dma-mapping.h:176:
 }
+static inline dma_addr_t dma_link_range(struct page *page, unsigned long offset,

-:65: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#65: FILE: include/linux/dma-mapping.h:182:
+}
+static inline void dma_unlink_range(struct dma_iova_attrs *iova,

total: 0 errors, 0 warnings, 2 checks, 123 lines checked
75b427a2bfc4 iommu/dma: Provide an interface to allow preallocate IOVA
-:31: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#31: FILE: drivers/iommu/dma-iommu.c:762:
+static dma_addr_t __iommu_dma_alloc_iova(struct iommu_domain *domain,
 		size_t size, u64 dma_limit, struct device *dev)

-:40: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#40: FILE: drivers/iommu/dma-iommu.c:808:
+static void __iommu_dma_free_iova(struct iommu_dma_cookie *cookie,
 		dma_addr_t iova, size_t size, struct iommu_iotlb_gather *gather)

total: 0 errors, 0 warnings, 2 checks, 132 lines checked
4e5131f8fe34 iommu/dma: Prepare map/unmap page functions to receive IOVA
-:197: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#197: FILE: drivers/iommu/dma-iommu.c:1658:
+	*handle = __iommu_dma_map(dev, page_to_phys(page), 0, size, ioprot,
 			dev->coherent_dma_mask);

total: 0 errors, 0 warnings, 1 checks, 171 lines checked
85b15f175685 iommu/dma: Implement link/unlink page callbacks
842a6f0f0f1a mm: Add an empty implementation of zone_device_page_init
-:17: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#17: 
[szeng@szeng-desk kernel]$ ./tools/testing/kunit/kunit.py run --kunitconfig ./drivers/gpu/drm/xe/.kunitconfig

-:51: WARNING:RETURN_VOID: void function return statements are not generally useful
#51: FILE: include/linux/memremap.h:210:
+	return;
+}

total: 0 errors, 2 warnings, 0 checks, 16 lines checked
a5a61f08b7f5 drm: Move GPUVA_START/LAST to drm_gpuvm.h
-:41: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'node' - possible side-effects?
#41: FILE: include/drm/drm_gpuvm.h:42:
+#define GPUVA_LAST(node) ((node)->va.addr + (node)->va.range - 1)

-:42: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'node' - possible side-effects?
#42: FILE: include/drm/drm_gpuvm.h:43:
+#define GPUVA_END(node) ((node)->va.addr + (node)->va.range)

total: 0 errors, 0 warnings, 2 checks, 19 lines checked
e6a56aad39e1 drm/svm: Mark drm_gpuvm to participate SVM
fe11573caf40 drm/svm: introduce drm_mem_region concept
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
-:45: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#45: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 165 lines checked
9c17a014953d drm/svm: introduce hmmptr and helper functions
-:56: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#56: 
new file mode 100644

-:61: WARNING:SPDX_LICENSE_TAG: Improper SPDX comment style for 'drivers/gpu/drm/drm_svm.c', please use '//' instead
#61: FILE: drivers/gpu/drm/drm_svm.c:1:
+/* SPDX-License-Identifier: MIT */

-:61: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1
#61: FILE: drivers/gpu/drm/drm_svm.c:1:
+/* SPDX-License-Identifier: MIT */

total: 0 errors, 3 warnings, 0 checks, 406 lines checked
7a50d58d7ed0 drm/svm: Introduce helper to remap drm memory region
d71ed4adf79a drm/svm: handle CPU page fault
372a30c93bb8 drm/svm: Migrate a range of hmmptr to vram
5fadb4b71625 drm/svm: Add DRM SVM documentation
-:328: WARNING:LONG_LINE_COMMENT: line length of 121 exceeds 100 columns
#328: FILE: drivers/gpu/drm/drm_svm.c:245:
+ * In GPU page fault handler:                                                                           munmap from user:

-:331: WARNING:LONG_LINE_COMMENT: line length of 121 exceeds 100 columns
#331: FILE: drivers/gpu/drm/drm_svm.c:248:
+ * Mmap_read_lock()                                                                                     mmap_write_lock()

-:332: WARNING:LONG_LINE_COMMENT: line length of 168 exceeds 100 columns
#332: FILE: drivers/gpu/drm/drm_svm.c:249:
+ * call drm_svm_migrate_hmmptr_to_vram to migrate hmmptr if needed                                      mmu_notifier_invalidate_range_start(), call hmmptr->invalidate()

-:333: WARNING:LONG_LINE_COMMENT: line length of 136 exceeds 100 columns
#333: FILE: drivers/gpu/drm/drm_svm.c:250:
+ * hmmptr.notifier_seq = mmu_interval_read_begin(&hmmptr.notifier)                                          down_write(page_table_lock);

-:334: WARNING:LONG_LINE_COMMENT: line length of 131 exceeds 100 columns
#334: FILE: drivers/gpu/drm/drm_svm.c:251:
+ * call drm_svm_populate_hmmptr to populate hmmptr                                                          mmu_interval_set_seq();

-:335: WARNING:LONG_LINE_COMMENT: line length of 145 exceeds 100 columns
#335: FILE: drivers/gpu/drm/drm_svm.c:252:
+ * Mmap_read_unlock                                                                                         invalidate hmmptr from GPU page table

-:336: WARNING:LONG_LINE_COMMENT: line length of 134 exceeds 100 columns
#336: FILE: drivers/gpu/drm/drm_svm.c:253:
+ *                                                                                                          up_write(page_table_lock);

-:337: WARNING:LONG_LINE_COMMENT: line length of 139 exceeds 100 columns
#337: FILE: drivers/gpu/drm/drm_svm.c:254:
+ * dma_resv_lock()                                                                                      mmu_notifier_invalidate_range_end()

-:338: WARNING:LONG_LINE_COMMENT: line length of 126 exceeds 100 columns
#338: FILE: drivers/gpu/drm/drm_svm.c:255:
+ * down_read(page_table_lock);                                                                            mmap_write_unlock();

total: 0 errors, 9 warnings, 0 checks, 360 lines checked
d4b9d38d7001 drm/svm: Introduce DRM_SVM kernel config
-:127: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#127: FILE: include/drm/drm_svm.h:254:
+}
+static inline void drm_svm_hmmptr_release(struct drm_hmmptr *hmmptr) {}

total: 0 errors, 0 warnings, 1 checks, 109 lines checked
6d45acfc987a drm/xe: s/xe_tile_migrate_engine/xe_tile_migrate_exec_queue
1a65fda22c36 drm/xe: Add xe_vm_pgtable_update_op to xe_vma_ops
2e00ef8c161e drm/xe: Convert multiple bind ops into single job
-:13: WARNING:TYPO_SPELLING: 'implemenation' may be misspelled - perhaps 'implementation'?
#13: 
The implemenation is roughly:
    ^^^^^^^^^^^^^

-:887: WARNING:SUSPECT_CODE_INDENT: suspect code indent for conditional statements (8, 15)
#887: FILE: drivers/gpu/drm/xe/xe_pt.c:1163:
+	if (uvma->userptr.initial_bind && !xe_vm_in_fault_mode(vm))
+               return 0;

-:888: ERROR:CODE_INDENT: code indent should use tabs where possible
#888: FILE: drivers/gpu/drm/xe/xe_pt.c:1164:
+               return 0;$

-:888: WARNING:LEADING_SPACE: please, no spaces at the start of a line
#888: FILE: drivers/gpu/drm/xe/xe_pt.c:1164:
+               return 0;$

-:1669: WARNING:BLOCK_COMMENT_STYLE: Block comments should align the * on each line
#1669: FILE: drivers/gpu/drm/xe/xe_pt.c:1900:
+ * installing job fence in various places.
+  *

-:1670: WARNING:BLOCK_COMMENT_STYLE: Block comments should align the * on each line
#1670: FILE: drivers/gpu/drm/xe/xe_pt.c:1901:
+  *
+ * Return: fence on success, negative ERR_PTR on error.

-:1802: WARNING:LEADING_SPACE: please, no spaces at the start of a line
#1802: FILE: drivers/gpu/drm/xe/xe_pt.c:2033:
+ }$

total: 1 errors, 6 warnings, 0 checks, 2532 lines checked
f388aa868758 drm/xe: Update VM trace events
964381f7dcc6 drm/xe: Update PT layer with better error handling
1060fde87111 drm/xe: Retry BO allocation
36690d13097a drm/xe/uapi: Add DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag
b704fc983af8 drm/xe: Add a helper to calculate userptr end address
e89db1cdc6cc drm/xe: Add dma_addr res cursor
7f05896fe911 drm/xe: Use drm_mem_region for xe
01ef5832dc2f drm/xe: use drm_hmmptr in xe
-:47: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#47: 
deleted file mode 100644

total: 0 errors, 1 warnings, 0 checks, 226 lines checked
2f74940c248d drm/xe: Moving to range based vma invalidation
2ad1f35f138c drm/xe: Support range based page table update
3be3add60dfb drm/xe/uapi: Add DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM flag
5223ca544319 drm/xe/svm: Create userptr if page fault occurs on system_allocator VMA
26c4fcebcd8b drm/xe/svm: Add faulted userptr VMA garbage collector
89f54ecb13d5 drm/xe: Introduce helper to get tile from memory region
6cc2b7a26fb9 drm/xe/svm: implement functions to allocate and free device memory
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
-:43: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#43: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 171 lines checked
d6cafb2f4be3 drm/xe/svm: Get drm device from drm memory region
032bf0d9bc97 drm/xe/svm: Get page map owner of a memory region
8fbd8973743c drm/xe/svm: Add migrate layer functions for SVM support
00b1ef57d349 drm/xe/svm: introduce svm migration function
7b2789b17273 drm/xe/svm: Register xe memory region to drm layer
ac68348577e6 drm/xe/svm: Introduce DRM_XE_SVM kernel config
9054e4a00dd4 drm/xe/svm: Migration from sram to vram for system allocator
22814c478820 drm/xe/svm: Determine a vma is backed by device memory
9e5a6fae123c drm/xe/svm: Introduce hmm_pfn array based resource cursor
-:191: CHECK:BRACES: braces {} should be used on all arms of this statement
#191: FILE: drivers/gpu/drm/xe/xe_res_cursor.h:300:
+	if (cur->mr) {
[...]
 	else if (cur->sgl)
[...]

total: 0 errors, 0 warnings, 1 checks, 157 lines checked
b862b5b20028 drm/xe: Enable system allocator uAPI



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

* ✓ CI.KUnit: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (44 preceding siblings ...)
  2024-06-14 22:42 ` ✗ CI.checkpatch: warning " Patchwork
@ 2024-06-14 22:43 ` Patchwork
  2024-06-14 22:55 ` ✓ CI.Build: " Patchwork
                   ` (12 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-14 22:43 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
URL   : https://patchwork.freedesktop.org/series/134917/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[22:42:28] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[22:42:32] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
  156 | u64 ioread64_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
  163 | u64 ioread64_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
  170 | u64 ioread64be_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
  178 | u64 ioread64be_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
  264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
  272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
  280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
  288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~

[22:42:58] Starting KUnit Kernel (1/1)...
[22:42:58] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[22:42:58] =================== guc_dbm (7 subtests) ===================
[22:42:58] [PASSED] test_empty
[22:42:58] [PASSED] test_default
[22:42:58] ======================== test_size  ========================
[22:42:58] [PASSED] 4
[22:42:58] [PASSED] 8
[22:42:58] [PASSED] 32
[22:42:58] [PASSED] 256
[22:42:58] ==================== [PASSED] test_size ====================
[22:42:58] ======================= test_reuse  ========================
[22:42:58] [PASSED] 4
[22:42:58] [PASSED] 8
[22:42:58] [PASSED] 32
[22:42:58] [PASSED] 256
[22:42:58] =================== [PASSED] test_reuse ====================
[22:42:58] =================== test_range_overlap  ====================
[22:42:58] [PASSED] 4
[22:42:58] [PASSED] 8
[22:42:58] [PASSED] 32
[22:42:58] [PASSED] 256
[22:42:58] =============== [PASSED] test_range_overlap ================
[22:42:58] =================== test_range_compact  ====================
[22:42:58] [PASSED] 4
[22:42:58] [PASSED] 8
[22:42:58] [PASSED] 32
[22:42:58] [PASSED] 256
[22:42:58] =============== [PASSED] test_range_compact ================
[22:42:58] ==================== test_range_spare  =====================
[22:42:58] [PASSED] 4
[22:42:58] [PASSED] 8
[22:42:58] [PASSED] 32
[22:42:58] [PASSED] 256
[22:42:58] ================ [PASSED] test_range_spare =================
[22:42:58] ===================== [PASSED] guc_dbm =====================
[22:42:58] =================== guc_idm (6 subtests) ===================
[22:42:58] [PASSED] bad_init
[22:42:58] [PASSED] no_init
[22:42:58] [PASSED] init_fini
[22:42:58] [PASSED] check_used
[22:42:58] [PASSED] check_quota
[22:42:58] [PASSED] check_all
[22:42:58] ===================== [PASSED] guc_idm =====================
[22:42:58] ================== no_relay (3 subtests) ===================
[22:42:58] [PASSED] xe_drops_guc2pf_if_not_ready
[22:42:58] [PASSED] xe_drops_guc2vf_if_not_ready
[22:42:58] [PASSED] xe_rejects_send_if_not_ready
[22:42:58] ==================== [PASSED] no_relay =====================
[22:42:58] ================== pf_relay (14 subtests) ==================
[22:42:58] [PASSED] pf_rejects_guc2pf_too_short
[22:42:58] [PASSED] pf_rejects_guc2pf_too_long
[22:42:58] [PASSED] pf_rejects_guc2pf_no_payload
[22:42:58] [PASSED] pf_fails_no_payload
[22:42:58] [PASSED] pf_fails_bad_origin
[22:42:58] [PASSED] pf_fails_bad_type
[22:42:58] [PASSED] pf_txn_reports_error
[22:42:58] [PASSED] pf_txn_sends_pf2guc
[22:42:58] [PASSED] pf_sends_pf2guc
[22:42:58] [SKIPPED] pf_loopback_nop
[22:42:58] [SKIPPED] pf_loopback_echo
[22:42:58] [SKIPPED] pf_loopback_fail
[22:42:58] [SKIPPED] pf_loopback_busy
[22:42:58] [SKIPPED] pf_loopback_retry
[22:42:58] ==================== [PASSED] pf_relay =====================
[22:42:58] ================== vf_relay (3 subtests) ===================
[22:42:58] [PASSED] vf_rejects_guc2vf_too_short
[22:42:58] [PASSED] vf_rejects_guc2vf_too_long
[22:42:58] [PASSED] vf_rejects_guc2vf_no_payload
[22:42:58] ==================== [PASSED] vf_relay =====================
[22:42:58] ================= pf_service (11 subtests) =================
[22:42:58] [PASSED] pf_negotiate_any
[22:42:58] [PASSED] pf_negotiate_base_match
[22:42:58] [PASSED] pf_negotiate_base_newer
[22:42:58] [PASSED] pf_negotiate_base_next
[22:42:58] [SKIPPED] pf_negotiate_base_older
[22:42:58] [PASSED] pf_negotiate_base_prev
[22:42:58] [PASSED] pf_negotiate_latest_match
[22:42:58] [PASSED] pf_negotiate_latest_newer
[22:42:58] [PASSED] pf_negotiate_latest_next
[22:42:58] [SKIPPED] pf_negotiate_latest_older
[22:42:58] [SKIPPED] pf_negotiate_latest_prev
[22:42:58] =================== [PASSED] pf_service ====================
[22:42:58] ===================== lmtt (1 subtest) =====================
[22:42:58] ======================== test_ops  =========================
[22:42:58] [PASSED] 2-level
[22:42:58] [PASSED] multi-level
[22:42:58] ==================== [PASSED] test_ops =====================
[22:42:58] ====================== [PASSED] lmtt =======================
[22:42:58] ==================== xe_bo (2 subtests) ====================
[22:42:58] [SKIPPED] xe_ccs_migrate_kunit
[22:42:58] [SKIPPED] xe_bo_evict_kunit
[22:42:58] ===================== [SKIPPED] xe_bo ======================
[22:42:58] ================== xe_dma_buf (1 subtest) ==================
[22:42:58] [SKIPPED] xe_dma_buf_kunit
[22:42:58] =================== [SKIPPED] xe_dma_buf ===================
[22:42:58] ================== xe_migrate (1 subtest) ==================
[22:42:58] [SKIPPED] xe_migrate_sanity_kunit
[22:42:58] =================== [SKIPPED] xe_migrate ===================
[22:42:58] =================== xe_mocs (2 subtests) ===================
[22:42:58] [SKIPPED] xe_live_mocs_kernel_kunit
[22:42:58] [SKIPPED] xe_live_mocs_reset_kunit
[22:42:58] ==================== [SKIPPED] xe_mocs =====================
[22:42:58] ==================== args (11 subtests) ====================
[22:42:58] [PASSED] count_args_test
[22:42:58] [PASSED] call_args_example
[22:42:58] [PASSED] call_args_test
[22:42:58] [PASSED] drop_first_arg_example
[22:42:58] [PASSED] drop_first_arg_test
[22:42:58] [PASSED] first_arg_example
[22:42:58] [PASSED] first_arg_test
[22:42:58] [PASSED] last_arg_example
[22:42:58] [PASSED] last_arg_test
[22:42:58] [PASSED] pick_arg_example
[22:42:58] [PASSED] sep_comma_example
[22:42:58] ====================== [PASSED] args =======================
[22:42:58] =================== xe_pci (2 subtests) ====================
[22:42:58] [PASSED] xe_gmdid_graphics_ip
[22:42:58] [PASSED] xe_gmdid_media_ip
[22:42:58] ===================== [PASSED] xe_pci ======================
[22:42:58] ==================== xe_rtp (1 subtest) ====================
[22:42:58] ================== xe_rtp_process_tests  ===================
[22:42:58] [PASSED] coalesce-same-reg
[22:42:58] [PASSED] no-match-no-add
[22:42:58] [PASSED] no-match-no-add-multiple-rules
[22:42:58] [PASSED] two-regs-two-entries
[22:42:58] [PASSED] clr-one-set-other
[22:42:58] [PASSED] set-field
[22:42:58] [PASSED] conflict-duplicate
[22:42:58] [PASSED] conflict-not-disjoint
[22:42:58] [PASSED] conflict-reg-type
[22:42:58] ============== [PASSED] xe_rtp_process_tests ===============
stty: 'standard input': Inappropriate ioctl for device
[22:42:58] ===================== [PASSED] xe_rtp ======================
[22:42:58] ==================== xe_wa (1 subtest) =====================
[22:42:58] ======================== xe_wa_gt  =========================
[22:42:58] [PASSED] TIGERLAKE (B0)
[22:42:58] [PASSED] DG1 (A0)
[22:42:58] [PASSED] DG1 (B0)
[22:42:58] [PASSED] ALDERLAKE_S (A0)
[22:42:58] [PASSED] ALDERLAKE_S (B0)
[22:42:58] [PASSED] ALDERLAKE_S (C0)
[22:42:58] [PASSED] ALDERLAKE_S (D0)
[22:42:58] [PASSED] ALDERLAKE_P (A0)
[22:42:58] [PASSED] ALDERLAKE_P (B0)
[22:42:58] [PASSED] ALDERLAKE_P (C0)
[22:42:58] [PASSED] ALDERLAKE_S_RPLS (D0)
[22:42:58] [PASSED] ALDERLAKE_P_RPLU (E0)
[22:42:58] [PASSED] DG2_G10 (C0)
[22:42:58] [PASSED] DG2_G11 (B1)
[22:42:58] [PASSED] DG2_G12 (A1)
[22:42:58] [PASSED] METEORLAKE (g:A0, m:A0)
[22:42:58] [PASSED] METEORLAKE (g:A0, m:A0)
[22:42:58] [PASSED] METEORLAKE (g:A0, m:A0)
[22:42:58] [PASSED] LUNARLAKE (g:A0, m:A0)
[22:42:58] [PASSED] LUNARLAKE (g:B0, m:A0)
[22:42:58] ==================== [PASSED] xe_wa_gt =====================
[22:42:58] ====================== [PASSED] xe_wa ======================
[22:42:58] ============================================================
[22:42:58] Testing complete. Ran 109 tests: passed: 95, skipped: 14
[22:42:58] Elapsed time: 30.066s total, 4.242s configuring, 25.553s building, 0.216s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[22:42:58] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[22:43:00] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
  156 | u64 ioread64_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
  163 | u64 ioread64_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
  170 | u64 ioread64be_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
  178 | u64 ioread64be_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
  264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
  272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
  280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
  288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~

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

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
stty: 'standard input': Inappropriate ioctl for device
[22:43:22] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[22:43:24] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
[22:43:32] Starting KUnit Kernel (1/1)...
[22:43:32] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[22:43:32] ================= ttm_device (5 subtests) ==================
[22:43:32] [PASSED] ttm_device_init_basic
[22:43:32] [PASSED] ttm_device_init_multiple
[22:43:32] [PASSED] ttm_device_fini_basic
[22:43:32] [PASSED] ttm_device_init_no_vma_man
[22:43:32] ================== ttm_device_init_pools  ==================
[22:43:32] [PASSED] No DMA allocations, no DMA32 required
[22:43:32] [PASSED] DMA allocations, DMA32 required
[22:43:32] [PASSED] No DMA allocations, DMA32 required
[22:43:32] [PASSED] DMA allocations, no DMA32 required
[22:43:32] ============== [PASSED] ttm_device_init_pools ==============
[22:43:32] =================== [PASSED] ttm_device ====================
[22:43:32] ================== ttm_pool (8 subtests) ===================
[22:43:32] ================== ttm_pool_alloc_basic  ===================
[22:43:32] [PASSED] One page
[22:43:32] [PASSED] More than one page
[22:43:32] [PASSED] Above the allocation limit
[22:43:32] [PASSED] One page, with coherent DMA mappings enabled
[22:43:32] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[22:43:32] ============== [PASSED] ttm_pool_alloc_basic ===============
[22:43:32] ============== ttm_pool_alloc_basic_dma_addr  ==============
[22:43:32] [PASSED] One page
[22:43:32] [PASSED] More than one page
[22:43:32] [PASSED] Above the allocation limit
[22:43:32] [PASSED] One page, with coherent DMA mappings enabled
[22:43:32] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[22:43:32] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[22:43:32] [PASSED] ttm_pool_alloc_order_caching_match
[22:43:32] [PASSED] ttm_pool_alloc_caching_mismatch
[22:43:32] [PASSED] ttm_pool_alloc_order_mismatch
[22:43:32] [PASSED] ttm_pool_free_dma_alloc
[22:43:32] [PASSED] ttm_pool_free_no_dma_alloc
[22:43:32] [PASSED] ttm_pool_fini_basic
[22:43:32] ==================== [PASSED] ttm_pool =====================
[22:43:32] ================ ttm_resource (8 subtests) =================
[22:43:32] ================= ttm_resource_init_basic  =================
[22:43:32] [PASSED] Init resource in TTM_PL_SYSTEM
[22:43:32] [PASSED] Init resource in TTM_PL_VRAM
[22:43:32] [PASSED] Init resource in a private placement
[22:43:32] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[22:43:32] ============= [PASSED] ttm_resource_init_basic =============
[22:43:32] [PASSED] ttm_resource_init_pinned
[22:43:32] [PASSED] ttm_resource_fini_basic
[22:43:32] [PASSED] ttm_resource_manager_init_basic
[22:43:32] [PASSED] ttm_resource_manager_usage_basic
[22:43:32] [PASSED] ttm_resource_manager_set_used_basic
[22:43:32] [PASSED] ttm_sys_man_alloc_basic
[22:43:32] [PASSED] ttm_sys_man_free_basic
[22:43:32] ================== [PASSED] ttm_resource ===================
[22:43:32] =================== ttm_tt (10 subtests) ===================
[22:43:32] ==================== ttm_tt_init_basic  ====================
[22:43:32] [PASSED] Page-aligned size
[22:43:32] [PASSED] Extra pages requested
[22:43:32] ================ [PASSED] ttm_tt_init_basic ================
[22:43:32] [PASSED] ttm_tt_init_misaligned
[22:43:32] [PASSED] ttm_tt_fini_basic
[22:43:32] [PASSED] ttm_tt_fini_sg
[22:43:32] [PASSED] ttm_tt_fini_shmem
[22:43:32] [PASSED] ttm_tt_create_basic
[22:43:32] [PASSED] ttm_tt_create_invalid_bo_type
[22:43:32] [PASSED] ttm_tt_create_ttm_exists
[22:43:32] [PASSED] ttm_tt_create_failed
[22:43:32] [PASSED] ttm_tt_destroy_basic
[22:43:32] ===================== [PASSED] ttm_tt ======================
[22:43:32] =================== ttm_bo (14 subtests) ===================
[22:43:32] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[22:43:32] [PASSED] Cannot be interrupted and sleeps
[22:43:32] [PASSED] Cannot be interrupted, locks straight away
[22:43:32] [PASSED] Can be interrupted, sleeps
[22:43:32] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[22:43:32] [PASSED] ttm_bo_reserve_locked_no_sleep
[22:43:32] [PASSED] ttm_bo_reserve_no_wait_ticket
[22:43:32] [PASSED] ttm_bo_reserve_double_resv
[22:43:32] [PASSED] ttm_bo_reserve_interrupted
[22:43:32] [PASSED] ttm_bo_reserve_deadlock
[22:43:32] [PASSED] ttm_bo_unreserve_basic
[22:43:32] [PASSED] ttm_bo_unreserve_pinned
[22:43:32] [PASSED] ttm_bo_unreserve_bulk
[22:43:32] [PASSED] ttm_bo_put_basic
[22:43:32] [PASSED] ttm_bo_put_shared_resv
[22:43:32] [PASSED] ttm_bo_pin_basic
[22:43:32] [PASSED] ttm_bo_pin_unpin_resource
[22:43:32] [PASSED] ttm_bo_multiple_pin_one_unpin
[22:43:32] ===================== [PASSED] ttm_bo ======================
[22:43:32] ============================================================
[22:43:32] Testing complete. Ran 62 tests: passed: 62
[22:43:32] Elapsed time: 10.549s total, 1.713s configuring, 8.617s building, 0.174s running

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



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

* ✓ CI.Build: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (45 preceding siblings ...)
  2024-06-14 22:43 ` ✓ CI.KUnit: success " Patchwork
@ 2024-06-14 22:55 ` Patchwork
  2024-06-14 22:57 ` ✗ CI.Hooks: failure " Patchwork
                   ` (11 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-14 22:55 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
URL   : https://patchwork.freedesktop.org/series/134917/
State : success

== Summary ==

lib/modules/6.10.0-rc3-xe/kernel/sound/core/seq/
lib/modules/6.10.0-rc3-xe/kernel/sound/core/seq/snd-seq.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd-seq-device.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd-hwdep.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd-pcm.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd-compress.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd-timer.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soundcore.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/atom/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/atom/snd-soc-sst-atom-hifi2-platform.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/atom/sst/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-acpi.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-core.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/common/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/common/snd-soc-acpi-intel-match.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/amd/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/amd/snd-acp-config.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-tgl.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-mlink.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-cnl.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-lnl.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-common.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-generic.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-mtl.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/amd/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/amd/snd-sof-amd-renoir.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/amd/snd-sof-amd-acp.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/snd-sof-utils.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/snd-sof-pci.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/snd-sof.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/snd-sof-probes.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/xtensa/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/xtensa/snd-sof-xtensa-dsp.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/snd-soc-core.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/snd-soc-acpi.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/codecs/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/codecs/snd-soc-hdac-hda.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/snd-intel-sdw-acpi.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/ext/
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/ext/snd-hda-ext-core.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/snd-intel-dspcfg.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/snd-hda-core.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kernel/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kernel/msr.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kernel/cpuid.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/sha512-ssse3.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/crct10dif-pclmul.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/ghash-clmulni-intel.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/sha1-ssse3.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/crc32-pclmul.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/sha256-ssse3.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/aesni-intel.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/polyval-clmulni.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/events/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/events/intel/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/events/intel/intel-cstate.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/events/rapl.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kvm/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kvm/kvm.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kvm/kvm-intel.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/
lib/modules/6.10.0-rc3-xe/kernel/crypto/crypto_simd.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/cmac.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/ccm.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/cryptd.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/polyval-generic.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/async_xor.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/async_tx.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/async_pq.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/6.10.0-rc3-xe/build
lib/modules/6.10.0-rc3-xe/modules.alias.bin
lib/modules/6.10.0-rc3-xe/modules.builtin
lib/modules/6.10.0-rc3-xe/modules.softdep
lib/modules/6.10.0-rc3-xe/modules.alias
lib/modules/6.10.0-rc3-xe/modules.order
lib/modules/6.10.0-rc3-xe/modules.symbols
lib/modules/6.10.0-rc3-xe/modules.dep.bin
+ mv kernel-nodebug.tar.gz ..
+ cd ..
+ rm -rf archive
++ date +%s
+ echo -e '\e[0Ksection_end:1718405715:package_x86_64_nodebug\r\e[0K'
+ sync
^[[0Ksection_end:1718405715:package_x86_64_nodebug
^[[0K
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✗ CI.Hooks: failure for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (46 preceding siblings ...)
  2024-06-14 22:55 ` ✓ CI.Build: " Patchwork
@ 2024-06-14 22:57 ` Patchwork
  2024-06-14 22:58 ` ✗ CI.checksparse: warning " Patchwork
                   ` (10 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-14 22:57 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
URL   : https://patchwork.freedesktop.org/series/134917/
State : failure

== Summary ==

run-parts: executing /workspace/ci/hooks/00-showenv
+ export
+ grep -Ei '(^|\W)CI_'
declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-default"
declare -x CI_KERNEL_SRC_DIR="/workspace/kernel"
declare -x CI_TOOLS_SRC_DIR="/workspace/ci"
declare -x CI_WORKSPACE_DIR="/workspace"
run-parts: executing /workspace/ci/hooks/10-build-W1
+ SRC_DIR=/workspace/kernel
+ RESTORE_DISPLAY_CONFIG=0
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ cd /workspace/kernel
++ nproc
+ make -j48 O=/workspace/kernel/build64-default modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-default'
  GEN     Makefile
  UPD     include/generated/compile.h
  UPD     include/config/kernel.release
mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool 
  UPD     include/generated/utsrelease.h
  HOSTCC  /workspace/kernel/build64-default/tools/objtool/fixdep.o
  CALL    ../scripts/checksyscalls.sh
  HOSTLD  /workspace/kernel/build64-default/tools/objtool/fixdep-in.o
  LINK    /workspace/kernel/build64-default/tools/objtool/fixdep
  INSTALL libsubcmd_headers
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o
  LD      /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o
  AR      /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a
  CC      /workspace/kernel/build64-default/tools/objtool/weak.o
  CC      /workspace/kernel/build64-default/tools/objtool/check.o
  CC      /workspace/kernel/build64-default/tools/objtool/special.o
  CC      /workspace/kernel/build64-default/tools/objtool/builtin-check.o
  CC      /workspace/kernel/build64-default/tools/objtool/elf.o
  CC      /workspace/kernel/build64-default/tools/objtool/objtool.o
  CC      /workspace/kernel/build64-default/tools/objtool/orc_gen.o
  CC      /workspace/kernel/build64-default/tools/objtool/orc_dump.o
  CC      /workspace/kernel/build64-default/tools/objtool/libstring.o
  CC      /workspace/kernel/build64-default/tools/objtool/libctype.o
  CC      /workspace/kernel/build64-default/tools/objtool/str_error_r.o
  CC      /workspace/kernel/build64-default/tools/objtool/librbtree.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o
  LD      /workspace/kernel/build64-default/tools/objtool/arch/x86/objtool-in.o
  LD      /workspace/kernel/build64-default/tools/objtool/objtool-in.o
  LINK    /workspace/kernel/build64-default/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64-default'
++ nproc
+ make -j48 O=/workspace/kernel/build64-default W=1 drivers/gpu/drm/xe
make[1]: Entering directory '/workspace/kernel/build64-default'
make[2]: Nothing to be done for 'drivers/gpu/drm/xe'.
make[1]: Leaving directory '/workspace/kernel/build64-default'
run-parts: executing /workspace/ci/hooks/11-build-32b
+++ realpath /workspace/ci/hooks/11-build-32b
++ dirname /workspace/ci/hooks/11-build-32b
+ THIS_SCRIPT_DIR=/workspace/ci/hooks
+ SRC_DIR=/workspace/kernel
+ TOOLS_SRC_DIR=/workspace/ci
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ BUILD_DIR=/workspace/kernel/build64-default/build32
+ cd /workspace/kernel
+ mkdir -p /workspace/kernel/build64-default/build32
++ nproc
+ make -j48 ARCH=i386 O=/workspace/kernel/build64-default/build32 defconfig
make[1]: Entering directory '/workspace/kernel/build64-default/build32'
  GEN     Makefile
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/menu.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTLD  scripts/kconfig/conf
*** Default configuration is based on 'i386_defconfig'
#
# configuration written to .config
#
make[1]: Leaving directory '/workspace/kernel/build64-default/build32'
+ cd /workspace/kernel/build64-default/build32
+ /workspace/kernel/scripts/kconfig/merge_config.sh .config /workspace/ci/kernel/10-xe.fragment
Using .config as base
Merging /workspace/ci/kernel/10-xe.fragment
Value of CONFIG_DRM_XE is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_DRM_XE is not set
New value: CONFIG_DRM_XE=m

Value of CONFIG_SND_DEBUG is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_SND_DEBUG is not set
New value: CONFIG_SND_DEBUG=y

Value of CONFIG_SND_HDA_INTEL is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: CONFIG_SND_HDA_INTEL=y
New value: CONFIG_SND_HDA_INTEL=m

Value of CONFIG_SND_HDA_CODEC_HDMI is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_SND_HDA_CODEC_HDMI is not set
New value: CONFIG_SND_HDA_CODEC_HDMI=m

  GEN     Makefile

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]
#
# configuration written to .config
#
Value requested for CONFIG_HAVE_UID16 not in final .config
Requested value:  CONFIG_HAVE_UID16=y
Actual value:     

Value requested for CONFIG_UID16 not in final .config
Requested value:  CONFIG_UID16=y
Actual value:     

Value requested for CONFIG_X86_32 not in final .config
Requested value:  CONFIG_X86_32=y
Actual value:     

Value requested for CONFIG_OUTPUT_FORMAT not in final .config
Requested value:  CONFIG_OUTPUT_FORMAT="elf32-i386"
Actual value:     CONFIG_OUTPUT_FORMAT="elf64-x86-64"

Value requested for CONFIG_ARCH_MMAP_RND_BITS_MIN not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS_MIN=8
Actual value:     CONFIG_ARCH_MMAP_RND_BITS_MIN=28

Value requested for CONFIG_ARCH_MMAP_RND_BITS_MAX not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS_MAX=16
Actual value:     CONFIG_ARCH_MMAP_RND_BITS_MAX=32

Value requested for CONFIG_PGTABLE_LEVELS not in final .config
Requested value:  CONFIG_PGTABLE_LEVELS=2
Actual value:     CONFIG_PGTABLE_LEVELS=5

Value requested for CONFIG_X86_BIGSMP not in final .config
Requested value:  # CONFIG_X86_BIGSMP is not set
Actual value:     

Value requested for CONFIG_X86_INTEL_QUARK not in final .config
Requested value:  # CONFIG_X86_INTEL_QUARK is not set
Actual value:     

Value requested for CONFIG_X86_RDC321X not in final .config
Requested value:  # CONFIG_X86_RDC321X is not set
Actual value:     

Value requested for CONFIG_X86_32_NON_STANDARD not in final .config
Requested value:  # CONFIG_X86_32_NON_STANDARD is not set
Actual value:     

Value requested for CONFIG_X86_32_IRIS not in final .config
Requested value:  # CONFIG_X86_32_IRIS is not set
Actual value:     

Value requested for CONFIG_M486SX not in final .config
Requested value:  # CONFIG_M486SX is not set
Actual value:     

Value requested for CONFIG_M486 not in final .config
Requested value:  # CONFIG_M486 is not set
Actual value:     

Value requested for CONFIG_M586 not in final .config
Requested value:  # CONFIG_M586 is not set
Actual value:     

Value requested for CONFIG_M586TSC not in final .config
Requested value:  # CONFIG_M586TSC is not set
Actual value:     

Value requested for CONFIG_M586MMX not in final .config
Requested value:  # CONFIG_M586MMX is not set
Actual value:     

Value requested for CONFIG_M686 not in final .config
Requested value:  CONFIG_M686=y
Actual value:     

Value requested for CONFIG_MPENTIUMII not in final .config
Requested value:  # CONFIG_MPENTIUMII is not set
Actual value:     

Value requested for CONFIG_MPENTIUMIII not in final .config
Requested value:  # CONFIG_MPENTIUMIII is not set
Actual value:     

Value requested for CONFIG_MPENTIUMM not in final .config
Requested value:  # CONFIG_MPENTIUMM is not set
Actual value:     

Value requested for CONFIG_MPENTIUM4 not in final .config
Requested value:  # CONFIG_MPENTIUM4 is not set
Actual value:     

Value requested for CONFIG_MK6 not in final .config
Requested value:  # CONFIG_MK6 is not set
Actual value:     

Value requested for CONFIG_MK7 not in final .config
Requested value:  # CONFIG_MK7 is not set
Actual value:     

Value requested for CONFIG_MCRUSOE not in final .config
Requested value:  # CONFIG_MCRUSOE is not set
Actual value:     

Value requested for CONFIG_MEFFICEON not in final .config
Requested value:  # CONFIG_MEFFICEON is not set
Actual value:     

Value requested for CONFIG_MWINCHIPC6 not in final .config
Requested value:  # CONFIG_MWINCHIPC6 is not set
Actual value:     

Value requested for CONFIG_MWINCHIP3D not in final .config
Requested value:  # CONFIG_MWINCHIP3D is not set
Actual value:     

Value requested for CONFIG_MELAN not in final .config
Requested value:  # CONFIG_MELAN is not set
Actual value:     

Value requested for CONFIG_MGEODEGX1 not in final .config
Requested value:  # CONFIG_MGEODEGX1 is not set
Actual value:     

Value requested for CONFIG_MGEODE_LX not in final .config
Requested value:  # CONFIG_MGEODE_LX is not set
Actual value:     

Value requested for CONFIG_MCYRIXIII not in final .config
Requested value:  # CONFIG_MCYRIXIII is not set
Actual value:     

Value requested for CONFIG_MVIAC3_2 not in final .config
Requested value:  # CONFIG_MVIAC3_2 is not set
Actual value:     

Value requested for CONFIG_MVIAC7 not in final .config
Requested value:  # CONFIG_MVIAC7 is not set
Actual value:     

Value requested for CONFIG_X86_GENERIC not in final .config
Requested value:  # CONFIG_X86_GENERIC is not set
Actual value:     

Value requested for CONFIG_X86_INTERNODE_CACHE_SHIFT not in final .config
Requested value:  CONFIG_X86_INTERNODE_CACHE_SHIFT=5
Actual value:     CONFIG_X86_INTERNODE_CACHE_SHIFT=6

Value requested for CONFIG_X86_L1_CACHE_SHIFT not in final .config
Requested value:  CONFIG_X86_L1_CACHE_SHIFT=5
Actual value:     CONFIG_X86_L1_CACHE_SHIFT=6

Value requested for CONFIG_X86_USE_PPRO_CHECKSUM not in final .config
Requested value:  CONFIG_X86_USE_PPRO_CHECKSUM=y
Actual value:     

Value requested for CONFIG_X86_MINIMUM_CPU_FAMILY not in final .config
Requested value:  CONFIG_X86_MINIMUM_CPU_FAMILY=6
Actual value:     CONFIG_X86_MINIMUM_CPU_FAMILY=64

Value requested for CONFIG_CPU_SUP_TRANSMETA_32 not in final .config
Requested value:  CONFIG_CPU_SUP_TRANSMETA_32=y
Actual value:     

Value requested for CONFIG_CPU_SUP_VORTEX_32 not in final .config
Requested value:  CONFIG_CPU_SUP_VORTEX_32=y
Actual value:     

Value requested for CONFIG_HPET_TIMER not in final .config
Requested value:  # CONFIG_HPET_TIMER is not set
Actual value:     CONFIG_HPET_TIMER=y

Value requested for CONFIG_NR_CPUS_RANGE_END not in final .config
Requested value:  CONFIG_NR_CPUS_RANGE_END=8
Actual value:     CONFIG_NR_CPUS_RANGE_END=512

Value requested for CONFIG_NR_CPUS_DEFAULT not in final .config
Requested value:  CONFIG_NR_CPUS_DEFAULT=8
Actual value:     CONFIG_NR_CPUS_DEFAULT=64

Value requested for CONFIG_X86_ANCIENT_MCE not in final .config
Requested value:  # CONFIG_X86_ANCIENT_MCE is not set
Actual value:     

Value requested for CONFIG_X86_LEGACY_VM86 not in final .config
Requested value:  # CONFIG_X86_LEGACY_VM86 is not set
Actual value:     

Value requested for CONFIG_X86_ESPFIX32 not in final .config
Requested value:  CONFIG_X86_ESPFIX32=y
Actual value:     

Value requested for CONFIG_TOSHIBA not in final .config
Requested value:  # CONFIG_TOSHIBA is not set
Actual value:     

Value requested for CONFIG_X86_REBOOTFIXUPS not in final .config
Requested value:  # CONFIG_X86_REBOOTFIXUPS is not set
Actual value:     

Value requested for CONFIG_MICROCODE_INITRD32 not in final .config
Requested value:  CONFIG_MICROCODE_INITRD32=y
Actual value:     

Value requested for CONFIG_NOHIGHMEM not in final .config
Requested value:  # CONFIG_NOHIGHMEM is not set
Actual value:     

Value requested for CONFIG_HIGHMEM4G not in final .config
Requested value:  CONFIG_HIGHMEM4G=y
Actual value:     

Value requested for CONFIG_HIGHMEM64G not in final .config
Requested value:  # CONFIG_HIGHMEM64G is not set
Actual value:     

Value requested for CONFIG_PAGE_OFFSET not in final .config
Requested value:  CONFIG_PAGE_OFFSET=0xC0000000
Actual value:     

Value requested for CONFIG_HIGHMEM not in final .config
Requested value:  CONFIG_HIGHMEM=y
Actual value:     

Value requested for CONFIG_X86_PAE not in final .config
Requested value:  # CONFIG_X86_PAE is not set
Actual value:     

Value requested for CONFIG_ARCH_FLATMEM_ENABLE not in final .config
Requested value:  CONFIG_ARCH_FLATMEM_ENABLE=y
Actual value:     

Value requested for CONFIG_ARCH_SELECT_MEMORY_MODEL not in final .config
Requested value:  CONFIG_ARCH_SELECT_MEMORY_MODEL=y
Actual value:     

Value requested for CONFIG_ILLEGAL_POINTER_VALUE not in final .config
Requested value:  CONFIG_ILLEGAL_POINTER_VALUE=0
Actual value:     CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000

Value requested for CONFIG_HIGHPTE not in final .config
Requested value:  # CONFIG_HIGHPTE is not set
Actual value:     

Value requested for CONFIG_COMPAT_VDSO not in final .config
Requested value:  # CONFIG_COMPAT_VDSO is not set
Actual value:     

Value requested for CONFIG_FUNCTION_PADDING_CFI not in final .config
Requested value:  CONFIG_FUNCTION_PADDING_CFI=0
Actual value:     CONFIG_FUNCTION_PADDING_CFI=11

Value requested for CONFIG_FUNCTION_PADDING_BYTES not in final .config
Requested value:  CONFIG_FUNCTION_PADDING_BYTES=4
Actual value:     CONFIG_FUNCTION_PADDING_BYTES=16

Value requested for CONFIG_APM not in final .config
Requested value:  # CONFIG_APM is not set
Actual value:     

Value requested for CONFIG_X86_POWERNOW_K6 not in final .config
Requested value:  # CONFIG_X86_POWERNOW_K6 is not set
Actual value:     

Value requested for CONFIG_X86_POWERNOW_K7 not in final .config
Requested value:  # CONFIG_X86_POWERNOW_K7 is not set
Actual value:     

Value requested for CONFIG_X86_GX_SUSPMOD not in final .config
Requested value:  # CONFIG_X86_GX_SUSPMOD is not set
Actual value:     

Value requested for CONFIG_X86_SPEEDSTEP_ICH not in final .config
Requested value:  # CONFIG_X86_SPEEDSTEP_ICH is not set
Actual value:     

Value requested for CONFIG_X86_SPEEDSTEP_SMI not in final .config
Requested value:  # CONFIG_X86_SPEEDSTEP_SMI is not set
Actual value:     

Value requested for CONFIG_X86_CPUFREQ_NFORCE2 not in final .config
Requested value:  # CONFIG_X86_CPUFREQ_NFORCE2 is not set
Actual value:     

Value requested for CONFIG_X86_LONGRUN not in final .config
Requested value:  # CONFIG_X86_LONGRUN is not set
Actual value:     

Value requested for CONFIG_X86_LONGHAUL not in final .config
Requested value:  # CONFIG_X86_LONGHAUL is not set
Actual value:     

Value requested for CONFIG_X86_E_POWERSAVER not in final .config
Requested value:  # CONFIG_X86_E_POWERSAVER is not set
Actual value:     

Value requested for CONFIG_PCI_GOBIOS not in final .config
Requested value:  # CONFIG_PCI_GOBIOS is not set
Actual value:     

Value requested for CONFIG_PCI_GOMMCONFIG not in final .config
Requested value:  # CONFIG_PCI_GOMMCONFIG is not set
Actual value:     

Value requested for CONFIG_PCI_GODIRECT not in final .config
Requested value:  # CONFIG_PCI_GODIRECT is not set
Actual value:     

Value requested for CONFIG_PCI_GOANY not in final .config
Requested value:  CONFIG_PCI_GOANY=y
Actual value:     

Value requested for CONFIG_PCI_BIOS not in final .config
Requested value:  CONFIG_PCI_BIOS=y
Actual value:     

Value requested for CONFIG_ISA not in final .config
Requested value:  # CONFIG_ISA is not set
Actual value:     

Value requested for CONFIG_SCx200 not in final .config
Requested value:  # CONFIG_SCx200 is not set
Actual value:     

Value requested for CONFIG_OLPC not in final .config
Requested value:  # CONFIG_OLPC is not set
Actual value:     

Value requested for CONFIG_ALIX not in final .config
Requested value:  # CONFIG_ALIX is not set
Actual value:     

Value requested for CONFIG_NET5501 not in final .config
Requested value:  # CONFIG_NET5501 is not set
Actual value:     

Value requested for CONFIG_GEOS not in final .config
Requested value:  # CONFIG_GEOS is not set
Actual value:     

Value requested for CONFIG_COMPAT_32 not in final .config
Requested value:  CONFIG_COMPAT_32=y
Actual value:     

Value requested for CONFIG_HAVE_ATOMIC_IOMAP not in final .config
Requested value:  CONFIG_HAVE_ATOMIC_IOMAP=y
Actual value:     

Value requested for CONFIG_ARCH_32BIT_OFF_T not in final .config
Requested value:  CONFIG_ARCH_32BIT_OFF_T=y
Actual value:     

Value requested for CONFIG_ARCH_WANT_IPC_PARSE_VERSION not in final .config
Requested value:  CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
Actual value:     

Value requested for CONFIG_MODULES_USE_ELF_REL not in final .config
Requested value:  CONFIG_MODULES_USE_ELF_REL=y
Actual value:     

Value requested for CONFIG_ARCH_MMAP_RND_BITS not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS=8
Actual value:     CONFIG_ARCH_MMAP_RND_BITS=28

Value requested for CONFIG_CLONE_BACKWARDS not in final .config
Requested value:  CONFIG_CLONE_BACKWARDS=y
Actual value:     

Value requested for CONFIG_OLD_SIGSUSPEND3 not in final .config
Requested value:  CONFIG_OLD_SIGSUSPEND3=y
Actual value:     

Value requested for CONFIG_OLD_SIGACTION not in final .config
Requested value:  CONFIG_OLD_SIGACTION=y
Actual value:     

Value requested for CONFIG_ARCH_SPLIT_ARG64 not in final .config
Requested value:  CONFIG_ARCH_SPLIT_ARG64=y
Actual value:     

Value requested for CONFIG_FUNCTION_ALIGNMENT not in final .config
Requested value:  CONFIG_FUNCTION_ALIGNMENT=4
Actual value:     CONFIG_FUNCTION_ALIGNMENT=16

Value requested for CONFIG_SELECT_MEMORY_MODEL not in final .config
Requested value:  CONFIG_SELECT_MEMORY_MODEL=y
Actual value:     

Value requested for CONFIG_FLATMEM_MANUAL not in final .config
Requested value:  CONFIG_FLATMEM_MANUAL=y
Actual value:     

Value requested for CONFIG_SPARSEMEM_MANUAL not in final .config
Requested value:  # CONFIG_SPARSEMEM_MANUAL is not set
Actual value:     

Value requested for CONFIG_FLATMEM not in final .config
Requested value:  CONFIG_FLATMEM=y
Actual value:     

Value requested for CONFIG_SPARSEMEM_STATIC not in final .config
Requested value:  CONFIG_SPARSEMEM_STATIC=y
Actual value:     

Value requested for CONFIG_BOUNCE not in final .config
Requested value:  CONFIG_BOUNCE=y
Actual value:     

Value requested for CONFIG_KMAP_LOCAL not in final .config
Requested value:  CONFIG_KMAP_LOCAL=y
Actual value:     

Value requested for CONFIG_HOTPLUG_PCI_COMPAQ not in final .config
Requested value:  # CONFIG_HOTPLUG_PCI_COMPAQ is not set
Actual value:     

Value requested for CONFIG_HOTPLUG_PCI_IBM not in final .config
Requested value:  # CONFIG_HOTPLUG_PCI_IBM is not set
Actual value:     

Value requested for CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH not in final .config
Requested value:  CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH=y
Actual value:     

Value requested for CONFIG_PCH_PHUB not in final .config
Requested value:  # CONFIG_PCH_PHUB is not set
Actual value:     

Value requested for CONFIG_SCSI_NSP32 not in final .config
Requested value:  # CONFIG_SCSI_NSP32 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5520 not in final .config
Requested value:  # CONFIG_PATA_CS5520 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5530 not in final .config
Requested value:  # CONFIG_PATA_CS5530 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5535 not in final .config
Requested value:  # CONFIG_PATA_CS5535 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5536 not in final .config
Requested value:  # CONFIG_PATA_CS5536 is not set
Actual value:     

Value requested for CONFIG_PATA_SC1200 not in final .config
Requested value:  # CONFIG_PATA_SC1200 is not set
Actual value:     

Value requested for CONFIG_PCH_GBE not in final .config
Requested value:  # CONFIG_PCH_GBE is not set
Actual value:     

Value requested for CONFIG_INPUT_WISTRON_BTNS not in final .config
Requested value:  # CONFIG_INPUT_WISTRON_BTNS is not set
Actual value:     

Value requested for CONFIG_SERIAL_TIMBERDALE not in final .config
Requested value:  # CONFIG_SERIAL_TIMBERDALE is not set
Actual value:     

Value requested for CONFIG_SERIAL_PCH_UART not in final .config
Requested value:  # CONFIG_SERIAL_PCH_UART is not set
Actual value:     

Value requested for CONFIG_HW_RANDOM_GEODE not in final .config
Requested value:  CONFIG_HW_RANDOM_GEODE=y
Actual value:     

Value requested for CONFIG_SONYPI not in final .config
Requested value:  # CONFIG_SONYPI is not set
Actual value:     

Value requested for CONFIG_PC8736x_GPIO not in final .config
Requested value:  # CONFIG_PC8736x_GPIO is not set
Actual value:     

Value requested for CONFIG_NSC_GPIO not in final .config
Requested value:  # CONFIG_NSC_GPIO is not set
Actual value:     

Value requested for CONFIG_I2C_EG20T not in final .config
Requested value:  # CONFIG_I2C_EG20T is not set
Actual value:     

Value requested for CONFIG_SCx200_ACB not in final .config
Requested value:  # CONFIG_SCx200_ACB is not set
Actual value:     

Value requested for CONFIG_PTP_1588_CLOCK_PCH not in final .config
Requested value:  # CONFIG_PTP_1588_CLOCK_PCH is not set
Actual value:     

Value requested for CONFIG_SBC8360_WDT not in final .config
Requested value:  # CONFIG_SBC8360_WDT is not set
Actual value:     

Value requested for CONFIG_SBC7240_WDT not in final .config
Requested value:  # CONFIG_SBC7240_WDT is not set
Actual value:     

Value requested for CONFIG_MFD_CS5535 not in final .config
Requested value:  # CONFIG_MFD_CS5535 is not set
Actual value:     

Value requested for CONFIG_AGP_ALI not in final .config
Requested value:  # CONFIG_AGP_ALI is not set
Actual value:     

Value requested for CONFIG_AGP_ATI not in final .config
Requested value:  # CONFIG_AGP_ATI is not set
Actual value:     

Value requested for CONFIG_AGP_AMD not in final .config
Requested value:  # CONFIG_AGP_AMD is not set
Actual value:     

Value requested for CONFIG_AGP_NVIDIA not in final .config
Requested value:  # CONFIG_AGP_NVIDIA is not set
Actual value:     

Value requested for CONFIG_AGP_SWORKS not in final .config
Requested value:  # CONFIG_AGP_SWORKS is not set
Actual value:     

Value requested for CONFIG_AGP_EFFICEON not in final .config
Requested value:  # CONFIG_AGP_EFFICEON is not set
Actual value:     

Value requested for CONFIG_SND_PCM not in final .config
Requested value:  CONFIG_SND_PCM=y
Actual value:     CONFIG_SND_PCM=m

Value requested for CONFIG_SND_HWDEP not in final .config
Requested value:  CONFIG_SND_HWDEP=y
Actual value:     CONFIG_SND_HWDEP=m

Value requested for CONFIG_SND_DYNAMIC_MINORS not in final .config
Requested value:  # CONFIG_SND_DYNAMIC_MINORS is not set
Actual value:     CONFIG_SND_DYNAMIC_MINORS=y

Value requested for CONFIG_SND_CS5530 not in final .config
Requested value:  # CONFIG_SND_CS5530 is not set
Actual value:     

Value requested for CONFIG_SND_CS5535AUDIO not in final .config
Requested value:  # CONFIG_SND_CS5535AUDIO is not set
Actual value:     

Value requested for CONFIG_SND_SIS7019 not in final .config
Requested value:  # CONFIG_SND_SIS7019 is not set
Actual value:     

Value requested for CONFIG_SND_HDA not in final .config
Requested value:  CONFIG_SND_HDA=y
Actual value:     CONFIG_SND_HDA=m

Value requested for CONFIG_SND_HDA_CORE not in final .config
Requested value:  CONFIG_SND_HDA_CORE=y
Actual value:     CONFIG_SND_HDA_CORE=m

Value requested for CONFIG_SND_INTEL_DSP_CONFIG not in final .config
Requested value:  CONFIG_SND_INTEL_DSP_CONFIG=y
Actual value:     CONFIG_SND_INTEL_DSP_CONFIG=m

Value requested for CONFIG_SND_INTEL_SOUNDWIRE_ACPI not in final .config
Requested value:  CONFIG_SND_INTEL_SOUNDWIRE_ACPI=y
Actual value:     CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m

Value requested for CONFIG_LEDS_OT200 not in final .config
Requested value:  # CONFIG_LEDS_OT200 is not set
Actual value:     

Value requested for CONFIG_PCH_DMA not in final .config
Requested value:  # CONFIG_PCH_DMA is not set
Actual value:     

Value requested for CONFIG_CLKSRC_I8253 not in final .config
Requested value:  CONFIG_CLKSRC_I8253=y
Actual value:     

Value requested for CONFIG_MAILBOX not in final .config
Requested value:  # CONFIG_MAILBOX is not set
Actual value:     CONFIG_MAILBOX=y

Value requested for CONFIG_CRYPTO_SERPENT_SSE2_586 not in final .config
Requested value:  # CONFIG_CRYPTO_SERPENT_SSE2_586 is not set
Actual value:     

Value requested for CONFIG_CRYPTO_TWOFISH_586 not in final .config
Requested value:  # CONFIG_CRYPTO_TWOFISH_586 is not set
Actual value:     

Value requested for CONFIG_CRYPTO_DEV_GEODE not in final .config
Requested value:  # CONFIG_CRYPTO_DEV_GEODE is not set
Actual value:     

Value requested for CONFIG_CRYPTO_DEV_HIFN_795X not in final .config
Requested value:  # CONFIG_CRYPTO_DEV_HIFN_795X is not set
Actual value:     

Value requested for CONFIG_CRYPTO_LIB_POLY1305_RSIZE not in final .config
Requested value:  CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
Actual value:     CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11

Value requested for CONFIG_AUDIT_GENERIC not in final .config
Requested value:  CONFIG_AUDIT_GENERIC=y
Actual value:     

Value requested for CONFIG_GENERIC_VDSO_32 not in final .config
Requested value:  CONFIG_GENERIC_VDSO_32=y
Actual value:     

Value requested for CONFIG_DEBUG_KMAP_LOCAL not in final .config
Requested value:  # CONFIG_DEBUG_KMAP_LOCAL is not set
Actual value:     

Value requested for CONFIG_DEBUG_HIGHMEM not in final .config
Requested value:  # CONFIG_DEBUG_HIGHMEM is not set
Actual value:     

Value requested for CONFIG_HAVE_DEBUG_STACKOVERFLOW not in final .config
Requested value:  CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
Actual value:     

Value requested for CONFIG_DEBUG_STACKOVERFLOW not in final .config
Requested value:  # CONFIG_DEBUG_STACKOVERFLOW is not set
Actual value:     

Value requested for CONFIG_HAVE_FUNCTION_GRAPH_TRACER not in final .config
Requested value:  CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
Actual value:     

Value requested for CONFIG_HAVE_FUNCTION_GRAPH_RETVAL not in final .config
Requested value:  CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y
Actual value:     

Value requested for CONFIG_DRM_KUNIT_TEST not in final .config
Requested value:  CONFIG_DRM_KUNIT_TEST=m
Actual value:     

Value requested for CONFIG_DRM_XE_WERROR not in final .config
Requested value:  CONFIG_DRM_XE_WERROR=y
Actual value:     

Value requested for CONFIG_DRM_XE_DEBUG not in final .config
Requested value:  CONFIG_DRM_XE_DEBUG=y
Actual value:     

Value requested for CONFIG_DRM_XE_DEBUG_MEM not in final .config
Requested value:  CONFIG_DRM_XE_DEBUG_MEM=y
Actual value:     

Value requested for CONFIG_DRM_XE_KUNIT_TEST not in final .config
Requested value:  CONFIG_DRM_XE_KUNIT_TEST=m
Actual value:     

++ nproc
+ make -j48 ARCH=i386 olddefconfig
  GEN     Makefile

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]
#
# configuration written to .config
#
++ nproc
+ make -j48 ARCH=i386
  SYNC    include/config/auto.conf.cmd
  GEN     Makefile

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]
  GEN     Makefile
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.h
  UPD     include/generated/uapi/linux/version.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctls.h
  WRAP    arch/x86/include/generated/uapi/asm/ipcbuf.h
  WRAP    arch/x86/include/generated/uapi/asm/param.h
  WRAP    arch/x86/include/generated/uapi/asm/poll.h
  WRAP    arch/x86/include/generated/uapi/asm/resource.h
  WRAP    arch/x86/include/generated/uapi/asm/socket.h
  WRAP    arch/x86/include/generated/uapi/asm/sockios.h
  WRAP    arch/x86/include/generated/uapi/asm/termbits.h
  WRAP    arch/x86/include/generated/uapi/asm/termios.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_32.h
  WRAP    arch/x86/include/generated/uapi/asm/types.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_64.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_x32.h
  UPD     include/generated/compile.h
  WRAP    arch/x86/include/generated/asm/early_ioremap.h
  WRAP    arch/x86/include/generated/asm/mcs_spinlock.h
  WRAP    arch/x86/include/generated/asm/irq_regs.h
  HOSTCC  arch/x86/tools/relocs_32.o
  WRAP    arch/x86/include/generated/asm/kmap_size.h
  WRAP    arch/x86/include/generated/asm/local64.h
  HOSTCC  arch/x86/tools/relocs_64.o
  HOSTCC  arch/x86/tools/relocs_common.o
  WRAP    arch/x86/include/generated/asm/mmiowb.h
  WRAP    arch/x86/include/generated/asm/module.lds.h
  WRAP    arch/x86/include/generated/asm/rwonce.h
  WRAP    arch/x86/include/generated/asm/unaligned.h
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/sorttable
  HOSTCC  scripts/asn1_compiler
  HOSTCC  scripts/selinux/mdp/mdp
  HOSTCC  scripts/selinux/genheaders/genheaders
  HOSTLD  arch/x86/tools/relocs
  UPD     include/config/kernel.release
  UPD     include/generated/utsrelease.h
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  CC      scripts/mod/devicetable-offsets.s
  UPD     scripts/mod/devicetable-offsets.h
  MKELF   scripts/mod/elfconfig.h
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/file2alias.o
  HOSTCC  scripts/mod/sumversion.o
  HOSTCC  scripts/mod/symsearch.o
  HOSTLD  scripts/mod/modpost
  CC      kernel/bounds.s
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-arch-fallback.h
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-instrumented.h
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-long.h
  UPD     include/generated/timeconst.h
  UPD     include/generated/bounds.h
  CC      arch/x86/kernel/asm-offsets.s
  UPD     include/generated/asm-offsets.h
  CALL    /workspace/kernel/scripts/checksyscalls.sh
  LDS     scripts/module.lds
  HOSTCC  usr/gen_init_cpio
  CC      ipc/util.o
  CC      ipc/msgutil.o
  CC      ipc/msg.o
  CC      init/main.o
  CC      ipc/sem.o
  CC      ipc/shm.o
  CC      ipc/syscall.o
  CC      ipc/ipc_sysctl.o
  CC      io_uring/io_uring.o
  CC      init/do_mounts.o
  CC      certs/system_keyring.o
  UPD     init/utsversion-tmp.h
  CC      ipc/mqueue.o
  CC      io_uring/opdef.o
  CC      ipc/namespace.o
  CC      init/do_mounts_initrd.o
  CC      block/bdev.o
  CC      arch/x86/video/video-common.o
  AS      arch/x86/lib/atomic64_cx8_32.o
  CC      mm/filemap.o
  CC      io_uring/kbuf.o
  CC      ipc/mq_sysctl.o
  CC      arch/x86/pci/i386.o
  CC      arch/x86/power/cpu.o
  CC      block/fops.o
  CC      arch/x86/pci/init.o
  AR      virt/lib/built-in.a
  CC      block/partitions/core.o
  CC      arch/x86/realmode/init.o
  CC      lib/math/div64.o
  CC      security/integrity/iint.o
  GEN     security/selinux/flask.h security/selinux/av_permissions.h
  AR      drivers/cache/built-in.a
  CC      security/keys/gc.o
  CC      net/core/sock.o
  CC      sound/core/seq/seq.o
  AR      sound/i2c/other/built-in.a
  CC      arch/x86/events/amd/core.o
  AR      virt/built-in.a
  AR      sound/drivers/opl3/built-in.a
  CC      security/selinux/avc.o
  CC      arch/x86/kernel/fpu/init.o
  CC      fs/notify/dnotify/dnotify.o
  AR      sound/isa/ad1816a/built-in.a
  AR      sound/pci/ac97/built-in.a
  CC      lib/crypto/mpi/generic_mpih-lshift.o
  CC      arch/x86/mm/pat/set_memory.o
  AS      arch/x86/lib/checksum_32.o
  AR      drivers/irqchip/built-in.a
  CC      lib/crypto/mpi/generic_mpih-mul1.o
  AR      sound/i2c/built-in.a
  AR      sound/isa/ad1848/built-in.a
  AR      sound/drivers/opl4/built-in.a
  CC      arch/x86/entry/vdso/vma.o
  AR      sound/pci/ali5451/built-in.a
  AR      sound/isa/cs423x/built-in.a
  CC      kernel/sched/core.o
  AR      sound/drivers/mpu401/built-in.a
  CC      arch/x86/lib/cmdline.o
  AR      sound/drivers/vx/built-in.a
  AR      drivers/bus/mhi/built-in.a
  AR      sound/pci/asihpi/built-in.a
  AR      drivers/bus/built-in.a
  AR      sound/isa/es1688/built-in.a
  AR      sound/pci/au88x0/built-in.a
  AR      sound/drivers/pcsp/built-in.a
  AR      sound/drivers/built-in.a
  CC      crypto/asymmetric_keys/asymmetric_type.o
  AR      drivers/pwm/built-in.a
  AR      sound/pci/aw2/built-in.a
  AR      sound/isa/galaxy/built-in.a
  CC      arch/x86/kernel/cpu/mce/core.o
  CC      lib/math/gcd.o
  AR      sound/isa/gus/built-in.a
  CC      lib/math/lcm.o
  AR      sound/pci/ctxfi/built-in.a
  CC      drivers/pci/msi/pcidev_msi.o
  AR      sound/pci/ca0106/built-in.a
  AR      sound/isa/msnd/built-in.a
  AR      sound/pci/cs46xx/built-in.a
  AR      sound/isa/opti9xx/built-in.a
  AR      sound/pci/cs5535audio/built-in.a
  CC      sound/core/seq/seq_lock.o
  AR      sound/isa/sb/built-in.a
  AR      sound/pci/lola/built-in.a
  AS      arch/x86/lib/cmpxchg8b_emu.o
  CC      lib/math/int_log.o
  AR      sound/isa/wavefront/built-in.a
  AR      sound/pci/lx6464es/built-in.a
  AR      sound/isa/wss/built-in.a
  CC      arch/x86/lib/cpu.o
  AR      sound/pci/echoaudio/built-in.a
  AR      sound/isa/built-in.a
  AR      sound/pci/emu10k1/built-in.a
  AR      sound/pci/hda/built-in.a
  CC      sound/core/seq/seq_clientmgr.o
  CC      lib/math/int_pow.o
  CC [M]  sound/pci/hda/hda_bind.o
  GEN     usr/initramfs_data.cpio
  COPY    usr/initramfs_inc_data
  AS      usr/initramfs_data.o
  CC      lib/math/int_sqrt.o
  AR      usr/built-in.a
  CC      arch/x86/kernel/fpu/bugs.o
  HOSTCC  certs/extract-cert
  CC [M]  sound/pci/hda/hda_codec.o
  CC      crypto/api.o
  CC      lib/math/reciprocal_div.o
  CC      arch/x86/lib/delay.o
  CC      arch/x86/kernel/fpu/core.o
  CC      lib/math/rational.o
  CC      block/partitions/msdos.o
  CC      init/initramfs.o
  AS      arch/x86/realmode/rm/header.o
  CC      init/calibrate.o
  CC      block/partitions/efi.o
  CC      lib/crypto/mpi/generic_mpih-mul2.o
  AR      arch/x86/video/built-in.a
  AS      arch/x86/realmode/rm/trampoline_32.o
  AS      arch/x86/realmode/rm/stack.o
  AR      sound/ppc/built-in.a
  CC      lib/crypto/mpi/generic_mpih-mul3.o
  AS      arch/x86/lib/getuser.o
  AR      sound/arm/built-in.a
  AS      arch/x86/realmode/rm/reboot.o
  GEN     arch/x86/lib/inat-tables.c
  AS      arch/x86/realmode/rm/wakeup_asm.o
  CERT    certs/x509_certificate_list
  CERT    certs/signing_key.x509
  AS      certs/system_certificates.o
  CC      arch/x86/pci/pcbios.o
  CC      security/integrity/integrity_audit.o
  CC      kernel/sched/fair.o
  CC      arch/x86/realmode/rm/wakemain.o
  CC      arch/x86/realmode/rm/video-mode.o
  AR      certs/built-in.a
  AR      arch/x86/entry/vsyscall/built-in.a
  AS      arch/x86/entry/entry.o
  AS      arch/x86/entry/entry_32.o
  CC      arch/x86/lib/insn-eval.o
  CC      crypto/asymmetric_keys/restrict.o
  AR      drivers/idle/built-in.a
  CC      drivers/pci/msi/api.o
  CC      init/init_task.o
  CC      drivers/video/console/dummycon.o
  CC      security/keys/key.o
  CC      security/selinux/hooks.o
  AR      fs/notify/dnotify/built-in.a
  CC      drivers/video/console/vgacon.o
  CC      arch/x86/entry/vdso/extable.o
  AR      drivers/char/ipmi/built-in.a
  CC      fs/notify/inotify/inotify_fsnotify.o
  LDS     arch/x86/entry/vdso/vdso32/vdso32.lds
  AS      arch/x86/realmode/rm/copy.o
  AS      arch/x86/realmode/rm/bioscall.o
  CC      arch/x86/realmode/rm/regs.o
  CC      arch/x86/power/hibernate_32.o
  CC      drivers/pci/msi/msi.o
  CC      drivers/acpi/acpica/dsargs.o
  CC      drivers/pnp/pnpacpi/core.o
  CC      arch/x86/realmode/rm/video-vga.o
  AR      lib/math/built-in.a
  AR      drivers/amba/built-in.a
  CC      drivers/pnp/core.o
  CC      security/keys/keyring.o
  CC      arch/x86/realmode/rm/video-vesa.o
  CC      drivers/acpi/acpica/dscontrol.o
  CC      security/selinux/selinuxfs.o
  CC      drivers/pnp/pnpacpi/rsparser.o
  AR      drivers/clk/actions/built-in.a
  CC      arch/x86/realmode/rm/video-bios.o
  AR      drivers/clk/analogbits/built-in.a
  CC      arch/x86/events/amd/lbr.o
  AR      drivers/clk/bcm/built-in.a
  AR      drivers/clk/imgtec/built-in.a
  AR      drivers/clk/imx/built-in.a
  CC      security/keys/keyctl.o
  AR      drivers/clk/ingenic/built-in.a
  CC      security/selinux/netlink.o
  CC      crypto/asymmetric_keys/signature.o
  CC      security/keys/permission.o
  CC      crypto/cipher.o
  PASYMS  arch/x86/realmode/rm/pasyms.h
  CC      lib/crypto/mpi/generic_mpih-rshift.o
  LDS     arch/x86/realmode/rm/realmode.lds
  AR      drivers/clk/mediatek/built-in.a
  AR      drivers/clk/microchip/built-in.a
  LD      arch/x86/realmode/rm/realmode.elf
  CC      security/keys/process_keys.o
  AR      drivers/clk/mstar/built-in.a
  CC      arch/x86/entry/syscall_32.o
  RELOCS  arch/x86/realmode/rm/realmode.relocs
  OBJCOPY arch/x86/realmode/rm/realmode.bin
  AS      arch/x86/realmode/rmpiggy.o
  CC      fs/nfs_common/nfsacl.o
  AR      drivers/clk/mvebu/built-in.a
  AR      drivers/clk/ralink/built-in.a
  AR      arch/x86/realmode/built-in.a
  CC      fs/nfs_common/grace.o
  AR      drivers/clk/renesas/built-in.a
  AR      drivers/clk/socfpga/built-in.a
  CC      fs/notify/inotify/inotify_user.o
  AR      drivers/clk/sophgo/built-in.a
  AR      drivers/clk/sprd/built-in.a
  CC      arch/x86/mm/pat/memtype.o
  CC      arch/x86/pci/mmconfig_32.o
  AR      drivers/clk/starfive/built-in.a
  AR      security/integrity/built-in.a
  CC      arch/x86/pci/direct.o
  AR      drivers/clk/sunxi-ng/built-in.a
  CC      lib/zlib_inflate/inffast.o
  AR      drivers/clk/ti/built-in.a
  CC      drivers/acpi/acpica/dsdebug.o
  CC      drivers/pnp/card.o
  AR      drivers/clk/versatile/built-in.a
  CC      arch/x86/kernel/cpu/mce/severity.o
  CC      lib/zlib_inflate/inflate.o
  AR      drivers/clk/xilinx/built-in.a
  CC      arch/x86/kernel/cpu/mce/genpool.o
  CC      crypto/compress.o
  CC      block/bio.o
  AR      drivers/clk/built-in.a
  AS      arch/x86/power/hibernate_asm_32.o
  CC      arch/x86/lib/insn.o
  CC      sound/core/seq/seq_memory.o
  CC      arch/x86/power/hibernate.o
  CC      init/version.o
  CC      lib/crypto/memneq.o
  AS      arch/x86/entry/vdso/vdso32/note.o
  CC      block/elevator.o
  AS      arch/x86/entry/vdso/vdso32/system_call.o
  CC      arch/x86/pci/mmconfig-shared.o
  AR      ipc/built-in.a
  AR      block/partitions/built-in.a
  CC      arch/x86/pci/fixup.o
  AR      fs/notify/fanotify/built-in.a
  AS      arch/x86/entry/vdso/vdso32/sigreturn.o
  CC      arch/x86/events/amd/ibs.o
  CC      arch/x86/events/amd/uncore.o
  CC      arch/x86/entry/vdso/vdso32/vclock_gettime.o
  CC      arch/x86/kernel/fpu/regset.o
  CC      crypto/asymmetric_keys/public_key.o
  CC      drivers/pci/pcie/portdrv.o
  CC      drivers/acpi/acpica/dsfield.o
  AR      init/built-in.a
  CC      lib/crypto/mpi/generic_mpih-sub1.o
  CC      lib/crypto/mpi/generic_mpih-add1.o
  AR      drivers/video/console/built-in.a
  CC      drivers/pci/msi/irqdomain.o
  CC      drivers/video/backlight/backlight.o
  CC      arch/x86/lib/kaslr.o
  CC      drivers/pci/pcie/rcec.o
  AR      sound/pci/ice1712/built-in.a
  AR      sound/pci/korg1212/built-in.a
  AR      sound/pci/mixart/built-in.a
  CC      security/keys/request_key.o
  CC      security/keys/request_key_auth.o
  CC      drivers/acpi/acpica/dsinit.o
  CC      drivers/acpi/acpica/dsmethod.o
  CC      drivers/pci/hotplug/pci_hotplug_core.o
  CC      lib/crypto/utils.o
  AR      drivers/pnp/pnpacpi/built-in.a
  CC      drivers/pci/hotplug/acpi_pcihp.o
  CC      io_uring/rsrc.o
  CC      drivers/pnp/driver.o
  AR      fs/nfs_common/built-in.a
  CC      lib/zlib_inflate/infutil.o
  CC      lib/zlib_inflate/inftrees.o
  CC      arch/x86/lib/memcpy_32.o
  CC      arch/x86/pci/acpi.o
  CC      block/blk-core.o
  ASN.1   crypto/asymmetric_keys/x509.asn1.[ch]
  CC      block/blk-sysfs.o
  AS      arch/x86/lib/memmove_32.o
  CC      drivers/pnp/resource.o
  CC      arch/x86/lib/misc.o
  AR      arch/x86/power/built-in.a
  CC      lib/crypto/chacha.o
  CC      arch/x86/lib/pc-conf-reg.o
  CC      crypto/algapi.o
  CC      drivers/pnp/manager.o
  CC      lib/zlib_inflate/inflate_syms.o
  CC      arch/x86/mm/pat/memtype_interval.o
  AR      fs/notify/inotify/built-in.a
  CC      fs/notify/fsnotify.o
  CC      arch/x86/kernel/cpu/mce/intel.o
  CC      arch/x86/entry/vdso/vdso32/vgetcpu.o
  CC      arch/x86/pci/legacy.o
  CC      sound/core/seq/seq_queue.o
  ASN.1   crypto/asymmetric_keys/x509_akid.asn1.[ch]
  CC      lib/crypto/aes.o
  CC      crypto/asymmetric_keys/x509_loader.o
  CC [M]  sound/pci/hda/hda_jack.o
  CC      crypto/asymmetric_keys/x509_public_key.o
  CC      security/keys/user_defined.o
  CC      lib/crypto/mpi/ec.o
  CC      lib/crypto/arc4.o
  HOSTCC  arch/x86/entry/vdso/vdso2c
  AS      arch/x86/lib/putuser.o
  CC      fs/notify/notification.o
  CC      drivers/acpi/acpica/dsmthdat.o
  CC      lib/crypto/gf128mul.o
  AS      arch/x86/lib/retpoline.o
  CC      arch/x86/lib/string_32.o
  CC      crypto/scatterwalk.o
  CC      block/blk-flush.o
  AR      drivers/pci/controller/dwc/built-in.a
  CC      block/blk-settings.o
  CC      arch/x86/kernel/fpu/signal.o
  AR      drivers/pci/controller/mobiveil/built-in.a
  CC      drivers/pci/pcie/aspm.o
  AR      drivers/pci/msi/built-in.a
  AR      drivers/pci/controller/built-in.a
  AR      sound/pci/nm256/built-in.a
  CC      drivers/pci/pcie/pme.o
  CC      arch/x86/lib/strstr_32.o
  AR      drivers/pci/switch/built-in.a
  AR      sound/pci/oxygen/built-in.a
  CC      arch/x86/lib/usercopy.o
  AR      sound/pci/pcxhr/built-in.a
  CC      arch/x86/kernel/cpu/mtrr/mtrr.o
  CC      crypto/proc.o
  CC      arch/x86/lib/usercopy_32.o
  AR      lib/zlib_inflate/built-in.a
  AR      drivers/video/backlight/built-in.a
  CC      lib/zlib_deflate/deflate.o
  AR      drivers/video/fbdev/core/built-in.a
  AR      drivers/video/fbdev/omap/built-in.a
  CC      arch/x86/kernel/cpu/mtrr/if.o
  CC      arch/x86/lib/msr-smp.o
  CC      arch/x86/lib/cache-smp.o
  AR      drivers/video/fbdev/omap2/omapfb/dss/built-in.a
  CC      security/selinux/nlmsgtab.o
  AR      drivers/video/fbdev/omap2/omapfb/displays/built-in.a
  AR      drivers/video/fbdev/omap2/omapfb/built-in.a
  CC      security/keys/proc.o
  AR      drivers/video/fbdev/omap2/built-in.a
  AR      drivers/pci/hotplug/built-in.a
  AR      arch/x86/events/amd/built-in.a
  CC      arch/x86/entry/vdso/vdso32-setup.o
  AR      drivers/video/fbdev/built-in.a
  CC      security/keys/sysctl.o
  CC      lib/crypto/blake2s.o
  CC      arch/x86/events/intel/core.o
  CC      drivers/acpi/acpica/dsobject.o
  CC      drivers/video/aperture.o
  CC      arch/x86/lib/msr.o
  AS      arch/x86/lib/msr-reg.o
  AR      arch/x86/mm/pat/built-in.a
  CC      arch/x86/mm/init.o
  CC      arch/x86/entry/common.o
  CC      net/core/request_sock.o
  CC      arch/x86/lib/msr-reg-export.o
  CC      arch/x86/kernel/cpu/mce/amd.o
  CC      block/blk-ioc.o
  ASN.1   crypto/asymmetric_keys/pkcs7.asn1.[ch]
  CC      drivers/video/cmdline.o
  CC      crypto/asymmetric_keys/pkcs7_trust.o
  CC      drivers/video/nomodeset.o
  CC      arch/x86/pci/irq.o
  CC      mm/mempool.o
  CC      lib/crypto/blake2s-generic.o
  CC      drivers/acpi/acpica/dsopcode.o
  CC      crypto/asymmetric_keys/pkcs7_verify.o
  CC      fs/notify/group.o
  CC      drivers/pnp/support.o
  VDSO    arch/x86/entry/vdso/vdso32.so.dbg
  CC      drivers/pci/access.o
  CC      sound/core/seq/seq_fifo.o
  OBJCOPY arch/x86/entry/vdso/vdso32.so
  VDSO2C  arch/x86/entry/vdso/vdso-image-32.c
  CC      arch/x86/entry/vdso/vdso-image-32.o
  CC      drivers/pnp/interface.o
  CC      lib/zlib_deflate/deftree.o
  CC      arch/x86/kernel/cpu/mce/threshold.o
  CC      fs/iomap/trace.o
  CC      lib/lzo/lzo1x_compress.o
  CC      fs/iomap/iter.o
  CC      net/ethernet/eth.o
  CC [M]  sound/pci/hda/hda_auto_parser.o
  CC      arch/x86/kernel/cpu/mtrr/generic.o
  AR      net/802/built-in.a
  CC      fs/iomap/buffered-io.o
  CC      crypto/aead.o
  AR      sound/sh/built-in.a
  CC      crypto/geniv.o
  CC      drivers/video/hdmi.o
  CC      block/blk-map.o
  CC [M]  sound/pci/hda/hda_sysfs.o
  CC      lib/crypto/mpi/mpicoder.o
  CC      drivers/pnp/quirks.o
  CC      security/keys/keyctl_pkey.o
  CC      crypto/lskcipher.o
  AR      arch/x86/entry/vdso/built-in.a
  AR      sound/synth/emux/built-in.a
  AR      sound/synth/built-in.a
  CC      arch/x86/kernel/fpu/xstate.o
  CC      net/core/skbuff.o
  CC      block/blk-merge.o
  CC      drivers/acpi/acpica/dspkginit.o
  CC      lib/lz4/lz4_decompress.o
  CC      crypto/asymmetric_keys/x509.asn1.o
  CC      arch/x86/events/intel/bts.o
  CC      crypto/asymmetric_keys/x509_akid.asn1.o
  CC      crypto/asymmetric_keys/x509_cert_parser.o
  CC      fs/notify/mark.o
  CC      net/sched/sch_generic.o
  AS      arch/x86/entry/thunk.o
  AR      drivers/pci/pcie/built-in.a
  CC      net/sched/sch_mq.o
  CC      security/selinux/netif.o
  AR      arch/x86/entry/built-in.a
  CC      security/selinux/netnode.o
  CC      lib/lzo/lzo1x_decompress_safe.o
  CC      io_uring/notif.o
  AS      arch/x86/lib/hweight.o
  AR      arch/x86/crypto/built-in.a
  CC      sound/core/seq/seq_prioq.o
  CC      sound/core/seq/seq_timer.o
  CC      lib/zlib_deflate/deflate_syms.o
  CC      arch/x86/lib/iomem.o
  CC      sound/core/seq/seq_system.o
  CC      mm/oom_kill.o
  CC      sound/core/seq/seq_ports.o
  CC      fs/notify/fdinfo.o
  CC      arch/x86/mm/init_32.o
  CC      net/sched/sch_frag.o
  CC      drivers/acpi/acpica/dsutils.o
  CC      drivers/pci/bus.o
  AR      security/keys/built-in.a
  CC      security/commoncap.o
  CC      fs/iomap/direct-io.o
  AR      drivers/acpi/pmic/built-in.a
  CC      crypto/asymmetric_keys/pkcs7.asn1.o
  CC      arch/x86/pci/common.o
  CC      security/lsm_syscalls.o
  AR      lib/zlib_deflate/built-in.a
  CC      arch/x86/lib/atomic64_32.o
  CC      crypto/asymmetric_keys/pkcs7_parser.o
  CC      drivers/pnp/system.o
  CC      arch/x86/kernel/cpu/microcode/core.o
  AR      drivers/video/built-in.a
  AR      lib/lzo/built-in.a
  CC      net/sched/sch_api.o
  CC      net/core/datagram.o
  CC      drivers/dma/dw/core.o
  CC      arch/x86/lib/inat.o
  CC      lib/crypto/mpi/mpi-add.o
  CC      net/sched/sch_blackhole.o
  CC      net/core/stream.o
  CC      net/core/scm.o
  CC      arch/x86/kernel/cpu/mtrr/cleanup.o
  CC      drivers/dma/dw/dw.o
  CC [M]  sound/pci/hda/hda_controller.o
  CC      drivers/dma/hsu/hsu.o
  AR      arch/x86/lib/built-in.a
  CC      drivers/acpi/acpica/dswexec.o
  CC      drivers/dma/dw/idma32.o
  AR      arch/x86/lib/lib.a
  AR      drivers/dma/idxd/built-in.a
  CC      security/selinux/netport.o
  AR      drivers/dma/mediatek/built-in.a
  AR      drivers/dma/qcom/built-in.a
  AR      drivers/dma/ti/built-in.a
  CC      sound/core/seq/seq_info.o
  CC      mm/fadvise.o
  CC      arch/x86/kernel/cpu/mtrr/amd.o
  CC      arch/x86/events/intel/ds.o
  AR      arch/x86/kernel/cpu/mce/built-in.a
  CC      fs/iomap/fiemap.o
  CC      mm/maccess.o
  AR      drivers/dma/xilinx/built-in.a
  CC      security/min_addr.o
  CC      net/sched/cls_api.o
  AR      fs/notify/built-in.a
  CC      fs/quota/dquot.o
  AR      arch/x86/kernel/fpu/built-in.a
  AR      drivers/pnp/built-in.a
  CC      net/sched/act_api.o
  CC      net/core/gen_stats.o
  AR      lib/lz4/built-in.a
  CC      security/security.o
  AR      net/ethernet/built-in.a
  AR      crypto/asymmetric_keys/built-in.a
  CC      fs/proc/task_mmu.o
  CC      crypto/skcipher.o
  CC      fs/proc/inode.o
  CC      drivers/pci/probe.o
  CC      arch/x86/mm/fault.o
  CC      drivers/acpi/acpica/dswload.o
  CC      fs/proc/root.o
  CC      security/selinux/status.o
  CC      kernel/sched/build_policy.o
  CC      arch/x86/kernel/cpu/microcode/intel.o
  CC      lib/crypto/mpi/mpi-bit.o
  CC      security/lsm_audit.o
  CC      io_uring/tctx.o
  CC      arch/x86/pci/early.o
  CC      net/sched/sch_fifo.o
  CC      arch/x86/kernel/cpu/mtrr/cyrix.o
  CC      sound/core/seq/seq_dummy.o
  CC      drivers/dma/dw/acpi.o
  CC      arch/x86/kernel/cpu/mtrr/centaur.o
  CC      drivers/pci/host-bridge.o
  CC      block/blk-timeout.o
  CC      fs/proc/base.o
  CC      fs/proc/generic.o
  AR      drivers/dma/hsu/built-in.a
  CC      arch/x86/kernel/acpi/boot.o
  CC      fs/proc/array.o
  CC      arch/x86/kernel/apic/apic.o
  CC      security/device_cgroup.o
  CC      mm/page-writeback.o
  CC      drivers/acpi/acpica/dswload2.o
  CC      mm/folio-compat.o
  CC      mm/readahead.o
  CC      drivers/dma/dmaengine.o
  CC      fs/iomap/seek.o
  CC      net/core/gen_estimator.o
  CC      mm/swap.o
  CC      mm/truncate.o
  CC      net/core/net_namespace.o
  CC      arch/x86/kernel/acpi/sleep.o
  CC      lib/crypto/mpi/mpi-cmp.o
  CC      block/blk-lib.o
  CC      arch/x86/pci/bus_numa.o
  CC      arch/x86/pci/amd_bus.o
  AR      sound/core/seq/built-in.a
  AR      arch/x86/platform/atom/built-in.a
  CC      arch/x86/kernel/cpu/mtrr/legacy.o
  CC      net/core/secure_seq.o
  CC      sound/core/sound.o
  AR      arch/x86/platform/ce4100/built-in.a
  CC      arch/x86/kernel/cpu/microcode/amd.o
  CC      drivers/acpi/acpica/dswscope.o
  CC      arch/x86/platform/efi/memmap.o
  AR      arch/x86/platform/geode/built-in.a
  AR      drivers/dma/dw/built-in.a
  CC      drivers/pci/remove.o
  CC [M]  sound/pci/hda/hda_proc.o
  CC      net/core/flow_dissector.o
  CC      net/netlink/af_netlink.o
  CC      mm/vmscan.o
  CC      fs/proc/fd.o
  CC      crypto/seqiv.o
  CC      io_uring/filetable.o
  CC      security/selinux/ss/ebitmap.o
  CC      mm/shrinker.o
  CC      fs/proc/proc_tty.o
  CC      fs/proc/cmdline.o
  AR      arch/x86/kernel/cpu/mtrr/built-in.a
  CC      arch/x86/mm/ioremap.o
  CC      fs/iomap/swapfile.o
  CC      drivers/acpi/acpica/dswstate.o
  AR      sound/pci/riptide/built-in.a
  CC      drivers/acpi/acpica/evevent.o
  CC      arch/x86/events/intel/knc.o
  CC      arch/x86/events/intel/lbr.o
  CC      net/sched/cls_cgroup.o
  CC      lib/crypto/mpi/mpi-sub-ui.o
  CC      net/core/sysctl_net_core.o
  AS      arch/x86/kernel/acpi/wakeup_32.o
  CC      sound/core/init.o
  CC      drivers/pci/pci.o
  CC      drivers/pci/pci-driver.o
  CC      lib/crypto/mpi/mpi-div.o
  CC      drivers/pci/search.o
  CC      arch/x86/kernel/acpi/cstate.o
  CC      mm/shmem.o
  CC      fs/proc/consoles.o
  CC      arch/x86/events/intel/p4.o
  AR      arch/x86/pci/built-in.a
  CC      arch/x86/events/intel/p6.o
  CC      net/sched/ematch.o
  CC      drivers/pci/rom.o
  CC      block/blk-mq.o
  CC      io_uring/rw.o
  CC      arch/x86/kernel/cpu/cacheinfo.o
  AR      arch/x86/kernel/cpu/microcode/built-in.a
  CC      arch/x86/kernel/cpu/scattered.o
  CC      sound/core/memory.o
  CC      drivers/acpi/acpica/evgpe.o
  CC      drivers/dma/virt-dma.o
  CC      fs/quota/quota_v2.o
  CC      arch/x86/platform/efi/quirks.o
  CC      crypto/echainiv.o
  CC      fs/proc/cpuinfo.o
  AR      sound/pci/rme9652/built-in.a
  AR      sound/pci/trident/built-in.a
  AR      sound/pci/ymfpci/built-in.a
  AR      sound/pci/vx222/built-in.a
  CC      fs/proc/devices.o
  CC [M]  sound/pci/hda/hda_hwdep.o
  CC      lib/crypto/mpi/mpi-inv.o
  AR      fs/iomap/built-in.a
  CC      mm/util.o
  CC      drivers/pci/setup-res.o
  CC      arch/x86/platform/efi/efi.o
  AR      arch/x86/kernel/acpi/built-in.a
  CC      arch/x86/mm/extable.o
  CC      fs/quota/quota_tree.o
  CC      mm/mmzone.o
  CC      io_uring/net.o
  CC      drivers/acpi/acpica/evgpeblk.o
  CC      arch/x86/events/intel/pt.o
  CC      crypto/ahash.o
  CC      fs/kernfs/mount.o
  CC      arch/x86/events/intel/uncore.o
  CC      arch/x86/kernel/apic/apic_common.o
  CC      fs/sysfs/file.o
  CC      fs/kernfs/inode.o
  CC      drivers/dma/acpi-dma.o
  CC      fs/proc/interrupts.o
  CC      fs/devpts/inode.o
  CC      crypto/shash.o
  CC      security/selinux/ss/hashtab.o
  CC      arch/x86/events/intel/uncore_nhmex.o
  CC      sound/core/control.o
  CC      kernel/sched/build_utility.o
  AR      arch/x86/platform/iris/built-in.a
  CC      kernel/locking/mutex.o
  CC      lib/zstd/zstd_decompress_module.o
  CC      arch/x86/kernel/apic/apic_noop.o
  CC      kernel/power/qos.o
  CC      arch/x86/kernel/apic/ipi.o
  CC      kernel/power/main.o
  CC      drivers/acpi/acpica/evgpeinit.o
  CC      lib/zstd/decompress/huf_decompress.o
  CC      fs/sysfs/dir.o
  CC      lib/crypto/mpi/mpi-mod.o
  CC      arch/x86/platform/intel/iosf_mbi.o
  CC      drivers/acpi/dptf/int340x_thermal.o
  CC [M]  sound/pci/hda/patch_hdmi.o
  AR      net/sched/built-in.a
  CC      mm/vmstat.o
  CC      arch/x86/platform/efi/efi_32.o
  CC      fs/quota/quota.o
  CC      mm/backing-dev.o
  CC [M]  sound/pci/hda/hda_eld.o
  CC      arch/x86/kernel/apic/vector.o
  CC      security/selinux/ss/symtab.o
  CC      fs/proc/loadavg.o
  CC      security/selinux/ss/sidtab.o
  CC      net/netlink/genetlink.o
  CC      net/core/dev.o
  CC      fs/kernfs/dir.o
  CC      lib/crypto/sha1.o
  CC      arch/x86/kernel/cpu/topology_common.o
  CC      arch/x86/mm/mmap.o
  CC      drivers/acpi/acpica/evgpeutil.o
  CC      lib/crypto/sha256.o
  CC      drivers/pci/irq.o
  CC      arch/x86/events/intel/uncore_snb.o
  AR      drivers/dma/built-in.a
  CC      fs/kernfs/file.o
  CC      net/core/dev_addr_lists.o
  CC      arch/x86/kernel/apic/init.o
  CC      arch/x86/events/intel/uncore_snbep.o
  CC      io_uring/poll.o
  AR      drivers/acpi/dptf/built-in.a
  AR      fs/devpts/built-in.a
  CC      io_uring/uring_cmd.o
  CC      arch/x86/events/intel/uncore_discovery.o
  AS      arch/x86/platform/efi/efi_stub_32.o
  CC      fs/sysfs/symlink.o
  AR      net/bpf/built-in.a
  AR      arch/x86/platform/intel-mid/built-in.a
  CC      net/core/dst.o
  CC      net/core/netevent.o
  CC      lib/crypto/mpi/mpi-mul.o
  CC      crypto/akcipher.o
  AR      arch/x86/platform/intel/built-in.a
  CC      net/netlink/policy.o
  CC      mm/mm_init.o
  CC      arch/x86/kernel/kprobes/core.o
  CC      arch/x86/events/intel/cstate.o
  CC      drivers/acpi/acpica/evglock.o
  CC      fs/proc/meminfo.o
  CC      arch/x86/platform/efi/runtime-map.o
  CC      arch/x86/kernel/cpu/topology_ext.o
  CC      arch/x86/kernel/kprobes/opt.o
  CC      arch/x86/mm/pgtable.o
  CC      arch/x86/kernel/cpu/topology_amd.o
  LDS     arch/x86/kernel/vmlinux.lds
  CC      crypto/sig.o
  AS      arch/x86/kernel/head_32.o
  CC      kernel/power/console.o
  CC      fs/sysfs/mount.o
  CC      fs/proc/stat.o
  CC      kernel/locking/semaphore.o
  CC      net/ethtool/ioctl.o
  AR      drivers/soc/apple/built-in.a
  AR      drivers/soc/aspeed/built-in.a
  CC      net/ethtool/common.o
  CC      sound/core/misc.o
  AR      drivers/soc/bcm/built-in.a
  CC      drivers/acpi/acpica/evhandler.o
  AR      drivers/soc/fsl/built-in.a
  CC      net/ethtool/netlink.o
  AR      drivers/soc/fujitsu/built-in.a
  AR      drivers/soc/hisilicon/built-in.a
  CC      drivers/pci/vpd.o
  CC      fs/quota/kqid.o
  CC      lib/crypto/mpi/mpih-cmp.o
  CC      mm/percpu.o
  AR      drivers/soc/imx/built-in.a
  AR      drivers/soc/ixp4xx/built-in.a
  AR      drivers/soc/loongson/built-in.a
  AR      drivers/soc/mediatek/built-in.a
  AR      drivers/soc/microchip/built-in.a
  AR      drivers/soc/nuvoton/built-in.a
  CC      lib/zstd/decompress/zstd_ddict.o
  AR      drivers/soc/pxa/built-in.a
  AR      drivers/soc/amlogic/built-in.a
  CC      fs/netfs/buffered_read.o
  CC      kernel/printk/printk.o
  AR      drivers/soc/qcom/built-in.a
  AR      drivers/soc/renesas/built-in.a
  CC      block/blk-mq-tag.o
  CC      kernel/printk/conopt.o
  CC      block/blk-stat.o
  CC      fs/ext4/balloc.o
  CC      arch/x86/kernel/cpu/common.o
  AR      drivers/soc/rockchip/built-in.a
  CC      fs/ext4/bitmap.o
  AR      drivers/soc/sunxi/built-in.a
  CC      net/netfilter/core.o
  AR      drivers/soc/ti/built-in.a
  AR      drivers/soc/xilinx/built-in.a
  AR      drivers/soc/built-in.a
  CC      security/selinux/ss/avtab.o
  CC      lib/zstd/decompress/zstd_decompress.o
  CC      lib/zstd/decompress/zstd_decompress_block.o
  CC      fs/kernfs/symlink.o
  CC      fs/ext4/block_validity.o
  CC      block/blk-mq-sysfs.o
  CC      lib/zstd/zstd_common_module.o
  CC      drivers/pci/setup-bus.o
  AR      arch/x86/platform/efi/built-in.a
  CC      drivers/acpi/acpica/evmisc.o
  AR      arch/x86/platform/intel-quark/built-in.a
  AR      arch/x86/platform/olpc/built-in.a
  AR      arch/x86/platform/scx200/built-in.a
  CC      lib/zstd/common/debug.o
  AR      arch/x86/platform/ts5500/built-in.a
  CC      drivers/acpi/acpica/evregion.o
  CC      fs/quota/netlink.o
  AR      arch/x86/platform/uv/built-in.a
  CC      sound/core/device.o
  AR      arch/x86/platform/built-in.a
  CC      fs/proc/uptime.o
  CC      arch/x86/mm/physaddr.o
  CC      drivers/acpi/acpica/evrgnini.o
  CC      drivers/pci/vc.o
  CC      kernel/power/process.o
  AR      arch/x86/kernel/kprobes/built-in.a
  CC      kernel/irq/irqdesc.o
  CC      fs/sysfs/group.o
  CC      kernel/rcu/update.o
  CC      drivers/virtio/virtio.o
  CC      net/netfilter/nf_log.o
  CC      mm/slab_common.o
  CC      lib/crypto/mpi/mpih-div.o
  CC      arch/x86/kernel/apic/hw_nmi.o
  CC      crypto/kpp.o
  AR      net/netlink/built-in.a
  CC      kernel/locking/rwsem.o
  CC      mm/compaction.o
  CC [M]  sound/pci/hda/hda_intel.o
  ASN.1   crypto/rsapubkey.asn1.[ch]
  CC      lib/zstd/common/entropy_common.o
  CC      fs/jbd2/transaction.o
  CC      io_uring/openclose.o
  CC      fs/jbd2/commit.o
  CC      net/netfilter/nf_queue.o
  CC      drivers/acpi/acpica/evsci.o
  CC      drivers/acpi/acpica/evxface.o
  CC      mm/show_mem.o
  CC      net/ethtool/bitset.o
  CC      sound/core/info.o
  CC      fs/ext4/dir.o
  CC      fs/proc/util.o
  CC      arch/x86/mm/tlb.o
  AR      fs/kernfs/built-in.a
  CC      drivers/pci/mmap.o
  CC      io_uring/sqpoll.o
  LD [M]  sound/pci/hda/snd-hda-codec.o
  LD [M]  sound/pci/hda/snd-hda-codec-hdmi.o
  CC      block/blk-mq-cpumap.o
  CC      net/ethtool/strset.o
  CC      fs/jbd2/recovery.o
  CC      net/ethtool/linkinfo.o
  CC      kernel/locking/percpu-rwsem.o
  AR      fs/quota/built-in.a
  CC      net/ipv4/netfilter/nf_defrag_ipv4.o
  CC      net/ipv4/route.o
  CC      arch/x86/kernel/apic/io_apic.o
  AR      fs/sysfs/built-in.a
  CC      kernel/irq/handle.o
  CC      net/ipv4/netfilter/nf_reject_ipv4.o
  CC      drivers/pci/devres.o
  CC      net/ipv4/netfilter/ip_tables.o
  CC      drivers/virtio/virtio_ring.o
  CC      fs/netfs/buffered_write.o
  AR      arch/x86/events/intel/built-in.a
  CC      arch/x86/events/zhaoxin/core.o
  CC      security/selinux/ss/policydb.o
  CC      lib/crypto/mpi/mpih-mul.o
  ASN.1   crypto/rsaprivkey.asn1.[ch]
  CC      crypto/rsa.o
  CC      drivers/acpi/acpica/evxfevnt.o
  CC      arch/x86/events/core.o
  CC      fs/proc/version.o
  CC      kernel/power/suspend.o
  CC      arch/x86/kernel/cpu/rdrand.o
  CC      arch/x86/kernel/cpu/match.o
  CC      security/selinux/ss/services.o
  CC      net/netfilter/nf_sockopt.o
  CC      net/netfilter/utils.o
  CC      arch/x86/kernel/cpu/bugs.o
  CC      sound/core/isadma.o
  CC      drivers/pci/proc.o
  CC      block/blk-mq-sched.o
  CC      kernel/locking/spinlock.o
  CC      kernel/irq/manage.o
  CC      kernel/irq/spurious.o
  CC      drivers/acpi/acpica/evxfgpe.o
  CC      fs/ext4/ext4_jbd2.o
  CC      fs/proc/softirqs.o
  CC      arch/x86/kernel/apic/msi.o
  CC      arch/x86/mm/cpu_entry_area.o
  CC      crypto/rsa_helper.o
  CC      arch/x86/kernel/apic/probe_32.o
  CC      lib/zstd/common/error_private.o
  CC      kernel/printk/printk_safe.o
  CC      arch/x86/mm/maccess.o
  AR      kernel/sched/built-in.a
  CC      net/core/neighbour.o
  CC      mm/shmem_quota.o
  CC      net/core/rtnetlink.o
  CC      drivers/tty/vt/vt_ioctl.o
  AR      kernel/livepatch/built-in.a
  LD [M]  sound/pci/hda/snd-hda-intel.o
  AR      sound/pci/built-in.a
  CC      crypto/rsa-pkcs1pad.o
  CC      lib/zstd/common/fse_decompress.o
  CC      kernel/locking/osq_lock.o
  CC      lib/zstd/common/zstd_common.o
  CC      lib/crypto/mpi/mpi-pow.o
  CC      lib/crypto/mpi/mpiutil.o
  CC      sound/core/vmaster.o
  CC      sound/core/ctljack.o
  CC      drivers/tty/vt/vc_screen.o
  AR      arch/x86/events/zhaoxin/built-in.a
  CC      net/ethtool/linkmodes.o
  CC      drivers/tty/vt/selection.o
  CC      drivers/pci/pci-sysfs.o
  CC      drivers/pci/slot.o
  CC      drivers/acpi/acpica/evxfregn.o
  CC      fs/jbd2/checkpoint.o
  CC      drivers/char/hw_random/core.o
  CC      drivers/pci/pci-acpi.o
  CC      drivers/tty/hvc/hvc_console.o
  AR      drivers/iommu/amd/built-in.a
  AR      drivers/iommu/intel/built-in.a
  CC      kernel/locking/qspinlock.o
  AR      drivers/iommu/arm/arm-smmu/built-in.a
  AR      drivers/iommu/arm/arm-smmu-v3/built-in.a
  AR      drivers/iommu/arm/built-in.a
  CC      fs/netfs/direct_read.o
  CC      fs/proc/namespaces.o
  CC      drivers/acpi/x86/apple.o
  AR      drivers/iommu/iommufd/built-in.a
  CC      drivers/acpi/x86/cmos_rtc.o
  CC      drivers/iommu/iommu.o
  CC      io_uring/xattr.o
  CC      drivers/iommu/iommu-traces.o
  CC      kernel/rcu/sync.o
  CC      arch/x86/mm/pgprot.o
  CC      net/netfilter/nfnetlink.o
  CC      drivers/acpi/acpica/exconcat.o
  AR      lib/zstd/built-in.a
  CC      kernel/printk/nbcon.o
  CC      drivers/virtio/virtio_anchor.o
  CC      drivers/iommu/iommu-sysfs.o
  CC      drivers/acpi/tables.o
  CC      lib/xz/xz_dec_syms.o
  CC      sound/core/jack.o
  CC      drivers/acpi/osi.o
  CC      net/ipv4/netfilter/iptable_filter.o
  CC      kernel/power/hibernate.o
  AR      arch/x86/kernel/apic/built-in.a
  CC      sound/core/timer.o
  CC      block/ioctl.o
  CC      kernel/locking/rtmutex_api.o
  CC      security/selinux/ss/conditional.o
  AR      lib/crypto/mpi/built-in.a
  CC      kernel/rcu/srcutree.o
  AR      lib/crypto/built-in.a
  CC      io_uring/nop.o
  CC      crypto/acompress.o
  CC      drivers/iommu/dma-iommu.o
  CC      net/core/utils.o
  CC      drivers/char/agp/backend.o
  CC      kernel/locking/qrwlock.o
  CC      kernel/irq/resend.o
  CC      drivers/acpi/x86/lpss.o
  CC      drivers/acpi/acpica/exconfig.o
  CC      drivers/acpi/x86/s2idle.o
  CC      drivers/char/hw_random/intel-rng.o
  CC      drivers/tty/vt/keyboard.o
  CC      kernel/printk/printk_ringbuffer.o
  CC      lib/xz/xz_dec_stream.o
  CC      arch/x86/mm/pgtable_32.o
  CC      fs/proc/self.o
  AR      drivers/tty/hvc/built-in.a
  CC      drivers/tty/serial/8250/8250_core.o
  CC      arch/x86/kernel/cpu/aperfmperf.o
  CC      net/ethtool/rss.o
  CC      drivers/virtio/virtio_pci_modern_dev.o
  CC      arch/x86/events/probe.o
  CC      drivers/acpi/osl.o
  CC      fs/netfs/direct_write.o
  CC      fs/jbd2/revoke.o
  CC      drivers/pci/iomap.o
  CC      kernel/dma/mapping.o
  CC      fs/jbd2/journal.o
  CC      kernel/dma/direct.o
  CC      arch/x86/kernel/cpu/cpuid-deps.o
  CC      drivers/acpi/acpica/exconvrt.o
  CC      drivers/acpi/utils.o
  CC      fs/proc/thread_self.o
  CC      kernel/irq/chip.o
  CC      mm/interval_tree.o
  CC      lib/xz/xz_dec_lzma2.o
  CC      kernel/printk/sysctl.o
  CC      lib/xz/xz_dec_bcj.o
  CC      arch/x86/events/utils.o
  CC      drivers/char/agp/generic.o
  CC      crypto/scompress.o
  CC      drivers/char/hw_random/amd-rng.o
  CC      io_uring/fs.o
  CC      drivers/tty/vt/vt.o
  CC      arch/x86/mm/iomap_32.o
  AR      kernel/locking/built-in.a
  CC      arch/x86/mm/hugetlbpage.o
  COPY    drivers/tty/vt/defkeymap.c
  CC      drivers/acpi/acpica/excreate.o
  CC      fs/ext4/extents.o
  CC      net/ipv4/netfilter/iptable_mangle.o
  CC      net/netfilter/nfnetlink_log.o
  AR      arch/x86/net/built-in.a
  CC      kernel/entry/common.o
  CC      block/genhd.o
  CC      net/ipv4/inetpeer.o
  CC      net/ipv4/protocol.o
  AR      kernel/printk/built-in.a
  CC      arch/x86/kernel/cpu/umwait.o
  AR      arch/x86/virt/svm/built-in.a
  AR      arch/x86/virt/vmx/built-in.a
  AR      arch/x86/virt/built-in.a
  CC      fs/proc/proc_sysctl.o
  CC      drivers/acpi/x86/utils.o
  CC      drivers/pci/quirks.o
  CC      drivers/char/hw_random/geode-rng.o
  CC      kernel/rcu/tree.o
  CC      arch/x86/mm/dump_pagetables.o
  CC      security/selinux/ss/mls.o
  CC      drivers/virtio/virtio_pci_legacy_dev.o
  CC      net/netfilter/nf_conntrack_core.o
  CC      drivers/acpi/acpica/exdebug.o
  CC      kernel/power/snapshot.o
  CC      drivers/pci/pci-label.o
  CC      fs/netfs/io.o
  CC      kernel/rcu/rcu_segcblist.o
  CC      net/ethtool/linkstate.o
  CC      sound/core/hrtimer.o
  CC      net/ipv4/ip_input.o
  CC      block/ioprio.o
  CC      drivers/acpi/reboot.o
  CC      drivers/iommu/iova.o
  CC      kernel/power/swap.o
  CC      drivers/tty/serial/8250/8250_pnp.o
  AR      lib/xz/built-in.a
  CC      lib/dim/dim.o
  CC      drivers/virtio/virtio_pci_modern.o
  CC      kernel/dma/ops_helpers.o
  CC      lib/dim/net_dim.o
  CC      arch/x86/events/rapl.o
  CC      mm/list_lru.o
  CC      lib/dim/rdma_dim.o
  CC      kernel/entry/syscall_user_dispatch.o
  CC      kernel/irq/dummychip.o
  CC      drivers/acpi/x86/blacklist.o
  CC      drivers/acpi/acpica/exdump.o
  CC      arch/x86/kernel/head32.o
  CC      crypto/algboss.o
  MKCAP   arch/x86/kernel/cpu/capflags.c
  CC      drivers/char/hw_random/via-rng.o
  CC      sound/core/seq_device.o
  CC      io_uring/splice.o
  CC      io_uring/sync.o
  CC      io_uring/msg_ring.o
  CC      io_uring/advise.o
  CC      drivers/char/agp/isoch.o
  CC      io_uring/epoll.o
  CC      kernel/dma/dummy.o
  CC      arch/x86/mm/highmem_32.o
  CC      net/ipv4/netfilter/ipt_REJECT.o
  AR      lib/dim/built-in.a
  CC      drivers/tty/vt/consolemap.o
  CC      drivers/char/agp/amd64-agp.o
  CC      lib/fonts/fonts.o
  CC      drivers/char/agp/intel-agp.o
  CC      drivers/acpi/acpica/exfield.o
  CC      drivers/tty/serial/serial_core.o
  CC      kernel/irq/devres.o
  CC      arch/x86/kernel/ebda.o
  AR      drivers/acpi/x86/built-in.a
  CC      kernel/irq/autoprobe.o
  CC      net/ipv4/ip_fragment.o
  AR      drivers/char/hw_random/built-in.a
  HOSTCC  drivers/tty/vt/conmakehash
  CC      drivers/tty/serial/8250/8250_port.o
  CC      security/selinux/ss/context.o
  AR      kernel/entry/built-in.a
  CC      fs/netfs/iterator.o
  CC      block/badblocks.o
  CC      mm/workingset.o
  CC      arch/x86/kernel/platform-quirks.o
  CC      drivers/virtio/virtio_pci_common.o
  CC      net/ethtool/debug.o
  AR      drivers/iommu/built-in.a
  CC      block/blk-rq-qos.o
  CC      drivers/char/mem.o
  CC      lib/fonts/font_8x16.o
  CC      fs/netfs/locking.o
  CC      arch/x86/kernel/process_32.o
  CC [M]  sound/core/hwdep.o
  CC      arch/x86/events/msr.o
  CC      fs/netfs/main.o
  CC      drivers/acpi/acpica/exfldio.o
  CC      drivers/char/agp/intel-gtt.o
  CC      kernel/dma/remap.o
  CC      net/xfrm/xfrm_policy.o
  CC      fs/proc/proc_net.o
  AR      arch/x86/mm/built-in.a
  CC      fs/proc/kcore.o
  CC      net/xfrm/xfrm_state.o
  CC      crypto/testmgr.o
  CC      kernel/irq/irqdomain.o
  CC      crypto/cmac.o
  CC      net/xfrm/xfrm_hash.o
  CC      drivers/char/random.o
  CC      drivers/acpi/nvs.o
  CC      drivers/pci/vgaarb.o
  CC      drivers/acpi/acpica/exmisc.o
  CC      arch/x86/kernel/signal.o
  CC      io_uring/statx.o
  AR      lib/fonts/built-in.a
  CC      lib/argv_split.o
  CC      fs/netfs/misc.o
  CC      block/disk-events.o
  CC      net/core/link_watch.o
  CC      kernel/power/user.o
  CC      net/ethtool/wol.o
  CC [M]  sound/core/pcm.o
  CC [M]  net/ipv4/netfilter/iptable_nat.o
  AR      fs/jbd2/built-in.a
  CC      drivers/tty/vt/defkeymap.o
  CC      net/xfrm/xfrm_input.o
  CC      net/xfrm/xfrm_output.o
  AR      kernel/dma/built-in.a
  CC      drivers/tty/serial/serial_base_bus.o
  CC      drivers/acpi/acpica/exmutex.o
  CC      kernel/module/main.o
  CC      drivers/acpi/acpica/exnames.o
  CC      lib/bug.o
  CC      mm/debug.o
  CC      kernel/time/time.o
  CC      security/selinux/netlabel.o
  CONMK   drivers/tty/vt/consolemap_deftbl.c
  CC      drivers/virtio/virtio_pci_legacy.o
  CC      drivers/tty/vt/consolemap_deftbl.o
  CC      kernel/futex/core.o
  CC      kernel/cgroup/cgroup.o
  AR      arch/x86/events/built-in.a
  AR      drivers/tty/vt/built-in.a
  CC      crypto/hmac.o
  CC      kernel/cgroup/rstat.o
  CC      net/ethtool/features.o
  CC      drivers/tty/serial/serial_ctrl.o
  CC      drivers/acpi/acpica/exoparg1.o
  CC      drivers/acpi/acpica/exoparg2.o
  CC      kernel/cgroup/namespace.o
  CC      kernel/time/timer.o
  CC      io_uring/timeout.o
  CC      net/netfilter/nf_conntrack_standalone.o
  CC      mm/gup.o
  CC      drivers/virtio/virtio_pci_admin_legacy_io.o
  CC [M]  sound/core/pcm_native.o
  AR      drivers/char/agp/built-in.a
  CC      kernel/power/poweroff.o
  CC      fs/proc/vmcore.o
  CC      drivers/acpi/acpica/exoparg3.o
  CC      fs/proc/kmsg.o
  CC      kernel/time/hrtimer.o
  AR      drivers/gpu/host1x/built-in.a
  CC      block/blk-ia-ranges.o
  AR      drivers/gpu/vga/built-in.a
  CC      fs/proc/page.o
  AR      kernel/power/built-in.a
  CC      kernel/trace/trace_clock.o
  CC      kernel/irq/proc.o
  CC      block/early-lookup.o
  CC      drivers/acpi/acpica/exoparg6.o
  AR      drivers/pci/built-in.a
  CC      lib/buildid.o
  CC      block/bounce.o
  CC      arch/x86/kernel/signal_32.o
  CC      net/ethtool/privflags.o
  CC      kernel/bpf/core.o
  AR      drivers/gpu/drm/tests/built-in.a
  AR      drivers/gpu/drm/arm/built-in.a
  CC      drivers/acpi/wakeup.o
  CC      kernel/events/core.o
  CC      drivers/gpu/drm/display/drm_display_helper_mod.o
  CC      drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
  CC      net/core/filter.o
  CC      net/core/sock_diag.o
  CC      drivers/tty/serial/8250/8250_dma.o
  CC      crypto/crypto_null.o
  CC      kernel/fork.o
  CC      drivers/tty/serial/8250/8250_dwlib.o
  CC      mm/mmap_lock.o
  CC      kernel/futex/syscalls.o
  CC      drivers/virtio/virtio_input.o
  CC      drivers/char/misc.o
  AR      net/ipv4/netfilter/built-in.a
  CC      net/ipv4/ip_forward.o
  CC      drivers/gpu/drm/display/drm_dp_helper.o
  CC      fs/netfs/objects.o
  CC      kernel/trace/ring_buffer.o
  CC      drivers/acpi/acpica/exprep.o
  CC      drivers/acpi/acpica/exregion.o
  CC      kernel/events/ring_buffer.o
  CC      drivers/virtio/virtio_dma_buf.o
  CC      drivers/gpu/drm/display/drm_dp_mst_topology.o
  CC      drivers/acpi/sleep.o
  CC      io_uring/fdinfo.o
  CC      net/netfilter/nf_conntrack_expect.o
  CC      kernel/irq/migration.o
  CC      drivers/gpu/drm/display/drm_dsc_helper.o
  AR      security/selinux/built-in.a
  CC      lib/clz_tab.o
  AR      security/built-in.a
  CC      net/ethtool/rings.o
  CC      lib/cmdline.o
  AR      fs/proc/built-in.a
  CC      net/ethtool/channels.o
  CC      lib/cpumask.o
  CC      fs/netfs/write_collect.o
  CC      kernel/module/strict_rwx.o
  CC      kernel/exec_domain.o
  CC      crypto/md5.o
  CC      block/bsg.o
  CC      drivers/acpi/acpica/exresnte.o
  CC      io_uring/cancel.o
  CC      net/ethtool/coalesce.o
  CC      net/ethtool/pause.o
  CC      kernel/cgroup/cgroup-v1.o
  CC      drivers/char/virtio_console.o
  CC      drivers/tty/serial/8250/8250_pcilib.o
  CC      net/core/dev_ioctl.o
  CC      net/core/tso.o
  AR      drivers/virtio/built-in.a
  CC      block/blk-cgroup.o
  CC      drivers/connector/cn_queue.o
  CC      kernel/irq/cpuhotplug.o
  CC      kernel/futex/pi.o
  CC      drivers/acpi/acpica/exresolv.o
  CC      net/ipv4/ip_options.o
  CC      net/xfrm/xfrm_sysctl.o
  CC      kernel/module/kmod.o
  CC      fs/ext4/extents_status.o
  AR      kernel/rcu/built-in.a
  CC      crypto/sha256_generic.o
  CC      lib/ctype.o
  CC      drivers/base/power/sysfs.o
  CC      crypto/sha512_generic.o
  CC      lib/dec_and_lock.o
  CC      drivers/base/regmap/regmap.o
  CC      drivers/base/firmware_loader/builtin/main.o
  CC      mm/highmem.o
  CC      kernel/time/timekeeping.o
  CC      io_uring/waitid.o
  CC      io_uring/register.o
  CC      drivers/base/power/generic_ops.o
  CC      crypto/sha3_generic.o
  CC      net/xfrm/xfrm_replay.o
  CC      kernel/module/tree_lookup.o
  CC      lib/decompress.o
  CC      drivers/tty/serial/8250/8250_early.o
  CC      drivers/acpi/acpica/exresop.o
  CC      lib/decompress_bunzip2.o
  CC      crypto/ecb.o
  CC      net/ipv4/ip_output.o
  CC      net/ipv4/ip_sockglue.o
  AR      drivers/base/firmware_loader/builtin/built-in.a
  CC      drivers/base/firmware_loader/main.o
  CC      io_uring/truncate.o
  CC      drivers/acpi/device_sysfs.o
  CC      kernel/futex/requeue.o
  CC      kernel/irq/pm.o
  CC      io_uring/memmap.o
  CC      kernel/irq/msi.o
  CC      net/ethtool/eee.o
  CC      drivers/acpi/device_pm.o
  CC      net/netfilter/nf_conntrack_helper.o
  CC      drivers/base/power/common.o
  CC      drivers/acpi/acpica/exserial.o
  CC      drivers/acpi/acpica/exstore.o
  CC      net/xfrm/xfrm_device.o
  CC      drivers/connector/connector.o
  CC      drivers/acpi/acpica/exstoren.o
  CC [M]  sound/core/pcm_lib.o
  CC      net/netfilter/nf_conntrack_proto.o
  CC      drivers/base/power/qos.o
  CC      drivers/base/power/runtime.o
  CC      kernel/module/kallsyms.o
  CC      fs/netfs/write_issue.o
  CC      crypto/cbc.o
  CC      drivers/char/hpet.o
  CC      net/core/sock_reuseport.o
  CC      drivers/tty/serial/8250/8250_exar.o
  CC      net/xfrm/xfrm_algo.o
  CC      net/core/fib_notifier.o
  CC      lib/decompress_inflate.o
  CC      mm/memory.o
  CC      drivers/acpi/proc.o
  CC      io_uring/io-wq.o
  CC      mm/mincore.o
  CC      drivers/acpi/acpica/exstorob.o
  CC      io_uring/futex.o
  CC      mm/mlock.o
  CC      kernel/futex/waitwake.o
  CC      io_uring/napi.o
  CC      drivers/acpi/acpica/exsystem.o
  CC      drivers/block/loop.o
  CC      kernel/trace/trace.o
  AR      kernel/bpf/built-in.a
  CC      kernel/trace/trace_output.o
  AR      drivers/misc/eeprom/built-in.a
  CC      block/blk-ioprio.o
  CC      crypto/ctr.o
  AR      drivers/misc/cb710/built-in.a
  AR      drivers/base/firmware_loader/built-in.a
  AR      drivers/misc/ti-st/built-in.a
  AR      drivers/misc/lis3lv02d/built-in.a
  AR      drivers/mfd/built-in.a
  CC      kernel/trace/trace_seq.o
  AR      drivers/misc/cardreader/built-in.a
  AR      drivers/nfc/built-in.a
  AR      drivers/misc/built-in.a
  CC      block/blk-iolatency.o
  CC      lib/decompress_unlz4.o
  CC      fs/ext4/file.o
  CC      net/ipv4/inet_hashtables.o
  CC      net/ethtool/tsinfo.o
  CC      kernel/time/ntp.o
  CC      kernel/time/clocksource.o
  CC      kernel/module/procfs.o
  CC      drivers/acpi/acpica/extrace.o
  CC      drivers/acpi/acpica/exutils.o
  CC      kernel/irq/affinity.o
  CC      drivers/acpi/acpica/hwacpi.o
  CC      drivers/connector/cn_proc.o
  CC      drivers/gpu/drm/ttm/ttm_tt.o
  CC      crypto/gcm.o
  CC      drivers/char/nvram.o
  CC      net/xfrm/xfrm_user.o
  CC      net/core/xdp.o
  CC      kernel/panic.o
  CC      drivers/tty/serial/8250/8250_lpss.o
  CC      drivers/gpu/drm/i915/i915_config.o
  AR      kernel/futex/built-in.a
  CC      drivers/block/virtio_blk.o
  CC      kernel/cgroup/freezer.o
  CC      lib/decompress_unlzma.o
  CC      drivers/gpu/drm/i915/i915_driver.o
  CC      kernel/trace/trace_stat.o
  AR      fs/netfs/built-in.a
  AR      drivers/base/test/built-in.a
  CC      drivers/base/component.o
  CC      kernel/trace/trace_printk.o
  CC      drivers/gpu/drm/display/drm_hdcp_helper.o
  CC      drivers/base/power/wakeirq.o
  CC      drivers/gpu/drm/i915/i915_drm_client.o
  CC      net/netfilter/nf_conntrack_proto_generic.o
  CC      drivers/acpi/acpica/hwesleep.o
  AR      drivers/tty/ipwireless/built-in.a
  CC [M]  sound/core/pcm_misc.o
  CC      kernel/events/callchain.o
  CC      net/ipv4/inet_timewait_sock.o
  CC      drivers/tty/tty_io.o
  CC      arch/x86/kernel/cpu/powerflags.o
  CC      net/core/flow_offload.o
  CC      kernel/irq/matrix.o
  CC      kernel/module/sysfs.o
  CC      arch/x86/kernel/cpu/topology.o
  CC      arch/x86/kernel/cpu/proc.o
  CC [M]  sound/core/pcm_memory.o
  CC      fs/ext4/fsmap.o
  CC      block/blk-iocost.o
  CC      net/ipv4/inet_connection_sock.o
  CC      kernel/time/jiffies.o
  CC      kernel/events/hw_breakpoint.o
  CC      drivers/acpi/acpica/hwgpe.o
  CC      net/ethtool/cabletest.o
  CC      drivers/base/power/main.o
  CC      kernel/events/uprobes.o
  CC      kernel/trace/pid_list.o
  AR      drivers/char/built-in.a
  AR      io_uring/built-in.a
  CC      kernel/cgroup/legacy_freezer.o
  CC      net/core/gro.o
  CC      drivers/gpu/drm/ttm/ttm_bo.o
  CC      drivers/tty/serial/8250/8250_mid.o
  CC      drivers/base/regmap/regcache.o
  CC      lib/decompress_unlzo.o
  CC      drivers/gpu/drm/ttm/ttm_bo_util.o
  CC [M]  sound/core/memalloc.o
  CC      lib/decompress_unxz.o
  CC      drivers/gpu/drm/display/drm_hdmi_helper.o
  CC      crypto/ccm.o
  CC      drivers/base/regmap/regcache-rbtree.o
  CC      drivers/base/regmap/regcache-flat.o
  CC [M]  sound/core/pcm_timer.o
  LD [M]  sound/core/snd-hwdep.o
  CC      drivers/gpu/drm/display/drm_scdc_helper.o
  CC      kernel/time/timer_list.o
  CC      kernel/trace/trace_sched_switch.o
  AR      drivers/connector/built-in.a
  CC      lib/decompress_unzstd.o
  AR      drivers/dax/hmem/built-in.a
  AR      drivers/dax/built-in.a
  CC      lib/dump_stack.o
  CC      arch/x86/kernel/cpu/feat_ctl.o
  CC      net/netfilter/nf_conntrack_proto_tcp.o
  AR      sound/core/built-in.a
  CC      drivers/acpi/acpica/hwregs.o
  AR      kernel/module/built-in.a
  CC      kernel/cgroup/pids.o
  CC      drivers/acpi/acpica/hwsleep.o
  CC      drivers/gpu/drm/ttm/ttm_bo_vm.o
  CC      drivers/gpu/drm/ttm/ttm_module.o
  AR      drivers/block/built-in.a
  CC      drivers/dma-buf/dma-buf.o
  CC      drivers/gpu/drm/ttm/ttm_execbuf_util.o
  AR      drivers/cxl/core/built-in.a
  AR      drivers/cxl/built-in.a
  CC      net/netfilter/nf_conntrack_proto_udp.o
  CC      drivers/macintosh/mac_hid.o
  CC      lib/earlycpio.o
  CC      net/core/netdev-genl.o
  CC      net/core/netdev-genl-gen.o
  CC      net/core/gso.o
  CC      lib/extable.o
  CC      arch/x86/kernel/cpu/intel.o
  CC      drivers/base/regmap/regcache-maple.o
  CC      drivers/tty/serial/8250/8250_pci.o
  CC      drivers/gpu/drm/ttm/ttm_range_manager.o
  CC      drivers/acpi/acpica/hwvalid.o
  CC      drivers/gpu/drm/i915/i915_getparam.o
  CC      net/netfilter/nf_conntrack_proto_icmp.o
  CC      fs/ext4/fsync.o
  CC      drivers/base/core.o
  AR      kernel/irq/built-in.a
  CC      fs/ramfs/inode.o
  CC      kernel/cpu.o
  CC      fs/hugetlbfs/inode.o
  CC      kernel/time/timeconv.o
  CC      fs/fat/cache.o
  CC      kernel/cgroup/rdma.o
  CC      block/mq-deadline.o
  CC      kernel/cgroup/cpuset.o
  CC      net/ethtool/tunnels.o
  CC      fs/ramfs/file-mmu.o
  LD [M]  sound/core/snd-pcm.o
  AR      drivers/gpu/drm/display/built-in.a
  CC      kernel/exit.o
  CC      net/core/net-sysfs.o
  CC      kernel/softirq.o
  CC      kernel/resource.o
  AR      sound/usb/misc/built-in.a
  AR      sound/usb/usx2y/built-in.a
  AR      sound/usb/caiaq/built-in.a
  AR      sound/usb/6fire/built-in.a
  CC      crypto/aes_generic.o
  AR      sound/usb/hiface/built-in.a
  AR      sound/usb/bcd2000/built-in.a
  CC      crypto/crc32c_generic.o
  AR      sound/usb/built-in.a
  AR      sound/firewire/built-in.a
  AR      sound/sparc/built-in.a
  CC      drivers/acpi/acpica/hwxface.o
  AR      sound/spi/built-in.a
  CC      lib/flex_proportions.o
  CC      net/ethtool/fec.o
  AR      sound/parisc/built-in.a
  AR      drivers/macintosh/built-in.a
  AR      sound/pcmcia/vx/built-in.a
  AR      sound/mips/built-in.a
  AR      sound/pcmcia/pdaudiocf/built-in.a
  CC      kernel/time/timecounter.o
  AR      sound/pcmcia/built-in.a
  AR      sound/soc/built-in.a
  AR      sound/atmel/built-in.a
  CC      kernel/time/alarmtimer.o
  AR      sound/hda/built-in.a
  AR      sound/x86/built-in.a
  CC [M]  sound/hda/hda_bus_type.o
  CC [M]  sound/hda/hdac_bus.o
  CC      drivers/tty/n_tty.o
  CC      drivers/gpu/drm/ttm/ttm_resource.o
  CC      drivers/base/regmap/regmap-debugfs.o
  CC [M]  sound/hda/hdac_device.o
  AR      sound/xen/built-in.a
  CC      kernel/cgroup/misc.o
  CC      kernel/trace/trace_nop.o
  CC      drivers/base/power/wakeup.o
  CC      lib/idr.o
  CC      drivers/acpi/acpica/hwxfsleep.o
  CC      fs/fat/dir.o
  CC      drivers/acpi/acpica/hwpci.o
  CC      drivers/tty/tty_ioctl.o
  CC      mm/mmap.o
  CC      drivers/tty/tty_ldisc.o
  AR      fs/ramfs/built-in.a
  CC      kernel/cgroup/debug.o
  CC      fs/fat/fatent.o
  AR      net/xfrm/built-in.a
  AR      kernel/events/built-in.a
  CC      drivers/dma-buf/dma-fence.o
  CC      drivers/dma-buf/dma-fence-array.o
  CC      drivers/dma-buf/dma-fence-chain.o
  CC      net/ipv4/tcp.o
  CC      drivers/acpi/acpica/nsaccess.o
  CC      drivers/gpu/drm/i915/i915_ioctl.o
  CC      net/core/hotdata.o
  CC      arch/x86/kernel/cpu/intel_pconfig.o
  CC      net/netfilter/nf_conntrack_extend.o
  CC      crypto/authenc.o
  CC      net/unix/af_unix.o
  CC      net/netfilter/nf_conntrack_acct.o
  CC      net/unix/garbage.o
  CC      drivers/tty/serial/8250/8250_pericom.o
  CC      arch/x86/kernel/cpu/tsx.o
  CC [M]  sound/hda/hdac_sysfs.o
  CC      net/ipv6/netfilter/ip6_tables.o
  CC      net/packet/af_packet.o
  AR      net/dsa/built-in.a
  CC      lib/irq_regs.o
  CC      lib/is_single_threaded.o
  CC      net/sunrpc/auth_gss/auth_gss.o
  AR      net/wireless/tests/built-in.a
  CC      net/wireless/core.o
  CC      drivers/acpi/acpica/nsalloc.o
  CC [M]  sound/hda/hdac_regmap.o
  AR      fs/hugetlbfs/built-in.a
  CC      net/ipv6/netfilter/ip6table_filter.o
  CC      net/ethtool/eeprom.o
  CC      net/wireless/sysfs.o
  AR      net/mac80211/tests/built-in.a
  CC      kernel/trace/blktrace.o
  CC      net/mac80211/main.o
  AR      drivers/base/regmap/built-in.a
  CC      net/wireless/radiotap.o
  CC      drivers/tty/serial/serial_port.o
  AR      drivers/scsi/pcmcia/built-in.a
  CC      drivers/base/bus.o
  CC      drivers/scsi/scsi.o
  AR      sound/virtio/built-in.a
  CC      drivers/gpu/drm/ttm/ttm_pool.o
  CC      net/sunrpc/auth_gss/gss_generic_token.o
  CC      block/kyber-iosched.o
  CC      net/sunrpc/clnt.o
  CC      net/wireless/util.o
  CC      drivers/dma-buf/dma-fence-unwrap.o
  CC      net/sunrpc/auth_gss/gss_mech_switch.o
  CC      arch/x86/kernel/cpu/intel_epb.o
  CC      kernel/time/posix-timers.o
  CC      lib/klist.o
  CC      fs/ext4/hash.o
  CC      drivers/acpi/acpica/nsarguments.o
  CC      drivers/gpu/drm/i915/i915_irq.o
  AR      drivers/tty/serial/8250/built-in.a
  CC      drivers/tty/serial/earlycon.o
  CC      drivers/dma-buf/dma-resv.o
  CC      net/ipv4/tcp_input.o
  CC      drivers/acpi/acpica/nsconvert.o
  CC      arch/x86/kernel/cpu/amd.o
  CC      drivers/tty/tty_buffer.o
  CC      net/sunrpc/xprt.o
  CC      drivers/tty/tty_port.o
  CC      lib/kobject.o
  CC      drivers/base/power/wakeup_stats.o
  CC      crypto/authencesn.o
  CC      net/sunrpc/socklib.o
  CC      drivers/tty/tty_mutex.o
  CC [M]  sound/hda/hdac_controller.o
  CC      drivers/gpu/drm/i915/i915_mitigations.o
  CC      arch/x86/kernel/cpu/hygon.o
  CC      net/sunrpc/auth_gss/svcauth_gss.o
  CC      drivers/tty/tty_ldsem.o
  CC      net/core/net-procfs.o
  CC      net/netfilter/nf_conntrack_seqadj.o
  CC      drivers/base/power/trace.o
  CC [M]  sound/hda/hdac_stream.o
  CC      fs/fat/file.o
  CC      drivers/gpu/drm/ttm/ttm_device.o
  AR      kernel/cgroup/built-in.a
  CC      drivers/acpi/acpica/nsdump.o
  CC      net/ethtool/stats.o
  CC      drivers/dma-buf/sync_file.o
  CC      net/ethtool/phc_vclocks.o
  CC      drivers/gpu/drm/ttm/ttm_sys_manager.o
  CC      drivers/base/dd.o
  CC      kernel/time/posix-cpu-timers.o
  CC      net/netfilter/nf_conntrack_proto_icmpv6.o
  CC      fs/ext4/ialloc.o
  CC      arch/x86/kernel/cpu/centaur.o
  CC      lib/kobject_uevent.o
  AR      drivers/tty/serial/built-in.a
  CC      drivers/acpi/acpica/nseval.o
  CC      drivers/tty/tty_baudrate.o
  CC      drivers/base/syscore.o
  CC      fs/fat/inode.o
  CC      drivers/gpu/drm/i915/i915_module.o
  CC      drivers/tty/tty_jobctrl.o
  CC      net/ethtool/mm.o
  CC      drivers/scsi/hosts.o
  CC      net/wireless/reg.o
  CC      net/ipv6/netfilter/ip6table_mangle.o
  CC      drivers/acpi/acpica/nsinit.o
  CC      net/unix/sysctl_net_unix.o
  AR      drivers/base/power/built-in.a
  AR      drivers/nvme/common/built-in.a
  AR      drivers/dma-buf/built-in.a
  AR      drivers/nvme/host/built-in.a
  CC      drivers/ata/libata-core.o
  AR      drivers/nvme/target/built-in.a
  CC      drivers/gpu/drm/ttm/ttm_agp_backend.o
  AR      drivers/nvme/built-in.a
  CC      drivers/acpi/acpica/nsload.o
  CC      crypto/lzo.o
  CC      arch/x86/kernel/cpu/transmeta.o
  CC      net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
  CC      arch/x86/kernel/cpu/zhaoxin.o
  CC      net/netfilter/nf_conntrack_netlink.o
  CC      kernel/trace/trace_events.o
  CC      net/wireless/scan.o
  CC      drivers/tty/n_null.o
  CC      block/blk-mq-pci.o
  CC      mm/mmu_gather.o
  CC [M]  sound/hda/array.o
  CC      net/core/netpoll.o
  CC      net/sunrpc/auth_gss/gss_rpc_upcall.o
  CC      lib/logic_pio.o
  CC      net/mac80211/status.o
  CC      net/ethtool/module.o
  CC      net/ethtool/pse-pd.o
  CC      drivers/acpi/acpica/nsnames.o
  CC      drivers/acpi/acpica/nsobject.o
  CC      drivers/ata/libata-scsi.o
  CC      drivers/scsi/scsi_ioctl.o
  CC      drivers/scsi/scsicam.o
  CC      net/ipv6/netfilter/nf_conntrack_reasm.o
  CC      block/blk-mq-virtio.o
  CC      net/mac80211/driver-ops.o
  CC      crypto/lzo-rle.o
  CC      arch/x86/kernel/cpu/vortex.o
  AR      drivers/gpu/drm/ttm/built-in.a
  CC      kernel/time/posix-clock.o
  CC      crypto/rng.o
  CC      drivers/tty/pty.o
  CC      kernel/time/itimer.o
  CC      drivers/base/driver.o
  CC      net/ipv6/netfilter/nf_reject_ipv6.o
  CC      drivers/acpi/acpica/nsparse.o
  AR      drivers/gpu/drm/renesas/rcar-du/built-in.a
  CC      drivers/acpi/acpica/nspredef.o
  AR      drivers/gpu/drm/renesas/rz-du/built-in.a
  AR      drivers/gpu/drm/renesas/built-in.a
  CC      net/mac80211/sta_info.o
  AR      drivers/gpu/drm/omapdrm/built-in.a
  AR      net/unix/built-in.a
  CC      net/sunrpc/auth_gss/gss_rpc_xdr.o
  CC      net/core/fib_rules.o
  AR      drivers/gpu/drm/tilcdc/built-in.a
  CC [M]  sound/hda/hdmi_chmap.o
  CC      drivers/gpu/drm/virtio/virtgpu_drv.o
  CC      drivers/gpu/drm/i915/i915_params.o
  CC      lib/maple_tree.o
  CC      arch/x86/kernel/cpu/perfctr-watchdog.o
  CC      mm/mprotect.o
  CC      drivers/gpu/drm/virtio/virtgpu_kms.o
  CC      net/netfilter/nf_conntrack_ftp.o
  CC      fs/fat/misc.o
  CC      fs/fat/nfs.o
  CC      net/ethtool/plca.o
  CC      crypto/drbg.o
  CC      drivers/acpi/acpica/nsprepkg.o
  AR      net/packet/built-in.a
  CC      net/sunrpc/auth_gss/trace.o
  CC      net/sunrpc/auth_gss/gss_krb5_mech.o
  CC      drivers/base/class.o
  CC      net/netlabel/netlabel_user.o
  CC      block/blk-mq-debugfs.o
  CC      net/sunrpc/auth_gss/gss_krb5_seal.o
  CC      net/rfkill/core.o
  CC      net/ipv6/netfilter/ip6t_ipv6header.o
  CC      net/sunrpc/xprtsock.o
  CC      drivers/scsi/scsi_error.o
  CC      net/sunrpc/auth_gss/gss_krb5_unseal.o
  CC      crypto/jitterentropy.o
  CC      drivers/tty/tty_audit.o
  CC      net/netlabel/netlabel_kapi.o
  CC      crypto/jitterentropy-kcapi.o
  CC      net/wireless/nl80211.o
  AR      drivers/gpu/drm/imx/built-in.a
  CC      net/wireless/mlme.o
  CC      arch/x86/kernel/cpu/vmware.o
  CC      drivers/acpi/acpica/nsrepair.o
  CC      kernel/time/clockevents.o
  CC [M]  sound/hda/trace.o
  CC      net/sunrpc/sched.o
  CC      net/netlabel/netlabel_domainhash.o
  CC      net/mac80211/wep.o
  CC      drivers/gpu/drm/i915/i915_pci.o
  CC      drivers/gpu/drm/virtio/virtgpu_gem.o
  CC      net/ipv6/netfilter/ip6t_REJECT.o
  CC      net/sunrpc/auth.o
  CC      fs/fat/namei_vfat.o
  CC      kernel/sysctl.o
  CC      drivers/base/platform.o
  CC      net/sunrpc/auth_gss/gss_krb5_wrap.o
  CC      crypto/ghash-generic.o
  CC      kernel/capability.o
  CC      net/mac80211/aead_api.o
  CC      fs/ext4/indirect.o
  CC      mm/mremap.o
  CC      drivers/acpi/acpica/nsrepair2.o
  CC      net/sunrpc/auth_null.o
  CC [M]  sound/hda/hdac_component.o
  CC      net/netlabel/netlabel_addrlist.o
  CC      net/rfkill/input.o
  CC      drivers/tty/sysrq.o
  CC      net/9p/mod.o
  CC      block/blk-pm.o
  AR      net/ethtool/built-in.a
  CC      net/sunrpc/auth_gss/gss_krb5_crypto.o
  CC      arch/x86/kernel/cpu/hypervisor.o
  CC      kernel/trace/trace_export.o
  CC      kernel/time/tick-common.o
  CC      drivers/acpi/acpica/nssearch.o
  CC      net/core/net-traces.o
  CC      net/netfilter/nf_conntrack_irc.o
  CC      crypto/hash_info.o
  CC      drivers/ata/libata-eh.o
  CC      crypto/rsapubkey.asn1.o
  CC      crypto/rsaprivkey.asn1.o
  CC      drivers/ata/libata-transport.o
  CC      arch/x86/kernel/cpu/mshyperv.o
  CC      kernel/trace/trace_event_perf.o
  AR      crypto/built-in.a
  CC      net/dns_resolver/dns_key.o
  CC      drivers/gpu/drm/virtio/virtgpu_vram.o
  CC      net/mac80211/wpa.o
  CC      net/9p/client.o
  CC      drivers/acpi/acpica/nsutils.o
  AR      net/rfkill/built-in.a
  CC      drivers/acpi/acpica/nswalk.o
  CC      drivers/acpi/acpica/nsxfeval.o
  CC      net/9p/error.o
  CC      net/handshake/alert.o
  CC      drivers/gpu/drm/i915/i915_scatterlist.o
  CC [M]  sound/hda/hdac_i915.o
  CC      net/handshake/genl.o
  CC      drivers/scsi/scsi_lib.o
  CC      block/holder.o
  CC      fs/fat/namei_msdos.o
  CC      fs/ext4/inline.o
  CC      arch/x86/kernel/traps.o
  AR      net/ipv6/netfilter/built-in.a
  CC      drivers/base/cpu.o
  CC      drivers/base/firmware.o
  CC      net/ipv6/af_inet6.o
  AR      drivers/net/phy/qcom/built-in.a
  CC      mm/msync.o
  CC      mm/page_vma_mapped.o
  CC      net/ipv4/tcp_output.o
  CC      drivers/net/phy/mdio-boardinfo.o
  AR      drivers/tty/built-in.a
  AR      drivers/net/pse-pd/built-in.a
  CC      net/mac80211/scan.o
  CC      drivers/net/mdio/acpi_mdio.o
  CC      net/dns_resolver/dns_query.o
  CC      drivers/net/mdio/fwnode_mdio.o
  CC      drivers/acpi/acpica/nsxfname.o
  CC      lib/memcat_p.o
  CC      net/mac80211/offchannel.o
  CC      net/netlabel/netlabel_mgmt.o
  CC      drivers/gpu/drm/virtio/virtgpu_display.o
  CC      net/sunrpc/auth_gss/gss_krb5_keys.o
  CC      kernel/time/tick-broadcast.o
  CC      drivers/base/init.o
  CC      kernel/trace/trace_events_filter.o
  CC      arch/x86/kernel/cpu/debugfs.o
  CC      drivers/ata/libata-trace.o
  CC [M]  sound/hda/intel-dsp-config.o
  CC      drivers/acpi/acpica/nsxfobj.o
  CC      net/netfilter/nf_conntrack_sip.o
  CC      net/ipv4/tcp_timer.o
  CC      drivers/gpu/drm/i915/i915_suspend.o
  AR      block/built-in.a
  CC      drivers/gpu/drm/i915/i915_switcheroo.o
  AR      drivers/gpu/drm/i2c/built-in.a
  CC      arch/x86/kernel/cpu/capflags.o
  AR      drivers/gpu/drm/panel/built-in.a
  CC      drivers/base/map.o
  CC      drivers/base/devres.o
  CC      lib/nmi_backtrace.o
  CC      net/mac80211/ht.o
  CC      mm/pagewalk.o
  CC [M]  sound/hda/intel-nhlt.o
  AR      fs/fat/built-in.a
  CC [M]  sound/hda/intel-sdw-acpi.o
  CC      mm/pgtable-generic.o
  AR      net/dns_resolver/built-in.a
  CC      drivers/acpi/acpica/psargs.o
  LD [M]  sound/hda/snd-hda-core.o
  CC      drivers/net/phy/stubs.o
  CC      lib/objpool.o
  CC      mm/rmap.o
  CC      kernel/ptrace.o
  AR      arch/x86/kernel/cpu/built-in.a
  CC      drivers/net/phy/mdio_devres.o
  CC      net/handshake/netlink.o
  CC      mm/vmalloc.o
  CC      arch/x86/kernel/idt.o
  CC      arch/x86/kernel/irq.o
  AR      drivers/net/mdio/built-in.a
  CC      kernel/time/tick-broadcast-hrtimer.o
  CC      drivers/gpu/drm/virtio/virtgpu_vq.o
  CC      net/wireless/ibss.o
  CC      drivers/acpi/bus.o
  AR      net/sunrpc/auth_gss/built-in.a
  CC      net/handshake/request.o
  CC      net/sunrpc/auth_tls.o
  CC      drivers/net/phy/phy.o
  CC      net/netlabel/netlabel_unlabeled.o
  CC      drivers/gpu/drm/i915/i915_sysfs.o
  CC      lib/plist.o
  CC      net/9p/protocol.o
  CC      drivers/firewire/init_ohci1394_dma.o
  CC      drivers/acpi/acpica/psloop.o
  CC      drivers/cdrom/cdrom.o
  CC      drivers/base/attribute_container.o
  LD [M]  sound/hda/snd-intel-sdw-acpi.o
  LD [M]  sound/hda/snd-intel-dspcfg.o
  CC      sound/sound_core.o
  CC      drivers/base/transport_class.o
  CC      kernel/time/tick-oneshot.o
  CC      fs/ext4/inode.o
  CC      drivers/base/topology.o
  CC      arch/x86/kernel/irq_32.o
  CC      net/sunrpc/auth_unix.o
  CC      net/ipv6/anycast.o
  CC      arch/x86/kernel/dumpstack_32.o
  CC      net/sunrpc/svc.o
  AR      drivers/auxdisplay/built-in.a
  CC      drivers/net/phy/phy-c45.o
  CC      drivers/scsi/constants.o
  CC      drivers/pcmcia/cs.o
  CC      drivers/net/phy/phy-core.o
  CC      drivers/acpi/acpica/psobject.o
  CC      drivers/pcmcia/socket_sysfs.o
  CC      net/wireless/sme.o
  CC      sound/last.o
  CC      net/mac80211/agg-tx.o
  CC      fs/ext4/ioctl.o
  CC      arch/x86/kernel/time.o
  CC      kernel/trace/trace_events_trigger.o
  CC      drivers/gpu/drm/i915/i915_utils.o
  CC      kernel/time/tick-sched.o
  AR      drivers/firewire/built-in.a
  CC      kernel/time/timer_migration.o
  CC      drivers/usb/common/common.o
  CC      drivers/ata/libata-sata.o
  CC      net/ipv4/tcp_ipv4.o
  CC      drivers/acpi/glue.o
  CC      drivers/usb/core/usb.o
  CC      drivers/base/container.o
  CC      net/9p/trans_common.o
  CC      kernel/trace/trace_eprobe.o
  CC      kernel/user.o
  CC      drivers/acpi/acpica/psopcode.o
  CC      drivers/gpu/drm/virtio/virtgpu_fence.o
  AR      sound/built-in.a
  CC      drivers/base/property.o
  CC      net/wireless/chan.o
  AR      drivers/usb/phy/built-in.a
  CC      drivers/usb/mon/mon_main.o
  CC      net/wireless/ethtool.o
  CC      net/netfilter/nf_nat_core.o
  CC      drivers/usb/mon/mon_stat.o
  CC      drivers/scsi/scsi_lib_dma.o
  CC      drivers/base/cacheinfo.o
  CC      drivers/pcmcia/cardbus.o
  CC      drivers/acpi/acpica/psopinfo.o
  CC      net/handshake/tlshd.o
  CC      drivers/acpi/scan.o
  CC      kernel/trace/trace_kprobe.o
  CC      drivers/usb/mon/mon_text.o
  CC      drivers/gpu/drm/i915/intel_clock_gating.o
  CC      net/netlabel/netlabel_cipso_v4.o
  CC      arch/x86/kernel/ioport.o
  CC      net/9p/trans_fd.o
  CC      drivers/usb/common/debug.o
  CC      net/netlabel/netlabel_calipso.o
  CC      drivers/gpu/drm/i915/intel_device_info.o
  CC      net/ipv6/ip6_output.o
  CC      lib/radix-tree.o
  CC      kernel/trace/error_report-traces.o
  CC      net/9p/trans_virtio.o
  AR      drivers/usb/common/built-in.a
  CC      drivers/usb/host/pci-quirks.o
  CC      drivers/acpi/acpica/psparse.o
  AR      drivers/cdrom/built-in.a
  CC      drivers/acpi/acpica/psscope.o
  CC      drivers/net/phy/phy_device.o
  CC      drivers/pcmcia/ds.o
  CC      drivers/usb/host/ehci-hcd.o
  CC      arch/x86/kernel/dumpstack.o
  CC      drivers/net/phy/linkmode.o
  CC      drivers/gpu/drm/virtio/virtgpu_object.o
  CC      drivers/usb/core/hub.o
  CC      net/core/selftests.o
  CC      drivers/net/phy/mdio_bus.o
  CC      drivers/gpu/drm/i915/intel_memory_region.o
  CC      drivers/ata/libata-sff.o
  CC      drivers/usb/class/usblp.o
  CC      drivers/scsi/scsi_scan.o
  GEN     drivers/scsi/scsi_devinfo_tbl.c
  CC      drivers/usb/core/hcd.o
  CC      kernel/trace/power-traces.o
  CC      drivers/acpi/acpica/pstree.o
  CC      drivers/usb/storage/scsiglue.o
  CC      drivers/usb/core/urb.o
  CC      drivers/base/swnode.o
  CC      drivers/usb/mon/mon_bin.o
  AR      drivers/gpu/drm/bridge/analogix/built-in.a
  AR      drivers/gpu/drm/bridge/cadence/built-in.a
  AR      drivers/gpu/drm/bridge/imx/built-in.a
  AR      drivers/gpu/drm/bridge/synopsys/built-in.a
  AR      drivers/gpu/drm/bridge/built-in.a
  AR      drivers/gpu/drm/hisilicon/built-in.a
  CC      net/handshake/trace.o
  CC      drivers/scsi/scsi_devinfo.o
  CC      kernel/trace/rpm-traces.o
  CC      kernel/time/vsyscall.o
  CC      drivers/ata/libata-pmp.o
  CC      lib/ratelimit.o
  CC      drivers/net/phy/mdio_device.o
  CC      arch/x86/kernel/nmi.o
  CC      drivers/acpi/acpica/psutils.o
  CC      mm/process_vm_access.o
  CC      drivers/gpu/drm/virtio/virtgpu_debugfs.o
  CC      drivers/usb/host/ehci-pci.o
  CC      kernel/time/timekeeping_debug.o
  AR      drivers/usb/misc/built-in.a
  CC      drivers/usb/early/ehci-dbgp.o
  CC      net/netfilter/nf_nat_proto.o
  CC      drivers/gpu/drm/i915/intel_pcode.o
  AR      net/netlabel/built-in.a
  CC      drivers/scsi/scsi_sysctl.o
  CC      drivers/acpi/mipi-disco-img.o
  CC      lib/rbtree.o
  CC      drivers/acpi/acpica/pswalk.o
  CC      drivers/pcmcia/pcmcia_resource.o
  AR      drivers/usb/class/built-in.a
  CC      kernel/time/namespace.o
  CC      drivers/gpu/drm/i915/intel_region_ttm.o
  AR      net/9p/built-in.a
  CC      drivers/ata/libata-acpi.o
  CC      drivers/gpu/drm/virtio/virtgpu_plane.o
  CC      arch/x86/kernel/ldt.o
  CC      drivers/usb/host/ohci-hcd.o
  CC      drivers/base/auxiliary.o
  CC      drivers/usb/storage/protocol.o
  CC      drivers/usb/core/message.o
  CC      drivers/acpi/resource.o
  CC      drivers/acpi/acpica/psxface.o
  CC      lib/seq_buf.o
  CC      net/sunrpc/svcsock.o
  CC      net/mac80211/agg-rx.o
  CC      net/core/ptp_classifier.o
  CC      kernel/trace/trace_dynevent.o
  CC      drivers/acpi/acpi_processor.o
  AR      drivers/usb/mon/built-in.a
  CC      drivers/usb/core/driver.o
  CC      drivers/gpu/drm/virtio/virtgpu_ioctl.o
  CC      fs/ext4/mballoc.o
  CC      drivers/usb/core/config.o
  CC      arch/x86/kernel/setup.o
  CC      drivers/ata/libata-pata-timings.o
  CC      drivers/gpu/drm/i915/intel_runtime_pm.o
  CC      mm/page_alloc.o
  CC      drivers/scsi/scsi_proc.o
  CC      arch/x86/kernel/x86_init.o
  CC      drivers/base/devtmpfs.o
  CC      drivers/base/module.o
  CC      drivers/net/phy/swphy.o
  CC      drivers/acpi/processor_core.o
  CC      drivers/acpi/acpica/rsaddr.o
  CC      drivers/base/devcoredump.o
  AR      drivers/usb/early/built-in.a
  CC      drivers/gpu/drm/i915/intel_sbi.o
  AR      kernel/time/built-in.a
  CC      drivers/acpi/processor_pdc.o
  AR      drivers/net/pcs/built-in.a
  CC      drivers/usb/core/file.o
  CC      net/sunrpc/svcauth.o
  CC      net/ipv4/tcp_minisocks.o
  CC      net/sunrpc/svcauth_unix.o
  CC      lib/siphash.o
  AR      net/handshake/built-in.a
  CC      net/ipv4/tcp_cong.o
  CC      net/ipv4/tcp_metrics.o
  CC      drivers/gpu/drm/i915/intel_step.o
  CC      kernel/trace/trace_probe.o
  CC      net/sunrpc/addr.o
  CC      drivers/gpu/drm/virtio/virtgpu_prime.o
  CC      drivers/usb/storage/transport.o
  CC      drivers/pcmcia/cistpl.o
  CC      drivers/acpi/acpica/rscalc.o
  CC      drivers/net/phy/fixed_phy.o
  CC      fs/isofs/namei.o
  CC      drivers/usb/host/ohci-pci.o
  CC      net/ipv6/ip6_input.o
  CC      fs/isofs/inode.o
  CC      drivers/acpi/ec.o
  CC      drivers/acpi/dock.o
  CC      net/netfilter/nf_nat_helper.o
  CC      drivers/usb/host/uhci-hcd.o
  CC      fs/isofs/dir.o
  CC      drivers/usb/host/xhci.o
  CC      drivers/ata/ahci.o
  CC      fs/isofs/util.o
  CC      drivers/acpi/acpica/rscreate.o
  CC      drivers/base/platform-msi.o
  CC      net/ipv6/addrconf.o
  CC      drivers/scsi/scsi_debugfs.o
  CC      net/core/netprio_cgroup.o
  CC      lib/string.o
  CC      fs/ext4/migrate.o
  CC      lib/timerqueue.o
  CC      drivers/acpi/acpica/rsdumpinfo.o
  CC      fs/nfs/client.o
  CC      arch/x86/kernel/i8259.o
  CC      fs/nfs/dir.o
  CC      lib/vsprintf.o
  CC      drivers/usb/core/buffer.o
  CC      lib/win_minmax.o
  CC      drivers/pcmcia/pcmcia_cis.o
  CC      lib/xarray.o
  CC      drivers/gpu/drm/virtio/virtgpu_trace_points.o
  CC      drivers/net/phy/realtek.o
  CC      drivers/gpu/drm/i915/intel_uncore.o
  CC      fs/isofs/rock.o
  CC      fs/isofs/export.o
  CC      fs/isofs/joliet.o
  CC      drivers/acpi/acpica/rsinfo.o
  CC      drivers/base/physical_location.o
  CC      net/wireless/mesh.o
  AR      drivers/net/ethernet/3com/built-in.a
  CC      drivers/acpi/acpica/rsio.o
  CC      drivers/net/ethernet/8390/ne2k-pci.o
  CC      drivers/ata/libahci.o
  CC      drivers/gpu/drm/virtio/virtgpu_submit.o
  CC      drivers/usb/storage/usb.o
  AR      drivers/net/wireless/admtek/built-in.a
  CC      drivers/usb/storage/initializers.o
  CC      fs/ext4/mmp.o
  AR      drivers/net/wireless/ath/built-in.a
  CC      net/core/netclassid_cgroup.o
  AR      drivers/net/wireless/atmel/built-in.a
  AR      drivers/net/wireless/broadcom/built-in.a
  AR      drivers/net/wireless/intel/built-in.a
  AR      drivers/net/wireless/intersil/built-in.a
  AR      drivers/net/wireless/marvell/built-in.a
  AR      drivers/net/wireless/mediatek/built-in.a
  AR      drivers/net/wireless/microchip/built-in.a
  AR      drivers/net/wireless/purelifi/built-in.a
  CC      arch/x86/kernel/irqinit.o
  CC      drivers/base/trace.o
  AR      drivers/net/wireless/quantenna/built-in.a
  AR      drivers/net/wireless/ralink/built-in.a
  AR      drivers/net/wireless/realtek/built-in.a
  AR      drivers/net/wireless/rsi/built-in.a
  AR      drivers/net/wireless/silabs/built-in.a
  CC      drivers/scsi/scsi_trace.o
  AR      drivers/net/wireless/st/built-in.a
  AR      drivers/net/wireless/ti/built-in.a
  AR      drivers/net/wireless/zydas/built-in.a
  CC      drivers/acpi/acpica/rsirq.o
  AR      drivers/net/wireless/virtual/built-in.a
  AR      drivers/net/wireless/built-in.a
  CC      drivers/usb/core/sysfs.o
  CC      net/sunrpc/rpcb_clnt.o
  CC      kernel/trace/trace_uprobe.o
  CC      kernel/signal.o
  CC      drivers/scsi/scsi_logging.o
  CC      drivers/scsi/scsi_pm.o
  CC      fs/isofs/compress.o
  CC      drivers/ata/ata_piix.o
  CC      drivers/pcmcia/rsrc_mgr.o
  CC      net/ipv4/tcp_fastopen.o
  CC      drivers/acpi/acpica/rslist.o
  CC      kernel/sys.o
  CC      kernel/trace/rethook.o
  CC      net/core/dst_cache.o
  AR      drivers/net/usb/built-in.a
  CC      drivers/acpi/acpica/rsmemory.o
  CC      drivers/usb/core/endpoint.o
  CC      net/netfilter/nf_nat_masquerade.o
  CC      drivers/pcmcia/rsrc_nonstatic.o
  CC      drivers/pcmcia/yenta_socket.o
  CC      net/sunrpc/timer.o
  CC      net/ipv6/addrlabel.o
  CC      drivers/usb/storage/sierra_ms.o
  CC      net/mac80211/vht.o
  AR      drivers/net/phy/built-in.a
  AR      drivers/gpu/drm/virtio/built-in.a
  CC      fs/ext4/move_extent.o
  CC      net/core/gro_cells.o
  CC      net/sunrpc/xdr.o
  CC      lib/lockref.o
  CC      fs/ext4/namei.o
  CC      drivers/acpi/acpica/rsmisc.o
  CC      drivers/net/ethernet/8390/8390.o
  AR      drivers/base/built-in.a
  CC      kernel/umh.o
  CC      net/wireless/ap.o
  CC      net/core/failover.o
  CC      drivers/usb/storage/option_ms.o
  CC      net/sunrpc/sunrpc_syms.o
  CC      lib/bcd.o
  CC      arch/x86/kernel/jump_label.o
  CC      drivers/input/serio/serio.o
  CC      drivers/input/keyboard/atkbd.o
  CC      drivers/rtc/lib.o
  CC      drivers/i2c/algos/i2c-algo-bit.o
  CC      drivers/rtc/class.o
  CC      drivers/i2c/busses/i2c-i801.o
  CC      drivers/input/serio/i8042.o
  CC      drivers/scsi/scsi_bsg.o
  CC      drivers/usb/core/devio.o
  CC      drivers/acpi/acpica/rsserial.o
  AR      fs/isofs/built-in.a
  CC      fs/exportfs/expfs.o
  CC      drivers/input/mouse/psmouse-base.o
  AR      drivers/i2c/muxes/built-in.a
  CC      kernel/workqueue.o
  CC      drivers/scsi/scsi_common.o
  CC      drivers/usb/core/notify.o
  CC      net/wireless/trace.o
  CC      drivers/acpi/acpica/rsutils.o
  CC      mm/init-mm.o
  CC      drivers/usb/host/xhci-mem.o
  CC      drivers/usb/host/xhci-ext-caps.o
  CC      arch/x86/kernel/irq_work.o
  CC      net/ipv4/tcp_rate.o
  CC      drivers/usb/storage/usual-tables.o
  CC      drivers/ata/pata_amd.o
  CC      drivers/input/serio/serport.o
  CC      net/wireless/ocb.o
  CC      net/ipv6/route.o
  CC      drivers/rtc/interface.o
  AR      drivers/pcmcia/built-in.a
  CC      drivers/acpi/acpica/rsxface.o
  CC      net/mac80211/he.o
  CC      lib/sort.o
  CC      net/netfilter/nf_nat_ftp.o
  AR      drivers/gpu/drm/mxsfb/built-in.a
  CC      drivers/scsi/scsi_transport_spi.o
  CC      kernel/pid.o
  AR      fs/exportfs/built-in.a
  AR      drivers/gpu/drm/tiny/built-in.a
  AR      net/core/built-in.a
  CC      fs/lockd/clntlock.o
  AR      drivers/net/ethernet/8390/built-in.a
  AR      drivers/gpu/drm/xlnx/built-in.a
  CC      lib/parser.o
  CC      fs/nls/nls_base.o
  CC      fs/ext4/page-io.o
  CC      fs/nls/nls_cp437.o
  AR      drivers/net/ethernet/adaptec/built-in.a
  AR      drivers/net/ethernet/agere/built-in.a
  AR      drivers/net/ethernet/alacritech/built-in.a
  AR      drivers/net/ethernet/alteon/built-in.a
  CC      drivers/ata/pata_oldpiix.o
  AR      drivers/i2c/algos/built-in.a
  AR      drivers/net/ethernet/amazon/built-in.a
  AR      drivers/gpu/drm/gud/built-in.a
  CC      drivers/gpu/drm/i915/intel_wakeref.o
  CC      net/ipv6/ip6_fib.o
  AR      kernel/trace/built-in.a
  AR      drivers/net/ethernet/amd/built-in.a
  AR      drivers/i3c/built-in.a
  AR      drivers/net/ethernet/aquantia/built-in.a
  AR      drivers/input/keyboard/built-in.a
  AR      fs/unicode/built-in.a
  CC      kernel/task_work.o
  CC      lib/debug_locks.o
  AR      drivers/net/ethernet/arc/built-in.a
  CC      fs/autofs/init.o
  AR      drivers/net/ethernet/asix/built-in.a
  CC      drivers/usb/core/generic.o
  AR      drivers/media/i2c/built-in.a
  AR      drivers/net/ethernet/atheros/built-in.a
  CC      kernel/extable.o
  AR      drivers/media/tuners/built-in.a
  AR      drivers/net/ethernet/cadence/built-in.a
  AR      drivers/media/rc/keymaps/built-in.a
  CC      drivers/net/ethernet/broadcom/bnx2.o
  CC      mm/memblock.o
  AR      drivers/media/rc/built-in.a
  AR      drivers/media/common/b2c2/built-in.a
  AR      drivers/media/common/saa7146/built-in.a
  CC      drivers/acpi/acpica/tbdata.o
  AR      drivers/media/common/siano/built-in.a
  AR      drivers/media/platform/allegro-dvt/built-in.a
  AR      drivers/media/common/v4l2-tpg/built-in.a
  AR      drivers/media/common/videobuf2/built-in.a
  AR      drivers/media/platform/amlogic/meson-ge2d/built-in.a
  AR      drivers/media/common/built-in.a
  AR      drivers/usb/storage/built-in.a
  AR      drivers/media/platform/amlogic/built-in.a
  CC      kernel/params.o
  CC      drivers/acpi/acpica/tbfadt.o
  CC      fs/9p/vfs_super.o
  AR      drivers/media/platform/amphion/built-in.a
  CC      fs/9p/vfs_inode.o
  AR      drivers/i2c/busses/built-in.a
  CC      lib/random32.o
  AR      drivers/media/platform/aspeed/built-in.a
  CC      drivers/i2c/i2c-boardinfo.o
  CC      lib/bust_spinlocks.o
  AR      drivers/media/platform/atmel/built-in.a
  CC      drivers/input/mouse/synaptics.o
  CC      fs/nls/nls_ascii.o
  AR      drivers/media/platform/broadcom/built-in.a
  AR      drivers/media/platform/cadence/built-in.a
  CC      drivers/input/serio/libps2.o
  AR      drivers/media/platform/chips-media/coda/built-in.a
  CC      fs/nls/nls_iso8859-1.o
  AR      drivers/media/platform/chips-media/wave5/built-in.a
  AR      drivers/media/platform/chips-media/built-in.a
  AR      drivers/media/platform/intel/built-in.a
  AR      drivers/media/platform/marvell/built-in.a
  AR      drivers/media/platform/mediatek/jpeg/built-in.a
  AR      drivers/media/platform/mediatek/mdp/built-in.a
  AR      drivers/media/pci/ttpci/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/common/built-in.a
  AR      drivers/media/pci/b2c2/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/encoder/built-in.a
  AR      drivers/media/pci/pluto2/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/decoder/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/built-in.a
  AR      drivers/media/pci/dm1105/built-in.a
  CC      fs/9p/vfs_inode_dotl.o
  CC      fs/nfs/file.o
  AR      drivers/media/pci/pt1/built-in.a
  AR      drivers/media/platform/mediatek/vpu/built-in.a
  CC      drivers/ata/pata_sch.o
  AR      drivers/media/pci/pt3/built-in.a
  AR      drivers/media/platform/mediatek/mdp3/built-in.a
  CC      arch/x86/kernel/probe_roms.o
  AR      drivers/media/platform/mediatek/built-in.a
  AR      drivers/media/pci/mantis/built-in.a
  AR      drivers/media/pci/ngene/built-in.a
  CC      kernel/kthread.o
  AR      drivers/media/platform/microchip/built-in.a
  AR      drivers/media/pci/ddbridge/built-in.a
  AR      drivers/media/platform/nuvoton/built-in.a
  CC      kernel/sys_ni.o
  AR      drivers/media/pci/saa7146/built-in.a
  CC      fs/autofs/inode.o
  CC      drivers/acpi/acpica/tbfind.o
  AR      drivers/media/pci/smipcie/built-in.a
  AR      drivers/media/platform/nvidia/tegra-vde/built-in.a
  CC      fs/nls/nls_utf8.o
  AR      drivers/media/platform/nvidia/built-in.a
  CC      net/mac80211/s1g.o
  AR      drivers/media/pci/netup_unidvb/built-in.a
  AR      drivers/media/pci/intel/ipu3/built-in.a
  AR      drivers/media/platform/nxp/dw100/built-in.a
  AR      drivers/media/platform/qcom/camss/built-in.a
  AR      drivers/media/pci/intel/ivsc/built-in.a
  AR      drivers/media/platform/nxp/imx-jpeg/built-in.a
  AR      drivers/media/pci/intel/built-in.a
  CC      net/devres.o
  AR      drivers/media/platform/qcom/venus/built-in.a
  AR      drivers/media/platform/qcom/built-in.a
  AR      drivers/media/platform/nxp/imx8-isi/built-in.a
  AR      drivers/media/pci/built-in.a
  CC      fs/ext4/readpage.o
  AR      drivers/media/platform/nxp/built-in.a
  CC      drivers/input/mouse/focaltech.o
  AR      drivers/net/ethernet/brocade/built-in.a
  AR      drivers/media/platform/renesas/rcar-vin/built-in.a
  CC      drivers/rtc/nvmem.o
  CC      net/ipv4/tcp_recovery.o
  AR      drivers/media/platform/rockchip/rga/built-in.a
  AR      drivers/media/platform/renesas/rzg2l-cru/built-in.a
  CC      net/netfilter/nf_nat_irc.o
  AR      drivers/media/platform/rockchip/rkisp1/built-in.a
  AR      drivers/media/platform/renesas/vsp1/built-in.a
  AR      drivers/media/platform/rockchip/built-in.a
  AR      drivers/net/ethernet/cavium/common/built-in.a
  AR      drivers/media/platform/renesas/built-in.a
  CC      drivers/usb/core/quirks.o
  CC      lib/kasprintf.o
  AR      drivers/net/ethernet/cavium/thunder/built-in.a
  AR      drivers/net/ethernet/chelsio/built-in.a
  CC      drivers/usb/core/devices.o
  AR      drivers/net/ethernet/cavium/liquidio/built-in.a
  AR      drivers/media/platform/samsung/exynos-gsc/built-in.a
  AR      drivers/net/ethernet/cisco/built-in.a
  AR      drivers/net/ethernet/cavium/octeon/built-in.a
  CC      lib/bitmap.o
  AR      drivers/media/platform/samsung/exynos4-is/built-in.a
  AR      drivers/net/ethernet/cavium/built-in.a
  CC      drivers/gpu/drm/i915/vlv_sideband.o
  AR      drivers/media/platform/samsung/s3c-camif/built-in.a
  CC      net/ipv6/ipv6_sockglue.o
  AR      drivers/media/platform/samsung/s5p-g2d/built-in.a
  CC      net/mac80211/ibss.o
  AR      drivers/media/platform/samsung/s5p-jpeg/built-in.a
  CC      fs/lockd/clntproc.o
  CC      fs/lockd/clntxdr.o
  CC      drivers/ata/pata_mpiix.o
  AR      drivers/media/platform/samsung/s5p-mfc/built-in.a
  AR      drivers/media/platform/samsung/built-in.a
  CC      drivers/i2c/i2c-core-base.o
  AR      drivers/media/usb/b2c2/built-in.a
  CC      drivers/acpi/acpica/tbinstal.o
  AR      drivers/input/serio/built-in.a
  AR      drivers/media/usb/dvb-usb/built-in.a
  AR      drivers/media/platform/st/sti/bdisp/built-in.a
  AR      fs/nls/built-in.a
  AR      drivers/media/platform/st/sti/c8sectpfe/built-in.a
  AR      drivers/media/usb/dvb-usb-v2/built-in.a
  AR      drivers/pps/clients/built-in.a
  AR      drivers/media/platform/st/sti/delta/built-in.a
  AR      drivers/media/usb/s2255/built-in.a
  AR      drivers/media/platform/st/sti/hva/built-in.a
  AR      drivers/media/platform/st/stm32/built-in.a
  AR      drivers/pps/generators/built-in.a
  CC      arch/x86/kernel/sys_ia32.o
  CC      net/mac80211/iface.o
  CC      drivers/pps/pps.o
  AR      drivers/media/platform/st/built-in.a
  AR      drivers/media/usb/ttusb-budget/built-in.a
  AR      drivers/media/usb/siano/built-in.a
  CC      fs/lockd/host.o
  AR      drivers/media/usb/ttusb-dec/built-in.a
  AR      drivers/media/platform/sunxi/sun4i-csi/built-in.a
  AR      drivers/media/platform/ti/am437x/built-in.a
  AR      drivers/media/usb/built-in.a
  AR      drivers/media/platform/sunxi/sun6i-csi/built-in.a
  AR      drivers/media/platform/ti/cal/built-in.a
  AR      drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
  CC      drivers/pps/kapi.o
  AR      drivers/media/platform/ti/vpe/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
  AR      drivers/media/platform/ti/davinci/built-in.a
  CC      drivers/scsi/virtio_scsi.o
  AR      drivers/media/platform/sunxi/sun8i-di/built-in.a
  AR      drivers/media/platform/ti/j721e-csi2rx/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-rotate/built-in.a
  AR      drivers/media/mmc/siano/built-in.a
  AR      drivers/media/platform/sunxi/built-in.a
  AR      drivers/media/platform/ti/omap/built-in.a
  AR      drivers/media/mmc/built-in.a
  CC      drivers/pps/sysfs.o
  CC      net/ipv4/tcp_ulp.o
  AR      drivers/media/platform/ti/omap3isp/built-in.a
  AR      drivers/media/platform/verisilicon/built-in.a
  AR      drivers/media/platform/ti/built-in.a
  CC      lib/scatterlist.o
  AR      drivers/gpu/drm/solomon/built-in.a
  CC      drivers/rtc/dev.o
  AR      drivers/media/platform/via/built-in.a
  CC      kernel/nsproxy.o
  AR      drivers/media/platform/xilinx/built-in.a
  AR      drivers/media/platform/built-in.a
  CC      mm/slub.o
  CC      lib/list_sort.o
  CC      drivers/rtc/proc.o
  AR      drivers/media/firewire/built-in.a
  AR      drivers/media/spi/built-in.a
  CC      fs/lockd/svc.o
  CC      fs/9p/vfs_addr.o
  CC      drivers/acpi/acpica/tbprint.o
  AR      drivers/media/test-drivers/built-in.a
  CC      fs/autofs/root.o
  CC      fs/autofs/symlink.o
  AR      drivers/media/built-in.a
  CC      drivers/input/mouse/alps.o
  CC      net/wireless/pmsr.o
  CC      arch/x86/kernel/ksysfs.o
  CC      drivers/usb/core/phy.o
  CC      drivers/usb/host/xhci-ring.o
  CC      drivers/acpi/acpica/tbutils.o
  CC      drivers/ata/ata_generic.o
  CC      drivers/usb/core/port.o
  CC      net/ipv4/tcp_offload.o
  CC      drivers/usb/host/xhci-hub.o
  CC      drivers/input/mouse/byd.o
  AR      drivers/pps/built-in.a
  CC      net/ipv6/ndisc.o
  CC      net/sunrpc/cache.o
  CC      net/ipv6/udp.o
  CC      arch/x86/kernel/bootflag.o
  CC      fs/lockd/svclock.o
  CC      fs/ext4/resize.o
  CC      net/netfilter/nf_nat_sip.o
  CC      drivers/gpu/drm/i915/vlv_suspend.o
  CC      drivers/rtc/sysfs.o
  CC      drivers/acpi/acpica/tbxface.o
  CC      drivers/ptp/ptp_clock.o
  CC      drivers/gpu/drm/i915/soc/intel_dram.o
  CC      drivers/power/supply/power_supply_core.o
  CC      drivers/hwmon/hwmon.o
  AR      drivers/thermal/broadcom/built-in.a
  CC      fs/autofs/waitq.o
  CC      fs/autofs/expire.o
  AR      drivers/thermal/samsung/built-in.a
  CC      drivers/thermal/intel/intel_tcc.o
  CC      drivers/scsi/sd.o
  CC      drivers/scsi/sr.o
  CC      arch/x86/kernel/e820.o
  CC      drivers/ptp/ptp_chardev.o
  CC      net/sunrpc/rpc_pipe.o
  CC      fs/9p/vfs_file.o
  CC      lib/uuid.o
  CC      drivers/thermal/intel/therm_throt.o
  CC      fs/nfs/getroot.o
  CC      fs/autofs/dev-ioctl.o
  CC [M]  drivers/thermal/intel/x86_pkg_temp_thermal.o
  CC      lib/iov_iter.o
  GEN     net/wireless/shipped-certs.c
  CC      kernel/notifier.o
  CC      drivers/acpi/acpica/tbxfload.o
  CC      kernel/ksysfs.o
  AR      drivers/ata/built-in.a
  CC      lib/clz_ctz.o
  CC      fs/lockd/svcshare.o
  CC      drivers/usb/core/hcd-pci.o
  CC      fs/lockd/svcproc.o
  CC      drivers/rtc/rtc-mc146818-lib.o
  CC      fs/lockd/svcsubs.o
  CC      drivers/input/mouse/logips2pp.o
  CC      drivers/i2c/i2c-core-smbus.o
  CC      net/ipv6/udplite.o
  CC      drivers/acpi/acpica/tbxfroot.o
  CC      arch/x86/kernel/pci-dma.o
  CC      drivers/power/supply/power_supply_sysfs.o
  CC      drivers/ptp/ptp_sysfs.o
  CC      fs/lockd/mon.o
  AR      drivers/watchdog/built-in.a
  CC      fs/lockd/trace.o
  CC      net/ipv4/tcp_plb.o
  CC      fs/9p/vfs_dir.o
  CC      drivers/input/mouse/lifebook.o
  CC      net/mac80211/link.o
  CC      drivers/i2c/i2c-core-acpi.o
  CC      fs/lockd/xdr.o
  CC      drivers/i2c/i2c-smbus.o
  CC      kernel/cred.o
  CC      net/mac80211/rate.o
  CC      drivers/gpu/drm/i915/soc/intel_gmch.o
  AR      fs/autofs/built-in.a
  CC      net/netfilter/x_tables.o
  CC      drivers/acpi/acpica/utaddress.o
  CC      lib/bsearch.o
  CC      drivers/scsi/sr_ioctl.o
  AR      drivers/hwmon/built-in.a
  CC      drivers/rtc/rtc-cmos.o
  CC      drivers/md/md.o
  CC      drivers/scsi/sr_vendor.o
  AR      drivers/thermal/intel/built-in.a
  CC      drivers/gpu/drm/i915/soc/intel_pch.o
  AR      drivers/thermal/st/built-in.a
  AR      fs/hostfs/built-in.a
  CC      drivers/usb/core/usb-acpi.o
  CC      drivers/acpi/acpica/utalloc.o
  AR      drivers/thermal/qcom/built-in.a
  CC      drivers/power/supply/power_supply_leds.o
  CC      drivers/cpufreq/cpufreq.o
  AR      drivers/thermal/tegra/built-in.a
  CC      kernel/reboot.o
  AR      drivers/thermal/mediatek/built-in.a
  CC      drivers/thermal/thermal_core.o
  CC      drivers/usb/host/xhci-dbg.o
  CC      fs/nfs/inode.o
  CC      arch/x86/kernel/quirks.o
  CC      fs/ext4/super.o
  CC      fs/ext4/symlink.o
  CC      drivers/input/mouse/trackpoint.o
  CC      fs/nfs/super.o
  CC      fs/ext4/sysfs.o
  CC      drivers/acpi/acpica/utascii.o
  CC      fs/9p/vfs_dentry.o
  CC      drivers/scsi/sg.o
  CC      lib/find_bit.o
  CC      fs/nfs/io.o
  CC      drivers/power/supply/power_supply_hwmon.o
  CC      drivers/ptp/ptp_vclock.o
  CC      net/sunrpc/sysfs.o
  CC      drivers/input/mouse/cypress_ps2.o
  CC      drivers/md/md-bitmap.o
  CC      mm/madvise.o
  CC      drivers/acpi/acpica/utbuffer.o
  CC      fs/nfs/direct.o
  CC      drivers/ptp/ptp_kvm_x86.o
  CC      net/ipv6/raw.o
  CC      net/ipv6/icmp.o
  AR      drivers/usb/core/built-in.a
  CC      drivers/acpi/acpica/utcksum.o
  CC      drivers/net/ethernet/broadcom/tg3.o
  CC      drivers/usb/host/xhci-trace.o
  CC      net/ipv6/mcast.o
  CC      fs/lockd/clnt4xdr.o
  CC      fs/nfs/pagelist.o
  AR      drivers/i2c/built-in.a
  CC      lib/llist.o
  CC      drivers/input/mouse/psmouse-smbus.o
  CC      drivers/scsi/scsi_sysfs.o
  AR      drivers/rtc/built-in.a
  AR      drivers/net/ethernet/cortina/built-in.a
  CC      drivers/net/mii.o
  CC      net/mac80211/michael.o
  CC      net/netfilter/xt_tcpudp.o
  CC      lib/lwq.o
  AR      drivers/net/ethernet/dec/tulip/built-in.a
  AR      drivers/net/ethernet/dec/built-in.a
  AR      drivers/power/supply/built-in.a
  AR      drivers/power/built-in.a
  CC      net/ipv4/datagram.o
  CC      arch/x86/kernel/kdebugfs.o
  CC      drivers/cpuidle/governors/menu.o
  CC      arch/x86/kernel/alternative.o
  CC      fs/lockd/xdr4.o
  CC      fs/lockd/svc4proc.o
  AR      drivers/net/ethernet/dlink/built-in.a
  CC      kernel/async.o
  CC      fs/9p/v9fs.o
  CC      fs/9p/fid.o
  CC      drivers/net/loopback.o
  CC      net/mac80211/tkip.o
  CC      drivers/gpu/drm/i915/i915_memcpy.o
  CC      fs/9p/xattr.o
  CC      drivers/acpi/acpica/utcopy.o
  CC      lib/memweight.o
  CC      drivers/gpu/drm/i915/i915_mm.o
  CC      fs/ext4/xattr.o
  CC      lib/kfifo.o
  CC      drivers/ptp/ptp_kvm_common.o
  CC      kernel/range.o
  CC      net/netfilter/xt_CONNSECMARK.o
  CC      kernel/smpboot.o
  CC      net/netfilter/xt_NFLOG.o
  CC      drivers/cpuidle/governors/haltpoll.o
  CC      drivers/thermal/thermal_sysfs.o
  CC      net/mac80211/aes_cmac.o
  AR      drivers/net/ethernet/emulex/built-in.a
  CC      kernel/ucount.o
  CC      arch/x86/kernel/i8253.o
  CC      drivers/acpi/acpica/utexcep.o
  AR      drivers/input/mouse/built-in.a
  AR      drivers/input/joystick/built-in.a
  CC      net/ipv4/raw.o
  AR      drivers/input/tablet/built-in.a
  CC      net/sunrpc/svc_xprt.o
  AR      drivers/input/touchscreen/built-in.a
  AR      drivers/input/misc/built-in.a
  CC      drivers/input/input.o
  CC      drivers/input/input-compat.o
  CC      drivers/acpi/pci_root.o
  CC      net/mac80211/aes_gmac.o
  CC      drivers/input/input-mt.o
  AR      fs/9p/built-in.a
  CC      fs/nfs/read.o
  CC      fs/debugfs/inode.o
  CC      drivers/cpufreq/freq_table.o
  AR      drivers/ptp/built-in.a
  CC      drivers/acpi/pci_link.o
  CC      drivers/acpi/acpica/utdebug.o
  CC      fs/lockd/procfs.o
  AR      drivers/mmc/built-in.a
  CC      net/netfilter/xt_SECMARK.o
  CC      drivers/cpufreq/cpufreq_performance.o
  CC      fs/debugfs/file.o
  CC      kernel/regset.o
  CC      mm/page_io.o
  CC      lib/percpu-refcount.o
  AR      drivers/scsi/built-in.a
  CC      arch/x86/kernel/hw_breakpoint.o
  CC      drivers/input/input-poller.o
  CC      net/ipv4/udp.o
  CC      net/netfilter/xt_TCPMSS.o
  CC      drivers/thermal/thermal_trip.o
  CC      drivers/gpu/drm/i915/i915_sw_fence.o
  CC      lib/rhashtable.o
  CC      drivers/net/netconsole.o
  CC      drivers/thermal/thermal_helpers.o
  CC      kernel/ksyms_common.o
  CC      arch/x86/kernel/tsc.o
  CC      net/netfilter/xt_conntrack.o
  CC      drivers/net/virtio_net.o
  CC      drivers/acpi/acpica/utdecode.o
  CC      net/netfilter/xt_policy.o
  CC      mm/swap_state.o
  CC      net/ipv4/udplite.o
  CC      drivers/cpufreq/cpufreq_userspace.o
  CC      net/mac80211/fils_aead.o
  CC      net/mac80211/cfg.o
  CC      drivers/input/ff-core.o
  CC      drivers/md/md-autodetect.o
  CC      drivers/md/dm.o
  AR      drivers/cpuidle/governors/built-in.a
  CC      drivers/acpi/acpica/utdelete.o
  CC      drivers/cpuidle/cpuidle.o
  AR      fs/lockd/built-in.a
  CC      drivers/thermal/thermal_hwmon.o
  CC      fs/tracefs/inode.o
  CC      fs/tracefs/event_inode.o
  CC      net/socket.o
  CC      lib/base64.o
  CC [M]  fs/efivarfs/inode.o
  CC      drivers/gpu/drm/i915/i915_sw_fence_work.o
  CC [M]  fs/efivarfs/file.o
  CC      drivers/acpi/pci_irq.o
  CC      net/mac80211/ethtool.o
  CC      drivers/md/dm-table.o
  CC      drivers/md/dm-target.o
  CC      kernel/groups.o
  CC      lib/once.o
  CC      drivers/usb/host/xhci-debugfs.o
  CC      net/mac80211/rx.o
  CC      drivers/cpufreq/cpufreq_ondemand.o
  CC      drivers/acpi/acpica/uterror.o
  CC      mm/swapfile.o
  AR      fs/debugfs/built-in.a
  CC      mm/swap_slots.o
  CC      drivers/gpu/drm/i915/i915_syncmap.o
  CC      fs/open.o
  CC      drivers/gpu/drm/i915/i915_user_extensions.o
  CC [M]  drivers/gpu/drm/scheduler/sched_main.o
  CC      drivers/gpu/drm/i915/i915_debugfs.o
  CC      drivers/input/touchscreen.o
  CC      drivers/thermal/gov_step_wise.o
  CC [M]  drivers/gpu/drm/scheduler/sched_fence.o
  CC [M]  fs/efivarfs/super.o
  CC      net/ipv4/udp_offload.o
  CC [M]  fs/efivarfs/vars.o
  CC      net/ipv6/reassembly.o
  CC      arch/x86/kernel/tsc_msr.o
  CC      mm/dmapool.o
  CC      mm/hugetlb.o
  CC      lib/refcount.o
  CC      drivers/acpi/acpica/uteval.o
  CC [M]  drivers/gpu/drm/xe/xe_bb.o
  CC      mm/mmu_notifier.o
  CC      net/netfilter/xt_state.o
  CC      lib/rcuref.o
  CC      net/ipv6/tcp_ipv6.o
  CC      drivers/acpi/acpi_apd.o
  CC      drivers/thermal/gov_user_space.o
  CC      mm/migrate.o
  CC      fs/read_write.o
  CC      net/mac80211/spectmgmt.o
  AR      fs/tracefs/built-in.a
  CC      fs/ext4/xattr_hurd.o
  CC      net/sunrpc/xprtmultipath.o
  CC      fs/ext4/xattr_trusted.o
  CC [M]  drivers/gpu/drm/scheduler/sched_entity.o
  CC      lib/usercopy.o
  CC      fs/nfs/symlink.o
  CC      kernel/kcmp.o
  CC      drivers/cpufreq/cpufreq_governor.o
  CC      drivers/input/ff-memless.o
  CC      arch/x86/kernel/io_delay.o
  CC      drivers/acpi/acpica/utglobal.o
  CC      drivers/cpufreq/cpufreq_governor_attr_set.o
  CC      fs/nfs/unlink.o
  CC      drivers/usb/host/xhci-pci.o
  CC      fs/nfs/write.o
  CC      drivers/cpuidle/driver.o
  CC      lib/errseq.o
  AR      drivers/thermal/built-in.a
  CC      drivers/acpi/acpi_platform.o
  AR      drivers/ufs/built-in.a
  CC      drivers/acpi/acpi_pnp.o
  AR      drivers/leds/trigger/built-in.a
  CC      drivers/acpi/power.o
  AR      drivers/leds/blink/built-in.a
  LD [M]  fs/efivarfs/efivarfs.o
  CC      lib/bucket_locks.o
  AR      drivers/leds/simple/built-in.a
  CC      lib/generic-radix-tree.o
  CC      drivers/leds/led-core.o
  CC      drivers/acpi/acpica/uthex.o
  CC [M]  drivers/gpu/drm/xe/xe_bo.o
  CC      arch/x86/kernel/rtc.o
  CC      mm/page_counter.o
  CC      mm/hugetlb_cgroup.o
  CC      drivers/cpufreq/acpi-cpufreq.o
  CC      drivers/leds/led-class.o
  CC      drivers/acpi/event.o
  CC      drivers/cpuidle/governor.o
  CC      drivers/leds/led-triggers.o
  CC      drivers/cpufreq/amd-pstate.o
  AR      drivers/firmware/arm_ffa/built-in.a
  AR      drivers/firmware/arm_scmi/built-in.a
  LD [M]  drivers/gpu/drm/scheduler/gpu-sched.o
  CC      mm/early_ioremap.o
  CC [M]  net/netfilter/nf_log_syslog.o
  AR      drivers/firmware/broadcom/built-in.a
  CC      kernel/freezer.o
  CC      drivers/gpu/drm/drm_aperture.o
  CC      arch/x86/kernel/resource.o
  CC      drivers/input/sparse-keymap.o
  CC      drivers/gpu/drm/drm_atomic.o
  AR      drivers/firmware/cirrus/built-in.a
  CC      drivers/acpi/acpica/utids.o
  CC      drivers/gpu/drm/i915/i915_debugfs_params.o
  AR      drivers/firmware/meson/built-in.a
  CC      drivers/acpi/evged.o
  AR      drivers/firmware/microchip/built-in.a
  CC      drivers/input/vivaldi-fmap.o
  CC      drivers/acpi/acpica/utinit.o
  CC      lib/bitmap-str.o
  CC      net/ipv4/arp.o
  CC      drivers/acpi/sysfs.o
  CC [M]  net/netfilter/xt_mark.o
  CC      drivers/firmware/efi/libstub/efi-stub-helper.o
  CC      drivers/input/input-leds.o
  AS      arch/x86/kernel/irqflags.o
  CC      drivers/acpi/property.o
  CC      net/ipv6/ping.o
  CC      net/sunrpc/stats.o
  CC      net/ipv6/exthdrs.o
  CC      arch/x86/kernel/static_call.o
  CC      drivers/cpuidle/sysfs.o
  CC      net/sysctl_net.o
  CC      fs/nfs/namespace.o
  CC      drivers/md/dm-linear.o
  CC [M]  net/netfilter/xt_nat.o
  CC      lib/string_helpers.o
  CC      net/mac80211/tx.o
  CC      drivers/acpi/acpica/utlock.o
  CC      drivers/net/net_failover.o
  AR      drivers/crypto/stm32/built-in.a
  AR      drivers/crypto/xilinx/built-in.a
  AR      drivers/crypto/hisilicon/built-in.a
  CC      mm/secretmem.o
  CC      mm/hmm.o
  AR      drivers/crypto/intel/keembay/built-in.a
  CC      mm/memfd.o
  AR      drivers/crypto/intel/ixp4xx/built-in.a
  AR      drivers/crypto/intel/built-in.a
  AR      drivers/leds/built-in.a
  CC      drivers/md/dm-stripe.o
  CC      drivers/cpufreq/amd-pstate-trace.o
  AR      drivers/crypto/starfive/built-in.a
  CC      drivers/clocksource/acpi_pm.o
  AR      drivers/crypto/built-in.a
  CC      drivers/acpi/acpica/utmath.o
  CC      drivers/acpi/acpica/utmisc.o
  CC      drivers/clocksource/i8253.o
  CC      arch/x86/kernel/process.o
  CC      kernel/profile.o
  CC      drivers/hid/usbhid/hid-core.o
  CC      drivers/input/evdev.o
  AR      drivers/firmware/imx/built-in.a
  AR      drivers/platform/x86/amd/built-in.a
  AR      drivers/platform/x86/intel/built-in.a
  CC      mm/ptdump.o
  CC      drivers/platform/x86/wmi.o
  CC      drivers/md/dm-ioctl.o
  AR      drivers/usb/host/built-in.a
  AR      drivers/usb/built-in.a
  CC      mm/execmem.o
  CC      drivers/cpuidle/poll_state.o
  AR      drivers/firmware/psci/built-in.a
  AR      drivers/platform/surface/built-in.a
  CC      lib/hexdump.o
  CC      drivers/firmware/efi/efi-bgrt.o
  CC      drivers/firmware/efi/libstub/gop.o
  CC      drivers/gpu/drm/i915/i915_pmu.o
  AR      drivers/net/ethernet/engleder/built-in.a
  CC      drivers/cpufreq/intel_pstate.o
  CC      drivers/acpi/acpica/utmutex.o
  CC      fs/nfs/mount_clnt.o
  AR      drivers/firmware/qcom/built-in.a
  CC      drivers/mailbox/mailbox.o
  CC      drivers/acpi/acpica/utnonansi.o
  AR      drivers/perf/built-in.a
  CC      drivers/cpuidle/cpuidle-haltpoll.o
  CC      drivers/acpi/debugfs.o
  CC      drivers/acpi/acpica/utobject.o
  CC      lib/kstrtox.o
  CC      drivers/hid/hid-core.o
  AR      drivers/firmware/smccc/built-in.a
  CC      drivers/hid/hid-input.o
  CC      lib/iomap.o
  AR      drivers/clocksource/built-in.a
  CC      net/ipv4/icmp.o
  CC [M]  drivers/gpu/drm/xe/xe_bo_evict.o
  CC [M]  net/netfilter/xt_LOG.o
  CC [M]  drivers/gpu/drm/xe/xe_debugfs.o
  CC      fs/nfs/nfstrace.o
  CC      drivers/gpu/drm/drm_atomic_uapi.o
  CC      net/mac80211/key.o
  CC [M]  net/netfilter/xt_MASQUERADE.o
  CC [M]  drivers/gpu/drm/xe/xe_devcoredump.o
  CC      net/wireless/shipped-certs.o
  CC [M]  drivers/gpu/drm/xe/xe_device.o
  CC      kernel/stacktrace.o
  CC [M]  drivers/gpu/drm/xe/xe_device_sysfs.o
  CC      drivers/platform/x86/wmi-bmof.o
  CC      drivers/md/dm-io.o
  CC      drivers/acpi/acpica/utosi.o
  CC      fs/nfs/export.o
  AR      drivers/firmware/tegra/built-in.a
  CC      drivers/platform/x86/eeepc-laptop.o
  CC      drivers/hid/hid-quirks.o
  CC      drivers/firmware/efi/efi.o
  AR      drivers/cpuidle/built-in.a
  CC      arch/x86/kernel/ptrace.o
  AR      drivers/hwtracing/intel_th/built-in.a
  CC      arch/x86/kernel/tls.o
  CC      drivers/firmware/efi/vars.o
  CC      drivers/mailbox/pcc.o
  CC      drivers/gpu/drm/drm_auth.o
  CC      drivers/acpi/acpi_lpat.o
  CC      drivers/platform/x86/p2sb.o
  CC      drivers/firmware/efi/libstub/secureboot.o
  AR      drivers/input/built-in.a
  CC      drivers/md/dm-kcopyd.o
  AR      mm/built-in.a
  CC      net/mac80211/util.o
  CC      net/ipv4/devinet.o
  CC      net/ipv6/datagram.o
  CC      drivers/acpi/acpica/utownerid.o
  CC      lib/iomap_copy.o
  CC      drivers/hid/usbhid/hiddev.o
  CC      fs/ext4/xattr_user.o
  CC      kernel/dma.o
  CC      drivers/gpu/drm/drm_blend.o
  CC      fs/nfs/sysfs.o
  CC      lib/devres.o
  CC      net/ipv6/ip6_flowlabel.o
  CC      net/mac80211/parse.o
  CC      drivers/firmware/efi/reboot.o
  CC      fs/ext4/fast_commit.o
  CC      drivers/acpi/acpi_pcc.o
  CC [M]  drivers/gpu/drm/xe/xe_dma_buf.o
  CC [M]  drivers/gpu/drm/xe/xe_drm_client.o
  CC      arch/x86/kernel/step.o
  AR      drivers/mailbox/built-in.a
  CC      fs/ext4/orphan.o
  CC      drivers/acpi/acpica/utpredef.o
  CC      drivers/acpi/ac.o
  AR      net/wireless/built-in.a
  CC      drivers/gpu/drm/drm_bridge.o
  CC      drivers/gpu/drm/i915/gt/gen2_engine_cs.o
  CC      lib/check_signature.o
  CC      drivers/md/dm-sysfs.o
  CC      arch/x86/kernel/i8237.o
  CC      drivers/firmware/efi/libstub/tpm.o
  CC      arch/x86/kernel/stacktrace.o
  CC      drivers/firmware/efi/libstub/file.o
  CC      net/sunrpc/sysctl.o
  CC [M]  net/netfilter/xt_addrtype.o
  CC      lib/interval_tree.o
  CC      net/mac80211/wme.o
  AR      drivers/android/built-in.a
  CC      net/mac80211/chan.o
  AR      drivers/platform/x86/built-in.a
  CC      lib/assoc_array.o
  AR      drivers/platform/built-in.a
  CC      drivers/gpu/drm/drm_cache.o
  CC      kernel/smp.o
  CC      drivers/gpu/drm/i915/gt/gen6_engine_cs.o
  CC      drivers/gpu/drm/drm_client.o
  CC      arch/x86/kernel/reboot.o
  CC      drivers/acpi/acpica/utresdecode.o
  CC      drivers/acpi/button.o
  CC      drivers/firmware/efi/memattr.o
  CC      fs/ext4/acl.o
  CC      kernel/uid16.o
  CC      net/ipv6/inet6_connection_sock.o
  CC      drivers/hid/usbhid/hid-pidff.o
  CC      drivers/acpi/acpica/utresrc.o
  CC      lib/bitrev.o
  CC      drivers/firmware/efi/libstub/mem.o
  AR      drivers/cpufreq/built-in.a
  CC      drivers/md/dm-stats.o
  AR      drivers/nvmem/layouts/built-in.a
  CC      drivers/nvmem/core.o
  CC      net/mac80211/trace.o
  CC      drivers/acpi/acpica/utstate.o
  CC [M]  drivers/gpu/drm/xe/xe_exec.o
  CC [M]  drivers/gpu/drm/xe/xe_execlist.o
  CC      lib/crc-ccitt.o
  AR      net/sunrpc/built-in.a
  CC      lib/crc16.o
  CC [M]  drivers/gpu/drm/xe/xe_exec_queue.o
  CC      drivers/md/dm-rq.o
  CC      drivers/firmware/efi/libstub/random.o
  CC      arch/x86/kernel/msr.o
  AR      drivers/net/ethernet/ezchip/built-in.a
  CC      fs/ext4/xattr_security.o
  CC      arch/x86/kernel/cpuid.o
  CC      drivers/acpi/acpica/utstring.o
  CC      drivers/gpu/drm/drm_client_modeset.o
  CC      drivers/firmware/efi/libstub/randomalloc.o
  CC      drivers/acpi/fan_core.o
  CC      drivers/md/dm-io-rewind.o
  CC      kernel/kallsyms.o
  AR      drivers/net/ethernet/fujitsu/built-in.a
  CC      drivers/hid/hid-debug.o
  HOSTCC  lib/gen_crc32table
  AR      drivers/net/ethernet/fungible/built-in.a
  CC      drivers/acpi/acpica/utstrsuppt.o
  AR      drivers/net/ethernet/google/built-in.a
  CC      drivers/acpi/acpica/utstrtoul64.o
  CC      drivers/md/dm-builtin.o
  AR      drivers/net/ethernet/huawei/built-in.a
  CC      drivers/gpu/drm/i915/gt/gen6_ppgtt.o
  CC      kernel/acct.o
  CC      drivers/acpi/acpica/utxface.o
  CC      net/mac80211/mlme.o
  CC      drivers/md/dm-raid1.o
  CC [M]  drivers/gpu/drm/xe/xe_force_wake.o
  CC      drivers/net/ethernet/intel/e1000/e1000_main.o
  CC      lib/xxhash.o
  CC      drivers/net/ethernet/intel/e1000/e1000_hw.o
  AR      drivers/net/ethernet/i825xx/built-in.a
  CC      drivers/net/ethernet/intel/e1000e/82571.o
  CC [M]  drivers/gpu/drm/xe/xe_ggtt.o
  CC      drivers/net/ethernet/intel/e100.o
  CC      drivers/net/ethernet/intel/e1000/e1000_ethtool.o
  AR      net/netfilter/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_gpu_scheduler.o
  AR      drivers/firmware/xilinx/built-in.a
  CC      drivers/firmware/dmi_scan.o
  AR      drivers/net/ethernet/microsoft/built-in.a
  AR      drivers/net/ethernet/litex/built-in.a
  CC      fs/nfs/fs_context.o
  CC      drivers/net/ethernet/intel/e1000e/ich8lan.o
  CC      net/ipv6/udp_offload.o
  CC      arch/x86/kernel/early-quirks.o
  CC      arch/x86/kernel/smp.o
  CC      net/ipv4/af_inet.o
  CC      drivers/acpi/acpica/utxfinit.o
  CC      arch/x86/kernel/smpboot.o
  CC      drivers/firmware/efi/libstub/pci.o
  AR      drivers/hid/usbhid/built-in.a
  CC      drivers/firmware/dmi-id.o
  CC      fs/nfs/nfsroot.o
  CC      net/mac80211/tdls.o
  CC      drivers/md/dm-log.o
  CC      drivers/acpi/fan_attr.o
  CC      net/mac80211/ocb.o
  CC      net/ipv4/igmp.o
  AR      drivers/nvmem/built-in.a
  CC      net/ipv4/fib_frontend.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  CC      lib/genalloc.o
  CC      drivers/md/dm-region-hash.o
  CC      drivers/acpi/acpica/utxferror.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc_proxy.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc_submit.o
  CC      drivers/md/dm-zero.o
  CC      net/ipv6/seg6.o
  CC      net/ipv6/fib6_notifier.o
  CC      drivers/hid/hidraw.o
  CC      kernel/vmcore_info.o
  CC      drivers/firmware/efi/libstub/skip_spaces.o
  CC      fs/nfs/sysctl.o
  CC      arch/x86/kernel/tsc_sync.o
  CC      drivers/gpu/drm/drm_color_mgmt.o
  CC      drivers/acpi/acpica/utxfmutex.o
  CC      drivers/hid/hid-generic.o
  CC      net/ipv4/fib_semantics.o
  CC      drivers/firmware/efi/libstub/lib-cmdline.o
  CC      drivers/net/ethernet/intel/e1000e/80003es2lan.o
  CC      drivers/net/ethernet/intel/e1000e/mac.o
  CC      drivers/firmware/efi/libstub/lib-ctype.o
  CC      net/mac80211/airtime.o
  AR      drivers/net/ethernet/broadcom/built-in.a
  CC      drivers/firmware/efi/libstub/alignedmem.o
  AR      drivers/net/ethernet/marvell/octeon_ep/built-in.a
  AR      drivers/net/ethernet/mellanox/built-in.a
  CC      drivers/gpu/drm/i915/gt/gen7_renderclear.o
  AR      drivers/net/ethernet/marvell/octeon_ep_vf/built-in.a
  CC      drivers/firmware/efi/libstub/relocate.o
  AR      drivers/net/ethernet/marvell/octeontx2/built-in.a
  AR      drivers/net/ethernet/marvell/prestera/built-in.a
  CC      drivers/net/ethernet/marvell/sky2.o
  CC      drivers/firmware/memmap.o
  AR      fs/ext4/built-in.a
  CC      lib/percpu_counter.o
  CC [M]  drivers/gpu/drm/xe/xe_gt.o
  CC      drivers/net/ethernet/intel/e1000e/manage.o
  AR      drivers/acpi/acpica/built-in.a
  CC      drivers/net/ethernet/intel/e1000e/nvm.o
  CC      drivers/acpi/acpi_video.o
  CC      drivers/firmware/efi/libstub/printk.o
  AR      drivers/net/ethernet/micrel/built-in.a
  CC      drivers/firmware/efi/libstub/vsprintf.o
  CC      drivers/firmware/efi/libstub/x86-stub.o
  CC      fs/file_table.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_ccs_mode.o
  CC      net/ipv4/fib_trie.o
  CC      arch/x86/kernel/setup_percpu.o
  CC      kernel/elfcorehdr.o
  CC      net/ipv4/fib_notifier.o
  AR      drivers/md/built-in.a
  CC      net/ipv4/inet_fragment.o
  CC      drivers/gpu/drm/i915/gt/gen8_engine_cs.o
  CC      drivers/firmware/efi/tpm.o
  CC      drivers/hid/hid-a4tech.o
  AR      drivers/net/ethernet/microchip/built-in.a
  AR      drivers/net/ethernet/mscc/built-in.a
  AR      drivers/net/ethernet/myricom/built-in.a
  AR      drivers/net/ethernet/natsemi/built-in.a
  AR      drivers/net/ethernet/neterion/built-in.a
  CC      kernel/crash_reserve.o
  AR      drivers/net/ethernet/netronome/built-in.a
  CC      kernel/kexec_core.o
  AR      drivers/net/ethernet/ni/built-in.a
  CC      net/ipv6/rpl.o
  CC      drivers/net/ethernet/nvidia/forcedeth.o
  CC      lib/audit.o
  AR      drivers/net/ethernet/oki-semi/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_gt_clock.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_debugfs.o
  CC      drivers/gpu/drm/i915/gt/gen8_ppgtt.o
  CC      net/ipv6/ioam6.o
  CC      drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
  CC      kernel/crash_core.o
  CC      fs/nfs/nfs3super.o
  CC      net/mac80211/eht.o
  CC      drivers/acpi/video_detect.o
  CC      drivers/net/ethernet/intel/e1000/e1000_param.o
  CC      fs/nfs/nfs3client.o
  CC      arch/x86/kernel/mpparse.o
  CC      drivers/acpi/processor_driver.o
  CC      drivers/net/ethernet/intel/e1000e/phy.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_freq.o
  CC      lib/syscall.o
  CC      net/ipv4/ping.o
  STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
  STUBCPY drivers/firmware/efi/libstub/file.stub.o
  STUBCPY drivers/firmware/efi/libstub/gop.stub.o
  STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o
  CC      drivers/net/ethernet/intel/e1000e/param.o
  CC      fs/super.o
  CC      drivers/hid/hid-apple.o
  STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
  CC      fs/char_dev.o
  CC      lib/errname.o
  CC      drivers/firmware/efi/memmap.o
  STUBCPY drivers/firmware/efi/libstub/mem.stub.o
  CC      lib/nlattr.o
  STUBCPY drivers/firmware/efi/libstub/pci.stub.o
  STUBCPY drivers/firmware/efi/libstub/printk.stub.o
  CC      net/ipv4/ip_tunnel_core.o
  STUBCPY drivers/firmware/efi/libstub/random.stub.o
  STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
  CC      arch/x86/kernel/trace_clock.o
  CC      arch/x86/kernel/trace.o
  STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
  STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
  CC      net/mac80211/led.o
  STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
  STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
  CC      net/ipv4/gre_offload.o
  CC      net/mac80211/pm.o
  CC      drivers/firmware/efi/capsule.o
  STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
  CC      drivers/net/ethernet/intel/e1000e/ethtool.o
  STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
  CC      drivers/firmware/efi/esrt.o
  STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
  AR      drivers/firmware/efi/libstub/lib.a
  CC      drivers/firmware/efi/runtime-wrappers.o
  CC      fs/stat.o
  CC      arch/x86/kernel/rethook.o
  CC      drivers/gpu/drm/i915/gt/intel_context.o
  CC      drivers/gpu/drm/drm_connector.o
  CC      kernel/kexec.o
  CC      drivers/firmware/efi/capsule-loader.o
  CC      net/ipv4/metrics.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_idle.o
  CC      arch/x86/kernel/vmcore_info_32.o
  CC      drivers/acpi/processor_thermal.o
  CC      drivers/hid/hid-belkin.o
  CC      drivers/firmware/efi/earlycon.o
  CC      drivers/gpu/drm/i915/gt/intel_context_sseu.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_mcr.o
  CC      drivers/gpu/drm/drm_crtc.o
  CC      net/mac80211/rc80211_minstrel_ht.o
  CC      net/ipv4/netlink.o
  CC      net/ipv4/nexthop.o
  CC      arch/x86/kernel/machine_kexec_32.o
  CC      net/ipv4/udp_tunnel_stub.o
  CC      net/mac80211/wbrf.o
  CC      fs/nfs/nfs3proc.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_cs.o
  CC      drivers/hid/hid-cherry.o
  CC      drivers/hid/hid-chicony.o
  AR      drivers/net/ethernet/intel/e1000/built-in.a
  AR      drivers/net/ethernet/packetengines/built-in.a
  CC      fs/exec.o
  AS      arch/x86/kernel/relocate_kernel_32.o
  CC      arch/x86/kernel/crash_dump_32.o
  AR      drivers/net/ethernet/qlogic/built-in.a
  AR      drivers/net/ethernet/qualcomm/emac/built-in.a
  CC      arch/x86/kernel/crash.o
  AR      drivers/net/ethernet/qualcomm/built-in.a
  CC      arch/x86/kernel/module.o
  CC      drivers/net/ethernet/realtek/8139too.o
  CC      drivers/net/ethernet/intel/e1000e/netdev.o
  AR      drivers/net/ethernet/renesas/built-in.a
  CC      fs/nfs/nfs3xdr.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_pagefault.o
  CC      drivers/acpi/processor_idle.o
  CC      drivers/net/ethernet/realtek/r8169_main.o
  CC      drivers/gpu/drm/drm_displayid.o
  CC      lib/cpu_rmap.o
  CC      kernel/utsname.o
  CC      net/ipv6/sysctl_net_ipv6.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sysfs.o
  CC      drivers/hid/hid-cypress.o
  CC      drivers/net/ethernet/realtek/r8169_firmware.o
  AR      drivers/firmware/efi/built-in.a
  AR      drivers/firmware/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
  CC      drivers/net/ethernet/intel/e1000e/ptp.o
  CC      drivers/hid/hid-ezkey.o
  CC      fs/pipe.o
  CC      net/ipv4/ip_tunnel.o
  CC      drivers/hid/hid-gyration.o
  CC      fs/namei.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_throttle.o
  CC      fs/fcntl.o
  CC      drivers/gpu/drm/drm_drv.o
  CC      drivers/net/ethernet/realtek/r8169_phy_config.o
  CC      net/ipv4/sysctl_net_ipv4.o
  AR      drivers/net/ethernet/rdc/built-in.a
  CC      drivers/gpu/drm/drm_dumb_buffers.o
  CC      drivers/gpu/drm/drm_edid.o
  CC      kernel/pid_namespace.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
  CC      lib/dynamic_queue_limits.o
  CC      net/ipv6/xfrm6_policy.o
  CC      drivers/hid/hid-ite.o
  CC      drivers/gpu/drm/drm_eld.o
  CC      arch/x86/kernel/doublefault_32.o
  CC      net/ipv4/proc.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  CC      drivers/gpu/drm/drm_encoder.o
  CC      kernel/stop_machine.o
  GEN     xe_wa_oob.c xe_wa_oob.h
  CC [M]  drivers/gpu/drm/xe/xe_guc_ct.o
  CC      drivers/hid/hid-kensington.o
  AR      drivers/net/ethernet/marvell/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_db_mgr.o
  CC      net/ipv4/fib_rules.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_debugfs.o
  CC      drivers/hid/hid-lg.o
  CC      drivers/gpu/drm/drm_file.o
  CC      drivers/hid/hid-lgff.o
  CC      drivers/hid/hid-lg4ff.o
  CC      drivers/hid/hid-lg-g15.o
  CC      net/ipv6/xfrm6_state.o
  CC      drivers/hid/hid-microsoft.o
  CC      drivers/gpu/drm/drm_fourcc.o
  CC      drivers/acpi/processor_throttling.o
  CC      drivers/acpi/processor_perflib.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_hwconfig.o
  AR      drivers/net/ethernet/nvidia/built-in.a
  AR      drivers/net/ethernet/rocker/built-in.a
  AR      drivers/net/ethernet/samsung/built-in.a
  AR      drivers/net/ethernet/seeq/built-in.a
  CC      net/ipv4/ipmr.o
  AR      drivers/net/ethernet/silan/built-in.a
  AR      drivers/net/ethernet/sis/built-in.a
  AR      drivers/net/ethernet/sfc/built-in.a
  CC      net/ipv6/xfrm6_input.o
  CC      fs/nfs/nfs3acl.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_id_mgr.o
  AR      drivers/net/ethernet/smsc/built-in.a
  AR      drivers/net/ethernet/socionext/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_klv_helpers.o
  CC      fs/nfs/nfs4proc.o
  AR      drivers/net/ethernet/stmicro/built-in.a
  AR      drivers/net/ethernet/sun/built-in.a
  CC      fs/nfs/nfs4xdr.o
  AR      drivers/net/ethernet/tehuti/built-in.a
  CC      fs/nfs/nfs4state.o
  AR      drivers/net/ethernet/ti/built-in.a
  CC      kernel/audit.o
  CC      fs/nfs/nfs4renewd.o
  CC      lib/glob.o
  AR      drivers/net/ethernet/vertexcom/built-in.a
  CC      fs/nfs/nfs4super.o
  CC      arch/x86/kernel/early_printk.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_pm.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_log.o
  CC      lib/strncpy_from_user.o
  AR      drivers/net/ethernet/via/built-in.a
  CC      lib/strnlen_user.o
  AR      drivers/net/ethernet/wangxun/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_pc.o
  CC      drivers/acpi/container.o
  CC      drivers/gpu/drm/drm_framebuffer.o
  AR      drivers/net/ethernet/wiznet/built-in.a
  AR      drivers/net/ethernet/xilinx/built-in.a
  CC      drivers/hid/hid-monterey.o
  AR      drivers/net/ethernet/xircom/built-in.a
  CC      fs/ioctl.o
  AR      drivers/net/ethernet/synopsys/built-in.a
  AR      drivers/net/ethernet/pensando/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_engine_user.o
  CC      drivers/acpi/thermal_lib.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_submit.o
  CC      net/ipv4/ipmr_base.o
  CC      lib/net_utils.o
  CC      fs/readdir.o
  CC      drivers/gpu/drm/i915/gt/intel_execlists_submission.o
  CC      drivers/hid/hid-ntrig.o
  CC      net/ipv6/xfrm6_output.o
  CC      arch/x86/kernel/hpet.o
  CC      drivers/acpi/thermal.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt.o
  CC      fs/nfs/nfs4file.o
  CC [M]  drivers/gpu/drm/xe/xe_heci_gsc.o
  CC      net/ipv6/xfrm6_protocol.o
  CC      drivers/hid/hid-pl.o
  CC      net/ipv4/syncookies.o
  CC      net/ipv4/tunnel4.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
  CC      fs/select.o
  CC      drivers/gpu/drm/i915/gt/intel_gt.o
  CC      drivers/gpu/drm/drm_gem.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine.o
  CC      net/ipv4/ipconfig.o
  CC      drivers/hid/hid-petalynx.o
  CC      net/ipv6/netfilter.o
  CC      drivers/acpi/nhlt.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o
  CC      drivers/hid/hid-redragon.o
  CC      fs/nfs/delegation.o
  CC      lib/sg_pool.o
  CC      arch/x86/kernel/amd_nb.o
  CC      fs/nfs/nfs4idmap.o
  CC      kernel/auditfilter.o
  CC      kernel/auditsc.o
  CC      net/ipv6/proc.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
  AR      drivers/net/ethernet/realtek/built-in.a
  CC      drivers/gpu/drm/drm_ioctl.o
  CC      drivers/gpu/drm/drm_lease.o
  CC      net/ipv6/syncookies.o
  CC      drivers/acpi/acpi_memhotplug.o
  CC      drivers/gpu/drm/drm_managed.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.o
  CC      drivers/acpi/ioapic.o
  CC      drivers/gpu/drm/drm_mm.o
  CC      lib/stackdepot.o
  CC      drivers/hid/hid-samsung.o
  CC      arch/x86/kernel/kvm.o
  CC      drivers/hid/hid-sony.o
  CC      arch/x86/kernel/kvmclock.o
  CC      lib/asn1_decoder.o
  CC      drivers/hid/hid-sunplus.o
  CC      net/ipv4/netfilter.o
  CC      fs/dcache.o
  CC      kernel/audit_watch.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
  CC      net/ipv4/tcp_cubic.o
  CC      net/ipv6/calipso.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_fence.o
  CC      drivers/acpi/battery.o
  CC      drivers/gpu/drm/drm_mode_config.o
  CC      drivers/gpu/drm/drm_mode_object.o
  CC      drivers/gpu/drm/drm_modes.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_huc.o
  CC      net/ipv4/tcp_sigpool.o
  CC      drivers/gpu/drm/drm_modeset_lock.o
  CC      drivers/acpi/bgrt.o
  CC      kernel/audit_fsnotify.o
  GEN     lib/oid_registry_data.c
  CC      lib/ucs2_string.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
  CC      kernel/audit_tree.o
  CC      net/ipv6/ah6.o
  AR      net/mac80211/built-in.a
  CC      drivers/gpu/drm/drm_plane.o
  CC      drivers/acpi/spcr.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_irq.o
  CC      kernel/kprobes.o
  CC      drivers/gpu/drm/drm_prime.o
  CC      fs/inode.o
  AR      drivers/net/ethernet/intel/e1000e/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_huc_debugfs.o
  AR      drivers/net/ethernet/intel/built-in.a
  CC      fs/attr.o
  CC [M]  drivers/gpu/drm/xe/xe_irq.o
  AR      drivers/net/ethernet/built-in.a
  CC      drivers/hid/hid-topseed.o
  CC [M]  drivers/gpu/drm/xe/xe_lrc.o
  CC      lib/sbitmap.o
  CC      lib/group_cpus.o
  CC      fs/bad_inode.o
  CC      fs/file.o
  AR      drivers/net/built-in.a
  CC      fs/filesystems.o
  CC      net/ipv6/esp6.o
  CC      lib/fw_table.o
  CC      arch/x86/kernel/paravirt.o
  CC      net/ipv6/sit.o
  CC [M]  drivers/gpu/drm/xe/xe_migrate.o
  AR      lib/lib.a
  CC      kernel/seccomp.o
  CC      net/ipv4/cipso_ipv4.o
  CC      kernel/relay.o
  CC      fs/namespace.o
  GEN     lib/crc32table.h
  CC      fs/seq_file.o
  CC      kernel/utsname_sysctl.o
  CC      net/ipv4/xfrm4_policy.o
  CC      fs/nfs/callback.o
  CC [M]  drivers/gpu/drm/xe/xe_mmio.o
  CC      fs/nfs/callback_xdr.o
  CC [M]  drivers/gpu/drm/xe/xe_mocs.o
  CC [M]  drivers/gpu/drm/xe/xe_module.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_mcr.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm.o
  CC      arch/x86/kernel/pvclock.o
  CC      kernel/delayacct.o
  CC      fs/xattr.o
  AR      drivers/acpi/built-in.a
  CC      kernel/taskstats.o
  CC      fs/libfs.o
  CC [M]  drivers/gpu/drm/xe/xe_pat.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
  CC      lib/oid_registry.o
  CC      drivers/gpu/drm/drm_print.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
  AR      drivers/hid/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_gt_requests.o
  CC      net/ipv4/xfrm4_state.o
  CC      kernel/tsacct.o
  CC      net/ipv6/addrconf_core.o
  CC      arch/x86/kernel/pcspeaker.o
  CC [M]  drivers/gpu/drm/xe/xe_pci.o
  CC      fs/fs-writeback.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_pcode.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
  CC      net/ipv4/xfrm4_input.o
  CC      net/ipv4/xfrm4_output.o
  CC      kernel/tracepoint.o
  CC      lib/crc32.o
  CC      net/ipv4/xfrm4_protocol.o
  CC      drivers/gpu/drm/i915/gt/intel_gtt.o
  CC      fs/pnode.o
  CC      fs/splice.o
  CC      kernel/irq_work.o
  CC      arch/x86/kernel/check.o
  CC      net/ipv6/exthdrs_core.o
  CC      arch/x86/kernel/uprobes.o
  CC      kernel/static_call.o
  CC      fs/sync.o
  CC      drivers/gpu/drm/drm_property.o
  CC      kernel/padata.o
  CC      kernel/jump_label.o
  CC      kernel/context_tracking.o
  CC      fs/nfs/callback_proc.o
  CC [M]  drivers/gpu/drm/xe/xe_pm.o
  CC      fs/utimes.o
  AR      lib/built-in.a
  CC      fs/d_path.o
  CC      fs/stack.o
  CC      fs/fs_struct.o
  CC      fs/nfs/nfs4namespace.o
  CC      fs/nfs/nfs4getroot.o
  CC      kernel/iomem.o
  CC [M]  drivers/gpu/drm/xe/xe_preempt_fence.o
  CC      fs/statfs.o
  CC      fs/fs_pin.o
  CC      drivers/gpu/drm/drm_syncobj.o
  CC      arch/x86/kernel/perf_regs.o
  CC      fs/nsfs.o
  CC      drivers/gpu/drm/drm_sysfs.o
  CC      drivers/gpu/drm/i915/gt/intel_llc.o
  CC      net/ipv6/ip6_checksum.o
  CC [M]  drivers/gpu/drm/xe/xe_pt.o
  CC      fs/nfs/nfs4client.o
  CC      drivers/gpu/drm/i915/gt/intel_lrc.o
  CC      arch/x86/kernel/tracepoint.o
  CC      net/ipv6/ip6_icmp.o
  CC      fs/nfs/nfs4session.o
  CC      kernel/rseq.o
  CC      drivers/gpu/drm/i915/gt/intel_migrate.o
  CC      drivers/gpu/drm/i915/gt/intel_mocs.o
  CC      fs/fs_types.o
  CC      arch/x86/kernel/itmt.o
  CC      net/ipv6/output_core.o
  CC      arch/x86/kernel/umip.o
  CC      net/ipv6/protocol.o
  CC      drivers/gpu/drm/i915/gt/intel_ppgtt.o
  CC      fs/nfs/dns_resolve.o
  CC      drivers/gpu/drm/i915/gt/intel_rc6.o
  CC      drivers/gpu/drm/i915/gt/intel_region_lmem.o
  CC [M]  drivers/gpu/drm/xe/xe_pt_walk.o
  AR      net/ipv4/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_query.o
  CC      fs/fs_context.o
  CC      fs/fs_parser.o
  CC      net/ipv6/ip6_offload.o
  CC [M]  drivers/gpu/drm/xe/xe_range_fence.o
  CC      drivers/gpu/drm/i915/gt/intel_renderstate.o
  CC      arch/x86/kernel/unwind_frame.o
  CC      drivers/gpu/drm/drm_trace_points.o
  CC      drivers/gpu/drm/i915/gt/intel_reset.o
  CC      drivers/gpu/drm/drm_vblank.o
  CC      fs/fsopen.o
  CC      fs/init.o
  CC      fs/kernel_read_file.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_sr.o
  CC      drivers/gpu/drm/i915/gt/intel_ring.o
  CC      drivers/gpu/drm/i915/gt/intel_ring_submission.o
  CC      net/ipv6/tcpv6_offload.o
  CC      fs/mnt_idmapping.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_whitelist.o
  CC      fs/remap_range.o
  CC      fs/pidfs.o
  CC      drivers/gpu/drm/drm_vblank_work.o
  CC      fs/buffer.o
  CC      drivers/gpu/drm/i915/gt/intel_rps.o
  CC      fs/nfs/nfs4trace.o
  CC      fs/mpage.o
  CC      drivers/gpu/drm/i915/gt/intel_sa_media.o
  AR      kernel/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_sseu.o
  CC      net/ipv6/exthdrs_offload.o
  CC      net/ipv6/inet6_hashtables.o
  CC      drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
  CC      fs/nfs/nfs4sysctl.o
  CC      drivers/gpu/drm/i915/gt/intel_timeline.o
  AR      arch/x86/kernel/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_rtp.o
  CC      fs/proc_namespace.o
  CC [M]  drivers/gpu/drm/xe/xe_ring_ops.o
  AR      arch/x86/built-in.a
  CC      drivers/gpu/drm/drm_vma_manager.o
  CC      net/ipv6/mcast_snoop.o
  CC      fs/direct-io.o
  CC      drivers/gpu/drm/drm_writeback.o
  CC      fs/eventpoll.o
  CC      fs/anon_inodes.o
  CC [M]  drivers/gpu/drm/xe/xe_sa.o
  CC      drivers/gpu/drm/i915/gt/intel_tlb.o
  CC      drivers/gpu/drm/i915/gt/intel_wopcm.o
  CC [M]  drivers/gpu/drm/xe/xe_sched_job.o
  CC [M]  drivers/gpu/drm/xe/xe_step.o
  CC [M]  drivers/gpu/drm/xe/xe_svm.o
  CC      fs/signalfd.o
  CC      drivers/gpu/drm/drm_panel.o
  CC      fs/timerfd.o
  CC [M]  drivers/gpu/drm/xe/xe_sync.o
  CC [M]  drivers/gpu/drm/xe/xe_tile.o
  CC      drivers/gpu/drm/drm_pci.o
  CC      fs/eventfd.o
  CC      drivers/gpu/drm/i915/gt/intel_workarounds.o
  CC      fs/aio.o
  CC      drivers/gpu/drm/i915/gt/shmem_utils.o
  CC      drivers/gpu/drm/i915/gt/sysfs_engines.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
  CC      drivers/gpu/drm/drm_debugfs.o
  CC      drivers/gpu/drm/i915/gt/gen6_renderstate.o
  CC      drivers/gpu/drm/i915/gt/gen7_renderstate.o
  CC      fs/locks.o
  CC      drivers/gpu/drm/drm_debugfs_crc.o
  CC      drivers/gpu/drm/i915/gt/gen8_renderstate.o
  CC      drivers/gpu/drm/drm_panel_orientation_quirks.o
  CC      drivers/gpu/drm/drm_buddy.o
  CC      drivers/gpu/drm/drm_gem_shmem_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_tile_sysfs.o
  CC      fs/binfmt_misc.o
  CC      fs/binfmt_script.o
  CC      drivers/gpu/drm/drm_atomic_helper.o
  CC      fs/binfmt_elf.o
  CC      drivers/gpu/drm/drm_atomic_state_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_trace.o
  CC [M]  drivers/gpu/drm/xe/xe_trace_bo.o
  CC [M]  drivers/gpu/drm/xe/xe_trace_guc.o
  CC      drivers/gpu/drm/i915/gt/gen9_renderstate.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_sys_mgr.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
  CC      drivers/gpu/drm/drm_bridge_connector.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_vram_mgr.o
  CC [M]  drivers/gpu/drm/xe/xe_tuning.o
  CC [M]  drivers/gpu/drm/xe/xe_uc.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_busy.o
  CC      fs/mbcache.o
  CC      drivers/gpu/drm/drm_crtc_helper.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_clflush.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_context.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_debugfs.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_create.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_fw.o
  CC      drivers/gpu/drm/drm_damage_helper.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_domain.o
  CC [M]  drivers/gpu/drm/xe/xe_vm.o
  CC      fs/posix_acl.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
  CC      fs/coredump.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_internal.o
  CC [M]  drivers/gpu/drm/xe/xe_vram.o
  CC      fs/drop_caches.o
  CC      drivers/gpu/drm/drm_encoder_slave.o
  AR      net/ipv6/built-in.a
  CC      drivers/gpu/drm/i915/gem/i915_gem_lmem.o
  AR      net/built-in.a
  CC      drivers/gpu/drm/drm_flip_work.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_mman.o
  CC      drivers/gpu/drm/drm_format_helper.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_object.o
  CC      drivers/gpu/drm/drm_gem_atomic_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_vram_freq.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_pages.o
  CC      drivers/gpu/drm/drm_gem_framebuffer_helper.o
  CC      drivers/gpu/drm/drm_kms_helper_common.o
  CC [M]  drivers/gpu/drm/xe/xe_wait_user_fence.o
  CC      drivers/gpu/drm/drm_modeset_helper.o
  CC      fs/sysctls.o
  CC      drivers/gpu/drm/drm_plane_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_wa.o
  CC      fs/fhandle.o
  CC [M]  drivers/gpu/drm/xe/xe_wopcm.o
  CC [M]  drivers/gpu/drm/xe/xe_hwmon.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_vf.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_relay.o
  CC      drivers/gpu/drm/drm_probe_helper.o
  CC      drivers/gpu/drm/drm_rect.o
  CC [M]  drivers/gpu/drm/xe/xe_memirq.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_phys.o
  CC [M]  drivers/gpu/drm/xe/xe_sriov.o
  CC      drivers/gpu/drm/drm_self_refresh_helper.o
  CC      drivers/gpu/drm/drm_simple_kms_helper.o
  CC      drivers/gpu/drm/bridge/panel.o
  CC      drivers/gpu/drm/drm_mipi_dsi.o
  CC [M]  drivers/gpu/drm/drm_exec.o
  CC [M]  drivers/gpu/drm/drm_gpuvm.o
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_irq.o
  CC [M]  drivers/gpu/drm/drm_suballoc.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_pm.o
  CC [M]  drivers/gpu/drm/drm_gem_ttm_helper.o
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_utils.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_region.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_shmem.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
  CC [M]  drivers/gpu/drm/xe/display/intel_fb_bo.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_stolen.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_throttle.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_tiling.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm.o
  CC [M]  drivers/gpu/drm/xe/display/intel_fbdev_fb.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_misc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_rps.o
  CC [M]  drivers/gpu/drm/xe/display/xe_dsb_buffer.o
  CC [M]  drivers/gpu/drm/xe/display/xe_fb_pin.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
  CC [M]  drivers/gpu/drm/xe/display/xe_hdcp_gsc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_plane_initial.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
  CC [M]  drivers/gpu/drm/xe/display/xe_tdf.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_userptr.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_dram.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_pch.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_wait.o
  CC      drivers/gpu/drm/i915/gem/i915_gemfs.o
  CC      drivers/gpu/drm/i915/i915_active.o
  LD [M]  drivers/gpu/drm/drm_suballoc_helper.o
  CC      drivers/gpu/drm/i915/i915_cmd_parser.o
  CC      drivers/gpu/drm/i915/i915_deps.o
  CC [M]  drivers/gpu/drm/xe/i915-display/icl_dsi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_alpm.o
  CC      drivers/gpu/drm/i915/i915_gem.o
  LD [M]  drivers/gpu/drm/drm_ttm_helper.o
  CC      drivers/gpu/drm/i915/i915_gem_evict.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic.o
  CC      drivers/gpu/drm/i915/i915_gem_gtt.o
  CC      drivers/gpu/drm/i915/i915_gem_ww.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_audio.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_backlight.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bios.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bw.o
  CC      drivers/gpu/drm/i915/i915_query.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cdclk.o
  AR      fs/nfs/built-in.a
  CC      drivers/gpu/drm/i915/i915_request.o
  AR      fs/built-in.a
  CC      drivers/gpu/drm/i915/i915_scheduler.o
  CC      drivers/gpu/drm/i915/i915_trace_points.o
  CC      drivers/gpu/drm/i915/i915_ttm_buddy_manager.o
In file included from /workspace/kernel/include/drm/drm_mm.h:51,
                 from /workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:10:
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c: In function ‘i915_gem_stolen_lmem_setup’:
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:941:5: error: format ‘%lli’ expects argument of type ‘long long int’, but argument 5 has type ‘resource_size_t’ {aka ‘unsigned int’} [-Werror=format=]
  941 |     "Disabling stolen memory support due to OOB placement: lmem_size = %lli vs dsm_base = %lli\n",
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  942 |     lmem_size, dsm_base);
      |     ~~~~~~~~~
      |     |
      |     resource_size_t {aka unsigned int}
/workspace/kernel/include/drm/drm_print.h:424:32: note: in definition of macro ‘drm_dev_dbg’
  424 |  __drm_dev_dbg(NULL, dev, cat, fmt, ##__VA_ARGS__)
      |                                ^~~
/workspace/kernel/include/drm/drm_print.h:524:32: note: in expansion of macro ‘drm_dbg_driver’
  524 | #define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
      |                                ^~~~~~~~~~~~~~
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:940:4: note: in expansion of macro ‘drm_dbg’
  940 |    drm_dbg(&i915->drm,
      |    ^~~~~~~
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:941:75: note: format string is defined here
  941 |     "Disabling stolen memory support due to OOB placement: lmem_size = %lli vs dsm_base = %lli\n",
      |                                                                        ~~~^
      |                                                                           |
      |                                                                           long long int
      |                                                                        %i
In file included from /workspace/kernel/include/drm/drm_mm.h:51,
                 from /workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:10:
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:941:5: error: format ‘%lli’ expects argument of type ‘long long int’, but argument 6 has type ‘resource_size_t’ {aka ‘unsigned int’} [-Werror=format=]
  941 |     "Disabling stolen memory support due to OOB placement: lmem_size = %lli vs dsm_base = %lli\n",
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  942 |     lmem_size, dsm_base);
      |                ~~~~~~~~
      |                |
      |                resource_size_t {aka unsigned int}
/workspace/kernel/include/drm/drm_print.h:424:32: note: in definition of macro ‘drm_dev_dbg’
  424 |  __drm_dev_dbg(NULL, dev, cat, fmt, ##__VA_ARGS__)
      |                                ^~~
/workspace/kernel/include/drm/drm_print.h:524:32: note: in expansion of macro ‘drm_dbg_driver’
  524 | #define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
      |                                ^~~~~~~~~~~~~~
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:940:4: note: in expansion of macro ‘drm_dbg’
  940 |    drm_dbg(&i915->drm,
      |    ^~~~~~~
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:941:94: note: format string is defined here
  941 |     "Disabling stolen memory support due to OOB placement: lmem_size = %lli vs dsm_base = %lli\n",
      |                                                                                           ~~~^
      |                                                                                              |
      |                                                                                              long long int
      |                                                                                           %i
  CC      drivers/gpu/drm/i915/i915_vma.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_color.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_connector.o
  CC      drivers/gpu/drm/i915/i915_vma_resource.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc_state_dump.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cursor.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cx0_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi.o
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi_buf_trans.o
cc1: all warnings being treated as errors
  CC      drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.o
make[6]: *** [/workspace/kernel/scripts/Makefile.build:244: drivers/gpu/drm/i915/gem/i915_gem_stolen.o] Error 1
make[6]: *** Waiting for unfinished jobs....
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_device.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_driver.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_params.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_map.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_well.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_trace.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_wa.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_hdcp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_link_training.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_mst.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpt_common.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_drrs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsb.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi_dcs_backlight.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi_vbt.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_encoder.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fb.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fbc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fdi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_global_state.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_gmbus.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp_gsc_message.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdmi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hti.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_link_bw.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_lspcon.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_lock.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_setup.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_verify.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_panel.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pmdemand.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pps.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_psr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_qp_tables.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_quirks.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_snps_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_tc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vblank.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vdsc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vga.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vrr.o
make[5]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers/gpu/drm/i915] Error 2
make[5]: *** Waiting for unfinished jobs....
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc_wl.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_wm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_scaler.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_watermark.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_acpi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_opregion.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs_params.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ads.o
  LD [M]  drivers/gpu/drm/xe/xe.o
make[4]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers/gpu/drm] Error 2
make[3]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers/gpu] Error 2
make[2]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers] Error 2
make[1]: *** [/workspace/kernel/Makefile:1934: .] Error 2
make: *** [/workspace/kernel/Makefile:240: __sub-make] Error 2
run-parts: /workspace/ci/hooks/11-build-32b exited with return code 2



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

* ✗ CI.checksparse: warning for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (47 preceding siblings ...)
  2024-06-14 22:57 ` ✗ CI.Hooks: failure " Patchwork
@ 2024-06-14 22:58 ` Patchwork
  2024-06-14 23:21 ` ✓ CI.BAT: success " Patchwork
                   ` (9 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-14 22:58 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
URL   : https://patchwork.freedesktop.org/series/134917/
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 e60c2c92798375b80da09295f5d3cc7db476a9c5
Sparse version: 0.6.1 (Ubuntu: 0.6.1-2build1)
Fast mode used, each commit won't be checked separately.
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✓ CI.BAT: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (48 preceding siblings ...)
  2024-06-14 22:58 ` ✗ CI.checksparse: warning " Patchwork
@ 2024-06-14 23:21 ` Patchwork
  2024-06-15  2:56 ` ✓ CI.Patch_applied: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2) Patchwork
                   ` (8 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-14 23:21 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

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

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
URL   : https://patchwork.freedesktop.org/series/134917/
State : success

== Summary ==

CI Bug Log - changes from xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a_BAT -> xe-pw-134917v1_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (5 -> 5)
------------------------------

  No changes in participating hosts


Changes
-------

  No changes found


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

  * Linux: xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a -> xe-pw-134917v1

  IGT_7889: 9dca15da37f2a385b04427eb39cd460224d09c25 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a: ec9bb8956cadc4f9d2a0e81713d921c52d527c1a
  xe-pw-134917v1: 134917v1

== Logs ==

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

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

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

* ✓ CI.Patch_applied: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (49 preceding siblings ...)
  2024-06-14 23:21 ` ✓ CI.BAT: success " Patchwork
@ 2024-06-15  2:56 ` Patchwork
  2024-06-15  2:57 ` ✗ CI.checkpatch: warning " Patchwork
                   ` (7 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-15  2:56 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
URL   : https://patchwork.freedesktop.org/series/134917/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: e60c2c927983 drm-tip: 2024y-06m-14d-21h-52m-42s UTC integration manifest
=== git am output follows ===
Applying: mm/hmm: let users to tag specific PFNs
Applying: dma-mapping: provide an interface to allocate IOVA
Applying: dma-mapping: provide callbacks to link/unlink pages to specific IOVA
Applying: iommu/dma: Provide an interface to allow preallocate IOVA
Applying: iommu/dma: Prepare map/unmap page functions to receive IOVA
Applying: iommu/dma: Implement link/unlink page callbacks
Applying: mm: Add an empty implementation of zone_device_page_init
Applying: drm: Move GPUVA_START/LAST to drm_gpuvm.h
Applying: drm/svm: Mark drm_gpuvm to participate SVM
Applying: drm/svm: introduce drm_mem_region concept
Applying: drm/svm: introduce hmmptr and helper functions
Applying: drm/svm: Introduce helper to remap drm memory region
Applying: drm/svm: handle CPU page fault
Applying: drm/svm: Migrate a range of hmmptr to vram
Applying: drm/svm: Add DRM SVM documentation
Applying: drm/svm: Introduce DRM_SVM kernel config
Applying: drm/xe: s/xe_tile_migrate_engine/xe_tile_migrate_exec_queue
Applying: drm/xe: Add xe_vm_pgtable_update_op to xe_vma_ops
Applying: drm/xe: Convert multiple bind ops into single job
Applying: drm/xe: Update VM trace events
Applying: drm/xe: Update PT layer with better error handling
Applying: drm/xe: Retry BO allocation
Applying: drm/xe/uapi: Add DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag
Applying: drm/xe: Add a helper to calculate userptr end address
Applying: drm/xe: Add dma_addr res cursor
Applying: drm/xe: Use drm_mem_region for xe
Applying: drm/xe: use drm_hmmptr in xe
Applying: drm/xe: Moving to range based vma invalidation
Applying: drm/xe: Support range based page table update
Applying: drm/xe/uapi: Add DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM flag
Applying: drm/xe/svm: Create userptr if page fault occurs on system_allocator VMA
Applying: drm/xe/svm: Add faulted userptr VMA garbage collector
Applying: drm/xe: Introduce helper to get tile from memory region
Applying: drm/xe/svm: implement functions to allocate and free device memory
Applying: drm/xe/svm: Get drm device from drm memory region
Applying: drm/xe/svm: Get page map owner of a memory region
Applying: drm/xe/svm: Add migrate layer functions for SVM support
Applying: drm/xe/svm: introduce svm migration function
Applying: drm/xe/svm: Register xe memory region to drm layer
Applying: drm/xe/svm: Introduce DRM_XE_SVM kernel config
Applying: drm/xe/svm: Migration from sram to vram for system allocator
Applying: drm/xe/svm: Determine a vma is backed by device memory
Applying: drm/xe/svm: Introduce hmm_pfn array based resource cursor
Applying: drm/xe: Enable system allocator uAPI



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

* ✗ CI.checkpatch: warning for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (50 preceding siblings ...)
  2024-06-15  2:56 ` ✓ CI.Patch_applied: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2) Patchwork
@ 2024-06-15  2:57 ` Patchwork
  2024-06-15  2:58 ` ✓ CI.KUnit: success " Patchwork
                   ` (6 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-15  2:57 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
URL   : https://patchwork.freedesktop.org/series/134917/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
51ce9f6cd981d42d7467409d7dbc559a450abc1e
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 87d1543db3c87dc24bfb842e3b8b37b58b4cd974
Author: Matthew Brost <matthew.brost@intel.com>
Date:   Fri Jun 14 17:58:17 2024 -0400

    drm/xe: Enable system allocator uAPI
    
    System allocator is now functional, so enable it from
    uAPI level.
    
    Signed-off-by: Matthew Brost <matthew.brost@intel.com>
+ /mt/dim checkpatch e60c2c92798375b80da09295f5d3cc7db476a9c5 drm-intel
3b8932ced2bf mm/hmm: let users to tag specific PFNs
4bffa0314a4c dma-mapping: provide an interface to allocate IOVA
-:73: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#73: FILE: include/linux/dma-mapping.h:170:
+}
+static inline void dma_free_iova(struct dma_iova_attrs *iova)

total: 0 errors, 0 warnings, 1 checks, 83 lines checked
7c95f3a87b42 dma-mapping: provide callbacks to link/unlink pages to specific IOVA
-:59: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#59: FILE: include/linux/dma-mapping.h:176:
 }
+static inline dma_addr_t dma_link_range(struct page *page, unsigned long offset,

-:65: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#65: FILE: include/linux/dma-mapping.h:182:
+}
+static inline void dma_unlink_range(struct dma_iova_attrs *iova,

total: 0 errors, 0 warnings, 2 checks, 123 lines checked
4cffb22dab3f iommu/dma: Provide an interface to allow preallocate IOVA
-:31: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#31: FILE: drivers/iommu/dma-iommu.c:762:
+static dma_addr_t __iommu_dma_alloc_iova(struct iommu_domain *domain,
 		size_t size, u64 dma_limit, struct device *dev)

-:40: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#40: FILE: drivers/iommu/dma-iommu.c:808:
+static void __iommu_dma_free_iova(struct iommu_dma_cookie *cookie,
 		dma_addr_t iova, size_t size, struct iommu_iotlb_gather *gather)

total: 0 errors, 0 warnings, 2 checks, 132 lines checked
4261028c427f iommu/dma: Prepare map/unmap page functions to receive IOVA
-:197: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#197: FILE: drivers/iommu/dma-iommu.c:1658:
+	*handle = __iommu_dma_map(dev, page_to_phys(page), 0, size, ioprot,
 			dev->coherent_dma_mask);

total: 0 errors, 0 warnings, 1 checks, 171 lines checked
2e1bed6a1fd9 iommu/dma: Implement link/unlink page callbacks
ebd85fcbba18 mm: Add an empty implementation of zone_device_page_init
-:17: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#17: 
[szeng@szeng-desk kernel]$ ./tools/testing/kunit/kunit.py run --kunitconfig ./drivers/gpu/drm/xe/.kunitconfig

-:51: WARNING:RETURN_VOID: void function return statements are not generally useful
#51: FILE: include/linux/memremap.h:210:
+	return;
+}

total: 0 errors, 2 warnings, 0 checks, 16 lines checked
712edbd6d8a7 drm: Move GPUVA_START/LAST to drm_gpuvm.h
-:41: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'node' - possible side-effects?
#41: FILE: include/drm/drm_gpuvm.h:42:
+#define GPUVA_LAST(node) ((node)->va.addr + (node)->va.range - 1)

-:42: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'node' - possible side-effects?
#42: FILE: include/drm/drm_gpuvm.h:43:
+#define GPUVA_END(node) ((node)->va.addr + (node)->va.range)

total: 0 errors, 0 warnings, 2 checks, 19 lines checked
69d2a699991c drm/svm: Mark drm_gpuvm to participate SVM
c1366e8c27c4 drm/svm: introduce drm_mem_region concept
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
-:45: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#45: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 165 lines checked
4d839c596eea drm/svm: introduce hmmptr and helper functions
-:56: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#56: 
new file mode 100644

-:61: WARNING:SPDX_LICENSE_TAG: Improper SPDX comment style for 'drivers/gpu/drm/drm_svm.c', please use '//' instead
#61: FILE: drivers/gpu/drm/drm_svm.c:1:
+/* SPDX-License-Identifier: MIT */

-:61: WARNING:SPDX_LICENSE_TAG: Missing or malformed SPDX-License-Identifier tag in line 1
#61: FILE: drivers/gpu/drm/drm_svm.c:1:
+/* SPDX-License-Identifier: MIT */

total: 0 errors, 3 warnings, 0 checks, 406 lines checked
c521ad02b3bd drm/svm: Introduce helper to remap drm memory region
c3e373de58be drm/svm: handle CPU page fault
34b15630b111 drm/svm: Migrate a range of hmmptr to vram
2d4148d2d242 drm/svm: Add DRM SVM documentation
-:328: WARNING:LONG_LINE_COMMENT: line length of 121 exceeds 100 columns
#328: FILE: drivers/gpu/drm/drm_svm.c:245:
+ * In GPU page fault handler:                                                                           munmap from user:

-:331: WARNING:LONG_LINE_COMMENT: line length of 121 exceeds 100 columns
#331: FILE: drivers/gpu/drm/drm_svm.c:248:
+ * Mmap_read_lock()                                                                                     mmap_write_lock()

-:332: WARNING:LONG_LINE_COMMENT: line length of 168 exceeds 100 columns
#332: FILE: drivers/gpu/drm/drm_svm.c:249:
+ * call drm_svm_migrate_hmmptr_to_vram to migrate hmmptr if needed                                      mmu_notifier_invalidate_range_start(), call hmmptr->invalidate()

-:333: WARNING:LONG_LINE_COMMENT: line length of 136 exceeds 100 columns
#333: FILE: drivers/gpu/drm/drm_svm.c:250:
+ * hmmptr.notifier_seq = mmu_interval_read_begin(&hmmptr.notifier)                                          down_write(page_table_lock);

-:334: WARNING:LONG_LINE_COMMENT: line length of 131 exceeds 100 columns
#334: FILE: drivers/gpu/drm/drm_svm.c:251:
+ * call drm_svm_populate_hmmptr to populate hmmptr                                                          mmu_interval_set_seq();

-:335: WARNING:LONG_LINE_COMMENT: line length of 145 exceeds 100 columns
#335: FILE: drivers/gpu/drm/drm_svm.c:252:
+ * Mmap_read_unlock                                                                                         invalidate hmmptr from GPU page table

-:336: WARNING:LONG_LINE_COMMENT: line length of 134 exceeds 100 columns
#336: FILE: drivers/gpu/drm/drm_svm.c:253:
+ *                                                                                                          up_write(page_table_lock);

-:337: WARNING:LONG_LINE_COMMENT: line length of 139 exceeds 100 columns
#337: FILE: drivers/gpu/drm/drm_svm.c:254:
+ * dma_resv_lock()                                                                                      mmu_notifier_invalidate_range_end()

-:338: WARNING:LONG_LINE_COMMENT: line length of 126 exceeds 100 columns
#338: FILE: drivers/gpu/drm/drm_svm.c:255:
+ * down_read(page_table_lock);                                                                            mmap_write_unlock();

total: 0 errors, 9 warnings, 0 checks, 360 lines checked
2fe59f7850c7 drm/svm: Introduce DRM_SVM kernel config
-:127: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#127: FILE: include/drm/drm_svm.h:254:
+}
+static inline void drm_svm_hmmptr_release(struct drm_hmmptr *hmmptr) {}

total: 0 errors, 0 warnings, 1 checks, 109 lines checked
1dbf9ddbe357 drm/xe: s/xe_tile_migrate_engine/xe_tile_migrate_exec_queue
faba96f9b23f drm/xe: Add xe_vm_pgtable_update_op to xe_vma_ops
3b2633c00fc0 drm/xe: Convert multiple bind ops into single job
-:13: WARNING:TYPO_SPELLING: 'implemenation' may be misspelled - perhaps 'implementation'?
#13: 
The implemenation is roughly:
    ^^^^^^^^^^^^^

-:887: WARNING:SUSPECT_CODE_INDENT: suspect code indent for conditional statements (8, 15)
#887: FILE: drivers/gpu/drm/xe/xe_pt.c:1163:
+	if (uvma->userptr.initial_bind && !xe_vm_in_fault_mode(vm))
+               return 0;

-:888: ERROR:CODE_INDENT: code indent should use tabs where possible
#888: FILE: drivers/gpu/drm/xe/xe_pt.c:1164:
+               return 0;$

-:888: WARNING:LEADING_SPACE: please, no spaces at the start of a line
#888: FILE: drivers/gpu/drm/xe/xe_pt.c:1164:
+               return 0;$

-:1669: WARNING:BLOCK_COMMENT_STYLE: Block comments should align the * on each line
#1669: FILE: drivers/gpu/drm/xe/xe_pt.c:1900:
+ * installing job fence in various places.
+  *

-:1670: WARNING:BLOCK_COMMENT_STYLE: Block comments should align the * on each line
#1670: FILE: drivers/gpu/drm/xe/xe_pt.c:1901:
+  *
+ * Return: fence on success, negative ERR_PTR on error.

-:1802: WARNING:LEADING_SPACE: please, no spaces at the start of a line
#1802: FILE: drivers/gpu/drm/xe/xe_pt.c:2033:
+ }$

total: 1 errors, 6 warnings, 0 checks, 2532 lines checked
29c6526fbb2c drm/xe: Update VM trace events
90c824507ce9 drm/xe: Update PT layer with better error handling
a9f8514b2bff drm/xe: Retry BO allocation
80f8b14f6068 drm/xe/uapi: Add DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag
5a608b81ff05 drm/xe: Add a helper to calculate userptr end address
83d8a10d2258 drm/xe: Add dma_addr res cursor
cb26a8baa885 drm/xe: Use drm_mem_region for xe
0feb8dd7ea0e drm/xe: use drm_hmmptr in xe
-:47: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#47: 
deleted file mode 100644

total: 0 errors, 1 warnings, 0 checks, 226 lines checked
7bfa64a231c6 drm/xe: Moving to range based vma invalidation
c984069aacd9 drm/xe: Support range based page table update
c95f76808d41 drm/xe/uapi: Add DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM flag
04d5d0c1454f drm/xe/svm: Create userptr if page fault occurs on system_allocator VMA
2d1cf804bcb1 drm/xe/svm: Add faulted userptr VMA garbage collector
e31ce6bcd6ab drm/xe: Introduce helper to get tile from memory region
75f13e0add40 drm/xe/svm: implement functions to allocate and free device memory
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
-:43: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#43: 
new file mode 100644

total: 0 errors, 1 warnings, 0 checks, 171 lines checked
9e82107d8a4b drm/xe/svm: Get drm device from drm memory region
5914485f8bf2 drm/xe/svm: Get page map owner of a memory region
ff75577cb026 drm/xe/svm: Add migrate layer functions for SVM support
8398b733c21c drm/xe/svm: introduce svm migration function
87f6e4aa21e8 drm/xe/svm: Register xe memory region to drm layer
4bbdedab0fe8 drm/xe/svm: Introduce DRM_XE_SVM kernel config
5101ceaf3d39 drm/xe/svm: Migration from sram to vram for system allocator
ee19dd1ccf96 drm/xe/svm: Determine a vma is backed by device memory
15eeb2697d0c drm/xe/svm: Introduce hmm_pfn array based resource cursor
-:191: CHECK:BRACES: braces {} should be used on all arms of this statement
#191: FILE: drivers/gpu/drm/xe/xe_res_cursor.h:300:
+	if (cur->mr) {
[...]
 	else if (cur->sgl)
[...]

total: 0 errors, 0 warnings, 1 checks, 157 lines checked
87d1543db3c8 drm/xe: Enable system allocator uAPI



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

* ✓ CI.KUnit: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (51 preceding siblings ...)
  2024-06-15  2:57 ` ✗ CI.checkpatch: warning " Patchwork
@ 2024-06-15  2:58 ` Patchwork
  2024-06-15  3:10 ` ✓ CI.Build: " Patchwork
                   ` (5 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-15  2:58 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
URL   : https://patchwork.freedesktop.org/series/134917/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[02:57:28] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[02:57:32] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
  156 | u64 ioread64_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
  163 | u64 ioread64_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
  170 | u64 ioread64be_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
  178 | u64 ioread64be_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
  264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
  272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
  280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
  288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~

[02:57:58] Starting KUnit Kernel (1/1)...
[02:57:58] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[02:57:58] =================== guc_dbm (7 subtests) ===================
[02:57:58] [PASSED] test_empty
[02:57:58] [PASSED] test_default
[02:57:58] ======================== test_size  ========================
[02:57:58] [PASSED] 4
[02:57:58] [PASSED] 8
[02:57:58] [PASSED] 32
[02:57:58] [PASSED] 256
[02:57:58] ==================== [PASSED] test_size ====================
[02:57:58] ======================= test_reuse  ========================
[02:57:58] [PASSED] 4
[02:57:58] [PASSED] 8
[02:57:58] [PASSED] 32
[02:57:58] [PASSED] 256
[02:57:58] =================== [PASSED] test_reuse ====================
[02:57:58] =================== test_range_overlap  ====================
[02:57:58] [PASSED] 4
[02:57:58] [PASSED] 8
[02:57:58] [PASSED] 32
[02:57:58] [PASSED] 256
[02:57:58] =============== [PASSED] test_range_overlap ================
[02:57:58] =================== test_range_compact  ====================
[02:57:58] [PASSED] 4
[02:57:58] [PASSED] 8
[02:57:58] [PASSED] 32
[02:57:58] [PASSED] 256
[02:57:58] =============== [PASSED] test_range_compact ================
[02:57:58] ==================== test_range_spare  =====================
[02:57:58] [PASSED] 4
[02:57:58] [PASSED] 8
[02:57:58] [PASSED] 32
[02:57:58] [PASSED] 256
[02:57:58] ================ [PASSED] test_range_spare =================
[02:57:58] ===================== [PASSED] guc_dbm =====================
[02:57:58] =================== guc_idm (6 subtests) ===================
[02:57:58] [PASSED] bad_init
[02:57:58] [PASSED] no_init
[02:57:58] [PASSED] init_fini
[02:57:58] [PASSED] check_used
[02:57:58] [PASSED] check_quota
[02:57:58] [PASSED] check_all
[02:57:58] ===================== [PASSED] guc_idm =====================
[02:57:58] ================== no_relay (3 subtests) ===================
[02:57:58] [PASSED] xe_drops_guc2pf_if_not_ready
[02:57:58] [PASSED] xe_drops_guc2vf_if_not_ready
[02:57:58] [PASSED] xe_rejects_send_if_not_ready
[02:57:58] ==================== [PASSED] no_relay =====================
[02:57:58] ================== pf_relay (14 subtests) ==================
[02:57:58] [PASSED] pf_rejects_guc2pf_too_short
[02:57:58] [PASSED] pf_rejects_guc2pf_too_long
[02:57:58] [PASSED] pf_rejects_guc2pf_no_payload
[02:57:58] [PASSED] pf_fails_no_payload
[02:57:58] [PASSED] pf_fails_bad_origin
[02:57:58] [PASSED] pf_fails_bad_type
[02:57:58] [PASSED] pf_txn_reports_error
[02:57:58] [PASSED] pf_txn_sends_pf2guc
[02:57:58] [PASSED] pf_sends_pf2guc
[02:57:58] [SKIPPED] pf_loopback_nop
[02:57:58] [SKIPPED] pf_loopback_echo
[02:57:58] [SKIPPED] pf_loopback_fail
[02:57:58] [SKIPPED] pf_loopback_busy
[02:57:58] [SKIPPED] pf_loopback_retry
[02:57:58] ==================== [PASSED] pf_relay =====================
[02:57:58] ================== vf_relay (3 subtests) ===================
[02:57:58] [PASSED] vf_rejects_guc2vf_too_short
[02:57:58] [PASSED] vf_rejects_guc2vf_too_long
[02:57:58] [PASSED] vf_rejects_guc2vf_no_payload
[02:57:58] ==================== [PASSED] vf_relay =====================
[02:57:58] ================= pf_service (11 subtests) =================
[02:57:58] [PASSED] pf_negotiate_any
[02:57:58] [PASSED] pf_negotiate_base_match
[02:57:58] [PASSED] pf_negotiate_base_newer
[02:57:58] [PASSED] pf_negotiate_base_next
[02:57:58] [SKIPPED] pf_negotiate_base_older
[02:57:58] [PASSED] pf_negotiate_base_prev
[02:57:58] [PASSED] pf_negotiate_latest_match
[02:57:58] [PASSED] pf_negotiate_latest_newer
[02:57:58] [PASSED] pf_negotiate_latest_next
[02:57:58] [SKIPPED] pf_negotiate_latest_older
[02:57:58] [SKIPPED] pf_negotiate_latest_prev
[02:57:58] =================== [PASSED] pf_service ====================
[02:57:58] ===================== lmtt (1 subtest) =====================
[02:57:58] ======================== test_ops  =========================
[02:57:58] [PASSED] 2-level
[02:57:58] [PASSED] multi-level
[02:57:58] ==================== [PASSED] test_ops =====================
[02:57:58] ====================== [PASSED] lmtt =======================
[02:57:58] ==================== xe_bo (2 subtests) ====================
[02:57:58] [SKIPPED] xe_ccs_migrate_kunit
[02:57:58] [SKIPPED] xe_bo_evict_kunit
[02:57:58] ===================== [SKIPPED] xe_bo ======================
[02:57:58] ================== xe_dma_buf (1 subtest) ==================
[02:57:58] [SKIPPED] xe_dma_buf_kunit
[02:57:58] =================== [SKIPPED] xe_dma_buf ===================
[02:57:58] ================== xe_migrate (1 subtest) ==================
[02:57:58] [SKIPPED] xe_migrate_sanity_kunit
[02:57:58] =================== [SKIPPED] xe_migrate ===================
[02:57:58] =================== xe_mocs (2 subtests) ===================
[02:57:58] [SKIPPED] xe_live_mocs_kernel_kunit
[02:57:58] [SKIPPED] xe_live_mocs_reset_kunit
[02:57:58] ==================== [SKIPPED] xe_mocs =====================
[02:57:58] ==================== args (11 subtests) ====================
[02:57:58] [PASSED] count_args_test
[02:57:58] [PASSED] call_args_example
[02:57:58] [PASSED] call_args_test
[02:57:58] [PASSED] drop_first_arg_example
[02:57:58] [PASSED] drop_first_arg_test
[02:57:58] [PASSED] first_arg_example
[02:57:58] [PASSED] first_arg_test
[02:57:58] [PASSED] last_arg_example
[02:57:58] [PASSED] last_arg_test
[02:57:58] [PASSED] pick_arg_example
[02:57:58] [PASSED] sep_comma_example
[02:57:58] ====================== [PASSED] args =======================
[02:57:58] =================== xe_pci (2 subtests) ====================
[02:57:58] [PASSED] xe_gmdid_graphics_ip
[02:57:58] [PASSED] xe_gmdid_media_ip
[02:57:58] ===================== [PASSED] xe_pci ======================
[02:57:58] ==================== xe_rtp (1 subtest) ====================
[02:57:58] ================== xe_rtp_process_tests  ===================
[02:57:58] [PASSED] coalesce-same-reg
[02:57:58] [PASSED] no-match-no-add
[02:57:58] [PASSED] no-match-no-add-multiple-rules
[02:57:58] [PASSED] two-regs-two-entries
[02:57:58] [PASSED] clr-one-set-other
[02:57:58] [PASSED] set-field
[02:57:58] [PASSED] conflict-duplicate
[02:57:58] [PASSED] conflict-not-disjoint
[02:57:58] [PASSED] conflict-reg-type
[02:57:58] ============== [PASSED] xe_rtp_process_tests ===============
stty: 'standard input': Inappropriate ioctl for device
[02:57:58] ===================== [PASSED] xe_rtp ======================
[02:57:58] ==================== xe_wa (1 subtest) =====================
[02:57:58] ======================== xe_wa_gt  =========================
[02:57:58] [PASSED] TIGERLAKE (B0)
[02:57:58] [PASSED] DG1 (A0)
[02:57:58] [PASSED] DG1 (B0)
[02:57:58] [PASSED] ALDERLAKE_S (A0)
[02:57:58] [PASSED] ALDERLAKE_S (B0)
[02:57:58] [PASSED] ALDERLAKE_S (C0)
[02:57:58] [PASSED] ALDERLAKE_S (D0)
[02:57:58] [PASSED] ALDERLAKE_P (A0)
[02:57:58] [PASSED] ALDERLAKE_P (B0)
[02:57:58] [PASSED] ALDERLAKE_P (C0)
[02:57:58] [PASSED] ALDERLAKE_S_RPLS (D0)
[02:57:58] [PASSED] ALDERLAKE_P_RPLU (E0)
[02:57:58] [PASSED] DG2_G10 (C0)
[02:57:58] [PASSED] DG2_G11 (B1)
[02:57:58] [PASSED] DG2_G12 (A1)
[02:57:58] [PASSED] METEORLAKE (g:A0, m:A0)
[02:57:58] [PASSED] METEORLAKE (g:A0, m:A0)
[02:57:58] [PASSED] METEORLAKE (g:A0, m:A0)
[02:57:58] [PASSED] LUNARLAKE (g:A0, m:A0)
[02:57:58] [PASSED] LUNARLAKE (g:B0, m:A0)
[02:57:58] ==================== [PASSED] xe_wa_gt =====================
[02:57:58] ====================== [PASSED] xe_wa ======================
[02:57:58] ============================================================
[02:57:58] Testing complete. Ran 109 tests: passed: 95, skipped: 14
[02:57:58] Elapsed time: 29.985s total, 4.213s configuring, 25.500s building, 0.227s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[02:57:58] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[02:58:00] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
  156 | u64 ioread64_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
  163 | u64 ioread64_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
  170 | u64 ioread64be_lo_hi(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
  178 | u64 ioread64be_hi_lo(const void __iomem *addr)
      |     ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
  264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
  272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
  280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
  288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
      |      ^~~~~~~~~~~~~~~~~

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

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
stty: 'standard input': Inappropriate ioctl for device
[02:58:22] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[02:58:24] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
[02:58:32] Starting KUnit Kernel (1/1)...
[02:58:32] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[02:58:32] ================= ttm_device (5 subtests) ==================
[02:58:32] [PASSED] ttm_device_init_basic
[02:58:32] [PASSED] ttm_device_init_multiple
[02:58:32] [PASSED] ttm_device_fini_basic
[02:58:32] [PASSED] ttm_device_init_no_vma_man
[02:58:32] ================== ttm_device_init_pools  ==================
[02:58:32] [PASSED] No DMA allocations, no DMA32 required
[02:58:32] [PASSED] DMA allocations, DMA32 required
[02:58:32] [PASSED] No DMA allocations, DMA32 required
[02:58:32] [PASSED] DMA allocations, no DMA32 required
[02:58:32] ============== [PASSED] ttm_device_init_pools ==============
[02:58:32] =================== [PASSED] ttm_device ====================
[02:58:32] ================== ttm_pool (8 subtests) ===================
[02:58:32] ================== ttm_pool_alloc_basic  ===================
[02:58:32] [PASSED] One page
[02:58:32] [PASSED] More than one page
[02:58:32] [PASSED] Above the allocation limit
[02:58:32] [PASSED] One page, with coherent DMA mappings enabled
[02:58:32] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[02:58:32] ============== [PASSED] ttm_pool_alloc_basic ===============
[02:58:32] ============== ttm_pool_alloc_basic_dma_addr  ==============
[02:58:32] [PASSED] One page
[02:58:32] [PASSED] More than one page
[02:58:32] [PASSED] Above the allocation limit
[02:58:32] [PASSED] One page, with coherent DMA mappings enabled
[02:58:32] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[02:58:32] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[02:58:32] [PASSED] ttm_pool_alloc_order_caching_match
[02:58:32] [PASSED] ttm_pool_alloc_caching_mismatch
[02:58:32] [PASSED] ttm_pool_alloc_order_mismatch
[02:58:32] [PASSED] ttm_pool_free_dma_alloc
[02:58:32] [PASSED] ttm_pool_free_no_dma_alloc
[02:58:32] [PASSED] ttm_pool_fini_basic
[02:58:32] ==================== [PASSED] ttm_pool =====================
[02:58:32] ================ ttm_resource (8 subtests) =================
[02:58:32] ================= ttm_resource_init_basic  =================
[02:58:32] [PASSED] Init resource in TTM_PL_SYSTEM
[02:58:32] [PASSED] Init resource in TTM_PL_VRAM
[02:58:32] [PASSED] Init resource in a private placement
[02:58:32] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[02:58:32] ============= [PASSED] ttm_resource_init_basic =============
[02:58:32] [PASSED] ttm_resource_init_pinned
[02:58:32] [PASSED] ttm_resource_fini_basic
[02:58:32] [PASSED] ttm_resource_manager_init_basic
[02:58:32] [PASSED] ttm_resource_manager_usage_basic
[02:58:32] [PASSED] ttm_resource_manager_set_used_basic
[02:58:32] [PASSED] ttm_sys_man_alloc_basic
[02:58:32] [PASSED] ttm_sys_man_free_basic
[02:58:32] ================== [PASSED] ttm_resource ===================
[02:58:32] =================== ttm_tt (10 subtests) ===================
[02:58:32] ==================== ttm_tt_init_basic  ====================
[02:58:32] [PASSED] Page-aligned size
[02:58:32] [PASSED] Extra pages requested
[02:58:32] ================ [PASSED] ttm_tt_init_basic ================
[02:58:32] [PASSED] ttm_tt_init_misaligned
[02:58:32] [PASSED] ttm_tt_fini_basic
[02:58:32] [PASSED] ttm_tt_fini_sg
[02:58:32] [PASSED] ttm_tt_fini_shmem
[02:58:32] [PASSED] ttm_tt_create_basic
[02:58:32] [PASSED] ttm_tt_create_invalid_bo_type
[02:58:32] [PASSED] ttm_tt_create_ttm_exists
[02:58:32] [PASSED] ttm_tt_create_failed
[02:58:32] [PASSED] ttm_tt_destroy_basic
[02:58:32] ===================== [PASSED] ttm_tt ======================
[02:58:32] =================== ttm_bo (14 subtests) ===================
[02:58:32] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[02:58:32] [PASSED] Cannot be interrupted and sleeps
[02:58:32] [PASSED] Cannot be interrupted, locks straight away
[02:58:32] [PASSED] Can be interrupted, sleeps
[02:58:32] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[02:58:32] [PASSED] ttm_bo_reserve_locked_no_sleep
[02:58:32] [PASSED] ttm_bo_reserve_no_wait_ticket
[02:58:32] [PASSED] ttm_bo_reserve_double_resv
[02:58:32] [PASSED] ttm_bo_reserve_interrupted
[02:58:32] [PASSED] ttm_bo_reserve_deadlock
[02:58:32] [PASSED] ttm_bo_unreserve_basic
[02:58:32] [PASSED] ttm_bo_unreserve_pinned
[02:58:32] [PASSED] ttm_bo_unreserve_bulk
[02:58:32] [PASSED] ttm_bo_put_basic
[02:58:32] [PASSED] ttm_bo_put_shared_resv
[02:58:32] [PASSED] ttm_bo_pin_basic
[02:58:32] [PASSED] ttm_bo_pin_unpin_resource
[02:58:32] [PASSED] ttm_bo_multiple_pin_one_unpin
[02:58:32] ===================== [PASSED] ttm_bo ======================
[02:58:32] ============================================================
[02:58:32] Testing complete. Ran 62 tests: passed: 62
[02:58:32] Elapsed time: 10.481s total, 1.724s configuring, 8.587s building, 0.139s running

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



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

* ✓ CI.Build: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (52 preceding siblings ...)
  2024-06-15  2:58 ` ✓ CI.KUnit: success " Patchwork
@ 2024-06-15  3:10 ` Patchwork
  2024-06-15  3:12 ` ✗ CI.Hooks: failure " Patchwork
                   ` (4 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-15  3:10 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
URL   : https://patchwork.freedesktop.org/series/134917/
State : success

== Summary ==

lib/modules/6.10.0-rc3-xe/kernel/sound/core/seq/
lib/modules/6.10.0-rc3-xe/kernel/sound/core/seq/snd-seq.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd-seq-device.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd-hwdep.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd-pcm.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd-compress.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/core/snd-timer.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soundcore.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/atom/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/atom/snd-soc-sst-atom-hifi2-platform.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/atom/sst/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-acpi.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/atom/sst/snd-intel-sst-core.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/common/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/intel/common/snd-soc-acpi-intel-match.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/amd/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/amd/snd-acp-config.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-tgl.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-mlink.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-cnl.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-lnl.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-common.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda-generic.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-intel-hda.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/intel/snd-sof-pci-intel-mtl.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/amd/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/amd/snd-sof-amd-renoir.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/amd/snd-sof-amd-acp.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/snd-sof-utils.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/snd-sof-pci.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/snd-sof.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/snd-sof-probes.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/xtensa/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/sof/xtensa/snd-sof-xtensa-dsp.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/snd-soc-core.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/snd-soc-acpi.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/codecs/
lib/modules/6.10.0-rc3-xe/kernel/sound/soc/codecs/snd-soc-hdac-hda.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/snd-intel-sdw-acpi.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/ext/
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/ext/snd-hda-ext-core.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/snd-intel-dspcfg.ko
lib/modules/6.10.0-rc3-xe/kernel/sound/hda/snd-hda-core.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kernel/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kernel/msr.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kernel/cpuid.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/sha512-ssse3.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/crct10dif-pclmul.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/ghash-clmulni-intel.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/sha1-ssse3.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/crc32-pclmul.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/sha256-ssse3.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/aesni-intel.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/crypto/polyval-clmulni.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/events/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/events/intel/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/events/intel/intel-cstate.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/events/rapl.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kvm/
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kvm/kvm.ko
lib/modules/6.10.0-rc3-xe/kernel/arch/x86/kvm/kvm-intel.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/
lib/modules/6.10.0-rc3-xe/kernel/crypto/crypto_simd.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/cmac.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/ccm.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/cryptd.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/polyval-generic.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/async_xor.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/async_tx.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/async_pq.ko
lib/modules/6.10.0-rc3-xe/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/6.10.0-rc3-xe/build
lib/modules/6.10.0-rc3-xe/modules.alias.bin
lib/modules/6.10.0-rc3-xe/modules.builtin
lib/modules/6.10.0-rc3-xe/modules.softdep
lib/modules/6.10.0-rc3-xe/modules.alias
lib/modules/6.10.0-rc3-xe/modules.order
lib/modules/6.10.0-rc3-xe/modules.symbols
lib/modules/6.10.0-rc3-xe/modules.dep.bin
+ mv kernel-nodebug.tar.gz ..
+ cd ..
+ rm -rf archive
++ date +%s
+ echo -e '\e[0Ksection_end:1718421016:package_x86_64_nodebug\r\e[0K'
+ sync
^[[0Ksection_end:1718421016:package_x86_64_nodebug
^[[0K
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✗ CI.Hooks: failure for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (53 preceding siblings ...)
  2024-06-15  3:10 ` ✓ CI.Build: " Patchwork
@ 2024-06-15  3:12 ` Patchwork
  2024-06-15  3:14 ` ✗ CI.checksparse: warning " Patchwork
                   ` (3 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-15  3:12 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
URL   : https://patchwork.freedesktop.org/series/134917/
State : failure

== Summary ==

run-parts: executing /workspace/ci/hooks/00-showenv
+ export
+ grep -Ei '(^|\W)CI_'
declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-default"
declare -x CI_KERNEL_SRC_DIR="/workspace/kernel"
declare -x CI_TOOLS_SRC_DIR="/workspace/ci"
declare -x CI_WORKSPACE_DIR="/workspace"
run-parts: executing /workspace/ci/hooks/10-build-W1
+ SRC_DIR=/workspace/kernel
+ RESTORE_DISPLAY_CONFIG=0
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ cd /workspace/kernel
++ nproc
+ make -j48 O=/workspace/kernel/build64-default modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-default'
  GEN     Makefile
  UPD     include/generated/compile.h
  UPD     include/config/kernel.release
mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool 
  UPD     include/generated/utsrelease.h
  HOSTCC  /workspace/kernel/build64-default/tools/objtool/fixdep.o
  CALL    ../scripts/checksyscalls.sh
  HOSTLD  /workspace/kernel/build64-default/tools/objtool/fixdep-in.o
  LINK    /workspace/kernel/build64-default/tools/objtool/fixdep
  INSTALL libsubcmd_headers
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o
  LD      /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o
  AR      /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a
  CC      /workspace/kernel/build64-default/tools/objtool/weak.o
  CC      /workspace/kernel/build64-default/tools/objtool/check.o
  CC      /workspace/kernel/build64-default/tools/objtool/special.o
  CC      /workspace/kernel/build64-default/tools/objtool/builtin-check.o
  CC      /workspace/kernel/build64-default/tools/objtool/elf.o
  CC      /workspace/kernel/build64-default/tools/objtool/objtool.o
  CC      /workspace/kernel/build64-default/tools/objtool/orc_gen.o
  CC      /workspace/kernel/build64-default/tools/objtool/orc_dump.o
  CC      /workspace/kernel/build64-default/tools/objtool/libstring.o
  CC      /workspace/kernel/build64-default/tools/objtool/libctype.o
  CC      /workspace/kernel/build64-default/tools/objtool/str_error_r.o
  CC      /workspace/kernel/build64-default/tools/objtool/librbtree.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o
  CC      /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o
  LD      /workspace/kernel/build64-default/tools/objtool/arch/x86/objtool-in.o
  LD      /workspace/kernel/build64-default/tools/objtool/objtool-in.o
  LINK    /workspace/kernel/build64-default/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64-default'
++ nproc
+ make -j48 O=/workspace/kernel/build64-default W=1 drivers/gpu/drm/xe
make[1]: Entering directory '/workspace/kernel/build64-default'
make[2]: Nothing to be done for 'drivers/gpu/drm/xe'.
make[1]: Leaving directory '/workspace/kernel/build64-default'
run-parts: executing /workspace/ci/hooks/11-build-32b
+++ realpath /workspace/ci/hooks/11-build-32b
++ dirname /workspace/ci/hooks/11-build-32b
+ THIS_SCRIPT_DIR=/workspace/ci/hooks
+ SRC_DIR=/workspace/kernel
+ TOOLS_SRC_DIR=/workspace/ci
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ BUILD_DIR=/workspace/kernel/build64-default/build32
+ cd /workspace/kernel
+ mkdir -p /workspace/kernel/build64-default/build32
++ nproc
+ make -j48 ARCH=i386 O=/workspace/kernel/build64-default/build32 defconfig
make[1]: Entering directory '/workspace/kernel/build64-default/build32'
  GEN     Makefile
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/menu.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTLD  scripts/kconfig/conf
*** Default configuration is based on 'i386_defconfig'
#
# configuration written to .config
#
make[1]: Leaving directory '/workspace/kernel/build64-default/build32'
+ cd /workspace/kernel/build64-default/build32
+ /workspace/kernel/scripts/kconfig/merge_config.sh .config /workspace/ci/kernel/10-xe.fragment
Using .config as base
Merging /workspace/ci/kernel/10-xe.fragment
Value of CONFIG_DRM_XE is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_DRM_XE is not set
New value: CONFIG_DRM_XE=m

Value of CONFIG_SND_DEBUG is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_SND_DEBUG is not set
New value: CONFIG_SND_DEBUG=y

Value of CONFIG_SND_HDA_INTEL is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: CONFIG_SND_HDA_INTEL=y
New value: CONFIG_SND_HDA_INTEL=m

Value of CONFIG_SND_HDA_CODEC_HDMI is redefined by fragment /workspace/ci/kernel/10-xe.fragment:
Previous value: # CONFIG_SND_HDA_CODEC_HDMI is not set
New value: CONFIG_SND_HDA_CODEC_HDMI=m

  GEN     Makefile

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]
#
# configuration written to .config
#
Value requested for CONFIG_HAVE_UID16 not in final .config
Requested value:  CONFIG_HAVE_UID16=y
Actual value:     

Value requested for CONFIG_UID16 not in final .config
Requested value:  CONFIG_UID16=y
Actual value:     

Value requested for CONFIG_X86_32 not in final .config
Requested value:  CONFIG_X86_32=y
Actual value:     

Value requested for CONFIG_OUTPUT_FORMAT not in final .config
Requested value:  CONFIG_OUTPUT_FORMAT="elf32-i386"
Actual value:     CONFIG_OUTPUT_FORMAT="elf64-x86-64"

Value requested for CONFIG_ARCH_MMAP_RND_BITS_MIN not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS_MIN=8
Actual value:     CONFIG_ARCH_MMAP_RND_BITS_MIN=28

Value requested for CONFIG_ARCH_MMAP_RND_BITS_MAX not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS_MAX=16
Actual value:     CONFIG_ARCH_MMAP_RND_BITS_MAX=32

Value requested for CONFIG_PGTABLE_LEVELS not in final .config
Requested value:  CONFIG_PGTABLE_LEVELS=2
Actual value:     CONFIG_PGTABLE_LEVELS=5

Value requested for CONFIG_X86_BIGSMP not in final .config
Requested value:  # CONFIG_X86_BIGSMP is not set
Actual value:     

Value requested for CONFIG_X86_INTEL_QUARK not in final .config
Requested value:  # CONFIG_X86_INTEL_QUARK is not set
Actual value:     

Value requested for CONFIG_X86_RDC321X not in final .config
Requested value:  # CONFIG_X86_RDC321X is not set
Actual value:     

Value requested for CONFIG_X86_32_NON_STANDARD not in final .config
Requested value:  # CONFIG_X86_32_NON_STANDARD is not set
Actual value:     

Value requested for CONFIG_X86_32_IRIS not in final .config
Requested value:  # CONFIG_X86_32_IRIS is not set
Actual value:     

Value requested for CONFIG_M486SX not in final .config
Requested value:  # CONFIG_M486SX is not set
Actual value:     

Value requested for CONFIG_M486 not in final .config
Requested value:  # CONFIG_M486 is not set
Actual value:     

Value requested for CONFIG_M586 not in final .config
Requested value:  # CONFIG_M586 is not set
Actual value:     

Value requested for CONFIG_M586TSC not in final .config
Requested value:  # CONFIG_M586TSC is not set
Actual value:     

Value requested for CONFIG_M586MMX not in final .config
Requested value:  # CONFIG_M586MMX is not set
Actual value:     

Value requested for CONFIG_M686 not in final .config
Requested value:  CONFIG_M686=y
Actual value:     

Value requested for CONFIG_MPENTIUMII not in final .config
Requested value:  # CONFIG_MPENTIUMII is not set
Actual value:     

Value requested for CONFIG_MPENTIUMIII not in final .config
Requested value:  # CONFIG_MPENTIUMIII is not set
Actual value:     

Value requested for CONFIG_MPENTIUMM not in final .config
Requested value:  # CONFIG_MPENTIUMM is not set
Actual value:     

Value requested for CONFIG_MPENTIUM4 not in final .config
Requested value:  # CONFIG_MPENTIUM4 is not set
Actual value:     

Value requested for CONFIG_MK6 not in final .config
Requested value:  # CONFIG_MK6 is not set
Actual value:     

Value requested for CONFIG_MK7 not in final .config
Requested value:  # CONFIG_MK7 is not set
Actual value:     

Value requested for CONFIG_MCRUSOE not in final .config
Requested value:  # CONFIG_MCRUSOE is not set
Actual value:     

Value requested for CONFIG_MEFFICEON not in final .config
Requested value:  # CONFIG_MEFFICEON is not set
Actual value:     

Value requested for CONFIG_MWINCHIPC6 not in final .config
Requested value:  # CONFIG_MWINCHIPC6 is not set
Actual value:     

Value requested for CONFIG_MWINCHIP3D not in final .config
Requested value:  # CONFIG_MWINCHIP3D is not set
Actual value:     

Value requested for CONFIG_MELAN not in final .config
Requested value:  # CONFIG_MELAN is not set
Actual value:     

Value requested for CONFIG_MGEODEGX1 not in final .config
Requested value:  # CONFIG_MGEODEGX1 is not set
Actual value:     

Value requested for CONFIG_MGEODE_LX not in final .config
Requested value:  # CONFIG_MGEODE_LX is not set
Actual value:     

Value requested for CONFIG_MCYRIXIII not in final .config
Requested value:  # CONFIG_MCYRIXIII is not set
Actual value:     

Value requested for CONFIG_MVIAC3_2 not in final .config
Requested value:  # CONFIG_MVIAC3_2 is not set
Actual value:     

Value requested for CONFIG_MVIAC7 not in final .config
Requested value:  # CONFIG_MVIAC7 is not set
Actual value:     

Value requested for CONFIG_X86_GENERIC not in final .config
Requested value:  # CONFIG_X86_GENERIC is not set
Actual value:     

Value requested for CONFIG_X86_INTERNODE_CACHE_SHIFT not in final .config
Requested value:  CONFIG_X86_INTERNODE_CACHE_SHIFT=5
Actual value:     CONFIG_X86_INTERNODE_CACHE_SHIFT=6

Value requested for CONFIG_X86_L1_CACHE_SHIFT not in final .config
Requested value:  CONFIG_X86_L1_CACHE_SHIFT=5
Actual value:     CONFIG_X86_L1_CACHE_SHIFT=6

Value requested for CONFIG_X86_USE_PPRO_CHECKSUM not in final .config
Requested value:  CONFIG_X86_USE_PPRO_CHECKSUM=y
Actual value:     

Value requested for CONFIG_X86_MINIMUM_CPU_FAMILY not in final .config
Requested value:  CONFIG_X86_MINIMUM_CPU_FAMILY=6
Actual value:     CONFIG_X86_MINIMUM_CPU_FAMILY=64

Value requested for CONFIG_CPU_SUP_TRANSMETA_32 not in final .config
Requested value:  CONFIG_CPU_SUP_TRANSMETA_32=y
Actual value:     

Value requested for CONFIG_CPU_SUP_VORTEX_32 not in final .config
Requested value:  CONFIG_CPU_SUP_VORTEX_32=y
Actual value:     

Value requested for CONFIG_HPET_TIMER not in final .config
Requested value:  # CONFIG_HPET_TIMER is not set
Actual value:     CONFIG_HPET_TIMER=y

Value requested for CONFIG_NR_CPUS_RANGE_END not in final .config
Requested value:  CONFIG_NR_CPUS_RANGE_END=8
Actual value:     CONFIG_NR_CPUS_RANGE_END=512

Value requested for CONFIG_NR_CPUS_DEFAULT not in final .config
Requested value:  CONFIG_NR_CPUS_DEFAULT=8
Actual value:     CONFIG_NR_CPUS_DEFAULT=64

Value requested for CONFIG_X86_ANCIENT_MCE not in final .config
Requested value:  # CONFIG_X86_ANCIENT_MCE is not set
Actual value:     

Value requested for CONFIG_X86_LEGACY_VM86 not in final .config
Requested value:  # CONFIG_X86_LEGACY_VM86 is not set
Actual value:     

Value requested for CONFIG_X86_ESPFIX32 not in final .config
Requested value:  CONFIG_X86_ESPFIX32=y
Actual value:     

Value requested for CONFIG_TOSHIBA not in final .config
Requested value:  # CONFIG_TOSHIBA is not set
Actual value:     

Value requested for CONFIG_X86_REBOOTFIXUPS not in final .config
Requested value:  # CONFIG_X86_REBOOTFIXUPS is not set
Actual value:     

Value requested for CONFIG_MICROCODE_INITRD32 not in final .config
Requested value:  CONFIG_MICROCODE_INITRD32=y
Actual value:     

Value requested for CONFIG_NOHIGHMEM not in final .config
Requested value:  # CONFIG_NOHIGHMEM is not set
Actual value:     

Value requested for CONFIG_HIGHMEM4G not in final .config
Requested value:  CONFIG_HIGHMEM4G=y
Actual value:     

Value requested for CONFIG_HIGHMEM64G not in final .config
Requested value:  # CONFIG_HIGHMEM64G is not set
Actual value:     

Value requested for CONFIG_PAGE_OFFSET not in final .config
Requested value:  CONFIG_PAGE_OFFSET=0xC0000000
Actual value:     

Value requested for CONFIG_HIGHMEM not in final .config
Requested value:  CONFIG_HIGHMEM=y
Actual value:     

Value requested for CONFIG_X86_PAE not in final .config
Requested value:  # CONFIG_X86_PAE is not set
Actual value:     

Value requested for CONFIG_ARCH_FLATMEM_ENABLE not in final .config
Requested value:  CONFIG_ARCH_FLATMEM_ENABLE=y
Actual value:     

Value requested for CONFIG_ARCH_SELECT_MEMORY_MODEL not in final .config
Requested value:  CONFIG_ARCH_SELECT_MEMORY_MODEL=y
Actual value:     

Value requested for CONFIG_ILLEGAL_POINTER_VALUE not in final .config
Requested value:  CONFIG_ILLEGAL_POINTER_VALUE=0
Actual value:     CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000

Value requested for CONFIG_HIGHPTE not in final .config
Requested value:  # CONFIG_HIGHPTE is not set
Actual value:     

Value requested for CONFIG_COMPAT_VDSO not in final .config
Requested value:  # CONFIG_COMPAT_VDSO is not set
Actual value:     

Value requested for CONFIG_FUNCTION_PADDING_CFI not in final .config
Requested value:  CONFIG_FUNCTION_PADDING_CFI=0
Actual value:     CONFIG_FUNCTION_PADDING_CFI=11

Value requested for CONFIG_FUNCTION_PADDING_BYTES not in final .config
Requested value:  CONFIG_FUNCTION_PADDING_BYTES=4
Actual value:     CONFIG_FUNCTION_PADDING_BYTES=16

Value requested for CONFIG_APM not in final .config
Requested value:  # CONFIG_APM is not set
Actual value:     

Value requested for CONFIG_X86_POWERNOW_K6 not in final .config
Requested value:  # CONFIG_X86_POWERNOW_K6 is not set
Actual value:     

Value requested for CONFIG_X86_POWERNOW_K7 not in final .config
Requested value:  # CONFIG_X86_POWERNOW_K7 is not set
Actual value:     

Value requested for CONFIG_X86_GX_SUSPMOD not in final .config
Requested value:  # CONFIG_X86_GX_SUSPMOD is not set
Actual value:     

Value requested for CONFIG_X86_SPEEDSTEP_ICH not in final .config
Requested value:  # CONFIG_X86_SPEEDSTEP_ICH is not set
Actual value:     

Value requested for CONFIG_X86_SPEEDSTEP_SMI not in final .config
Requested value:  # CONFIG_X86_SPEEDSTEP_SMI is not set
Actual value:     

Value requested for CONFIG_X86_CPUFREQ_NFORCE2 not in final .config
Requested value:  # CONFIG_X86_CPUFREQ_NFORCE2 is not set
Actual value:     

Value requested for CONFIG_X86_LONGRUN not in final .config
Requested value:  # CONFIG_X86_LONGRUN is not set
Actual value:     

Value requested for CONFIG_X86_LONGHAUL not in final .config
Requested value:  # CONFIG_X86_LONGHAUL is not set
Actual value:     

Value requested for CONFIG_X86_E_POWERSAVER not in final .config
Requested value:  # CONFIG_X86_E_POWERSAVER is not set
Actual value:     

Value requested for CONFIG_PCI_GOBIOS not in final .config
Requested value:  # CONFIG_PCI_GOBIOS is not set
Actual value:     

Value requested for CONFIG_PCI_GOMMCONFIG not in final .config
Requested value:  # CONFIG_PCI_GOMMCONFIG is not set
Actual value:     

Value requested for CONFIG_PCI_GODIRECT not in final .config
Requested value:  # CONFIG_PCI_GODIRECT is not set
Actual value:     

Value requested for CONFIG_PCI_GOANY not in final .config
Requested value:  CONFIG_PCI_GOANY=y
Actual value:     

Value requested for CONFIG_PCI_BIOS not in final .config
Requested value:  CONFIG_PCI_BIOS=y
Actual value:     

Value requested for CONFIG_ISA not in final .config
Requested value:  # CONFIG_ISA is not set
Actual value:     

Value requested for CONFIG_SCx200 not in final .config
Requested value:  # CONFIG_SCx200 is not set
Actual value:     

Value requested for CONFIG_OLPC not in final .config
Requested value:  # CONFIG_OLPC is not set
Actual value:     

Value requested for CONFIG_ALIX not in final .config
Requested value:  # CONFIG_ALIX is not set
Actual value:     

Value requested for CONFIG_NET5501 not in final .config
Requested value:  # CONFIG_NET5501 is not set
Actual value:     

Value requested for CONFIG_GEOS not in final .config
Requested value:  # CONFIG_GEOS is not set
Actual value:     

Value requested for CONFIG_COMPAT_32 not in final .config
Requested value:  CONFIG_COMPAT_32=y
Actual value:     

Value requested for CONFIG_HAVE_ATOMIC_IOMAP not in final .config
Requested value:  CONFIG_HAVE_ATOMIC_IOMAP=y
Actual value:     

Value requested for CONFIG_ARCH_32BIT_OFF_T not in final .config
Requested value:  CONFIG_ARCH_32BIT_OFF_T=y
Actual value:     

Value requested for CONFIG_ARCH_WANT_IPC_PARSE_VERSION not in final .config
Requested value:  CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
Actual value:     

Value requested for CONFIG_MODULES_USE_ELF_REL not in final .config
Requested value:  CONFIG_MODULES_USE_ELF_REL=y
Actual value:     

Value requested for CONFIG_ARCH_MMAP_RND_BITS not in final .config
Requested value:  CONFIG_ARCH_MMAP_RND_BITS=8
Actual value:     CONFIG_ARCH_MMAP_RND_BITS=28

Value requested for CONFIG_CLONE_BACKWARDS not in final .config
Requested value:  CONFIG_CLONE_BACKWARDS=y
Actual value:     

Value requested for CONFIG_OLD_SIGSUSPEND3 not in final .config
Requested value:  CONFIG_OLD_SIGSUSPEND3=y
Actual value:     

Value requested for CONFIG_OLD_SIGACTION not in final .config
Requested value:  CONFIG_OLD_SIGACTION=y
Actual value:     

Value requested for CONFIG_ARCH_SPLIT_ARG64 not in final .config
Requested value:  CONFIG_ARCH_SPLIT_ARG64=y
Actual value:     

Value requested for CONFIG_FUNCTION_ALIGNMENT not in final .config
Requested value:  CONFIG_FUNCTION_ALIGNMENT=4
Actual value:     CONFIG_FUNCTION_ALIGNMENT=16

Value requested for CONFIG_SELECT_MEMORY_MODEL not in final .config
Requested value:  CONFIG_SELECT_MEMORY_MODEL=y
Actual value:     

Value requested for CONFIG_FLATMEM_MANUAL not in final .config
Requested value:  CONFIG_FLATMEM_MANUAL=y
Actual value:     

Value requested for CONFIG_SPARSEMEM_MANUAL not in final .config
Requested value:  # CONFIG_SPARSEMEM_MANUAL is not set
Actual value:     

Value requested for CONFIG_FLATMEM not in final .config
Requested value:  CONFIG_FLATMEM=y
Actual value:     

Value requested for CONFIG_SPARSEMEM_STATIC not in final .config
Requested value:  CONFIG_SPARSEMEM_STATIC=y
Actual value:     

Value requested for CONFIG_BOUNCE not in final .config
Requested value:  CONFIG_BOUNCE=y
Actual value:     

Value requested for CONFIG_KMAP_LOCAL not in final .config
Requested value:  CONFIG_KMAP_LOCAL=y
Actual value:     

Value requested for CONFIG_HOTPLUG_PCI_COMPAQ not in final .config
Requested value:  # CONFIG_HOTPLUG_PCI_COMPAQ is not set
Actual value:     

Value requested for CONFIG_HOTPLUG_PCI_IBM not in final .config
Requested value:  # CONFIG_HOTPLUG_PCI_IBM is not set
Actual value:     

Value requested for CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH not in final .config
Requested value:  CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH=y
Actual value:     

Value requested for CONFIG_PCH_PHUB not in final .config
Requested value:  # CONFIG_PCH_PHUB is not set
Actual value:     

Value requested for CONFIG_SCSI_NSP32 not in final .config
Requested value:  # CONFIG_SCSI_NSP32 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5520 not in final .config
Requested value:  # CONFIG_PATA_CS5520 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5530 not in final .config
Requested value:  # CONFIG_PATA_CS5530 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5535 not in final .config
Requested value:  # CONFIG_PATA_CS5535 is not set
Actual value:     

Value requested for CONFIG_PATA_CS5536 not in final .config
Requested value:  # CONFIG_PATA_CS5536 is not set
Actual value:     

Value requested for CONFIG_PATA_SC1200 not in final .config
Requested value:  # CONFIG_PATA_SC1200 is not set
Actual value:     

Value requested for CONFIG_PCH_GBE not in final .config
Requested value:  # CONFIG_PCH_GBE is not set
Actual value:     

Value requested for CONFIG_INPUT_WISTRON_BTNS not in final .config
Requested value:  # CONFIG_INPUT_WISTRON_BTNS is not set
Actual value:     

Value requested for CONFIG_SERIAL_TIMBERDALE not in final .config
Requested value:  # CONFIG_SERIAL_TIMBERDALE is not set
Actual value:     

Value requested for CONFIG_SERIAL_PCH_UART not in final .config
Requested value:  # CONFIG_SERIAL_PCH_UART is not set
Actual value:     

Value requested for CONFIG_HW_RANDOM_GEODE not in final .config
Requested value:  CONFIG_HW_RANDOM_GEODE=y
Actual value:     

Value requested for CONFIG_SONYPI not in final .config
Requested value:  # CONFIG_SONYPI is not set
Actual value:     

Value requested for CONFIG_PC8736x_GPIO not in final .config
Requested value:  # CONFIG_PC8736x_GPIO is not set
Actual value:     

Value requested for CONFIG_NSC_GPIO not in final .config
Requested value:  # CONFIG_NSC_GPIO is not set
Actual value:     

Value requested for CONFIG_I2C_EG20T not in final .config
Requested value:  # CONFIG_I2C_EG20T is not set
Actual value:     

Value requested for CONFIG_SCx200_ACB not in final .config
Requested value:  # CONFIG_SCx200_ACB is not set
Actual value:     

Value requested for CONFIG_PTP_1588_CLOCK_PCH not in final .config
Requested value:  # CONFIG_PTP_1588_CLOCK_PCH is not set
Actual value:     

Value requested for CONFIG_SBC8360_WDT not in final .config
Requested value:  # CONFIG_SBC8360_WDT is not set
Actual value:     

Value requested for CONFIG_SBC7240_WDT not in final .config
Requested value:  # CONFIG_SBC7240_WDT is not set
Actual value:     

Value requested for CONFIG_MFD_CS5535 not in final .config
Requested value:  # CONFIG_MFD_CS5535 is not set
Actual value:     

Value requested for CONFIG_AGP_ALI not in final .config
Requested value:  # CONFIG_AGP_ALI is not set
Actual value:     

Value requested for CONFIG_AGP_ATI not in final .config
Requested value:  # CONFIG_AGP_ATI is not set
Actual value:     

Value requested for CONFIG_AGP_AMD not in final .config
Requested value:  # CONFIG_AGP_AMD is not set
Actual value:     

Value requested for CONFIG_AGP_NVIDIA not in final .config
Requested value:  # CONFIG_AGP_NVIDIA is not set
Actual value:     

Value requested for CONFIG_AGP_SWORKS not in final .config
Requested value:  # CONFIG_AGP_SWORKS is not set
Actual value:     

Value requested for CONFIG_AGP_EFFICEON not in final .config
Requested value:  # CONFIG_AGP_EFFICEON is not set
Actual value:     

Value requested for CONFIG_SND_PCM not in final .config
Requested value:  CONFIG_SND_PCM=y
Actual value:     CONFIG_SND_PCM=m

Value requested for CONFIG_SND_HWDEP not in final .config
Requested value:  CONFIG_SND_HWDEP=y
Actual value:     CONFIG_SND_HWDEP=m

Value requested for CONFIG_SND_DYNAMIC_MINORS not in final .config
Requested value:  # CONFIG_SND_DYNAMIC_MINORS is not set
Actual value:     CONFIG_SND_DYNAMIC_MINORS=y

Value requested for CONFIG_SND_CS5530 not in final .config
Requested value:  # CONFIG_SND_CS5530 is not set
Actual value:     

Value requested for CONFIG_SND_CS5535AUDIO not in final .config
Requested value:  # CONFIG_SND_CS5535AUDIO is not set
Actual value:     

Value requested for CONFIG_SND_SIS7019 not in final .config
Requested value:  # CONFIG_SND_SIS7019 is not set
Actual value:     

Value requested for CONFIG_SND_HDA not in final .config
Requested value:  CONFIG_SND_HDA=y
Actual value:     CONFIG_SND_HDA=m

Value requested for CONFIG_SND_HDA_CORE not in final .config
Requested value:  CONFIG_SND_HDA_CORE=y
Actual value:     CONFIG_SND_HDA_CORE=m

Value requested for CONFIG_SND_INTEL_DSP_CONFIG not in final .config
Requested value:  CONFIG_SND_INTEL_DSP_CONFIG=y
Actual value:     CONFIG_SND_INTEL_DSP_CONFIG=m

Value requested for CONFIG_SND_INTEL_SOUNDWIRE_ACPI not in final .config
Requested value:  CONFIG_SND_INTEL_SOUNDWIRE_ACPI=y
Actual value:     CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m

Value requested for CONFIG_LEDS_OT200 not in final .config
Requested value:  # CONFIG_LEDS_OT200 is not set
Actual value:     

Value requested for CONFIG_PCH_DMA not in final .config
Requested value:  # CONFIG_PCH_DMA is not set
Actual value:     

Value requested for CONFIG_CLKSRC_I8253 not in final .config
Requested value:  CONFIG_CLKSRC_I8253=y
Actual value:     

Value requested for CONFIG_MAILBOX not in final .config
Requested value:  # CONFIG_MAILBOX is not set
Actual value:     CONFIG_MAILBOX=y

Value requested for CONFIG_CRYPTO_SERPENT_SSE2_586 not in final .config
Requested value:  # CONFIG_CRYPTO_SERPENT_SSE2_586 is not set
Actual value:     

Value requested for CONFIG_CRYPTO_TWOFISH_586 not in final .config
Requested value:  # CONFIG_CRYPTO_TWOFISH_586 is not set
Actual value:     

Value requested for CONFIG_CRYPTO_DEV_GEODE not in final .config
Requested value:  # CONFIG_CRYPTO_DEV_GEODE is not set
Actual value:     

Value requested for CONFIG_CRYPTO_DEV_HIFN_795X not in final .config
Requested value:  # CONFIG_CRYPTO_DEV_HIFN_795X is not set
Actual value:     

Value requested for CONFIG_CRYPTO_LIB_POLY1305_RSIZE not in final .config
Requested value:  CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
Actual value:     CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11

Value requested for CONFIG_AUDIT_GENERIC not in final .config
Requested value:  CONFIG_AUDIT_GENERIC=y
Actual value:     

Value requested for CONFIG_GENERIC_VDSO_32 not in final .config
Requested value:  CONFIG_GENERIC_VDSO_32=y
Actual value:     

Value requested for CONFIG_DEBUG_KMAP_LOCAL not in final .config
Requested value:  # CONFIG_DEBUG_KMAP_LOCAL is not set
Actual value:     

Value requested for CONFIG_DEBUG_HIGHMEM not in final .config
Requested value:  # CONFIG_DEBUG_HIGHMEM is not set
Actual value:     

Value requested for CONFIG_HAVE_DEBUG_STACKOVERFLOW not in final .config
Requested value:  CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
Actual value:     

Value requested for CONFIG_DEBUG_STACKOVERFLOW not in final .config
Requested value:  # CONFIG_DEBUG_STACKOVERFLOW is not set
Actual value:     

Value requested for CONFIG_HAVE_FUNCTION_GRAPH_TRACER not in final .config
Requested value:  CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
Actual value:     

Value requested for CONFIG_HAVE_FUNCTION_GRAPH_RETVAL not in final .config
Requested value:  CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y
Actual value:     

Value requested for CONFIG_DRM_KUNIT_TEST not in final .config
Requested value:  CONFIG_DRM_KUNIT_TEST=m
Actual value:     

Value requested for CONFIG_DRM_XE_WERROR not in final .config
Requested value:  CONFIG_DRM_XE_WERROR=y
Actual value:     

Value requested for CONFIG_DRM_XE_DEBUG not in final .config
Requested value:  CONFIG_DRM_XE_DEBUG=y
Actual value:     

Value requested for CONFIG_DRM_XE_DEBUG_MEM not in final .config
Requested value:  CONFIG_DRM_XE_DEBUG_MEM=y
Actual value:     

Value requested for CONFIG_DRM_XE_KUNIT_TEST not in final .config
Requested value:  CONFIG_DRM_XE_KUNIT_TEST=m
Actual value:     

++ nproc
+ make -j48 ARCH=i386 olddefconfig
  GEN     Makefile

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]
#
# configuration written to .config
#
++ nproc
+ make -j48 ARCH=i386
  SYNC    include/config/auto.conf.cmd
  GEN     Makefile

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]

WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
  Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
  Selected by [m]:
  - DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m]
  GEN     Makefile
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  UPD     include/generated/uapi/linux/version.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctls.h
  WRAP    arch/x86/include/generated/uapi/asm/ipcbuf.h
  WRAP    arch/x86/include/generated/uapi/asm/param.h
  WRAP    arch/x86/include/generated/uapi/asm/poll.h
  WRAP    arch/x86/include/generated/uapi/asm/resource.h
  WRAP    arch/x86/include/generated/uapi/asm/socket.h
  WRAP    arch/x86/include/generated/uapi/asm/sockios.h
  WRAP    arch/x86/include/generated/uapi/asm/termbits.h
  WRAP    arch/x86/include/generated/uapi/asm/termios.h
  WRAP    arch/x86/include/generated/uapi/asm/types.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_32.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_64.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  UPD     include/generated/compile.h
  WRAP    arch/x86/include/generated/asm/early_ioremap.h
  WRAP    arch/x86/include/generated/asm/mcs_spinlock.h
  HOSTCC  arch/x86/tools/relocs_32.o
  HOSTCC  arch/x86/tools/relocs_64.o
  WRAP    arch/x86/include/generated/asm/irq_regs.h
  WRAP    arch/x86/include/generated/asm/kmap_size.h
  HOSTCC  arch/x86/tools/relocs_common.o
  WRAP    arch/x86/include/generated/asm/local64.h
  WRAP    arch/x86/include/generated/asm/mmiowb.h
  WRAP    arch/x86/include/generated/asm/module.lds.h
  WRAP    arch/x86/include/generated/asm/rwonce.h
  WRAP    arch/x86/include/generated/asm/unaligned.h
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/asn1_compiler
  HOSTCC  scripts/sorttable
  HOSTCC  scripts/selinux/genheaders/genheaders
  HOSTCC  scripts/selinux/mdp/mdp
  HOSTLD  arch/x86/tools/relocs
  UPD     include/config/kernel.release
  UPD     include/generated/utsrelease.h
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  CC      scripts/mod/devicetable-offsets.s
  UPD     scripts/mod/devicetable-offsets.h
  MKELF   scripts/mod/elfconfig.h
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/file2alias.o
  HOSTCC  scripts/mod/sumversion.o
  HOSTCC  scripts/mod/symsearch.o
  HOSTLD  scripts/mod/modpost
  CC      kernel/bounds.s
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-arch-fallback.h
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-long.h
  CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-instrumented.h
  UPD     include/generated/timeconst.h
  UPD     include/generated/bounds.h
  CC      arch/x86/kernel/asm-offsets.s
  UPD     include/generated/asm-offsets.h
  CALL    /workspace/kernel/scripts/checksyscalls.sh
  LDS     scripts/module.lds
  HOSTCC  usr/gen_init_cpio
  CC      init/main.o
  CC      init/do_mounts.o
  CC      certs/system_keyring.o
  CC      init/do_mounts_initrd.o
  CC      ipc/util.o
  UPD     init/utsversion-tmp.h
  CC      io_uring/io_uring.o
  CC      ipc/msgutil.o
  CC      init/initramfs.o
  CC      ipc/msg.o
  CC      init/calibrate.o
  CC      ipc/sem.o
  CC      io_uring/opdef.o
  CC      init/init_task.o
  CC      io_uring/kbuf.o
  CC      arch/x86/video/video-common.o
  CC      arch/x86/realmode/init.o
  CC      io_uring/rsrc.o
  CC      security/commoncap.o
  CC      arch/x86/power/cpu.o
  AS      arch/x86/lib/atomic64_cx8_32.o
  AR      arch/x86/crypto/built-in.a
  CC      arch/x86/pci/i386.o
  CC      ipc/shm.o
  AR      virt/lib/built-in.a
  GEN     security/selinux/flask.h security/selinux/av_permissions.h
  CC      mm/filemap.o
  CC      security/keys/gc.o
  CC      security/integrity/iint.o
  CC      block/partitions/core.o
  AR      drivers/cache/built-in.a
  CC      security/selinux/avc.o
  CC      lib/math/div64.o
  CC      net/core/sock.o
  AR      arch/x86/platform/atom/built-in.a
  AR      sound/i2c/other/built-in.a
  CC      net/ethernet/eth.o
  AR      arch/x86/virt/svm/built-in.a
  AR      arch/x86/net/built-in.a
  AR      net/802/built-in.a
  CC      arch/x86/kernel/fpu/init.o
  CC      arch/x86/events/amd/core.o
  AR      virt/built-in.a
  AR      sound/drivers/opl3/built-in.a
  CC      sound/core/seq/seq.o
  CC      fs/notify/dnotify/dnotify.o
  AR      sound/i2c/built-in.a
  CC      sound/core/seq/seq_lock.o
  CC      arch/x86/mm/pat/set_memory.o
  AR      drivers/irqchip/built-in.a
  AR      arch/x86/platform/ce4100/built-in.a
  AS      arch/x86/lib/checksum_32.o
  CC      arch/x86/platform/efi/memmap.o
  CC      arch/x86/mm/pat/memtype.o
  CC      arch/x86/entry/vdso/vma.o
  AR      sound/drivers/opl4/built-in.a
  AR      arch/x86/virt/vmx/built-in.a
  CC      arch/x86/lib/cmdline.o
  AR      drivers/bus/mhi/built-in.a
  AR      sound/drivers/mpu401/built-in.a
  AR      arch/x86/entry/vsyscall/built-in.a
  AR      arch/x86/virt/built-in.a
  AR      drivers/bus/built-in.a
  CC      init/version.o
  AR      arch/x86/platform/geode/built-in.a
  AR      sound/drivers/vx/built-in.a
  CC      kernel/sched/core.o
  AS      arch/x86/entry/entry.o
  CC      fs/nfs_common/nfsacl.o
  CC      fs/iomap/trace.o
  AR      drivers/pwm/built-in.a
  AR      sound/drivers/pcsp/built-in.a
  CC      crypto/asymmetric_keys/asymmetric_type.o
  AR      sound/drivers/built-in.a
  CC      drivers/pci/msi/pcidev_msi.o
  CC      drivers/video/console/dummycon.o
  AS      arch/x86/entry/entry_32.o
  CC      lib/math/gcd.o
  AS      arch/x86/lib/cmpxchg8b_emu.o
  AR      sound/isa/ad1816a/built-in.a
  CC      arch/x86/lib/cpu.o
  AR      sound/isa/ad1848/built-in.a
  AR      sound/isa/cs423x/built-in.a
  CC      lib/math/lcm.o
  AR      sound/isa/es1688/built-in.a
  CC      arch/x86/mm/pat/memtype_interval.o
  AR      sound/isa/galaxy/built-in.a
  GEN     usr/initramfs_data.cpio
  CC      drivers/video/backlight/backlight.o
  AR      sound/isa/gus/built-in.a
  CC      lib/math/int_log.o
  AR      sound/isa/msnd/built-in.a
  COPY    usr/initramfs_inc_data
  AS      usr/initramfs_data.o
  AR      sound/isa/opti9xx/built-in.a
  AR      usr/built-in.a
  CC      arch/x86/lib/delay.o
  AR      sound/isa/sb/built-in.a
  HOSTCC  certs/extract-cert
  AR      sound/isa/wavefront/built-in.a
  CC      arch/x86/kernel/fpu/bugs.o
  AR      sound/isa/wss/built-in.a
  CC      lib/math/int_pow.o
  AR      sound/isa/built-in.a
  CC      arch/x86/kernel/fpu/core.o
  CC      arch/x86/entry/syscall_32.o
  CC      lib/math/int_sqrt.o
  CC      crypto/api.o
  CC      lib/math/reciprocal_div.o
  CC      sound/core/seq/seq_clientmgr.o
  AS      arch/x86/realmode/rm/header.o
  AS      arch/x86/realmode/rm/trampoline_32.o
  AR      arch/x86/video/built-in.a
  CC      security/integrity/integrity_audit.o
  AS      arch/x86/realmode/rm/stack.o
  CERT    certs/x509_certificate_list
  CERT    certs/signing_key.x509
  CC      sound/core/seq/seq_memory.o
  AS      certs/system_certificates.o
  AS      arch/x86/lib/getuser.o
  CC      lib/math/rational.o
  AS      arch/x86/realmode/rm/reboot.o
  AR      certs/built-in.a
  GEN     arch/x86/lib/inat-tables.c
  AS      arch/x86/realmode/rm/wakeup_asm.o
  CC      arch/x86/realmode/rm/wakemain.o
  CC      ipc/syscall.o
  AR      drivers/video/fbdev/core/built-in.a
  AR      drivers/video/fbdev/omap/built-in.a
  CC      arch/x86/pci/init.o
  CC      drivers/video/console/vgacon.o
  CC      arch/x86/events/amd/lbr.o
  CC      drivers/pci/msi/api.o
  CC      drivers/video/aperture.o
  AR      drivers/video/fbdev/omap2/omapfb/dss/built-in.a
  CC      arch/x86/lib/insn-eval.o
  AR      drivers/video/fbdev/omap2/omapfb/displays/built-in.a
  CC      security/keys/key.o
  CC      arch/x86/events/amd/ibs.o
  AR      drivers/video/fbdev/omap2/omapfb/built-in.a
  CC      fs/nfs_common/grace.o
  CC      arch/x86/realmode/rm/video-mode.o
  AR      fs/notify/dnotify/built-in.a
  AR      drivers/video/fbdev/omap2/built-in.a
  CC      arch/x86/entry/vdso/extable.o
  CC      crypto/asymmetric_keys/restrict.o
  CC      fs/notify/inotify/inotify_fsnotify.o
  AR      drivers/video/fbdev/built-in.a
  CC      arch/x86/platform/efi/quirks.o
  CC      arch/x86/power/hibernate_32.o
  CC      ipc/ipc_sysctl.o
  AR      sound/pci/ac97/built-in.a
  CC      arch/x86/kernel/fpu/regset.o
  AS      arch/x86/realmode/rm/copy.o
  AR      sound/pci/ali5451/built-in.a
  CC      fs/notify/inotify/inotify_user.o
  AR      sound/pci/asihpi/built-in.a
  AS      arch/x86/realmode/rm/bioscall.o
  AR      sound/pci/au88x0/built-in.a
  CC      block/partitions/msdos.o
  AR      sound/pci/aw2/built-in.a
  CC      arch/x86/realmode/rm/regs.o
  AR      sound/pci/ctxfi/built-in.a
  AR      sound/pci/ca0106/built-in.a
  AR      sound/pci/cs46xx/built-in.a
  AR      sound/pci/cs5535audio/built-in.a
  AR      sound/pci/lola/built-in.a
  CC      arch/x86/realmode/rm/video-vga.o
  AR      lib/math/built-in.a
  CC      arch/x86/realmode/rm/video-vesa.o
  AR      sound/pci/lx6464es/built-in.a
  AR      sound/pci/echoaudio/built-in.a
  AR      sound/pci/emu10k1/built-in.a
  CC      lib/crypto/mpi/generic_mpih-lshift.o
  CC      arch/x86/lib/insn.o
  AR      sound/pci/hda/built-in.a
  AR      sound/pci/ice1712/built-in.a
  CC [M]  sound/pci/hda/hda_bind.o
  CC      arch/x86/lib/kaslr.o
  CC      arch/x86/lib/memcpy_32.o
  AR      sound/pci/korg1212/built-in.a
  CC [M]  sound/pci/hda/hda_codec.o
  AR      drivers/video/backlight/built-in.a
  CC      arch/x86/realmode/rm/video-bios.o
  CC      drivers/video/cmdline.o
  CC      crypto/asymmetric_keys/signature.o
  CC      drivers/video/nomodeset.o
  CC      lib/crypto/memneq.o
  PASYMS  arch/x86/realmode/rm/pasyms.h
  LDS     arch/x86/realmode/rm/realmode.lds
  CC      crypto/asymmetric_keys/public_key.o
  CC      arch/x86/pci/pcbios.o
  CC      arch/x86/events/amd/uncore.o
  LD      arch/x86/realmode/rm/realmode.elf
  RELOCS  arch/x86/realmode/rm/realmode.relocs
  OBJCOPY arch/x86/realmode/rm/realmode.bin
  AS      arch/x86/realmode/rmpiggy.o
  CC      ipc/mqueue.o
  CC      fs/iomap/iter.o
  AR      net/ethernet/built-in.a
  AR      arch/x86/realmode/built-in.a
  CC      fs/iomap/buffered-io.o
  AR      sound/pci/mixart/built-in.a
  AR      security/integrity/built-in.a
  AR      arch/x86/platform/iris/built-in.a
  AR      sound/pci/nm256/built-in.a
  CC      arch/x86/entry/common.o
  CC      sound/core/sound.o
  AR      sound/ppc/built-in.a
  CC      drivers/pci/pcie/portdrv.o
  CC      arch/x86/kernel/cpu/mce/core.o
  CC      arch/x86/kernel/cpu/mtrr/mtrr.o
  CC      arch/x86/kernel/cpu/mtrr/if.o
  CC      drivers/pci/hotplug/pci_hotplug_core.o
  AR      arch/x86/mm/pat/built-in.a
  CC      arch/x86/mm/init.o
  CC      drivers/pci/hotplug/acpi_pcihp.o
  CC      ipc/namespace.o
  AR      init/built-in.a
  CC      drivers/pci/msi/msi.o
  CC      arch/x86/pci/mmconfig_32.o
  AS      arch/x86/power/hibernate_asm_32.o
  AR      fs/nfs_common/built-in.a
  AR      sound/arm/built-in.a
  CC      arch/x86/power/hibernate.o
  AR      sound/sh/built-in.a
  CC      security/keys/keyring.o
  CC [M]  sound/pci/hda/hda_jack.o
  AS      arch/x86/entry/thunk.o
  CC      io_uring/notif.o
  AR      sound/pci/oxygen/built-in.a
  LDS     arch/x86/entry/vdso/vdso32/vdso32.lds
  CC      crypto/cipher.o
  CC      lib/crypto/utils.o
  AR      sound/pci/pcxhr/built-in.a
  AS      arch/x86/entry/vdso/vdso32/note.o
  CC      security/selinux/hooks.o
  AS      arch/x86/lib/memmove_32.o
  CC      arch/x86/kernel/cpu/mce/severity.o
  CC      arch/x86/lib/misc.o
  AS      arch/x86/entry/vdso/vdso32/system_call.o
  CC      sound/core/seq/seq_queue.o
  CC      lib/crypto/mpi/generic_mpih-mul1.o
  AS      arch/x86/entry/vdso/vdso32/sigreturn.o
  CC      arch/x86/lib/pc-conf-reg.o
  CC      lib/crypto/chacha.o
  CC      sound/core/seq/seq_fifo.o
  CC      arch/x86/entry/vdso/vdso32/vclock_gettime.o
  CC      arch/x86/kernel/fpu/signal.o
  CC      ipc/mq_sysctl.o
  CC      arch/x86/platform/efi/efi.o
  AR      drivers/video/console/built-in.a
  CC      lib/crypto/mpi/generic_mpih-mul2.o
  CC      io_uring/tctx.o
  CC      security/lsm_syscalls.o
  CC      arch/x86/kernel/cpu/mce/genpool.o
  AR      drivers/pci/controller/dwc/built-in.a
  CC      block/partitions/efi.o
  AS      arch/x86/lib/putuser.o
  AR      fs/notify/inotify/built-in.a
  AR      drivers/pci/controller/mobiveil/built-in.a
  AR      drivers/pci/controller/built-in.a
  AR      fs/notify/fanotify/built-in.a
  CC      fs/notify/fsnotify.o
  AS      arch/x86/lib/retpoline.o
  CC      arch/x86/kernel/cpu/mce/intel.o
  ASN.1   crypto/asymmetric_keys/x509.asn1.[ch]
  ASN.1   crypto/asymmetric_keys/x509_akid.asn1.[ch]
  CC      crypto/asymmetric_keys/x509_loader.o
  CC      drivers/video/hdmi.o
  CC      arch/x86/lib/string_32.o
  CC      arch/x86/kernel/cpu/mce/amd.o
  AR      drivers/pci/switch/built-in.a
  CC      arch/x86/kernel/cpu/mce/threshold.o
  CC      arch/x86/kernel/cpu/mtrr/generic.o
  CC      arch/x86/kernel/cpu/mtrr/cleanup.o
  CC      arch/x86/kernel/cpu/mtrr/amd.o
  CC      arch/x86/lib/strstr_32.o
  CC      arch/x86/platform/intel/iosf_mbi.o
  CC      arch/x86/lib/usercopy.o
  CC      arch/x86/pci/direct.o
  CC      arch/x86/pci/mmconfig-shared.o
  CC      arch/x86/pci/fixup.o
  CC      crypto/asymmetric_keys/x509_public_key.o
  ASN.1   crypto/asymmetric_keys/pkcs7.asn1.[ch]
  CC      arch/x86/pci/acpi.o
  CC      crypto/asymmetric_keys/pkcs7_trust.o
  CC      arch/x86/pci/legacy.o
  CC      drivers/pci/pcie/rcec.o
  CC      arch/x86/lib/usercopy_32.o
  AR      drivers/pci/hotplug/built-in.a
  CC      arch/x86/kernel/cpu/microcode/core.o
  CC      arch/x86/lib/msr-smp.o
  AR      arch/x86/power/built-in.a
  CC      crypto/compress.o
  CC      arch/x86/events/intel/core.o
  CC      arch/x86/mm/init_32.o
  CC      lib/crypto/mpi/generic_mpih-mul3.o
  CC      drivers/pci/access.o
  AR      arch/x86/events/amd/built-in.a
  CC      arch/x86/events/intel/bts.o
  CC      arch/x86/entry/vdso/vdso32/vgetcpu.o
  CC      drivers/pci/msi/irqdomain.o
  CC      sound/core/seq/seq_prioq.o
  HOSTCC  arch/x86/entry/vdso/vdso2c
  CC      net/sched/sch_generic.o
  CC      arch/x86/entry/vdso/vdso32-setup.o
  CC      arch/x86/kernel/cpu/mtrr/cyrix.o
  CC      sound/core/seq/seq_timer.o
  CC      arch/x86/lib/cache-smp.o
  CC      arch/x86/kernel/cpu/mtrr/centaur.o
  CC      arch/x86/kernel/cpu/mtrr/legacy.o
  CC      arch/x86/events/intel/ds.o
  CC      security/min_addr.o
  CC      arch/x86/kernel/fpu/xstate.o
  CC      arch/x86/platform/efi/efi_32.o
  CC      arch/x86/lib/msr.o
  CC      security/keys/keyctl.o
  CC      fs/notify/notification.o
  CC      fs/notify/group.o
  CC      crypto/asymmetric_keys/pkcs7_verify.o
  AR      drivers/video/built-in.a
  CC      io_uring/filetable.o
  CC      fs/notify/mark.o
  CC      fs/notify/fdinfo.o
  CC      io_uring/rw.o
  AR      arch/x86/platform/intel/built-in.a
  CC      arch/x86/pci/irq.o
  CC      crypto/asymmetric_keys/x509.asn1.o
  AR      ipc/built-in.a
  AR      block/partitions/built-in.a
  AR      arch/x86/platform/intel-mid/built-in.a
  CC      block/bdev.o
  CC      net/sched/sch_mq.o
  CC      crypto/asymmetric_keys/x509_akid.asn1.o
  CC      drivers/pci/pcie/aspm.o
  CC      net/sched/sch_frag.o
  VDSO    arch/x86/entry/vdso/vdso32.so.dbg
  OBJCOPY arch/x86/entry/vdso/vdso32.so
  CC      block/fops.o
  VDSO2C  arch/x86/entry/vdso/vdso-image-32.c
  CC      arch/x86/entry/vdso/vdso-image-32.o
  CC      security/keys/permission.o
  CC      lib/crypto/mpi/generic_mpih-rshift.o
  CC      arch/x86/kernel/cpu/microcode/intel.o
  AR      drivers/idle/built-in.a
  CC      crypto/algapi.o
  AS      arch/x86/lib/msr-reg.o
  CC      crypto/scatterwalk.o
  CC      drivers/pci/pcie/pme.o
  CC      net/core/request_sock.o
  CC      sound/core/seq/seq_system.o
  AR      arch/x86/platform/intel-quark/built-in.a
  CC      lib/crypto/mpi/generic_mpih-sub1.o
  CC      sound/core/seq/seq_ports.o
  AR      arch/x86/platform/olpc/built-in.a
  AR      arch/x86/platform/scx200/built-in.a
  CC      mm/mempool.o
  CC      mm/oom_kill.o
  CC      sound/core/seq/seq_info.o
  AR      arch/x86/platform/ts5500/built-in.a
  AR      arch/x86/kernel/cpu/mtrr/built-in.a
  CC      mm/fadvise.o
  CC      sound/core/seq/seq_dummy.o
  CC [M]  sound/pci/hda/hda_auto_parser.o
  AR      arch/x86/entry/vdso/built-in.a
  AR      arch/x86/entry/built-in.a
  CC      net/sched/sch_api.o
  CC      crypto/asymmetric_keys/x509_cert_parser.o
  CC      security/security.o
  AR      drivers/pci/msi/built-in.a
  CC      security/keys/process_keys.o
  CC      block/bio.o
  CC      arch/x86/mm/fault.o
  CC      arch/x86/events/intel/knc.o
  CC      arch/x86/mm/ioremap.o
  CC      fs/iomap/direct-io.o
  CC      fs/iomap/fiemap.o
  CC      arch/x86/mm/extable.o
  AS      arch/x86/platform/efi/efi_stub_32.o
  AR      arch/x86/platform/uv/built-in.a
  CC      arch/x86/platform/efi/runtime-map.o
  CC      arch/x86/kernel/cpu/cacheinfo.o
  CC      lib/crypto/mpi/generic_mpih-add1.o
  AR      arch/x86/kernel/cpu/mce/built-in.a
  CC [M]  sound/pci/hda/hda_sysfs.o
  CC      arch/x86/lib/msr-reg-export.o
  CC      arch/x86/kernel/cpu/microcode/amd.o
  CC      arch/x86/kernel/cpu/scattered.o
  CC      mm/maccess.o
  CC      io_uring/net.o
  CC      io_uring/poll.o
  CC      mm/page-writeback.o
  AR      fs/notify/built-in.a
  CC      io_uring/uring_cmd.o
  CC      lib/crypto/mpi/ec.o
  CC      io_uring/openclose.o
  CC      arch/x86/kernel/cpu/topology_common.o
  AR      arch/x86/kernel/fpu/built-in.a
  AS      arch/x86/lib/hweight.o
  CC      arch/x86/lib/iomem.o
  CC      arch/x86/kernel/cpu/topology_ext.o
  CC      crypto/asymmetric_keys/pkcs7.asn1.o
  CC      io_uring/sqpoll.o
  CC      crypto/asymmetric_keys/pkcs7_parser.o
  CC      fs/iomap/seek.o
  CC      security/lsm_audit.o
  CC      lib/crypto/mpi/mpicoder.o
  CC      mm/folio-compat.o
  AR      sound/core/seq/built-in.a
  CC      sound/core/init.o
  CC      arch/x86/pci/common.o
  CC      security/selinux/selinuxfs.o
  CC      net/core/skbuff.o
  CC      arch/x86/pci/early.o
  AR      drivers/pci/pcie/built-in.a
  CC      block/elevator.o
  CC      drivers/pci/bus.o
  CC      lib/crypto/mpi/mpi-add.o
  CC      arch/x86/events/intel/lbr.o
  CC      drivers/pci/probe.o
  CC      drivers/pci/host-bridge.o
  CC      arch/x86/events/intel/p4.o
  CC      arch/x86/pci/bus_numa.o
  CC      arch/x86/lib/atomic64_32.o
  CC      crypto/proc.o
  CC      io_uring/xattr.o
  AR      arch/x86/platform/efi/built-in.a
  CC      arch/x86/kernel/cpu/topology_amd.o
  CC      arch/x86/lib/inat.o
  AR      arch/x86/platform/built-in.a
  AR      sound/synth/emux/built-in.a
  CC [M]  sound/pci/hda/hda_controller.o
  CC      arch/x86/pci/amd_bus.o
  AR      sound/synth/built-in.a
  CC      security/keys/request_key.o
  CC [M]  sound/pci/hda/hda_proc.o
  CC      block/blk-core.o
  CC      net/core/datagram.o
  CC      security/device_cgroup.o
  AR      crypto/asymmetric_keys/built-in.a
  CC      lib/crypto/mpi/mpi-bit.o
  AR      arch/x86/kernel/cpu/microcode/built-in.a
  AR      arch/x86/lib/built-in.a
  CC      lib/crypto/mpi/mpi-cmp.o
  AR      arch/x86/lib/lib.a
  CC      mm/readahead.o
  CC      fs/iomap/swapfile.o
  CC      drivers/pci/remove.o
  CC      arch/x86/mm/mmap.o
  CC      arch/x86/mm/pgtable.o
  CC      arch/x86/mm/physaddr.o
  CC      block/blk-sysfs.o
  CC      mm/swap.o
  CC      block/blk-flush.o
  CC      arch/x86/kernel/cpu/common.o
  CC      block/blk-settings.o
  CC      net/sched/sch_blackhole.o
  CC      lib/crypto/mpi/mpi-sub-ui.o
  CC      net/sched/cls_api.o
  AR      sound/pci/riptide/built-in.a
  CC      crypto/aead.o
  CC      lib/crypto/aes.o
  CC      lib/crypto/arc4.o
  CC      net/sched/act_api.o
  CC      sound/core/memory.o
  CC      kernel/locking/mutex.o
  CC      lib/crypto/mpi/mpi-div.o
  AR      arch/x86/pci/built-in.a
  AR      sound/pci/rme9652/built-in.a
  CC      io_uring/nop.o
  CC      arch/x86/events/zhaoxin/core.o
  CC      net/sched/sch_fifo.o
  CC      net/sched/cls_cgroup.o
  CC      lib/crypto/gf128mul.o
  CC      sound/core/control.o
  CC      security/keys/request_key_auth.o
  CC      lib/crypto/mpi/mpi-inv.o
  CC      lib/crypto/mpi/mpi-mod.o
  CC [M]  sound/pci/hda/hda_hwdep.o
  AR      sound/pci/trident/built-in.a
  CC      arch/x86/events/core.o
  CC      arch/x86/events/intel/p6.o
  AR      fs/iomap/built-in.a
  CC [M]  sound/pci/hda/patch_hdmi.o
  CC      arch/x86/events/intel/pt.o
  CC      fs/quota/dquot.o
  AR      sound/pci/ymfpci/built-in.a
  CC      arch/x86/mm/tlb.o
  CC      block/blk-ioc.o
  AR      sound/pci/vx222/built-in.a
  CC      block/blk-map.o
  CC      lib/crypto/mpi/mpi-mul.o
  CC [M]  sound/pci/hda/hda_eld.o
  CC      lib/crypto/blake2s.o
  CC      security/selinux/netlink.o
  CC      lib/crypto/blake2s-generic.o
  CC      arch/x86/mm/cpu_entry_area.o
  CC      lib/crypto/sha1.o
  CC      kernel/sched/fair.o
  CC      mm/truncate.o
  CC      security/selinux/nlmsgtab.o
  CC      security/keys/user_defined.o
  CC      block/blk-merge.o
  CC      net/sched/ematch.o
  CC      fs/proc/task_mmu.o
  CC      lib/crypto/mpi/mpih-cmp.o
  CC      drivers/pci/pci.o
  CC      fs/proc/inode.o
  CC      crypto/geniv.o
  CC      block/blk-timeout.o
  CC      io_uring/fs.o
  CC      kernel/locking/semaphore.o
  CC      lib/zlib_inflate/inffast.o
  AR      drivers/char/ipmi/built-in.a
  CC      crypto/lskcipher.o
  CC      sound/core/misc.o
  CC      drivers/acpi/acpica/dsargs.o
  CC      drivers/pnp/pnpacpi/core.o
  CC      drivers/acpi/acpica/dscontrol.o
  CC      crypto/skcipher.o
  CC      drivers/pnp/pnpacpi/rsparser.o
  AR      sound/usb/misc/built-in.a
  AR      sound/firewire/built-in.a
  AR      arch/x86/events/zhaoxin/built-in.a
  AR      sound/usb/usx2y/built-in.a
  CC      arch/x86/kernel/cpu/rdrand.o
  AR      sound/sparc/built-in.a
  CC      drivers/acpi/acpica/dsdebug.o
  CC      lib/zlib_inflate/inflate.o
  CC      lib/zlib_inflate/infutil.o
  AR      sound/usb/caiaq/built-in.a
  AR      sound/usb/6fire/built-in.a
  CC      net/netlink/af_netlink.o
  AR      net/bpf/built-in.a
  AR      sound/usb/hiface/built-in.a
  CC      net/netlink/genetlink.o
  AR      sound/usb/bcd2000/built-in.a
  AR      sound/usb/built-in.a
  CC      drivers/pnp/core.o
  CC      net/ethtool/ioctl.o
  CC      drivers/pnp/card.o
  CC      io_uring/splice.o
  AR      sound/spi/built-in.a
  AR      drivers/amba/built-in.a
  CC      security/keys/proc.o
  CC      lib/crypto/sha256.o
  CC      mm/vmscan.o
  CC      block/blk-lib.o
  CC      arch/x86/kernel/cpu/match.o
  AR      drivers/clk/actions/built-in.a
  AR      drivers/clk/analogbits/built-in.a
  CC      lib/crypto/mpi/mpih-div.o
  CC      drivers/dma/dw/core.o
  AR      drivers/soc/apple/built-in.a
  AR      drivers/clk/bcm/built-in.a
  AR      drivers/soc/aspeed/built-in.a
  AR      drivers/clk/imgtec/built-in.a
  AR      drivers/soc/bcm/built-in.a
  AR      drivers/clk/imx/built-in.a
  CC      drivers/acpi/acpica/dsfield.o
  AR      drivers/clk/ingenic/built-in.a
  AR      drivers/soc/fsl/built-in.a
  AR      sound/parisc/built-in.a
  AR      drivers/clk/mediatek/built-in.a
  AR      drivers/soc/fujitsu/built-in.a
  CC      drivers/dma/dw/dw.o
  AR      drivers/clk/microchip/built-in.a
  AR      drivers/soc/hisilicon/built-in.a
  CC      arch/x86/mm/maccess.o
  CC      drivers/dma/dw/idma32.o
  AR      drivers/clk/mstar/built-in.a
  AR      drivers/clk/mvebu/built-in.a
  AR      drivers/soc/imx/built-in.a
  CC      drivers/acpi/acpica/dsinit.o
  AR      drivers/clk/ralink/built-in.a
  AR      drivers/soc/ixp4xx/built-in.a
  CC      drivers/acpi/acpica/dsmethod.o
  AR      drivers/clk/renesas/built-in.a
  AR      drivers/soc/loongson/built-in.a
  AR      drivers/clk/socfpga/built-in.a
  AR      drivers/clk/sophgo/built-in.a
  CC      drivers/dma/hsu/hsu.o
  AR      drivers/soc/mediatek/built-in.a
  AR      drivers/clk/sprd/built-in.a
  AR      drivers/soc/microchip/built-in.a
  AR      drivers/clk/starfive/built-in.a
  CC      arch/x86/kernel/cpu/bugs.o
  CC      security/selinux/netif.o
  AR      drivers/soc/nuvoton/built-in.a
  AR      drivers/clk/sunxi-ng/built-in.a
  CC      sound/core/device.o
  AR      drivers/soc/pxa/built-in.a
  CC      arch/x86/events/intel/uncore.o
  CC      sound/core/info.o
  AR      drivers/clk/ti/built-in.a
  CC      kernel/locking/rwsem.o
  CC      drivers/acpi/acpica/dsmthdat.o
  CC      drivers/dma/dw/acpi.o
  AR      drivers/soc/amlogic/built-in.a
  AR      drivers/clk/versatile/built-in.a
  CC      block/blk-mq.o
  AR      drivers/soc/qcom/built-in.a
  AR      drivers/clk/xilinx/built-in.a
  CC      crypto/seqiv.o
  CC      lib/zlib_inflate/inftrees.o
  CC      lib/zlib_inflate/inflate_syms.o
  AR      drivers/clk/built-in.a
  AR      drivers/soc/renesas/built-in.a
  CC      arch/x86/mm/pgprot.o
  CC      io_uring/sync.o
  AR      drivers/soc/rockchip/built-in.a
  AR      drivers/dma/idxd/built-in.a
  AR      sound/pcmcia/vx/built-in.a
  AR      sound/pcmcia/pdaudiocf/built-in.a
  AR      drivers/soc/sunxi/built-in.a
  CC      drivers/pnp/driver.o
  AR      sound/pcmcia/built-in.a
  AR      sound/mips/built-in.a
  CC      arch/x86/kernel/cpu/aperfmperf.o
  CC      arch/x86/kernel/cpu/cpuid-deps.o
  AR      drivers/soc/ti/built-in.a
  CC      net/core/stream.o
  AR      sound/soc/built-in.a
  AR      drivers/soc/xilinx/built-in.a
  CC      arch/x86/kernel/cpu/umwait.o
  MKCAP   arch/x86/kernel/cpu/capflags.c
  AR      drivers/soc/built-in.a
  CC      kernel/sched/build_policy.o
  CC      kernel/sched/build_utility.o
  CC      security/keys/sysctl.o
  CC      drivers/virtio/virtio.o
  AR      drivers/pnp/pnpacpi/built-in.a
  CC      security/keys/keyctl_pkey.o
  CC      drivers/tty/vt/vt_ioctl.o
  CC      lib/crypto/mpi/mpih-mul.o
  CC      drivers/tty/hvc/hvc_console.o
  CC      drivers/acpi/acpica/dsobject.o
  CC      lib/crypto/mpi/mpi-pow.o
  CC      crypto/echainiv.o
  AR      lib/zlib_inflate/built-in.a
  CC      arch/x86/kernel/acpi/boot.o
  AR      sound/atmel/built-in.a
  AR      sound/hda/built-in.a
  CC      mm/shrinker.o
  CC [M]  sound/hda/hda_bus_type.o
  CC [M]  sound/hda/hdac_bus.o
  CC      block/blk-mq-tag.o
  CC [M]  sound/pci/hda/hda_intel.o
  CC      arch/x86/kernel/acpi/sleep.o
  AS      arch/x86/kernel/acpi/wakeup_32.o
  CC [M]  sound/hda/hdac_device.o
  CC      arch/x86/events/probe.o
  CC      fs/quota/quota_v2.o
  CC      arch/x86/mm/pgtable_32.o
  CC      crypto/ahash.o
  AR      drivers/dma/hsu/built-in.a
  CC      drivers/char/hw_random/core.o
  CC      drivers/pnp/resource.o
  CC      drivers/char/hw_random/intel-rng.o
  CC      fs/proc/root.o
  CC      drivers/pnp/manager.o
  CC      kernel/locking/percpu-rwsem.o
  AR      drivers/dma/dw/built-in.a
  CC      sound/core/isadma.o
  AR      drivers/dma/mediatek/built-in.a
  AR      drivers/dma/qcom/built-in.a
  CC      arch/x86/events/intel/uncore_nhmex.o
  AR      net/sched/built-in.a
  AR      drivers/dma/ti/built-in.a
  CC      drivers/acpi/acpica/dsopcode.o
  AR      drivers/dma/xilinx/built-in.a
  CC      drivers/dma/dmaengine.o
  AR      drivers/iommu/amd/built-in.a
  AR      drivers/iommu/intel/built-in.a
  CC      drivers/acpi/acpica/dspkginit.o
  AR      security/keys/built-in.a
  AR      drivers/iommu/arm/arm-smmu/built-in.a
  CC      arch/x86/kernel/cpu/powerflags.o
  CC      crypto/shash.o
  AR      drivers/iommu/arm/arm-smmu-v3/built-in.a
  AR      drivers/iommu/arm/built-in.a
  AR      drivers/iommu/iommufd/built-in.a
  CC      drivers/iommu/iommu.o
  CC      crypto/akcipher.o
  CC      drivers/dma/virt-dma.o
  CC      drivers/virtio/virtio_ring.o
  CC      io_uring/msg_ring.o
  CC      crypto/sig.o
  CC      security/selinux/netnode.o
  CC      kernel/locking/spinlock.o
  CC      lib/crypto/mpi/mpiutil.o
  CC      drivers/acpi/acpica/dsutils.o
  CC      drivers/acpi/acpica/dswexec.o
  AR      drivers/tty/hvc/built-in.a
  CC      drivers/char/hw_random/amd-rng.o
  CC      sound/core/vmaster.o
  CC      drivers/char/agp/backend.o
  CC      drivers/char/mem.o
  CC      drivers/tty/vt/vc_screen.o
  CC      drivers/tty/vt/selection.o
  CC      drivers/char/random.o
  CC      drivers/tty/vt/keyboard.o
  CC      drivers/char/agp/generic.o
  CC      fs/quota/quota_tree.o
  CC      drivers/iommu/iommu-traces.o
  CC      arch/x86/mm/iomap_32.o
  CC      net/core/scm.o
  CC      mm/shmem.o
  CC      drivers/tty/vt/vt.o
  CC      drivers/virtio/virtio_anchor.o
  CC      kernel/locking/osq_lock.o
  CC      fs/proc/base.o
  CC [M]  sound/hda/hdac_sysfs.o
  CC      fs/proc/generic.o
  CC      fs/proc/array.o
  CC      arch/x86/kernel/acpi/cstate.o
  CC      drivers/acpi/acpica/dswload.o
  CC [M]  sound/hda/hdac_regmap.o
  COPY    drivers/tty/vt/defkeymap.c
  CC      drivers/char/misc.o
  CC      kernel/locking/qspinlock.o
  CC      drivers/pci/pci-driver.o
  CC      net/netfilter/core.o
  CC      kernel/locking/rtmutex_api.o
  CC      drivers/pnp/support.o
  CC      sound/core/ctljack.o
  AR      lib/crypto/mpi/built-in.a
  CC      net/netlink/policy.o
  AR      lib/crypto/built-in.a
  CC [M]  sound/hda/hdac_controller.o
  CC      net/ethtool/common.o
  CC      lib/zlib_deflate/deflate.o
  CC      drivers/char/hw_random/geode-rng.o
  CC      arch/x86/mm/hugetlbpage.o
  CC      crypto/kpp.o
  CC      arch/x86/events/intel/uncore_snb.o
  CC      drivers/dma/acpi-dma.o
  CC      io_uring/advise.o
  CC      io_uring/epoll.o
  CC      io_uring/statx.o
  LD [M]  sound/pci/hda/snd-hda-codec.o
  LD [M]  sound/pci/hda/snd-hda-codec-hdmi.o
  CC      arch/x86/events/utils.o
  LD [M]  sound/pci/hda/snd-hda-intel.o
  CC      drivers/tty/vt/consolemap.o
  CC      drivers/acpi/acpica/dswload2.o
  AR      sound/pci/built-in.a
  ASN.1   crypto/rsapubkey.asn1.[ch]
  AR      arch/x86/kernel/acpi/built-in.a
  CC      lib/zlib_deflate/deftree.o
  AR      sound/x86/built-in.a
  CC      drivers/pnp/interface.o
  CC      lib/zlib_deflate/deflate_syms.o
  CC      drivers/char/virtio_console.o
  CC      drivers/pnp/quirks.o
  CC      fs/quota/quota.o
  CC      security/selinux/netport.o
  CC      sound/core/jack.o
  CC      drivers/iommu/iommu-sysfs.o
  CC      drivers/iommu/dma-iommu.o
  ASN.1   crypto/rsaprivkey.asn1.[ch]
  CC      arch/x86/events/rapl.o
  CC      drivers/char/hpet.o
  CC      drivers/char/agp/isoch.o
  CC      arch/x86/kernel/apic/apic.o
  CC      arch/x86/kernel/kprobes/core.o
  CC      arch/x86/kernel/kprobes/opt.o
  CC      drivers/virtio/virtio_pci_modern_dev.o
  CC      net/core/gen_stats.o
  CC      drivers/acpi/acpica/dswscope.o
  CC      drivers/char/hw_random/via-rng.o
  CC      drivers/pnp/system.o
  CC      block/blk-stat.o
  CC      arch/x86/mm/dump_pagetables.o
  CC      drivers/iommu/iova.o
  CC      drivers/char/nvram.o
  CC [M]  sound/hda/hdac_stream.o
  CC      crypto/rsa.o
  AR      lib/zlib_deflate/built-in.a
  CC      kernel/locking/qrwlock.o
  CC      lib/lzo/lzo1x_compress.o
  CC      net/ethtool/netlink.o
  LDS     arch/x86/kernel/vmlinux.lds
  AR      drivers/dma/built-in.a
  CC      drivers/virtio/virtio_pci_legacy_dev.o
  CC      drivers/virtio/virtio_pci_modern.o
  AR      net/netlink/built-in.a
  CC      drivers/char/agp/amd64-agp.o
  CC      fs/proc/fd.o
  CC      arch/x86/events/intel/uncore_snbep.o
  CC      drivers/acpi/acpica/dswstate.o
  CC      arch/x86/events/intel/uncore_discovery.o
  CC      drivers/acpi/acpica/evevent.o
  CC      fs/proc/proc_tty.o
  CC      io_uring/timeout.o
  CC      fs/proc/cmdline.o
  AR      drivers/char/hw_random/built-in.a
  HOSTCC  drivers/tty/vt/conmakehash
  CC      arch/x86/mm/highmem_32.o
  CC      sound/core/timer.o
  CC      sound/core/hrtimer.o
  CC      lib/lz4/lz4_decompress.o
  CC      drivers/pci/search.o
  AR      drivers/pnp/built-in.a
  CC      arch/x86/events/intel/cstate.o
  AS      arch/x86/kernel/head_32.o
  CC      drivers/char/agp/intel-agp.o
  CC      net/ethtool/bitset.o
  CC      lib/zstd/zstd_decompress_module.o
  CC      net/netfilter/nf_log.o
  AR      kernel/locking/built-in.a
  CC      net/ethtool/strset.o
  CC      net/ethtool/linkinfo.o
  CC      lib/lzo/lzo1x_decompress_safe.o
  CC      fs/quota/kqid.o
  CC      fs/quota/netlink.o
  CC      security/selinux/status.o
  CC      drivers/acpi/acpica/evgpe.o
  CC      block/blk-mq-sysfs.o
  CC      arch/x86/kernel/head32.o
  CC      crypto/rsa_helper.o
  AR      sound/xen/built-in.a
  CC      lib/xz/xz_dec_syms.o
  CC      lib/xz/xz_dec_stream.o
  AR      arch/x86/kernel/kprobes/built-in.a
  CC      lib/xz/xz_dec_lzma2.o
  CC      arch/x86/kernel/ebda.o
  CC      fs/kernfs/mount.o
  CC      sound/core/seq_device.o
  CC      fs/sysfs/file.o
  CC      block/blk-mq-cpumap.o
  CC      crypto/rsa-pkcs1pad.o
  CC      block/blk-mq-sched.o
  CC      net/ethtool/linkmodes.o
  CC      lib/xz/xz_dec_bcj.o
  CC      lib/zstd/decompress/huf_decompress.o
  CC      net/ipv4/netfilter/nf_defrag_ipv4.o
  CC      net/ipv4/route.o
  AR      arch/x86/mm/built-in.a
  CC      net/core/gen_estimator.o
  CC      io_uring/fdinfo.o
  CC      net/xfrm/xfrm_policy.o
  CC      drivers/virtio/virtio_pci_common.o
  CC      mm/util.o
  CC [M]  sound/hda/array.o
  CC      fs/proc/consoles.o
  CC      drivers/pci/rom.o
  CC      net/xfrm/xfrm_state.o
  AR      lib/lzo/built-in.a
  AR      drivers/iommu/built-in.a
  CC      fs/proc/cpuinfo.o
  CC      fs/sysfs/dir.o
  CC      drivers/acpi/acpica/evgpeblk.o
  CC      fs/proc/devices.o
  CC      drivers/tty/vt/defkeymap.o
  CC      lib/zstd/decompress/zstd_ddict.o
  CC [M]  sound/hda/hdmi_chmap.o
  AR      drivers/acpi/pmic/built-in.a
  CC      arch/x86/events/msr.o
  CC      kernel/power/qos.o
  CC      drivers/char/agp/intel-gtt.o
  CC      kernel/power/main.o
  CC      kernel/power/console.o
  CC      kernel/printk/printk.o
  CC      kernel/power/process.o
  CONMK   drivers/tty/vt/consolemap_deftbl.c
  CC      kernel/printk/conopt.o
  CC      drivers/tty/vt/consolemap_deftbl.o
  AR      drivers/tty/vt/built-in.a
  CC      kernel/printk/printk_safe.o
  CC      drivers/tty/serial/8250/8250_core.o
  CC      io_uring/cancel.o
  AR      fs/quota/built-in.a
  AR      lib/xz/built-in.a
  CC      drivers/tty/serial/8250/8250_pnp.o
  AR      kernel/sched/built-in.a
  CC      drivers/tty/serial/serial_core.o
  CC      drivers/tty/serial/8250/8250_port.o
  CC      lib/zstd/decompress/zstd_decompress.o
  AR      lib/lz4/built-in.a
  CC      lib/zstd/decompress/zstd_decompress_block.o
  CC      arch/x86/kernel/apic/apic_common.o
  CC      fs/kernfs/inode.o
  CC      drivers/acpi/acpica/evgpeinit.o
  CC      drivers/tty/serial/8250/8250_dma.o
  CC      drivers/tty/serial/serial_base_bus.o
  CC      fs/devpts/inode.o
  CC      arch/x86/kernel/platform-quirks.o
  CC      fs/sysfs/symlink.o
  AR      drivers/tty/ipwireless/built-in.a
  CC      fs/sysfs/mount.o
  CC      crypto/acompress.o
  CC      fs/sysfs/group.o
  CC      net/netfilter/nf_queue.o
  CC [M]  sound/hda/trace.o
  CC      arch/x86/kernel/process_32.o
  CC      drivers/pci/setup-res.o
  CC      security/selinux/ss/ebitmap.o
  CC [M]  sound/core/hwdep.o
  CC      drivers/pci/irq.o
  CC      fs/proc/interrupts.o
  CC      net/ethtool/rss.o
  CC      drivers/virtio/virtio_pci_legacy.o
  CC      net/core/net_namespace.o
  CC      block/ioctl.o
  CC      drivers/acpi/acpica/evgpeutil.o
  CC      arch/x86/kernel/apic/apic_noop.o
  CC      drivers/pci/vpd.o
  CC      drivers/pci/setup-bus.o
  CC      drivers/tty/tty_io.o
  CC      kernel/power/suspend.o
  CC      mm/mmzone.o
  CC      arch/x86/kernel/signal.o
  CC      net/ethtool/linkstate.o
  CC      net/ipv4/netfilter/nf_reject_ipv4.o
  CC      drivers/tty/serial/8250/8250_dwlib.o
  AR      drivers/char/agp/built-in.a
  AR      drivers/char/built-in.a
  CC      net/ipv4/inetpeer.o
  CC      mm/vmstat.o
  CC      fs/proc/loadavg.o
  CC      lib/zstd/zstd_common_module.o
  CC      net/ipv4/netfilter/ip_tables.o
  CC [M]  sound/hda/hdac_component.o
  CC      drivers/tty/serial/serial_ctrl.o
  CC      fs/kernfs/dir.o
  AR      arch/x86/events/intel/built-in.a
  CC      drivers/pci/vc.o
  AR      fs/devpts/built-in.a
  CC      drivers/acpi/acpica/evglock.o
  AR      arch/x86/events/built-in.a
  CC      drivers/acpi/acpica/evhandler.o
  CC      drivers/pci/mmap.o
  CC      arch/x86/kernel/apic/ipi.o
  AR      fs/sysfs/built-in.a
  CC      drivers/tty/serial/serial_port.o
  CC      io_uring/waitid.o
  CC      fs/proc/meminfo.o
  CC      fs/netfs/buffered_read.o
  CC      fs/netfs/buffered_write.o
  CC      fs/netfs/direct_read.o
  CC      drivers/acpi/acpica/evmisc.o
  CC      crypto/scompress.o
  CC [M]  sound/core/pcm.o
  CC      crypto/algboss.o
  CC      drivers/virtio/virtio_pci_admin_legacy_io.o
  CC      crypto/testmgr.o
  CC      fs/proc/stat.o
  CC      drivers/tty/serial/earlycon.o
  CC      drivers/tty/serial/8250/8250_pcilib.o
  CC [M]  sound/hda/hdac_i915.o
  CC      drivers/acpi/acpica/evregion.o
  CC [M]  sound/core/pcm_native.o
  CC [M]  sound/core/pcm_lib.o
  CC      fs/proc/uptime.o
  CC [M]  sound/core/pcm_misc.o
  CC      net/ipv4/protocol.o
  CC      security/selinux/ss/hashtab.o
  CC      block/genhd.o
  CC      arch/x86/kernel/apic/vector.o
  CC      net/netfilter/nf_sockopt.o
  AR      drivers/gpu/host1x/built-in.a
  CC      drivers/connector/cn_queue.o
  AR      drivers/gpu/vga/built-in.a
  CC      arch/x86/kernel/signal_32.o
  CC      arch/x86/kernel/apic/init.o
  CC      arch/x86/kernel/traps.o
  CC      net/netfilter/utils.o
  CC      lib/zstd/common/debug.o
  CC      fs/proc/util.o
  CC      net/ethtool/debug.o
  CC      drivers/virtio/virtio_input.o
  AR      drivers/gpu/drm/tests/built-in.a
  AR      drivers/gpu/drm/arm/built-in.a
  CC      drivers/gpu/drm/display/drm_display_helper_mod.o
  CC      net/ipv4/netfilter/iptable_filter.o
  CC      crypto/cmac.o
  CC      drivers/acpi/acpica/evrgnini.o
  CC      drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
  CC      kernel/printk/nbcon.o
  CC      kernel/power/hibernate.o
  CC      net/core/secure_seq.o
  CC [M]  sound/hda/intel-dsp-config.o
  CC      security/selinux/ss/symtab.o
  CC      drivers/acpi/acpica/evsci.o
  CC      drivers/acpi/acpica/evxface.o
  CC      net/ipv4/ip_input.o
  CC      drivers/gpu/drm/ttm/ttm_tt.o
  CC      net/ipv4/ip_fragment.o
  CC      io_uring/register.o
  CC      arch/x86/kernel/cpu/topology.o
  CC      net/ipv4/ip_forward.o
  CC      drivers/tty/serial/8250/8250_early.o
  CC      net/core/flow_dissector.o
  CC      crypto/hmac.o
  CC      drivers/pci/devres.o
  CC      drivers/gpu/drm/ttm/ttm_bo.o
  CC      drivers/gpu/drm/i915/i915_config.o
  CC      fs/kernfs/file.o
  CC      lib/zstd/common/entropy_common.o
  CC      drivers/gpu/drm/i915/i915_driver.o
  CC      security/selinux/ss/sidtab.o
  CC      security/selinux/ss/avtab.o
  CC      drivers/gpu/drm/ttm/ttm_bo_util.o
  CC      fs/netfs/direct_write.o
  CC      fs/netfs/io.o
  CC      arch/x86/kernel/idt.o
  CC      mm/backing-dev.o
  CC      fs/proc/version.o
  CC      lib/zstd/common/error_private.o
  CC      net/netfilter/nfnetlink.o
  CC      kernel/printk/printk_ringbuffer.o
  CC      drivers/tty/serial/8250/8250_exar.o
  CC      lib/zstd/common/fse_decompress.o
  CC      arch/x86/kernel/cpu/proc.o
  CC      drivers/connector/connector.o
  CC      drivers/tty/n_tty.o
  CC      drivers/pci/proc.o
  CC      lib/zstd/common/zstd_common.o
  CC      drivers/acpi/acpica/evxfevnt.o
  CC      fs/proc/softirqs.o
  CC      kernel/irq/irqdesc.o
  CC      drivers/virtio/virtio_dma_buf.o
  CC      net/netfilter/nfnetlink_log.o
  CC      drivers/pci/pci-sysfs.o
  CC      kernel/irq/handle.o
  CC [M]  sound/hda/intel-nhlt.o
  CC      drivers/tty/serial/8250/8250_lpss.o
  CC      drivers/gpu/drm/display/drm_dp_helper.o
  CC      kernel/printk/sysctl.o
  CC      net/ethtool/wol.o
  CC      crypto/crypto_null.o
  CC      block/ioprio.o
  CC      drivers/tty/serial/8250/8250_mid.o
  CC      net/xfrm/xfrm_hash.o
  CC      crypto/md5.o
  CC      net/ethtool/features.o
  CC      net/ipv4/netfilter/iptable_mangle.o
  AR      lib/zstd/built-in.a
  CC      drivers/acpi/acpica/evxfgpe.o
  CC      fs/proc/namespaces.o
  CC      lib/dim/dim.o
  CC      fs/proc/self.o
  AR      kernel/printk/built-in.a
  CC      fs/kernfs/symlink.o
  CC      mm/mm_init.o
  CC      arch/x86/kernel/cpu/feat_ctl.o
  CC      drivers/acpi/acpica/evxfregn.o
  CC      net/netfilter/nf_conntrack_core.o
  CC      fs/ext4/balloc.o
  CC      drivers/gpu/drm/ttm/ttm_bo_vm.o
  CC      fs/ext4/bitmap.o
  CC      arch/x86/kernel/apic/hw_nmi.o
  AR      sound/virtio/built-in.a
  CC      fs/netfs/iterator.o
  CC      arch/x86/kernel/apic/io_apic.o
  AR      drivers/virtio/built-in.a
  CC      fs/ext4/block_validity.o
  CC [M]  sound/hda/intel-sdw-acpi.o
  CC      mm/percpu.o
  CC      kernel/irq/manage.o
  CC      kernel/power/snapshot.o
  CC      fs/proc/thread_self.o
  AR      drivers/gpu/drm/renesas/rcar-du/built-in.a
  AR      drivers/gpu/drm/renesas/rz-du/built-in.a
  CC      net/core/sysctl_net_core.o
  AR      drivers/gpu/drm/omapdrm/built-in.a
  AR      drivers/gpu/drm/renesas/built-in.a
  AR      drivers/gpu/drm/tilcdc/built-in.a
  CC      lib/dim/net_dim.o
  CC      net/core/dev.o
  CC      drivers/gpu/drm/virtio/virtgpu_drv.o
  CC      net/ipv4/ip_options.o
  CC      arch/x86/kernel/cpu/intel.o
  CC      drivers/connector/cn_proc.o
  CC      net/ipv4/ip_output.o
  CC      security/selinux/ss/policydb.o
  CC      drivers/base/power/sysfs.o
  CC      drivers/gpu/drm/virtio/virtgpu_kms.o
  CC      crypto/sha256_generic.o
  CC      net/ipv4/ip_sockglue.o
  CC      drivers/acpi/acpica/exconcat.o
  CC      net/xfrm/xfrm_input.o
  CC      drivers/base/regmap/regmap.o
  CC      drivers/base/firmware_loader/main.o
  AR      drivers/base/test/built-in.a
  CC      drivers/base/firmware_loader/builtin/main.o
  CC      mm/slab_common.o
  CC      drivers/tty/serial/8250/8250_pci.o
  CC      io_uring/truncate.o
  CC      drivers/base/regmap/regcache.o
  AR      fs/kernfs/built-in.a
  CC      net/core/dev_addr_lists.o
  CC      fs/jbd2/transaction.o
  CC      block/badblocks.o
  LD [M]  sound/hda/snd-hda-core.o
  CC      lib/dim/rdma_dim.o
  LD [M]  sound/hda/snd-intel-dspcfg.o
  CC      drivers/pci/slot.o
  LD [M]  sound/hda/snd-intel-sdw-acpi.o
  CC      fs/jbd2/commit.o
  CC      fs/jbd2/recovery.o
  CC      fs/proc/proc_sysctl.o
  CC      drivers/gpu/drm/ttm/ttm_module.o
  CC      net/ethtool/privflags.o
  AR      drivers/base/firmware_loader/builtin/built-in.a
  CC      drivers/acpi/acpica/exconfig.o
  CC      drivers/acpi/acpica/exconvrt.o
  CC      fs/jbd2/checkpoint.o
  CC [M]  sound/core/pcm_memory.o
  CC      drivers/gpu/drm/i915/i915_drm_client.o
  CC      net/ipv4/netfilter/ipt_REJECT.o
  CC [M]  sound/core/memalloc.o
  CC      drivers/base/power/generic_ops.o
  CC      drivers/tty/serial/8250/8250_pericom.o
  CC      fs/netfs/locking.o
  CC      crypto/sha512_generic.o
  CC [M]  net/ipv4/netfilter/iptable_nat.o
  CC      fs/ext4/dir.o
  CC      kernel/power/swap.o
  AR      lib/dim/built-in.a
  CC      lib/fonts/fonts.o
  CC      drivers/gpu/drm/virtio/virtgpu_gem.o
  CC      lib/fonts/font_8x16.o
  CC      drivers/acpi/acpica/excreate.o
  CC      drivers/acpi/acpica/exdebug.o
  CC      drivers/gpu/drm/ttm/ttm_execbuf_util.o
  AR      drivers/connector/built-in.a
  CC      drivers/base/power/common.o
  AR      drivers/base/firmware_loader/built-in.a
  CC      drivers/gpu/drm/display/drm_dp_mst_topology.o
  CC      drivers/base/component.o
  CC      arch/x86/kernel/cpu/intel_pconfig.o
  CC      drivers/pci/pci-acpi.o
  CC      io_uring/memmap.o
  CC      drivers/base/power/qos.o
  CC      lib/argv_split.o
  CC      mm/compaction.o
  CC      kernel/irq/spurious.o
  CC      arch/x86/kernel/cpu/tsx.o
  CC      mm/show_mem.o
  AR      lib/fonts/built-in.a
  CC      net/core/dst.o
  CC      block/blk-rq-qos.o
  CC      io_uring/io-wq.o
  CC      crypto/sha3_generic.o
  CC      fs/ramfs/inode.o
  CC      fs/hugetlbfs/inode.o
  CC      drivers/acpi/acpica/exdump.o
  CC      fs/ramfs/file-mmu.o
  CC      arch/x86/kernel/apic/msi.o
  AR      drivers/gpu/drm/imx/built-in.a
  CC [M]  sound/core/pcm_timer.o
  CC      drivers/acpi/acpica/exfield.o
  CC      net/ethtool/rings.o
  AR      drivers/gpu/drm/i2c/built-in.a
  AR      drivers/tty/serial/8250/built-in.a
  CC      crypto/ecb.o
  AR      drivers/tty/serial/built-in.a
  CC      drivers/tty/tty_ioctl.o
  CC      fs/netfs/main.o
  CC      drivers/tty/tty_ldisc.o
  CC      lib/bug.o
  CC      security/selinux/ss/services.o
  CC      io_uring/futex.o
  CC      drivers/gpu/drm/virtio/virtgpu_vram.o
  CC      drivers/gpu/drm/ttm/ttm_range_manager.o
  CC      net/core/netevent.o
  CC      net/xfrm/xfrm_output.o
  CC      arch/x86/kernel/cpu/intel_epb.o
  CC      fs/jbd2/revoke.o
  CC      fs/ext4/ext4_jbd2.o
  CC      fs/ext4/extents.o
  CC      kernel/irq/resend.o
  CC      lib/buildid.o
  AR      net/ipv4/netfilter/built-in.a
  CC      drivers/gpu/drm/i915/i915_getparam.o
  CC      mm/shmem_quota.o
  CC      net/netfilter/nf_conntrack_standalone.o
  CC      fs/netfs/misc.o
  CC      drivers/gpu/drm/i915/i915_ioctl.o
  CC      net/ipv4/inet_hashtables.o
  CC      drivers/base/core.o
  CC      drivers/acpi/acpica/exfldio.o
  CC      fs/proc/proc_net.o
  CC      drivers/base/regmap/regcache-rbtree.o
  CC      kernel/irq/chip.o
  CC      crypto/cbc.o
  CC      net/netfilter/nf_conntrack_expect.o
  CC      kernel/power/user.o
  CC      kernel/power/poweroff.o
  AR      fs/ramfs/built-in.a
  CC      lib/clz_tab.o
  CC      fs/netfs/objects.o
  CC      block/disk-events.o
  LD [M]  sound/core/snd-hwdep.o
  CC      fs/netfs/write_collect.o
  LD [M]  sound/core/snd-pcm.o
  AR      sound/core/built-in.a
  CC      sound/sound_core.o
  CC      arch/x86/kernel/apic/probe_32.o
  CC      net/netfilter/nf_conntrack_helper.o
  CC      arch/x86/kernel/cpu/amd.o
  CC      drivers/base/regmap/regcache-flat.o
  CC      drivers/pci/iomap.o
  CC      lib/cmdline.o
  CC      fs/jbd2/journal.o
  CC      drivers/tty/tty_buffer.o
  CC      drivers/gpu/drm/ttm/ttm_resource.o
  CC      drivers/tty/tty_port.o
  CC      drivers/base/power/runtime.o
  CC      drivers/pci/quirks.o
  CC      crypto/ctr.o
  CC      drivers/gpu/drm/virtio/virtgpu_display.o
  CC      lib/cpumask.o
  CC      drivers/acpi/acpica/exmisc.o
  CC      drivers/gpu/drm/ttm/ttm_pool.o
  CC      net/netfilter/nf_conntrack_proto.o
  CC      net/ethtool/channels.o
  CC      net/core/neighbour.o
  CC      net/netfilter/nf_conntrack_proto_generic.o
  CC      sound/last.o
  AR      fs/hugetlbfs/built-in.a
  AR      arch/x86/kernel/apic/built-in.a
  CC      arch/x86/kernel/irq.o
  CC      arch/x86/kernel/irq_32.o
  CC      fs/fat/cache.o
  CC      io_uring/napi.o
  CC      arch/x86/kernel/dumpstack_32.o
  CC      fs/fat/dir.o
  CC      fs/proc/kcore.o
  CC      arch/x86/kernel/time.o
  AR      kernel/power/built-in.a
  CC      drivers/base/regmap/regcache-maple.o
  CC      fs/proc/vmcore.o
  CC      arch/x86/kernel/ioport.o
  CC      drivers/gpu/drm/i915/i915_irq.o
  CC      drivers/acpi/acpica/exmutex.o
  CC      net/core/rtnetlink.o
  AR      drivers/gpu/drm/panel/built-in.a
  CC      fs/netfs/write_issue.o
  CC      kernel/irq/dummychip.o
  CC      crypto/gcm.o
  CC      fs/fat/fatent.o
  CC      block/blk-ia-ranges.o
  AR      sound/built-in.a
  CC      net/netfilter/nf_conntrack_proto_tcp.o
  CC      lib/ctype.o
  CC      lib/dec_and_lock.o
  CC      drivers/tty/tty_mutex.o
  CC      arch/x86/kernel/cpu/hygon.o
  CC      fs/proc/kmsg.o
  CC      net/xfrm/xfrm_sysctl.o
  CC      drivers/gpu/drm/virtio/virtgpu_vq.o
  CC      kernel/rcu/update.o
  CC      drivers/tty/tty_ldsem.o
  CC      arch/x86/kernel/dumpstack.o
  CC      kernel/rcu/sync.o
  CC      lib/decompress.o
  CC      drivers/acpi/acpica/exnames.o
  CC      lib/decompress_bunzip2.o
  CC      kernel/rcu/srcutree.o
  CC      fs/proc/page.o
  CC      drivers/gpu/drm/ttm/ttm_device.o
  CC      kernel/irq/devres.o
  CC      drivers/gpu/drm/ttm/ttm_sys_manager.o
  CC      net/core/utils.o
  CC      net/xfrm/xfrm_replay.o
  CC      drivers/base/regmap/regmap-debugfs.o
  CC      drivers/base/power/wakeirq.o
  CC      net/xfrm/xfrm_device.o
  CC      net/netfilter/nf_conntrack_proto_udp.o
  CC      net/xfrm/xfrm_algo.o
  CC      net/ethtool/coalesce.o
  CC      arch/x86/kernel/cpu/centaur.o
  AR      kernel/livepatch/built-in.a
  CC      kernel/dma/mapping.o
  CC      arch/x86/kernel/nmi.o
  CC      kernel/dma/direct.o
  CC      kernel/entry/common.o
  CC      fs/ext4/extents_status.o
  CC      drivers/acpi/acpica/exoparg1.o
  CC      drivers/base/power/main.o
  CC      block/early-lookup.o
  CC      net/core/link_watch.o
  CC      kernel/irq/autoprobe.o
  CC      drivers/gpu/drm/display/drm_dsc_helper.o
  CC      net/ipv4/inet_timewait_sock.o
  CC      drivers/tty/tty_baudrate.o
  CC      crypto/ccm.o
  CC      kernel/module/main.o
  CC      kernel/time/time.o
  CC      kernel/futex/core.o
  CC      security/selinux/ss/conditional.o
  CC      arch/x86/kernel/cpu/transmeta.o
  CC      lib/decompress_inflate.o
  CC      fs/fat/file.o
  AR      drivers/gpu/drm/bridge/analogix/built-in.a
  AR      io_uring/built-in.a
  CC      drivers/gpu/drm/ttm/ttm_agp_backend.o
  AR      fs/netfs/built-in.a
  CC      block/bounce.o
  AR      drivers/gpu/drm/bridge/cadence/built-in.a
  CC      block/bsg.o
  AR      fs/proc/built-in.a
  AR      drivers/gpu/drm/bridge/imx/built-in.a
  CC      kernel/futex/syscalls.o
  AR      drivers/gpu/drm/bridge/synopsys/built-in.a
  AR      drivers/gpu/drm/bridge/built-in.a
  CC      mm/interval_tree.o
  CC      kernel/cgroup/cgroup.o
  AR      drivers/base/regmap/built-in.a
  CC      kernel/cgroup/rstat.o
  CC      drivers/acpi/acpica/exoparg2.o
  CC      drivers/acpi/acpica/exoparg3.o
  CC      net/xfrm/xfrm_user.o
  CC      kernel/irq/irqdomain.o
  CC      drivers/gpu/drm/i915/i915_mitigations.o
  CC      drivers/gpu/drm/virtio/virtgpu_fence.o
  CC      drivers/pci/pci-label.o
  CC      kernel/cgroup/namespace.o
  CC      net/netfilter/nf_conntrack_proto_icmp.o
  CC      drivers/tty/tty_jobctrl.o
  CC      kernel/entry/syscall_user_dispatch.o
  CC      mm/list_lru.o
  CC      kernel/trace/trace_clock.o
  CC      lib/decompress_unlz4.o
  CC      net/core/filter.o
  CC      arch/x86/kernel/cpu/zhaoxin.o
  CC      kernel/trace/ring_buffer.o
  CC      net/ethtool/pause.o
  CC      kernel/trace/trace.o
  CC      net/ipv4/inet_connection_sock.o
  CC      drivers/acpi/acpica/exoparg6.o
  CC      kernel/trace/trace_output.o
  CC      kernel/dma/ops_helpers.o
  CC      drivers/gpu/drm/i915/i915_module.o
  AR      drivers/gpu/drm/ttm/built-in.a
  CC      mm/workingset.o
  CC      fs/ext4/file.o
  CC      net/ipv4/tcp.o
  CC      drivers/gpu/drm/display/drm_hdcp_helper.o
  CC      drivers/gpu/drm/virtio/virtgpu_object.o
  AR      fs/jbd2/built-in.a
  CC      block/blk-cgroup.o
  CC      drivers/gpu/drm/display/drm_hdmi_helper.o
  CC      crypto/aes_generic.o
  CC      kernel/module/strict_rwx.o
  CC      kernel/time/timer.o
  CC      net/ethtool/eee.o
  CC      drivers/acpi/acpica/exprep.o
  CC      arch/x86/kernel/cpu/vortex.o
  CC      fs/fat/inode.o
  CC      drivers/acpi/acpica/exregion.o
  CC      drivers/acpi/dptf/int340x_thermal.o
  CC      lib/decompress_unlzma.o
  CC      kernel/futex/pi.o
  AR      kernel/entry/built-in.a
  CC      kernel/cgroup/cgroup-v1.o
  CC      drivers/pci/vgaarb.o
  CC      net/ipv4/tcp_input.o
  CC      fs/fat/misc.o
  CC      kernel/module/kmod.o
  CC      security/selinux/ss/mls.o
  CC      fs/isofs/namei.o
  CC      drivers/tty/n_null.o
  CC      kernel/dma/dummy.o
  CC      fs/isofs/inode.o
  CC      kernel/rcu/tree.o
  CC      mm/debug.o
  CC      fs/nfs/client.o
  CC      block/blk-ioprio.o
  CC      kernel/irq/proc.o
  CC      drivers/base/power/wakeup.o
  CC      arch/x86/kernel/cpu/perfctr-watchdog.o
  CC      fs/nfs/dir.o
  CC      kernel/module/tree_lookup.o
  CC      drivers/gpu/drm/display/drm_scdc_helper.o
  CC      drivers/acpi/acpica/exresnte.o
  CC      kernel/cgroup/freezer.o
  AR      drivers/acpi/dptf/built-in.a
  CC      drivers/gpu/drm/virtio/virtgpu_debugfs.o
  CC      arch/x86/kernel/cpu/vmware.o
  CC      drivers/gpu/drm/i915/i915_params.o
  CC      net/netfilter/nf_conntrack_extend.o
  CC      crypto/crc32c_generic.o
  CC      fs/ext4/fsmap.o
  CC      fs/ext4/fsync.o
  CC      lib/decompress_unlzo.o
  CC      fs/ext4/hash.o
  CC      kernel/futex/requeue.o
  CC      drivers/tty/pty.o
  CC      kernel/module/kallsyms.o
  CC      drivers/acpi/acpica/exresolv.o
  CC      kernel/dma/remap.o
  CC      net/ethtool/tsinfo.o
  CC      fs/isofs/dir.o
  CC      drivers/acpi/acpica/exresop.o
  CC      kernel/rcu/rcu_segcblist.o
  CC      net/core/sock_diag.o
  CC      crypto/authenc.o
  CC      kernel/irq/migration.o
  CC      fs/ext4/ialloc.o
  CC      kernel/bpf/core.o
  CC      arch/x86/kernel/cpu/hypervisor.o
  CC      net/core/dev_ioctl.o
  CC      arch/x86/kernel/cpu/mshyperv.o
  AR      drivers/pci/built-in.a
  CC      drivers/block/loop.o
  CC      net/core/tso.o
  CC      drivers/gpu/drm/virtio/virtgpu_plane.o
  CC      mm/gup.o
  AR      drivers/gpu/drm/display/built-in.a
  CC      fs/fat/nfs.o
  CC      kernel/time/hrtimer.o
  CC      block/blk-iolatency.o
  CC      drivers/tty/tty_audit.o
  CC      drivers/acpi/acpica/exserial.o
  CC      security/selinux/ss/context.o
  CC      lib/decompress_unxz.o
  CC      drivers/tty/sysrq.o
  CC      net/core/sock_reuseport.o
  CC      arch/x86/kernel/ldt.o
  CC      drivers/gpu/drm/i915/i915_pci.o
  AR      kernel/dma/built-in.a
  CC      net/core/fib_notifier.o
  CC      drivers/gpu/drm/virtio/virtgpu_ioctl.o
  CC      arch/x86/kernel/setup.o
  CC      net/core/xdp.o
  CC      kernel/futex/waitwake.o
  CC      kernel/irq/cpuhotplug.o
  CC      kernel/module/procfs.o
  CC      arch/x86/kernel/cpu/debugfs.o
  CC      fs/isofs/util.o
  CC      drivers/base/power/wakeup_stats.o
  CC      fs/ext4/indirect.o
  AR      net/xfrm/built-in.a
  CC      net/netfilter/nf_conntrack_acct.o
  CC      net/netfilter/nf_conntrack_seqadj.o
  CC      net/ipv4/tcp_output.o
  CC      drivers/acpi/acpica/exstore.o
  CC      kernel/trace/trace_seq.o
  CC      kernel/time/timekeeping.o
  CC      net/ethtool/cabletest.o
  CC      lib/decompress_unzstd.o
  CC      kernel/irq/pm.o
  CC      fs/fat/namei_vfat.o
  CC      lib/dump_stack.o
  CC      crypto/authencesn.o
  CC      fs/fat/namei_msdos.o
  AR      drivers/gpu/drm/hisilicon/built-in.a
  CC      block/blk-iocost.o
  CC      drivers/acpi/acpica/exstoren.o
  CC      kernel/events/core.o
  CC      kernel/module/sysfs.o
  CC      arch/x86/kernel/cpu/capflags.o
  CC      drivers/base/power/trace.o
  CC      fs/isofs/rock.o
  AR      arch/x86/kernel/cpu/built-in.a
  CC      drivers/acpi/acpica/exstorob.o
  AR      kernel/futex/built-in.a
  CC      block/mq-deadline.o
  CC      drivers/acpi/acpica/exsystem.o
  CC      drivers/block/virtio_blk.o
  CC      arch/x86/kernel/x86_init.o
  AR      drivers/tty/built-in.a
  CC      net/ipv4/tcp_timer.o
  CC      security/selinux/netlabel.o
  CC      kernel/fork.o
  CC      kernel/exec_domain.o
  CC      drivers/gpu/drm/virtio/virtgpu_prime.o
  CC      fs/nfs/file.o
  AR      drivers/gpu/drm/mxsfb/built-in.a
  CC      net/ethtool/tunnels.o
  CC      drivers/acpi/acpica/extrace.o
  CC      kernel/trace/trace_stat.o
  CC      drivers/gpu/drm/i915/i915_scatterlist.o
  CC      kernel/irq/msi.o
  CC      drivers/acpi/acpica/exutils.o
  CC      lib/earlycpio.o
  CC      fs/nfs/getroot.o
  CC      net/ethtool/fec.o
  CC      fs/nfs/inode.o
  CC      net/ethtool/eeprom.o
  CC      fs/ext4/inline.o
  CC      net/ethtool/stats.o
  CC      mm/mmap_lock.o
  CC      kernel/irq/affinity.o
  CC      lib/extable.o
  AR      kernel/module/built-in.a
  CC      kernel/panic.o
  CC      kernel/cpu.o
  AR      drivers/base/power/built-in.a
  CC      drivers/base/bus.o
  CC      fs/nfs/super.o
  CC      crypto/lzo.o
  CC      net/ethtool/phc_vclocks.o
  CC      net/netfilter/nf_conntrack_proto_icmpv6.o
  CC      kernel/cgroup/legacy_freezer.o
  CC      crypto/lzo-rle.o
  CC      drivers/base/dd.o
  CC      drivers/acpi/acpica/hwacpi.o
  AR      fs/fat/built-in.a
  CC      net/core/flow_offload.o
  CC      arch/x86/kernel/i8259.o
  CC      mm/highmem.o
  CC      net/core/gro.o
  CC      fs/isofs/export.o
  CC      drivers/gpu/drm/virtio/virtgpu_trace_points.o
  CC      kernel/exit.o
  CC      lib/flex_proportions.o
  CC      kernel/time/ntp.o
  CC      kernel/time/clocksource.o
  CC      drivers/gpu/drm/i915/i915_suspend.o
  CC      kernel/trace/trace_printk.o
  CC      drivers/acpi/acpica/hwesleep.o
  AR      drivers/block/built-in.a
  CC      drivers/acpi/acpica/hwgpe.o
  CC      net/ethtool/mm.o
  CC      lib/idr.o
  CC      drivers/gpu/drm/virtio/virtgpu_submit.o
  CC      crypto/rng.o
  CC      fs/exportfs/expfs.o
  AR      kernel/bpf/built-in.a
  CC      fs/lockd/clntlock.o
  CC      block/kyber-iosched.o
  CC      fs/nls/nls_base.o
  AR      security/selinux/built-in.a
  CC      arch/x86/kernel/irqinit.o
  CC      kernel/cgroup/pids.o
  AR      fs/unicode/built-in.a
  CC      block/blk-mq-pci.o
  AR      security/built-in.a
  CC      fs/lockd/clntproc.o
  CC      fs/autofs/init.o
  CC      arch/x86/kernel/jump_label.o
  CC      fs/autofs/inode.o
  CC      kernel/irq/matrix.o
  CC      fs/9p/vfs_super.o
  AR      fs/hostfs/built-in.a
  CC      fs/9p/vfs_inode.o
  CC      fs/isofs/joliet.o
  CC      drivers/acpi/acpica/hwregs.o
  CC      fs/autofs/root.o
  AR      drivers/misc/eeprom/built-in.a
  CC      kernel/events/ring_buffer.o
  AR      drivers/misc/cb710/built-in.a
  CC      drivers/base/syscore.o
  AR      drivers/misc/ti-st/built-in.a
  AR      drivers/misc/lis3lv02d/built-in.a
  CC      drivers/acpi/acpica/hwsleep.o
  AR      drivers/misc/cardreader/built-in.a
  AR      drivers/misc/built-in.a
  AR      drivers/mfd/built-in.a
  AR      drivers/nfc/built-in.a
  CC      drivers/base/driver.o
  CC      kernel/time/jiffies.o
  AR      drivers/dax/hmem/built-in.a
  CC      block/blk-mq-virtio.o
  AR      drivers/dax/built-in.a
  CC      drivers/dma-buf/dma-buf.o
  CC      lib/irq_regs.o
  CC      fs/nls/nls_cp437.o
  CC      mm/memory.o
  CC      kernel/trace/pid_list.o
  CC      fs/nls/nls_ascii.o
  AR      fs/exportfs/built-in.a
  AR      drivers/gpu/drm/tiny/built-in.a
  CC      arch/x86/kernel/irq_work.o
  AR      kernel/rcu/built-in.a
  CC      arch/x86/kernel/probe_roms.o
  CC      kernel/softirq.o
  CC      kernel/cgroup/rdma.o
  CC      lib/is_single_threaded.o
  CC      net/core/netdev-genl.o
  CC      fs/ext4/inode.o
  CC      net/netfilter/nf_conntrack_netlink.o
  CC      crypto/drbg.o
  CC      net/ipv4/tcp_ipv4.o
  AR      drivers/cxl/core/built-in.a
  CC      drivers/acpi/acpica/hwvalid.o
  AR      drivers/gpu/drm/virtio/built-in.a
  AR      drivers/cxl/built-in.a
  CC      arch/x86/kernel/sys_ia32.o
  CC      arch/x86/kernel/ksysfs.o
  CC      fs/isofs/compress.o
  CC      fs/9p/vfs_inode_dotl.o
  CC      kernel/trace/trace_sched_switch.o
  CC      fs/ext4/ioctl.o
  CC      fs/ext4/mballoc.o
  CC      drivers/gpu/drm/i915/i915_switcheroo.o
  CC      kernel/time/timer_list.o
  CC      kernel/time/timeconv.o
  CC      kernel/cgroup/cpuset.o
  CC      arch/x86/kernel/bootflag.o
  CC      net/core/netdev-genl-gen.o
  CC      net/ethtool/module.o
  CC      fs/nls/nls_iso8859-1.o
  CC      drivers/dma-buf/dma-fence.o
  AR      drivers/gpu/drm/xlnx/built-in.a
  AR      drivers/gpu/drm/gud/built-in.a
  CC      crypto/jitterentropy.o
  CC      lib/klist.o
  CC      fs/autofs/symlink.o
  CC      fs/autofs/waitq.o
  CC      kernel/cgroup/misc.o
  CC      drivers/acpi/acpica/hwxface.o
  CC      drivers/acpi/acpica/hwxfsleep.o
  CC      drivers/base/class.o
  CC      fs/nls/nls_utf8.o
  CC      net/ethtool/pse-pd.o
  CC      fs/lockd/clntxdr.o
  CC      drivers/acpi/x86/apple.o
  CC      kernel/time/timecounter.o
  CC      drivers/base/platform.o
  CC      drivers/base/cpu.o
  CC      drivers/gpu/drm/i915/i915_sysfs.o
  AR      kernel/irq/built-in.a
  CC      net/unix/af_unix.o
  CC      drivers/gpu/drm/i915/i915_utils.o
  CC      drivers/gpu/drm/i915/intel_clock_gating.o
  CC      lib/kobject.o
  CC      lib/kobject_uevent.o
  CC      arch/x86/kernel/e820.o
  CC      drivers/dma-buf/dma-fence-array.o
  CC      drivers/dma-buf/dma-fence-chain.o
  CC      kernel/events/callchain.o
  CC      drivers/base/firmware.o
  CC      drivers/base/init.o
  CC      lib/logic_pio.o
  CC      kernel/time/alarmtimer.o
  CC      drivers/acpi/acpica/hwpci.o
  CC      kernel/time/posix-timers.o
  AR      fs/nls/built-in.a
  CC      crypto/jitterentropy-kcapi.o
  CC      block/blk-mq-debugfs.o
  CC      arch/x86/kernel/pci-dma.o
  AR      fs/isofs/built-in.a
  CC      kernel/cgroup/debug.o
  CC      fs/lockd/host.o
  CC      kernel/trace/trace_nop.o
  CC      arch/x86/kernel/quirks.o
  CC      fs/9p/vfs_addr.o
  CC      drivers/base/map.o
  CC      drivers/gpu/drm/i915/intel_device_info.o
  CC      fs/nfs/io.o
  CC      lib/maple_tree.o
  CC      drivers/acpi/x86/cmos_rtc.o
  CC      mm/mincore.o
  CC      mm/mlock.o
  CC      drivers/acpi/acpica/nsaccess.o
  AR      drivers/gpu/drm/solomon/built-in.a
  CC      fs/autofs/expire.o
  CC      drivers/gpu/drm/i915/intel_memory_region.o
  CC [M]  drivers/gpu/drm/scheduler/sched_main.o
  CC      fs/autofs/dev-ioctl.o
  CC      drivers/gpu/drm/i915/intel_pcode.o
  CC      crypto/ghash-generic.o
  CC      kernel/events/hw_breakpoint.o
  CC [M]  drivers/gpu/drm/scheduler/sched_fence.o
  CC      drivers/dma-buf/dma-fence-unwrap.o
  CC      drivers/acpi/tables.o
  CC      lib/memcat_p.o
  CC      drivers/base/devres.o
  CC      drivers/gpu/drm/i915/intel_region_ttm.o
  CC      net/ethtool/plca.o
  CC      kernel/time/posix-cpu-timers.o
  CC      kernel/events/uprobes.o
  CC      arch/x86/kernel/kdebugfs.o
  CC      drivers/gpu/drm/i915/intel_runtime_pm.o
  CC      fs/lockd/svc.o
  CC      drivers/base/attribute_container.o
  CC      drivers/acpi/osi.o
  CC      drivers/acpi/acpica/nsalloc.o
  CC      kernel/trace/blktrace.o
  CC      kernel/time/posix-clock.o
  CC      crypto/hash_info.o
  CC      drivers/acpi/x86/lpss.o
  CC      kernel/time/itimer.o
  CC      fs/9p/vfs_file.o
  CC      crypto/rsapubkey.asn1.o
  CC      block/blk-pm.o
  CC      crypto/rsaprivkey.asn1.o
  CC      net/netfilter/nf_conntrack_ftp.o
  CC      drivers/gpu/drm/i915/intel_sbi.o
  CC      lib/nmi_backtrace.o
  CC      drivers/base/transport_class.o
  AR      crypto/built-in.a
  CC      fs/ext4/migrate.o
  CC      net/core/gso.o
  CC      drivers/dma-buf/dma-resv.o
  CC      net/ipv6/af_inet6.o
  CC      net/ipv6/netfilter/ip6_tables.o
  CC      net/netfilter/nf_conntrack_irc.o
  CC      net/ipv6/netfilter/ip6table_filter.o
  CC      net/ipv6/anycast.o
  CC      drivers/acpi/acpica/nsarguments.o
  AR      fs/autofs/built-in.a
  CC      kernel/time/clockevents.o
  CC      net/core/net-sysfs.o
  CC      net/netfilter/nf_conntrack_sip.o
  CC      mm/mmap.o
  CC      fs/nfs/direct.o
  CC      arch/x86/kernel/alternative.o
  CC      block/holder.o
  CC      drivers/acpi/osl.o
  CC      drivers/base/topology.o
  CC      net/ipv6/netfilter/ip6table_mangle.o
  AR      kernel/cgroup/built-in.a
  CC      kernel/time/tick-common.o
  CC      drivers/base/container.o
  CC      fs/debugfs/inode.o
  CC      fs/debugfs/file.o
  CC      fs/tracefs/inode.o
  CC      drivers/base/property.o
  CC      net/packet/af_packet.o
  AR      net/ethtool/built-in.a
  CC      drivers/acpi/acpica/nsconvert.o
  AR      net/dsa/built-in.a
  CC      lib/objpool.o
  CC      drivers/acpi/x86/s2idle.o
  CC      net/sunrpc/auth_gss/auth_gss.o
  CC      net/sunrpc/clnt.o
  AR      net/wireless/tests/built-in.a
  CC [M]  drivers/gpu/drm/scheduler/sched_entity.o
  CC      net/wireless/core.o
  CC      fs/9p/vfs_dir.o
  CC      kernel/time/tick-broadcast.o
  CC      drivers/base/cacheinfo.o
  CC      lib/plist.o
  CC      drivers/acpi/acpica/nsdump.o
  CC      drivers/gpu/drm/i915/intel_step.o
  CC      fs/9p/vfs_dentry.o
  CC      drivers/dma-buf/sync_file.o
  CC      fs/lockd/svclock.o
  CC [M]  fs/efivarfs/inode.o
  AR      block/built-in.a
  CC      net/ipv4/tcp_minisocks.o
  CC [M]  fs/efivarfs/file.o
  CC      fs/ext4/mmp.o
  CC      drivers/acpi/acpica/nseval.o
  CC      net/unix/garbage.o
  AR      net/mac80211/tests/built-in.a
  CC      net/netlabel/netlabel_user.o
  CC      net/mac80211/main.o
  CC      kernel/time/tick-broadcast-hrtimer.o
  CC      net/netlabel/netlabel_kapi.o
  CC [M]  fs/efivarfs/super.o
  CC      fs/tracefs/event_inode.o
  CC      drivers/base/swnode.o
  CC      net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
  CC      net/netfilter/nf_nat_core.o
  CC      net/mac80211/status.o
  CC      drivers/acpi/acpica/nsinit.o
  CC      kernel/time/tick-oneshot.o
  CC      kernel/trace/trace_events.o
  CC      fs/9p/v9fs.o
  CC      fs/ext4/move_extent.o
  LD [M]  drivers/gpu/drm/scheduler/gpu-sched.o
  CC      arch/x86/kernel/i8253.o
  CC      net/ipv6/ip6_output.o
  CC      net/mac80211/driver-ops.o
  CC      drivers/acpi/utils.o
  AR      drivers/dma-buf/built-in.a
  AR      kernel/events/built-in.a
  CC      net/mac80211/sta_info.o
  CC      fs/ext4/namei.o
  CC      drivers/acpi/x86/utils.o
  CC      drivers/acpi/acpica/nsload.o
  CC      net/mac80211/wep.o
  AR      fs/debugfs/built-in.a
  CC      drivers/acpi/reboot.o
  CC      drivers/acpi/acpica/nsnames.o
  CC      net/unix/sysctl_net_unix.o
  CC      net/rfkill/core.o
  CC [M]  drivers/gpu/drm/xe/xe_bb.o
  CC      fs/9p/fid.o
  CC      net/rfkill/input.o
  CC      kernel/time/tick-sched.o
  CC      kernel/time/timer_migration.o
  CC      drivers/gpu/drm/i915/intel_uncore.o
  CC      drivers/acpi/acpica/nsobject.o
  CC      fs/9p/xattr.o
  CC      drivers/acpi/nvs.o
  CC      arch/x86/kernel/hw_breakpoint.o
  CC [M]  drivers/gpu/drm/xe/xe_bo.o
  CC      net/netlabel/netlabel_domainhash.o
  CC      drivers/acpi/x86/blacklist.o
  CC      drivers/base/auxiliary.o
  CC [M]  fs/efivarfs/vars.o
  CC      net/mac80211/aead_api.o
  CC      net/core/hotdata.o
  CC      net/netfilter/nf_nat_proto.o
  CC      fs/lockd/svcshare.o
  CC      arch/x86/kernel/tsc.o
  AR      fs/tracefs/built-in.a
  CC      arch/x86/kernel/tsc_msr.o
  CC      net/netfilter/nf_nat_helper.o
  CC      fs/ext4/page-io.o
  CC      fs/open.o
  CC      drivers/acpi/acpica/nsparse.o
  CC      kernel/time/vsyscall.o
  CC      net/ipv6/ip6_input.o
  CC      net/core/net-procfs.o
  CC      net/netlabel/netlabel_addrlist.o
  CC      fs/ext4/readpage.o
  CC      net/netlabel/netlabel_mgmt.o
  CC      drivers/base/devtmpfs.o
  AR      net/rfkill/built-in.a
  AR      net/unix/built-in.a
  AR      drivers/acpi/x86/built-in.a
  CC      drivers/gpu/drm/drm_aperture.o
  CC      fs/nfs/pagelist.o
  CC      net/core/netpoll.o
  CC      fs/lockd/svcproc.o
  CC      net/ipv4/tcp_cong.o
  AR      fs/9p/built-in.a
  CC      net/ipv6/netfilter/nf_conntrack_reasm.o
  CC      drivers/acpi/wakeup.o
  CC      drivers/base/module.o
  CC      net/core/fib_rules.o
  CC      drivers/acpi/acpica/nspredef.o
  CC      net/core/net-traces.o
  CC      drivers/base/devcoredump.o
  CC      mm/mmu_gather.o
  CC      drivers/gpu/drm/i915/intel_wakeref.o
  CC      fs/lockd/svcsubs.o
  CC      net/sunrpc/auth_gss/gss_generic_token.o
  CC      net/wireless/sysfs.o
  LD [M]  fs/efivarfs/efivarfs.o
  CC      lib/radix-tree.o
  CC      kernel/time/timekeeping_debug.o
  CC      drivers/gpu/drm/drm_atomic.o
  CC [M]  drivers/gpu/drm/xe/xe_bo_evict.o
  CC      drivers/base/platform-msi.o
  CC      drivers/acpi/acpica/nsprepkg.o
  CC      drivers/gpu/drm/i915/vlv_sideband.o
  CC      arch/x86/kernel/io_delay.o
  CC      fs/lockd/mon.o
  CC      fs/ext4/resize.o
  CC      drivers/gpu/drm/drm_atomic_uapi.o
  CC      kernel/time/namespace.o
  CC      drivers/base/physical_location.o
  CC      lib/ratelimit.o
  CC      net/wireless/radiotap.o
  CC      net/ipv6/netfilter/nf_reject_ipv6.o
  CC      lib/rbtree.o
  CC      arch/x86/kernel/rtc.o
  CC      net/core/selftests.o
  CC      mm/mprotect.o
  CC      net/sunrpc/auth_gss/gss_mech_switch.o
  CC      net/core/ptp_classifier.o
  CC      drivers/acpi/acpica/nsrepair.o
  CC      net/mac80211/wpa.o
  AR      net/packet/built-in.a
  CC      mm/mremap.o
  CC      net/ipv6/netfilter/ip6t_ipv6header.o
  CC      net/wireless/util.o
  CC      net/netfilter/nf_nat_masquerade.o
  CC      net/sunrpc/auth_gss/svcauth_gss.o
  CC      kernel/trace/trace_export.o
  CC      net/netlabel/netlabel_unlabeled.o
  CC      net/sunrpc/auth_gss/gss_rpc_upcall.o
  CC      lib/seq_buf.o
  CC      net/netlabel/netlabel_cipso_v4.o
  CC      drivers/gpu/drm/drm_auth.o
  CC [M]  drivers/gpu/drm/xe/xe_debugfs.o
  CC      lib/siphash.o
  CC      net/sunrpc/auth_gss/gss_rpc_xdr.o
  CC      drivers/base/trace.o
  CC      net/sunrpc/xprt.o
  CC      drivers/acpi/acpica/nsrepair2.o
  CC      net/ipv6/addrconf.o
  CC      net/ipv6/addrlabel.o
  CC      net/ipv4/tcp_metrics.o
  CC      drivers/gpu/drm/i915/vlv_suspend.o
  CC      fs/lockd/trace.o
  AR      kernel/time/built-in.a
  CC      fs/read_write.o
  CC      drivers/acpi/sleep.o
  CC      arch/x86/kernel/resource.o
  CC      net/core/netprio_cgroup.o
  CC      net/sunrpc/socklib.o
  CC      net/ipv4/tcp_fastopen.o
  CC      net/core/netclassid_cgroup.o
  CC      fs/ext4/super.o
  CC      net/sunrpc/xprtsock.o
  CC      fs/lockd/xdr.o
  AS      arch/x86/kernel/irqflags.o
  CC      lib/string.o
  CC      fs/lockd/clnt4xdr.o
  CC      arch/x86/kernel/static_call.o
  CC      kernel/resource.o
  CC      lib/timerqueue.o
  CC      drivers/gpu/drm/drm_blend.o
  CC      kernel/trace/trace_event_perf.o
  CC      drivers/acpi/acpica/nssearch.o
  CC      drivers/gpu/drm/drm_bridge.o
  CC      net/core/dst_cache.o
  CC      fs/file_table.o
  CC      net/sunrpc/sched.o
  CC      net/ipv6/route.o
  CC      lib/vsprintf.o
  AR      drivers/base/built-in.a
  CC      drivers/macintosh/mac_hid.o
  CC [M]  drivers/gpu/drm/xe/xe_devcoredump.o
  CC      mm/msync.o
  CC      arch/x86/kernel/process.o
  CC [M]  drivers/gpu/drm/xe/xe_device.o
  CC      drivers/acpi/device_sysfs.o
  CC      drivers/acpi/acpica/nsutils.o
  CC      net/9p/mod.o
  CC      net/netfilter/nf_nat_ftp.o
  CC      fs/nfs/read.o
  CC      drivers/acpi/device_pm.o
  CC      net/ipv6/netfilter/ip6t_REJECT.o
  CC      drivers/acpi/proc.o
  CC      net/netfilter/nf_nat_irc.o
  CC      kernel/sysctl.o
  CC      lib/win_minmax.o
  CC      fs/lockd/xdr4.o
  CC      net/netlabel/netlabel_calipso.o
  CC      fs/lockd/svc4proc.o
  CC      drivers/acpi/bus.o
  CC      net/core/gro_cells.o
  CC      kernel/capability.o
  CC      kernel/ptrace.o
  CC      net/mac80211/scan.o
  AR      drivers/macintosh/built-in.a
  AR      drivers/scsi/pcmcia/built-in.a
  CC      drivers/scsi/scsi.o
  CC      kernel/user.o
  CC      drivers/gpu/drm/i915/soc/intel_dram.o
  CC      drivers/acpi/acpica/nswalk.o
  CC      kernel/trace/trace_events_filter.o
  CC      net/ipv6/ip6_fib.o
  CC      lib/xarray.o
  CC      net/9p/client.o
  CC      drivers/acpi/glue.o
  CC      mm/page_vma_mapped.o
  CC      kernel/trace/trace_events_trigger.o
  AR      drivers/nvme/common/built-in.a
  AR      drivers/nvme/host/built-in.a
  CC      drivers/acpi/acpica/nsxfeval.o
  AR      drivers/nvme/target/built-in.a
  CC      net/mac80211/offchannel.o
  AR      drivers/nvme/built-in.a
  CC      net/mac80211/ht.o
  CC      drivers/acpi/acpica/nsxfname.o
  CC      net/netfilter/nf_nat_sip.o
  CC      fs/super.o
  CC      lib/lockref.o
  CC      net/ipv4/tcp_rate.o
  CC      fs/char_dev.o
  CC      drivers/gpu/drm/i915/soc/intel_gmch.o
  CC      net/sunrpc/auth_gss/trace.o
  CC      drivers/gpu/drm/i915/soc/intel_pch.o
  CC      drivers/acpi/acpica/nsxfobj.o
  CC      fs/lockd/procfs.o
  CC      lib/bcd.o
  CC      lib/sort.o
  CC [M]  drivers/gpu/drm/xe/xe_device_sysfs.o
  CC      net/9p/error.o
  CC      lib/parser.o
  CC      drivers/gpu/drm/drm_cache.o
  CC      arch/x86/kernel/ptrace.o
  CC      net/sunrpc/auth_gss/gss_krb5_mech.o
  CC      net/netfilter/x_tables.o
  CC      net/9p/protocol.o
  CC      drivers/acpi/acpica/psargs.o
  AR      net/ipv6/netfilter/built-in.a
  CC      drivers/acpi/acpica/psloop.o
  CC      net/9p/trans_common.o
  CC      drivers/acpi/scan.o
  AR      net/netlabel/built-in.a
  CC      drivers/acpi/mipi-disco-img.o
  CC      mm/pagewalk.o
  CC      net/dns_resolver/dns_key.o
  CC      mm/pgtable-generic.o
  CC      net/9p/trans_fd.o
  CC      net/sunrpc/auth_gss/gss_krb5_seal.o
  CC      kernel/trace/trace_eprobe.o
  CC      drivers/gpu/drm/drm_client.o
  CC      net/core/failover.o
  CC      drivers/gpu/drm/i915/i915_memcpy.o
  CC      fs/stat.o
  AR      fs/lockd/built-in.a
  CC      fs/ext4/symlink.o
  CC      net/dns_resolver/dns_query.o
  CC      drivers/scsi/hosts.o
  CC      lib/debug_locks.o
  CC      net/sunrpc/auth_gss/gss_krb5_unseal.o
  CC      net/sunrpc/auth_gss/gss_krb5_wrap.o
  CC      drivers/gpu/drm/i915/i915_mm.o
  CC      net/ipv6/ipv6_sockglue.o
  CC      drivers/acpi/acpica/psobject.o
  CC [M]  drivers/gpu/drm/xe/xe_dma_buf.o
  CC      drivers/gpu/drm/i915/i915_sw_fence.o
  CC      net/ipv6/ndisc.o
  CC      lib/random32.o
  CC      kernel/trace/trace_kprobe.o
  CC      drivers/gpu/drm/i915/i915_sw_fence_work.o
  CC      net/ipv4/tcp_recovery.o
  CC      net/sunrpc/auth_gss/gss_krb5_crypto.o
  CC      drivers/scsi/scsi_ioctl.o
  CC      kernel/trace/error_report-traces.o
  CC      net/9p/trans_virtio.o
  CC      net/netfilter/xt_tcpudp.o
  CC      kernel/trace/power-traces.o
  CC      drivers/gpu/drm/drm_client_modeset.o
  CC      net/sunrpc/auth_gss/gss_krb5_keys.o
  CC      arch/x86/kernel/tls.o
  CC      kernel/signal.o
  CC      fs/exec.o
  CC      fs/pipe.o
  CC      mm/rmap.o
  CC      drivers/acpi/acpica/psopcode.o
  CC      fs/nfs/symlink.o
  CC      lib/bust_spinlocks.o
  CC      net/mac80211/agg-tx.o
  CC      drivers/gpu/drm/drm_color_mgmt.o
  CC      drivers/acpi/resource.o
  CC      net/ipv6/udp.o
  CC      drivers/scsi/scsicam.o
  AR      net/dns_resolver/built-in.a
  CC      fs/namei.o
  CC      net/ipv4/tcp_ulp.o
  AR      net/core/built-in.a
  CC      net/ipv4/tcp_offload.o
  CC      fs/fcntl.o
  CC      net/handshake/alert.o
  CC      net/wireless/reg.o
  CC      drivers/acpi/acpica/psopinfo.o
  CC [M]  drivers/gpu/drm/xe/xe_drm_client.o
  CC      fs/ioctl.o
  CC      fs/readdir.o
  CC      kernel/trace/rpm-traces.o
  CC      drivers/gpu/drm/i915/i915_syncmap.o
  CC      fs/select.o
  CC      kernel/trace/trace_dynevent.o
  CC      drivers/acpi/acpica/psparse.o
  CC      net/wireless/scan.o
  CC      lib/kasprintf.o
  CC      lib/bitmap.o
  CC      drivers/gpu/drm/drm_connector.o
  CC      net/handshake/genl.o
  CC      arch/x86/kernel/step.o
  CC      drivers/gpu/drm/drm_crtc.o
  CC      net/ipv6/udplite.o
  CC      drivers/acpi/acpi_processor.o
  CC      drivers/acpi/processor_core.o
  AR      net/sunrpc/auth_gss/built-in.a
  CC      mm/vmalloc.o
  CC      drivers/scsi/scsi_error.o
  CC      net/wireless/nl80211.o
  CC      drivers/ata/libata-core.o
  CC      net/ipv4/tcp_plb.o
  CC      drivers/acpi/acpica/psscope.o
  CC      drivers/gpu/drm/i915/i915_user_extensions.o
  CC      net/ipv4/datagram.o
  CC      fs/nfs/unlink.o
  AR      net/9p/built-in.a
  CC      net/netfilter/xt_CONNSECMARK.o
  CC      net/ipv4/raw.o
  CC      drivers/scsi/scsi_lib.o
  CC      drivers/ata/libata-scsi.o
  CC      net/netfilter/xt_NFLOG.o
  CC      fs/dcache.o
  CC      drivers/acpi/acpica/pstree.o
  CC      fs/inode.o
  CC      drivers/acpi/processor_pdc.o
  CC      arch/x86/kernel/i8237.o
  CC      drivers/firewire/init_ohci1394_dma.o
  AR      drivers/net/phy/qcom/built-in.a
  CC      drivers/net/phy/mdio-boardinfo.o
  CC      lib/scatterlist.o
  CC      drivers/net/phy/stubs.o
  CC      drivers/gpu/drm/i915/i915_debugfs.o
  CC      drivers/net/phy/mdio_devres.o
  CC      drivers/gpu/drm/i915/i915_debugfs_params.o
  CC      drivers/gpu/drm/i915/i915_pmu.o
  CC      kernel/trace/trace_probe.o
  CC      drivers/gpu/drm/drm_displayid.o
  CC      drivers/net/phy/phy.o
  CC [M]  drivers/gpu/drm/xe/xe_exec.o
  CC      net/sunrpc/auth.o
  CC      net/handshake/netlink.o
  CC      drivers/gpu/drm/drm_drv.o
  CC      net/ipv6/raw.o
  CC      drivers/ata/libata-eh.o
  CC      mm/process_vm_access.o
  CC      net/ipv4/udp.o
  CC      arch/x86/kernel/stacktrace.o
  CC      drivers/acpi/acpica/psutils.o
  CC      fs/attr.o
  CC      fs/nfs/write.o
  CC      drivers/cdrom/cdrom.o
  CC      drivers/gpu/drm/drm_dumb_buffers.o
  CC      net/netfilter/xt_SECMARK.o
  CC      kernel/sys.o
  AR      drivers/firewire/built-in.a
  CC      lib/list_sort.o
  CC      net/ipv4/udplite.o
  CC      mm/page_alloc.o
  CC      mm/init-mm.o
  CC      net/wireless/mlme.o
  CC      fs/ext4/sysfs.o
  CC      drivers/acpi/acpica/pswalk.o
  CC      net/netfilter/xt_TCPMSS.o
  CC      drivers/gpu/drm/drm_edid.o
  CC      fs/nfs/namespace.o
  CC [M]  drivers/gpu/drm/xe/xe_execlist.o
  CC      drivers/scsi/constants.o
  CC      mm/memblock.o
  CC [M]  drivers/gpu/drm/xe/xe_exec_queue.o
  CC      arch/x86/kernel/reboot.o
  CC      fs/bad_inode.o
  CC      lib/uuid.o
  CC      drivers/acpi/acpica/psxface.o
  CC      mm/slub.o
  CC      lib/iov_iter.o
  CC      kernel/umh.o
  CC      net/ipv4/udp_offload.o
  CC      drivers/gpu/drm/i915/gt/gen2_engine_cs.o
  CC      net/mac80211/agg-rx.o
  CC      fs/file.o
  CC      net/devres.o
  CC      drivers/scsi/scsi_lib_dma.o
  CC      drivers/acpi/acpica/rsaddr.o
  CC      lib/clz_ctz.o
  CC      net/handshake/request.o
  CC      drivers/net/phy/phy-c45.o
  CC [M]  drivers/gpu/drm/xe/xe_force_wake.o
  CC      drivers/acpi/acpica/rscalc.o
  CC      mm/madvise.o
  CC      net/mac80211/vht.o
  CC      kernel/trace/trace_uprobe.o
  CC      fs/filesystems.o
  CC      net/handshake/tlshd.o
  CC      lib/bsearch.o
  CC      net/handshake/trace.o
  CC      net/ipv4/arp.o
  AR      drivers/auxdisplay/built-in.a
  CC      drivers/ata/libata-transport.o
  CC      drivers/acpi/acpica/rscreate.o
  CC      drivers/ata/libata-trace.o
  CC      fs/namespace.o
  CC      fs/ext4/xattr.o
  CC      arch/x86/kernel/msr.o
  CC      drivers/acpi/acpica/rsdumpinfo.o
  CC      fs/nfs/mount_clnt.o
  CC      net/netfilter/xt_conntrack.o
  CC      drivers/net/phy/phy-core.o
  CC      drivers/scsi/scsi_scan.o
  CC      net/socket.o
  AR      drivers/cdrom/built-in.a
  CC      net/ipv4/icmp.o
  CC      net/ipv4/devinet.o
  CC      net/ipv6/icmp.o
  CC      drivers/gpu/drm/drm_eld.o
  CC      fs/ext4/xattr_hurd.o
  CC      mm/page_io.o
  CC      drivers/gpu/drm/drm_encoder.o
  CC      kernel/workqueue.o
  CC      drivers/acpi/acpica/rsinfo.o
  CC      drivers/gpu/drm/drm_file.o
  CC      drivers/gpu/drm/i915/gt/gen6_engine_cs.o
  CC [M]  drivers/gpu/drm/xe/xe_ggtt.o
  CC      fs/seq_file.o
  CC      fs/xattr.o
  CC      arch/x86/kernel/cpuid.o
  CC      arch/x86/kernel/early-quirks.o
  CC      drivers/acpi/acpica/rsio.o
  CC      net/ipv4/af_inet.o
  CC      net/sunrpc/auth_null.o
  CC      fs/libfs.o
  CC      net/ipv6/mcast.o
  CC      drivers/pcmcia/cs.o
  CC      fs/fs-writeback.o
  CC      drivers/net/phy/phy_device.o
  CC      net/ipv6/reassembly.o
  CC      net/ipv4/igmp.o
  CC      drivers/ata/libata-sata.o
  GEN     drivers/scsi/scsi_devinfo_tbl.c
  CC      drivers/gpu/drm/i915/gt/gen6_ppgtt.o
  CC      lib/find_bit.o
  CC      drivers/gpu/drm/i915/gt/gen7_renderclear.o
  CC      drivers/acpi/acpica/rsirq.o
  AR      net/handshake/built-in.a
  CC      kernel/pid.o
  CC      drivers/pcmcia/socket_sysfs.o
  CC      arch/x86/kernel/smp.o
  CC      net/wireless/ibss.o
  CC      net/netfilter/xt_policy.o
  CC      kernel/trace/rethook.o
  CC [M]  drivers/gpu/drm/xe/xe_gpu_scheduler.o
  CC      arch/x86/kernel/smpboot.o
  CC      drivers/gpu/drm/i915/gt/gen8_engine_cs.o
  CC      drivers/gpu/drm/i915/gt/gen8_ppgtt.o
  CC      fs/nfs/nfstrace.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  CC      lib/llist.o
  CC      arch/x86/kernel/tsc_sync.o
  CC      fs/pnode.o
  CC      drivers/acpi/acpica/rslist.o
  CC      lib/lwq.o
  CC      drivers/scsi/scsi_devinfo.o
  CC      net/sunrpc/auth_tls.o
  AR      drivers/net/pse-pd/built-in.a
  CC      drivers/net/mdio/acpi_mdio.o
  CC      drivers/net/mdio/fwnode_mdio.o
  AR      drivers/net/pcs/built-in.a
  CC      arch/x86/kernel/setup_percpu.o
  AR      drivers/net/ethernet/3com/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_gsc_proxy.o
  CC      drivers/net/ethernet/8390/ne2k-pci.o
  CC      lib/memweight.o
  CC      drivers/net/ethernet/8390/8390.o
  AR      drivers/net/ethernet/adaptec/built-in.a
  CC      lib/kfifo.o
  AR      drivers/net/ethernet/agere/built-in.a
  AR      drivers/net/ethernet/alacritech/built-in.a
  CC      drivers/acpi/ec.o
  AR      drivers/net/ethernet/alteon/built-in.a
  CC      drivers/acpi/acpica/rsmemory.o
  CC      drivers/acpi/dock.o
  CC      drivers/pcmcia/cardbus.o
  CC      net/ipv6/tcp_ipv6.o
  CC      mm/swap_state.o
  CC      net/sunrpc/auth_unix.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc_submit.o
  CC      drivers/net/phy/linkmode.o
  CC      arch/x86/kernel/mpparse.o
  AR      kernel/trace/built-in.a
  CC      drivers/net/phy/mdio_bus.o
  CC      fs/ext4/xattr_trusted.o
  CC      fs/ext4/xattr_user.o
  CC      net/mac80211/he.o
  CC      drivers/pcmcia/ds.o
  CC      drivers/ata/libata-sff.o
  CC      net/sysctl_net.o
  CC      drivers/acpi/acpica/rsmisc.o
  CC      fs/splice.o
  CC      net/ipv6/ping.o
  CC      mm/swapfile.o
  CC      net/ipv6/exthdrs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt.o
  CC      fs/ext4/fast_commit.o
  CC      net/netfilter/xt_state.o
  CC      mm/swap_slots.o
  CC      drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
  CC      drivers/gpu/drm/i915/gt/intel_context.o
  AR      drivers/net/wireless/admtek/built-in.a
  AR      drivers/net/wireless/ath/built-in.a
  CC      net/ipv4/fib_frontend.o
  CC      drivers/acpi/pci_root.o
  AR      drivers/net/wireless/atmel/built-in.a
  CC      drivers/scsi/scsi_sysctl.o
  AR      drivers/net/wireless/broadcom/built-in.a
  AR      drivers/net/mdio/built-in.a
  CC      net/ipv4/fib_semantics.o
  AR      drivers/net/wireless/intel/built-in.a
  CC      drivers/pcmcia/pcmcia_resource.o
  AR      drivers/net/wireless/intersil/built-in.a
  CC      net/sunrpc/svc.o
  AR      drivers/net/wireless/marvell/built-in.a
  AR      drivers/net/wireless/mediatek/built-in.a
  CC      mm/dmapool.o
  CC      fs/ext4/orphan.o
  AR      drivers/net/wireless/microchip/built-in.a
  AR      drivers/net/wireless/purelifi/built-in.a
  CC      lib/percpu-refcount.o
  AR      drivers/net/wireless/quantenna/built-in.a
  AR      drivers/net/wireless/ralink/built-in.a
  CC      net/ipv6/datagram.o
  AR      drivers/net/wireless/realtek/built-in.a
  AR      drivers/net/wireless/rsi/built-in.a
  AR      drivers/net/usb/built-in.a
  AR      drivers/net/wireless/silabs/built-in.a
  CC      drivers/net/mii.o
  AR      drivers/net/wireless/st/built-in.a
  AR      drivers/net/wireless/ti/built-in.a
  AR      drivers/net/wireless/zydas/built-in.a
  AR      drivers/net/wireless/virtual/built-in.a
  CC      drivers/acpi/acpica/rsserial.o
  CC      fs/ext4/acl.o
  CC      kernel/task_work.o
  AR      drivers/net/wireless/built-in.a
  CC      drivers/net/phy/mdio_device.o
  CC      fs/sync.o
  AR      drivers/net/ethernet/8390/built-in.a
  CC      fs/utimes.o
  AR      drivers/net/ethernet/amazon/built-in.a
  AR      drivers/net/ethernet/amd/built-in.a
  AR      drivers/net/ethernet/aquantia/built-in.a
  CC      drivers/gpu/drm/drm_fourcc.o
  CC      drivers/pcmcia/cistpl.o
  AR      drivers/net/ethernet/arc/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_context_sseu.o
  AR      drivers/net/ethernet/asix/built-in.a
  CC      arch/x86/kernel/trace_clock.o
  AR      drivers/net/ethernet/atheros/built-in.a
  AR      drivers/net/ethernet/cadence/built-in.a
  CC      drivers/net/ethernet/broadcom/bnx2.o
  CC      drivers/pcmcia/pcmcia_cis.o
  CC      drivers/net/ethernet/broadcom/tg3.o
  CC      net/ipv4/fib_trie.o
  CC      fs/d_path.o
  CC      drivers/acpi/acpica/rsutils.o
  CC      arch/x86/kernel/trace.o
  CC      drivers/scsi/scsi_proc.o
  CC      drivers/pcmcia/rsrc_mgr.o
  CC      mm/hugetlb.o
  CC      lib/rhashtable.o
  CC      drivers/gpu/drm/drm_framebuffer.o
  CC      net/ipv4/fib_notifier.o
  CC      fs/stack.o
  CC      net/mac80211/s1g.o
  CC      drivers/acpi/pci_link.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_ccs_mode.o
  CC      drivers/net/phy/swphy.o
  CC      drivers/acpi/pci_irq.o
  CC      drivers/acpi/acpica/rsxface.o
  CC [M]  net/netfilter/nf_log_syslog.o
  CC      drivers/scsi/scsi_debugfs.o
  CC      mm/mmu_notifier.o
  CC      kernel/extable.o
  CC      drivers/acpi/acpica/tbdata.o
  CC      drivers/net/phy/fixed_phy.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_clock.o
  CC      net/mac80211/ibss.o
  CC      drivers/net/phy/realtek.o
  CC      drivers/scsi/scsi_trace.o
  CC      drivers/ata/libata-pmp.o
  CC      net/ipv4/inet_fragment.o
  CC      drivers/acpi/acpi_apd.o
  CC      arch/x86/kernel/rethook.o
  CC      drivers/usb/common/common.o
  CC      drivers/input/serio/serio.o
  CC      drivers/usb/common/debug.o
  CC      drivers/acpi/acpica/tbfadt.o
  CC      drivers/pcmcia/rsrc_nonstatic.o
  CC      drivers/usb/core/usb.o
  CC      drivers/usb/core/hub.o
  AR      drivers/usb/phy/built-in.a
  CC      net/wireless/sme.o
  CC      drivers/usb/core/hcd.o
  CC      net/ipv4/ping.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_cs.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
  CC      drivers/acpi/acpi_platform.o
  CC      net/ipv6/ip6_flowlabel.o
  CC      drivers/usb/mon/mon_main.o
  CC      drivers/usb/host/pci-quirks.o
  CC      drivers/usb/class/usblp.o
  CC      drivers/pcmcia/yenta_socket.o
  CC      drivers/usb/storage/scsiglue.o
  CC      drivers/usb/host/ehci-hcd.o
  CC      drivers/acpi/acpi_pnp.o
  AR      drivers/usb/misc/built-in.a
  CC      drivers/acpi/power.o
  CC      net/ipv4/ip_tunnel_core.o
  CC      drivers/usb/host/ehci-pci.o
  CC      drivers/scsi/scsi_logging.o
  CC      lib/base64.o
  CC      drivers/acpi/acpica/tbfind.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_debugfs.o
  CC      drivers/usb/mon/mon_stat.o
  CC      drivers/usb/core/urb.o
  CC      lib/once.o
  CC      arch/x86/kernel/vmcore_info_32.o
  CC      net/ipv6/inet6_connection_sock.o
  CC      kernel/params.o
  CC      drivers/input/serio/i8042.o
  CC      drivers/usb/early/ehci-dbgp.o
  AR      drivers/usb/common/built-in.a
  CC      drivers/scsi/scsi_pm.o
  CC      drivers/scsi/scsi_bsg.o
  CC      drivers/acpi/event.o
  CC      drivers/acpi/acpica/tbinstal.o
  CC      drivers/acpi/evged.o
  AR      drivers/net/phy/built-in.a
  CC      drivers/usb/mon/mon_text.o
  CC      net/sunrpc/svcsock.o
  CC      kernel/kthread.o
  CC      drivers/usb/host/ohci-hcd.o
  CC      drivers/ata/libata-acpi.o
  CC      lib/refcount.o
  CC      drivers/usb/core/message.o
  CC      drivers/usb/mon/mon_bin.o
  CC      fs/ext4/xattr_security.o
  CC      mm/migrate.o
  CC      arch/x86/kernel/machine_kexec_32.o
  CC [M]  net/netfilter/xt_mark.o
  CC      drivers/gpu/drm/drm_gem.o
  CC      drivers/net/loopback.o
  CC      lib/rcuref.o
  AR      drivers/usb/class/built-in.a
  CC      lib/usercopy.o
  CC      drivers/usb/storage/protocol.o
  CC      drivers/acpi/acpica/tbprint.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_freq.o
  CC      lib/errseq.o
  CC      net/ipv4/gre_offload.o
  CC      lib/bucket_locks.o
  CC      drivers/acpi/sysfs.o
  CC      lib/generic-radix-tree.o
  CC      drivers/acpi/acpica/tbutils.o
  CC      drivers/scsi/scsi_common.o
  CC      drivers/usb/core/driver.o
  CC      drivers/usb/storage/transport.o
  CC      drivers/input/serio/serport.o
  CC [M]  net/netfilter/xt_nat.o
  CC      drivers/acpi/property.o
  CC      net/ipv4/metrics.o
  AR      drivers/pcmcia/built-in.a
  AR      drivers/usb/early/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_engine_pm.o
  CC      drivers/scsi/scsi_transport_spi.o
  CC      drivers/input/keyboard/atkbd.o
  CC      drivers/scsi/virtio_scsi.o
  CC      drivers/input/mouse/psmouse-base.o
  AR      drivers/input/joystick/built-in.a
  CC      drivers/input/serio/libps2.o
  CC      drivers/gpu/drm/drm_ioctl.o
  CC      drivers/scsi/sd.o
  CC      fs/nfs/export.o
  CC      net/ipv6/udp_offload.o
  CC      drivers/ata/libata-pata-timings.o
  CC      drivers/acpi/acpica/tbxface.o
  CC      drivers/net/netconsole.o
  AS      arch/x86/kernel/relocate_kernel_32.o
  CC      net/ipv4/netlink.o
  CC      arch/x86/kernel/crash_dump_32.o
  AR      fs/ext4/built-in.a
  CC      fs/fs_struct.o
  CC      drivers/acpi/acpica/tbxfload.o
  CC      lib/bitmap-str.o
  CC      drivers/input/mouse/synaptics.o
  CC      drivers/acpi/debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_idle.o
  CC      drivers/gpu/drm/drm_lease.o
  CC      drivers/usb/core/config.o
  AR      drivers/usb/mon/built-in.a
  CC      net/ipv6/seg6.o
  CC      drivers/acpi/acpi_lpat.o
  CC      drivers/acpi/acpi_pcc.o
  CC      drivers/acpi/acpica/tbxfroot.o
  CC      drivers/ata/ahci.o
  CC      kernel/sys_ni.o
  CC      drivers/gpu/drm/i915/gt/intel_engine_user.o
  CC      drivers/usb/core/file.o
  CC      drivers/gpu/drm/drm_managed.o
  AR      drivers/input/serio/built-in.a
  CC      lib/string_helpers.o
  CC      drivers/net/virtio_net.o
  CC      drivers/scsi/sr.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_mcr.o
  AR      drivers/input/tablet/built-in.a
  CC      drivers/usb/storage/usb.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_pagefault.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sysfs.o
  AR      drivers/input/touchscreen/built-in.a
  CC      arch/x86/kernel/crash.o
  CC      fs/statfs.o
  CC      fs/fs_pin.o
  CC      arch/x86/kernel/module.o
  CC      drivers/acpi/ac.o
  AR      drivers/input/keyboard/built-in.a
  CC      mm/page_counter.o
  CC      mm/hugetlb_cgroup.o
  CC      arch/x86/kernel/doublefault_32.o
  CC      drivers/acpi/acpica/utaddress.o
  CC      net/ipv4/nexthop.o
  CC [M]  net/netfilter/xt_LOG.o
  CC      drivers/usb/storage/initializers.o
  CC      kernel/nsproxy.o
  CC      drivers/acpi/button.o
  CC      drivers/input/mouse/focaltech.o
  AR      drivers/input/misc/built-in.a
  CC      drivers/acpi/fan_core.o
  CC      drivers/usb/storage/sierra_ms.o
  CC      net/mac80211/iface.o
  CC      net/mac80211/link.o
  CC      net/mac80211/rate.o
  CC      drivers/gpu/drm/i915/gt/intel_execlists_submission.o
  CC      lib/hexdump.o
  AR      drivers/net/ethernet/brocade/built-in.a
  CC      mm/early_ioremap.o
  CC      drivers/input/mouse/alps.o
  AR      drivers/net/ethernet/cavium/common/built-in.a
  AR      drivers/net/ethernet/cavium/thunder/built-in.a
  AR      drivers/net/ethernet/cavium/liquidio/built-in.a
  CC      net/ipv6/fib6_notifier.o
  AR      drivers/net/ethernet/cavium/octeon/built-in.a
  AR      drivers/net/ethernet/cavium/built-in.a
  CC      drivers/acpi/acpica/utalloc.o
  CC      net/sunrpc/svcauth.o
  CC      kernel/notifier.o
  CC      drivers/net/net_failover.o
  CC      mm/secretmem.o
  CC      drivers/usb/host/ohci-pci.o
  CC [M]  net/netfilter/xt_MASQUERADE.o
  CC      net/sunrpc/svcauth_unix.o
  CC      drivers/usb/storage/option_ms.o
  CC      drivers/input/mouse/byd.o
  CC      drivers/input/mouse/logips2pp.o
  CC      drivers/scsi/sr_ioctl.o
  CC      drivers/usb/core/buffer.o
  CC      net/wireless/chan.o
  CC      mm/hmm.o
  CC      drivers/usb/host/uhci-hcd.o
  CC      lib/kstrtox.o
  CC      lib/iomap.o
  CC      lib/iomap_copy.o
  CC      drivers/input/mouse/lifebook.o
  CC      net/ipv6/rpl.o
  CC      drivers/scsi/sr_vendor.o
  CC [M]  net/netfilter/xt_addrtype.o
  CC      drivers/acpi/acpica/utascii.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_throttle.o
  CC      drivers/rtc/lib.o
  CC      drivers/rtc/class.o
  CC      drivers/ata/libahci.o
  CC      drivers/rtc/interface.o
  CC      arch/x86/kernel/early_printk.o
  CC      drivers/usb/storage/usual-tables.o
  CC      drivers/ata/ata_piix.o
  CC      fs/nfs/sysfs.o
  AR      drivers/net/ethernet/chelsio/built-in.a
  AR      drivers/net/ethernet/cisco/built-in.a
  AR      drivers/net/ethernet/cortina/built-in.a
  CC      fs/nsfs.o
  CC      net/ipv4/udp_tunnel_stub.o
  AR      drivers/net/ethernet/dec/tulip/built-in.a
  CC      drivers/usb/core/sysfs.o
  AR      drivers/net/ethernet/dec/built-in.a
  CC      drivers/usb/core/endpoint.o
  CC      drivers/usb/host/xhci.o
  CC      fs/nfs/fs_context.o
  CC      drivers/acpi/acpica/utbuffer.o
  AR      drivers/net/ethernet/dlink/built-in.a
  CC      drivers/input/mouse/trackpoint.o
  CC      fs/fs_types.o
  AR      drivers/net/ethernet/emulex/built-in.a
  CC      fs/fs_context.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt.o
  CC      drivers/usb/core/devio.o
  CC      net/wireless/ethtool.o
  CC      drivers/usb/host/xhci-mem.o
  CC      kernel/ksysfs.o
  CC      arch/x86/kernel/hpet.o
  CC      kernel/cred.o
  AR      drivers/net/ethernet/engleder/built-in.a
  CC      kernel/reboot.o
  CC      arch/x86/kernel/amd_nb.o
  AR      drivers/net/ethernet/ezchip/built-in.a
  CC      mm/memfd.o
  CC      lib/devres.o
  CC      net/ipv4/ip_tunnel.o
  AR      drivers/usb/storage/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
  CC      net/sunrpc/addr.o
  CC      drivers/acpi/acpica/utcksum.o
  CC      arch/x86/kernel/kvm.o
  CC      drivers/input/mouse/cypress_ps2.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
  CC      drivers/scsi/sg.o
  CC      kernel/async.o
  CC      fs/fs_parser.o
  CC      drivers/usb/core/notify.o
  CC      net/ipv6/ioam6.o
  CC      drivers/ata/pata_amd.o
  AR      drivers/net/ethernet/fujitsu/built-in.a
  AR      drivers/net/ethernet/fungible/built-in.a
  AR      drivers/net/ethernet/google/built-in.a
  AR      drivers/net/ethernet/huawei/built-in.a
  AR      drivers/net/ethernet/i825xx/built-in.a
  CC      lib/check_signature.o
  CC      drivers/net/ethernet/intel/e1000/e1000_main.o
  AR      drivers/net/ethernet/microsoft/built-in.a
  CC      drivers/acpi/acpica/utcopy.o
  CC      drivers/net/ethernet/intel/e1000/e1000_hw.o
  CC      drivers/input/mouse/psmouse-smbus.o
  AR      net/netfilter/built-in.a
  CC      fs/fsopen.o
  CC      kernel/range.o
  CC      lib/interval_tree.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  CC      net/ipv4/sysctl_net_ipv4.o
  CC      drivers/input/input.o
  CC      arch/x86/kernel/kvmclock.o
  CC      fs/init.o
  CC      drivers/net/ethernet/intel/e1000e/82571.o
  CC      kernel/smpboot.o
  CC      drivers/ata/pata_oldpiix.o
  CC      drivers/ata/pata_sch.o
  CC      arch/x86/kernel/paravirt.o
  CC      drivers/rtc/nvmem.o
  CC      lib/assoc_array.o
  CC      drivers/net/ethernet/intel/e1000/e1000_ethtool.o
  CC      mm/ptdump.o
  CC      drivers/usb/core/generic.o
  CC      drivers/gpu/drm/i915/gt/intel_gt.o
  CC      drivers/acpi/acpica/utexcep.o
  CC      drivers/i2c/algos/i2c-algo-bit.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
  CC      drivers/i2c/busses/i2c-i801.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.o
  CC      net/sunrpc/rpcb_clnt.o
  CC      net/sunrpc/timer.o
  CC      drivers/gpu/drm/drm_mm.o
  GEN     xe_wa_oob.c xe_wa_oob.h
  CC [M]  drivers/gpu/drm/xe/xe_guc_ct.o
  CC      net/mac80211/michael.o
  AR      drivers/input/mouse/built-in.a
  CC      drivers/net/ethernet/intel/e1000/e1000_param.o
  CC      kernel/ucount.o
  CC      drivers/acpi/acpica/utdebug.o
  CC      kernel/regset.o
  CC      drivers/rtc/dev.o
  CC      drivers/ata/pata_mpiix.o
  CC      net/sunrpc/xdr.o
  CC      drivers/input/input-compat.o
  CC      mm/execmem.o
  CC      net/mac80211/tkip.o
  CC      arch/x86/kernel/pvclock.o
  CC      drivers/gpu/drm/drm_mode_config.o
  CC      drivers/usb/core/quirks.o
  CC      kernel/ksyms_common.o
  CC      lib/bitrev.o
  CC      drivers/usb/core/devices.o
  CC      drivers/usb/core/phy.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_db_mgr.o
  CC      drivers/gpu/drm/drm_mode_object.o
  CC      drivers/ata/ata_generic.o
  CC      drivers/scsi/scsi_sysfs.o
  CC      drivers/acpi/acpica/utdecode.o
  CC      kernel/groups.o
  CC      net/mac80211/aes_cmac.o
  CC      fs/kernel_read_file.o
  AR      drivers/i2c/algos/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
  AR      drivers/i2c/muxes/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_debugfs.o
  CC      arch/x86/kernel/pcspeaker.o
  CC      lib/crc-ccitt.o
  CC      fs/nfs/nfsroot.o
  CC      fs/nfs/sysctl.o
  CC      fs/mnt_idmapping.o
  CC      drivers/net/ethernet/intel/e100.o
  CC      net/ipv6/sysctl_net_ipv6.o
  AR      mm/built-in.a
  CC      net/ipv4/proc.o
  CC      net/ipv4/fib_rules.o
  CC      drivers/net/ethernet/intel/e1000e/ich8lan.o
  CC      fs/remap_range.o
  CC      drivers/acpi/acpica/utdelete.o
  CC      drivers/input/input-mt.o
  CC      fs/pidfs.o
  CC      drivers/rtc/proc.o
  CC      drivers/usb/core/port.o
  CC      net/ipv4/ipmr.o
  CC      net/mac80211/aes_gmac.o
  CC      kernel/kcmp.o
  CC      net/ipv6/xfrm6_policy.o
  CC      net/ipv6/xfrm6_state.o
  CC      net/ipv6/xfrm6_input.o
  AR      drivers/i2c/busses/built-in.a
  CC      drivers/i2c/i2c-boardinfo.o
  CC      drivers/usb/host/xhci-ext-caps.o
  CC      lib/crc16.o
  CC      arch/x86/kernel/check.o
  AR      drivers/net/ethernet/litex/built-in.a
  CC      net/wireless/mesh.o
  AR      drivers/i3c/built-in.a
  CC      arch/x86/kernel/uprobes.o
  CC      drivers/gpu/drm/drm_modes.o
  AR      drivers/net/ethernet/marvell/octeon_ep/built-in.a
  AR      drivers/net/ethernet/marvell/octeon_ep_vf/built-in.a
  CC      drivers/input/input-poller.o
  AR      drivers/net/ethernet/marvell/octeontx2/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
  AR      drivers/net/ethernet/marvell/prestera/built-in.a
  CC      drivers/net/ethernet/marvell/sky2.o
  CC      drivers/usb/core/hcd-pci.o
  AR      drivers/ata/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_hwconfig.o
  AR      drivers/media/i2c/built-in.a
  CC      drivers/usb/core/usb-acpi.o
  CC      kernel/freezer.o
  AR      drivers/media/tuners/built-in.a
  CC      drivers/usb/host/xhci-ring.o
  CC      drivers/acpi/acpica/uterror.o
  AR      drivers/media/rc/keymaps/built-in.a
  CC      drivers/gpu/drm/drm_modeset_lock.o
  AR      drivers/media/rc/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_id_mgr.o
  AR      drivers/media/common/b2c2/built-in.a
  AR      drivers/media/common/saa7146/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_klv_helpers.o
  AR      drivers/media/common/siano/built-in.a
  CC      drivers/acpi/acpica/uteval.o
  AR      drivers/media/common/v4l2-tpg/built-in.a
  HOSTCC  lib/gen_crc32table
  AR      drivers/media/common/videobuf2/built-in.a
  CC      drivers/rtc/sysfs.o
  CC      drivers/acpi/acpica/utglobal.o
  AR      drivers/media/common/built-in.a
  AR      drivers/media/platform/allegro-dvt/built-in.a
  AR      drivers/media/platform/amlogic/meson-ge2d/built-in.a
  AR      drivers/media/platform/amlogic/built-in.a
  CC      lib/xxhash.o
  AR      drivers/media/platform/amphion/built-in.a
  AR      drivers/media/platform/aspeed/built-in.a
  CC      kernel/profile.o
  AR      drivers/media/platform/atmel/built-in.a
  CC      fs/buffer.o
  CC      drivers/input/ff-core.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_log.o
  AR      drivers/media/platform/broadcom/built-in.a
  AR      drivers/media/platform/cadence/built-in.a
  AR      drivers/media/platform/chips-media/coda/built-in.a
  AR      drivers/media/platform/chips-media/wave5/built-in.a
  AR      drivers/media/platform/chips-media/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_pc.o
  CC      drivers/net/ethernet/intel/e1000e/80003es2lan.o
  CC      drivers/i2c/i2c-core-base.o
  AR      drivers/scsi/built-in.a
  AR      drivers/media/platform/intel/built-in.a
  CC      drivers/acpi/acpica/uthex.o
  CC      drivers/i2c/i2c-core-smbus.o
  CC      fs/mpage.o
  CC      fs/nfs/nfs3super.o
  AR      drivers/media/platform/marvell/built-in.a
  CC      drivers/acpi/acpica/utids.o
  AR      drivers/media/platform/mediatek/jpeg/built-in.a
  CC      drivers/input/touchscreen.o
  AR      drivers/media/platform/mediatek/mdp/built-in.a
  CC      kernel/stacktrace.o
  CC      fs/proc_namespace.o
  AR      drivers/media/platform/mediatek/vcodec/common/built-in.a
  CC      drivers/gpu/drm/drm_plane.o
  AR      drivers/media/platform/mediatek/vpu/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/encoder/built-in.a
  CC      drivers/gpu/drm/drm_prime.o
  CC      fs/direct-io.o
  AR      drivers/media/platform/mediatek/vcodec/decoder/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/built-in.a
  CC      fs/nfs/nfs3client.o
  AR      drivers/media/platform/mediatek/mdp3/built-in.a
  CC      arch/x86/kernel/perf_regs.o
  AR      drivers/media/platform/mediatek/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_submit.o
  AR      drivers/media/platform/microchip/built-in.a
  AR      drivers/media/platform/nuvoton/built-in.a
  AR      drivers/media/platform/nvidia/tegra-vde/built-in.a
  CC      drivers/net/ethernet/intel/e1000e/mac.o
  AR      drivers/media/platform/nvidia/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_heci_gsc.o
  CC      net/mac80211/fils_aead.o
  AR      drivers/media/platform/nxp/dw100/built-in.a
  AR      drivers/media/platform/nxp/imx-jpeg/built-in.a
  AR      drivers/usb/core/built-in.a
  AR      drivers/media/platform/nxp/imx8-isi/built-in.a
  CC      drivers/gpu/drm/drm_print.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine.o
  AR      drivers/media/platform/qcom/camss/built-in.a
  AR      drivers/media/platform/nxp/built-in.a
  CC      drivers/rtc/rtc-mc146818-lib.o
  CC      net/mac80211/cfg.o
  AR      drivers/media/platform/qcom/venus/built-in.a
  CC      net/mac80211/ethtool.o
  AR      drivers/media/platform/qcom/built-in.a
  CC      drivers/acpi/acpica/utinit.o
  CC      net/sunrpc/sunrpc_syms.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
  AR      drivers/media/platform/renesas/rcar-vin/built-in.a
  AR      drivers/net/ethernet/intel/e1000/built-in.a
  AR      drivers/media/platform/renesas/rzg2l-cru/built-in.a
  AR      drivers/media/platform/renesas/vsp1/built-in.a
  CC      drivers/acpi/acpica/utlock.o
  CC      lib/genalloc.o
  AR      drivers/media/platform/renesas/built-in.a
  CC      drivers/acpi/acpica/utmath.o
  CC      net/ipv6/xfrm6_output.o
  CC      net/ipv6/xfrm6_protocol.o
  AR      drivers/media/platform/rockchip/rga/built-in.a
  AR      drivers/media/platform/rockchip/rkisp1/built-in.a
  AR      drivers/media/platform/rockchip/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_gt_irq.o
  AR      drivers/net/ethernet/broadcom/built-in.a
  CC      net/sunrpc/cache.o
  AR      drivers/media/platform/samsung/exynos-gsc/built-in.a
  CC      fs/eventpoll.o
  AR      drivers/media/platform/samsung/exynos4-is/built-in.a
  AR      drivers/media/platform/samsung/s3c-camif/built-in.a
  AR      drivers/media/platform/samsung/s5p-g2d/built-in.a
  AR      drivers/media/platform/samsung/s5p-jpeg/built-in.a
  CC      drivers/input/ff-memless.o
  AR      drivers/media/pci/ttpci/built-in.a
  AR      drivers/media/platform/st/sti/bdisp/built-in.a
  AR      drivers/media/platform/samsung/s5p-mfc/built-in.a
  AR      drivers/media/pci/b2c2/built-in.a
  CC      kernel/dma.o
  AR      drivers/media/platform/st/sti/c8sectpfe/built-in.a
  AR      drivers/media/platform/samsung/built-in.a
  AR      drivers/media/pci/pluto2/built-in.a
  AR      drivers/media/platform/st/sti/delta/built-in.a
  AR      drivers/media/pci/dm1105/built-in.a
  AR      drivers/media/platform/st/sti/hva/built-in.a
  AR      drivers/media/pci/pt1/built-in.a
  AR      drivers/media/platform/sunxi/sun4i-csi/built-in.a
  AR      drivers/media/platform/st/stm32/built-in.a
  AR      drivers/media/pci/pt3/built-in.a
  AR      drivers/media/platform/st/built-in.a
  AR      drivers/media/platform/sunxi/sun6i-csi/built-in.a
  AR      drivers/media/pci/mantis/built-in.a
  AR      drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
  AR      drivers/media/pci/ngene/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
  AR      drivers/media/platform/ti/am437x/built-in.a
  AR      drivers/media/pci/ddbridge/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-di/built-in.a
  AR      drivers/media/pci/saa7146/built-in.a
  AR      drivers/media/platform/ti/cal/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-rotate/built-in.a
  AR      drivers/media/pci/smipcie/built-in.a
  CC      kernel/smp.o
  AR      drivers/media/platform/sunxi/built-in.a
  AR      drivers/media/platform/ti/vpe/built-in.a
  CC      drivers/acpi/acpica/utmisc.o
  AR      drivers/media/platform/ti/davinci/built-in.a
  AR      drivers/media/pci/netup_unidvb/built-in.a
  CC      drivers/acpi/acpica/utmutex.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_mcr.o
  AR      drivers/media/platform/ti/j721e-csi2rx/built-in.a
  AR      drivers/media/pci/intel/ipu3/built-in.a
  AR      drivers/net/ethernet/mellanox/built-in.a
  AR      drivers/media/platform/ti/omap/built-in.a
  CC      fs/nfs/nfs3proc.o
  AR      drivers/media/pci/intel/ivsc/built-in.a
  AR      drivers/media/platform/ti/omap3isp/built-in.a
  AR      drivers/media/pci/intel/built-in.a
  AR      drivers/media/platform/ti/built-in.a
  AR      drivers/media/usb/b2c2/built-in.a
  CC      arch/x86/kernel/tracepoint.o
  AR      drivers/media/pci/built-in.a
  CC      fs/anon_inodes.o
  AR      drivers/media/usb/dvb-usb/built-in.a
  AR      drivers/media/platform/verisilicon/built-in.a
  AR      drivers/media/usb/dvb-usb-v2/built-in.a
  AR      drivers/media/usb/s2255/built-in.a
  CC      drivers/gpu/drm/drm_property.o
  CC      drivers/input/sparse-keymap.o
  AR      drivers/media/platform/via/built-in.a
  AR      drivers/media/usb/siano/built-in.a
  AR      drivers/media/platform/xilinx/built-in.a
  CC      drivers/input/vivaldi-fmap.o
  AR      drivers/media/platform/built-in.a
  AR      drivers/media/usb/ttusb-budget/built-in.a
  CC      drivers/input/input-leds.o
  AR      drivers/media/usb/ttusb-dec/built-in.a
  AR      drivers/media/usb/built-in.a
  CC      drivers/rtc/rtc-cmos.o
  CC      lib/percpu_counter.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm.o
  CC      lib/audit.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_fence.o
  CC      drivers/input/evdev.o
  AR      drivers/media/mmc/siano/built-in.a
  AR      drivers/media/mmc/built-in.a
  AR      drivers/media/firewire/built-in.a
  AR      drivers/media/spi/built-in.a
  AR      drivers/media/test-drivers/built-in.a
  AR      drivers/media/built-in.a
  CC      fs/nfs/nfs3xdr.o
  CC      lib/syscall.o
  CC      kernel/uid16.o
  CC      net/mac80211/rx.o
  CC      drivers/acpi/acpica/utnonansi.o
  CC      net/wireless/ap.o
  CC      net/mac80211/spectmgmt.o
  AR      drivers/pps/clients/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_huc.o
  CC      arch/x86/kernel/itmt.o
  AR      drivers/pps/generators/built-in.a
  CC      drivers/pps/pps.o
  CC      fs/nfs/nfs3acl.o
  CC      drivers/gpu/drm/drm_syncobj.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
  CC      drivers/pps/kapi.o
  CC      drivers/net/ethernet/intel/e1000e/manage.o
  CC      arch/x86/kernel/umip.o
  CC [M]  drivers/gpu/drm/xe/xe_huc_debugfs.o
  CC      lib/errname.o
  CC      lib/nlattr.o
  CC      lib/cpu_rmap.o
  CC      net/mac80211/tx.o
  CC [M]  drivers/gpu/drm/xe/xe_irq.o
  CC      net/ipv4/ipmr_base.o
  CC      net/mac80211/key.o
  CC      net/sunrpc/rpc_pipe.o
  CC      drivers/pps/sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_lrc.o
  CC      drivers/acpi/acpica/utobject.o
  CC      net/ipv6/netfilter.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_requests.o
  CC      drivers/i2c/i2c-core-acpi.o
  CC      fs/nfs/nfs4proc.o
  CC      lib/dynamic_queue_limits.o
  CC      drivers/gpu/drm/drm_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_migrate.o
  CC      net/wireless/trace.o
  CC      net/sunrpc/sysfs.o
  AR      drivers/pps/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
  CC      drivers/ptp/ptp_clock.o
  CC      lib/glob.o
  CC      drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
  CC      kernel/kallsyms.o
  CC      kernel/acct.o
  AR      drivers/rtc/built-in.a
  CC      net/wireless/ocb.o
  CC      drivers/acpi/acpica/utosi.o
  AR      drivers/input/built-in.a
  CC      kernel/vmcore_info.o
  CC      drivers/usb/host/xhci-hub.o
  CC      drivers/usb/host/xhci-dbg.o
  CC [M]  drivers/gpu/drm/xe/xe_mmio.o
  CC      kernel/elfcorehdr.o
  CC      drivers/gpu/drm/i915/gt/intel_gtt.o
  CC [M]  drivers/gpu/drm/xe/xe_mocs.o
  CC      arch/x86/kernel/unwind_frame.o
  CC      kernel/crash_reserve.o
  AR      drivers/net/ethernet/marvell/built-in.a
  CC      net/sunrpc/svc_xprt.o
  AR      drivers/net/ethernet/micrel/built-in.a
  CC      fs/signalfd.o
  CC      net/sunrpc/xprtmultipath.o
  CC      drivers/ptp/ptp_chardev.o
  CC      drivers/net/ethernet/intel/e1000e/nvm.o
  CC      drivers/acpi/acpica/utownerid.o
  CC      drivers/power/supply/power_supply_core.o
  CC      drivers/hwmon/hwmon.o
  AR      drivers/thermal/broadcom/built-in.a
  AR      drivers/thermal/samsung/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_llc.o
  CC      drivers/thermal/intel/intel_tcc.o
  CC      net/mac80211/util.o
  CC      drivers/i2c/i2c-smbus.o
  CC      drivers/gpu/drm/i915/gt/intel_lrc.o
  CC      drivers/net/ethernet/intel/e1000e/phy.o
  AR      drivers/thermal/st/built-in.a
  CC      lib/strncpy_from_user.o
  AR      drivers/thermal/qcom/built-in.a
  AR      drivers/thermal/tegra/built-in.a
  CC      lib/strnlen_user.o
  CC [M]  drivers/gpu/drm/xe/xe_module.o
  CC      drivers/gpu/drm/drm_trace_points.o
  AR      drivers/watchdog/built-in.a
  CC      drivers/gpu/drm/drm_vblank.o
  CC      drivers/md/md.o
  CC      drivers/thermal/intel/therm_throt.o
  CC      drivers/acpi/acpica/utpredef.o
  CC      net/ipv4/syncookies.o
  CC [M]  drivers/thermal/intel/x86_pkg_temp_thermal.o
  AR      arch/x86/kernel/built-in.a
  CC      drivers/acpi/acpica/utresdecode.o
  CC      drivers/gpu/drm/i915/gt/intel_migrate.o
  AR      arch/x86/built-in.a
  CC      fs/nfs/nfs4xdr.o
  CC      fs/nfs/nfs4state.o
  CC      drivers/md/md-bitmap.o
  CC      net/ipv6/proc.o
  CC      fs/timerfd.o
  CC      net/sunrpc/stats.o
  CC      kernel/kexec_core.o
  CC      drivers/cpufreq/cpufreq.o
  CC      fs/eventfd.o
  CC      drivers/acpi/acpica/utresrc.o
  CC [M]  drivers/gpu/drm/xe/xe_pat.o
  CC      drivers/cpufreq/freq_table.o
  CC      drivers/cpuidle/governors/menu.o
  CC      drivers/cpufreq/cpufreq_performance.o
  CC      drivers/ptp/ptp_sysfs.o
  CC      lib/net_utils.o
  CC      drivers/power/supply/power_supply_sysfs.o
  CC      drivers/power/supply/power_supply_leds.o
  AR      drivers/i2c/built-in.a
  CC      lib/sg_pool.o
  CC      net/sunrpc/sysctl.o
  CC      net/mac80211/parse.o
  CC      drivers/cpufreq/cpufreq_userspace.o
  CC [M]  drivers/gpu/drm/xe/xe_pci.o
  CC      drivers/cpufreq/cpufreq_ondemand.o
  CC      drivers/gpu/drm/i915/gt/intel_mocs.o
  CC [M]  drivers/gpu/drm/xe/xe_pcode.o
  CC      drivers/acpi/acpica/utstate.o
  AR      drivers/hwmon/built-in.a
  CC      drivers/cpuidle/governors/haltpoll.o
  CC      drivers/gpu/drm/drm_vblank_work.o
  CC      drivers/cpufreq/cpufreq_governor.o
  CC      drivers/ptp/ptp_vclock.o
  CC      fs/aio.o
  CC      drivers/net/ethernet/intel/e1000e/param.o
  CC      drivers/power/supply/power_supply_hwmon.o
  AR      drivers/mmc/built-in.a
  CC      drivers/net/ethernet/intel/e1000e/ethtool.o
  AR      drivers/thermal/intel/built-in.a
  CC      net/ipv4/tunnel4.o
  CC      drivers/usb/host/xhci-trace.o
  AR      drivers/thermal/mediatek/built-in.a
  CC      drivers/thermal/thermal_core.o
  CC      fs/locks.o
  CC      drivers/acpi/acpica/utstring.o
  CC      lib/stackdepot.o
  CC      fs/binfmt_misc.o
  CC      fs/nfs/nfs4renewd.o
  CC      drivers/thermal/thermal_sysfs.o
  CC      drivers/ptp/ptp_kvm_x86.o
  CC      lib/asn1_decoder.o
  CC      drivers/net/ethernet/intel/e1000e/netdev.o
  CC      drivers/usb/host/xhci-debugfs.o
  CC      kernel/crash_core.o
  CC      drivers/usb/host/xhci-pci.o
  CC      drivers/cpufreq/cpufreq_governor_attr_set.o
  CC      drivers/net/ethernet/intel/e1000e/ptp.o
  CC      drivers/cpufreq/acpi-cpufreq.o
  CC      net/ipv6/syncookies.o
  AR      drivers/power/supply/built-in.a
  AR      drivers/power/built-in.a
  CC      drivers/acpi/acpica/utstrsuppt.o
  CC      net/ipv6/calipso.o
  CC      drivers/ptp/ptp_kvm_common.o
  CC      net/ipv6/ah6.o
  CC      net/ipv6/esp6.o
  CC      net/ipv6/sit.o
  CC      drivers/cpufreq/amd-pstate.o
  CC [M]  drivers/gpu/drm/xe/xe_pm.o
  CC [M]  drivers/gpu/drm/xe/xe_preempt_fence.o
  CC      net/ipv6/addrconf_core.o
  CC      drivers/gpu/drm/i915/gt/intel_ppgtt.o
  CC      net/ipv6/exthdrs_core.o
  CC      net/mac80211/wme.o
  CC      net/wireless/pmsr.o
  CC      drivers/thermal/thermal_trip.o
  AR      drivers/cpuidle/governors/built-in.a
  CC      drivers/cpuidle/cpuidle.o
  GEN     lib/oid_registry_data.c
  CC      drivers/acpi/acpica/utstrtoul64.o
  CC      lib/ucs2_string.o
  CC      drivers/acpi/acpica/utxface.o
  CC      drivers/cpuidle/driver.o
  CC      drivers/cpufreq/amd-pstate-trace.o
  CC      net/ipv4/ipconfig.o
  CC      fs/binfmt_script.o
  AR      drivers/net/ethernet/microchip/built-in.a
  CC      drivers/cpufreq/intel_pstate.o
  CC      net/ipv4/netfilter.o
  CC      kernel/kexec.o
  CC      fs/binfmt_elf.o
  CC      fs/nfs/nfs4super.o
  CC      drivers/thermal/thermal_helpers.o
  CC      fs/mbcache.o
  CC      drivers/acpi/acpica/utxfinit.o
  AR      drivers/ptp/built-in.a
  CC      drivers/thermal/thermal_hwmon.o
  AR      drivers/ufs/built-in.a
  CC      drivers/acpi/acpica/utxferror.o
  CC      lib/sbitmap.o
  AR      drivers/leds/trigger/built-in.a
  AR      drivers/leds/blink/built-in.a
  AR      drivers/leds/simple/built-in.a
  CC      drivers/leds/led-core.o
  CC      fs/nfs/nfs4file.o
  AR      drivers/net/ethernet/mscc/built-in.a
  CC      drivers/cpuidle/governor.o
  CC      drivers/acpi/acpica/utxfmutex.o
  CC      kernel/utsname.o
  CC      drivers/gpu/drm/drm_vma_manager.o
  AR      net/sunrpc/built-in.a
  CC      drivers/acpi/fan_attr.o
  CC [M]  drivers/gpu/drm/xe/xe_pt.o
  CC      fs/posix_acl.o
  CC      fs/coredump.o
  CC      fs/drop_caches.o
  CC      drivers/leds/led-class.o
  CC      net/ipv4/tcp_cubic.o
  CC      drivers/cpuidle/sysfs.o
  CC      net/ipv6/ip6_checksum.o
  CC      drivers/gpu/drm/drm_writeback.o
  AR      drivers/net/ethernet/myricom/built-in.a
  GEN     net/wireless/shipped-certs.c
  CC      fs/sysctls.o
  CC      drivers/leds/led-triggers.o
  AR      drivers/acpi/acpica/built-in.a
  CC      net/ipv6/ip6_icmp.o
  CC      drivers/thermal/gov_step_wise.o
  CC      net/ipv6/output_core.o
  CC      drivers/gpu/drm/drm_panel.o
  CC      drivers/gpu/drm/i915/gt/intel_rc6.o
  CC      drivers/gpu/drm/i915/gt/intel_region_lmem.o
  CC      drivers/acpi/acpi_video.o
  CC      drivers/gpu/drm/i915/gt/intel_renderstate.o
  CC      kernel/pid_namespace.o
  CC      fs/nfs/delegation.o
  CC      net/ipv4/tcp_sigpool.o
  CC      drivers/acpi/video_detect.o
  CC      net/wireless/shipped-certs.o
  CC      drivers/acpi/processor_driver.o
  AR      drivers/usb/host/built-in.a
  AR      drivers/usb/built-in.a
  CC      net/mac80211/chan.o
  CC      drivers/md/md-autodetect.o
  CC      drivers/gpu/drm/drm_pci.o
  CC      drivers/gpu/drm/drm_debugfs.o
  CC      net/ipv6/protocol.o
  CC      drivers/cpuidle/poll_state.o
  CC      lib/group_cpus.o
  CC      drivers/gpu/drm/i915/gt/intel_reset.o
  CC      drivers/acpi/processor_thermal.o
  CC      lib/fw_table.o
  AR      drivers/firmware/arm_ffa/built-in.a
  AR      drivers/firmware/arm_scmi/built-in.a
  CC      drivers/thermal/gov_user_space.o
  AR      drivers/firmware/broadcom/built-in.a
  AR      drivers/crypto/stm32/built-in.a
  CC      drivers/clocksource/acpi_pm.o
  AR      drivers/firmware/cirrus/built-in.a
  AR      drivers/crypto/xilinx/built-in.a
  AR      drivers/firmware/meson/built-in.a
  AR      drivers/crypto/hisilicon/built-in.a
  AR      drivers/firmware/microchip/built-in.a
  AR      drivers/crypto/intel/keembay/built-in.a
  CC      net/ipv6/ip6_offload.o
  AR      drivers/crypto/starfive/built-in.a
  AR      drivers/crypto/intel/ixp4xx/built-in.a
  CC      net/ipv6/tcpv6_offload.o
  CC      drivers/firmware/efi/efi-bgrt.o
  AR      drivers/crypto/intel/built-in.a
  CC      drivers/firmware/efi/efi.o
  CC      drivers/cpuidle/cpuidle-haltpoll.o
  AR      drivers/crypto/built-in.a
  AR      drivers/firmware/imx/built-in.a
  AR      drivers/firmware/psci/built-in.a
  CC      fs/nfs/nfs4idmap.o
  AR      drivers/firmware/qcom/built-in.a
  CC      drivers/clocksource/i8253.o
  CC      drivers/firmware/efi/libstub/efi-stub-helper.o
  CC      net/mac80211/trace.o
  AR      drivers/leds/built-in.a
  CC      net/ipv6/exthdrs_offload.o
  AR      drivers/net/ethernet/natsemi/built-in.a
  AR      drivers/net/ethernet/neterion/built-in.a
  AR      drivers/net/ethernet/netronome/built-in.a
  AR      drivers/net/ethernet/ni/built-in.a
  CC      net/ipv4/cipso_ipv4.o
  CC      drivers/net/ethernet/nvidia/forcedeth.o
  CC      drivers/gpu/drm/drm_debugfs_crc.o
  CC      drivers/gpu/drm/drm_panel_orientation_quirks.o
  AR      drivers/net/ethernet/oki-semi/built-in.a
  AR      drivers/thermal/built-in.a
  AR      drivers/firmware/smccc/built-in.a
  AR      lib/lib.a
  AR      drivers/net/ethernet/packetengines/built-in.a
  GEN     lib/crc32table.h
  CC      lib/oid_registry.o
  CC      drivers/acpi/processor_idle.o
  CC      drivers/hid/usbhid/hid-core.o
  CC      drivers/acpi/processor_throttling.o
  CC      kernel/stop_machine.o
  CC      kernel/audit.o
  CC      kernel/auditfilter.o
  AR      drivers/platform/x86/amd/built-in.a
  AR      drivers/platform/x86/intel/built-in.a
  CC      drivers/platform/x86/wmi.o
  CC      drivers/acpi/processor_perflib.o
  CC      drivers/platform/x86/wmi-bmof.o
  CC      drivers/acpi/container.o
  AR      drivers/platform/surface/built-in.a
  AR      drivers/cpuidle/built-in.a
  CC      lib/crc32.o
  CC      net/ipv4/xfrm4_policy.o
  CC      fs/nfs/callback.o
  CC      net/ipv6/inet6_hashtables.o
  CC      drivers/mailbox/mailbox.o
  AR      drivers/clocksource/built-in.a
  CC      fs/nfs/callback_xdr.o
  CC      drivers/mailbox/pcc.o
  CC      fs/fhandle.o
  AR      drivers/cpufreq/built-in.a
  CC      drivers/hid/usbhid/hiddev.o
  AR      drivers/perf/built-in.a
  CC      drivers/hid/usbhid/hid-pidff.o
  CC      net/ipv6/mcast_snoop.o
  CC      drivers/platform/x86/eeepc-laptop.o
  CC      net/ipv4/xfrm4_state.o
  CC      drivers/md/dm.o
  CC      drivers/md/dm-table.o
  CC      drivers/acpi/thermal_lib.o
  CC      drivers/acpi/thermal.o
  CC      fs/nfs/callback_proc.o
  CC      drivers/firmware/efi/vars.o
  CC      drivers/firmware/efi/libstub/gop.o
  AR      drivers/hwtracing/intel_th/built-in.a
  AR      drivers/android/built-in.a
  AR      drivers/nvmem/layouts/built-in.a
  CC      drivers/nvmem/core.o
  CC      drivers/firmware/efi/libstub/secureboot.o
  CC      drivers/firmware/efi/libstub/tpm.o
  CC      drivers/firmware/efi/libstub/file.o
  AR      lib/built-in.a
  CC      drivers/gpu/drm/drm_buddy.o
  CC      net/mac80211/mlme.o
  CC [M]  drivers/gpu/drm/xe/xe_pt_walk.o
  CC      drivers/hid/hid-core.o
  CC      kernel/auditsc.o
  CC      drivers/firmware/efi/reboot.o
  CC      drivers/acpi/nhlt.o
  CC      drivers/firmware/efi/libstub/mem.o
  AR      drivers/mailbox/built-in.a
  AR      drivers/net/ethernet/qlogic/built-in.a
  AR      drivers/net/ethernet/qualcomm/emac/built-in.a
  AR      drivers/net/ethernet/qualcomm/built-in.a
  CC      drivers/platform/x86/p2sb.o
  CC      drivers/gpu/drm/drm_gem_shmem_helper.o
  CC      drivers/net/ethernet/realtek/8139too.o
  CC      drivers/acpi/acpi_memhotplug.o
  CC      drivers/gpu/drm/drm_atomic_helper.o
  CC      drivers/net/ethernet/realtek/r8169_main.o
  CC      drivers/net/ethernet/realtek/r8169_firmware.o
  CC      net/ipv4/xfrm4_input.o
  CC      drivers/acpi/ioapic.o
  CC      drivers/md/dm-target.o
  CC      drivers/gpu/drm/i915/gt/intel_ring.o
  CC      fs/nfs/nfs4namespace.o
  CC      drivers/acpi/battery.o
  CC      drivers/net/ethernet/realtek/r8169_phy_config.o
  AR      drivers/net/ethernet/intel/e1000e/built-in.a
  CC      drivers/acpi/bgrt.o
  CC      drivers/firmware/efi/libstub/random.o
  CC [M]  drivers/gpu/drm/xe/xe_query.o
  AR      drivers/net/ethernet/intel/built-in.a
  CC      drivers/firmware/efi/libstub/randomalloc.o
  CC      drivers/firmware/efi/libstub/pci.o
  CC      fs/nfs/nfs4getroot.o
  AR      drivers/net/ethernet/renesas/built-in.a
  CC      fs/nfs/nfs4client.o
  CC      drivers/md/dm-linear.o
  CC      drivers/gpu/drm/drm_atomic_state_helper.o
  CC      kernel/audit_watch.o
  CC      kernel/audit_fsnotify.o
  CC      drivers/gpu/drm/drm_bridge_connector.o
  AR      drivers/hid/usbhid/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_range_fence.o
  CC      drivers/hid/hid-input.o
  CC      drivers/gpu/drm/i915/gt/intel_ring_submission.o
  CC      drivers/acpi/spcr.o
  CC      kernel/audit_tree.o
  CC      drivers/firmware/efi/memattr.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_sr.o
  CC      net/ipv4/xfrm4_output.o
  AR      drivers/platform/x86/built-in.a
  AR      drivers/platform/built-in.a
  CC      net/ipv4/xfrm4_protocol.o
  AR      net/ipv6/built-in.a
  CC      fs/nfs/nfs4session.o
  AR      drivers/firmware/tegra/built-in.a
  CC      drivers/gpu/drm/drm_crtc_helper.o
  CC      drivers/gpu/drm/drm_damage_helper.o
  AR      drivers/nvmem/built-in.a
  CC      fs/nfs/dns_resolve.o
  CC      drivers/md/dm-stripe.o
  CC      drivers/md/dm-ioctl.o
  CC      drivers/gpu/drm/drm_encoder_slave.o
  CC      drivers/gpu/drm/i915/gt/intel_rps.o
  CC      drivers/md/dm-io.o
  CC      drivers/firmware/efi/tpm.o
  CC      drivers/firmware/efi/libstub/skip_spaces.o
  CC      drivers/firmware/efi/libstub/lib-cmdline.o
  CC      fs/nfs/nfs4trace.o
  CC      drivers/firmware/efi/libstub/lib-ctype.o
  CC      drivers/gpu/drm/drm_flip_work.o
  CC      kernel/kprobes.o
  CC      fs/nfs/nfs4sysctl.o
  CC      drivers/md/dm-kcopyd.o
  CC      drivers/firmware/efi/libstub/alignedmem.o
  CC      drivers/gpu/drm/drm_format_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_whitelist.o
  AR      drivers/firmware/xilinx/built-in.a
  CC      drivers/firmware/efi/memmap.o
  CC      drivers/gpu/drm/drm_gem_atomic_helper.o
  CC      drivers/md/dm-sysfs.o
  AR      drivers/acpi/built-in.a
  CC      drivers/gpu/drm/i915/gt/intel_sa_media.o
  CC      drivers/firmware/dmi_scan.o
  CC      kernel/seccomp.o
  CC      drivers/gpu/drm/i915/gt/intel_sseu.o
  CC      drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
  AR      drivers/net/ethernet/rdc/built-in.a
  CC      drivers/firmware/efi/capsule.o
  AR      drivers/net/ethernet/rocker/built-in.a
  AR      drivers/net/ethernet/samsung/built-in.a
  CC      drivers/firmware/efi/esrt.o
  AR      drivers/net/ethernet/seeq/built-in.a
  CC      drivers/firmware/efi/runtime-wrappers.o
  CC      drivers/gpu/drm/drm_gem_framebuffer_helper.o
  AR      drivers/net/ethernet/silan/built-in.a
  AR      drivers/net/ethernet/sis/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_rtp.o
  AR      drivers/net/ethernet/sfc/built-in.a
  CC      kernel/relay.o
  CC      drivers/md/dm-stats.o
  CC      kernel/utsname_sysctl.o
  CC      kernel/delayacct.o
  CC      drivers/firmware/dmi-id.o
  CC      drivers/md/dm-rq.o
  CC      drivers/md/dm-io-rewind.o
  CC      drivers/gpu/drm/i915/gt/intel_timeline.o
  CC      drivers/md/dm-builtin.o
  CC [M]  drivers/gpu/drm/xe/xe_ring_ops.o
  CC      kernel/taskstats.o
  CC      drivers/firmware/efi/capsule-loader.o
  CC      drivers/gpu/drm/drm_kms_helper_common.o
  CC      drivers/gpu/drm/drm_modeset_helper.o
  CC      drivers/gpu/drm/drm_plane_helper.o
  AR      drivers/net/ethernet/nvidia/built-in.a
  AR      net/ipv4/built-in.a
  CC      kernel/tsacct.o
  CC      kernel/tracepoint.o
  CC      drivers/firmware/efi/libstub/relocate.o
  CC      drivers/gpu/drm/drm_probe_helper.o
  CC      drivers/gpu/drm/i915/gt/intel_tlb.o
  CC      drivers/gpu/drm/drm_rect.o
  CC      drivers/gpu/drm/drm_self_refresh_helper.o
  CC      drivers/gpu/drm/drm_simple_kms_helper.o
  CC      drivers/hid/hid-quirks.o
  CC      drivers/gpu/drm/bridge/panel.o
  CC      kernel/irq_work.o
  CC      kernel/static_call.o
  CC      drivers/md/dm-raid1.o
  CC      drivers/gpu/drm/drm_mipi_dsi.o
  AR      drivers/net/ethernet/smsc/built-in.a
  CC      net/mac80211/tdls.o
  CC      drivers/md/dm-log.o
  CC      drivers/firmware/efi/earlycon.o
  CC      drivers/gpu/drm/i915/gt/intel_wopcm.o
  CC      drivers/md/dm-region-hash.o
  CC      kernel/padata.o
  CC [M]  drivers/gpu/drm/drm_exec.o
  CC      drivers/hid/hid-debug.o
  CC      drivers/md/dm-zero.o
  CC      kernel/jump_label.o
  CC [M]  drivers/gpu/drm/drm_gpuvm.o
  CC [M]  drivers/gpu/drm/drm_suballoc.o
  CC      drivers/firmware/efi/libstub/printk.o
  CC      kernel/context_tracking.o
  CC      drivers/firmware/memmap.o
  CC      kernel/iomem.o
  CC      drivers/firmware/efi/libstub/vsprintf.o
  CC      drivers/gpu/drm/i915/gt/intel_workarounds.o
  CC      drivers/firmware/efi/libstub/x86-stub.o
  CC      kernel/rseq.o
  CC      drivers/hid/hidraw.o
  AR      drivers/net/ethernet/socionext/built-in.a
  AR      drivers/net/ethernet/stmicro/built-in.a
  AR      drivers/net/ethernet/sun/built-in.a
  AR      drivers/net/ethernet/tehuti/built-in.a
  CC [M]  drivers/gpu/drm/drm_gem_ttm_helper.o
  STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
  STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
  STUBCPY drivers/firmware/efi/libstub/file.stub.o
  STUBCPY drivers/firmware/efi/libstub/gop.stub.o
  CC [M]  drivers/gpu/drm/xe/xe_sa.o
  CC      net/mac80211/ocb.o
  CC [M]  drivers/gpu/drm/xe/xe_sched_job.o
  AR      drivers/net/ethernet/ti/built-in.a
  STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o
  AR      drivers/net/ethernet/vertexcom/built-in.a
  CC      drivers/gpu/drm/i915/gt/shmem_utils.o
  STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
  CC [M]  drivers/gpu/drm/xe/xe_step.o
  STUBCPY drivers/firmware/efi/libstub/mem.stub.o
  AR      drivers/net/ethernet/via/built-in.a
  STUBCPY drivers/firmware/efi/libstub/pci.stub.o
  CC      net/mac80211/airtime.o
  CC [M]  drivers/gpu/drm/xe/xe_svm.o
  CC      net/mac80211/eht.o
  CC [M]  drivers/gpu/drm/xe/xe_sync.o
  CC      net/mac80211/led.o
  CC      net/mac80211/pm.o
  CC [M]  drivers/gpu/drm/xe/xe_tile.o
  CC      drivers/hid/hid-generic.o
  CC      drivers/hid/hid-a4tech.o
  STUBCPY drivers/firmware/efi/libstub/random.stub.o
  STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
  STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
  AR      drivers/net/ethernet/realtek/built-in.a
  STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
  STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
  AR      drivers/net/ethernet/wangxun/built-in.a
  AR      drivers/net/ethernet/wiznet/built-in.a
  AR      drivers/net/ethernet/xilinx/built-in.a
  CC      net/mac80211/rc80211_minstrel_ht.o
  CC [M]  drivers/gpu/drm/xe/xe_tile_sysfs.o
  AR      drivers/net/ethernet/synopsys/built-in.a
  AR      drivers/net/ethernet/xircom/built-in.a
  CC      drivers/gpu/drm/i915/gt/sysfs_engines.o
  CC      drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
  AR      drivers/net/ethernet/pensando/built-in.a
  AR      drivers/net/ethernet/built-in.a
  STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
  CC      drivers/gpu/drm/i915/gt/gen6_renderstate.o
  CC      drivers/gpu/drm/i915/gt/gen7_renderstate.o
  STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
  CC      drivers/gpu/drm/i915/gt/gen8_renderstate.o
  AR      drivers/firmware/efi/built-in.a
  CC      drivers/gpu/drm/i915/gt/gen9_renderstate.o
  CC [M]  drivers/gpu/drm/xe/xe_trace.o
  CC      net/mac80211/wbrf.o
  LD [M]  drivers/gpu/drm/drm_suballoc_helper.o
  CC      drivers/hid/hid-apple.o
  CC      drivers/hid/hid-belkin.o
  CC [M]  drivers/gpu/drm/xe/xe_trace_bo.o
  CC [M]  drivers/gpu/drm/xe/xe_trace_guc.o
  CC      drivers/hid/hid-cherry.o
  CC      drivers/hid/hid-chicony.o
  AR      drivers/net/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_ttm_sys_mgr.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_busy.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_clflush.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_context.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_create.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
  CC      drivers/hid/hid-cypress.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_domain.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_vram_mgr.o
  STUBCPY drivers/firmware/efi/libstub/printk.stub.o
  AR      drivers/md/built-in.a
  CC      drivers/hid/hid-ezkey.o
  STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_internal.o
  AR      kernel/built-in.a
  CC      drivers/hid/hid-gyration.o
  AR      drivers/firmware/efi/libstub/lib.a
  CC [M]  drivers/gpu/drm/xe/xe_tuning.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_lmem.o
  AR      drivers/firmware/built-in.a
  CC      drivers/gpu/drm/i915/gem/i915_gem_mman.o
  CC      drivers/hid/hid-ite.o
  LD [M]  drivers/gpu/drm/drm_ttm_helper.o
  CC [M]  drivers/gpu/drm/xe/xe_uc.o
  CC      drivers/hid/hid-kensington.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_fw.o
  CC [M]  drivers/gpu/drm/xe/xe_vm.o
  CC [M]  drivers/gpu/drm/xe/xe_vram.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_object.o
  CC [M]  drivers/gpu/drm/xe/xe_vram_freq.o
  CC      drivers/hid/hid-lg.o
  CC      drivers/hid/hid-lgff.o
  CC      drivers/hid/hid-lg4ff.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_pages.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_phys.o
  CC      drivers/hid/hid-lg-g15.o
  CC [M]  drivers/gpu/drm/xe/xe_wait_user_fence.o
  CC      drivers/hid/hid-microsoft.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_pm.o
  CC [M]  drivers/gpu/drm/xe/xe_wa.o
  CC [M]  drivers/gpu/drm/xe/xe_wopcm.o
  CC [M]  drivers/gpu/drm/xe/xe_hwmon.o
  CC      drivers/hid/hid-monterey.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_region.o
  CC      drivers/hid/hid-ntrig.o
  CC      drivers/hid/hid-pl.o
  CC      drivers/hid/hid-petalynx.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_vf.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.o
  CC      drivers/hid/hid-redragon.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_relay.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_shmem.o
  CC [M]  drivers/gpu/drm/xe/xe_memirq.o
  AR      fs/nfs/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_sriov.o
  CC      drivers/hid/hid-samsung.o
  AR      fs/built-in.a
  AR      net/wireless/built-in.a
  CC      drivers/hid/hid-sony.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_stolen.o
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_irq.o
  CC      drivers/hid/hid-sunplus.o
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_utils.o
  CC [M]  drivers/gpu/drm/xe/display/intel_fb_bo.o
  CC [M]  drivers/gpu/drm/xe/display/intel_fbdev_fb.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_throttle.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_tiling.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_misc.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_rps.o
  CC      drivers/hid/hid-topseed.o
  CC [M]  drivers/gpu/drm/xe/display/xe_dsb_buffer.o
  CC [M]  drivers/gpu/drm/xe/display/xe_fb_pin.o
  CC [M]  drivers/gpu/drm/xe/display/xe_hdcp_gsc.o
  CC [M]  drivers/gpu/drm/xe/display/xe_plane_initial.o
  CC [M]  drivers/gpu/drm/xe/display/xe_tdf.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_dram.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_pch.o
  CC [M]  drivers/gpu/drm/xe/i915-display/icl_dsi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_alpm.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_userptr.o
  CC      drivers/gpu/drm/i915/gem/i915_gem_wait.o
  CC      drivers/gpu/drm/i915/gem/i915_gemfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
  CC      drivers/gpu/drm/i915/i915_active.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_audio.o
  CC      drivers/gpu/drm/i915/i915_cmd_parser.o
  CC      drivers/gpu/drm/i915/i915_deps.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_backlight.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bios.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bw.o
  CC      drivers/gpu/drm/i915/i915_gem.o
  CC      drivers/gpu/drm/i915/i915_gem_evict.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cdclk.o
  CC      drivers/gpu/drm/i915/i915_gem_gtt.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_color.o
In file included from /workspace/kernel/include/drm/drm_mm.h:51,
                 from /workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:10:
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c: In function ‘i915_gem_stolen_lmem_setup’:
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:941:5: error: format ‘%lli’ expects argument of type ‘long long int’, but argument 5 has type ‘resource_size_t’ {aka ‘unsigned int’} [-Werror=format=]
  941 |     "Disabling stolen memory support due to OOB placement: lmem_size = %lli vs dsm_base = %lli\n",
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  942 |     lmem_size, dsm_base);
      |     ~~~~~~~~~
      |     |
      |     resource_size_t {aka unsigned int}
/workspace/kernel/include/drm/drm_print.h:424:32: note: in definition of macro ‘drm_dev_dbg’
  424 |  __drm_dev_dbg(NULL, dev, cat, fmt, ##__VA_ARGS__)
      |                                ^~~
/workspace/kernel/include/drm/drm_print.h:524:32: note: in expansion of macro ‘drm_dbg_driver’
  524 | #define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
      |                                ^~~~~~~~~~~~~~
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:940:4: note: in expansion of macro ‘drm_dbg’
  940 |    drm_dbg(&i915->drm,
      |    ^~~~~~~
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:941:75: note: format string is defined here
  941 |     "Disabling stolen memory support due to OOB placement: lmem_size = %lli vs dsm_base = %lli\n",
      |                                                                        ~~~^
      |                                                                           |
      |                                                                           long long int
      |                                                                        %i
In file included from /workspace/kernel/include/drm/drm_mm.h:51,
                 from /workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:10:
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:941:5: error: format ‘%lli’ expects argument of type ‘long long int’, but argument 6 has type ‘resource_size_t’ {aka ‘unsigned int’} [-Werror=format=]
  941 |     "Disabling stolen memory support due to OOB placement: lmem_size = %lli vs dsm_base = %lli\n",
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  942 |     lmem_size, dsm_base);
      |                ~~~~~~~~
      |                |
      |                resource_size_t {aka unsigned int}
/workspace/kernel/include/drm/drm_print.h:424:32: note: in definition of macro ‘drm_dev_dbg’
  424 |  __drm_dev_dbg(NULL, dev, cat, fmt, ##__VA_ARGS__)
      |                                ^~~
/workspace/kernel/include/drm/drm_print.h:524:32: note: in expansion of macro ‘drm_dbg_driver’
  524 | #define drm_dbg(drm, fmt, ...) drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
      |                                ^~~~~~~~~~~~~~
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:940:4: note: in expansion of macro ‘drm_dbg’
  940 |    drm_dbg(&i915->drm,
      |    ^~~~~~~
/workspace/kernel/drivers/gpu/drm/i915/gem/i915_gem_stolen.c:941:94: note: format string is defined here
  941 |     "Disabling stolen memory support due to OOB placement: lmem_size = %lli vs dsm_base = %lli\n",
      |                                                                                           ~~~^
      |                                                                                              |
      |                                                                                              long long int
      |                                                                                           %i
  CC      drivers/gpu/drm/i915/i915_gem_ww.o
  CC      drivers/gpu/drm/i915/i915_query.o
  CC      drivers/gpu/drm/i915/i915_request.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_connector.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc.o
  CC      drivers/gpu/drm/i915/i915_scheduler.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc_state_dump.o
cc1: all warnings being treated as errors
  CC      drivers/gpu/drm/i915/i915_trace_points.o
make[6]: *** [/workspace/kernel/scripts/Makefile.build:244: drivers/gpu/drm/i915/gem/i915_gem_stolen.o] Error 1
make[6]: *** Waiting for unfinished jobs....
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cursor.o
  AR      drivers/hid/built-in.a
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cx0_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_ddi_buf_trans.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_device.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_driver.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_params.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_map.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_power_well.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_trace.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_wa.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_hdcp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_link_training.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_mst.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpt_common.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_drrs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsb.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi_dcs_backlight.o
  AR      net/mac80211/built-in.a
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi_vbt.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_encoder.o
  AR      net/built-in.a
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fb.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fbc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fdi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_global_state.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_gmbus.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp_gsc_message.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdmi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hti.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_link_bw.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_lspcon.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_lock.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_setup.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_verify.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_panel.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pmdemand.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pps.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_psr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_qp_tables.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_quirks.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_snps_phy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_tc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vblank.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vdsc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vga.o
make[5]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers/gpu/drm/i915] Error 2
make[5]: *** Waiting for unfinished jobs....
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vrr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc_wl.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_wm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_scaler.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_watermark.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_acpi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_opregion.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs_params.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o
  CC [M]  drivers/gpu/drm/xe/xe_gsc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ads.o
  LD [M]  drivers/gpu/drm/xe/xe.o
make[4]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers/gpu/drm] Error 2
make[3]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers/gpu] Error 2
make[2]: *** [/workspace/kernel/scripts/Makefile.build:485: drivers] Error 2
make[1]: *** [/workspace/kernel/Makefile:1934: .] Error 2
make: *** [/workspace/kernel/Makefile:240: __sub-make] Error 2
run-parts: /workspace/ci/hooks/11-build-32b exited with return code 2



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

* ✗ CI.checksparse: warning for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (54 preceding siblings ...)
  2024-06-15  3:12 ` ✗ CI.Hooks: failure " Patchwork
@ 2024-06-15  3:14 ` Patchwork
  2024-06-15  3:36 ` ✓ CI.BAT: success " Patchwork
                   ` (2 subsequent siblings)
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-15  3:14 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
URL   : https://patchwork.freedesktop.org/series/134917/
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 e60c2c92798375b80da09295f5d3cc7db476a9c5
Sparse version: 0.6.1 (Ubuntu: 0.6.1-2build1)
Fast mode used, each commit won't be checked separately.
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✓ CI.BAT: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (55 preceding siblings ...)
  2024-06-15  3:14 ` ✗ CI.checksparse: warning " Patchwork
@ 2024-06-15  3:36 ` Patchwork
  2024-06-15 13:59 ` ✗ CI.FULL: failure for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs Patchwork
  2024-06-18  8:53 ` ✓ CI.FULL: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2) Patchwork
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-15  3:36 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

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

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
URL   : https://patchwork.freedesktop.org/series/134917/
State : success

== Summary ==

CI Bug Log - changes from xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5_BAT -> xe-pw-134917v2_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (5 -> 5)
------------------------------

  No changes in participating hosts


Changes
-------

  No changes found


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

  * Linux: xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5 -> xe-pw-134917v2

  IGT_7889: 9dca15da37f2a385b04427eb39cd460224d09c25 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5: e60c2c92798375b80da09295f5d3cc7db476a9c5
  xe-pw-134917v2: 134917v2

== Logs ==

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

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

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

* ✗ CI.FULL: failure for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (56 preceding siblings ...)
  2024-06-15  3:36 ` ✓ CI.BAT: success " Patchwork
@ 2024-06-15 13:59 ` Patchwork
  2024-06-18  8:53 ` ✓ CI.FULL: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2) Patchwork
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-15 13:59 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

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

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs
URL   : https://patchwork.freedesktop.org/series/134917/
State : failure

== Summary ==

CI Bug Log - changes from xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a_full -> xe-pw-134917v1_full
====================================================

Summary
-------

  **WARNING**

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

  

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

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-134917v1_full:

### IGT changes ###

#### Warnings ####

  * igt@xe_pm@s3-vm-bind-unbind-all:
    - shard-adlp:         [DMESG-WARN][1] ([Intel XE#1214] / [Intel XE#1941]) -> [DMESG-FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-2/igt@xe_pm@s3-vm-bind-unbind-all.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-6/igt@xe_pm@s3-vm-bind-unbind-all.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@kms_psr@pr-no-drrs:
    - {shard-lnl}:        NOTRUN -> [INCOMPLETE][3] +1 other test incomplete
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-lnl-2/igt@kms_psr@pr-no-drrs.html

  * igt@xe_copy_basic@mem-copy-linear-0x3fff:
    - {shard-lnl}:        [PASS][4] -> [INCOMPLETE][5]
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-lnl-2/igt@xe_copy_basic@mem-copy-linear-0x3fff.html
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-lnl-2/igt@xe_copy_basic@mem-copy-linear-0x3fff.html

  * igt@xe_vm@mmap-style-bind-either-side-partial-split-page-hammer:
    - {shard-lnl}:        [PASS][6] -> [DMESG-WARN][7]
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-lnl-2/igt@xe_vm@mmap-style-bind-either-side-partial-split-page-hammer.html
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-lnl-2/igt@xe_vm@mmap-style-bind-either-side-partial-split-page-hammer.html

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

  Here are the changes found in xe-pw-134917v1_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_async_flips@alternate-sync-async-flip:
    - shard-adlp:         [PASS][8] -> [FAIL][9] ([Intel XE#827]) +1 other test fail
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-8/igt@kms_async_flips@alternate-sync-async-flip.html
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-4/igt@kms_async_flips@alternate-sync-async-flip.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-d-hdmi-a-1-x:
    - shard-adlp:         [PASS][10] -> [DMESG-WARN][11] ([Intel XE#1033] / [Intel XE#1214])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-6/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-d-hdmi-a-1-x.html
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-4/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-d-hdmi-a-1-x.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-adlp:         NOTRUN -> [SKIP][12] ([Intel XE#1124] / [Intel XE#1201]) +1 other test skip
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-180:
    - shard-adlp:         NOTRUN -> [FAIL][13] ([Intel XE#1874])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_big_fb@x-tiled-8bpp-rotate-180.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - shard-adlp:         NOTRUN -> [FAIL][14] ([Intel XE#1231]) +1 other test fail
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html

  * igt@kms_bw@linear-tiling-3-displays-2160x1440p:
    - shard-adlp:         NOTRUN -> [SKIP][15] ([Intel XE#1201] / [Intel XE#367])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_bw@linear-tiling-3-displays-2160x1440p.html

  * igt@kms_ccs@crc-primary-basic-4-tiled-dg2-mc-ccs@pipe-d-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][16] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +3 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_ccs@crc-primary-basic-4-tiled-dg2-mc-ccs@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-xe2-ccs:
    - shard-adlp:         NOTRUN -> [SKIP][17] ([Intel XE#1201] / [Intel XE#1252]) +1 other test skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-xe2-ccs.html

  * igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][18] ([Intel XE#1201] / [Intel XE#787]) +5 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_ccs@random-ccs-data-y-tiled-gen12-mc-ccs@pipe-a-hdmi-a-1.html

  * igt@kms_chamelium_edid@dp-edid-read:
    - shard-adlp:         NOTRUN -> [SKIP][19] ([Intel XE#1201] / [Intel XE#373]) +1 other test skip
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_chamelium_edid@dp-edid-read.html

  * igt@kms_content_protection@content-type-change:
    - shard-adlp:         NOTRUN -> [SKIP][20] ([Intel XE#1201] / [Intel XE#455]) +11 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_content_protection@content-type-change.html

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions:
    - shard-dg2-set2:     [PASS][21] -> [DMESG-WARN][22] ([Intel XE#1214] / [Intel XE#282]) +6 other tests dmesg-warn
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-434/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-464/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size:
    - shard-adlp:         NOTRUN -> [SKIP][23] ([Intel XE#1201] / [Intel XE#309]) +1 other test skip
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_cursor_legacy@cursorb-vs-flipa-varying-size.html

  * igt@kms_cursor_legacy@torture-move@pipe-a:
    - shard-dg2-set2:     [PASS][24] -> [DMESG-WARN][25] ([Intel XE#1214] / [Intel XE#877]) +1 other test dmesg-warn
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-466/igt@kms_cursor_legacy@torture-move@pipe-a.html
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-466/igt@kms_cursor_legacy@torture-move@pipe-a.html

  * igt@kms_flip@2x-nonexisting-fb:
    - shard-adlp:         NOTRUN -> [SKIP][26] ([Intel XE#1201] / [Intel XE#310])
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_flip@2x-nonexisting-fb.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-y-to-x:
    - shard-adlp:         [PASS][27] -> [FAIL][28] ([Intel XE#1874]) +1 other test fail
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-2/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-y-to-x.html
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-y-to-x.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc:
    - shard-adlp:         NOTRUN -> [SKIP][29] ([Intel XE#1201] / [Intel XE#656]) +6 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt:
    - shard-adlp:         NOTRUN -> [FAIL][30] ([Intel XE#1861])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-wc:
    - shard-adlp:         NOTRUN -> [SKIP][31] ([Intel XE#1201] / [Intel XE#651]) +2 other tests skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_frontbuffer_tracking@fbcdrrs-rgb565-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt:
    - shard-adlp:         NOTRUN -> [SKIP][32] ([Intel XE#1201] / [Intel XE#653]) +4 other tests skip
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-dp-4:
    - shard-dg2-set2:     [PASS][33] -> [FAIL][34] ([Intel XE#361])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-434/igt@kms_plane_scaling@intel-max-src-size@pipe-a-dp-4.html
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-464/igt@kms_plane_scaling@intel-max-src-size@pipe-a-dp-4.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25:
    - shard-adlp:         NOTRUN -> [SKIP][35] ([Intel XE#1201] / [Intel XE#305] / [Intel XE#455]) +1 other test skip
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-b-hdmi-a-1:
    - shard-adlp:         NOTRUN -> [SKIP][36] ([Intel XE#1201] / [Intel XE#305]) +2 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-b-hdmi-a-1.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-adlp:         NOTRUN -> [SKIP][37] ([Intel XE#1201] / [Intel XE#836])
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-adlp:         NOTRUN -> [SKIP][38] ([Intel XE#1122] / [Intel XE#1201])
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr@psr2-suspend:
    - shard-adlp:         NOTRUN -> [SKIP][39] ([Intel XE#1201] / [Intel XE#929]) +2 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_psr@psr2-suspend.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-adlp:         NOTRUN -> [SKIP][40] ([Intel XE#1201] / [Intel XE#362])
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_universal_plane@cursor-fb-leak:
    - shard-adlp:         [PASS][41] -> [FAIL][42] ([Intel XE#771] / [Intel XE#899])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-4/igt@kms_universal_plane@cursor-fb-leak.html
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-1/igt@kms_universal_plane@cursor-fb-leak.html
    - shard-dg2-set2:     [PASS][43] -> [FAIL][44] ([Intel XE#771] / [Intel XE#899])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-433/igt@kms_universal_plane@cursor-fb-leak.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-434/igt@kms_universal_plane@cursor-fb-leak.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-4:
    - shard-dg2-set2:     [PASS][45] -> [FAIL][46] ([Intel XE#899])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-433/igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-4.html
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-434/igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-4.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1:
    - shard-adlp:         [PASS][47] -> [FAIL][48] ([Intel XE#899])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-4/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-1/igt@kms_universal_plane@cursor-fb-leak@pipe-d-hdmi-a-1.html

  * igt@xe_ccs@ctrl-surf-copy:
    - shard-adlp:         NOTRUN -> [SKIP][49] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#488])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@xe_ccs@ctrl-surf-copy.html

  * igt@xe_evict@evict-beng-cm-threads-small:
    - shard-adlp:         NOTRUN -> [SKIP][50] ([Intel XE#1201] / [Intel XE#261]) +1 other test skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@xe_evict@evict-beng-cm-threads-small.html

  * igt@xe_evict@evict-threads-large:
    - shard-dg2-set2:     [PASS][51] -> [TIMEOUT][52] ([Intel XE#1473] / [Intel XE#392]) +1 other test timeout
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-433/igt@xe_evict@evict-threads-large.html
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-434/igt@xe_evict@evict-threads-large.html

  * igt@xe_evict@evict-threads-small:
    - shard-adlp:         NOTRUN -> [SKIP][53] ([Intel XE#1201] / [Intel XE#261] / [Intel XE#688])
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@xe_evict@evict-threads-small.html

  * igt@xe_exec_basic@multigpu-once-null-defer-mmap:
    - shard-adlp:         NOTRUN -> [SKIP][54] ([Intel XE#1201] / [Intel XE#1392]) +2 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@xe_exec_basic@multigpu-once-null-defer-mmap.html

  * igt@xe_exec_fault_mode@many-bindexecqueue-userptr-imm:
    - shard-adlp:         NOTRUN -> [SKIP][55] ([Intel XE#1201] / [Intel XE#288]) +6 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-imm.html

  * igt@xe_exec_reset@cat-error:
    - shard-adlp:         [PASS][56] -> [DMESG-WARN][57] ([Intel XE#1214] / [Intel XE#358])
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-8/igt@xe_exec_reset@cat-error.html
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@xe_exec_reset@cat-error.html

  * igt@xe_exec_threads@threads-rebind-err:
    - shard-adlp:         [PASS][58] -> [INCOMPLETE][59] ([Intel XE#1169] / [Intel XE#1195])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-9/igt@xe_exec_threads@threads-rebind-err.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-9/igt@xe_exec_threads@threads-rebind-err.html

  * igt@xe_pm@s4-basic-exec:
    - shard-adlp:         [PASS][60] -> [ABORT][61] ([Intel XE#1358] / [Intel XE#1794])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-1/igt@xe_pm@s4-basic-exec.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-9/igt@xe_pm@s4-basic-exec.html

  * igt@xe_pm@s4-vm-bind-prefetch:
    - shard-adlp:         NOTRUN -> [DMESG-WARN][62] ([Intel XE#1214])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@xe_pm@s4-vm-bind-prefetch.html

  * igt@xe_pm@s4-vm-bind-unbind-all:
    - shard-adlp:         [PASS][63] -> [DMESG-WARN][64] ([Intel XE#1214]) +2 other tests dmesg-warn
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-8/igt@xe_pm@s4-vm-bind-unbind-all.html
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@xe_pm@s4-vm-bind-unbind-all.html

  
#### Possible fixes ####

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-adlp:         [DMESG-FAIL][65] ([Intel XE#324]) -> [PASS][66]
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-1/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-9/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
    - shard-dg2-set2:     [DMESG-WARN][67] ([Intel XE#1214] / [Intel XE#282]) -> [PASS][68] +7 other tests pass
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-464/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-433/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy:
    - shard-dg2-set2:     [DMESG-WARN][69] ([Intel XE#1214] / [Intel XE#282] / [Intel XE#910]) -> [PASS][70]
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-433/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-434/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-x:
    - shard-adlp:         [FAIL][71] ([Intel XE#1874]) -> [PASS][72]
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-2/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-x.html
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-y-to-x.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [FAIL][73] ([Intel XE#361]) -> [PASS][74]
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-434/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-464/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html

  * igt@kms_vblank@ts-continuation-dpms-suspend:
    - {shard-lnl}:        [DMESG-WARN][75] -> [PASS][76] +1 other test pass
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-lnl-2/igt@kms_vblank@ts-continuation-dpms-suspend.html
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-lnl-2/igt@kms_vblank@ts-continuation-dpms-suspend.html

  * igt@xe_evict@evict-beng-cm-threads-small:
    - shard-dg2-set2:     [FAIL][77] ([Intel XE#1069]) -> [PASS][78]
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-434/igt@xe_evict@evict-beng-cm-threads-small.html
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-434/igt@xe_evict@evict-beng-cm-threads-small.html

  * igt@xe_evict@evict-beng-large-multi-vm-cm:
    - shard-dg2-set2:     [FAIL][79] ([Intel XE#1600]) -> [PASS][80]
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-433/igt@xe_evict@evict-beng-large-multi-vm-cm.html
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-434/igt@xe_evict@evict-beng-large-multi-vm-cm.html

  * igt@xe_exec_reset@gt-reset-stress:
    - shard-dg2-set2:     [DMESG-WARN][81] ([Intel XE#1214] / [Intel XE#2046]) -> [PASS][82]
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-434/igt@xe_exec_reset@gt-reset-stress.html
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-434/igt@xe_exec_reset@gt-reset-stress.html

  * igt@xe_spin_batch@spin-fixed-duration-with-preempter:
    - {shard-lnl}:        [FAIL][83] -> [PASS][84]
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-lnl-2/igt@xe_spin_batch@spin-fixed-duration-with-preempter.html
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-lnl-2/igt@xe_spin_batch@spin-fixed-duration-with-preempter.html

  
#### Warnings ####

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - shard-adlp:         [DMESG-FAIL][85] ([Intel XE#324]) -> [FAIL][86] ([Intel XE#1231])
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-1/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-8/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-adlp:         [FAIL][87] ([Intel XE#1242]) -> [FAIL][88] ([Intel XE#1231])
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-6/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-4/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-adlp:         [FAIL][89] ([Intel XE#1231]) -> [DMESG-FAIL][90] ([Intel XE#324])
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-1/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-2/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_plane@plane-panning-bottom-right-suspend:
    - shard-adlp:         [DMESG-WARN][91] ([Intel XE#1191] / [Intel XE#1214]) -> [DMESG-FAIL][92] ([Intel XE#1191] / [Intel XE#2034]) +1 other test dmesg-fail
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-2/igt@kms_plane@plane-panning-bottom-right-suspend.html
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-6/igt@kms_plane@plane-panning-bottom-right-suspend.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b:
    - shard-adlp:         [DMESG-WARN][93] ([Intel XE#1214]) -> [DMESG-FAIL][94] ([Intel XE#1191])
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-2/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-6/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b.html

  * igt@xe_wedged@wedged-at-any-timeout:
    - shard-dg2-set2:     [DMESG-WARN][95] ([Intel XE#1214] / [Intel XE#1760]) -> [DMESG-FAIL][96] ([Intel XE#1760])
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-dg2-466/igt@xe_wedged@wedged-at-any-timeout.html
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-dg2-466/igt@xe_wedged@wedged-at-any-timeout.html
    - shard-adlp:         [DMESG-WARN][97] ([Intel XE#1214] / [Intel XE#1760]) -> [DMESG-FAIL][98] ([Intel XE#1760])
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a/shard-adlp-1/igt@xe_wedged@wedged-at-any-timeout.html
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v1/shard-adlp-1/igt@xe_wedged@wedged-at-any-timeout.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#1033]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1033
  [Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
  [Intel XE#1069]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1069
  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1169]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1169
  [Intel XE#1191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1191
  [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
  [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
  [Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201
  [Intel XE#1214]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1214
  [Intel XE#1231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1231
  [Intel XE#1242]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1242
  [Intel XE#1252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1252
  [Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1399
  [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#1437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1437
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1465]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1465
  [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
  [Intel XE#1600]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1600
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1760
  [Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
  [Intel XE#1861]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1861
  [Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
  [Intel XE#1941]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1941
  [Intel XE#2034]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2034
  [Intel XE#2046]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2046
  [Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
  [Intel XE#282]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/282
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#305]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/305
  [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#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324
  [Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
  [Intel XE#358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/358
  [Intel XE#361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/361
  [Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
  [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#392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/392
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#488]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/488
  [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
  [Intel XE#771]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/771
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#827]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/827
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
  [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
  [Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899
  [Intel XE#910]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/910
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * Linux: xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a -> xe-pw-134917v1

  IGT_7889: 9dca15da37f2a385b04427eb39cd460224d09c25 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1474-ec9bb8956cadc4f9d2a0e81713d921c52d527c1a: ec9bb8956cadc4f9d2a0e81713d921c52d527c1a
  xe-pw-134917v1: 134917v1

== Logs ==

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

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

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

* ✓ CI.FULL: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
  2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
                   ` (57 preceding siblings ...)
  2024-06-15 13:59 ` ✗ CI.FULL: failure for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs Patchwork
@ 2024-06-18  8:53 ` Patchwork
  58 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-06-18  8:53 UTC (permalink / raw)
  To: Oak Zeng; +Cc: intel-xe

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

== Series Details ==

Series: series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2)
URL   : https://patchwork.freedesktop.org/series/134917/
State : success

== Summary ==

CI Bug Log - changes from xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5_full -> xe-pw-134917v2_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-134917v2_full:

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@kms_dirtyfb@psr-dirtyfb-ioctl:
    - {shard-lnl}:        [PASS][1] -> [FAIL][2] +1 other test fail
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-lnl-2/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-lnl-1/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html

  * igt@kms_psr@fbc-psr2-suspend:
    - {shard-lnl}:        NOTRUN -> [DMESG-WARN][3] +1 other test dmesg-warn
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-lnl-3/igt@kms_psr@fbc-psr2-suspend.html

  * igt@xe_vm@mmap-style-bind-either-side-partial-split-page-hammer:
    - {shard-lnl}:        [PASS][4] -> [DMESG-WARN][5]
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-lnl-2/igt@xe_vm@mmap-style-bind-either-side-partial-split-page-hammer.html
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-lnl-4/igt@xe_vm@mmap-style-bind-either-side-partial-split-page-hammer.html

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

  Here are the changes found in xe-pw-134917v2_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_async_flips@alternate-sync-async-flip@pipe-c-hdmi-a-1:
    - shard-adlp:         [PASS][6] -> [DMESG-WARN][7] ([Intel XE#1214] / [Intel XE#324]) +1 other test dmesg-warn
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-8/igt@kms_async_flips@alternate-sync-async-flip@pipe-c-hdmi-a-1.html
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-2/igt@kms_async_flips@alternate-sync-async-flip@pipe-c-hdmi-a-1.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-270:
    - shard-dg2-set2:     NOTRUN -> [SKIP][8] ([Intel XE#1201] / [Intel XE#316])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-90:
    - shard-dg2-set2:     NOTRUN -> [SKIP][9] ([Intel XE#316])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-addfb:
    - shard-dg2-set2:     NOTRUN -> [SKIP][10] ([Intel XE#1201] / [Intel XE#619])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@kms_big_fb@y-tiled-addfb.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - shard-dg2-set2:     NOTRUN -> [SKIP][11] ([Intel XE#1124]) +3 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip.html

  * igt@kms_bw@linear-tiling-2-displays-3840x2160p:
    - shard-dg2-set2:     NOTRUN -> [SKIP][12] ([Intel XE#1201] / [Intel XE#367])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@kms_bw@linear-tiling-2-displays-3840x2160p.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc@pipe-b-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][13] ([Intel XE#787]) +13 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc@pipe-b-dp-4.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][14] ([Intel XE#455] / [Intel XE#787]) +3 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][15] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) +3 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-c-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][16] ([Intel XE#1201] / [Intel XE#787]) +13 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@kms_ccs@ccs-on-another-bo-4-tiled-mtl-rc-ccs@pipe-c-dp-4.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs:
    - shard-dg2-set2:     NOTRUN -> [SKIP][17] ([Intel XE#1252]) +1 other test skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_ccs@crc-primary-rotation-180-4-tiled-xe2-ccs.html

  * igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate:
    - shard-dg2-set2:     NOTRUN -> [SKIP][18] ([Intel XE#373]) +2 other tests skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_chamelium_hpd@hdmi-hpd-after-hibernate.html

  * igt@kms_content_protection@dp-mst-type-1:
    - shard-dg2-set2:     NOTRUN -> [SKIP][19] ([Intel XE#307])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_content_protection@dp-mst-type-1.html

  * igt@kms_cursor_crc@cursor-rapid-movement-32x10:
    - shard-dg2-set2:     NOTRUN -> [SKIP][20] ([Intel XE#455])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_cursor_crc@cursor-rapid-movement-32x10.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-toggle:
    - shard-dg2-set2:     NOTRUN -> [DMESG-WARN][21] ([Intel XE#1214] / [Intel XE#282])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@kms_cursor_legacy@cursorb-vs-flipa-toggle.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-dg2-set2:     NOTRUN -> [SKIP][22] ([Intel XE#323])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_cursor_legacy@single-bo@pipe-b:
    - shard-dg2-set2:     [PASS][23] -> [DMESG-WARN][24] ([Intel XE#1214] / [Intel XE#282]) +7 other tests dmesg-warn
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-464/igt@kms_cursor_legacy@single-bo@pipe-b.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-463/igt@kms_cursor_legacy@single-bo@pipe-b.html

  * igt@kms_feature_discovery@psr1:
    - shard-dg2-set2:     NOTRUN -> [SKIP][25] ([Intel XE#1135])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_feature_discovery@psr1.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-blt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][26] ([Intel XE#651]) +7 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-fullscreen:
    - shard-dg2-set2:     NOTRUN -> [SKIP][27] ([Intel XE#1201] / [Intel XE#651]) +3 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen:
    - shard-dg2-set2:     NOTRUN -> [SKIP][28] ([Intel XE#1201] / [Intel XE#653])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render:
    - shard-dg2-set2:     NOTRUN -> [SKIP][29] ([Intel XE#653]) +5 other tests skip
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-render.html

  * igt@kms_panel_fitting@legacy:
    - shard-dg2-set2:     NOTRUN -> [SKIP][30] ([Intel XE#1201] / [Intel XE#455])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@kms_panel_fitting@legacy.html

  * igt@kms_plane_lowres@tiling-y@pipe-d-hdmi-a-1:
    - shard-adlp:         [PASS][31] -> [FAIL][32] ([Intel XE#1874]) +1 other test fail
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-1/igt@kms_plane_lowres@tiling-y@pipe-d-hdmi-a-1.html
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-1/igt@kms_plane_lowres@tiling-y@pipe-d-hdmi-a-1.html

  * igt@kms_pm_backlight@fade-with-dpms:
    - shard-dg2-set2:     NOTRUN -> [SKIP][33] ([Intel XE#870])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_pm_backlight@fade-with-dpms.html

  * igt@kms_psr@fbc-psr2-primary-render:
    - shard-dg2-set2:     NOTRUN -> [SKIP][34] ([Intel XE#929]) +2 other tests skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_psr@fbc-psr2-primary-render.html

  * igt@kms_rotation_crc@bad-tiling:
    - shard-dg2-set2:     NOTRUN -> [SKIP][35] ([Intel XE#1201] / [Intel XE#327])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@kms_rotation_crc@bad-tiling.html

  * igt@xe_compute_preempt@compute-preempt-many:
    - shard-dg2-set2:     NOTRUN -> [SKIP][36] ([Intel XE#1280] / [Intel XE#455]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_compute_preempt@compute-preempt-many.html

  * igt@xe_evict@evict-beng-cm-threads-large:
    - shard-dg2-set2:     [PASS][37] -> [TIMEOUT][38] ([Intel XE#1473] / [Intel XE#392]) +2 other tests timeout
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@xe_evict@evict-beng-cm-threads-large.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@xe_evict@evict-beng-cm-threads-large.html

  * igt@xe_exec_fault_mode@once-basic:
    - shard-dg2-set2:     NOTRUN -> [SKIP][39] ([Intel XE#1201] / [Intel XE#288]) +3 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@xe_exec_fault_mode@once-basic.html

  * igt@xe_exec_fault_mode@once-bindexecqueue-userptr-invalidate-race-imm:
    - shard-dg2-set2:     NOTRUN -> [SKIP][40] ([Intel XE#288]) +2 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_exec_fault_mode@once-bindexecqueue-userptr-invalidate-race-imm.html

  * igt@xe_exec_queue_property@basic-get-property:
    - shard-adlp:         [PASS][41] -> [DMESG-WARN][42] ([Intel XE#1214]) +1 other test dmesg-warn
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-4/igt@xe_exec_queue_property@basic-get-property.html
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-2/igt@xe_exec_queue_property@basic-get-property.html

  * igt@xe_huc_copy@huc_copy:
    - shard-dg2-set2:     NOTRUN -> [SKIP][43] ([Intel XE#255])
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_huc_copy@huc_copy.html

  * igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit:
    - shard-adlp:         NOTRUN -> [FAIL][44] ([Intel XE#1999]) +1 other test fail
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-4/igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit.html

  * igt@xe_module_load@force-load:
    - shard-dg2-set2:     NOTRUN -> [SKIP][45] ([Intel XE#378])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_module_load@force-load.html

  * igt@xe_query@multigpu-query-cs-cycles:
    - shard-dg2-set2:     NOTRUN -> [SKIP][46] ([Intel XE#1201] / [Intel XE#944])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@xe_query@multigpu-query-cs-cycles.html

  * igt@xe_query@multigpu-query-gt-list:
    - shard-dg2-set2:     NOTRUN -> [SKIP][47] ([Intel XE#944])
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_query@multigpu-query-gt-list.html

  
#### Possible fixes ####

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions:
    - shard-dg2-set2:     [DMESG-WARN][48] ([Intel XE#1214] / [Intel XE#282]) -> [PASS][49] +4 other tests pass
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-464/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions.html
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-433/igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions.html

  * igt@kms_cursor_legacy@torture-bo@pipe-a:
    - {shard-lnl}:        [DMESG-WARN][50] ([Intel XE#877]) -> [PASS][51] +1 other test pass
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-lnl-2/igt@kms_cursor_legacy@torture-bo@pipe-a.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-lnl-2/igt@kms_cursor_legacy@torture-bo@pipe-a.html

  * igt@kms_hdr@bpc-switch-suspend@pipe-a-edp-1:
    - {shard-lnl}:        [DMESG-WARN][52] -> [PASS][53] +1 other test pass
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-lnl-2/igt@kms_hdr@bpc-switch-suspend@pipe-a-edp-1.html
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-lnl-4/igt@kms_hdr@bpc-switch-suspend@pipe-a-edp-1.html

  * igt@kms_hdr@invalid-hdr:
    - shard-dg2-set2:     [SKIP][54] ([Intel XE#1201] / [Intel XE#455]) -> [PASS][55]
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-433/igt@kms_hdr@invalid-hdr.html
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-463/igt@kms_hdr@invalid-hdr.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     [DMESG-WARN][56] ([Intel XE#1214]) -> [PASS][57]
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-464/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-d-hdmi-a-6.html
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-464/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-d-hdmi-a-6.html

  * igt@kms_plane_lowres@tiling-y@pipe-c-hdmi-a-1:
    - shard-adlp:         [FAIL][58] ([Intel XE#1874]) -> [PASS][59]
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-1/igt@kms_plane_lowres@tiling-y@pipe-c-hdmi-a-1.html
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-1/igt@kms_plane_lowres@tiling-y@pipe-c-hdmi-a-1.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-dp-4:
    - shard-dg2-set2:     [FAIL][60] ([Intel XE#361]) -> [PASS][61] +2 other tests pass
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-464/igt@kms_plane_scaling@intel-max-src-size@pipe-a-dp-4.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-464/igt@kms_plane_scaling@intel-max-src-size@pipe-a-dp-4.html

  * igt@kms_pm_rpm@drm-resources-equal:
    - shard-adlp:         [SKIP][62] ([Intel XE#1201] / [Intel XE#1211]) -> [PASS][63]
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-8/igt@kms_pm_rpm@drm-resources-equal.html
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-4/igt@kms_pm_rpm@drm-resources-equal.html

  * igt@kms_universal_plane@cursor-fb-leak:
    - shard-adlp:         [FAIL][64] ([Intel XE#771] / [Intel XE#899]) -> [PASS][65]
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-2/igt@kms_universal_plane@cursor-fb-leak.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-9/igt@kms_universal_plane@cursor-fb-leak.html
    - shard-dg2-set2:     [FAIL][66] ([Intel XE#771] / [Intel XE#899]) -> [PASS][67]
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@kms_universal_plane@cursor-fb-leak.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-435/igt@kms_universal_plane@cursor-fb-leak.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-4:
    - shard-dg2-set2:     [FAIL][68] ([Intel XE#899]) -> [PASS][69]
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-4.html
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-435/igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-4.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1:
    - shard-adlp:         [FAIL][70] ([Intel XE#899]) -> [PASS][71] +1 other test pass
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-2/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-9/igt@kms_universal_plane@cursor-fb-leak@pipe-b-hdmi-a-1.html

  * igt@kms_vblank@ts-continuation-dpms-suspend:
    - shard-dg2-set2:     [DMESG-WARN][72] ([Intel XE#1214] / [Intel XE#1551]) -> [PASS][73] +1 other test pass
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-464/igt@kms_vblank@ts-continuation-dpms-suspend.html
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_vblank@ts-continuation-dpms-suspend.html

  * igt@xe_exec_reset@gt-reset-stress:
    - shard-adlp:         [DMESG-WARN][74] ([Intel XE#1214]) -> [PASS][75] +6 other tests pass
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-6/igt@xe_exec_reset@gt-reset-stress.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-8/igt@xe_exec_reset@gt-reset-stress.html

  * igt@xe_pm@s2idle-multiple-execs:
    - shard-dg2-set2:     [INCOMPLETE][76] ([Intel XE#1195] / [Intel XE#1358]) -> [PASS][77]
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-464/igt@xe_pm@s2idle-multiple-execs.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_pm@s2idle-multiple-execs.html

  * igt@xe_vm@large-userptr-split-misaligned-binds-2147483648:
    - shard-dg2-set2:     [INCOMPLETE][78] ([Intel XE#1195]) -> [PASS][79]
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@xe_vm@large-userptr-split-misaligned-binds-2147483648.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-466/igt@xe_vm@large-userptr-split-misaligned-binds-2147483648.html

  
#### Warnings ####

  * igt@kms_async_flips@invalid-async-flip:
    - shard-dg2-set2:     [SKIP][80] ([Intel XE#1201] / [Intel XE#873]) -> [SKIP][81] ([Intel XE#873])
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-433/igt@kms_async_flips@invalid-async-flip.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_async_flips@invalid-async-flip.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-adlp:         [DMESG-FAIL][82] ([Intel XE#324]) -> [FAIL][83] ([Intel XE#1204])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-1/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-1/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-0:
    - shard-dg2-set2:     [SKIP][84] ([Intel XE#1124] / [Intel XE#1201]) -> [SKIP][85] ([Intel XE#1124]) +4 other tests skip
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-dg2-set2:     [SKIP][86] ([Intel XE#1201] / [Intel XE#607]) -> [SKIP][87] ([Intel XE#607])
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-433/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_bw@linear-tiling-3-displays-2560x1440p:
    - shard-dg2-set2:     [SKIP][88] ([Intel XE#1201] / [Intel XE#367]) -> [SKIP][89] ([Intel XE#367]) +1 other test skip
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@kms_bw@linear-tiling-3-displays-2560x1440p.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_bw@linear-tiling-3-displays-2560x1440p.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4:
    - shard-dg2-set2:     [SKIP][90] ([Intel XE#1201] / [Intel XE#455] / [Intel XE#787]) -> [SKIP][91] ([Intel XE#455] / [Intel XE#787]) +9 other tests skip
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-433/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4.html

  * igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-6:
    - shard-dg2-set2:     [SKIP][92] ([Intel XE#1201] / [Intel XE#787]) -> [SKIP][93] ([Intel XE#787]) +34 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-433/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-6.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-d-hdmi-a-6.html

  * igt@kms_chamelium_color@ctm-green-to-red:
    - shard-dg2-set2:     [SKIP][94] ([Intel XE#1201] / [Intel XE#306]) -> [SKIP][95] ([Intel XE#306])
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@kms_chamelium_color@ctm-green-to-red.html
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_chamelium_color@ctm-green-to-red.html

  * igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats:
    - shard-dg2-set2:     [SKIP][96] ([Intel XE#1201] / [Intel XE#373]) -> [SKIP][97] ([Intel XE#373]) +4 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-433/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html

  * igt@kms_flip@flip-vs-suspend@b-hdmi-a1:
    - shard-adlp:         [DMESG-WARN][98] ([Intel XE#1191] / [Intel XE#1214]) -> [DMESG-WARN][99] ([Intel XE#1214]) +2 other tests dmesg-warn
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-4/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-2/igt@kms_flip@flip-vs-suspend@b-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc:
    - shard-dg2-set2:     [SKIP][100] ([Intel XE#1201] / [Intel XE#651]) -> [SKIP][101] ([Intel XE#651]) +14 other tests skip
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-433/igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc.html
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-rgb101010-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-tiling-4:
    - shard-dg2-set2:     [SKIP][102] ([Intel XE#1201] / [Intel XE#653]) -> [SKIP][103] ([Intel XE#653]) +16 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-tiling-4.html

  * igt@kms_getfb@getfb-reject-ccs:
    - shard-dg2-set2:     [SKIP][104] ([Intel XE#1201] / [Intel XE#605]) -> [SKIP][105] ([Intel XE#605])
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@kms_getfb@getfb-reject-ccs.html
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_getfb@getfb-reject-ccs.html

  * igt@kms_psr@fbc-psr2-cursor-plane-onoff:
    - shard-dg2-set2:     [SKIP][106] ([Intel XE#1201] / [Intel XE#929]) -> [SKIP][107] ([Intel XE#929]) +10 other tests skip
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-dg2-set2:     [SKIP][108] ([Intel XE#1149] / [Intel XE#1201]) -> [SKIP][109] ([Intel XE#1149])
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-433/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_vrr@seamless-rr-switch-virtual:
    - shard-dg2-set2:     [SKIP][110] ([Intel XE#1201] / [Intel XE#455]) -> [SKIP][111] ([Intel XE#455]) +8 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@kms_vrr@seamless-rr-switch-virtual.html
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@kms_vrr@seamless-rr-switch-virtual.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each:
    - shard-dg2-set2:     [SKIP][112] ([Intel XE#1091] / [Intel XE#1201]) -> [SKIP][113] ([Intel XE#1091])
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-433/igt@sriov_basic@enable-vfs-bind-unbind-each.html
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@sriov_basic@enable-vfs-bind-unbind-each.html

  * igt@xe_copy_basic@mem-set-linear-0x369:
    - shard-dg2-set2:     [SKIP][114] ([Intel XE#1126] / [Intel XE#1201]) -> [SKIP][115] ([Intel XE#1126])
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@xe_copy_basic@mem-set-linear-0x369.html
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_copy_basic@mem-set-linear-0x369.html

  * igt@xe_evict@evict-threads-large:
    - shard-dg2-set2:     [FAIL][116] ([Intel XE#1000]) -> [TIMEOUT][117] ([Intel XE#1473] / [Intel XE#392])
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-466/igt@xe_evict@evict-threads-large.html
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-435/igt@xe_evict@evict-threads-large.html

  * igt@xe_exec_fault_mode@twice-userptr-rebind-imm:
    - shard-dg2-set2:     [SKIP][118] ([Intel XE#1201] / [Intel XE#288]) -> [SKIP][119] ([Intel XE#288]) +14 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_exec_fault_mode@twice-userptr-rebind-imm.html

  * igt@xe_live_ktest@xe_mocs:
    - shard-adlp:         [SKIP][120] ([Intel XE#1192] / [Intel XE#1201]) -> [FAIL][121] ([Intel XE#1999])
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-4/igt@xe_live_ktest@xe_mocs.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-4/igt@xe_live_ktest@xe_mocs.html

  * igt@xe_pat@pat-index-xe2:
    - shard-dg2-set2:     [SKIP][122] ([Intel XE#1201] / [Intel XE#977]) -> [SKIP][123] ([Intel XE#977])
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@xe_pat@pat-index-xe2.html
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_pat@pat-index-xe2.html

  * igt@xe_pat@pat-index-xehpc:
    - shard-dg2-set2:     [SKIP][124] ([Intel XE#1201] / [Intel XE#979]) -> [SKIP][125] ([Intel XE#979])
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-433/igt@xe_pat@pat-index-xehpc.html
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pm@s3-multiple-execs:
    - shard-dg2-set2:     [DMESG-WARN][126] ([Intel XE#1214] / [Intel XE#1551] / [Intel XE#569]) -> [DMESG-WARN][127] ([Intel XE#1551] / [Intel XE#569])
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@xe_pm@s3-multiple-execs.html
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_pm@s3-multiple-execs.html

  * igt@xe_pm@s4-basic-exec:
    - shard-adlp:         [ABORT][128] ([Intel XE#1358] / [Intel XE#1794]) -> [DMESG-WARN][129] ([Intel XE#1214])
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-adlp-9/igt@xe_pm@s4-basic-exec.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-adlp-6/igt@xe_pm@s4-basic-exec.html

  * igt@xe_query@multigpu-query-mem-usage:
    - shard-dg2-set2:     [SKIP][130] ([Intel XE#1201] / [Intel XE#944]) -> [SKIP][131] ([Intel XE#944])
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5/shard-dg2-434/igt@xe_query@multigpu-query-mem-usage.html
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-134917v2/shard-dg2-432/igt@xe_query@multigpu-query-mem-usage.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#1000]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1000
  [Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
  [Intel XE#1062]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1062
  [Intel XE#1069]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1069
  [Intel XE#1091]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1091
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1126
  [Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
  [Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
  [Intel XE#1131]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1131
  [Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
  [Intel XE#1137]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1137
  [Intel XE#1149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1149
  [Intel XE#1191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1191
  [Intel XE#1192]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1192
  [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
  [Intel XE#1201]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1201
  [Intel XE#1204]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1204
  [Intel XE#1211]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1211
  [Intel XE#1214]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1214
  [Intel XE#1252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1252
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1358
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
  [Intel XE#1399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1399
  [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#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
  [Intel XE#1413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1413
  [Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
  [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#1428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1428
  [Intel XE#1430]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1430
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1437
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1447]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1447
  [Intel XE#1450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1450
  [Intel XE#1466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1466
  [Intel XE#1467]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1467
  [Intel XE#1469]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1469
  [Intel XE#1470]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1470
  [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
  [Intel XE#1477]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1477
  [Intel XE#1512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1512
  [Intel XE#1551]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1551
  [Intel XE#1725]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1725
  [Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
  [Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
  [Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
  [Intel XE#1999]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1999
  [Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029
  [Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
  [Intel XE#2097]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2097
  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#282]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/282
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#294]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/294
  [Intel XE#305]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/305
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#307]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/307
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/314
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324
  [Intel XE#327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/327
  [Intel XE#330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/330
  [Intel XE#346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/346
  [Intel XE#352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/352
  [Intel XE#356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/356
  [Intel XE#361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/361
  [Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
  [Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/374
  [Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
  [Intel XE#379]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/379
  [Intel XE#392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/392
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#498]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/498
  [Intel XE#560]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/560
  [Intel XE#569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/569
  [Intel XE#579]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/579
  [Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
  [Intel XE#599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/599
  [Intel XE#605]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/605
  [Intel XE#607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/607
  [Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#664]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/664
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#702]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/702
  [Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
  [Intel XE#771]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/771
  [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#873]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/873
  [Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
  [Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979


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

  * Linux: xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5 -> xe-pw-134917v2

  IGT_7889: 9dca15da37f2a385b04427eb39cd460224d09c25 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-1475-e60c2c92798375b80da09295f5d3cc7db476a9c5: e60c2c92798375b80da09295f5d3cc7db476a9c5
  xe-pw-134917v2: 134917v2

== Logs ==

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

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

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

end of thread, other threads:[~2024-06-18  8:53 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-14 21:57 [CI 01/44] mm/hmm: let users to tag specific PFNs Oak Zeng
2024-06-14 21:57 ` [CI 02/44] dma-mapping: provide an interface to allocate IOVA Oak Zeng
2024-06-14 21:57 ` [CI 03/44] dma-mapping: provide callbacks to link/unlink pages to specific IOVA Oak Zeng
2024-06-14 21:57 ` [CI 04/44] iommu/dma: Provide an interface to allow preallocate IOVA Oak Zeng
2024-06-14 21:57 ` [CI 05/44] iommu/dma: Prepare map/unmap page functions to receive IOVA Oak Zeng
2024-06-14 21:57 ` [CI 06/44] iommu/dma: Implement link/unlink page callbacks Oak Zeng
2024-06-14 21:57 ` [CI 07/44] mm: Add an empty implementation of zone_device_page_init Oak Zeng
2024-06-14 21:57 ` [CI 08/44] drm: Move GPUVA_START/LAST to drm_gpuvm.h Oak Zeng
2024-06-14 21:57 ` [CI 09/44] drm/svm: Mark drm_gpuvm to participate SVM Oak Zeng
2024-06-14 21:57 ` [CI 10/44] drm/svm: introduce drm_mem_region concept Oak Zeng
2024-06-14 21:57 ` [CI 11/44] drm/svm: introduce hmmptr and helper functions Oak Zeng
2024-06-14 21:57 ` [CI 12/44] drm/svm: Introduce helper to remap drm memory region Oak Zeng
2024-06-14 21:57 ` [CI 13/44] drm/svm: handle CPU page fault Oak Zeng
2024-06-14 21:57 ` [CI 14/44] drm/svm: Migrate a range of hmmptr to vram Oak Zeng
2024-06-14 21:57 ` [CI 15/44] drm/svm: Add DRM SVM documentation Oak Zeng
2024-06-14 21:57 ` [CI 16/44] drm/svm: Introduce DRM_SVM kernel config Oak Zeng
2024-06-14 21:57 ` [CI 17/44] drm/xe: s/xe_tile_migrate_engine/xe_tile_migrate_exec_queue Oak Zeng
2024-06-14 21:57 ` [CI 18/44] drm/xe: Add xe_vm_pgtable_update_op to xe_vma_ops Oak Zeng
2024-06-14 21:57 ` [CI 19/44] drm/xe: Convert multiple bind ops into single job Oak Zeng
2024-06-14 21:57 ` [CI 20/44] drm/xe: Update VM trace events Oak Zeng
2024-06-14 21:57 ` [CI 21/44] drm/xe: Update PT layer with better error handling Oak Zeng
2024-06-14 21:57 ` [CI 22/44] drm/xe: Retry BO allocation Oak Zeng
2024-06-14 21:57 ` [CI 23/44] drm/xe/uapi: Add DRM_XE_VM_BIND_FLAG_SYSTEM_ALLOCATOR flag Oak Zeng
2024-06-14 21:57 ` [CI 24/44] drm/xe: Add a helper to calculate userptr end address Oak Zeng
2024-06-14 21:57 ` [CI 25/44] drm/xe: Add dma_addr res cursor Oak Zeng
2024-06-14 21:57 ` [CI 26/44] drm/xe: Use drm_mem_region for xe Oak Zeng
2024-06-14 21:58 ` [CI 27/44] drm/xe: use drm_hmmptr in xe Oak Zeng
2024-06-14 21:58 ` [CI 28/44] drm/xe: Moving to range based vma invalidation Oak Zeng
2024-06-14 21:58 ` [CI 29/44] drm/xe: Support range based page table update Oak Zeng
2024-06-14 21:58 ` [CI 30/44] drm/xe/uapi: Add DRM_XE_VM_CREATE_FLAG_PARTICIPATE_SVM flag Oak Zeng
2024-06-14 21:58 ` [CI 31/44] drm/xe/svm: Create userptr if page fault occurs on system_allocator VMA Oak Zeng
2024-06-14 21:58 ` [CI 32/44] drm/xe/svm: Add faulted userptr VMA garbage collector Oak Zeng
2024-06-14 21:58 ` [CI 33/44] drm/xe: Introduce helper to get tile from memory region Oak Zeng
2024-06-14 21:58 ` [CI 34/44] drm/xe/svm: implement functions to allocate and free device memory Oak Zeng
2024-06-14 21:58 ` [CI 35/44] drm/xe/svm: Get drm device from drm memory region Oak Zeng
2024-06-14 21:58 ` [CI 36/44] drm/xe/svm: Get page map owner of a " Oak Zeng
2024-06-14 21:58 ` [CI 37/44] drm/xe/svm: Add migrate layer functions for SVM support Oak Zeng
2024-06-14 21:58 ` [CI 38/44] drm/xe/svm: introduce svm migration function Oak Zeng
2024-06-14 21:58 ` [CI 39/44] drm/xe/svm: Register xe memory region to drm layer Oak Zeng
2024-06-14 21:58 ` [CI 40/44] drm/xe/svm: Introduce DRM_XE_SVM kernel config Oak Zeng
2024-06-14 21:58 ` [CI 41/44] drm/xe/svm: Migration from sram to vram for system allocator Oak Zeng
2024-06-14 21:58 ` [CI 42/44] drm/xe/svm: Determine a vma is backed by device memory Oak Zeng
2024-06-14 21:58 ` [CI 43/44] drm/xe/svm: Introduce hmm_pfn array based resource cursor Oak Zeng
2024-06-14 21:58 ` [CI 44/44] drm/xe: Enable system allocator uAPI Oak Zeng
2024-06-14 22:41 ` ✓ CI.Patch_applied: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs Patchwork
2024-06-14 22:42 ` ✗ CI.checkpatch: warning " Patchwork
2024-06-14 22:43 ` ✓ CI.KUnit: success " Patchwork
2024-06-14 22:55 ` ✓ CI.Build: " Patchwork
2024-06-14 22:57 ` ✗ CI.Hooks: failure " Patchwork
2024-06-14 22:58 ` ✗ CI.checksparse: warning " Patchwork
2024-06-14 23:21 ` ✓ CI.BAT: success " Patchwork
2024-06-15  2:56 ` ✓ CI.Patch_applied: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2) Patchwork
2024-06-15  2:57 ` ✗ CI.checkpatch: warning " Patchwork
2024-06-15  2:58 ` ✓ CI.KUnit: success " Patchwork
2024-06-15  3:10 ` ✓ CI.Build: " Patchwork
2024-06-15  3:12 ` ✗ CI.Hooks: failure " Patchwork
2024-06-15  3:14 ` ✗ CI.checksparse: warning " Patchwork
2024-06-15  3:36 ` ✓ CI.BAT: success " Patchwork
2024-06-15 13:59 ` ✗ CI.FULL: failure for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs Patchwork
2024-06-18  8:53 ` ✓ CI.FULL: success for series starting with [CI,01/44] mm/hmm: let users to tag specific PFNs (rev2) Patchwork

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