All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
@ 2023-11-03 15:32 Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 02/18] drm/gpuvm: don't always WARN in drm_gpuvm_check_overflow() Thomas Hellström
                   ` (23 more replies)
  0 siblings, 24 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

Use drm_WARN() and drm_WARN_ON() variants to indicate drivers the
context the failing VM resides in.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
---
 drivers/gpu/drm/drm_gpuvm.c            | 32 ++++++++++++++------------
 drivers/gpu/drm/nouveau/nouveau_uvmm.c |  3 ++-
 include/drm/drm_gpuvm.h                |  7 ++++++
 3 files changed, 26 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index 02ce6baacdad..b378554b81ac 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -614,12 +614,12 @@ static int __drm_gpuva_insert(struct drm_gpuvm *gpuvm,
 static void __drm_gpuva_remove(struct drm_gpuva *va);
 
 static bool
-drm_gpuvm_check_overflow(u64 addr, u64 range)
+drm_gpuvm_check_overflow(struct drm_gpuvm *gpuvm, u64 addr, u64 range)
 {
 	u64 end;
 
-	return WARN(check_add_overflow(addr, range, &end),
-		    "GPUVA address limited to %zu bytes.\n", sizeof(end));
+	return drm_WARN(gpuvm->drm, check_add_overflow(addr, range, &end),
+			"GPUVA address limited to %zu bytes.\n", sizeof(end));
 }
 
 static bool
@@ -647,7 +647,7 @@ static bool
 drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm,
 		      u64 addr, u64 range)
 {
-	return !drm_gpuvm_check_overflow(addr, range) &&
+	return !drm_gpuvm_check_overflow(gpuvm, addr, range) &&
 	       drm_gpuvm_in_mm_range(gpuvm, addr, range) &&
 	       !drm_gpuvm_in_kernel_node(gpuvm, addr, range);
 }
@@ -656,6 +656,7 @@ drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm,
  * drm_gpuvm_init() - initialize a &drm_gpuvm
  * @gpuvm: pointer to the &drm_gpuvm to initialize
  * @name: the name of the GPU VA space
+ * @drm: the &drm_device this VM resides in
  * @start_offset: the start offset of the GPU VA space
  * @range: the size of the GPU VA space
  * @reserve_offset: the start of the kernel reserved GPU VA area
@@ -668,8 +669,8 @@ drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm,
  * &name is expected to be managed by the surrounding driver structures.
  */
 void
-drm_gpuvm_init(struct drm_gpuvm *gpuvm,
-	       const char *name,
+drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
+	       struct drm_device *drm,
 	       u64 start_offset, u64 range,
 	       u64 reserve_offset, u64 reserve_range,
 	       const struct drm_gpuvm_ops *ops)
@@ -677,20 +678,20 @@ drm_gpuvm_init(struct drm_gpuvm *gpuvm,
 	gpuvm->rb.tree = RB_ROOT_CACHED;
 	INIT_LIST_HEAD(&gpuvm->rb.list);
 
-	drm_gpuvm_check_overflow(start_offset, range);
-	gpuvm->mm_start = start_offset;
-	gpuvm->mm_range = range;
-
 	gpuvm->name = name ? name : "unknown";
 	gpuvm->ops = ops;
+	gpuvm->drm = drm;
 
-	memset(&gpuvm->kernel_alloc_node, 0, sizeof(struct drm_gpuva));
+	drm_gpuvm_check_overflow(gpuvm, start_offset, range);
+	gpuvm->mm_start = start_offset;
+	gpuvm->mm_range = range;
 
+	memset(&gpuvm->kernel_alloc_node, 0, sizeof(struct drm_gpuva));
 	if (reserve_range) {
 		gpuvm->kernel_alloc_node.va.addr = reserve_offset;
 		gpuvm->kernel_alloc_node.va.range = reserve_range;
 
-		if (likely(!drm_gpuvm_check_overflow(reserve_offset,
+		if (likely(!drm_gpuvm_check_overflow(gpuvm, reserve_offset,
 						     reserve_range)))
 			__drm_gpuva_insert(gpuvm, &gpuvm->kernel_alloc_node);
 	}
@@ -712,8 +713,8 @@ drm_gpuvm_destroy(struct drm_gpuvm *gpuvm)
 	if (gpuvm->kernel_alloc_node.va.range)
 		__drm_gpuva_remove(&gpuvm->kernel_alloc_node);
 
-	WARN(!RB_EMPTY_ROOT(&gpuvm->rb.tree.rb_root),
-	     "GPUVA tree is not empty, potentially leaking memory.");
+	drm_WARN(gpuvm->drm, !RB_EMPTY_ROOT(&gpuvm->rb.tree.rb_root),
+		 "GPUVA tree is not empty, potentially leaking memory.\n");
 }
 EXPORT_SYMBOL_GPL(drm_gpuvm_destroy);
 
@@ -795,7 +796,8 @@ drm_gpuva_remove(struct drm_gpuva *va)
 	struct drm_gpuvm *gpuvm = va->vm;
 
 	if (unlikely(va == &gpuvm->kernel_alloc_node)) {
-		WARN(1, "Can't destroy kernel reserved node.\n");
+		drm_WARN(gpuvm->drm, 1,
+			 "Can't destroy kernel reserved node.\n");
 		return;
 	}
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index 5cf892c50f43..aaf5d28bd587 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -1808,6 +1808,7 @@ int
 nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
 		  u64 kernel_managed_addr, u64 kernel_managed_size)
 {
+	struct drm_device *drm = cli->drm->dev;
 	int ret;
 	u64 kernel_managed_end = kernel_managed_addr + kernel_managed_size;
 
@@ -1836,7 +1837,7 @@ nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
 	uvmm->kernel_managed_addr = kernel_managed_addr;
 	uvmm->kernel_managed_size = kernel_managed_size;
 
-	drm_gpuvm_init(&uvmm->base, cli->name,
+	drm_gpuvm_init(&uvmm->base, cli->name, drm,
 		       NOUVEAU_VA_SPACE_START,
 		       NOUVEAU_VA_SPACE_END,
 		       kernel_managed_addr, kernel_managed_size,
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index 361fea5cb849..baa1a96c038c 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -29,6 +29,7 @@
 #include <linux/rbtree.h>
 #include <linux/types.h>
 
+#include <drm/drm_device.h>
 #include <drm/drm_gem.h>
 
 struct drm_gpuvm;
@@ -201,6 +202,11 @@ struct drm_gpuvm {
 	 */
 	const char *name;
 
+	/**
+	 * @drm: the &drm_device this VM lives in
+	 */
+	struct drm_device *drm;
+
 	/**
 	 * @mm_start: start of the VA space
 	 */
@@ -241,6 +247,7 @@ struct drm_gpuvm {
 };
 
 void drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
+		    struct drm_device *drm,
 		    u64 start_offset, u64 range,
 		    u64 reserve_offset, u64 reserve_range,
 		    const struct drm_gpuvm_ops *ops);
-- 
2.41.0


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

* [Intel-xe] [CI v8 02/18] drm/gpuvm: don't always WARN in drm_gpuvm_check_overflow()
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 03/18] drm/gpuvm: export drm_gpuvm_range_valid() Thomas Hellström
                   ` (22 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

Don't always WARN in drm_gpuvm_check_overflow() and separate it into a
drm_gpuvm_check_overflow() and a dedicated
drm_gpuvm_warn_check_overflow() variant.

This avoids printing warnings due to invalid userspace requests.

Signed-off-by: Danilo Krummrich <dakr@redhat.com>
---
 drivers/gpu/drm/drm_gpuvm.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index b378554b81ac..1cbeb4169f9c 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -614,12 +614,18 @@ static int __drm_gpuva_insert(struct drm_gpuvm *gpuvm,
 static void __drm_gpuva_remove(struct drm_gpuva *va);
 
 static bool
-drm_gpuvm_check_overflow(struct drm_gpuvm *gpuvm, u64 addr, u64 range)
+drm_gpuvm_check_overflow(u64 addr, u64 range)
 {
 	u64 end;
 
-	return drm_WARN(gpuvm->drm, check_add_overflow(addr, range, &end),
-			"GPUVA address limited to %zu bytes.\n", sizeof(end));
+	return check_add_overflow(addr, range, &end);
+}
+
+static bool
+drm_gpuvm_warn_check_overflow(struct drm_gpuvm *gpuvm, u64 addr, u64 range)
+{
+	return drm_WARN(gpuvm->drm, drm_gpuvm_check_overflow(addr, range),
+			"GPUVA address limited to %zu bytes.\n", sizeof(addr));
 }
 
 static bool
@@ -647,7 +653,7 @@ static bool
 drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm,
 		      u64 addr, u64 range)
 {
-	return !drm_gpuvm_check_overflow(gpuvm, addr, range) &&
+	return !drm_gpuvm_check_overflow(addr, range) &&
 	       drm_gpuvm_in_mm_range(gpuvm, addr, range) &&
 	       !drm_gpuvm_in_kernel_node(gpuvm, addr, range);
 }
@@ -682,7 +688,7 @@ drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 	gpuvm->ops = ops;
 	gpuvm->drm = drm;
 
-	drm_gpuvm_check_overflow(gpuvm, start_offset, range);
+	drm_gpuvm_warn_check_overflow(gpuvm, start_offset, range);
 	gpuvm->mm_start = start_offset;
 	gpuvm->mm_range = range;
 
@@ -691,8 +697,8 @@ drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 		gpuvm->kernel_alloc_node.va.addr = reserve_offset;
 		gpuvm->kernel_alloc_node.va.range = reserve_range;
 
-		if (likely(!drm_gpuvm_check_overflow(gpuvm, reserve_offset,
-						     reserve_range)))
+		if (likely(!drm_gpuvm_warn_check_overflow(gpuvm, reserve_offset,
+							  reserve_range)))
 			__drm_gpuva_insert(gpuvm, &gpuvm->kernel_alloc_node);
 	}
 }
-- 
2.41.0


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

* [Intel-xe] [CI v8 03/18] drm/gpuvm: export drm_gpuvm_range_valid()
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 02/18] drm/gpuvm: don't always WARN in drm_gpuvm_check_overflow() Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 04/18] drm/nouveau: make use of drm_gpuvm_range_valid() Thomas Hellström
                   ` (21 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

Drivers may use this function to validate userspace requests in advance,
hence export it.

Signed-off-by: Danilo Krummrich <dakr@redhat.com>
---
 drivers/gpu/drm/drm_gpuvm.c | 14 +++++++++++++-
 include/drm/drm_gpuvm.h     |  1 +
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index 1cbeb4169f9c..dd46d14fd3e6 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -649,7 +649,18 @@ drm_gpuvm_in_kernel_node(struct drm_gpuvm *gpuvm, u64 addr, u64 range)
 	return krange && addr < kend && kstart < end;
 }
 
-static bool
+/**
+ * drm_gpuvm_range_valid() - checks whether the given range is valid for the
+ * given &drm_gpuvm
+ * @gpuvm: the GPUVM to check the range for
+ * @addr: the base address
+ * @range: the range starting from the base address
+ *
+ * Checks whether the range is within the GPUVM's managed boundaries.
+ *
+ * Returns: true for a valid range, false otherwise
+ */
+bool
 drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm,
 		      u64 addr, u64 range)
 {
@@ -657,6 +668,7 @@ drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm,
 	       drm_gpuvm_in_mm_range(gpuvm, addr, range) &&
 	       !drm_gpuvm_in_kernel_node(gpuvm, addr, range);
 }
+EXPORT_SYMBOL_GPL(drm_gpuvm_range_valid);
 
 /**
  * drm_gpuvm_init() - initialize a &drm_gpuvm
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index baa1a96c038c..ed766dd9d96b 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -253,6 +253,7 @@ void drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 		    const struct drm_gpuvm_ops *ops);
 void drm_gpuvm_destroy(struct drm_gpuvm *gpuvm);
 
+bool drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm, u64 addr, u64 range);
 bool drm_gpuvm_interval_empty(struct drm_gpuvm *gpuvm, u64 addr, u64 range);
 
 static inline struct drm_gpuva *
-- 
2.41.0


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

* [Intel-xe] [CI v8 04/18] drm/nouveau: make use of drm_gpuvm_range_valid()
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 02/18] drm/gpuvm: don't always WARN in drm_gpuvm_check_overflow() Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 03/18] drm/gpuvm: export drm_gpuvm_range_valid() Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 05/18] drm/gpuvm: add common dma-resv per struct drm_gpuvm Thomas Hellström
                   ` (20 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

Use drm_gpuvm_range_valid() in order to validate userspace requests.

Signed-off-by: Danilo Krummrich <dakr@redhat.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
---
 drivers/gpu/drm/nouveau/nouveau_uvmm.c | 17 +----------------
 drivers/gpu/drm/nouveau/nouveau_uvmm.h |  3 ---
 2 files changed, 1 insertion(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index aaf5d28bd587..641a911528db 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -929,25 +929,13 @@ nouveau_uvmm_sm_unmap_cleanup(struct nouveau_uvmm *uvmm,
 static int
 nouveau_uvmm_validate_range(struct nouveau_uvmm *uvmm, u64 addr, u64 range)
 {
-	u64 end = addr + range;
-	u64 kernel_managed_end = uvmm->kernel_managed_addr +
-				 uvmm->kernel_managed_size;
-
 	if (addr & ~PAGE_MASK)
 		return -EINVAL;
 
 	if (range & ~PAGE_MASK)
 		return -EINVAL;
 
-	if (end <= addr)
-		return -EINVAL;
-
-	if (addr < NOUVEAU_VA_SPACE_START ||
-	    end > NOUVEAU_VA_SPACE_END)
-		return -EINVAL;
-
-	if (addr < kernel_managed_end &&
-	    end > uvmm->kernel_managed_addr)
+	if (!drm_gpuvm_range_valid(&uvmm->base, addr, range))
 		return -EINVAL;
 
 	return 0;
@@ -1834,9 +1822,6 @@ nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
 		goto out_unlock;
 	}
 
-	uvmm->kernel_managed_addr = kernel_managed_addr;
-	uvmm->kernel_managed_size = kernel_managed_size;
-
 	drm_gpuvm_init(&uvmm->base, cli->name, drm,
 		       NOUVEAU_VA_SPACE_START,
 		       NOUVEAU_VA_SPACE_END,
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.h b/drivers/gpu/drm/nouveau/nouveau_uvmm.h
index a308c59760a5..06a0c36de392 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.h
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.h
@@ -14,9 +14,6 @@ struct nouveau_uvmm {
 	struct mutex mutex;
 	struct dma_resv resv;
 
-	u64 kernel_managed_addr;
-	u64 kernel_managed_size;
-
 	bool disabled;
 };
 
-- 
2.41.0


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

* [Intel-xe] [CI v8 05/18] drm/gpuvm: add common dma-resv per struct drm_gpuvm
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (2 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 04/18] drm/nouveau: make use of drm_gpuvm_range_valid() Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 06/18] drm/xe: Adjust to "drm/gpuvm: add common dma-resv per struct drm_gpuvm" Thomas Hellström
                   ` (19 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

Provide a common dma-resv for GEM objects not being used outside of this
GPU-VM. This is used in a subsequent patch to generalize dma-resv,
external and evicted object handling and GEM validation.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
---
 drivers/gpu/drm/drm_gpuvm.c            | 53 ++++++++++++++++++++++++++
 drivers/gpu/drm/nouveau/nouveau_uvmm.c | 13 ++++++-
 include/drm/drm_gpuvm.h                | 33 ++++++++++++++++
 3 files changed, 97 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index dd46d14fd3e6..594ebcab5a4b 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -61,6 +61,15 @@
  * contained within struct drm_gpuva already. Hence, for inserting &drm_gpuva
  * entries from within dma-fence signalling critical sections it is enough to
  * pre-allocate the &drm_gpuva structures.
+ *
+ * &drm_gem_objects which are private to a single VM can share a common
+ * &dma_resv in order to improve locking efficiency (e.g. with &drm_exec).
+ * For this purpose drivers must pass a &drm_gem_object to drm_gpuvm_init(), in
+ * the following called 'resv object', which serves as the container of the
+ * GPUVM's shared &dma_resv. This resv object can be a driver specific
+ * &drm_gem_object, such as the &drm_gem_object containing the root page table,
+ * but it can also be a 'dummy' object, which can be allocated with
+ * drm_gpuvm_resv_object_alloc().
  */
 
 /**
@@ -670,11 +679,49 @@ drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm,
 }
 EXPORT_SYMBOL_GPL(drm_gpuvm_range_valid);
 
+static void
+drm_gpuvm_gem_object_free(struct drm_gem_object *obj)
+{
+	drm_gem_object_release(obj);
+	kfree(obj);
+}
+
+static const struct drm_gem_object_funcs drm_gpuvm_object_funcs = {
+	.free = drm_gpuvm_gem_object_free,
+};
+
+/**
+ * drm_gpuvm_resv_object_alloc() - allocate a dummy &drm_gem_object
+ * @drm: the drivers &drm_device
+ *
+ * Allocates a dummy &drm_gem_object which can be passed to drm_gpuvm_init() in
+ * order to serve as root GEM object providing the &drm_resv shared across
+ * &drm_gem_objects local to a single GPUVM.
+ *
+ * Returns: the &drm_gem_object on success, NULL on failure
+ */
+struct drm_gem_object *
+drm_gpuvm_resv_object_alloc(struct drm_device *drm)
+{
+	struct drm_gem_object *obj;
+
+	obj = kzalloc(sizeof(*obj), GFP_KERNEL);
+	if (!obj)
+		return NULL;
+
+	obj->funcs = &drm_gpuvm_object_funcs;
+	drm_gem_private_object_init(drm, obj, 0);
+
+	return obj;
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_resv_object_alloc);
+
 /**
  * drm_gpuvm_init() - initialize a &drm_gpuvm
  * @gpuvm: pointer to the &drm_gpuvm to initialize
  * @name: the name of the GPU VA space
  * @drm: the &drm_device this VM resides in
+ * @r_obj: the resv &drm_gem_object providing the GPUVM's common &dma_resv
  * @start_offset: the start offset of the GPU VA space
  * @range: the size of the GPU VA space
  * @reserve_offset: the start of the kernel reserved GPU VA area
@@ -689,6 +736,7 @@ EXPORT_SYMBOL_GPL(drm_gpuvm_range_valid);
 void
 drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 	       struct drm_device *drm,
+	       struct drm_gem_object *r_obj,
 	       u64 start_offset, u64 range,
 	       u64 reserve_offset, u64 reserve_range,
 	       const struct drm_gpuvm_ops *ops)
@@ -699,6 +747,9 @@ drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 	gpuvm->name = name ? name : "unknown";
 	gpuvm->ops = ops;
 	gpuvm->drm = drm;
+	gpuvm->r_obj = r_obj;
+
+	drm_gem_object_get(r_obj);
 
 	drm_gpuvm_warn_check_overflow(gpuvm, start_offset, range);
 	gpuvm->mm_start = start_offset;
@@ -733,6 +784,8 @@ drm_gpuvm_destroy(struct drm_gpuvm *gpuvm)
 
 	drm_WARN(gpuvm->drm, !RB_EMPTY_ROOT(&gpuvm->rb.tree.rb_root),
 		 "GPUVA tree is not empty, potentially leaking memory.\n");
+
+	drm_gem_object_put(gpuvm->r_obj);
 }
 EXPORT_SYMBOL_GPL(drm_gpuvm_destroy);
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index 641a911528db..f74bf30bc683 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -1797,8 +1797,9 @@ nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
 		  u64 kernel_managed_addr, u64 kernel_managed_size)
 {
 	struct drm_device *drm = cli->drm->dev;
-	int ret;
+	struct drm_gem_object *r_obj;
 	u64 kernel_managed_end = kernel_managed_addr + kernel_managed_size;
+	int ret;
 
 	mutex_init(&uvmm->mutex);
 	dma_resv_init(&uvmm->resv);
@@ -1822,11 +1823,19 @@ nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
 		goto out_unlock;
 	}
 
-	drm_gpuvm_init(&uvmm->base, cli->name, drm,
+	r_obj = drm_gpuvm_resv_object_alloc(drm);
+	if (!r_obj) {
+		ret = -ENOMEM;
+		goto out_unlock;
+	}
+
+	drm_gpuvm_init(&uvmm->base, cli->name, drm, r_obj,
 		       NOUVEAU_VA_SPACE_START,
 		       NOUVEAU_VA_SPACE_END,
 		       kernel_managed_addr, kernel_managed_size,
 		       NULL);
+	/* GPUVM takes care from here on. */
+	drm_gem_object_put(r_obj);
 
 	ret = nvif_vmm_ctor(&cli->mmu, "uvmm",
 			    cli->vmm.vmm.object.oclass, RAW,
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index ed766dd9d96b..59b32c5b7d16 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -244,10 +244,16 @@ struct drm_gpuvm {
 	 * @ops: &drm_gpuvm_ops providing the split/merge steps to drivers
 	 */
 	const struct drm_gpuvm_ops *ops;
+
+	/**
+	 * @r_obj: Resv GEM object; representing the GPUVM's common &dma_resv.
+	 */
+	struct drm_gem_object *r_obj;
 };
 
 void drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 		    struct drm_device *drm,
+		    struct drm_gem_object *r_obj,
 		    u64 start_offset, u64 range,
 		    u64 reserve_offset, u64 reserve_range,
 		    const struct drm_gpuvm_ops *ops);
@@ -256,6 +262,33 @@ void drm_gpuvm_destroy(struct drm_gpuvm *gpuvm);
 bool drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm, u64 addr, u64 range);
 bool drm_gpuvm_interval_empty(struct drm_gpuvm *gpuvm, u64 addr, u64 range);
 
+struct drm_gem_object *
+drm_gpuvm_resv_object_alloc(struct drm_device *drm);
+
+/**
+ * drm_gpuvm_resv() - returns the &drm_gpuvm's &dma_resv
+ * @gpuvm__: the &drm_gpuvm
+ *
+ * Returns: a pointer to the &drm_gpuvm's shared &dma_resv
+ */
+#define drm_gpuvm_resv(gpuvm__) ((gpuvm__)->r_obj->resv)
+
+/**
+ * drm_gpuvm_resv_obj() - returns the &drm_gem_object holding the &drm_gpuvm's
+ * &dma_resv
+ * @gpuvm__: the &drm_gpuvm
+ *
+ * Returns: a pointer to the &drm_gem_object holding the &drm_gpuvm's shared
+ * &dma_resv
+ */
+#define drm_gpuvm_resv_obj(gpuvm__) ((gpuvm__)->r_obj)
+
+#define drm_gpuvm_resv_held(gpuvm__) \
+	dma_resv_held(drm_gpuvm_resv(gpuvm__))
+
+#define drm_gpuvm_resv_assert_held(gpuvm__) \
+	dma_resv_assert_held(drm_gpuvm_resv(gpuvm__))
+
 static inline struct drm_gpuva *
 __drm_gpuva_next(struct drm_gpuva *va)
 {
-- 
2.41.0


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

* [Intel-xe] [CI v8 06/18] drm/xe: Adjust to "drm/gpuvm: add common dma-resv per struct drm_gpuvm"
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (3 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 05/18] drm/gpuvm: add common dma-resv per struct drm_gpuvm Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 07/18] drm/nouveau: make use of the GPUVM's shared dma-resv Thomas Hellström
                   ` (18 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c       | 17 +++++---
 drivers/gpu/drm/xe/xe_bo.h       |  2 +-
 drivers/gpu/drm/xe/xe_exec.c     |  4 +-
 drivers/gpu/drm/xe/xe_migrate.c  |  4 +-
 drivers/gpu/drm/xe/xe_pt.c       |  6 +--
 drivers/gpu/drm/xe/xe_vm.c       | 72 ++++++++++++++++----------------
 drivers/gpu/drm/xe/xe_vm.h       |  4 --
 drivers/gpu/drm/xe/xe_vm_types.h | 12 +++---
 8 files changed, 64 insertions(+), 57 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 1ae0543882a0..6212e004c0cf 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -502,9 +502,9 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
 			 * that we indeed have it locked, put the vma an the
 			 * vm's notifier.rebind_list instead and scoop later.
 			 */
-			if (dma_resv_trylock(&vm->resv))
+			if (dma_resv_trylock(xe_vm_resv(vm)))
 				vm_resv_locked = true;
-			else if (ctx->resv != &vm->resv) {
+			else if (ctx->resv != xe_vm_resv(vm)) {
 				spin_lock(&vm->notifier.list_lock);
 				if (!(vma->gpuva.flags & XE_VMA_DESTROYED))
 					list_move_tail(&vma->notifier.rebind_link,
@@ -521,7 +521,7 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
 					      &vm->rebind_list);
 
 			if (vm_resv_locked)
-				dma_resv_unlock(&vm->resv);
+				dma_resv_unlock(xe_vm_resv(vm));
 		}
 	}
 
@@ -1372,7 +1372,7 @@ xe_bo_create_locked_range(struct xe_device *xe,
 		}
 	}
 
-	bo = __xe_bo_create_locked(xe, bo, tile, vm ? &vm->resv : NULL,
+	bo = __xe_bo_create_locked(xe, bo, tile, vm ? xe_vm_resv(vm) : NULL,
 				   vm && !xe_vm_in_fault_mode(vm) &&
 				   flags & XE_BO_CREATE_USER_BIT ?
 				   &vm->lru_bulk_move : NULL, size,
@@ -1380,6 +1380,13 @@ xe_bo_create_locked_range(struct xe_device *xe,
 	if (IS_ERR(bo))
 		return bo;
 
+	/*
+	 * Note that instead of taking a reference no the drm_gpuvm_resv_bo(),
+	 * to ensure the shared resv doesn't disappear under the bo, the bo
+	 * will keep a reference to the vm, and avoid circular references
+	 * by having all the vm's bo refereferences released at vm close
+	 * time.
+	 */
 	if (vm && xe_bo_is_user(bo))
 		xe_vm_get(vm);
 	bo->vm = vm;
@@ -1687,7 +1694,7 @@ int xe_bo_validate(struct xe_bo *bo, struct xe_vm *vm, bool allow_res_evict)
 		xe_vm_assert_held(vm);
 
 		ctx.allow_res_evict = allow_res_evict;
-		ctx.resv = &vm->resv;
+		ctx.resv = xe_vm_resv(vm);
 	}
 
 	return ttm_bo_validate(&bo->ttm, &bo->placement, &ctx);
diff --git a/drivers/gpu/drm/xe/xe_bo.h b/drivers/gpu/drm/xe/xe_bo.h
index 98ed35cf39a3..cd284f02643f 100644
--- a/drivers/gpu/drm/xe/xe_bo.h
+++ b/drivers/gpu/drm/xe/xe_bo.h
@@ -158,7 +158,7 @@ void xe_bo_unlock(struct xe_bo *bo);
 static inline void xe_bo_unlock_vm_held(struct xe_bo *bo)
 {
 	if (bo) {
-		XE_WARN_ON(bo->vm && bo->ttm.base.resv != &bo->vm->resv);
+		XE_WARN_ON(bo->vm && bo->ttm.base.resv != xe_vm_resv(bo->vm));
 		if (bo->vm)
 			xe_vm_assert_held(bo->vm);
 		else
diff --git a/drivers/gpu/drm/xe/xe_exec.c b/drivers/gpu/drm/xe/xe_exec.c
index 28e84a0bbeb0..85a8a793f527 100644
--- a/drivers/gpu/drm/xe/xe_exec.c
+++ b/drivers/gpu/drm/xe/xe_exec.c
@@ -281,7 +281,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	/* Wait behind munmap style rebinds */
 	if (!xe_vm_no_dma_fences(vm)) {
 		err = drm_sched_job_add_resv_dependencies(&job->drm,
-							  &vm->resv,
+							  xe_vm_resv(vm),
 							  DMA_RESV_USAGE_KERNEL);
 		if (err)
 			goto err_put_job;
@@ -309,7 +309,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	xe_sched_job_arm(job);
 	if (!xe_vm_no_dma_fences(vm)) {
 		/* Block userptr invalidations / BO eviction */
-		dma_resv_add_fence(&vm->resv,
+		dma_resv_add_fence(xe_vm_resv(vm),
 				   &job->drm.s_fence->finished,
 				   DMA_RESV_USAGE_BOOKKEEP);
 
diff --git a/drivers/gpu/drm/xe/xe_migrate.c b/drivers/gpu/drm/xe/xe_migrate.c
index e6a31f90ebdb..1743bb40d669 100644
--- a/drivers/gpu/drm/xe/xe_migrate.c
+++ b/drivers/gpu/drm/xe/xe_migrate.c
@@ -1133,7 +1133,7 @@ xe_migrate_update_pgtables_cpu(struct xe_migrate *m,
 					  DMA_RESV_USAGE_KERNEL))
 		return ERR_PTR(-ETIME);
 
-	if (wait_vm && !dma_resv_test_signaled(&vm->resv,
+	if (wait_vm && !dma_resv_test_signaled(xe_vm_resv(vm),
 					       DMA_RESV_USAGE_BOOKKEEP))
 		return ERR_PTR(-ETIME);
 
@@ -1342,7 +1342,7 @@ xe_migrate_update_pgtables(struct xe_migrate *m,
 	 * trigger preempts before moving forward
 	 */
 	if (first_munmap_rebind) {
-		err = job_add_deps(job, &vm->resv,
+		err = job_add_deps(job, xe_vm_resv(vm),
 				   DMA_RESV_USAGE_BOOKKEEP);
 		if (err)
 			goto err_job;
diff --git a/drivers/gpu/drm/xe/xe_pt.c b/drivers/gpu/drm/xe/xe_pt.c
index 31afab617b4e..ab08e4644529 100644
--- a/drivers/gpu/drm/xe/xe_pt.c
+++ b/drivers/gpu/drm/xe/xe_pt.c
@@ -873,7 +873,7 @@ static void xe_pt_commit_locks_assert(struct xe_vma *vma)
 	else if (!xe_vma_is_null(vma))
 		dma_resv_assert_held(xe_vma_bo(vma)->ttm.base.resv);
 
-	dma_resv_assert_held(&vm->resv);
+	xe_vm_assert_held(vm);
 }
 
 static void xe_pt_commit_bind(struct xe_vma *vma,
@@ -1335,7 +1335,7 @@ __xe_pt_bind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queue
 		}
 
 		/* add shared fence now for pagetable delayed destroy */
-		dma_resv_add_fence(&vm->resv, fence, !rebind &&
+		dma_resv_add_fence(xe_vm_resv(vm), fence, !rebind &&
 				   last_munmap_rebind ?
 				   DMA_RESV_USAGE_KERNEL :
 				   DMA_RESV_USAGE_BOOKKEEP);
@@ -1672,7 +1672,7 @@ __xe_pt_unbind_vma(struct xe_tile *tile, struct xe_vma *vma, struct xe_exec_queu
 		fence = &ifence->base.base;
 
 		/* add shared fence now for pagetable delayed destroy */
-		dma_resv_add_fence(&vm->resv, fence,
+		dma_resv_add_fence(xe_vm_resv(vm), fence,
 				   DMA_RESV_USAGE_BOOKKEEP);
 
 		/* This fence will be installed by caller when doing eviction */
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index d26c90f0d702..dc7991eabb58 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -37,6 +37,11 @@
 
 #define TEST_VM_ASYNC_OPS_ERROR
 
+static struct drm_gem_object *xe_vm_obj(struct xe_vm *vm)
+{
+	return vm->gpuvm.r_obj;
+}
+
 /**
  * xe_vma_userptr_check_repin() - Advisory check for repin needed
  * @vma: The userptr vma
@@ -321,7 +326,7 @@ static void resume_and_reinstall_preempt_fences(struct xe_vm *vm)
 	list_for_each_entry(q, &vm->preempt.exec_queues, compute.link) {
 		q->ops->resume(q);
 
-		dma_resv_add_fence(&vm->resv, q->compute.pfence,
+		dma_resv_add_fence(xe_vm_resv(vm), q->compute.pfence,
 				   DMA_RESV_USAGE_BOOKKEEP);
 		xe_vm_fence_all_extobjs(vm, q->compute.pfence,
 					DMA_RESV_USAGE_BOOKKEEP);
@@ -359,7 +364,7 @@ int xe_vm_add_compute_exec_queue(struct xe_vm *vm, struct xe_exec_queue *q)
 
 	down_read(&vm->userptr.notifier_lock);
 
-	dma_resv_add_fence(&vm->resv, pfence,
+	dma_resv_add_fence(xe_vm_resv(vm), pfence,
 			   DMA_RESV_USAGE_BOOKKEEP);
 
 	xe_vm_fence_all_extobjs(vm, pfence, DMA_RESV_USAGE_BOOKKEEP);
@@ -445,8 +450,7 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
 	lockdep_assert_held(&vm->lock);
 
 	if (lock_vm) {
-		err = drm_exec_prepare_obj(exec, &xe_vm_ttm_bo(vm)->base,
-					   num_shared);
+		err = drm_exec_prepare_obj(exec, xe_vm_obj(vm), num_shared);
 		if (err)
 			return err;
 	}
@@ -542,7 +546,7 @@ static int xe_preempt_work_begin(struct drm_exec *exec, struct xe_vm *vm,
 	 * 1 fence for each preempt fence plus a fence for each tile from a
 	 * possible rebind
 	 */
-	err = drm_exec_prepare_obj(exec, &xe_vm_ttm_bo(vm)->base,
+	err = drm_exec_prepare_obj(exec, xe_vm_obj(vm),
 				   vm->preempt.num_exec_queues +
 				   vm->xe->info.tile_count);
 	if (err)
@@ -641,7 +645,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
 	}
 
 	/* Wait on munmap style VM unbinds */
-	wait = dma_resv_wait_timeout(&vm->resv,
+	wait = dma_resv_wait_timeout(xe_vm_resv(vm),
 				     DMA_RESV_USAGE_KERNEL,
 				     false, MAX_SCHEDULE_TIMEOUT);
 	if (wait <= 0) {
@@ -736,13 +740,13 @@ static bool vma_userptr_invalidate(struct mmu_interval_notifier *mni,
 	 * unbinds to complete, and those are attached as BOOKMARK fences
 	 * to the vm.
 	 */
-	dma_resv_iter_begin(&cursor, &vm->resv,
+	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(&vm->resv,
+	err = dma_resv_wait_timeout(xe_vm_resv(vm),
 				    DMA_RESV_USAGE_BOOKKEEP,
 				    false, MAX_SCHEDULE_TIMEOUT);
 	XE_WARN_ON(err <= 0);
@@ -791,14 +795,14 @@ int xe_vm_userptr_pin(struct xe_vm *vm)
 	}
 
 	/* Take lock and move to rebind_list for rebinding. */
-	err = dma_resv_lock_interruptible(&vm->resv, NULL);
+	err = dma_resv_lock_interruptible(xe_vm_resv(vm), NULL);
 	if (err)
 		goto out_err;
 
 	list_for_each_entry_safe(vma, next, &tmp_evict, combined_links.userptr)
 		list_move_tail(&vma->combined_links.rebind, &vm->rebind_list);
 
-	dma_resv_unlock(&vm->resv);
+	dma_resv_unlock(xe_vm_resv(vm));
 
 	return 0;
 
@@ -1116,7 +1120,7 @@ int xe_vm_prepare_vma(struct drm_exec *exec, struct xe_vma *vma,
 	int err;
 
 	XE_WARN_ON(!vm);
-	err = drm_exec_prepare_obj(exec, &xe_vm_ttm_bo(vm)->base, num_shared);
+	err = drm_exec_prepare_obj(exec, xe_vm_obj(vm), num_shared);
 	if (!err && bo && !bo->vm)
 		err = drm_exec_prepare_obj(exec, &bo->ttm.base, num_shared);
 
@@ -1331,6 +1335,7 @@ static void vm_destroy_work_func(struct work_struct *w);
 
 struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 {
+	struct drm_gem_object *vm_resv_obj;
 	struct xe_vm *vm;
 	int err, i = 0, number_tiles = 0;
 	struct xe_tile *tile;
@@ -1342,7 +1347,6 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 
 	vm->xe = xe;
 	kref_init(&vm->refcount);
-	dma_resv_init(&vm->resv);
 
 	vm->size = 1ull << xe->info.va_bits;
 
@@ -1375,12 +1379,21 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 	if (!(flags & XE_VM_FLAG_MIGRATION))
 		xe_device_mem_access_get(xe);
 
-	err = dma_resv_lock_interruptible(&vm->resv, NULL);
+	vm_resv_obj = drm_gpuvm_resv_object_alloc(&xe->drm);
+	if (!vm_resv_obj) {
+		err = -ENOMEM;
+		goto err_no_resv;
+	}
+
+	drm_gpuvm_init(&vm->gpuvm, "Xe VM", &xe->drm, vm_resv_obj, 0, vm->size,
+		       0, 0, &gpuvm_ops);
+
+	drm_gem_object_put(vm_resv_obj);
+
+	err = dma_resv_lock_interruptible(xe_vm_resv(vm), NULL);
 	if (err)
 		goto err_put;
 
-	drm_gpuvm_init(&vm->gpuvm, "Xe VM", 0, vm->size, 0, 0,
-		       &gpuvm_ops);
 	if (IS_DGFX(xe) && xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
 		vm->flags |= XE_VM_FLAG_64K;
 
@@ -1422,7 +1435,7 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 
 		xe_pt_populate_empty(tile, vm, vm->pt_root[id]);
 	}
-	dma_resv_unlock(&vm->resv);
+	dma_resv_unlock(xe_vm_resv(vm));
 
 	/* Kernel migration VM shouldn't have a circular loop.. */
 	if (!(flags & XE_VM_FLAG_MIGRATION)) {
@@ -1483,10 +1496,10 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 		if (vm->pt_root[id])
 			xe_pt_destroy(vm->pt_root[id], vm->flags, NULL);
 	}
-	dma_resv_unlock(&vm->resv);
-	drm_gpuvm_destroy(&vm->gpuvm);
+	dma_resv_unlock(xe_vm_resv(vm));
 err_put:
-	dma_resv_fini(&vm->resv);
+	drm_gpuvm_destroy(&vm->gpuvm);
+err_no_resv:
 	for_each_tile(tile, xe, id)
 		xe_range_fence_tree_fini(&vm->rftree[id]);
 	kfree(vm);
@@ -1590,8 +1603,6 @@ void xe_vm_close_and_put(struct xe_vm *vm)
 	xe_assert(xe, list_empty(&vm->extobj.list));
 	up_write(&vm->lock);
 
-	drm_gpuvm_destroy(&vm->gpuvm);
-
 	mutex_lock(&xe->usm.lock);
 	if (vm->flags & XE_VM_FLAG_FAULT_MODE)
 		xe->usm.num_vm_in_fault_mode--;
@@ -1644,7 +1655,7 @@ static void vm_destroy_work_func(struct work_struct *w)
 
 	trace_xe_vm_free(vm);
 	dma_fence_put(vm->rebind_fence);
-	dma_resv_fini(&vm->resv);
+	drm_gpuvm_destroy(&vm->gpuvm);
 	kfree(vm);
 }
 
@@ -2091,15 +2102,6 @@ static int xe_vm_prefetch(struct xe_vm *vm, struct xe_vma *vma,
 	}
 }
 
-struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm)
-{
-	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
-		XE_VM_FLAG_TILE_ID(vm->flags) : 0;
-
-	/* Safe to use index 0 as all BO in the VM share a single dma-resv lock */
-	return &vm->pt_root[idx]->bo->ttm;
-}
-
 static void prep_vma_destroy(struct xe_vm *vm, struct xe_vma *vma,
 			     bool post_commit)
 {
@@ -3189,9 +3191,9 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 int xe_vm_lock(struct xe_vm *vm, bool intr)
 {
 	if (intr)
-		return dma_resv_lock_interruptible(&vm->resv, NULL);
+		return dma_resv_lock_interruptible(xe_vm_resv(vm), NULL);
 
-	return dma_resv_lock(&vm->resv, NULL);
+	return dma_resv_lock(xe_vm_resv(vm), NULL);
 }
 
 /**
@@ -3202,7 +3204,7 @@ int xe_vm_lock(struct xe_vm *vm, bool intr)
  */
 void xe_vm_unlock(struct xe_vm *vm)
 {
-	dma_resv_unlock(&vm->resv);
+	dma_resv_unlock(xe_vm_resv(vm));
 }
 
 /**
@@ -3234,7 +3236,7 @@ int xe_vm_invalidate_vma(struct xe_vma *vma)
 			WARN_ON_ONCE(!mmu_interval_check_retry
 				     (&vma->userptr.notifier,
 				      vma->userptr.notifier_seq));
-			WARN_ON_ONCE(!dma_resv_test_signaled(&xe_vma_vm(vma)->resv,
+			WARN_ON_ONCE(!dma_resv_test_signaled(xe_vm_resv(xe_vma_vm(vma)),
 							     DMA_RESV_USAGE_BOOKKEEP));
 
 		} else {
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index b08c75fbd8a1..88077214261f 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -139,8 +139,6 @@ static inline bool xe_vma_is_userptr(struct xe_vma *vma)
 	return xe_vma_has_no_bo(vma) && !xe_vma_is_null(vma);
 }
 
-#define xe_vm_assert_held(vm) dma_resv_assert_held(&(vm)->resv)
-
 u64 xe_vm_pdp4_descriptor(struct xe_vm *vm, struct xe_tile *tile);
 
 int xe_vm_create_ioctl(struct drm_device *dev, void *data,
@@ -182,8 +180,6 @@ int xe_vm_invalidate_vma(struct xe_vma *vma);
 
 extern struct ttm_device_funcs xe_ttm_funcs;
 
-struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm);
-
 static inline void xe_vm_queue_rebind_worker(struct xe_vm *vm)
 {
 	xe_assert(vm->xe, xe_vm_in_compute_mode(vm));
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index aaf0c7101019..f11ac81cf010 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -131,8 +131,6 @@ struct xe_vma {
 
 struct xe_device;
 
-#define xe_vm_assert_held(vm) dma_resv_assert_held(&(vm)->resv)
-
 struct xe_vm {
 	/** @gpuvm: base GPUVM used to track VMAs */
 	struct drm_gpuvm gpuvm;
@@ -144,9 +142,6 @@ struct xe_vm {
 	/* exec queue used for (un)binding vma's */
 	struct xe_exec_queue *q[XE_MAX_TILES_PER_DEVICE];
 
-	/** Protects @rebind_list and the page-table structures */
-	struct dma_resv resv;
-
 	/** @lru_bulk_move: Bulk LRU move list for this VM's BOs */
 	struct ttm_lru_bulk_move lru_bulk_move;
 
@@ -420,4 +415,11 @@ struct xe_vma_op {
 	};
 };
 
+static inline struct dma_resv *xe_vm_resv(struct xe_vm *vm)
+{
+	return drm_gpuvm_resv(&vm->gpuvm);
+}
+
+#define xe_vm_assert_held(vm) dma_resv_assert_held(xe_vm_resv(vm))
+
 #endif
-- 
2.41.0


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

* [Intel-xe] [CI v8 07/18] drm/nouveau: make use of the GPUVM's shared dma-resv
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (4 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 06/18] drm/xe: Adjust to "drm/gpuvm: add common dma-resv per struct drm_gpuvm" Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 08/18] drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm Thomas Hellström
                   ` (17 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

DRM GEM objects private to a single GPUVM can use a shared dma-resv.
Make use of the shared dma-resv of GPUVM rather than a driver specific
one.

The shared dma-resv originates from a "root" GEM object serving as
container for the dma-resv to make it compatible with drm_exec.

In order to make sure the object proving the shared dma-resv can't be
freed up before the objects making use of it, let every such GEM object
take a reference on it.

Signed-off-by: Danilo Krummrich <dakr@redhat.com>
---
 drivers/gpu/drm/nouveau/nouveau_bo.c   | 11 +++++++++--
 drivers/gpu/drm/nouveau/nouveau_bo.h   |  5 +++++
 drivers/gpu/drm/nouveau/nouveau_gem.c  | 10 ++++++++--
 drivers/gpu/drm/nouveau/nouveau_uvmm.c |  7 ++-----
 drivers/gpu/drm/nouveau/nouveau_uvmm.h |  1 -
 5 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
index 0f3bd187ede6..7afad86da64b 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -148,10 +148,17 @@ nouveau_bo_del_ttm(struct ttm_buffer_object *bo)
 	 * If nouveau_bo_new() allocated this buffer, the GEM object was never
 	 * initialized, so don't attempt to release it.
 	 */
-	if (bo->base.dev)
+	if (bo->base.dev) {
+		/* Gem objects not being shared with other VMs get their
+		 * dma_resv from a root GEM object.
+		 */
+		if (nvbo->no_share)
+			drm_gem_object_put(nvbo->r_obj);
+
 		drm_gem_object_release(&bo->base);
-	else
+	} else {
 		dma_resv_fini(&bo->base._resv);
+	}
 
 	kfree(nvbo);
 }
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.h b/drivers/gpu/drm/nouveau/nouveau_bo.h
index 07f671cf895e..70c551921a9e 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.h
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.h
@@ -26,6 +26,11 @@ struct nouveau_bo {
 	struct list_head entry;
 	int pbbo_index;
 	bool validate_mapped;
+
+	/* Root GEM object we derive the dma_resv of in case this BO is not
+	 * shared between VMs.
+	 */
+	struct drm_gem_object *r_obj;
 	bool no_share;
 
 	/* GPU address space is independent of CPU word size */
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
index a0d303e5ce3d..49c2bcbef129 100644
--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
@@ -111,7 +111,8 @@ nouveau_gem_object_open(struct drm_gem_object *gem, struct drm_file *file_priv)
 	if (vmm->vmm.object.oclass < NVIF_CLASS_VMM_NV50)
 		return 0;
 
-	if (nvbo->no_share && uvmm && &uvmm->resv != nvbo->bo.base.resv)
+	if (nvbo->no_share && uvmm &&
+	    drm_gpuvm_resv(&uvmm->base) != nvbo->bo.base.resv)
 		return -EPERM;
 
 	ret = ttm_bo_reserve(&nvbo->bo, false, false, NULL);
@@ -245,7 +246,7 @@ nouveau_gem_new(struct nouveau_cli *cli, u64 size, int align, uint32_t domain,
 		if (unlikely(!uvmm))
 			return -EINVAL;
 
-		resv = &uvmm->resv;
+		resv = drm_gpuvm_resv(&uvmm->base);
 	}
 
 	if (!(domain & (NOUVEAU_GEM_DOMAIN_VRAM | NOUVEAU_GEM_DOMAIN_GART)))
@@ -288,6 +289,11 @@ nouveau_gem_new(struct nouveau_cli *cli, u64 size, int align, uint32_t domain,
 	if (drm->client.device.info.family >= NV_DEVICE_INFO_V0_TESLA)
 		nvbo->valid_domains &= domain;
 
+	if (nvbo->no_share) {
+		nvbo->r_obj = drm_gpuvm_resv_obj(&uvmm->base);
+		drm_gem_object_get(nvbo->r_obj);
+	}
+
 	*pnvbo = nvbo;
 	return 0;
 }
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index f74bf30bc683..8977a518de96 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -1802,7 +1802,6 @@ nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
 	int ret;
 
 	mutex_init(&uvmm->mutex);
-	dma_resv_init(&uvmm->resv);
 	mt_init_flags(&uvmm->region_mt, MT_FLAGS_LOCK_EXTERN);
 	mt_set_external_lock(&uvmm->region_mt, &uvmm->mutex);
 
@@ -1842,14 +1841,14 @@ nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
 			    kernel_managed_addr, kernel_managed_size,
 			    NULL, 0, &cli->uvmm.vmm.vmm);
 	if (ret)
-		goto out_free_gpuva_mgr;
+		goto out_gpuvm_fini;
 
 	cli->uvmm.vmm.cli = cli;
 	mutex_unlock(&cli->mutex);
 
 	return 0;
 
-out_free_gpuva_mgr:
+out_gpuvm_fini:
 	drm_gpuvm_destroy(&uvmm->base);
 out_unlock:
 	mutex_unlock(&cli->mutex);
@@ -1907,6 +1906,4 @@ nouveau_uvmm_fini(struct nouveau_uvmm *uvmm)
 	nouveau_vmm_fini(&uvmm->vmm);
 	drm_gpuvm_destroy(&uvmm->base);
 	mutex_unlock(&cli->mutex);
-
-	dma_resv_fini(&uvmm->resv);
 }
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.h b/drivers/gpu/drm/nouveau/nouveau_uvmm.h
index 06a0c36de392..22607270fae0 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.h
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.h
@@ -12,7 +12,6 @@ struct nouveau_uvmm {
 	struct nouveau_vmm vmm;
 	struct maple_tree region_mt;
 	struct mutex mutex;
-	struct dma_resv resv;
 
 	bool disabled;
 };
-- 
2.41.0


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

* [Intel-xe] [CI v8 08/18] drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (5 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 07/18] drm/nouveau: make use of the GPUVM's shared dma-resv Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 09/18] drm/xe: Adjust to commit "drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm" Thomas Hellström
                   ` (16 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

Introduce flags for struct drm_gpuvm, this required by subsequent
commits.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
---
 drivers/gpu/drm/drm_gpuvm.c            |  3 +++
 drivers/gpu/drm/nouveau/nouveau_uvmm.c |  2 +-
 include/drm/drm_gpuvm.h                | 16 ++++++++++++++++
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index 594ebcab5a4b..0a010b52e33d 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -720,6 +720,7 @@ EXPORT_SYMBOL_GPL(drm_gpuvm_resv_object_alloc);
  * drm_gpuvm_init() - initialize a &drm_gpuvm
  * @gpuvm: pointer to the &drm_gpuvm to initialize
  * @name: the name of the GPU VA space
+ * @flags: the &drm_gpuvm_flags for this GPUVM
  * @drm: the &drm_device this VM resides in
  * @r_obj: the resv &drm_gem_object providing the GPUVM's common &dma_resv
  * @start_offset: the start offset of the GPU VA space
@@ -735,6 +736,7 @@ EXPORT_SYMBOL_GPL(drm_gpuvm_resv_object_alloc);
  */
 void
 drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
+	       enum drm_gpuvm_flags flags,
 	       struct drm_device *drm,
 	       struct drm_gem_object *r_obj,
 	       u64 start_offset, u64 range,
@@ -745,6 +747,7 @@ drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 	INIT_LIST_HEAD(&gpuvm->rb.list);
 
 	gpuvm->name = name ? name : "unknown";
+	gpuvm->flags = flags;
 	gpuvm->ops = ops;
 	gpuvm->drm = drm;
 	gpuvm->r_obj = r_obj;
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index 8977a518de96..f765e3835306 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -1828,7 +1828,7 @@ nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
 		goto out_unlock;
 	}
 
-	drm_gpuvm_init(&uvmm->base, cli->name, drm, r_obj,
+	drm_gpuvm_init(&uvmm->base, cli->name, 0, drm, r_obj,
 		       NOUVEAU_VA_SPACE_START,
 		       NOUVEAU_VA_SPACE_END,
 		       kernel_managed_addr, kernel_managed_size,
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index 59b32c5b7d16..239680b83079 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -184,6 +184,16 @@ static inline bool drm_gpuva_invalidated(struct drm_gpuva *va)
 	return va->flags & DRM_GPUVA_INVALIDATED;
 }
 
+/**
+ * enum drm_gpuvm_flags - flags for struct drm_gpuvm
+ */
+enum drm_gpuvm_flags {
+	/**
+	 * @DRM_GPUVM_USERBITS: user defined bits
+	 */
+	DRM_GPUVM_USERBITS = BIT(0),
+};
+
 /**
  * struct drm_gpuvm - DRM GPU VA Manager
  *
@@ -202,6 +212,11 @@ struct drm_gpuvm {
 	 */
 	const char *name;
 
+	/**
+	 * @flags: the &drm_gpuvm_flags of this GPUVM
+	 */
+	enum drm_gpuvm_flags flags;
+
 	/**
 	 * @drm: the &drm_device this VM lives in
 	 */
@@ -252,6 +267,7 @@ struct drm_gpuvm {
 };
 
 void drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
+		    enum drm_gpuvm_flags flags,
 		    struct drm_device *drm,
 		    struct drm_gem_object *r_obj,
 		    u64 start_offset, u64 range,
-- 
2.41.0


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

* [Intel-xe] [CI v8 09/18] drm/xe: Adjust to commit "drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm"
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (6 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 08/18] drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-12 22:07   ` Dafna Hirschfeld
  2023-11-03 15:32 ` [Intel-xe] [CI v8 10/18] drm/nouveau: separately allocate struct nouveau_uvmm Thomas Hellström
                   ` (15 subsequent siblings)
  23 siblings, 1 reply; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
---
 drivers/gpu/drm/xe/xe_vm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index dc7991eabb58..46a87a4e42d8 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1385,8 +1385,8 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 		goto err_no_resv;
 	}
 
-	drm_gpuvm_init(&vm->gpuvm, "Xe VM", &xe->drm, vm_resv_obj, 0, vm->size,
-		       0, 0, &gpuvm_ops);
+	drm_gpuvm_init(&vm->gpuvm, "Xe VM", 0, &xe->drm, vm_resv_obj,
+		       0, vm->size, 0, 0, &gpuvm_ops);
 
 	drm_gem_object_put(vm_resv_obj);
 
-- 
2.41.0


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

* [Intel-xe] [CI v8 10/18] drm/nouveau: separately allocate struct nouveau_uvmm
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (7 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 09/18] drm/xe: Adjust to commit "drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm" Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 11/18] drm/gpuvm: reference count drm_gpuvm structures Thomas Hellström
                   ` (14 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

Allocate struct nouveau_uvmm separately in preparation for subsequent
commits introducing reference counting for struct drm_gpuvm.

While at it, get rid of nouveau_uvmm_init() as indirection of
nouveau_uvmm_ioctl_vm_init() and perform some minor cleanups.

Signed-off-by: Danilo Krummrich <dakr@redhat.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
---
 drivers/gpu/drm/nouveau/nouveau_drm.c  |  5 +-
 drivers/gpu/drm/nouveau/nouveau_drv.h  | 10 ++--
 drivers/gpu/drm/nouveau/nouveau_uvmm.c | 63 +++++++++++++-------------
 drivers/gpu/drm/nouveau/nouveau_uvmm.h |  4 --
 4 files changed, 40 insertions(+), 42 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
index 50589f982d1a..f603eaef1560 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -190,6 +190,8 @@ nouveau_cli_work_queue(struct nouveau_cli *cli, struct dma_fence *fence,
 static void
 nouveau_cli_fini(struct nouveau_cli *cli)
 {
+	struct nouveau_uvmm *uvmm = nouveau_cli_uvmm_locked(cli);
+
 	/* All our channels are dead now, which means all the fences they
 	 * own are signalled, and all callback functions have been called.
 	 *
@@ -199,7 +201,8 @@ nouveau_cli_fini(struct nouveau_cli *cli)
 	WARN_ON(!list_empty(&cli->worker));
 
 	usif_client_fini(cli);
-	nouveau_uvmm_fini(&cli->uvmm);
+	if (uvmm)
+		nouveau_uvmm_fini(uvmm);
 	nouveau_sched_entity_fini(&cli->sched_entity);
 	nouveau_vmm_fini(&cli->svm);
 	nouveau_vmm_fini(&cli->vmm);
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
index e73a233c6572..7f7051df84a6 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -93,7 +93,10 @@ struct nouveau_cli {
 	struct nvif_mmu mmu;
 	struct nouveau_vmm vmm;
 	struct nouveau_vmm svm;
-	struct nouveau_uvmm uvmm;
+	struct {
+		struct nouveau_uvmm *ptr;
+		bool disabled;
+	} uvmm;
 
 	struct nouveau_sched_entity sched_entity;
 
@@ -121,10 +124,7 @@ struct nouveau_cli_work {
 static inline struct nouveau_uvmm *
 nouveau_cli_uvmm(struct nouveau_cli *cli)
 {
-	if (!cli || !cli->uvmm.vmm.cli)
-		return NULL;
-
-	return &cli->uvmm;
+	return cli ? cli->uvmm.ptr : NULL;
 }
 
 static inline struct nouveau_uvmm *
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index f765e3835306..54be12c1272f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -1636,18 +1636,6 @@ nouveau_uvmm_bind_job_init(struct nouveau_uvmm_bind_job **pjob,
 	return ret;
 }
 
-int
-nouveau_uvmm_ioctl_vm_init(struct drm_device *dev,
-			   void *data,
-			   struct drm_file *file_priv)
-{
-	struct nouveau_cli *cli = nouveau_cli(file_priv);
-	struct drm_nouveau_vm_init *init = data;
-
-	return nouveau_uvmm_init(&cli->uvmm, cli, init->kernel_managed_addr,
-				 init->kernel_managed_size);
-}
-
 static int
 nouveau_uvmm_vm_bind(struct nouveau_uvmm_bind_job_args *args)
 {
@@ -1793,17 +1781,25 @@ nouveau_uvmm_bo_unmap_all(struct nouveau_bo *nvbo)
 }
 
 int
-nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
-		  u64 kernel_managed_addr, u64 kernel_managed_size)
+nouveau_uvmm_ioctl_vm_init(struct drm_device *dev,
+			   void *data,
+			   struct drm_file *file_priv)
 {
+	struct nouveau_uvmm *uvmm;
+	struct nouveau_cli *cli = nouveau_cli(file_priv);
 	struct drm_device *drm = cli->drm->dev;
 	struct drm_gem_object *r_obj;
-	u64 kernel_managed_end = kernel_managed_addr + kernel_managed_size;
+	struct drm_nouveau_vm_init *init = data;
+	u64 kernel_managed_end;
 	int ret;
 
-	mutex_init(&uvmm->mutex);
-	mt_init_flags(&uvmm->region_mt, MT_FLAGS_LOCK_EXTERN);
-	mt_set_external_lock(&uvmm->region_mt, &uvmm->mutex);
+	if (check_add_overflow(init->kernel_managed_addr,
+			       init->kernel_managed_size,
+			       &kernel_managed_end))
+		return -EINVAL;
+
+	if (kernel_managed_end > NOUVEAU_VA_SPACE_END)
+		return -EINVAL;
 
 	mutex_lock(&cli->mutex);
 
@@ -1812,44 +1808,49 @@ nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
 		goto out_unlock;
 	}
 
-	if (kernel_managed_end <= kernel_managed_addr) {
-		ret = -EINVAL;
-		goto out_unlock;
-	}
-
-	if (kernel_managed_end > NOUVEAU_VA_SPACE_END) {
-		ret = -EINVAL;
+	uvmm = kzalloc(sizeof(*uvmm), GFP_KERNEL);
+	if (!uvmm) {
+		ret = -ENOMEM;
 		goto out_unlock;
 	}
 
 	r_obj = drm_gpuvm_resv_object_alloc(drm);
 	if (!r_obj) {
+		kfree(uvmm);
 		ret = -ENOMEM;
 		goto out_unlock;
 	}
 
+	mutex_init(&uvmm->mutex);
+	mt_init_flags(&uvmm->region_mt, MT_FLAGS_LOCK_EXTERN);
+	mt_set_external_lock(&uvmm->region_mt, &uvmm->mutex);
+
 	drm_gpuvm_init(&uvmm->base, cli->name, 0, drm, r_obj,
 		       NOUVEAU_VA_SPACE_START,
 		       NOUVEAU_VA_SPACE_END,
-		       kernel_managed_addr, kernel_managed_size,
+		       init->kernel_managed_addr,
+		       init->kernel_managed_size,
 		       NULL);
 	/* GPUVM takes care from here on. */
 	drm_gem_object_put(r_obj);
 
 	ret = nvif_vmm_ctor(&cli->mmu, "uvmm",
 			    cli->vmm.vmm.object.oclass, RAW,
-			    kernel_managed_addr, kernel_managed_size,
-			    NULL, 0, &cli->uvmm.vmm.vmm);
+			    init->kernel_managed_addr,
+			    init->kernel_managed_size,
+			    NULL, 0, &uvmm->vmm.vmm);
 	if (ret)
 		goto out_gpuvm_fini;
 
-	cli->uvmm.vmm.cli = cli;
+	uvmm->vmm.cli = cli;
+	cli->uvmm.ptr = uvmm;
 	mutex_unlock(&cli->mutex);
 
 	return 0;
 
 out_gpuvm_fini:
 	drm_gpuvm_destroy(&uvmm->base);
+	kfree(uvmm);
 out_unlock:
 	mutex_unlock(&cli->mutex);
 	return ret;
@@ -1864,9 +1865,6 @@ nouveau_uvmm_fini(struct nouveau_uvmm *uvmm)
 	struct nouveau_sched_entity *entity = &cli->sched_entity;
 	struct drm_gpuva *va, *next;
 
-	if (!cli)
-		return;
-
 	rmb(); /* for list_empty to work without lock */
 	wait_event(entity->job.wq, list_empty(&entity->job.list.head));
 
@@ -1905,5 +1903,6 @@ nouveau_uvmm_fini(struct nouveau_uvmm *uvmm)
 	mutex_lock(&cli->mutex);
 	nouveau_vmm_fini(&uvmm->vmm);
 	drm_gpuvm_destroy(&uvmm->base);
+	kfree(uvmm);
 	mutex_unlock(&cli->mutex);
 }
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.h b/drivers/gpu/drm/nouveau/nouveau_uvmm.h
index 22607270fae0..f0a6d98ace4f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.h
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.h
@@ -12,8 +12,6 @@ struct nouveau_uvmm {
 	struct nouveau_vmm vmm;
 	struct maple_tree region_mt;
 	struct mutex mutex;
-
-	bool disabled;
 };
 
 struct nouveau_uvma_region {
@@ -78,8 +76,6 @@ struct nouveau_uvmm_bind_job_args {
 
 #define to_uvmm_bind_job(job) container_of((job), struct nouveau_uvmm_bind_job, base)
 
-int nouveau_uvmm_init(struct nouveau_uvmm *uvmm, struct nouveau_cli *cli,
-		      u64 kernel_managed_addr, u64 kernel_managed_size);
 void nouveau_uvmm_fini(struct nouveau_uvmm *uvmm);
 
 void nouveau_uvmm_bo_map_all(struct nouveau_bo *nvbov, struct nouveau_mem *mem);
-- 
2.41.0


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

* [Intel-xe] [CI v8 11/18] drm/gpuvm: reference count drm_gpuvm structures
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (8 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 10/18] drm/nouveau: separately allocate struct nouveau_uvmm Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 12/18] drm/xe: Adjust to commit " Thomas Hellström
                   ` (13 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

Implement reference counting for struct drm_gpuvm.

Signed-off-by: Danilo Krummrich <dakr@redhat.com>
---
 drivers/gpu/drm/drm_gpuvm.c            | 44 +++++++++++++++++++-------
 drivers/gpu/drm/nouveau/nouveau_uvmm.c | 20 +++++++++---
 include/drm/drm_gpuvm.h                | 31 +++++++++++++++++-
 3 files changed, 78 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index 0a010b52e33d..6e3199f4a1e0 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -746,6 +746,8 @@ drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 	gpuvm->rb.tree = RB_ROOT_CACHED;
 	INIT_LIST_HEAD(&gpuvm->rb.list);
 
+	kref_init(&gpuvm->kref);
+
 	gpuvm->name = name ? name : "unknown";
 	gpuvm->flags = flags;
 	gpuvm->ops = ops;
@@ -770,15 +772,8 @@ drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 }
 EXPORT_SYMBOL_GPL(drm_gpuvm_init);
 
-/**
- * drm_gpuvm_destroy() - cleanup a &drm_gpuvm
- * @gpuvm: pointer to the &drm_gpuvm to clean up
- *
- * Note that it is a bug to call this function on a manager that still
- * holds GPU VA mappings.
- */
-void
-drm_gpuvm_destroy(struct drm_gpuvm *gpuvm)
+static void
+drm_gpuvm_fini(struct drm_gpuvm *gpuvm)
 {
 	gpuvm->name = NULL;
 
@@ -790,7 +785,33 @@ drm_gpuvm_destroy(struct drm_gpuvm *gpuvm)
 
 	drm_gem_object_put(gpuvm->r_obj);
 }
-EXPORT_SYMBOL_GPL(drm_gpuvm_destroy);
+
+static void
+drm_gpuvm_free(struct kref *kref)
+{
+	struct drm_gpuvm *gpuvm = container_of(kref, struct drm_gpuvm, kref);
+
+	if (drm_WARN_ON(gpuvm->drm, !gpuvm->ops->vm_free))
+		return;
+
+	drm_gpuvm_fini(gpuvm);
+
+	gpuvm->ops->vm_free(gpuvm);
+}
+
+/**
+ * drm_gpuvm_bo_put() - drop a struct drm_gpuvm reference
+ * @gpuvm: the &drm_gpuvm to release the reference of
+ *
+ * This releases a reference to @gpuvm.
+ */
+void
+drm_gpuvm_put(struct drm_gpuvm *gpuvm)
+{
+	if (gpuvm)
+		kref_put(&gpuvm->kref, drm_gpuvm_free);
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_put);
 
 static int
 __drm_gpuva_insert(struct drm_gpuvm *gpuvm,
@@ -843,7 +864,7 @@ drm_gpuva_insert(struct drm_gpuvm *gpuvm,
 	if (unlikely(!drm_gpuvm_range_valid(gpuvm, addr, range)))
 		return -EINVAL;
 
-	return __drm_gpuva_insert(gpuvm, va);
+	return __drm_gpuva_insert(drm_gpuvm_get(gpuvm), va);
 }
 EXPORT_SYMBOL_GPL(drm_gpuva_insert);
 
@@ -876,6 +897,7 @@ drm_gpuva_remove(struct drm_gpuva *va)
 	}
 
 	__drm_gpuva_remove(va);
+	drm_gpuvm_put(va->vm);
 }
 EXPORT_SYMBOL_GPL(drm_gpuva_remove);
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index 54be12c1272f..cb2f06565c46 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -1780,6 +1780,18 @@ nouveau_uvmm_bo_unmap_all(struct nouveau_bo *nvbo)
 	}
 }
 
+static void
+nouveau_uvmm_free(struct drm_gpuvm *gpuvm)
+{
+	struct nouveau_uvmm *uvmm = uvmm_from_gpuvm(gpuvm);
+
+	kfree(uvmm);
+}
+
+static const struct drm_gpuvm_ops gpuvm_ops = {
+	.vm_free = nouveau_uvmm_free,
+};
+
 int
 nouveau_uvmm_ioctl_vm_init(struct drm_device *dev,
 			   void *data,
@@ -1830,7 +1842,7 @@ nouveau_uvmm_ioctl_vm_init(struct drm_device *dev,
 		       NOUVEAU_VA_SPACE_END,
 		       init->kernel_managed_addr,
 		       init->kernel_managed_size,
-		       NULL);
+		       &gpuvm_ops);
 	/* GPUVM takes care from here on. */
 	drm_gem_object_put(r_obj);
 
@@ -1849,8 +1861,7 @@ nouveau_uvmm_ioctl_vm_init(struct drm_device *dev,
 	return 0;
 
 out_gpuvm_fini:
-	drm_gpuvm_destroy(&uvmm->base);
-	kfree(uvmm);
+	drm_gpuvm_put(&uvmm->base);
 out_unlock:
 	mutex_unlock(&cli->mutex);
 	return ret;
@@ -1902,7 +1913,6 @@ nouveau_uvmm_fini(struct nouveau_uvmm *uvmm)
 
 	mutex_lock(&cli->mutex);
 	nouveau_vmm_fini(&uvmm->vmm);
-	drm_gpuvm_destroy(&uvmm->base);
-	kfree(uvmm);
+	drm_gpuvm_put(&uvmm->base);
 	mutex_unlock(&cli->mutex);
 }
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index 239680b83079..4dc83a27506a 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -247,6 +247,11 @@ struct drm_gpuvm {
 		struct list_head list;
 	} rb;
 
+	/**
+	 * @kref: reference count of this object
+	 */
+	struct kref kref;
+
 	/**
 	 * @kernel_alloc_node:
 	 *
@@ -273,7 +278,23 @@ void drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 		    u64 start_offset, u64 range,
 		    u64 reserve_offset, u64 reserve_range,
 		    const struct drm_gpuvm_ops *ops);
-void drm_gpuvm_destroy(struct drm_gpuvm *gpuvm);
+
+/**
+ * drm_gpuvm_get() - acquire a struct drm_gpuvm reference
+ * @gpuvm: the &drm_gpuvm to acquire the reference of
+ *
+ * This function acquires an additional reference to @gpuvm. It is illegal to
+ * call this without already holding a reference. No locks required.
+ */
+static inline struct drm_gpuvm *
+drm_gpuvm_get(struct drm_gpuvm *gpuvm)
+{
+	kref_get(&gpuvm->kref);
+
+	return gpuvm;
+}
+
+void drm_gpuvm_put(struct drm_gpuvm *gpuvm);
 
 bool drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm, u64 addr, u64 range);
 bool drm_gpuvm_interval_empty(struct drm_gpuvm *gpuvm, u64 addr, u64 range);
@@ -683,6 +704,14 @@ static inline void drm_gpuva_init_from_op(struct drm_gpuva *va,
  * operations to drivers.
  */
 struct drm_gpuvm_ops {
+	/**
+	 * @vm_free: called when the last reference of a struct drm_gpuvm is
+	 * dropped
+	 *
+	 * This callback is mandatory.
+	 */
+	void (*vm_free)(struct drm_gpuvm *gpuvm);
+
 	/**
 	 * @op_alloc: called when the &drm_gpuvm allocates
 	 * a struct drm_gpuva_op
-- 
2.41.0


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

* [Intel-xe] [CI v8 12/18] drm/xe: Adjust to commit drm/gpuvm: reference count drm_gpuvm structures
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (9 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 11/18] drm/gpuvm: reference count drm_gpuvm structures Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-13  6:14   ` Dafna Hirschfeld
  2023-11-03 15:32 ` [Intel-xe] [CI v8 13/18] drm/gpuvm: add an abstraction for a VM / BO combination Thomas Hellström
                   ` (12 subsequent siblings)
  23 siblings, 1 reply; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
---
 drivers/gpu/drm/xe/xe_vm.c       | 30 ++++++++++++------------------
 drivers/gpu/drm/xe/xe_vm.h       |  5 ++---
 drivers/gpu/drm/xe/xe_vm_types.h |  2 --
 3 files changed, 14 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 46a87a4e42d8..bb44e5ca224a 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1197,8 +1197,11 @@ static struct drm_gpuva_op *xe_vm_op_alloc(void)
 	return &op->base;
 }
 
+static void xe_vm_free(struct drm_gpuvm *gpuvm);
+
 static struct drm_gpuvm_ops gpuvm_ops = {
 	.op_alloc = xe_vm_op_alloc,
+	.vm_free = xe_vm_free,
 };
 
 static u64 pde_encode_pat_index(struct xe_device *xe, u16 pat_index)
@@ -1346,7 +1349,6 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 		return ERR_PTR(-ENOMEM);
 
 	vm->xe = xe;
-	kref_init(&vm->refcount);
 
 	vm->size = 1ull << xe->info.va_bits;
 
@@ -1498,7 +1500,7 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 	}
 	dma_resv_unlock(xe_vm_resv(vm));
 err_put:
-	drm_gpuvm_destroy(&vm->gpuvm);
+	//	drm_gpuvm_destroy(&vm->gpuvm);
 err_no_resv:
 	for_each_tile(tile, xe, id)
 		xe_range_fence_tree_fini(&vm->rftree[id]);
@@ -1586,6 +1588,10 @@ void xe_vm_close_and_put(struct xe_vm *vm)
 				xe_pt_destroy(vm->scratch_pt[id][i], vm->flags,
 					      NULL);
 		}
+		if (vm->pt_root[id]) {
+			xe_pt_destroy(vm->pt_root[id], vm->flags, NULL);
+			vm->pt_root[id] = NULL;
+		}
 	}
 	xe_vm_unlock(vm);
 
@@ -1639,29 +1645,17 @@ static void vm_destroy_work_func(struct work_struct *w)
 		}
 	}
 
-	/*
-	 * XXX: We delay destroying the PT root until the VM if freed as PT root
-	 * is needed for xe_vm_lock to work. If we remove that dependency this
-	 * can be moved to xe_vm_close_and_put.
-	 */
-	xe_vm_lock(vm, false);
-	for_each_tile(tile, xe, id) {
-		if (vm->pt_root[id]) {
-			xe_pt_destroy(vm->pt_root[id], vm->flags, NULL);
-			vm->pt_root[id] = NULL;
-		}
-	}
-	xe_vm_unlock(vm);
+	for_each_tile(tile, xe, id)
+		XE_WARN_ON(vm->pt_root[id]);
 
 	trace_xe_vm_free(vm);
 	dma_fence_put(vm->rebind_fence);
-	drm_gpuvm_destroy(&vm->gpuvm);
 	kfree(vm);
 }
 
-void xe_vm_free(struct kref *ref)
+static void xe_vm_free(struct drm_gpuvm *gpuvm)
 {
-	struct xe_vm *vm = container_of(ref, struct xe_vm, refcount);
+	struct xe_vm *vm = container_of(gpuvm, struct xe_vm, gpuvm);
 
 	/* To destroy the VM we need to be able to sleep */
 	queue_work(system_unbound_wq, &vm->destroy_work);
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index 88077214261f..a348dc56027c 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -24,20 +24,19 @@ struct xe_sync_entry;
 struct drm_exec;
 
 struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags);
-void xe_vm_free(struct kref *ref);
 
 struct xe_vm *xe_vm_lookup(struct xe_file *xef, u32 id);
 int xe_vma_cmp_vma_cb(const void *key, const struct rb_node *node);
 
 static inline struct xe_vm *xe_vm_get(struct xe_vm *vm)
 {
-	kref_get(&vm->refcount);
+	drm_gpuvm_get(&vm->gpuvm);
 	return vm;
 }
 
 static inline void xe_vm_put(struct xe_vm *vm)
 {
-	kref_put(&vm->refcount, xe_vm_free);
+	drm_gpuvm_put(&vm->gpuvm);
 }
 
 int xe_vm_lock(struct xe_vm *vm, bool intr);
diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
index f11ac81cf010..d643dccf9e73 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -137,8 +137,6 @@ struct xe_vm {
 
 	struct xe_device *xe;
 
-	struct kref refcount;
-
 	/* exec queue used for (un)binding vma's */
 	struct xe_exec_queue *q[XE_MAX_TILES_PER_DEVICE];
 
-- 
2.41.0


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

* [Intel-xe] [CI v8 13/18] drm/gpuvm: add an abstraction for a VM / BO combination
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (10 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 12/18] drm/xe: Adjust to commit " Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 14/18] drm/xe: Adjust to commit "drm/gpuvm: add an abstraction for a VM/BO combination" Thomas Hellström
                   ` (11 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

Add an abstraction layer between the drm_gpuva mappings of a particular
drm_gem_object and this GEM object itself. The abstraction represents a
combination of a drm_gem_object and drm_gpuvm. The drm_gem_object holds
a list of drm_gpuvm_bo structures (the structure representing this
abstraction), while each drm_gpuvm_bo contains list of mappings of this
GEM object.

This has multiple advantages:

1) We can use the drm_gpuvm_bo structure to attach it to various lists
   of the drm_gpuvm. This is useful for tracking external and evicted
   objects per VM, which is introduced in subsequent patches.

2) Finding mappings of a certain drm_gem_object mapped in a certain
   drm_gpuvm becomes much cheaper.

3) Drivers can derive and extend the structure to easily represent
   driver specific states of a BO for a certain GPUVM.

The idea of this abstraction was taken from amdgpu, hence the credit for
this idea goes to the developers of amdgpu.

Cc: Christian König <christian.koenig@amd.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
---
 drivers/gpu/drm/drm_gpuvm.c            | 336 +++++++++++++++++++++----
 drivers/gpu/drm/nouveau/nouveau_uvmm.c |  63 +++--
 include/drm/drm_gem.h                  |  32 +--
 include/drm/drm_gpuvm.h                | 185 +++++++++++++-
 4 files changed, 530 insertions(+), 86 deletions(-)

diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index 6e3199f4a1e0..0145e0e24d41 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -70,6 +70,18 @@
  * &drm_gem_object, such as the &drm_gem_object containing the root page table,
  * but it can also be a 'dummy' object, which can be allocated with
  * drm_gpuvm_resv_object_alloc().
+ *
+ * In order to connect a struct drm_gpuva its backing &drm_gem_object each
+ * &drm_gem_object maintains a list of &drm_gpuvm_bo structures, and each
+ * &drm_gpuvm_bo contains a list of &drm_gpuva structures.
+ *
+ * A &drm_gpuvm_bo is an abstraction that represents a combination of a
+ * &drm_gpuvm and a &drm_gem_object. Every such combination should be unique.
+ * This is ensured by the API through drm_gpuvm_bo_obtain() and
+ * drm_gpuvm_bo_obtain_prealloc() which first look into the corresponding
+ * &drm_gem_object list of &drm_gpuvm_bos for an existing instance of this
+ * particular combination. If not existent a new instance is created and linked
+ * to the &drm_gem_object.
  */
 
 /**
@@ -395,21 +407,28 @@
 /**
  * DOC: Locking
  *
- * Generally, the GPU VA manager does not take care of locking itself, it is
- * the drivers responsibility to take care about locking. Drivers might want to
- * protect the following operations: inserting, removing and iterating
- * &drm_gpuva objects as well as generating all kinds of operations, such as
- * split / merge or prefetch.
- *
- * The GPU VA manager also does not take care of the locking of the backing
- * &drm_gem_object buffers GPU VA lists by itself; drivers are responsible to
- * enforce mutual exclusion using either the GEMs dma_resv lock or alternatively
- * a driver specific external lock. For the latter see also
- * drm_gem_gpuva_set_lock().
- *
- * However, the GPU VA manager contains lockdep checks to ensure callers of its
- * API hold the corresponding lock whenever the &drm_gem_objects GPU VA list is
- * accessed by functions such as drm_gpuva_link() or drm_gpuva_unlink().
+ * In terms of managing &drm_gpuva entries DRM GPUVM does not take care of
+ * locking itself, it is the drivers responsibility to take care about locking.
+ * Drivers might want to protect the following operations: inserting, removing
+ * and iterating &drm_gpuva objects as well as generating all kinds of
+ * operations, such as split / merge or prefetch.
+ *
+ * DRM GPUVM also does not take care of the locking of the backing
+ * &drm_gem_object buffers GPU VA lists and &drm_gpuvm_bo abstractions by
+ * itself; drivers are responsible to enforce mutual exclusion using either the
+ * GEMs dma_resv lock or alternatively a driver specific external lock. For the
+ * latter see also drm_gem_gpuva_set_lock().
+ *
+ * However, DRM GPUVM contains lockdep checks to ensure callers of its API hold
+ * the corresponding lock whenever the &drm_gem_objects GPU VA list is accessed
+ * by functions such as drm_gpuva_link() or drm_gpuva_unlink(), but also
+ * drm_gpuvm_bo_obtain() and drm_gpuvm_bo_put().
+ *
+ * The latter is required since on creation and destruction of a &drm_gpuvm_bo
+ * the &drm_gpuvm_bo is attached / removed from the &drm_gem_objects gpuva list.
+ * Subsequent calls to drm_gpuvm_bo_obtain() for the same &drm_gpuvm and
+ * &drm_gem_object must be able to observe previous creations and destructions
+ * of &drm_gpuvm_bos in order to keep instances unique.
  */
 
 /**
@@ -439,6 +458,7 @@
  *	{
  *		struct drm_gpuva_ops *ops;
  *		struct drm_gpuva_op *op
+ *		struct drm_gpuvm_bo *vm_bo;
  *
  *		driver_lock_va_space();
  *		ops = drm_gpuvm_sm_map_ops_create(gpuvm, addr, range,
@@ -446,6 +466,10 @@
  *		if (IS_ERR(ops))
  *			return PTR_ERR(ops);
  *
+ *		vm_bo = drm_gpuvm_bo_obtain(gpuvm, obj);
+ *		if (IS_ERR(vm_bo))
+ *			return PTR_ERR(vm_bo);
+ *
  *		drm_gpuva_for_each_op(op, ops) {
  *			struct drm_gpuva *va;
  *
@@ -458,7 +482,7 @@
  *
  *				driver_vm_map();
  *				drm_gpuva_map(gpuvm, va, &op->map);
- *				drm_gpuva_link(va);
+ *				drm_gpuva_link(va, vm_bo);
  *
  *				break;
  *			case DRM_GPUVA_OP_REMAP: {
@@ -485,11 +509,11 @@
  *				driver_vm_remap();
  *				drm_gpuva_remap(prev, next, &op->remap);
  *
- *				drm_gpuva_unlink(va);
  *				if (prev)
- *					drm_gpuva_link(prev);
+ *					drm_gpuva_link(prev, va->vm_bo);
  *				if (next)
- *					drm_gpuva_link(next);
+ *					drm_gpuva_link(next, va->vm_bo);
+ *				drm_gpuva_unlink(va);
  *
  *				break;
  *			}
@@ -505,6 +529,7 @@
  *				break;
  *			}
  *		}
+ *		drm_gpuvm_bo_put(vm_bo);
  *		driver_unlock_va_space();
  *
  *		return 0;
@@ -514,6 +539,7 @@
  *
  *	struct driver_context {
  *		struct drm_gpuvm *gpuvm;
+ *		struct drm_gpuvm_bo *vm_bo;
  *		struct drm_gpuva *new_va;
  *		struct drm_gpuva *prev_va;
  *		struct drm_gpuva *next_va;
@@ -534,6 +560,7 @@
  *				  struct drm_gem_object *obj, u64 offset)
  *	{
  *		struct driver_context ctx;
+ *		struct drm_gpuvm_bo *vm_bo;
  *		struct drm_gpuva_ops *ops;
  *		struct drm_gpuva_op *op;
  *		int ret = 0;
@@ -543,16 +570,23 @@
  *		ctx.new_va = kzalloc(sizeof(*ctx.new_va), GFP_KERNEL);
  *		ctx.prev_va = kzalloc(sizeof(*ctx.prev_va), GFP_KERNEL);
  *		ctx.next_va = kzalloc(sizeof(*ctx.next_va), GFP_KERNEL);
- *		if (!ctx.new_va || !ctx.prev_va || !ctx.next_va) {
+ *		ctx.vm_bo = drm_gpuvm_bo_create(gpuvm, obj);
+ *		if (!ctx.new_va || !ctx.prev_va || !ctx.next_va || !vm_bo) {
  *			ret = -ENOMEM;
  *			goto out;
  *		}
  *
+ *		// Typically protected with a driver specific GEM gpuva lock
+ *		// used in the fence signaling path for drm_gpuva_link() and
+ *		// drm_gpuva_unlink(), hence pre-allocate.
+ *		ctx.vm_bo = drm_gpuvm_bo_obtain_prealloc(ctx.vm_bo);
+ *
  *		driver_lock_va_space();
  *		ret = drm_gpuvm_sm_map(gpuvm, &ctx, addr, range, obj, offset);
  *		driver_unlock_va_space();
  *
  *	out:
+ *		drm_gpuvm_bo_put(ctx.vm_bo);
  *		kfree(ctx.new_va);
  *		kfree(ctx.prev_va);
  *		kfree(ctx.next_va);
@@ -565,7 +599,7 @@
  *
  *		drm_gpuva_map(ctx->vm, ctx->new_va, &op->map);
  *
- *		drm_gpuva_link(ctx->new_va);
+ *		drm_gpuva_link(ctx->new_va, ctx->vm_bo);
  *
  *		// prevent the new GPUVA from being freed in
  *		// driver_mapping_create()
@@ -577,22 +611,23 @@
  *	int driver_gpuva_remap(struct drm_gpuva_op *op, void *__ctx)
  *	{
  *		struct driver_context *ctx = __ctx;
+ *		struct drm_gpuva *va = op->remap.unmap->va;
  *
  *		drm_gpuva_remap(ctx->prev_va, ctx->next_va, &op->remap);
  *
- *		drm_gpuva_unlink(op->remap.unmap->va);
- *		kfree(op->remap.unmap->va);
- *
  *		if (op->remap.prev) {
- *			drm_gpuva_link(ctx->prev_va);
+ *			drm_gpuva_link(ctx->prev_va, va->vm_bo);
  *			ctx->prev_va = NULL;
  *		}
  *
  *		if (op->remap.next) {
- *			drm_gpuva_link(ctx->next_va);
+ *			drm_gpuva_link(ctx->next_va, va->vm_bo);
  *			ctx->next_va = NULL;
  *		}
  *
+ *		drm_gpuva_unlink(va);
+ *		kfree(va);
+ *
  *		return 0;
  *	}
  *
@@ -813,6 +848,195 @@ drm_gpuvm_put(struct drm_gpuvm *gpuvm)
 }
 EXPORT_SYMBOL_GPL(drm_gpuvm_put);
 
+/**
+ * drm_gpuvm_bo_create() - create a new instance of struct drm_gpuvm_bo
+ * @gpuvm: The &drm_gpuvm the @obj is mapped in.
+ * @obj: The &drm_gem_object being mapped in the @gpuvm.
+ *
+ * If provided by the driver, this function uses the &drm_gpuvm_ops
+ * vm_bo_alloc() callback to allocate.
+ *
+ * Returns: a pointer to the &drm_gpuvm_bo on success, NULL on failure
+ */
+struct drm_gpuvm_bo *
+drm_gpuvm_bo_create(struct drm_gpuvm *gpuvm,
+		    struct drm_gem_object *obj)
+{
+	const struct drm_gpuvm_ops *ops = gpuvm->ops;
+	struct drm_gpuvm_bo *vm_bo;
+
+	if (ops && ops->vm_bo_alloc)
+		vm_bo = ops->vm_bo_alloc();
+	else
+		vm_bo = kzalloc(sizeof(*vm_bo), GFP_KERNEL);
+
+	if (unlikely(!vm_bo))
+		return NULL;
+
+	vm_bo->vm = drm_gpuvm_get(gpuvm);
+	vm_bo->obj = obj;
+	drm_gem_object_get(obj);
+
+	kref_init(&vm_bo->kref);
+	INIT_LIST_HEAD(&vm_bo->list.gpuva);
+	INIT_LIST_HEAD(&vm_bo->list.entry.gem);
+
+	return vm_bo;
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_bo_create);
+
+static void
+drm_gpuvm_bo_destroy(struct kref *kref)
+{
+	struct drm_gpuvm_bo *vm_bo = container_of(kref, struct drm_gpuvm_bo,
+						  kref);
+	struct drm_gpuvm *gpuvm = vm_bo->vm;
+	const struct drm_gpuvm_ops *ops = gpuvm->ops;
+	struct drm_gem_object *obj = vm_bo->obj;
+	bool lock = !drm_gpuvm_resv_protected(gpuvm);
+
+	if (!lock)
+		drm_gpuvm_resv_assert_held(gpuvm);
+
+	drm_gem_gpuva_assert_lock_held(obj);
+	list_del(&vm_bo->list.entry.gem);
+
+	if (ops && ops->vm_bo_free)
+		ops->vm_bo_free(vm_bo);
+	else
+		kfree(vm_bo);
+
+	drm_gpuvm_put(gpuvm);
+	drm_gem_object_put(obj);
+}
+
+/**
+ * drm_gpuvm_bo_put() - drop a struct drm_gpuvm_bo reference
+ * @vm_bo: the &drm_gpuvm_bo to release the reference of
+ *
+ * This releases a reference to @vm_bo.
+ *
+ * If the reference count drops to zero, the &gpuvm_bo is destroyed, which
+ * includes removing it from the GEMs gpuva list. Hence, if a call to this
+ * function can potentially let the reference count to zero the caller must
+ * hold the dma-resv or driver specific GEM gpuva lock.
+ */
+void
+drm_gpuvm_bo_put(struct drm_gpuvm_bo *vm_bo)
+{
+	if (vm_bo)
+		kref_put(&vm_bo->kref, drm_gpuvm_bo_destroy);
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_bo_put);
+
+static struct drm_gpuvm_bo *
+__drm_gpuvm_bo_find(struct drm_gpuvm *gpuvm,
+		    struct drm_gem_object *obj)
+{
+	struct drm_gpuvm_bo *vm_bo;
+
+	drm_gem_gpuva_assert_lock_held(obj);
+	drm_gem_for_each_gpuvm_bo(vm_bo, obj)
+		if (vm_bo->vm == gpuvm)
+			return vm_bo;
+
+	return NULL;
+}
+
+/**
+ * drm_gpuvm_bo_find() - find the &drm_gpuvm_bo for the given
+ * &drm_gpuvm and &drm_gem_object
+ * @gpuvm: The &drm_gpuvm the @obj is mapped in.
+ * @obj: The &drm_gem_object being mapped in the @gpuvm.
+ *
+ * Find the &drm_gpuvm_bo representing the combination of the given
+ * &drm_gpuvm and &drm_gem_object. If found, increases the reference
+ * count of the &drm_gpuvm_bo accordingly.
+ *
+ * Returns: a pointer to the &drm_gpuvm_bo on success, NULL on failure
+ */
+struct drm_gpuvm_bo *
+drm_gpuvm_bo_find(struct drm_gpuvm *gpuvm,
+		  struct drm_gem_object *obj)
+{
+	struct drm_gpuvm_bo *vm_bo = __drm_gpuvm_bo_find(gpuvm, obj);
+
+	return vm_bo ? drm_gpuvm_bo_get(vm_bo) : NULL;
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_bo_find);
+
+/**
+ * drm_gpuvm_bo_obtain() - obtains and instance of the &drm_gpuvm_bo for the
+ * given &drm_gpuvm and &drm_gem_object
+ * @gpuvm: The &drm_gpuvm the @obj is mapped in.
+ * @obj: The &drm_gem_object being mapped in the @gpuvm.
+ *
+ * Find the &drm_gpuvm_bo representing the combination of the given
+ * &drm_gpuvm and &drm_gem_object. If found, increases the reference
+ * count of the &drm_gpuvm_bo accordingly. If not found, allocates a new
+ * &drm_gpuvm_bo.
+ *
+ * A new &drm_gpuvm_bo is added to the GEMs gpuva list.
+ *
+ * Returns: a pointer to the &drm_gpuvm_bo on success, an ERR_PTR on failure
+ */
+struct drm_gpuvm_bo *
+drm_gpuvm_bo_obtain(struct drm_gpuvm *gpuvm,
+		    struct drm_gem_object *obj)
+{
+	struct drm_gpuvm_bo *vm_bo;
+
+	vm_bo = drm_gpuvm_bo_find(gpuvm, obj);
+	if (vm_bo)
+		return vm_bo;
+
+	vm_bo = drm_gpuvm_bo_create(gpuvm, obj);
+	if (!vm_bo)
+		return ERR_PTR(-ENOMEM);
+
+	drm_gem_gpuva_assert_lock_held(obj);
+	list_add_tail(&vm_bo->list.entry.gem, &obj->gpuva.list);
+
+	return vm_bo;
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_bo_obtain);
+
+/**
+ * drm_gpuvm_bo_obtain_prealloc() - obtains and instance of the &drm_gpuvm_bo
+ * for the given &drm_gpuvm and &drm_gem_object
+ * @__vm_bo: A pre-allocated struct drm_gpuvm_bo.
+ *
+ * Find the &drm_gpuvm_bo representing the combination of the given
+ * &drm_gpuvm and &drm_gem_object. If found, increases the reference
+ * count of the found &drm_gpuvm_bo accordingly, while the @__vm_bo reference
+ * count is decreased. If not found @__vm_bo is returned without further
+ * increase of the reference count.
+ *
+ * A new &drm_gpuvm_bo is added to the GEMs gpuva list.
+ *
+ * Returns: a pointer to the found &drm_gpuvm_bo or @__vm_bo if no existing
+ * &drm_gpuvm_bo was found
+ */
+struct drm_gpuvm_bo *
+drm_gpuvm_bo_obtain_prealloc(struct drm_gpuvm_bo *__vm_bo)
+{
+	struct drm_gpuvm *gpuvm = __vm_bo->vm;
+	struct drm_gem_object *obj = __vm_bo->obj;
+	struct drm_gpuvm_bo *vm_bo;
+
+	vm_bo = drm_gpuvm_bo_find(gpuvm, obj);
+	if (vm_bo) {
+		drm_gpuvm_bo_put(__vm_bo);
+		return vm_bo;
+	}
+
+	drm_gem_gpuva_assert_lock_held(obj);
+	list_add_tail(&__vm_bo->list.entry.gem, &obj->gpuva.list);
+
+	return __vm_bo;
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_bo_obtain_prealloc);
+
 static int
 __drm_gpuva_insert(struct drm_gpuvm *gpuvm,
 		   struct drm_gpuva *va)
@@ -904,24 +1128,33 @@ EXPORT_SYMBOL_GPL(drm_gpuva_remove);
 /**
  * drm_gpuva_link() - link a &drm_gpuva
  * @va: the &drm_gpuva to link
+ * @vm_bo: the &drm_gpuvm_bo to add the &drm_gpuva to
  *
- * This adds the given &va to the GPU VA list of the &drm_gem_object it is
- * associated with.
+ * This adds the given &va to the GPU VA list of the &drm_gpuvm_bo and the
+ * &drm_gpuvm_bo to the &drm_gem_object it is associated with.
+ *
+ * For every &drm_gpuva entry added to the &drm_gpuvm_bo an additional
+ * reference of the latter is taken.
  *
  * This function expects the caller to protect the GEM's GPUVA list against
- * concurrent access using the GEMs dma_resv lock.
+ * concurrent access using either the GEMs dma_resv lock or a driver specific
+ * lock set through drm_gem_gpuva_set_lock().
  */
 void
-drm_gpuva_link(struct drm_gpuva *va)
+drm_gpuva_link(struct drm_gpuva *va, struct drm_gpuvm_bo *vm_bo)
 {
 	struct drm_gem_object *obj = va->gem.obj;
+	struct drm_gpuvm *gpuvm = va->vm;
 
 	if (unlikely(!obj))
 		return;
 
-	drm_gem_gpuva_assert_lock_held(obj);
+	drm_WARN_ON(gpuvm->drm, obj != vm_bo->obj);
 
-	list_add_tail(&va->gem.entry, &obj->gpuva.list);
+	va->vm_bo = drm_gpuvm_bo_get(vm_bo);
+
+	drm_gem_gpuva_assert_lock_held(obj);
+	list_add_tail(&va->gem.entry, &vm_bo->list.gpuva);
 }
 EXPORT_SYMBOL_GPL(drm_gpuva_link);
 
@@ -932,20 +1165,31 @@ EXPORT_SYMBOL_GPL(drm_gpuva_link);
  * This removes the given &va from the GPU VA list of the &drm_gem_object it is
  * associated with.
  *
+ * This removes the given &va from the GPU VA list of the &drm_gpuvm_bo and
+ * the &drm_gpuvm_bo from the &drm_gem_object it is associated with in case
+ * this call unlinks the last &drm_gpuva from the &drm_gpuvm_bo.
+ *
+ * For every &drm_gpuva entry removed from the &drm_gpuvm_bo a reference of
+ * the latter is dropped.
+ *
  * This function expects the caller to protect the GEM's GPUVA list against
- * concurrent access using the GEMs dma_resv lock.
+ * concurrent access using either the GEMs dma_resv lock or a driver specific
+ * lock set through drm_gem_gpuva_set_lock().
  */
 void
 drm_gpuva_unlink(struct drm_gpuva *va)
 {
 	struct drm_gem_object *obj = va->gem.obj;
+	struct drm_gpuvm_bo *vm_bo = va->vm_bo;
 
 	if (unlikely(!obj))
 		return;
 
 	drm_gem_gpuva_assert_lock_held(obj);
-
 	list_del_init(&va->gem.entry);
+
+	va->vm_bo = NULL;
+	drm_gpuvm_bo_put(vm_bo);
 }
 EXPORT_SYMBOL_GPL(drm_gpuva_unlink);
 
@@ -1090,10 +1334,10 @@ drm_gpuva_remap(struct drm_gpuva *prev,
 		struct drm_gpuva *next,
 		struct drm_gpuva_op_remap *op)
 {
-	struct drm_gpuva *curr = op->unmap->va;
-	struct drm_gpuvm *gpuvm = curr->vm;
+	struct drm_gpuva *va = op->unmap->va;
+	struct drm_gpuvm *gpuvm = va->vm;
 
-	drm_gpuva_remove(curr);
+	drm_gpuva_remove(va);
 
 	if (op->prev) {
 		drm_gpuva_init_from_op(prev, op->prev);
@@ -1735,9 +1979,8 @@ drm_gpuvm_prefetch_ops_create(struct drm_gpuvm *gpuvm,
 EXPORT_SYMBOL_GPL(drm_gpuvm_prefetch_ops_create);
 
 /**
- * drm_gpuvm_gem_unmap_ops_create() - creates the &drm_gpuva_ops to unmap a GEM
- * @gpuvm: the &drm_gpuvm representing the GPU VA space
- * @obj: the &drm_gem_object to unmap
+ * drm_gpuvm_bo_unmap_ops_create() - creates the &drm_gpuva_ops to unmap a GEM
+ * @vm_bo: the &drm_gpuvm_bo abstraction
  *
  * This function creates a list of operations to perform unmapping for every
  * GPUVA attached to a GEM.
@@ -1754,15 +1997,14 @@ EXPORT_SYMBOL_GPL(drm_gpuvm_prefetch_ops_create);
  * Returns: a pointer to the &drm_gpuva_ops on success, an ERR_PTR on failure
  */
 struct drm_gpuva_ops *
-drm_gpuvm_gem_unmap_ops_create(struct drm_gpuvm *gpuvm,
-			       struct drm_gem_object *obj)
+drm_gpuvm_bo_unmap_ops_create(struct drm_gpuvm_bo *vm_bo)
 {
 	struct drm_gpuva_ops *ops;
 	struct drm_gpuva_op *op;
 	struct drm_gpuva *va;
 	int ret;
 
-	drm_gem_gpuva_assert_lock_held(obj);
+	drm_gem_gpuva_assert_lock_held(vm_bo->obj);
 
 	ops = kzalloc(sizeof(*ops), GFP_KERNEL);
 	if (!ops)
@@ -1770,8 +2012,8 @@ drm_gpuvm_gem_unmap_ops_create(struct drm_gpuvm *gpuvm,
 
 	INIT_LIST_HEAD(&ops->list);
 
-	drm_gem_for_each_gpuva(va, obj) {
-		op = gpuva_op_alloc(gpuvm);
+	drm_gpuvm_bo_for_each_va(va, vm_bo) {
+		op = gpuva_op_alloc(vm_bo->vm);
 		if (!op) {
 			ret = -ENOMEM;
 			goto err_free_ops;
@@ -1785,10 +2027,10 @@ drm_gpuvm_gem_unmap_ops_create(struct drm_gpuvm *gpuvm,
 	return ops;
 
 err_free_ops:
-	drm_gpuva_ops_free(gpuvm, ops);
+	drm_gpuva_ops_free(vm_bo->vm, ops);
 	return ERR_PTR(ret);
 }
-EXPORT_SYMBOL_GPL(drm_gpuvm_gem_unmap_ops_create);
+EXPORT_SYMBOL_GPL(drm_gpuvm_bo_unmap_ops_create);
 
 /**
  * drm_gpuva_ops_free() - free the given &drm_gpuva_ops
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index cb2f06565c46..eda7bb8624f1 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -62,6 +62,8 @@ struct bind_job_op {
 	enum vm_bind_op op;
 	u32 flags;
 
+	struct drm_gpuvm_bo *vm_bo;
+
 	struct {
 		u64 addr;
 		u64 range;
@@ -1101,22 +1103,28 @@ bind_validate_region(struct nouveau_job *job)
 }
 
 static void
-bind_link_gpuvas(struct drm_gpuva_ops *ops, struct nouveau_uvma_prealloc *new)
+bind_link_gpuvas(struct bind_job_op *bop)
 {
+	struct nouveau_uvma_prealloc *new = &bop->new;
+	struct drm_gpuvm_bo *vm_bo = bop->vm_bo;
+	struct drm_gpuva_ops *ops = bop->ops;
 	struct drm_gpuva_op *op;
 
 	drm_gpuva_for_each_op(op, ops) {
 		switch (op->op) {
 		case DRM_GPUVA_OP_MAP:
-			drm_gpuva_link(&new->map->va);
+			drm_gpuva_link(&new->map->va, vm_bo);
 			break;
-		case DRM_GPUVA_OP_REMAP:
+		case DRM_GPUVA_OP_REMAP: {
+			struct drm_gpuva *va = op->remap.unmap->va;
+
 			if (op->remap.prev)
-				drm_gpuva_link(&new->prev->va);
+				drm_gpuva_link(&new->prev->va, va->vm_bo);
 			if (op->remap.next)
-				drm_gpuva_link(&new->next->va);
-			drm_gpuva_unlink(op->remap.unmap->va);
+				drm_gpuva_link(&new->next->va, va->vm_bo);
+			drm_gpuva_unlink(va);
 			break;
+		}
 		case DRM_GPUVA_OP_UNMAP:
 			drm_gpuva_unlink(op->unmap.va);
 			break;
@@ -1138,10 +1146,17 @@ nouveau_uvmm_bind_job_submit(struct nouveau_job *job)
 
 	list_for_each_op(op, &bind_job->ops) {
 		if (op->op == OP_MAP) {
-			op->gem.obj = drm_gem_object_lookup(job->file_priv,
-							    op->gem.handle);
-			if (!op->gem.obj)
+			struct drm_gem_object *obj = op->gem.obj =
+				drm_gem_object_lookup(job->file_priv,
+						      op->gem.handle);
+			if (!obj)
 				return -ENOENT;
+
+			dma_resv_lock(obj->resv, NULL);
+			op->vm_bo = drm_gpuvm_bo_obtain(&uvmm->base, obj);
+			dma_resv_unlock(obj->resv);
+			if (IS_ERR(op->vm_bo))
+				return PTR_ERR(op->vm_bo);
 		}
 
 		ret = bind_validate_op(job, op);
@@ -1352,7 +1367,7 @@ nouveau_uvmm_bind_job_submit(struct nouveau_job *job)
 		case OP_UNMAP_SPARSE:
 		case OP_MAP:
 		case OP_UNMAP:
-			bind_link_gpuvas(op->ops, &op->new);
+			bind_link_gpuvas(op);
 			break;
 		default:
 			break;
@@ -1499,6 +1514,12 @@ nouveau_uvmm_bind_job_free_work_fn(struct work_struct *work)
 		if (!IS_ERR_OR_NULL(op->ops))
 			drm_gpuva_ops_free(&uvmm->base, op->ops);
 
+		if (!IS_ERR_OR_NULL(op->vm_bo)) {
+			dma_resv_lock(obj->resv, NULL);
+			drm_gpuvm_bo_put(op->vm_bo);
+			dma_resv_unlock(obj->resv);
+		}
+
 		if (obj)
 			drm_gem_object_put(obj);
 	}
@@ -1752,15 +1773,18 @@ void
 nouveau_uvmm_bo_map_all(struct nouveau_bo *nvbo, struct nouveau_mem *mem)
 {
 	struct drm_gem_object *obj = &nvbo->bo.base;
+	struct drm_gpuvm_bo *vm_bo;
 	struct drm_gpuva *va;
 
 	dma_resv_assert_held(obj->resv);
 
-	drm_gem_for_each_gpuva(va, obj) {
-		struct nouveau_uvma *uvma = uvma_from_va(va);
+	drm_gem_for_each_gpuvm_bo(vm_bo, obj) {
+		drm_gpuvm_bo_for_each_va(va, vm_bo) {
+			struct nouveau_uvma *uvma = uvma_from_va(va);
 
-		nouveau_uvma_map(uvma, mem);
-		drm_gpuva_invalidate(va, false);
+			nouveau_uvma_map(uvma, mem);
+			drm_gpuva_invalidate(va, false);
+		}
 	}
 }
 
@@ -1768,15 +1792,18 @@ void
 nouveau_uvmm_bo_unmap_all(struct nouveau_bo *nvbo)
 {
 	struct drm_gem_object *obj = &nvbo->bo.base;
+	struct drm_gpuvm_bo *vm_bo;
 	struct drm_gpuva *va;
 
 	dma_resv_assert_held(obj->resv);
 
-	drm_gem_for_each_gpuva(va, obj) {
-		struct nouveau_uvma *uvma = uvma_from_va(va);
+	drm_gem_for_each_gpuvm_bo(vm_bo, obj) {
+		drm_gpuvm_bo_for_each_va(va, vm_bo) {
+			struct nouveau_uvma *uvma = uvma_from_va(va);
 
-		nouveau_uvma_unmap(uvma);
-		drm_gpuva_invalidate(va, true);
+			nouveau_uvma_unmap(uvma);
+			drm_gpuva_invalidate(va, true);
+		}
 	}
 }
 
diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h
index bc9f6aa2f3fe..7147978d82d8 100644
--- a/include/drm/drm_gem.h
+++ b/include/drm/drm_gem.h
@@ -571,7 +571,7 @@ int drm_gem_evict(struct drm_gem_object *obj);
  * drm_gem_gpuva_init() - initialize the gpuva list of a GEM object
  * @obj: the &drm_gem_object
  *
- * This initializes the &drm_gem_object's &drm_gpuva list.
+ * This initializes the &drm_gem_object's &drm_gpuvm_bo list.
  *
  * Calling this function is only necessary for drivers intending to support the
  * &drm_driver_feature DRIVER_GEM_GPUVA.
@@ -584,28 +584,28 @@ static inline void drm_gem_gpuva_init(struct drm_gem_object *obj)
 }
 
 /**
- * drm_gem_for_each_gpuva() - iternator to walk over a list of gpuvas
- * @entry__: &drm_gpuva structure to assign to in each iteration step
- * @obj__: the &drm_gem_object the &drm_gpuvas to walk are associated with
+ * drm_gem_for_each_gpuvm_bo() - iterator to walk over a list of &drm_gpuvm_bo
+ * @entry__: &drm_gpuvm_bo structure to assign to in each iteration step
+ * @obj__: the &drm_gem_object the &drm_gpuvm_bo to walk are associated with
  *
- * This iterator walks over all &drm_gpuva structures associated with the
- * &drm_gpuva_manager.
+ * This iterator walks over all &drm_gpuvm_bo structures associated with the
+ * &drm_gem_object.
  */
-#define drm_gem_for_each_gpuva(entry__, obj__) \
-	list_for_each_entry(entry__, &(obj__)->gpuva.list, gem.entry)
+#define drm_gem_for_each_gpuvm_bo(entry__, obj__) \
+	list_for_each_entry(entry__, &(obj__)->gpuva.list, list.entry.gem)
 
 /**
- * drm_gem_for_each_gpuva_safe() - iternator to safely walk over a list of
- * gpuvas
- * @entry__: &drm_gpuva structure to assign to in each iteration step
- * @next__: &next &drm_gpuva to store the next step
- * @obj__: the &drm_gem_object the &drm_gpuvas to walk are associated with
+ * drm_gem_for_each_gpuvm_bo_safe() - iterator to safely walk over a list of
+ * &drm_gpuvm_bo
+ * @entry__: &drm_gpuvm_bostructure to assign to in each iteration step
+ * @next__: &next &drm_gpuvm_bo to store the next step
+ * @obj__: the &drm_gem_object the &drm_gpuvm_bo to walk are associated with
  *
- * This iterator walks over all &drm_gpuva structures associated with the
+ * This iterator walks over all &drm_gpuvm_bo structures associated with the
  * &drm_gem_object. It is implemented with list_for_each_entry_safe(), hence
  * it is save against removal of elements.
  */
-#define drm_gem_for_each_gpuva_safe(entry__, next__, obj__) \
-	list_for_each_entry_safe(entry__, next__, &(obj__)->gpuva.list, gem.entry)
+#define drm_gem_for_each_gpuvm_bo_safe(entry__, next__, obj__) \
+	list_for_each_entry_safe(entry__, next__, &(obj__)->gpuva.list, list.entry.gem)
 
 #endif /* __DRM_GEM_H__ */
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index 4dc83a27506a..dbd69f621499 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -25,6 +25,7 @@
  * OTHER DEALINGS IN THE SOFTWARE.
  */
 
+#include <linux/dma-resv.h>
 #include <linux/list.h>
 #include <linux/rbtree.h>
 #include <linux/types.h>
@@ -33,6 +34,7 @@
 #include <drm/drm_gem.h>
 
 struct drm_gpuvm;
+struct drm_gpuvm_bo;
 struct drm_gpuvm_ops;
 
 /**
@@ -73,6 +75,12 @@ struct drm_gpuva {
 	 */
 	struct drm_gpuvm *vm;
 
+	/**
+	 * @vm_bo: the &drm_gpuvm_bo abstraction for the mapped
+	 * &drm_gem_object
+	 */
+	struct drm_gpuvm_bo *vm_bo;
+
 	/**
 	 * @flags: the &drm_gpuva_flags for this mapping
 	 */
@@ -108,7 +116,7 @@ struct drm_gpuva {
 		struct drm_gem_object *obj;
 
 		/**
-		 * @entry: the &list_head to attach this object to a &drm_gem_object
+		 * @entry: the &list_head to attach this object to a &drm_gpuvm_bo
 		 */
 		struct list_head entry;
 	} gem;
@@ -141,7 +149,7 @@ struct drm_gpuva {
 int drm_gpuva_insert(struct drm_gpuvm *gpuvm, struct drm_gpuva *va);
 void drm_gpuva_remove(struct drm_gpuva *va);
 
-void drm_gpuva_link(struct drm_gpuva *va);
+void drm_gpuva_link(struct drm_gpuva *va, struct drm_gpuvm_bo *vm_bo);
 void drm_gpuva_unlink(struct drm_gpuva *va);
 
 struct drm_gpuva *drm_gpuva_find(struct drm_gpuvm *gpuvm,
@@ -188,10 +196,16 @@ static inline bool drm_gpuva_invalidated(struct drm_gpuva *va)
  * enum drm_gpuvm_flags - flags for struct drm_gpuvm
  */
 enum drm_gpuvm_flags {
+	/**
+	 * @DRM_GPUVM_RESV_PROTECTED: GPUVM is protected externally by the
+	 * GPUVM's &dma_resv lock
+	 */
+	DRM_GPUVM_RESV_PROTECTED = BIT(0),
+
 	/**
 	 * @DRM_GPUVM_USERBITS: user defined bits
 	 */
-	DRM_GPUVM_USERBITS = BIT(0),
+	DRM_GPUVM_USERBITS = BIT(1),
 };
 
 /**
@@ -302,6 +316,19 @@ bool drm_gpuvm_interval_empty(struct drm_gpuvm *gpuvm, u64 addr, u64 range);
 struct drm_gem_object *
 drm_gpuvm_resv_object_alloc(struct drm_device *drm);
 
+/**
+ * drm_gpuvm_resv_protected() - indicates whether &DRM_GPUVM_RESV_PROTECTED is
+ * set
+ * @gpuvm: the &drm_gpuvm
+ *
+ * Returns: true if &DRM_GPUVM_RESV_PROTECTED is set, false otherwise.
+ */
+static inline bool
+drm_gpuvm_resv_protected(struct drm_gpuvm *gpuvm)
+{
+	return gpuvm->flags & DRM_GPUVM_RESV_PROTECTED;
+}
+
 /**
  * drm_gpuvm_resv() - returns the &drm_gpuvm's &dma_resv
  * @gpuvm__: the &drm_gpuvm
@@ -320,6 +347,12 @@ drm_gpuvm_resv_object_alloc(struct drm_device *drm);
  */
 #define drm_gpuvm_resv_obj(gpuvm__) ((gpuvm__)->r_obj)
 
+#define drm_gpuvm_resv_held(gpuvm__) \
+	dma_resv_held(drm_gpuvm_resv(gpuvm__))
+
+#define drm_gpuvm_resv_assert_held(gpuvm__) \
+	dma_resv_assert_held(drm_gpuvm_resv(gpuvm__))
+
 #define drm_gpuvm_resv_held(gpuvm__) \
 	dma_resv_held(drm_gpuvm_resv(gpuvm__))
 
@@ -404,6 +437,125 @@ __drm_gpuva_next(struct drm_gpuva *va)
 #define drm_gpuvm_for_each_va_safe(va__, next__, gpuvm__) \
 	list_for_each_entry_safe(va__, next__, &(gpuvm__)->rb.list, rb.entry)
 
+/**
+ * struct drm_gpuvm_bo - structure representing a &drm_gpuvm and
+ * &drm_gem_object combination
+ *
+ * This structure is an abstraction representing a &drm_gpuvm and
+ * &drm_gem_object combination. It serves as an indirection to accelerate
+ * iterating all &drm_gpuvas within a &drm_gpuvm backed by the same
+ * &drm_gem_object.
+ *
+ * Furthermore it is used cache evicted GEM objects for a certain GPU-VM to
+ * accelerate validation.
+ *
+ * Typically, drivers want to create an instance of a struct drm_gpuvm_bo once
+ * a GEM object is mapped first in a GPU-VM and release the instance once the
+ * last mapping of the GEM object in this GPU-VM is unmapped.
+ */
+struct drm_gpuvm_bo {
+	/**
+	 * @vm: The &drm_gpuvm the @obj is mapped in. This is a reference
+	 * counted pointer.
+	 */
+	struct drm_gpuvm *vm;
+
+	/**
+	 * @obj: The &drm_gem_object being mapped in @vm. This is a reference
+	 * counted pointer.
+	 */
+	struct drm_gem_object *obj;
+
+	/**
+	 * @kref: The reference count for this &drm_gpuvm_bo.
+	 */
+	struct kref kref;
+
+	/**
+	 * @list: Structure containing all &list_heads.
+	 */
+	struct {
+		/**
+		 * @gpuva: The list of linked &drm_gpuvas.
+		 *
+		 * It is safe to access entries from this list as long as the
+		 * GEM's gpuva lock is held. See also struct drm_gem_object.
+		 */
+		struct list_head gpuva;
+
+		/**
+		 * @entry: Structure containing all &list_heads serving as
+		 * entry.
+		 */
+		struct {
+			/**
+			 * @gem: List entry to attach to the &drm_gem_objects
+			 * gpuva list.
+			 */
+			struct list_head gem;
+		} entry;
+	} list;
+};
+
+struct drm_gpuvm_bo *
+drm_gpuvm_bo_create(struct drm_gpuvm *gpuvm,
+		    struct drm_gem_object *obj);
+
+struct drm_gpuvm_bo *
+drm_gpuvm_bo_obtain(struct drm_gpuvm *gpuvm,
+		    struct drm_gem_object *obj);
+struct drm_gpuvm_bo *
+drm_gpuvm_bo_obtain_prealloc(struct drm_gpuvm_bo *vm_bo);
+
+/**
+ * drm_gpuvm_bo_get() - acquire a struct drm_gpuvm_bo reference
+ * @vm_bo: the &drm_gpuvm_bo to acquire the reference of
+ *
+ * This function acquires an additional reference to @vm_bo. It is illegal to
+ * call this without already holding a reference. No locks required.
+ */
+static inline struct drm_gpuvm_bo *
+drm_gpuvm_bo_get(struct drm_gpuvm_bo *vm_bo)
+{
+	kref_get(&vm_bo->kref);
+	return vm_bo;
+}
+
+void drm_gpuvm_bo_put(struct drm_gpuvm_bo *vm_bo);
+
+struct drm_gpuvm_bo *
+drm_gpuvm_bo_find(struct drm_gpuvm *gpuvm,
+		  struct drm_gem_object *obj);
+
+/**
+ * drm_gpuvm_bo_for_each_va() - iterator to walk over a list of &drm_gpuva
+ * @va__: &drm_gpuva structure to assign to in each iteration step
+ * @vm_bo__: the &drm_gpuvm_bo the &drm_gpuva to walk are associated with
+ *
+ * This iterator walks over all &drm_gpuva structures associated with the
+ * &drm_gpuvm_bo.
+ *
+ * The caller must hold the GEM's gpuva lock.
+ */
+#define drm_gpuvm_bo_for_each_va(va__, vm_bo__) \
+	list_for_each_entry(va__, &(vm_bo)->list.gpuva, gem.entry)
+
+/**
+ * drm_gpuvm_bo_for_each_va_safe() - iterator to safely walk over a list of
+ * &drm_gpuva
+ * @va__: &drm_gpuva structure to assign to in each iteration step
+ * @next__: &next &drm_gpuva to store the next step
+ * @vm_bo__: the &drm_gpuvm_bo the &drm_gpuva to walk are associated with
+ *
+ * This iterator walks over all &drm_gpuva structures associated with the
+ * &drm_gpuvm_bo. It is implemented with list_for_each_entry_safe(), hence
+ * it is save against removal of elements.
+ *
+ * The caller must hold the GEM's gpuva lock.
+ */
+#define drm_gpuvm_bo_for_each_va_safe(va__, next__, vm_bo__) \
+	list_for_each_entry_safe(va__, next__, &(vm_bo)->list.gpuva, gem.entry)
+
 /**
  * enum drm_gpuva_op_type - GPU VA operation type
  *
@@ -683,8 +835,7 @@ drm_gpuvm_prefetch_ops_create(struct drm_gpuvm *gpuvm,
 				 u64 addr, u64 range);
 
 struct drm_gpuva_ops *
-drm_gpuvm_gem_unmap_ops_create(struct drm_gpuvm *gpuvm,
-			       struct drm_gem_object *obj);
+drm_gpuvm_bo_unmap_ops_create(struct drm_gpuvm_bo *vm_bo);
 
 void drm_gpuva_ops_free(struct drm_gpuvm *gpuvm,
 			struct drm_gpuva_ops *ops);
@@ -736,6 +887,30 @@ struct drm_gpuvm_ops {
 	 */
 	void (*op_free)(struct drm_gpuva_op *op);
 
+	/**
+	 * @vm_bo_alloc: called when the &drm_gpuvm allocates
+	 * a struct drm_gpuvm_bo
+	 *
+	 * Some drivers may want to embed struct drm_gpuvm_bo into driver
+	 * specific structures. By implementing this callback drivers can
+	 * allocate memory accordingly.
+	 *
+	 * This callback is optional.
+	 */
+	struct drm_gpuvm_bo *(*vm_bo_alloc)(void);
+
+	/**
+	 * @vm_bo_free: called when the &drm_gpuvm frees a
+	 * struct drm_gpuvm_bo
+	 *
+	 * Some drivers may want to embed struct drm_gpuvm_bo into driver
+	 * specific structures. By implementing this callback drivers can
+	 * free the previously allocated memory accordingly.
+	 *
+	 * This callback is optional.
+	 */
+	void (*vm_bo_free)(struct drm_gpuvm_bo *vm_bo);
+
 	/**
 	 * @sm_step_map: called from &drm_gpuvm_sm_map to finally insert the
 	 * mapping once all previous steps were completed
-- 
2.41.0


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

* [Intel-xe] [CI v8 14/18] drm/xe: Adjust to commit "drm/gpuvm: add an abstraction for a VM/BO combination"
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (11 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 13/18] drm/gpuvm: add an abstraction for a VM / BO combination Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-12 22:06   ` Dafna Hirschfeld
  2023-11-03 15:32 ` [Intel-xe] [CI v8 15/18] drm/gpuvm: track/lock/validate external/evicted objects Thomas Hellström
                   ` (10 subsequent siblings)
  23 siblings, 1 reply; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c | 11 +++++++----
 drivers/gpu/drm/xe/xe_vm.c | 32 +++++++++++++++++++++++++-------
 2 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 6212e004c0cf..c23a5694a788 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -453,6 +453,7 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
 	struct dma_fence *fence;
 	struct drm_gpuva *gpuva;
 	struct drm_gem_object *obj = &bo->ttm.base;
+	struct drm_gpuvm_bo *vm_bo;
 	int ret = 0;
 
 	dma_resv_assert_held(bo->ttm.base.resv);
@@ -465,11 +466,12 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
 		dma_resv_iter_end(&cursor);
 	}
 
-	drm_gem_for_each_gpuva(gpuva, obj) {
-		struct xe_vma *vma = gpuva_to_vma(gpuva);
-		struct xe_vm *vm = xe_vma_vm(vma);
+	drm_gem_for_each_gpuvm_bo(vm_bo, obj) {
+		drm_gpuvm_bo_for_each_va(gpuva, vm_bo) {
+			struct xe_vma *vma = gpuva_to_vma(gpuva);
+			struct xe_vm *vm = xe_vma_vm(vma);
 
-		trace_xe_vma_evict(vma);
+			trace_xe_vma_evict(vma);
 
 		if (xe_vm_in_fault_mode(vm)) {
 			/* Wait for pending binds / unbinds. */
@@ -523,6 +525,7 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
 			if (vm_resv_locked)
 				dma_resv_unlock(xe_vm_resv(vm));
 		}
+		}
 	}
 
 	return ret;
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index bb44e5ca224a..db5810f72911 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -911,12 +911,21 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
 		vma->gpuva.flags |= XE_VMA_ATOMIC_PTE_BIT;
 
 	if (bo) {
+		struct drm_gpuvm_bo *vm_bo;
+
 		xe_bo_assert_held(bo);
 
+		vm_bo = drm_gpuvm_bo_obtain(vma->gpuva.vm, &bo->ttm.base);
+		if (IS_ERR(vm_bo)) {
+			kfree(vma);
+			return ERR_CAST(vm_bo);
+		}
+
 		drm_gem_object_get(&bo->ttm.base);
 		vma->gpuva.gem.obj = &bo->ttm.base;
 		vma->gpuva.gem.offset = bo_offset_or_userptr;
-		drm_gpuva_link(&vma->gpuva);
+		drm_gpuva_link(&vma->gpuva, vm_bo);
+		drm_gpuvm_bo_put(vm_bo);
 	} else /* userptr or null */ {
 		if (!is_null) {
 			u64 size = end - start + 1;
@@ -998,16 +1007,19 @@ static struct xe_vma *
 bo_has_vm_references_locked(struct xe_bo *bo, struct xe_vm *vm,
 			    struct xe_vma *ignore)
 {
-	struct drm_gpuva *gpuva;
+	struct drm_gpuvm_bo *vm_bo;
+	struct drm_gpuva *va;
 	struct drm_gem_object *obj = &bo->ttm.base;
 
 	xe_bo_assert_held(bo);
 
-	drm_gem_for_each_gpuva(gpuva, obj) {
-		struct xe_vma *vma = gpuva_to_vma(gpuva);
+	drm_gem_for_each_gpuvm_bo(vm_bo, obj) {
+		drm_gpuvm_bo_for_each_va(va, vm_bo) {
+			struct xe_vma *vma = gpuva_to_vma(va);
 
-		if (vma != ignore && xe_vma_vm(vma) == vm)
-			return vma;
+			if (vma != ignore && xe_vma_vm(vma) == vm)
+				return vma;
+		}
 	}
 
 	return NULL;
@@ -2169,6 +2181,7 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
 	struct drm_gpuva_ops *ops;
 	struct drm_gpuva_op *__op;
 	struct xe_vma_op *op;
+	struct drm_gpuvm_bo *vm_bo;
 	int err;
 
 	lockdep_assert_held_write(&vm->lock);
@@ -2226,7 +2239,12 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
 		err = xe_bo_lock(bo, true);
 		if (err)
 			return ERR_PTR(err);
-		ops = drm_gpuvm_gem_unmap_ops_create(&vm->gpuvm, obj);
+
+		vm_bo = drm_gpuvm_bo_find(&vm->gpuvm, obj);
+		if (!vm_bo)
+			break;
+
+		ops = drm_gpuvm_bo_unmap_ops_create(vm_bo);
 		xe_bo_unlock(bo);
 		if (IS_ERR(ops))
 			return ops;
-- 
2.41.0


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

* [Intel-xe] [CI v8 15/18] drm/gpuvm: track/lock/validate external/evicted objects
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (12 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 14/18] drm/xe: Adjust to commit "drm/gpuvm: add an abstraction for a VM/BO combination" Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 16/18] drm/xe: Adapt to GPUVM tracking of external / evicted objects Thomas Hellström
                   ` (9 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

Currently the DRM GPUVM offers common infrastructure to track GPU VA
allocations and mappings, generically connect GPU VA mappings to their
backing buffers and perform more complex mapping operations on the GPU VA
space.

However, there are more design patterns commonly used by drivers, which
can potentially be generalized in order to make the DRM GPUVM represent
a basis for GPU-VM implementations. In this context, this patch aims
at generalizing the following elements.

1) Provide a common dma-resv for GEM objects not being used outside of
   this GPU-VM.

2) Provide tracking of external GEM objects (GEM objects which are
   shared with other GPU-VMs).

3) Provide functions to efficiently lock all GEM objects dma-resv the
   GPU-VM contains mappings of.

4) Provide tracking of evicted GEM objects the GPU-VM contains mappings
   of, such that validation of evicted GEM objects is accelerated.

5) Provide some convinience functions for common patterns.

Big thanks to Boris Brezillon for his help to figure out locking for
drivers updating the GPU VA space within the fence signalling path.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
---
 drivers/gpu/drm/drm_gpuvm.c | 633 ++++++++++++++++++++++++++++++++++++
 include/drm/drm_gpuvm.h     | 250 ++++++++++++++
 2 files changed, 883 insertions(+)

diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c
index 0145e0e24d41..01d445938be9 100644
--- a/drivers/gpu/drm/drm_gpuvm.c
+++ b/drivers/gpu/drm/drm_gpuvm.c
@@ -82,6 +82,21 @@
  * &drm_gem_object list of &drm_gpuvm_bos for an existing instance of this
  * particular combination. If not existent a new instance is created and linked
  * to the &drm_gem_object.
+ *
+ * &drm_gpuvm_bo structures, since unique for a given &drm_gpuvm, are also used
+ * as entry for the &drm_gpuvm's lists of external and evicted objects. Those
+ * lists are maintained in order to accelerate locking of dma-resv locks and
+ * validation of evicted objects bound in a &drm_gpuvm. For instance, all
+ * &drm_gem_object's &dma_resv of a given &drm_gpuvm can be locked by calling
+ * drm_gpuvm_exec_lock(). Once locked drivers can call drm_gpuvm_validate() in
+ * order to validate all evicted &drm_gem_objects. It is also possible to lock
+ * additional &drm_gem_objects by providing the corresponding parameters to
+ * drm_gpuvm_exec_lock() as well as open code the &drm_exec loop while making
+ * use of helper functions such as drm_gpuvm_prepare_range() or
+ * drm_gpuvm_prepare_objects().
+ *
+ * Every bound &drm_gem_object is treated as external object when its &dma_resv
+ * structure is different than the &drm_gpuvm's common &dma_resv structure.
  */
 
 /**
@@ -429,6 +444,20 @@
  * Subsequent calls to drm_gpuvm_bo_obtain() for the same &drm_gpuvm and
  * &drm_gem_object must be able to observe previous creations and destructions
  * of &drm_gpuvm_bos in order to keep instances unique.
+ *
+ * The &drm_gpuvm's lists for keeping track of external and evicted objects are
+ * protected against concurrent insertion / removal and iteration internally.
+ *
+ * However, drivers still need ensure to protect concurrent calls to functions
+ * iterating those lists, namely drm_gpuvm_prepare_objects() and
+ * drm_gpuvm_validate().
+ *
+ * Alternatively, drivers can set the &DRM_GPUVM_RESV_PROTECTED flag to indicate
+ * that the corresponding &dma_resv locks are held in order to protect the
+ * lists. If &DRM_GPUVM_RESV_PROTECTED is set, internal locking is disabled and
+ * the corresponding lockdep checks are enabled. This is an optimization for
+ * drivers which are capable of taking the corresponding &dma_resv locks and
+ * hence do not require internal locking.
  */
 
 /**
@@ -641,6 +670,201 @@
  *	}
  */
 
+/**
+ * get_next_vm_bo_from_list() - get the next vm_bo element
+ * @__gpuvm: the &drm_gpuvm
+ * @__list_name: the name of the list we're iterating on
+ * @__local_list: a pointer to the local list used to store already iterated items
+ * @__prev_vm_bo: the previous element we got from get_next_vm_bo_from_list()
+ *
+ * This helper is here to provide lockless list iteration. Lockless as in, the
+ * iterator releases the lock immediately after picking the first element from
+ * the list, so list insertion deletion can happen concurrently.
+ *
+ * Elements popped from the original list are kept in a local list, so removal
+ * and is_empty checks can still happen while we're iterating the list.
+ */
+#define get_next_vm_bo_from_list(__gpuvm, __list_name, __local_list, __prev_vm_bo)	\
+	({										\
+		struct drm_gpuvm_bo *__vm_bo = NULL;					\
+											\
+		drm_gpuvm_bo_put(__prev_vm_bo);						\
+											\
+		spin_lock(&(__gpuvm)->__list_name.lock);				\
+		if (!(__gpuvm)->__list_name.local_list)					\
+			(__gpuvm)->__list_name.local_list = __local_list;		\
+		else									\
+			drm_WARN_ON((__gpuvm)->drm,					\
+				    (__gpuvm)->__list_name.local_list != __local_list);	\
+											\
+		while (!list_empty(&(__gpuvm)->__list_name.list)) {			\
+			__vm_bo = list_first_entry(&(__gpuvm)->__list_name.list,	\
+						   struct drm_gpuvm_bo,			\
+						   list.entry.__list_name);		\
+			if (kref_get_unless_zero(&__vm_bo->kref)) {			\
+				list_move_tail(&(__vm_bo)->list.entry.__list_name,	\
+					       __local_list);				\
+				break;							\
+			} else {							\
+				list_del_init(&(__vm_bo)->list.entry.__list_name);	\
+				__vm_bo = NULL;						\
+			}								\
+		}									\
+		spin_unlock(&(__gpuvm)->__list_name.lock);				\
+											\
+		__vm_bo;								\
+	})
+
+/**
+ * for_each_vm_bo_in_list() - internal vm_bo list iterator
+ * @__gpuvm: the &drm_gpuvm
+ * @__list_name: the name of the list we're iterating on
+ * @__local_list: a pointer to the local list used to store already iterated items
+ * @__vm_bo: the struct drm_gpuvm_bo to assign in each iteration step
+ *
+ * This helper is here to provide lockless list iteration. Lockless as in, the
+ * iterator releases the lock immediately after picking the first element from the
+ * list, hence list insertion and deletion can happen concurrently.
+ *
+ * It is not allowed to re-assign the vm_bo pointer from inside this loop.
+ *
+ * Typical use:
+ *
+ *	struct drm_gpuvm_bo *vm_bo;
+ *	LIST_HEAD(my_local_list);
+ *
+ *	ret = 0;
+ *	for_each_vm_bo_in_list(gpuvm, <list_name>, &my_local_list, vm_bo) {
+ *		ret = do_something_with_vm_bo(..., vm_bo);
+ *		if (ret)
+ *			break;
+ *	}
+ *	// Drop ref in case we break out of the loop.
+ *	drm_gpuvm_bo_put(vm_bo);
+ *	restore_vm_bo_list(gpuvm, <list_name>, &my_local_list);
+ *
+ *
+ * Only used for internal list iterations, not meant to be exposed to the outside
+ * world.
+ */
+#define for_each_vm_bo_in_list(__gpuvm, __list_name, __local_list, __vm_bo)	\
+	for (__vm_bo = get_next_vm_bo_from_list(__gpuvm, __list_name,		\
+						__local_list, NULL);		\
+	     __vm_bo;								\
+	     __vm_bo = get_next_vm_bo_from_list(__gpuvm, __list_name,		\
+						__local_list, __vm_bo))
+
+static void
+__restore_vm_bo_list(struct drm_gpuvm *gpuvm, spinlock_t *lock,
+		     struct list_head *list, struct list_head **local_list)
+{
+	/* Merge back the two lists, moving local list elements to the
+	 * head to preserve previous ordering, in case it matters.
+	 */
+	spin_lock(lock);
+	if (*local_list) {
+		list_splice(*local_list, list);
+		*local_list = NULL;
+	}
+	spin_unlock(lock);
+}
+
+/**
+ * restore_vm_bo_list() - move vm_bo elements back to their original list
+ * @__gpuvm: the &drm_gpuvm
+ * @__list_name: the name of the list we're iterating on
+ *
+ * When we're done iterating a vm_bo list, we should call restore_vm_bo_list()
+ * to restore the original state and let new iterations take place.
+ */
+#define restore_vm_bo_list(__gpuvm, __list_name)			\
+	__restore_vm_bo_list((__gpuvm), &(__gpuvm)->__list_name.lock,	\
+			     &(__gpuvm)->__list_name.list,		\
+			     &(__gpuvm)->__list_name.local_list)
+
+static void
+cond_spin_lock(spinlock_t *lock, bool cond)
+{
+	if (cond)
+		spin_lock(lock);
+}
+
+static void
+cond_spin_unlock(spinlock_t *lock, bool cond)
+{
+	if (cond)
+		spin_unlock(lock);
+}
+
+static void
+__drm_gpuvm_bo_list_add(struct drm_gpuvm *gpuvm, spinlock_t *lock,
+			struct list_head *entry, struct list_head *list)
+{
+	cond_spin_lock(lock, !!lock);
+	if (list_empty(entry))
+		list_add_tail(entry, list);
+	cond_spin_unlock(lock, !!lock);
+}
+
+/**
+ * drm_gpuvm_bo_list_add() - insert a vm_bo into the given list
+ * @__vm_bo: the &drm_gpuvm_bo
+ * @__list_name: the name of the list to insert into
+ * @__lock: whether to lock with the internal spinlock
+ *
+ * Inserts the given @__vm_bo into the list specified by @__list_name.
+ */
+#define drm_gpuvm_bo_list_add(__vm_bo, __list_name, __lock)			\
+	__drm_gpuvm_bo_list_add((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				&(__vm_bo)->vm->__list_name.list)
+
+static void
+__drm_gpuvm_bo_list_del(struct drm_gpuvm *gpuvm, spinlock_t *lock,
+			struct list_head *entry, bool init)
+{
+	cond_spin_lock(lock, !!lock);
+	if (init) {
+		if (!list_empty(entry))
+			list_del_init(entry);
+	} else {
+		list_del(entry);
+	}
+	cond_spin_unlock(lock, !!lock);
+}
+
+/**
+ * drm_gpuvm_bo_list_del_init() - remove a vm_bo from the given list
+ * @__vm_bo: the &drm_gpuvm_bo
+ * @__list_name: the name of the list to insert into
+ * @__lock: whether to lock with the internal spinlock
+ *
+ * Removes the given @__vm_bo from the list specified by @__list_name.
+ */
+#define drm_gpuvm_bo_list_del_init(__vm_bo, __list_name, __lock)		\
+	__drm_gpuvm_bo_list_del((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				true)
+
+/**
+ * drm_gpuvm_bo_list_del() - remove a vm_bo from the given list
+ * @__vm_bo: the &drm_gpuvm_bo
+ * @__list_name: the name of the list to insert into
+ * @__lock: whether to lock with the internal spinlock
+ *
+ * Removes the given @__vm_bo from the list specified by @__list_name.
+ */
+#define drm_gpuvm_bo_list_del(__vm_bo, __list_name, __lock)			\
+	__drm_gpuvm_bo_list_del((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				false)
+
 #define to_drm_gpuva(__node)	container_of((__node), struct drm_gpuva, rb.node)
 
 #define GPUVA_START(node) ((node)->va.addr)
@@ -781,6 +1005,12 @@ drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
 	gpuvm->rb.tree = RB_ROOT_CACHED;
 	INIT_LIST_HEAD(&gpuvm->rb.list);
 
+	INIT_LIST_HEAD(&gpuvm->extobj.list);
+	spin_lock_init(&gpuvm->extobj.lock);
+
+	INIT_LIST_HEAD(&gpuvm->evict.list);
+	spin_lock_init(&gpuvm->evict.lock);
+
 	kref_init(&gpuvm->kref);
 
 	gpuvm->name = name ? name : "unknown";
@@ -818,6 +1048,11 @@ drm_gpuvm_fini(struct drm_gpuvm *gpuvm)
 	drm_WARN(gpuvm->drm, !RB_EMPTY_ROOT(&gpuvm->rb.tree.rb_root),
 		 "GPUVA tree is not empty, potentially leaking memory.\n");
 
+	drm_WARN(gpuvm->drm, !list_empty(&gpuvm->extobj.list),
+		 "Extobj list should be empty.\n");
+	drm_WARN(gpuvm->drm, !list_empty(&gpuvm->evict.list),
+		 "Evict list should be empty.\n");
+
 	drm_gem_object_put(gpuvm->r_obj);
 }
 
@@ -848,6 +1083,343 @@ drm_gpuvm_put(struct drm_gpuvm *gpuvm)
 }
 EXPORT_SYMBOL_GPL(drm_gpuvm_put);
 
+static int
+__drm_gpuvm_prepare_objects(struct drm_gpuvm *gpuvm,
+			    struct drm_exec *exec,
+			    unsigned int num_fences)
+{
+	struct drm_gpuvm_bo *vm_bo;
+	LIST_HEAD(extobjs);
+	int ret = 0;
+
+	for_each_vm_bo_in_list(gpuvm, extobj, &extobjs, vm_bo) {
+		ret = drm_exec_prepare_obj(exec, vm_bo->obj, num_fences);
+		if (ret)
+			break;
+	}
+	/* Drop ref in case we break out of the loop. */
+	drm_gpuvm_bo_put(vm_bo);
+	restore_vm_bo_list(gpuvm, extobj);
+
+	return ret;
+}
+
+static int
+drm_gpuvm_prepare_objects_locked(struct drm_gpuvm *gpuvm,
+				 struct drm_exec *exec,
+				 unsigned int num_fences)
+{
+	struct drm_gpuvm_bo *vm_bo;
+	int ret = 0;
+
+	drm_gpuvm_resv_assert_held(gpuvm);
+	list_for_each_entry(vm_bo, &gpuvm->extobj.list, list.entry.extobj) {
+		ret = drm_exec_prepare_obj(exec, vm_bo->obj, num_fences);
+		if (ret)
+			break;
+
+		if (vm_bo->evicted)
+			drm_gpuvm_bo_list_add(vm_bo, evict, false);
+	}
+
+	return ret;
+}
+
+/**
+ * drm_gpuvm_prepare_objects() - prepare all assoiciated BOs
+ * @gpuvm: the &drm_gpuvm
+ * @exec: the &drm_exec locking context
+ * @num_fences: the amount of &dma_fences to reserve
+ *
+ * Calls drm_exec_prepare_obj() for all &drm_gem_objects the given
+ * &drm_gpuvm contains mappings of.
+ *
+ * Using this function directly, it is the drivers responsibility to call
+ * drm_exec_init() and drm_exec_fini() accordingly.
+ *
+ * Note: This function is safe against concurrent insertion and removal of
+ * external objects, however it is not safe against concurrent usage itself.
+ *
+ * Drivers need to make sure to protect this case with either an outer VM lock
+ * or by calling drm_gpuvm_prepare_vm() before this function within the
+ * drm_exec_until_all_locked() loop, such that the GPUVM's dma-resv lock ensures
+ * mutual exclusion.
+ *
+ * Returns: 0 on success, negative error code on failure.
+ */
+int
+drm_gpuvm_prepare_objects(struct drm_gpuvm *gpuvm,
+			  struct drm_exec *exec,
+			  unsigned int num_fences)
+{
+	if (drm_gpuvm_resv_protected(gpuvm))
+		return drm_gpuvm_prepare_objects_locked(gpuvm, exec,
+							num_fences);
+	else
+		return __drm_gpuvm_prepare_objects(gpuvm, exec, num_fences);
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_prepare_objects);
+
+/**
+ * drm_gpuvm_prepare_range() - prepare all BOs mapped within a given range
+ * @gpuvm: the &drm_gpuvm
+ * @exec: the &drm_exec locking context
+ * @addr: the start address within the VA space
+ * @range: the range to iterate within the VA space
+ * @num_fences: the amount of &dma_fences to reserve
+ *
+ * Calls drm_exec_prepare_obj() for all &drm_gem_objects mapped between @addr
+ * and @addr + @range.
+ *
+ * Returns: 0 on success, negative error code on failure.
+ */
+int
+drm_gpuvm_prepare_range(struct drm_gpuvm *gpuvm, struct drm_exec *exec,
+			u64 addr, u64 range, unsigned int num_fences)
+{
+	struct drm_gpuva *va;
+	u64 end = addr + range;
+	int ret;
+
+	drm_gpuvm_for_each_va_range(va, gpuvm, addr, end) {
+		struct drm_gem_object *obj = va->gem.obj;
+
+		ret = drm_exec_prepare_obj(exec, obj, num_fences);
+		if (ret)
+			return ret;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_prepare_range);
+
+/**
+ * drm_gpuvm_exec_lock() - lock all dma-resv of all assoiciated BOs
+ * @vm_exec: the &drm_gpuvm_exec wrapper
+ *
+ * Acquires all dma-resv locks of all &drm_gem_objects the given
+ * &drm_gpuvm contains mappings of.
+ *
+ * Addionally, when calling this function with struct drm_gpuvm_exec::extra
+ * being set the driver receives the given @fn callback to lock additional
+ * dma-resv in the context of the &drm_gpuvm_exec instance. Typically, drivers
+ * would call drm_exec_prepare_obj() from within this callback.
+ *
+ * Returns: 0 on success, negative error code on failure.
+ */
+int
+drm_gpuvm_exec_lock(struct drm_gpuvm_exec *vm_exec)
+{
+	struct drm_gpuvm *gpuvm = vm_exec->vm;
+	struct drm_exec *exec = &vm_exec->exec;
+	unsigned int num_fences = vm_exec->num_fences;
+	int ret;
+
+	drm_exec_init(exec, vm_exec->flags);
+
+	drm_exec_until_all_locked(exec) {
+		ret = drm_gpuvm_prepare_vm(gpuvm, exec, num_fences);
+		drm_exec_retry_on_contention(exec);
+		if (ret)
+			goto err;
+
+		ret = drm_gpuvm_prepare_objects(gpuvm, exec, num_fences);
+		drm_exec_retry_on_contention(exec);
+		if (ret)
+			goto err;
+
+		if (vm_exec->extra.fn) {
+			ret = vm_exec->extra.fn(vm_exec);
+			drm_exec_retry_on_contention(exec);
+			if (ret)
+				goto err;
+		}
+	}
+
+	return 0;
+
+err:
+	drm_exec_fini(exec);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_exec_lock);
+
+static int
+fn_lock_array(struct drm_gpuvm_exec *vm_exec)
+{
+	struct {
+		struct drm_gem_object **objs;
+		unsigned int num_objs;
+	} *args = vm_exec->extra.priv;
+
+	return drm_exec_prepare_array(&vm_exec->exec, args->objs,
+				      args->num_objs, vm_exec->num_fences);
+}
+
+/**
+ * drm_gpuvm_exec_lock_array() - lock all dma-resv of all assoiciated BOs
+ * @vm_exec: the &drm_gpuvm_exec wrapper
+ * @objs: additional &drm_gem_objects to lock
+ * @num_objs: the number of additional &drm_gem_objects to lock
+ *
+ * Acquires all dma-resv locks of all &drm_gem_objects the given &drm_gpuvm
+ * contains mappings of, plus the ones given through @objs.
+ *
+ * Returns: 0 on success, negative error code on failure.
+ */
+int
+drm_gpuvm_exec_lock_array(struct drm_gpuvm_exec *vm_exec,
+			  struct drm_gem_object **objs,
+			  unsigned int num_objs)
+{
+	struct {
+		struct drm_gem_object **objs;
+		unsigned int num_objs;
+	} args;
+
+	args.objs = objs;
+	args.num_objs = num_objs;
+
+	vm_exec->extra.fn = fn_lock_array;
+	vm_exec->extra.priv = &args;
+
+	return drm_gpuvm_exec_lock(vm_exec);
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_exec_lock_array);
+
+/**
+ * drm_gpuvm_exec_lock_range() - prepare all BOs mapped within a given range
+ * @vm_exec: the &drm_gpuvm_exec wrapper
+ * @addr: the start address within the VA space
+ * @range: the range to iterate within the VA space
+ *
+ * Acquires all dma-resv locks of all &drm_gem_objects mapped between @addr and
+ * @addr + @range.
+ *
+ * Returns: 0 on success, negative error code on failure.
+ */
+int
+drm_gpuvm_exec_lock_range(struct drm_gpuvm_exec *vm_exec,
+			  u64 addr, u64 range)
+{
+	struct drm_gpuvm *gpuvm = vm_exec->vm;
+	struct drm_exec *exec = &vm_exec->exec;
+	int ret;
+
+	drm_exec_init(exec, vm_exec->flags);
+
+	drm_exec_until_all_locked(exec) {
+		ret = drm_gpuvm_prepare_range(gpuvm, exec, addr, range,
+					      vm_exec->num_fences);
+		drm_exec_retry_on_contention(exec);
+		if (ret)
+			goto err;
+	}
+
+	return ret;
+
+err:
+	drm_exec_fini(exec);
+	return ret;
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_exec_lock_range);
+
+static int
+__drm_gpuvm_validate(struct drm_gpuvm *gpuvm, struct drm_exec *exec)
+{
+	const struct drm_gpuvm_ops *ops = gpuvm->ops;
+	struct drm_gpuvm_bo *vm_bo;
+	LIST_HEAD(evict);
+	int ret = 0;
+
+	for_each_vm_bo_in_list(gpuvm, evict, &evict, vm_bo) {
+		ret = ops->vm_bo_validate(vm_bo, exec);
+		if (ret)
+			break;
+	}
+	/* Drop ref in case we break out of the loop. */
+	drm_gpuvm_bo_put(vm_bo);
+	restore_vm_bo_list(gpuvm, evict);
+
+	return ret;
+}
+
+static int
+drm_gpuvm_validate_locked(struct drm_gpuvm *gpuvm, struct drm_exec *exec)
+{
+	const struct drm_gpuvm_ops *ops = gpuvm->ops;
+	struct drm_gpuvm_bo *vm_bo, *next;
+	int ret = 0;
+
+	drm_gpuvm_resv_assert_held(gpuvm);
+
+	list_for_each_entry_safe(vm_bo, next, &gpuvm->evict.list,
+				 list.entry.evict) {
+		ret = ops->vm_bo_validate(vm_bo, exec);
+		if (ret)
+			break;
+
+		dma_resv_assert_held(vm_bo->obj->resv);
+		if (!vm_bo->evicted)
+			drm_gpuvm_bo_list_del_init(vm_bo, evict, false);
+	}
+
+	return ret;
+}
+
+/**
+ * drm_gpuvm_validate() - validate all BOs marked as evicted
+ * @gpuvm: the &drm_gpuvm to validate evicted BOs
+ * @exec: the &drm_exec instance used for locking the GPUVM
+ *
+ * Calls the &drm_gpuvm_ops::vm_bo_validate callback for all evicted buffer
+ * objects being mapped in the given &drm_gpuvm.
+ *
+ * Returns: 0 on success, negative error code on failure.
+ */
+int
+drm_gpuvm_validate(struct drm_gpuvm *gpuvm, struct drm_exec *exec)
+{
+	const struct drm_gpuvm_ops *ops = gpuvm->ops;
+
+	if (unlikely(!ops || !ops->vm_bo_validate))
+		return -EOPNOTSUPP;
+
+	if (drm_gpuvm_resv_protected(gpuvm))
+		return drm_gpuvm_validate_locked(gpuvm, exec);
+	else
+		return __drm_gpuvm_validate(gpuvm, exec);
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_validate);
+
+/**
+ * drm_gpuvm_resv_add_fence - add fence to private and all extobj
+ * dma-resv
+ * @gpuvm: the &drm_gpuvm to add a fence to
+ * @exec: the &drm_exec locking context
+ * @fence: fence to add
+ * @private_usage: private dma-resv usage
+ * @extobj_usage: extobj dma-resv usage
+ */
+void
+drm_gpuvm_resv_add_fence(struct drm_gpuvm *gpuvm,
+			 struct drm_exec *exec,
+			 struct dma_fence *fence,
+			 enum dma_resv_usage private_usage,
+			 enum dma_resv_usage extobj_usage)
+{
+	struct drm_gem_object *obj;
+	unsigned long index;
+
+	drm_exec_for_each_locked_object(exec, index, obj) {
+		dma_resv_assert_held(obj->resv);
+		dma_resv_add_fence(obj->resv, fence,
+				   drm_gpuvm_is_extobj(gpuvm, obj) ?
+				   extobj_usage : private_usage);
+	}
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_resv_add_fence);
+
 /**
  * drm_gpuvm_bo_create() - create a new instance of struct drm_gpuvm_bo
  * @gpuvm: The &drm_gpuvm the @obj is mapped in.
@@ -881,6 +1453,9 @@ drm_gpuvm_bo_create(struct drm_gpuvm *gpuvm,
 	INIT_LIST_HEAD(&vm_bo->list.gpuva);
 	INIT_LIST_HEAD(&vm_bo->list.entry.gem);
 
+	INIT_LIST_HEAD(&vm_bo->list.entry.extobj);
+	INIT_LIST_HEAD(&vm_bo->list.entry.evict);
+
 	return vm_bo;
 }
 EXPORT_SYMBOL_GPL(drm_gpuvm_bo_create);
@@ -898,6 +1473,9 @@ drm_gpuvm_bo_destroy(struct kref *kref)
 	if (!lock)
 		drm_gpuvm_resv_assert_held(gpuvm);
 
+	drm_gpuvm_bo_list_del(vm_bo, extobj, lock);
+	drm_gpuvm_bo_list_del(vm_bo, evict, lock);
+
 	drm_gem_gpuva_assert_lock_held(obj);
 	list_del(&vm_bo->list.entry.gem);
 
@@ -1037,6 +1615,61 @@ drm_gpuvm_bo_obtain_prealloc(struct drm_gpuvm_bo *__vm_bo)
 }
 EXPORT_SYMBOL_GPL(drm_gpuvm_bo_obtain_prealloc);
 
+/**
+ * drm_gpuvm_bo_extobj_add() - adds the &drm_gpuvm_bo to its &drm_gpuvm's
+ * extobj list
+ * @vm_bo: The &drm_gpuvm_bo to add to its &drm_gpuvm's the extobj list.
+ *
+ * Adds the given @vm_bo to its &drm_gpuvm's extobj list if not on the list
+ * already and if the corresponding &drm_gem_object is an external object,
+ * actually.
+ */
+void
+drm_gpuvm_bo_extobj_add(struct drm_gpuvm_bo *vm_bo)
+{
+	struct drm_gpuvm *gpuvm = vm_bo->vm;
+	bool lock = !drm_gpuvm_resv_protected(gpuvm);
+
+	if (!lock)
+		drm_gpuvm_resv_assert_held(gpuvm);
+
+	if (drm_gpuvm_is_extobj(gpuvm, vm_bo->obj))
+		drm_gpuvm_bo_list_add(vm_bo, extobj, lock);
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_bo_extobj_add);
+
+/**
+ * drm_gpuvm_bo_evict() - add / remove a &drm_gpuvm_bo to / from the &drm_gpuvms
+ * evicted list
+ * @vm_bo: the &drm_gpuvm_bo to add or remove
+ * @evict: indicates whether the object is evicted
+ *
+ * Adds a &drm_gpuvm_bo to or removes it from the &drm_gpuvms evicted list.
+ */
+void
+drm_gpuvm_bo_evict(struct drm_gpuvm_bo *vm_bo, bool evict)
+{
+	struct drm_gpuvm *gpuvm = vm_bo->vm;
+	struct drm_gem_object *obj = vm_bo->obj;
+	bool lock = !drm_gpuvm_resv_protected(gpuvm);
+
+	dma_resv_assert_held(obj->resv);
+	vm_bo->evicted = evict;
+
+	/* Can't add external objects to the evicted list directly if not using
+	 * internal spinlocks, since in this case the evicted list is protected
+	 * with the VM's common dma-resv lock.
+	 */
+	if (drm_gpuvm_is_extobj(gpuvm, obj) && !lock)
+		return;
+
+	if (evict)
+		drm_gpuvm_bo_list_add(vm_bo, evict, lock);
+	else
+		drm_gpuvm_bo_list_del_init(vm_bo, evict, lock);
+}
+EXPORT_SYMBOL_GPL(drm_gpuvm_bo_evict);
+
 static int
 __drm_gpuva_insert(struct drm_gpuvm *gpuvm,
 		   struct drm_gpuva *va)
diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h
index dbd69f621499..8130eb940b14 100644
--- a/include/drm/drm_gpuvm.h
+++ b/include/drm/drm_gpuvm.h
@@ -32,6 +32,7 @@
 
 #include <drm/drm_device.h>
 #include <drm/drm_gem.h>
+#include <drm/drm_exec.h>
 
 struct drm_gpuvm;
 struct drm_gpuvm_bo;
@@ -283,6 +284,50 @@ struct drm_gpuvm {
 	 * @r_obj: Resv GEM object; representing the GPUVM's common &dma_resv.
 	 */
 	struct drm_gem_object *r_obj;
+
+	/**
+	 * @extobj: structure holding the extobj list
+	 */
+	struct {
+		/**
+		 * @list: &list_head storing &drm_gpuvm_bos serving as
+		 * external object
+		 */
+		struct list_head list;
+
+		/**
+		 * @local_list: pointer to the local list temporarily storing
+		 * entries from the external object list
+		 */
+		struct list_head *local_list;
+
+		/**
+		 * @lock: spinlock to protect the extobj list
+		 */
+		spinlock_t lock;
+	} extobj;
+
+	/**
+	 * @evict: structure holding the evict list and evict list lock
+	 */
+	struct {
+		/**
+		 * @list: &list_head storing &drm_gpuvm_bos currently being
+		 * evicted
+		 */
+		struct list_head list;
+
+		/**
+		 * @local_list: pointer to the local list temporarily storing
+		 * entries from the evicted object list
+		 */
+		struct list_head *local_list;
+
+		/**
+		 * @lock: spinlock to protect the evict list
+		 */
+		spinlock_t lock;
+	} evict;
 };
 
 void drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name,
@@ -359,6 +404,22 @@ drm_gpuvm_resv_protected(struct drm_gpuvm *gpuvm)
 #define drm_gpuvm_resv_assert_held(gpuvm__) \
 	dma_resv_assert_held(drm_gpuvm_resv(gpuvm__))
 
+/**
+ * drm_gpuvm_is_extobj() - indicates whether the given &drm_gem_object is an
+ * external object
+ * @gpuvm: the &drm_gpuvm to check
+ * @obj: the &drm_gem_object to check
+ *
+ * Returns: true if the &drm_gem_object &dma_resv differs from the
+ * &drm_gpuvms &dma_resv, false otherwise
+ */
+static inline bool
+drm_gpuvm_is_extobj(struct drm_gpuvm *gpuvm,
+		    struct drm_gem_object *obj)
+{
+	return obj && obj->resv != drm_gpuvm_resv(gpuvm);
+}
+
 static inline struct drm_gpuva *
 __drm_gpuva_next(struct drm_gpuva *va)
 {
@@ -437,6 +498,144 @@ __drm_gpuva_next(struct drm_gpuva *va)
 #define drm_gpuvm_for_each_va_safe(va__, next__, gpuvm__) \
 	list_for_each_entry_safe(va__, next__, &(gpuvm__)->rb.list, rb.entry)
 
+/**
+ * struct drm_gpuvm_exec - &drm_gpuvm abstraction of &drm_exec
+ *
+ * This structure should be created on the stack as &drm_exec should be.
+ *
+ * Optionally, @extra can be set in order to lock additional &drm_gem_objects.
+ */
+struct drm_gpuvm_exec {
+	/**
+	 * @exec: the &drm_exec structure
+	 */
+	struct drm_exec exec;
+
+	/**
+	 * @flags: the flags for the struct drm_exec
+	 */
+	uint32_t flags;
+
+	/**
+	 * @vm: the &drm_gpuvm to lock its DMA reservations
+	 */
+	struct drm_gpuvm *vm;
+
+	/**
+	 * @num_fences: the number of fences to reserve for the &dma_resv of the
+	 * locked &drm_gem_objects
+	 */
+	unsigned int num_fences;
+
+	/**
+	 * @extra: Callback and corresponding private data for the driver to
+	 * lock arbitrary additional &drm_gem_objects.
+	 */
+	struct {
+		/**
+		 * @fn: The driver callback to lock additional &drm_gem_objects.
+		 */
+		int (*fn)(struct drm_gpuvm_exec *vm_exec);
+
+		/**
+		 * @priv: driver private data for the @fn callback
+		 */
+		void *priv;
+	} extra;
+};
+
+/**
+ * drm_gpuvm_prepare_vm() - prepare the GPUVMs common dma-resv
+ * @gpuvm: the &drm_gpuvm
+ * @exec: the &drm_exec context
+ * @num_fences: the amount of &dma_fences to reserve
+ *
+ * Calls drm_exec_prepare_obj() for the GPUVMs dummy &drm_gem_object.
+ *
+ * Using this function directly, it is the drivers responsibility to call
+ * drm_exec_init() and drm_exec_fini() accordingly.
+ *
+ * Returns: 0 on success, negative error code on failure.
+ */
+static inline int
+drm_gpuvm_prepare_vm(struct drm_gpuvm *gpuvm,
+		     struct drm_exec *exec,
+		     unsigned int num_fences)
+{
+	return drm_exec_prepare_obj(exec, gpuvm->r_obj, num_fences);
+}
+
+int drm_gpuvm_prepare_objects(struct drm_gpuvm *gpuvm,
+			      struct drm_exec *exec,
+			      unsigned int num_fences);
+
+int drm_gpuvm_prepare_range(struct drm_gpuvm *gpuvm,
+			    struct drm_exec *exec,
+			    u64 addr, u64 range,
+			    unsigned int num_fences);
+
+int drm_gpuvm_exec_lock(struct drm_gpuvm_exec *vm_exec);
+
+int drm_gpuvm_exec_lock_array(struct drm_gpuvm_exec *vm_exec,
+			      struct drm_gem_object **objs,
+			      unsigned int num_objs);
+
+int drm_gpuvm_exec_lock_range(struct drm_gpuvm_exec *vm_exec,
+			      u64 addr, u64 range);
+
+/**
+ * drm_gpuvm_exec_unlock() - lock all dma-resv of all assoiciated BOs
+ * @vm_exec: the &drm_gpuvm_exec wrapper
+ *
+ * Releases all dma-resv locks of all &drm_gem_objects previously acquired
+ * through drm_gpuvm_exec_lock() or its variants.
+ *
+ * Returns: 0 on success, negative error code on failure.
+ */
+static inline void
+drm_gpuvm_exec_unlock(struct drm_gpuvm_exec *vm_exec)
+{
+	drm_exec_fini(&vm_exec->exec);
+}
+
+int drm_gpuvm_validate(struct drm_gpuvm *gpuvm, struct drm_exec *exec);
+void drm_gpuvm_resv_add_fence(struct drm_gpuvm *gpuvm,
+			      struct drm_exec *exec,
+			      struct dma_fence *fence,
+			      enum dma_resv_usage private_usage,
+			      enum dma_resv_usage extobj_usage);
+
+/**
+ * drm_gpuvm_exec_resv_add_fence()
+ * @vm_exec: the &drm_gpuvm_exec wrapper
+ * @fence: fence to add
+ * @private_usage: private dma-resv usage
+ * @extobj_usage: extobj dma-resv usage
+ *
+ * See drm_gpuvm_resv_add_fence().
+ */
+static inline void
+drm_gpuvm_exec_resv_add_fence(struct drm_gpuvm_exec *vm_exec,
+			      struct dma_fence *fence,
+			      enum dma_resv_usage private_usage,
+			      enum dma_resv_usage extobj_usage)
+{
+	drm_gpuvm_resv_add_fence(vm_exec->vm, &vm_exec->exec, fence,
+				 private_usage, extobj_usage);
+}
+
+/**
+ * drm_gpuvm_exec_validate()
+ * @vm_exec: the &drm_gpuvm_exec wrapper
+ *
+ * See drm_gpuvm_validate().
+ */
+static inline int
+drm_gpuvm_exec_validate(struct drm_gpuvm_exec *vm_exec)
+{
+	return drm_gpuvm_validate(vm_exec->vm, &vm_exec->exec);
+}
+
 /**
  * struct drm_gpuvm_bo - structure representing a &drm_gpuvm and
  * &drm_gem_object combination
@@ -466,6 +665,12 @@ struct drm_gpuvm_bo {
 	 */
 	struct drm_gem_object *obj;
 
+	/**
+	 * @evicted: Indicates whether the &drm_gem_object is evicted; field
+	 * protected by the &drm_gem_object's dma-resv lock.
+	 */
+	bool evicted;
+
 	/**
 	 * @kref: The reference count for this &drm_gpuvm_bo.
 	 */
@@ -493,6 +698,18 @@ struct drm_gpuvm_bo {
 			 * gpuva list.
 			 */
 			struct list_head gem;
+
+			/**
+			 * @evict: List entry to attach to the &drm_gpuvms
+			 * extobj list.
+			 */
+			struct list_head extobj;
+
+			/**
+			 * @evict: List entry to attach to the &drm_gpuvms evict
+			 * list.
+			 */
+			struct list_head evict;
 		} entry;
 	} list;
 };
@@ -527,6 +744,27 @@ struct drm_gpuvm_bo *
 drm_gpuvm_bo_find(struct drm_gpuvm *gpuvm,
 		  struct drm_gem_object *obj);
 
+void drm_gpuvm_bo_evict(struct drm_gpuvm_bo *vm_bo, bool evict);
+
+/**
+ * drm_gpuvm_bo_gem_evict()
+ * @obj: the &drm_gem_object
+ * @evict: indicates whether @obj is evicted
+ *
+ * See drm_gpuvm_bo_evict().
+ */
+static inline void
+drm_gpuvm_bo_gem_evict(struct drm_gem_object *obj, bool evict)
+{
+	struct drm_gpuvm_bo *vm_bo;
+
+	drm_gem_gpuva_assert_lock_held(obj);
+	drm_gem_for_each_gpuvm_bo(vm_bo, obj)
+		drm_gpuvm_bo_evict(vm_bo, evict);
+}
+
+void drm_gpuvm_bo_extobj_add(struct drm_gpuvm_bo *vm_bo);
+
 /**
  * drm_gpuvm_bo_for_each_va() - iterator to walk over a list of &drm_gpuva
  * @va__: &drm_gpuva structure to assign to in each iteration step
@@ -911,6 +1149,18 @@ struct drm_gpuvm_ops {
 	 */
 	void (*vm_bo_free)(struct drm_gpuvm_bo *vm_bo);
 
+	/**
+	 * @vm_bo_validate: called from drm_gpuvm_validate()
+	 *
+	 * Drivers receive this callback for every evicted &drm_gem_object being
+	 * mapped in the corresponding &drm_gpuvm.
+	 *
+	 * Typically, drivers would call their driver specific variant of
+	 * ttm_bo_validate() from within this callback.
+	 */
+	int (*vm_bo_validate)(struct drm_gpuvm_bo *vm_bo,
+			      struct drm_exec *exec);
+
 	/**
 	 * @sm_step_map: called from &drm_gpuvm_sm_map to finally insert the
 	 * mapping once all previous steps were completed
-- 
2.41.0


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

* [Intel-xe] [CI v8 16/18] drm/xe: Adapt to GPUVM tracking of external / evicted objects.
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (13 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 15/18] drm/gpuvm: track/lock/validate external/evicted objects Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 17/18] drm/xe: Use DRM_GPUVM_RESV_PROTECTED for gpuvm Thomas Hellström
                   ` (8 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

Using fine-grained locking for now.

Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c       |  63 +++----
 drivers/gpu/drm/xe/xe_exec.c     |  72 ++------
 drivers/gpu/drm/xe/xe_vm.c       | 292 +++++++------------------------
 drivers/gpu/drm/xe/xe_vm.h       |  13 +-
 drivers/gpu/drm/xe/xe_vm_types.h |  67 ++-----
 5 files changed, 120 insertions(+), 387 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index c23a5694a788..a392ae4c3428 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -451,9 +451,9 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
 {
 	struct dma_resv_iter cursor;
 	struct dma_fence *fence;
-	struct drm_gpuva *gpuva;
 	struct drm_gem_object *obj = &bo->ttm.base;
 	struct drm_gpuvm_bo *vm_bo;
+	bool idle = false;
 	int ret = 0;
 
 	dma_resv_assert_held(bo->ttm.base.resv);
@@ -467,14 +467,15 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
 	}
 
 	drm_gem_for_each_gpuvm_bo(vm_bo, obj) {
-		drm_gpuvm_bo_for_each_va(gpuva, vm_bo) {
-			struct xe_vma *vma = gpuva_to_vma(gpuva);
-			struct xe_vm *vm = xe_vma_vm(vma);
+		struct xe_vm *vm = gpuvm_to_vm(vm_bo->vm);
+		struct drm_gpuva *gpuva;
 
-			trace_xe_vma_evict(vma);
+		if (!xe_vm_in_fault_mode(vm)) {
+			drm_gpuvm_bo_evict(vm_bo, true);
+			continue;
+		}
 
-		if (xe_vm_in_fault_mode(vm)) {
-			/* Wait for pending binds / unbinds. */
+		if (!idle) {
 			long timeout;
 
 			if (ctx->no_wait_gpu &&
@@ -486,45 +487,21 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
 							DMA_RESV_USAGE_BOOKKEEP,
 							ctx->interruptible,
 							MAX_SCHEDULE_TIMEOUT);
-			if (timeout > 0) {
-				ret = xe_vm_invalidate_vma(vma);
-				XE_WARN_ON(ret);
-			} else if (!timeout) {
-				ret = -ETIME;
-			} else {
-				ret = timeout;
-			}
-
-		} else {
-			bool vm_resv_locked = false;
+			if (!timeout)
+				return -ETIME;
+			if (timeout < 0)
+				return timeout;
 
-			/*
-			 * We need to put the vma on the vm's rebind_list,
-			 * but need the vm resv to do so. If we can't verify
-			 * that we indeed have it locked, put the vma an the
-			 * vm's notifier.rebind_list instead and scoop later.
-			 */
-			if (dma_resv_trylock(xe_vm_resv(vm)))
-				vm_resv_locked = true;
-			else if (ctx->resv != xe_vm_resv(vm)) {
-				spin_lock(&vm->notifier.list_lock);
-				if (!(vma->gpuva.flags & XE_VMA_DESTROYED))
-					list_move_tail(&vma->notifier.rebind_link,
-						       &vm->notifier.rebind_list);
-				spin_unlock(&vm->notifier.list_lock);
-				continue;
-			}
+			idle = true;
+		}
 
-			xe_vm_assert_held(vm);
-			if (vma->tile_present &&
-			    !(vma->gpuva.flags & XE_VMA_DESTROYED) &&
-			    list_empty(&vma->combined_links.rebind))
-				list_add_tail(&vma->combined_links.rebind,
-					      &vm->rebind_list);
+		drm_gpuvm_bo_for_each_va(gpuva, vm_bo) {
+			struct xe_vma *vma = gpuva_to_vma(gpuva);
 
-			if (vm_resv_locked)
-				dma_resv_unlock(xe_vm_resv(vm));
-		}
+			trace_xe_vma_evict(vma);
+			ret = xe_vm_invalidate_vma(vma);
+			if (XE_WARN_ON(ret))
+				return ret;
 		}
 	}
 
diff --git a/drivers/gpu/drm/xe/xe_exec.c b/drivers/gpu/drm/xe/xe_exec.c
index 85a8a793f527..cd5d2d2257f5 100644
--- a/drivers/gpu/drm/xe/xe_exec.c
+++ b/drivers/gpu/drm/xe/xe_exec.c
@@ -94,40 +94,9 @@
  *	Unlock all
  */
 
-static int xe_exec_begin(struct drm_exec *exec, struct xe_vm *vm)
+static int xe_exec_fn(struct drm_gpuvm_exec *vm_exec)
 {
-	struct xe_vma *vma;
-	LIST_HEAD(dups);
-	int err = 0;
-
-	if (xe_vm_no_dma_fences(vm))
-		return 0;
-
-	/*
-	 * 1 fence for job from exec plus a fence for each tile from a possible
-	 * rebind
-	 */
-	err = xe_vm_lock_dma_resv(vm, exec, 1 + vm->xe->info.tile_count, true);
-	if (err)
-		return err;
-
-	/*
-	 * Validate BOs that have been evicted (i.e. make sure the
-	 * BOs have valid placements possibly moving an evicted BO back
-	 * to a location where the GPU can access it).
-	 */
-	list_for_each_entry(vma, &vm->rebind_list, combined_links.rebind) {
-		xe_assert(vm->xe, !xe_vma_is_null(vma));
-
-		if (xe_vma_is_userptr(vma))
-			continue;
-
-		err = xe_bo_validate(xe_vma_bo(vma), vm, false);
-		if (err)
-			break;
-	}
-
-	return err;
+	return drm_gpuvm_validate(vm_exec->vm, &vm_exec->exec);
 }
 
 int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
@@ -140,7 +109,8 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	struct xe_exec_queue *q;
 	struct xe_sync_entry *syncs = NULL;
 	u64 addresses[XE_HW_ENGINE_MAX_INSTANCE];
-	struct drm_exec exec;
+	struct drm_gpuvm_exec vm_exec = {.extra.fn = xe_exec_fn};
+	struct drm_exec *exec = &vm_exec.exec;
 	u32 i, num_syncs = 0;
 	struct xe_sched_job *job;
 	struct dma_fence *rebind_fence;
@@ -216,16 +186,14 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 			goto err_unlock_list;
 	}
 
-	drm_exec_init(&exec, DRM_EXEC_INTERRUPTIBLE_WAIT);
-	drm_exec_until_all_locked(&exec) {
-		err = xe_exec_begin(&exec, vm);
-		drm_exec_retry_on_contention(&exec);
-		if (err && xe_vm_validate_should_retry(&exec, err, &end)) {
+	vm_exec.vm = &vm->gpuvm;
+	vm_exec.num_fences = 1 + vm->xe->info.tile_count;
+	vm_exec.flags = DRM_EXEC_INTERRUPTIBLE_WAIT;
+	err = drm_gpuvm_exec_lock(&vm_exec);
+	if (err) {
+		if (xe_vm_validate_should_retry(exec, err, &end))
 			err = -EAGAIN;
-			goto err_unlock_list;
-		}
-		if (err)
-			goto err_exec;
+		goto err_unlock_list;
 	}
 
 	if (xe_vm_is_closed_or_banned(q->vm)) {
@@ -307,19 +275,9 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	 * the job and let the DRM scheduler / backend clean up the job.
 	 */
 	xe_sched_job_arm(job);
-	if (!xe_vm_no_dma_fences(vm)) {
-		/* Block userptr invalidations / BO eviction */
-		dma_resv_add_fence(xe_vm_resv(vm),
-				   &job->drm.s_fence->finished,
-				   DMA_RESV_USAGE_BOOKKEEP);
-
-		/*
-		 * Make implicit sync work across drivers, assuming all external
-		 * BOs are written as we don't pass in a read / write list.
-		 */
-		xe_vm_fence_all_extobjs(vm, &job->drm.s_fence->finished,
-					DMA_RESV_USAGE_WRITE);
-	}
+	if (!xe_vm_no_dma_fences(vm))
+		drm_gpuvm_resv_add_fence(&vm->gpuvm, exec, &job->drm.s_fence->finished,
+					 DMA_RESV_USAGE_BOOKKEEP, DMA_RESV_USAGE_WRITE);
 
 	for (i = 0; i < num_syncs; i++)
 		xe_sync_entry_signal(&syncs[i], job,
@@ -343,7 +301,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	if (err)
 		xe_sched_job_put(job);
 err_exec:
-	drm_exec_fini(&exec);
+	drm_exec_fini(exec);
 err_unlock_list:
 	if (write_locked)
 		up_write(&vm->lock);
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index db5810f72911..8239804baa0c 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -297,26 +297,8 @@ static int add_preempt_fences(struct xe_vm *vm, struct xe_bo *bo)
 	return err;
 }
 
-/**
- * xe_vm_fence_all_extobjs() - Add a fence to vm's external objects' resv
- * @vm: The vm.
- * @fence: The fence to add.
- * @usage: The resv usage for the fence.
- *
- * Loops over all of the vm's external object bindings and adds a @fence
- * with the given @usage to all of the external object's reservation
- * objects.
- */
-void xe_vm_fence_all_extobjs(struct xe_vm *vm, struct dma_fence *fence,
-			     enum dma_resv_usage usage)
-{
-	struct xe_vma *vma;
-
-	list_for_each_entry(vma, &vm->extobj.list, extobj.link)
-		dma_resv_add_fence(xe_vma_bo(vma)->ttm.base.resv, fence, usage);
-}
-
-static void resume_and_reinstall_preempt_fences(struct xe_vm *vm)
+static void resume_and_reinstall_preempt_fences(struct xe_vm *vm,
+						struct drm_exec *exec)
 {
 	struct xe_exec_queue *q;
 
@@ -326,16 +308,19 @@ static void resume_and_reinstall_preempt_fences(struct xe_vm *vm)
 	list_for_each_entry(q, &vm->preempt.exec_queues, compute.link) {
 		q->ops->resume(q);
 
-		dma_resv_add_fence(xe_vm_resv(vm), q->compute.pfence,
-				   DMA_RESV_USAGE_BOOKKEEP);
-		xe_vm_fence_all_extobjs(vm, q->compute.pfence,
-					DMA_RESV_USAGE_BOOKKEEP);
+		drm_gpuvm_resv_add_fence(&vm->gpuvm, exec, q->compute.pfence,
+					 DMA_RESV_USAGE_BOOKKEEP, DMA_RESV_USAGE_BOOKKEEP);
 	}
 }
 
 int xe_vm_add_compute_exec_queue(struct xe_vm *vm, struct xe_exec_queue *q)
 {
-	struct drm_exec exec;
+	struct drm_gpuvm_exec vm_exec = {
+		.vm = &vm->gpuvm,
+		.flags = DRM_EXEC_INTERRUPTIBLE_WAIT,
+		.num_fences = 1,
+	};
+	struct drm_exec *exec = &vm_exec.exec;
 	struct dma_fence *pfence;
 	int err;
 	bool wait;
@@ -343,13 +328,9 @@ int xe_vm_add_compute_exec_queue(struct xe_vm *vm, struct xe_exec_queue *q)
 	xe_assert(vm->xe, xe_vm_in_compute_mode(vm));
 
 	down_write(&vm->lock);
-	drm_exec_init(&exec, DRM_EXEC_INTERRUPTIBLE_WAIT);
-	drm_exec_until_all_locked(&exec) {
-		err = xe_vm_lock_dma_resv(vm, &exec, 1, true);
-		drm_exec_retry_on_contention(&exec);
-		if (err)
-			goto out_unlock;
-	}
+	err = drm_gpuvm_exec_lock(&vm_exec);
+	if (err)
+		return err;
 
 	pfence = xe_preempt_fence_create(q, q->compute.context,
 					 ++q->compute.seqno);
@@ -364,10 +345,8 @@ int xe_vm_add_compute_exec_queue(struct xe_vm *vm, struct xe_exec_queue *q)
 
 	down_read(&vm->userptr.notifier_lock);
 
-	dma_resv_add_fence(xe_vm_resv(vm), pfence,
-			   DMA_RESV_USAGE_BOOKKEEP);
-
-	xe_vm_fence_all_extobjs(vm, pfence, DMA_RESV_USAGE_BOOKKEEP);
+	drm_gpuvm_resv_add_fence(&vm->gpuvm, exec, pfence,
+				 DMA_RESV_USAGE_BOOKKEEP, DMA_RESV_USAGE_BOOKKEEP);
 
 	/*
 	 * Check to see if a preemption on VM is in flight or userptr
@@ -381,7 +360,7 @@ int xe_vm_add_compute_exec_queue(struct xe_vm *vm, struct xe_exec_queue *q)
 	up_read(&vm->userptr.notifier_lock);
 
 out_unlock:
-	drm_exec_fini(&exec);
+	drm_exec_fini(exec);
 	up_write(&vm->lock);
 
 	return err;
@@ -427,55 +406,6 @@ int __xe_vm_userptr_needs_repin(struct xe_vm *vm)
 		list_empty(&vm->userptr.invalidated)) ? 0 : -EAGAIN;
 }
 
-/**
- * xe_vm_lock_dma_resv() - Lock the vm dma_resv object and the dma_resv
- * objects of the vm's external buffer objects.
- * @vm: The vm.
- * @exec: Pointer to a struct drm_exec locking context.
- * @num_shared: Number of dma-fence slots to reserve in the locked objects.
- * @lock_vm: Lock also the vm's dma_resv.
- *
- * Locks the vm dma-resv objects and all the dma-resv objects of the
- * buffer objects on the vm external object list.
- *
- * Return: 0 on success, Negative error code on error. In particular if
- * @intr is set to true, -EINTR or -ERESTARTSYS may be returned.
- */
-int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
-			unsigned int num_shared, bool lock_vm)
-{
-	struct xe_vma *vma, *next;
-	int err = 0;
-
-	lockdep_assert_held(&vm->lock);
-
-	if (lock_vm) {
-		err = drm_exec_prepare_obj(exec, xe_vm_obj(vm), num_shared);
-		if (err)
-			return err;
-	}
-
-	list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
-		err = drm_exec_prepare_obj(exec, &xe_vma_bo(vma)->ttm.base, num_shared);
-		if (err)
-			return err;
-	}
-
-	spin_lock(&vm->notifier.list_lock);
-	list_for_each_entry_safe(vma, next, &vm->notifier.rebind_list,
-				 notifier.rebind_link) {
-		xe_bo_assert_held(xe_vma_bo(vma));
-
-		list_del_init(&vma->notifier.rebind_link);
-		if (vma->tile_present && !(vma->gpuva.flags & XE_VMA_DESTROYED))
-			list_move_tail(&vma->combined_links.rebind,
-				       &vm->rebind_list);
-	}
-	spin_unlock(&vm->notifier.list_lock);
-
-	return 0;
-}
-
 #define XE_VM_REBIND_RETRY_TIMEOUT_MS 1000
 
 static void xe_vm_kill(struct xe_vm *vm)
@@ -524,30 +454,39 @@ bool xe_vm_validate_should_retry(struct drm_exec *exec, int err, ktime_t *end)
 	if (!ktime_before(cur, *end))
 		return false;
 
-	/*
-	 * We would like to keep the ticket here with
-	 * drm_exec_unlock_all(), but WW mutex asserts currently
-	 * stop us from that. In any case this function could go away
-	 * with proper TTM -EDEADLK handling.
-	 */
-	drm_exec_fini(exec);
-
 	msleep(20);
 	return true;
 }
 
+static int xe_gpuvm_validate(struct drm_gpuvm_bo *vm_bo, struct drm_exec *exec)
+{
+	struct xe_vm *vm = gpuvm_to_vm(vm_bo->vm);
+	struct drm_gpuva *gpuva;
+	int ret;
+
+	lockdep_assert_held(&vm->lock);
+	drm_gpuvm_bo_for_each_va(gpuva, vm_bo)
+		list_move_tail(&gpuva_to_vma(gpuva)->combined_links.rebind,
+			       &vm->rebind_list);
+
+	ret = xe_bo_validate(gem_to_xe_bo(vm_bo->obj), vm, false);
+	if (ret)
+		return ret;
+
+	vm_bo->evicted = false;
+	return 0;
+}
+
 static int xe_preempt_work_begin(struct drm_exec *exec, struct xe_vm *vm,
 				 bool *done)
 {
-	struct xe_vma *vma;
 	int err;
 
 	/*
 	 * 1 fence for each preempt fence plus a fence for each tile from a
 	 * possible rebind
 	 */
-	err = drm_exec_prepare_obj(exec, xe_vm_obj(vm),
-				   vm->preempt.num_exec_queues +
+	err = drm_gpuvm_prepare_vm(&vm->gpuvm, exec, vm->preempt.num_exec_queues +
 				   vm->xe->info.tile_count);
 	if (err)
 		return err;
@@ -563,7 +502,7 @@ static int xe_preempt_work_begin(struct drm_exec *exec, struct xe_vm *vm,
 		return 0;
 	}
 
-	err = xe_vm_lock_dma_resv(vm, exec, vm->preempt.num_exec_queues, false);
+	err = drm_gpuvm_prepare_objects(&vm->gpuvm, exec, vm->preempt.num_exec_queues);
 	if (err)
 		return err;
 
@@ -571,17 +510,7 @@ static int xe_preempt_work_begin(struct drm_exec *exec, struct xe_vm *vm,
 	if (err)
 		return err;
 
-	list_for_each_entry(vma, &vm->rebind_list, combined_links.rebind) {
-		if (xe_vma_has_no_bo(vma) ||
-		    vma->gpuva.flags & XE_VMA_DESTROYED)
-			continue;
-
-		err = xe_bo_validate(xe_vma_bo(vma), vm, false);
-		if (err)
-			break;
-	}
-
-	return err;
+	return drm_gpuvm_validate(&vm->gpuvm, exec);
 }
 
 static void preempt_rebind_work_func(struct work_struct *w)
@@ -621,12 +550,13 @@ static void preempt_rebind_work_func(struct work_struct *w)
 
 		err = xe_preempt_work_begin(&exec, vm, &done);
 		drm_exec_retry_on_contention(&exec);
-		if (err && xe_vm_validate_should_retry(&exec, err, &end)) {
-			err = -EAGAIN;
+		if (err || done) {
+			drm_exec_fini(&exec);
+			if (err && xe_vm_validate_should_retry(&exec, err, &end))
+				err = -EAGAIN;
+
 			goto out_unlock_outer;
 		}
-		if (err || done)
-			goto out_unlock;
 	}
 
 	err = alloc_preempt_fences(vm, &preempt_fences, &fence_count);
@@ -673,7 +603,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
 
 	/* Point of no return. */
 	arm_preempt_fences(vm, &preempt_fences);
-	resume_and_reinstall_preempt_fences(vm);
+	resume_and_reinstall_preempt_fences(vm, &exec);
 	up_read(&vm->userptr.notifier_lock);
 
 out_unlock:
@@ -778,9 +708,8 @@ int xe_vm_userptr_pin(struct xe_vm *vm)
 	list_for_each_entry_safe(vma, next, &vm->userptr.invalidated,
 				 userptr.invalidate_link) {
 		list_del_init(&vma->userptr.invalidate_link);
-		if (list_empty(&vma->combined_links.userptr))
-			list_move_tail(&vma->combined_links.userptr,
-				       &vm->userptr.repin_list);
+		list_move_tail(&vma->combined_links.userptr,
+			       &vm->userptr.repin_list);
 	}
 	spin_unlock(&vm->userptr.invalidated_lock);
 
@@ -789,27 +718,12 @@ int xe_vm_userptr_pin(struct xe_vm *vm)
 				 combined_links.userptr) {
 		err = xe_vma_userptr_pin_pages(vma);
 		if (err < 0)
-			goto out_err;
+			return err;
 
-		list_move_tail(&vma->combined_links.userptr, &tmp_evict);
+		list_move_tail(&vma->combined_links.userptr, &vm->rebind_list);
 	}
 
-	/* Take lock and move to rebind_list for rebinding. */
-	err = dma_resv_lock_interruptible(xe_vm_resv(vm), NULL);
-	if (err)
-		goto out_err;
-
-	list_for_each_entry_safe(vma, next, &tmp_evict, combined_links.userptr)
-		list_move_tail(&vma->combined_links.rebind, &vm->rebind_list);
-
-	dma_resv_unlock(xe_vm_resv(vm));
-
 	return 0;
-
-out_err:
-	list_splice_tail(&tmp_evict, &vm->userptr.repin_list);
-
-	return err;
 }
 
 /**
@@ -888,8 +802,6 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
 	}
 
 	INIT_LIST_HEAD(&vma->combined_links.rebind);
-	INIT_LIST_HEAD(&vma->notifier.rebind_link);
-	INIT_LIST_HEAD(&vma->extobj.link);
 
 	INIT_LIST_HEAD(&vma->gpuva.gem.entry);
 	vma->gpuva.vm = &vm->gpuvm;
@@ -921,6 +833,7 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
 			return ERR_CAST(vm_bo);
 		}
 
+		drm_gpuvm_bo_extobj_add(vm_bo);
 		drm_gem_object_get(&bo->ttm.base);
 		vma->gpuva.gem.obj = &bo->ttm.base;
 		vma->gpuva.gem.offset = bo_offset_or_userptr;
@@ -953,16 +866,6 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
 	return vma;
 }
 
-static bool vm_remove_extobj(struct xe_vma *vma)
-{
-	if (!list_empty(&vma->extobj.link)) {
-		xe_vma_vm(vma)->extobj.entries--;
-		list_del_init(&vma->extobj.link);
-		return true;
-	}
-	return false;
-}
-
 static void xe_vma_destroy_late(struct xe_vma *vma)
 {
 	struct xe_vm *vm = xe_vma_vm(vma);
@@ -1003,60 +906,6 @@ static void vma_destroy_work_func(struct work_struct *w)
 	xe_vma_destroy_late(vma);
 }
 
-static struct xe_vma *
-bo_has_vm_references_locked(struct xe_bo *bo, struct xe_vm *vm,
-			    struct xe_vma *ignore)
-{
-	struct drm_gpuvm_bo *vm_bo;
-	struct drm_gpuva *va;
-	struct drm_gem_object *obj = &bo->ttm.base;
-
-	xe_bo_assert_held(bo);
-
-	drm_gem_for_each_gpuvm_bo(vm_bo, obj) {
-		drm_gpuvm_bo_for_each_va(va, vm_bo) {
-			struct xe_vma *vma = gpuva_to_vma(va);
-
-			if (vma != ignore && xe_vma_vm(vma) == vm)
-				return vma;
-		}
-	}
-
-	return NULL;
-}
-
-static bool bo_has_vm_references(struct xe_bo *bo, struct xe_vm *vm,
-				 struct xe_vma *ignore)
-{
-	bool ret;
-
-	xe_bo_lock(bo, false);
-	ret = !!bo_has_vm_references_locked(bo, vm, ignore);
-	xe_bo_unlock(bo);
-
-	return ret;
-}
-
-static void __vm_insert_extobj(struct xe_vm *vm, struct xe_vma *vma)
-{
-	lockdep_assert_held_write(&vm->lock);
-
-	list_add(&vma->extobj.link, &vm->extobj.list);
-	vm->extobj.entries++;
-}
-
-static void vm_insert_extobj(struct xe_vm *vm, struct xe_vma *vma)
-{
-	struct xe_bo *bo = xe_vma_bo(vma);
-
-	lockdep_assert_held_write(&vm->lock);
-
-	if (bo_has_vm_references(bo, vm, vma))
-		return;
-
-	__vm_insert_extobj(vm, vma);
-}
-
 static void vma_destroy_cb(struct dma_fence *fence,
 			   struct dma_fence_cb *cb)
 {
@@ -1082,20 +931,7 @@ static void xe_vma_destroy(struct xe_vma *vma, struct dma_fence *fence)
 	} else if (!xe_vma_is_null(vma)) {
 		xe_bo_assert_held(xe_vma_bo(vma));
 
-		spin_lock(&vm->notifier.list_lock);
-		list_del(&vma->notifier.rebind_link);
-		spin_unlock(&vm->notifier.list_lock);
-
 		drm_gpuva_unlink(&vma->gpuva);
-
-		if (!xe_vma_bo(vma)->vm && vm_remove_extobj(vma)) {
-			struct xe_vma *other;
-
-			other = bo_has_vm_references_locked(xe_vma_bo(vma), vm, NULL);
-
-			if (other)
-				__vm_insert_extobj(vm, other);
-		}
 	}
 
 	xe_vm_assert_held(vm);
@@ -1213,6 +1049,7 @@ static void xe_vm_free(struct drm_gpuvm *gpuvm);
 
 static struct drm_gpuvm_ops gpuvm_ops = {
 	.op_alloc = xe_vm_op_alloc,
+	.vm_bo_validate = xe_gpuvm_validate,
 	.vm_free = xe_vm_free,
 };
 
@@ -1375,9 +1212,6 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 	init_rwsem(&vm->userptr.notifier_lock);
 	spin_lock_init(&vm->userptr.invalidated_lock);
 
-	INIT_LIST_HEAD(&vm->notifier.rebind_list);
-	spin_lock_init(&vm->notifier.list_lock);
-
 	INIT_WORK(&vm->destroy_work, vm_destroy_work_func);
 
 	INIT_LIST_HEAD(&vm->preempt.exec_queues);
@@ -1386,8 +1220,6 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 	for_each_tile(tile, xe, id)
 		xe_range_fence_tree_init(&vm->rftree[id]);
 
-	INIT_LIST_HEAD(&vm->extobj.list);
-
 	vm->pt_ops = &xelp_pt_ops;
 
 	if (!(flags & XE_VM_FLAG_MIGRATION))
@@ -1618,7 +1450,6 @@ void xe_vm_close_and_put(struct xe_vm *vm)
 		xe_vma_destroy_unlocked(vma);
 	}
 
-	xe_assert(xe, list_empty(&vm->extobj.list));
 	up_write(&vm->lock);
 
 	mutex_lock(&xe->usm.lock);
@@ -2280,22 +2111,36 @@ static struct xe_vma *new_vma(struct xe_vm *vm, struct drm_gpuva_op_map *op,
 			      u8 tile_mask, bool read_only, bool is_null)
 {
 	struct xe_bo *bo = op->gem.obj ? gem_to_xe_bo(op->gem.obj) : NULL;
+	struct drm_exec exec;
 	struct xe_vma *vma;
 	int err;
 
 	lockdep_assert_held_write(&vm->lock);
 
 	if (bo) {
-		err = xe_bo_lock(bo, true);
-		if (err)
-			return ERR_PTR(err);
+		drm_exec_init(&exec, DRM_EXEC_INTERRUPTIBLE_WAIT);
+		drm_exec_until_all_locked(&exec) {
+			err = 0;
+			if (!bo->vm) {
+				err = drm_exec_lock_obj(&exec, xe_vm_obj(vm));
+				drm_exec_retry_on_contention(&exec);
+			}
+			if (!err) {
+				err = drm_exec_lock_obj(&exec, &bo->ttm.base);
+				drm_exec_retry_on_contention(&exec);
+			}
+			if (err) {
+				drm_exec_fini(&exec);
+				return ERR_PTR(err);
+			}
+		}
 	}
 	vma = xe_vma_create(vm, bo, op->gem.offset,
 			    op->va.addr, op->va.addr +
 			    op->va.range - 1, read_only, is_null,
 			    tile_mask);
 	if (bo)
-		xe_bo_unlock(bo);
+		drm_exec_fini(&exec);
 
 	if (xe_vma_is_userptr(vma)) {
 		err = xe_vma_userptr_pin_pages(vma);
@@ -2305,7 +2150,6 @@ static struct xe_vma *new_vma(struct xe_vm *vm, struct drm_gpuva_op_map *op,
 			return ERR_PTR(err);
 		}
 	} else if (!xe_vma_has_no_bo(vma) && !bo->vm) {
-		vm_insert_extobj(vm, vma);
 		err = add_preempt_fences(vm, bo);
 		if (err) {
 			prep_vma_destroy(vm, vma, false);
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index a348dc56027c..750ecea75f94 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -63,9 +63,14 @@ static inline bool xe_vm_is_closed_or_banned(struct xe_vm *vm)
 struct xe_vma *
 xe_vm_find_overlapping_vma(struct xe_vm *vm, u64 start, u64 range);
 
+static inline struct xe_vm *gpuvm_to_vm(struct drm_gpuvm *gpuvm)
+{
+	return container_of(gpuvm, struct xe_vm, gpuvm);
+}
+
 static inline struct xe_vm *gpuva_to_vm(struct drm_gpuva *gpuva)
 {
-	return container_of(gpuva->vm, struct xe_vm, gpuvm);
+	return gpuvm_to_vm(gpuva->vm);
 }
 
 static inline struct xe_vma *gpuva_to_vma(struct drm_gpuva *gpuva)
@@ -208,12 +213,6 @@ int xe_vma_userptr_check_repin(struct xe_vma *vma);
 
 bool xe_vm_validate_should_retry(struct drm_exec *exec, int err, ktime_t *end);
 
-int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
-			unsigned int num_shared, bool lock_vm);
-
-void xe_vm_fence_all_extobjs(struct xe_vm *vm, struct dma_fence *fence,
-			     enum dma_resv_usage usage);
-
 int xe_analyze_vm(struct drm_printer *p, struct xe_vm *vm, int gt_id);
 
 int xe_vm_prepare_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 d643dccf9e73..2535275a57d3 100644
--- a/drivers/gpu/drm/xe/xe_vm_types.h
+++ b/drivers/gpu/drm/xe/xe_vm_types.h
@@ -62,26 +62,17 @@ struct xe_vma {
 	/** @gpuva: Base GPUVA object */
 	struct drm_gpuva gpuva;
 
-	/** @combined_links: links into lists which are mutually exclusive */
+	/**
+	 * @combined_links: links into lists which are mutually exclusive.
+	 * Locking: vm lock in write mode OR vm lock in read mode and the vm's
+	 * resv.
+	 */
 	union {
-		/**
-		 * @userptr: link into VM repin list if userptr. Protected by
-		 * vm->lock in write mode.
-		 */
+		/** @userptr: link into VM repin list if userptr. */
 		struct list_head userptr;
-		/**
-		 * @rebind: link into VM if this VMA needs rebinding, and
-		 * if it's a bo (not userptr) needs validation after a possible
-		 * eviction. Protected by the vm's resv lock and typically
-		 * vm->lock is also held in write mode. The only place where
-		 * vm->lock isn't held is the BO eviction path which has
-		 * mutually exclusive execution with userptr.
-		 */
+		/** @rebind: link into VM if this VMA needs rebinding. */
 		struct list_head rebind;
-		/**
-		 * @destroy: link to contested list when VM is being closed.
-		 * Protected by vm->lock in write mode and vm's resv lock.
-		 */
+		/** @destroy: link to contested list when VM is being closed. */
 		struct list_head destroy;
 	} combined_links;
 
@@ -110,18 +101,6 @@ struct xe_vma {
 	 */
 	u8 tile_present;
 
-	struct {
-		struct list_head rebind_link;
-	} notifier;
-
-	struct {
-		/**
-		 * @extobj.link: Link into vm's external object list.
-		 * protected by the vm lock.
-		 */
-		struct list_head link;
-	} extobj;
-
 	/**
 	 * @userptr: user pointer state, only allocated for VMAs that are
 	 * user pointers
@@ -176,9 +155,9 @@ struct xe_vm {
 	struct rw_semaphore lock;
 
 	/**
-	 * @rebind_list: list of VMAs that need rebinding, and if they are
-	 * bos (not userptr), need validation after a possible eviction. The
-	 * list is protected by @resv.
+	 * @rebind_list: list of VMAs that need rebinding. Protected by the
+	 * vm->lock in write mode, OR (the vm->lock in read mode and the
+	 * vm resv).
 	 */
 	struct list_head rebind_list;
 
@@ -198,14 +177,6 @@ struct xe_vm {
 	 */
 	struct xe_range_fence_tree rftree[XE_MAX_TILES_PER_DEVICE];
 
-	/** @extobj: bookkeeping for external objects. Protected by the vm lock */
-	struct {
-		/** @enties: number of external BOs attached this VM */
-		u32 entries;
-		/** @list: list of vmas with external bos attached */
-		struct list_head list;
-	} extobj;
-
 	/** @async_ops: async VM operations (bind / unbinds) */
 	struct {
 		/** @list: list of pending async VM ops */
@@ -295,22 +266,6 @@ struct xe_vm {
 		struct xe_vma *last_fault_vma;
 	} usm;
 
-	/**
-	 * @notifier: Lists and locks for temporary usage within notifiers where
-	 * we either can't grab the vm lock or the vm resv.
-	 */
-	struct {
-		/** @notifier.list_lock: lock protecting @rebind_list */
-		spinlock_t list_lock;
-		/**
-		 * @notifier.rebind_list: list of vmas that we want to put on the
-		 * main @rebind_list. This list is protected for writing by both
-		 * notifier.list_lock, and the resv of the bo the vma points to,
-		 * and for reading by the notifier.list_lock only.
-		 */
-		struct list_head rebind_list;
-	} notifier;
-
 	/** @error_capture: allow to track errors */
 	struct {
 		/** @capture_once: capture only one error per VM */
-- 
2.41.0


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

* [Intel-xe] [CI v8 17/18] drm/xe: Use DRM_GPUVM_RESV_PROTECTED for gpuvm
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (14 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 16/18] drm/xe: Adapt to GPUVM tracking of external / evicted objects Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:32 ` [Intel-xe] [CI v8 18/18] drm/nouveau: use GPUVM common infrastructure Thomas Hellström
                   ` (7 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

Use DRM_GPUVM_RESV_PROTECTED to relax locking.

Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
---
 drivers/gpu/drm/xe/xe_vm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 8239804baa0c..9742b929d168 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -1231,8 +1231,8 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
 		goto err_no_resv;
 	}
 
-	drm_gpuvm_init(&vm->gpuvm, "Xe VM", 0, &xe->drm, vm_resv_obj,
-		       0, vm->size, 0, 0, &gpuvm_ops);
+	drm_gpuvm_init(&vm->gpuvm, "Xe VM", DRM_GPUVM_RESV_PROTECTED, &xe->drm,
+		       vm_resv_obj, 0, vm->size, 0, 0, &gpuvm_ops);
 
 	drm_gem_object_put(vm_resv_obj);
 
-- 
2.41.0


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

* [Intel-xe] [CI v8 18/18] drm/nouveau: use GPUVM common infrastructure
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (15 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 17/18] drm/xe: Use DRM_GPUVM_RESV_PROTECTED for gpuvm Thomas Hellström
@ 2023-11-03 15:32 ` Thomas Hellström
  2023-11-03 15:35 ` [Intel-xe] ✓ CI.Patch_applied: success for series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Patchwork
                   ` (6 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Thomas Hellström @ 2023-11-03 15:32 UTC (permalink / raw)
  To: intel-xe

From: Danilo Krummrich <dakr@redhat.com>

GPUVM provides common infrastructure to track external and evicted GEM
objects as well as locking and validation helpers.

Especially external and evicted object tracking is a huge improvement
compared to the current brute force approach of iterating all mappings
in order to lock and validate the GPUVM's GEM objects. Hence, make us of
it.

Signed-off-by: Danilo Krummrich <dakr@redhat.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
---
 drivers/gpu/drm/nouveau/nouveau_bo.c    |  4 +-
 drivers/gpu/drm/nouveau/nouveau_exec.c  | 57 ++++----------
 drivers/gpu/drm/nouveau/nouveau_exec.h  |  4 -
 drivers/gpu/drm/nouveau/nouveau_sched.c |  9 ++-
 drivers/gpu/drm/nouveau/nouveau_sched.h |  7 +-
 drivers/gpu/drm/nouveau/nouveau_uvmm.c  | 99 ++++++++++++++++---------
 6 files changed, 90 insertions(+), 90 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
index 7afad86da64b..b7dda486a7ea 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -1061,17 +1061,18 @@ nouveau_bo_move(struct ttm_buffer_object *bo, bool evict,
 {
 	struct nouveau_drm *drm = nouveau_bdev(bo->bdev);
 	struct nouveau_bo *nvbo = nouveau_bo(bo);
+	struct drm_gem_object *obj = &bo->base;
 	struct ttm_resource *old_reg = bo->resource;
 	struct nouveau_drm_tile *new_tile = NULL;
 	int ret = 0;
 
-
 	if (new_reg->mem_type == TTM_PL_TT) {
 		ret = nouveau_ttm_tt_bind(bo->bdev, bo->ttm, new_reg);
 		if (ret)
 			return ret;
 	}
 
+	drm_gpuvm_bo_gem_evict(obj, evict);
 	nouveau_bo_move_ntfy(bo, new_reg);
 	ret = ttm_bo_wait_ctx(bo, ctx);
 	if (ret)
@@ -1136,6 +1137,7 @@ nouveau_bo_move(struct ttm_buffer_object *bo, bool evict,
 out_ntfy:
 	if (ret) {
 		nouveau_bo_move_ntfy(bo, bo->resource);
+		drm_gpuvm_bo_gem_evict(obj, !evict);
 	}
 	return ret;
 }
diff --git a/drivers/gpu/drm/nouveau/nouveau_exec.c b/drivers/gpu/drm/nouveau/nouveau_exec.c
index 8983fcbdbc50..41a5e4c3d271 100644
--- a/drivers/gpu/drm/nouveau/nouveau_exec.c
+++ b/drivers/gpu/drm/nouveau/nouveau_exec.c
@@ -1,7 +1,5 @@
 // SPDX-License-Identifier: MIT
 
-#include <drm/drm_exec.h>
-
 #include "nouveau_drv.h"
 #include "nouveau_gem.h"
 #include "nouveau_mem.h"
@@ -86,14 +84,12 @@
  */
 
 static int
-nouveau_exec_job_submit(struct nouveau_job *job)
+nouveau_exec_job_submit(struct nouveau_job *job,
+			struct drm_gpuvm_exec *vme)
 {
 	struct nouveau_exec_job *exec_job = to_nouveau_exec_job(job);
 	struct nouveau_cli *cli = job->cli;
 	struct nouveau_uvmm *uvmm = nouveau_cli_uvmm(cli);
-	struct drm_exec *exec = &job->exec;
-	struct drm_gem_object *obj;
-	unsigned long index;
 	int ret;
 
 	/* Create a new fence, but do not emit yet. */
@@ -102,52 +98,29 @@ nouveau_exec_job_submit(struct nouveau_job *job)
 		return ret;
 
 	nouveau_uvmm_lock(uvmm);
-	drm_exec_init(exec, DRM_EXEC_INTERRUPTIBLE_WAIT |
-			    DRM_EXEC_IGNORE_DUPLICATES);
-	drm_exec_until_all_locked(exec) {
-		struct drm_gpuva *va;
-
-		drm_gpuvm_for_each_va(va, &uvmm->base) {
-			if (unlikely(va == &uvmm->base.kernel_alloc_node))
-				continue;
-
-			ret = drm_exec_prepare_obj(exec, va->gem.obj, 1);
-			drm_exec_retry_on_contention(exec);
-			if (ret)
-				goto err_uvmm_unlock;
-		}
+	ret = drm_gpuvm_exec_lock(vme);
+	if (ret) {
+		nouveau_uvmm_unlock(uvmm);
+		return ret;
 	}
 	nouveau_uvmm_unlock(uvmm);
 
-	drm_exec_for_each_locked_object(exec, index, obj) {
-		struct nouveau_bo *nvbo = nouveau_gem_object(obj);
-
-		ret = nouveau_bo_validate(nvbo, true, false);
-		if (ret)
-			goto err_exec_fini;
+	ret = drm_gpuvm_exec_validate(vme);
+	if (ret) {
+		drm_gpuvm_exec_unlock(vme);
+		return ret;
 	}
 
 	return 0;
-
-err_uvmm_unlock:
-	nouveau_uvmm_unlock(uvmm);
-err_exec_fini:
-	drm_exec_fini(exec);
-	return ret;
-
 }
 
 static void
-nouveau_exec_job_armed_submit(struct nouveau_job *job)
+nouveau_exec_job_armed_submit(struct nouveau_job *job,
+			      struct drm_gpuvm_exec *vme)
 {
-	struct drm_exec *exec = &job->exec;
-	struct drm_gem_object *obj;
-	unsigned long index;
-
-	drm_exec_for_each_locked_object(exec, index, obj)
-		dma_resv_add_fence(obj->resv, job->done_fence, job->resv_usage);
-
-	drm_exec_fini(exec);
+	drm_gpuvm_exec_resv_add_fence(vme, job->done_fence,
+				      job->resv_usage, job->resv_usage);
+	drm_gpuvm_exec_unlock(vme);
 }
 
 static struct dma_fence *
diff --git a/drivers/gpu/drm/nouveau/nouveau_exec.h b/drivers/gpu/drm/nouveau/nouveau_exec.h
index 778cacd90f65..b815de2428f3 100644
--- a/drivers/gpu/drm/nouveau/nouveau_exec.h
+++ b/drivers/gpu/drm/nouveau/nouveau_exec.h
@@ -3,16 +3,12 @@
 #ifndef __NOUVEAU_EXEC_H__
 #define __NOUVEAU_EXEC_H__
 
-#include <drm/drm_exec.h>
-
 #include "nouveau_drv.h"
 #include "nouveau_sched.h"
 
 struct nouveau_exec_job_args {
 	struct drm_file *file_priv;
 	struct nouveau_sched_entity *sched_entity;
-
-	struct drm_exec exec;
 	struct nouveau_channel *chan;
 
 	struct {
diff --git a/drivers/gpu/drm/nouveau/nouveau_sched.c b/drivers/gpu/drm/nouveau/nouveau_sched.c
index 3cb0033dccf9..950400ce12e2 100644
--- a/drivers/gpu/drm/nouveau/nouveau_sched.c
+++ b/drivers/gpu/drm/nouveau/nouveau_sched.c
@@ -263,6 +263,11 @@ nouveau_job_submit(struct nouveau_job *job)
 {
 	struct nouveau_sched_entity *entity = to_nouveau_sched_entity(job->base.entity);
 	struct dma_fence *done_fence = NULL;
+	struct drm_gpuvm_exec vm_exec = {
+		.vm = &nouveau_cli_uvmm(job->cli)->base,
+		.flags = DRM_EXEC_IGNORE_DUPLICATES,
+		.num_fences = 1,
+	};
 	int ret;
 
 	ret = nouveau_job_add_deps(job);
@@ -282,7 +287,7 @@ nouveau_job_submit(struct nouveau_job *job)
 	 * successfully.
 	 */
 	if (job->ops->submit) {
-		ret = job->ops->submit(job);
+		ret = job->ops->submit(job, &vm_exec);
 		if (ret)
 			goto err_cleanup;
 	}
@@ -315,7 +320,7 @@ nouveau_job_submit(struct nouveau_job *job)
 	set_bit(DRM_SCHED_FENCE_DONT_PIPELINE, &job->done_fence->flags);
 
 	if (job->ops->armed_submit)
-		job->ops->armed_submit(job);
+		job->ops->armed_submit(job, &vm_exec);
 
 	nouveau_job_fence_attach(job);
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_sched.h b/drivers/gpu/drm/nouveau/nouveau_sched.h
index 27ac19792597..0f87697dbc9e 100644
--- a/drivers/gpu/drm/nouveau/nouveau_sched.h
+++ b/drivers/gpu/drm/nouveau/nouveau_sched.h
@@ -5,7 +5,7 @@
 
 #include <linux/types.h>
 
-#include <drm/drm_exec.h>
+#include <drm/drm_gpuvm.h>
 #include <drm/gpu_scheduler.h>
 
 #include "nouveau_drv.h"
@@ -54,7 +54,6 @@ struct nouveau_job {
 	struct drm_file *file_priv;
 	struct nouveau_cli *cli;
 
-	struct drm_exec exec;
 	enum dma_resv_usage resv_usage;
 	struct dma_fence *done_fence;
 
@@ -76,8 +75,8 @@ struct nouveau_job {
 		/* If .submit() returns without any error, it is guaranteed that
 		 * armed_submit() is called.
 		 */
-		int (*submit)(struct nouveau_job *);
-		void (*armed_submit)(struct nouveau_job *);
+		int (*submit)(struct nouveau_job *, struct drm_gpuvm_exec *);
+		void (*armed_submit)(struct nouveau_job *, struct drm_gpuvm_exec *);
 		struct dma_fence *(*run)(struct nouveau_job *);
 		void (*free)(struct nouveau_job *);
 		enum drm_gpu_sched_stat (*timeout)(struct nouveau_job *);
diff --git a/drivers/gpu/drm/nouveau/nouveau_uvmm.c b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
index eda7bb8624f1..2bb72fff06e0 100644
--- a/drivers/gpu/drm/nouveau/nouveau_uvmm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_uvmm.c
@@ -438,8 +438,9 @@ nouveau_uvma_region_complete(struct nouveau_uvma_region *reg)
 static void
 op_map_prepare_unwind(struct nouveau_uvma *uvma)
 {
+	struct drm_gpuva *va = &uvma->va;
 	nouveau_uvma_gem_put(uvma);
-	drm_gpuva_remove(&uvma->va);
+	drm_gpuva_remove(va);
 	nouveau_uvma_free(uvma);
 }
 
@@ -468,6 +469,7 @@ nouveau_uvmm_sm_prepare_unwind(struct nouveau_uvmm *uvmm,
 			break;
 		case DRM_GPUVA_OP_REMAP: {
 			struct drm_gpuva_op_remap *r = &op->remap;
+			struct drm_gpuva *va = r->unmap->va;
 
 			if (r->next)
 				op_map_prepare_unwind(new->next);
@@ -475,7 +477,7 @@ nouveau_uvmm_sm_prepare_unwind(struct nouveau_uvmm *uvmm,
 			if (r->prev)
 				op_map_prepare_unwind(new->prev);
 
-			op_unmap_prepare_unwind(r->unmap->va);
+			op_unmap_prepare_unwind(va);
 			break;
 		}
 		case DRM_GPUVA_OP_UNMAP:
@@ -634,6 +636,7 @@ nouveau_uvmm_sm_prepare(struct nouveau_uvmm *uvmm,
 					goto unwind;
 				}
 			}
+
 			break;
 		}
 		case DRM_GPUVA_OP_REMAP: {
@@ -1135,12 +1138,44 @@ bind_link_gpuvas(struct bind_job_op *bop)
 }
 
 static int
-nouveau_uvmm_bind_job_submit(struct nouveau_job *job)
+bind_lock_extra(struct drm_gpuvm_exec *vme)
+{
+	struct nouveau_uvmm_bind_job *bind_job = vme->extra.priv;
+	struct drm_exec *exec = &vme->exec;
+	struct bind_job_op *op;
+	int ret;
+
+	list_for_each_op(op, &bind_job->ops) {
+		struct drm_gpuva_op *va_op;
+
+		if (IS_ERR_OR_NULL(op->ops))
+			continue;
+
+		drm_gpuva_for_each_op(va_op, op->ops) {
+			struct drm_gem_object *obj = op_gem_obj(va_op);
+
+			if (unlikely(!obj))
+				continue;
+
+			if (va_op->op != DRM_GPUVA_OP_UNMAP)
+				continue;
+
+			ret = drm_exec_prepare_obj(exec, obj, vme->num_fences);
+			if (ret)
+				return ret;
+		}
+	}
+
+	return 0;
+}
+
+static int
+nouveau_uvmm_bind_job_submit(struct nouveau_job *job,
+			     struct drm_gpuvm_exec *vme)
 {
 	struct nouveau_uvmm *uvmm = nouveau_cli_uvmm(job->cli);
 	struct nouveau_uvmm_bind_job *bind_job = to_uvmm_bind_job(job);
 	struct nouveau_sched_entity *entity = job->entity;
-	struct drm_exec *exec = &job->exec;
 	struct bind_job_op *op;
 	int ret;
 
@@ -1157,6 +1192,8 @@ nouveau_uvmm_bind_job_submit(struct nouveau_job *job)
 			dma_resv_unlock(obj->resv);
 			if (IS_ERR(op->vm_bo))
 				return PTR_ERR(op->vm_bo);
+
+			drm_gpuvm_bo_extobj_add(op->vm_bo);
 		}
 
 		ret = bind_validate_op(job, op);
@@ -1179,6 +1216,7 @@ nouveau_uvmm_bind_job_submit(struct nouveau_job *job)
 	 * unwind all GPU VA space changes on failure.
 	 */
 	nouveau_uvmm_lock(uvmm);
+
 	list_for_each_op(op, &bind_job->ops) {
 		switch (op->op) {
 		case OP_MAP_SPARSE:
@@ -1290,30 +1328,12 @@ nouveau_uvmm_bind_job_submit(struct nouveau_job *job)
 		}
 	}
 
-	drm_exec_init(exec, DRM_EXEC_INTERRUPTIBLE_WAIT |
-			    DRM_EXEC_IGNORE_DUPLICATES);
-	drm_exec_until_all_locked(exec) {
-		list_for_each_op(op, &bind_job->ops) {
-			struct drm_gpuva_op *va_op;
+	vme->extra.fn = bind_lock_extra;
+	vme->extra.priv = bind_job;
 
-			if (IS_ERR_OR_NULL(op->ops))
-				continue;
-
-			drm_gpuva_for_each_op(va_op, op->ops) {
-				struct drm_gem_object *obj = op_gem_obj(va_op);
-
-				if (unlikely(!obj))
-					continue;
-
-				ret = drm_exec_prepare_obj(exec, obj, 1);
-				drm_exec_retry_on_contention(exec);
-				if (ret) {
-					op = list_last_op(&bind_job->ops);
-					goto unwind;
-				}
-			}
-		}
-	}
+	ret = drm_gpuvm_exec_lock(vme);
+	if (ret)
+		goto unwind_continue;
 
 	list_for_each_op(op, &bind_job->ops) {
 		struct drm_gpuva_op *va_op;
@@ -1413,21 +1433,17 @@ nouveau_uvmm_bind_job_submit(struct nouveau_job *job)
 	}
 
 	nouveau_uvmm_unlock(uvmm);
-	drm_exec_fini(exec);
+	drm_gpuvm_exec_unlock(vme);
 	return ret;
 }
 
 static void
-nouveau_uvmm_bind_job_armed_submit(struct nouveau_job *job)
+nouveau_uvmm_bind_job_armed_submit(struct nouveau_job *job,
+				   struct drm_gpuvm_exec *vme)
 {
-	struct drm_exec *exec = &job->exec;
-	struct drm_gem_object *obj;
-	unsigned long index;
-
-	drm_exec_for_each_locked_object(exec, index, obj)
-		dma_resv_add_fence(obj->resv, job->done_fence, job->resv_usage);
-
-	drm_exec_fini(exec);
+	drm_gpuvm_exec_resv_add_fence(vme, job->done_fence,
+				      job->resv_usage, job->resv_usage);
+	drm_gpuvm_exec_unlock(vme);
 }
 
 static struct dma_fence *
@@ -1815,8 +1831,17 @@ nouveau_uvmm_free(struct drm_gpuvm *gpuvm)
 	kfree(uvmm);
 }
 
+static int
+nouveau_uvmm_bo_validate(struct drm_gpuvm_bo *vm_bo, struct drm_exec *exec)
+{
+	struct nouveau_bo *nvbo = nouveau_gem_object(vm_bo->obj);
+
+	return nouveau_bo_validate(nvbo, true, false);
+}
+
 static const struct drm_gpuvm_ops gpuvm_ops = {
 	.vm_free = nouveau_uvmm_free,
+	.vm_bo_validate = nouveau_uvmm_bo_validate,
 };
 
 int
-- 
2.41.0


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

* [Intel-xe] ✓ CI.Patch_applied: success for series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (16 preceding siblings ...)
  2023-11-03 15:32 ` [Intel-xe] [CI v8 18/18] drm/nouveau: use GPUVM common infrastructure Thomas Hellström
@ 2023-11-03 15:35 ` Patchwork
  2023-11-03 15:36 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
                   ` (5 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2023-11-03 15:35 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
URL   : https://patchwork.freedesktop.org/series/125958/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-xe-next' with base: ===
Base commit: 58dfdb8dc drm/xe: Add Wa_14019821291
=== git am output follows ===
Applying: drm/gpuvm: convert WARN() to drm_WARN() variants
Applying: drm/gpuvm: don't always WARN in drm_gpuvm_check_overflow()
Applying: drm/gpuvm: export drm_gpuvm_range_valid()
Applying: drm/nouveau: make use of drm_gpuvm_range_valid()
Applying: drm/gpuvm: add common dma-resv per struct drm_gpuvm
Applying: drm/xe: Adjust to "drm/gpuvm: add common dma-resv per struct drm_gpuvm"
Applying: drm/nouveau: make use of the GPUVM's shared dma-resv
Applying: drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm
Applying: drm/xe: Adjust to commit "drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm"
Applying: drm/nouveau: separately allocate struct nouveau_uvmm
Applying: drm/gpuvm: reference count drm_gpuvm structures
Applying: drm/xe: Adjust to commit drm/gpuvm: reference count drm_gpuvm structures
Applying: drm/gpuvm: add an abstraction for a VM / BO combination
Applying: drm/xe: Adjust to commit "drm/gpuvm: add an abstraction for a VM/BO combination"
Applying: drm/gpuvm: track/lock/validate external/evicted objects
Applying: drm/xe: Adapt to GPUVM tracking of external / evicted objects.
Applying: drm/xe: Use DRM_GPUVM_RESV_PROTECTED for gpuvm
Applying: drm/nouveau: use GPUVM common infrastructure



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

* [Intel-xe] ✗ CI.checkpatch: warning for series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (17 preceding siblings ...)
  2023-11-03 15:35 ` [Intel-xe] ✓ CI.Patch_applied: success for series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Patchwork
@ 2023-11-03 15:36 ` Patchwork
  2023-11-03 15:37 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
                   ` (4 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2023-11-03 15:36 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
URL   : https://patchwork.freedesktop.org/series/125958/
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
63c2b6b160bca2df6efc7bc4cea6f442097d7854
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 3a56adafaa40e9bd7e9e912f03298bc124402ac1
Author: Danilo Krummrich <dakr@redhat.com>
Date:   Fri Nov 3 16:32:34 2023 +0100

    drm/nouveau: use GPUVM common infrastructure
    
    GPUVM provides common infrastructure to track external and evicted GEM
    objects as well as locking and validation helpers.
    
    Especially external and evicted object tracking is a huge improvement
    compared to the current brute force approach of iterating all mappings
    in order to lock and validate the GPUVM's GEM objects. Hence, make us of
    it.
    
    Signed-off-by: Danilo Krummrich <dakr@redhat.com>
    Reviewed-by: Dave Airlie <airlied@redhat.com>
+ /mt/dim checkpatch 58dfdb8dc78e5668f9891c798ec3191863c1e0d2 drm-intel
6c2d54b09 drm/gpuvm: convert WARN() to drm_WARN() variants
ae3be29ee drm/gpuvm: don't always WARN in drm_gpuvm_check_overflow()
4fac5d494 drm/gpuvm: export drm_gpuvm_range_valid()
c54d0d8e9 drm/nouveau: make use of drm_gpuvm_range_valid()
0a67d1c3e drm/gpuvm: add common dma-resv per struct drm_gpuvm
44060cb74 drm/xe: Adjust to "drm/gpuvm: add common dma-resv per struct drm_gpuvm"
-:11: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one

total: 0 errors, 1 warnings, 0 checks, 364 lines checked
d51e40553 drm/nouveau: make use of the GPUVM's shared dma-resv
4998a6700 drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm
abc9e1db0 drm/xe: Adjust to commit "drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm"
-:11: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one

total: 0 errors, 1 warnings, 0 checks, 10 lines checked
95e46a429 drm/nouveau: separately allocate struct nouveau_uvmm
afa7dff32 drm/gpuvm: reference count drm_gpuvm structures
bbc3c71e2 drm/xe: Adjust to commit drm/gpuvm: reference count drm_gpuvm structures
-:11: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one

total: 0 errors, 1 warnings, 0 checks, 99 lines checked
ca91b52b8 drm/gpuvm: add an abstraction for a VM / BO combination
52179edf6 drm/xe: Adjust to commit "drm/gpuvm: add an abstraction for a VM/BO combination"
-:11: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one

total: 0 errors, 1 warnings, 0 checks, 96 lines checked
78de36f52 drm/gpuvm: track/lock/validate external/evicted objects
-:106: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__gpuvm' - possible side-effects?
#106: FILE: drivers/gpu/drm/drm_gpuvm.c:687:
+#define get_next_vm_bo_from_list(__gpuvm, __list_name, __local_list, __prev_vm_bo)	\
+	({										\
+		struct drm_gpuvm_bo *__vm_bo = NULL;					\
+											\
+		drm_gpuvm_bo_put(__prev_vm_bo);						\
+											\
+		spin_lock(&(__gpuvm)->__list_name.lock);				\
+		if (!(__gpuvm)->__list_name.local_list)					\
+			(__gpuvm)->__list_name.local_list = __local_list;		\
+		else									\
+			drm_WARN_ON((__gpuvm)->drm,					\
+				    (__gpuvm)->__list_name.local_list != __local_list);	\
+											\
+		while (!list_empty(&(__gpuvm)->__list_name.list)) {			\
+			__vm_bo = list_first_entry(&(__gpuvm)->__list_name.list,	\
+						   struct drm_gpuvm_bo,			\
+						   list.entry.__list_name);		\
+			if (kref_get_unless_zero(&__vm_bo->kref)) {			\
+				list_move_tail(&(__vm_bo)->list.entry.__list_name,	\
+					       __local_list);				\
+				break;							\
+			} else {							\
+				list_del_init(&(__vm_bo)->list.entry.__list_name);	\
+				__vm_bo = NULL;						\
+			}								\
+		}									\
+		spin_unlock(&(__gpuvm)->__list_name.lock);				\
+											\
+		__vm_bo;								\
+	})

-:106: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__list_name' - possible side-effects?
#106: FILE: drivers/gpu/drm/drm_gpuvm.c:687:
+#define get_next_vm_bo_from_list(__gpuvm, __list_name, __local_list, __prev_vm_bo)	\
+	({										\
+		struct drm_gpuvm_bo *__vm_bo = NULL;					\
+											\
+		drm_gpuvm_bo_put(__prev_vm_bo);						\
+											\
+		spin_lock(&(__gpuvm)->__list_name.lock);				\
+		if (!(__gpuvm)->__list_name.local_list)					\
+			(__gpuvm)->__list_name.local_list = __local_list;		\
+		else									\
+			drm_WARN_ON((__gpuvm)->drm,					\
+				    (__gpuvm)->__list_name.local_list != __local_list);	\
+											\
+		while (!list_empty(&(__gpuvm)->__list_name.list)) {			\
+			__vm_bo = list_first_entry(&(__gpuvm)->__list_name.list,	\
+						   struct drm_gpuvm_bo,			\
+						   list.entry.__list_name);		\
+			if (kref_get_unless_zero(&__vm_bo->kref)) {			\
+				list_move_tail(&(__vm_bo)->list.entry.__list_name,	\
+					       __local_list);				\
+				break;							\
+			} else {							\
+				list_del_init(&(__vm_bo)->list.entry.__list_name);	\
+				__vm_bo = NULL;						\
+			}								\
+		}									\
+		spin_unlock(&(__gpuvm)->__list_name.lock);				\
+											\
+		__vm_bo;								\
+	})

-:106: CHECK:MACRO_ARG_PRECEDENCE: Macro argument '__list_name' may be better as '(__list_name)' to avoid precedence issues
#106: FILE: drivers/gpu/drm/drm_gpuvm.c:687:
+#define get_next_vm_bo_from_list(__gpuvm, __list_name, __local_list, __prev_vm_bo)	\
+	({										\
+		struct drm_gpuvm_bo *__vm_bo = NULL;					\
+											\
+		drm_gpuvm_bo_put(__prev_vm_bo);						\
+											\
+		spin_lock(&(__gpuvm)->__list_name.lock);				\
+		if (!(__gpuvm)->__list_name.local_list)					\
+			(__gpuvm)->__list_name.local_list = __local_list;		\
+		else									\
+			drm_WARN_ON((__gpuvm)->drm,					\
+				    (__gpuvm)->__list_name.local_list != __local_list);	\
+											\
+		while (!list_empty(&(__gpuvm)->__list_name.list)) {			\
+			__vm_bo = list_first_entry(&(__gpuvm)->__list_name.list,	\
+						   struct drm_gpuvm_bo,			\
+						   list.entry.__list_name);		\
+			if (kref_get_unless_zero(&__vm_bo->kref)) {			\
+				list_move_tail(&(__vm_bo)->list.entry.__list_name,	\
+					       __local_list);				\
+				break;							\
+			} else {							\
+				list_del_init(&(__vm_bo)->list.entry.__list_name);	\
+				__vm_bo = NULL;						\
+			}								\
+		}									\
+		spin_unlock(&(__gpuvm)->__list_name.lock);				\
+											\
+		__vm_bo;								\
+	})

-:106: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__local_list' - possible side-effects?
#106: FILE: drivers/gpu/drm/drm_gpuvm.c:687:
+#define get_next_vm_bo_from_list(__gpuvm, __list_name, __local_list, __prev_vm_bo)	\
+	({										\
+		struct drm_gpuvm_bo *__vm_bo = NULL;					\
+											\
+		drm_gpuvm_bo_put(__prev_vm_bo);						\
+											\
+		spin_lock(&(__gpuvm)->__list_name.lock);				\
+		if (!(__gpuvm)->__list_name.local_list)					\
+			(__gpuvm)->__list_name.local_list = __local_list;		\
+		else									\
+			drm_WARN_ON((__gpuvm)->drm,					\
+				    (__gpuvm)->__list_name.local_list != __local_list);	\
+											\
+		while (!list_empty(&(__gpuvm)->__list_name.list)) {			\
+			__vm_bo = list_first_entry(&(__gpuvm)->__list_name.list,	\
+						   struct drm_gpuvm_bo,			\
+						   list.entry.__list_name);		\
+			if (kref_get_unless_zero(&__vm_bo->kref)) {			\
+				list_move_tail(&(__vm_bo)->list.entry.__list_name,	\
+					       __local_list);				\
+				break;							\
+			} else {							\
+				list_del_init(&(__vm_bo)->list.entry.__list_name);	\
+				__vm_bo = NULL;						\
+			}								\
+		}									\
+		spin_unlock(&(__gpuvm)->__list_name.lock);				\
+											\
+		__vm_bo;								\
+	})

-:169: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__gpuvm' - possible side-effects?
#169: FILE: drivers/gpu/drm/drm_gpuvm.c:750:
+#define for_each_vm_bo_in_list(__gpuvm, __list_name, __local_list, __vm_bo)	\
+	for (__vm_bo = get_next_vm_bo_from_list(__gpuvm, __list_name,		\
+						__local_list, NULL);		\
+	     __vm_bo;								\
+	     __vm_bo = get_next_vm_bo_from_list(__gpuvm, __list_name,		\
+						__local_list, __vm_bo))

-:169: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__list_name' - possible side-effects?
#169: FILE: drivers/gpu/drm/drm_gpuvm.c:750:
+#define for_each_vm_bo_in_list(__gpuvm, __list_name, __local_list, __vm_bo)	\
+	for (__vm_bo = get_next_vm_bo_from_list(__gpuvm, __list_name,		\
+						__local_list, NULL);		\
+	     __vm_bo;								\
+	     __vm_bo = get_next_vm_bo_from_list(__gpuvm, __list_name,		\
+						__local_list, __vm_bo))

-:169: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__local_list' - possible side-effects?
#169: FILE: drivers/gpu/drm/drm_gpuvm.c:750:
+#define for_each_vm_bo_in_list(__gpuvm, __list_name, __local_list, __vm_bo)	\
+	for (__vm_bo = get_next_vm_bo_from_list(__gpuvm, __list_name,		\
+						__local_list, NULL);		\
+	     __vm_bo;								\
+	     __vm_bo = get_next_vm_bo_from_list(__gpuvm, __list_name,		\
+						__local_list, __vm_bo))

-:169: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__vm_bo' - possible side-effects?
#169: FILE: drivers/gpu/drm/drm_gpuvm.c:750:
+#define for_each_vm_bo_in_list(__gpuvm, __list_name, __local_list, __vm_bo)	\
+	for (__vm_bo = get_next_vm_bo_from_list(__gpuvm, __list_name,		\
+						__local_list, NULL);		\
+	     __vm_bo;								\
+	     __vm_bo = get_next_vm_bo_from_list(__gpuvm, __list_name,		\
+						__local_list, __vm_bo))

-:199: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__gpuvm' - possible side-effects?
#199: FILE: drivers/gpu/drm/drm_gpuvm.c:780:
+#define restore_vm_bo_list(__gpuvm, __list_name)			\
+	__restore_vm_bo_list((__gpuvm), &(__gpuvm)->__list_name.lock,	\
+			     &(__gpuvm)->__list_name.list,		\
+			     &(__gpuvm)->__list_name.local_list)

-:199: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__list_name' - possible side-effects?
#199: FILE: drivers/gpu/drm/drm_gpuvm.c:780:
+#define restore_vm_bo_list(__gpuvm, __list_name)			\
+	__restore_vm_bo_list((__gpuvm), &(__gpuvm)->__list_name.lock,	\
+			     &(__gpuvm)->__list_name.list,		\
+			     &(__gpuvm)->__list_name.local_list)

-:199: CHECK:MACRO_ARG_PRECEDENCE: Macro argument '__list_name' may be better as '(__list_name)' to avoid precedence issues
#199: FILE: drivers/gpu/drm/drm_gpuvm.c:780:
+#define restore_vm_bo_list(__gpuvm, __list_name)			\
+	__restore_vm_bo_list((__gpuvm), &(__gpuvm)->__list_name.lock,	\
+			     &(__gpuvm)->__list_name.list,		\
+			     &(__gpuvm)->__list_name.local_list)

-:236: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__vm_bo' - possible side-effects?
#236: FILE: drivers/gpu/drm/drm_gpuvm.c:817:
+#define drm_gpuvm_bo_list_add(__vm_bo, __list_name, __lock)			\
+	__drm_gpuvm_bo_list_add((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				&(__vm_bo)->vm->__list_name.list)

-:236: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__list_name' - possible side-effects?
#236: FILE: drivers/gpu/drm/drm_gpuvm.c:817:
+#define drm_gpuvm_bo_list_add(__vm_bo, __list_name, __lock)			\
+	__drm_gpuvm_bo_list_add((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				&(__vm_bo)->vm->__list_name.list)

-:236: CHECK:MACRO_ARG_PRECEDENCE: Macro argument '__list_name' may be better as '(__list_name)' to avoid precedence issues
#236: FILE: drivers/gpu/drm/drm_gpuvm.c:817:
+#define drm_gpuvm_bo_list_add(__vm_bo, __list_name, __lock)			\
+	__drm_gpuvm_bo_list_add((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				&(__vm_bo)->vm->__list_name.list)

-:265: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__vm_bo' - possible side-effects?
#265: FILE: drivers/gpu/drm/drm_gpuvm.c:846:
+#define drm_gpuvm_bo_list_del_init(__vm_bo, __list_name, __lock)		\
+	__drm_gpuvm_bo_list_del((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				true)

-:265: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__list_name' - possible side-effects?
#265: FILE: drivers/gpu/drm/drm_gpuvm.c:846:
+#define drm_gpuvm_bo_list_del_init(__vm_bo, __list_name, __lock)		\
+	__drm_gpuvm_bo_list_del((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				true)

-:265: CHECK:MACRO_ARG_PRECEDENCE: Macro argument '__list_name' may be better as '(__list_name)' to avoid precedence issues
#265: FILE: drivers/gpu/drm/drm_gpuvm.c:846:
+#define drm_gpuvm_bo_list_del_init(__vm_bo, __list_name, __lock)		\
+	__drm_gpuvm_bo_list_del((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				true)

-:280: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__vm_bo' - possible side-effects?
#280: FILE: drivers/gpu/drm/drm_gpuvm.c:861:
+#define drm_gpuvm_bo_list_del(__vm_bo, __list_name, __lock)			\
+	__drm_gpuvm_bo_list_del((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				false)

-:280: CHECK:MACRO_ARG_REUSE: Macro argument reuse '__list_name' - possible side-effects?
#280: FILE: drivers/gpu/drm/drm_gpuvm.c:861:
+#define drm_gpuvm_bo_list_del(__vm_bo, __list_name, __lock)			\
+	__drm_gpuvm_bo_list_del((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				false)

-:280: CHECK:MACRO_ARG_PRECEDENCE: Macro argument '__list_name' may be better as '(__list_name)' to avoid precedence issues
#280: FILE: drivers/gpu/drm/drm_gpuvm.c:861:
+#define drm_gpuvm_bo_list_del(__vm_bo, __list_name, __lock)			\
+	__drm_gpuvm_bo_list_del((__vm_bo)->vm,					\
+				__lock ? &(__vm_bo)->vm->__list_name.lock :	\
+					 NULL,					\
+				&(__vm_bo)->list.entry.__list_name,		\
+				false)

-:847: CHECK:PREFER_KERNEL_TYPES: Prefer kernel type 'u32' over 'uint32_t'
#847: FILE: include/drm/drm_gpuvm.h:517:
+	uint32_t flags;

total: 0 errors, 0 warnings, 21 checks, 985 lines checked
de9ca34ad drm/xe: Adapt to GPUVM tracking of external / evicted objects.
bbc926d18 drm/xe: Use DRM_GPUVM_RESV_PROTECTED for gpuvm
3a56adafa drm/nouveau: use GPUVM common infrastructure
-:226: WARNING:FUNCTION_ARGUMENTS: function definition argument 'struct nouveau_job *' should also have an identifier name
#226: FILE: drivers/gpu/drm/nouveau/nouveau_sched.h:78:
+		int (*submit)(struct nouveau_job *, struct drm_gpuvm_exec *);

-:226: WARNING:FUNCTION_ARGUMENTS: function definition argument 'struct drm_gpuvm_exec *' should also have an identifier name
#226: FILE: drivers/gpu/drm/nouveau/nouveau_sched.h:78:
+		int (*submit)(struct nouveau_job *, struct drm_gpuvm_exec *);

-:227: WARNING:FUNCTION_ARGUMENTS: function definition argument 'struct nouveau_job *' should also have an identifier name
#227: FILE: drivers/gpu/drm/nouveau/nouveau_sched.h:79:
+		void (*armed_submit)(struct nouveau_job *, struct drm_gpuvm_exec *);

-:227: WARNING:FUNCTION_ARGUMENTS: function definition argument 'struct drm_gpuvm_exec *' should also have an identifier name
#227: FILE: drivers/gpu/drm/nouveau/nouveau_sched.h:79:
+		void (*armed_submit)(struct nouveau_job *, struct drm_gpuvm_exec *);

total: 0 errors, 4 warnings, 0 checks, 354 lines checked



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

* [Intel-xe] ✓ CI.KUnit: success for series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (18 preceding siblings ...)
  2023-11-03 15:36 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
@ 2023-11-03 15:37 ` Patchwork
  2023-11-03 15:44 ` [Intel-xe] ✓ CI.Build: " Patchwork
                   ` (3 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2023-11-03 15:37 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
URL   : https://patchwork.freedesktop.org/series/125958/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
stty: 'standard input': Inappropriate ioctl for device
[15:36:17] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:36:21] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
[15:36:41] Starting KUnit Kernel (1/1)...
[15:36:41] ============================================================
[15:36:41] ========================== xe_bo  ==========================
[15:36:41] [SKIPPED] xe_ccs_migrate_kunit
[15:36:41] [SKIPPED] xe_bo_evict_kunit
[15:36:41] ===================== [SKIPPED] xe_bo ======================
[15:36:41] ======================= xe_dma_buf  ========================
[15:36:41] [SKIPPED] xe_dma_buf_kunit
[15:36:41] =================== [SKIPPED] xe_dma_buf ===================
[15:36:41] ======================= xe_migrate  ========================
[15:36:41] [SKIPPED] xe_migrate_sanity_kunit
[15:36:41] =================== [SKIPPED] xe_migrate ===================
[15:36:41] ========================= xe_pci  ==========================
[15:36:41] [PASSED] xe_gmdid_graphics_ip
[15:36:41] [PASSED] xe_gmdid_media_ip
[15:36:41] ===================== [PASSED] xe_pci ======================
[15:36:41] ========================= xe_rtp  ==========================
[15:36:41] ================== xe_rtp_process_tests  ===================
[15:36:41] [PASSED] coalesce-same-reg
[15:36:41] [PASSED] no-match-no-add
[15:36:41] [PASSED] no-match-no-add-multiple-rules
[15:36:41] [PASSED] two-regs-two-entries
[15:36:41] [PASSED] clr-one-set-other
[15:36:41] [PASSED] set-field
[15:36:41] [PASSED] conflict-duplicate
[15:36:41] [PASSED] conflict-not-disjoint
[15:36:41] [PASSED] conflict-reg-type
[15:36:41] ============== [PASSED] xe_rtp_process_tests ===============
[15:36:41] ===================== [PASSED] xe_rtp ======================
[15:36:41] ========================== xe_wa  ==========================
[15:36:41] ======================== xe_wa_gt  =========================
[15:36:41] [PASSED] TIGERLAKE (B0)
[15:36:41] [PASSED] DG1 (A0)
[15:36:41] [PASSED] DG1 (B0)
[15:36:41] [PASSED] ALDERLAKE_S (A0)
[15:36:41] [PASSED] ALDERLAKE_S (B0)
[15:36:41] [PASSED] ALDERLAKE_S (C0)
[15:36:41] [PASSED] ALDERLAKE_S (D0)
[15:36:41] [PASSED] ALDERLAKE_P (A0)
[15:36:41] [PASSED] ALDERLAKE_P (B0)
[15:36:41] [PASSED] ALDERLAKE_P (C0)
[15:36:41] [PASSED] ALDERLAKE_S_RPLS (D0)
[15:36:41] [PASSED] ALDERLAKE_P_RPLU (E0)
[15:36:41] [PASSED] DG2_G10 (A0)
[15:36:41] [PASSED] DG2_G10 (A1)
[15:36:41] [PASSED] DG2_G10 (B0)
[15:36:41] [PASSED] DG2_G10 (C0)
[15:36:41] [PASSED] DG2_G11 (A0)
[15:36:41] [PASSED] DG2_G11 (B0)
[15:36:41] [PASSED] DG2_G11 (B1)
[15:36:41] [PASSED] DG2_G12 (A0)
[15:36:41] [PASSED] DG2_G12 (A1)
[15:36:41] [PASSED] PVC (B0)
[15:36:41] [PASSED] PVC (B1)
[15:36:41] [PASSED] PVC (C0)
[15:36:41] ==================== [PASSED] xe_wa_gt =====================
[15:36:41] ====================== [PASSED] xe_wa ======================
[15:36:41] ============================================================
[15:36:41] Testing complete. Ran 39 tests: passed: 35, skipped: 4
[15:36:41] Elapsed time: 24.331s total, 4.175s configuring, 20.036s building, 0.098s running

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[15:36:41] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:36:43] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
[15:37:02] Starting KUnit Kernel (1/1)...
[15:37:02] ============================================================
[15:37:02] ================== drm_test_pick_cmdline  ==================
[15:37:02] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[15:37:02] =============== drm_test_pick_cmdline_named  ===============
[15:37:02] [PASSED] NTSC
[15:37:02] [PASSED] NTSC-J
[15:37:02] [PASSED] PAL
[15:37:02] [PASSED] PAL-M
[15:37:02] =========== [PASSED] drm_test_pick_cmdline_named ===========
[15:37:02] ============== [PASSED] drm_test_pick_cmdline ==============
[15:37:02] ======================== drm_buddy  ========================
[15:37:02] [PASSED] drm_test_buddy_alloc_limit
[15:37:02] [PASSED] drm_test_buddy_alloc_range
[15:37:02] [PASSED] drm_test_buddy_alloc_optimistic
[15:37:03] [PASSED] drm_test_buddy_alloc_pessimistic
[15:37:03] [PASSED] drm_test_buddy_alloc_smoke
[15:37:03] [PASSED] drm_test_buddy_alloc_pathological
[15:37:03] ==================== [PASSED] drm_buddy ====================
[15:37:03] =================== drm_cmdline_parser  ====================
[15:37:03] [PASSED] drm_test_cmdline_force_d_only
[15:37:03] [PASSED] drm_test_cmdline_force_D_only_dvi
[15:37:03] [PASSED] drm_test_cmdline_force_D_only_hdmi
[15:37:03] [PASSED] drm_test_cmdline_force_D_only_not_digital
[15:37:03] [PASSED] drm_test_cmdline_force_e_only
[15:37:03] [PASSED] drm_test_cmdline_res
[15:37:03] [PASSED] drm_test_cmdline_res_vesa
[15:37:03] [PASSED] drm_test_cmdline_res_vesa_rblank
[15:37:03] [PASSED] drm_test_cmdline_res_rblank
[15:37:03] [PASSED] drm_test_cmdline_res_bpp
[15:37:03] [PASSED] drm_test_cmdline_res_refresh
[15:37:03] [PASSED] drm_test_cmdline_res_bpp_refresh
[15:37:03] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[15:37:03] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[15:37:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[15:37:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[15:37:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[15:37:03] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[15:37:03] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[15:37:03] [PASSED] drm_test_cmdline_res_margins_force_on
[15:37:03] [PASSED] drm_test_cmdline_res_vesa_margins
[15:37:03] [PASSED] drm_test_cmdline_name
[15:37:03] [PASSED] drm_test_cmdline_name_bpp
[15:37:03] [PASSED] drm_test_cmdline_name_option
[15:37:03] [PASSED] drm_test_cmdline_name_bpp_option
[15:37:03] [PASSED] drm_test_cmdline_rotate_0
[15:37:03] [PASSED] drm_test_cmdline_rotate_90
[15:37:03] [PASSED] drm_test_cmdline_rotate_180
[15:37:03] [PASSED] drm_test_cmdline_rotate_270
[15:37:03] [PASSED] drm_test_cmdline_hmirror
[15:37:03] [PASSED] drm_test_cmdline_vmirror
[15:37:03] [PASSED] drm_test_cmdline_margin_options
[15:37:03] [PASSED] drm_test_cmdline_multiple_options
[15:37:03] [PASSED] drm_test_cmdline_bpp_extra_and_option
[15:37:03] [PASSED] drm_test_cmdline_extra_and_option
[15:37:03] [PASSED] drm_test_cmdline_freestanding_options
[15:37:03] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[15:37:03] [PASSED] drm_test_cmdline_panel_orientation
[15:37:03] ================ drm_test_cmdline_invalid  =================
[15:37:03] [PASSED] margin_only
[15:37:03] [PASSED] interlace_only
[15:37:03] [PASSED] res_missing_x
[15:37:03] [PASSED] res_missing_y
[15:37:03] [PASSED] res_bad_y
[15:37:03] [PASSED] res_missing_y_bpp
[15:37:03] [PASSED] res_bad_bpp
[15:37:03] [PASSED] res_bad_refresh
[15:37:03] [PASSED] res_bpp_refresh_force_on_off
[15:37:03] [PASSED] res_invalid_mode
[15:37:03] [PASSED] res_bpp_wrong_place_mode
[15:37:03] [PASSED] name_bpp_refresh
[15:37:03] [PASSED] name_refresh
[15:37:03] [PASSED] name_refresh_wrong_mode
[15:37:03] [PASSED] name_refresh_invalid_mode
[15:37:03] [PASSED] rotate_multiple
[15:37:03] [PASSED] rotate_invalid_val
[15:37:03] [PASSED] rotate_truncated
[15:37:03] [PASSED] invalid_option
[15:37:03] [PASSED] invalid_tv_option
[15:37:03] [PASSED] truncated_tv_option
[15:37:03] ============ [PASSED] drm_test_cmdline_invalid =============
[15:37:03] =============== drm_test_cmdline_tv_options  ===============
[15:37:03] [PASSED] NTSC
[15:37:03] [PASSED] NTSC_443
[15:37:03] [PASSED] NTSC_J
[15:37:03] [PASSED] PAL
[15:37:03] [PASSED] PAL_M
[15:37:03] [PASSED] PAL_N
[15:37:03] [PASSED] SECAM
[15:37:03] =========== [PASSED] drm_test_cmdline_tv_options ===========
[15:37:03] =============== [PASSED] drm_cmdline_parser ================
[15:37:03] ================ drm_get_tv_mode_from_name  ================
[15:37:03] ========== drm_test_get_tv_mode_from_name_valid  ===========
[15:37:03] [PASSED] NTSC
[15:37:03] [PASSED] NTSC-443
[15:37:03] [PASSED] NTSC-J
[15:37:03] [PASSED] PAL
[15:37:03] [PASSED] PAL-M
[15:37:03] [PASSED] PAL-N
[15:37:03] [PASSED] SECAM
[15:37:03] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[15:37:03] [PASSED] drm_test_get_tv_mode_from_name_truncated
[15:37:03] ============ [PASSED] drm_get_tv_mode_from_name ============
[15:37:03] ==================== drm_damage_helper  ====================
[15:37:03] [PASSED] drm_test_damage_iter_no_damage
[15:37:03] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[15:37:03] [PASSED] drm_test_damage_iter_no_damage_src_moved
[15:37:03] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[15:37:03] [PASSED] drm_test_damage_iter_no_damage_not_visible
[15:37:03] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[15:37:03] [PASSED] drm_test_damage_iter_no_damage_no_fb
[15:37:03] [PASSED] drm_test_damage_iter_simple_damage
[15:37:03] [PASSED] drm_test_damage_iter_single_damage
[15:37:03] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[15:37:03] [PASSED] drm_test_damage_iter_single_damage_outside_src
[15:37:03] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[15:37:03] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[15:37:03] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[15:37:03] [PASSED] drm_test_damage_iter_single_damage_src_moved
[15:37:03] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[15:37:03] [PASSED] drm_test_damage_iter_damage
[15:37:03] [PASSED] drm_test_damage_iter_damage_one_intersect
[15:37:03] [PASSED] drm_test_damage_iter_damage_one_outside
[15:37:03] [PASSED] drm_test_damage_iter_damage_src_moved
[15:37:03] [PASSED] drm_test_damage_iter_damage_not_visible
[15:37:03] ================ [PASSED] drm_damage_helper ================
[15:37:03] ==================== drm_dp_mst_helper  ====================
[15:37:03] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[15:37:03] [PASSED] Clock 154000 BPP 30 DSC disabled
[15:37:03] [PASSED] Clock 234000 BPP 30 DSC disabled
[15:37:03] [PASSED] Clock 297000 BPP 24 DSC disabled
[15:37:03] [PASSED] Clock 332880 BPP 24 DSC enabled
[15:37:03] [PASSED] Clock 324540 BPP 24 DSC enabled
[15:37:03] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[15:37:03] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[15:37:03] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[15:37:03] [PASSED] DP_POWER_UP_PHY with port number
[15:37:03] [PASSED] DP_POWER_DOWN_PHY with port number
[15:37:03] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[15:37:03] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[15:37:03] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[15:37:03] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[15:37:03] [PASSED] DP_QUERY_PAYLOAD with port number
[15:37:03] [PASSED] DP_QUERY_PAYLOAD with VCPI
[15:37:03] [PASSED] DP_REMOTE_DPCD_READ with port number
[15:37:03] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[15:37:03] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[15:37:03] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[15:37:03] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[15:37:03] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[15:37:03] [PASSED] DP_REMOTE_I2C_READ with port number
[15:37:03] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[15:37:03] [PASSED] DP_REMOTE_I2C_READ with transactions array
[15:37:03] [PASSED] DP_REMOTE_I2C_WRITE with port number
[15:37:03] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[15:37:03] [PASSED] DP_REMOTE_I2C_WRITE with data array
[15:37:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[15:37:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[15:37:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[15:37:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[15:37:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[15:37:03] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[15:37:03] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[15:37:03] ================ [PASSED] drm_dp_mst_helper ================
[15:37:03] ================= drm_format_helper_test  ==================
[15:37:03] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[15:37:03] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[15:37:03] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[15:37:03] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[15:37:03] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[15:37:03] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[15:37:03] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[15:37:03] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[15:37:03] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[15:37:03] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[15:37:03] ============== drm_test_fb_xrgb8888_to_mono  ===============
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[15:37:03] ==================== drm_test_fb_swab  =====================
[15:37:03] [PASSED] single_pixel_source_buffer
[15:37:03] [PASSED] single_pixel_clip_rectangle
[15:37:03] [PASSED] well_known_colors
[15:37:03] [PASSED] destination_pitch
[15:37:03] ================ [PASSED] drm_test_fb_swab =================
[15:37:03] ================= drm_test_fb_clip_offset  =================
[15:37:03] [PASSED] pass through
[15:37:03] [PASSED] horizontal offset
[15:37:03] [PASSED] vertical offset
[15:37:03] [PASSED] horizontal and vertical offset
[15:37:03] [PASSED] horizontal offset (custom pitch)
[15:37:03] [PASSED] vertical offset (custom pitch)
[15:37:03] [PASSED] horizontal and vertical offset (custom pitch)
[15:37:03] ============= [PASSED] drm_test_fb_clip_offset =============
[15:37:03] ============== drm_test_fb_build_fourcc_list  ==============
[15:37:03] [PASSED] no native formats
[15:37:03] [PASSED] XRGB8888 as native format
[15:37:03] [PASSED] remove duplicates
[15:37:03] [PASSED] convert alpha formats
[15:37:03] [PASSED] random formats
[15:37:03] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[15:37:03] =================== drm_test_fb_memcpy  ====================
[15:37:03] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[15:37:03] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[15:37:03] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[15:37:03] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[15:37:03] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[15:37:03] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[15:37:03] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[15:37:03] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[15:37:03] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[15:37:03] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[15:37:03] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[15:37:03] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[15:37:03] =============== [PASSED] drm_test_fb_memcpy ================
[15:37:03] ============= [PASSED] drm_format_helper_test ==============
[15:37:03] ======================= drm_format  ========================
[15:37:03] [PASSED] drm_test_format_block_width_invalid
[15:37:03] [PASSED] drm_test_format_block_width_one_plane
[15:37:03] [PASSED] drm_test_format_block_width_two_plane
[15:37:03] [PASSED] drm_test_format_block_width_three_plane
[15:37:03] [PASSED] drm_test_format_block_width_tiled
[15:37:03] [PASSED] drm_test_format_block_height_invalid
[15:37:03] [PASSED] drm_test_format_block_height_one_plane
[15:37:03] [PASSED] drm_test_format_block_height_two_plane
[15:37:03] [PASSED] drm_test_format_block_height_three_plane
[15:37:03] [PASSED] drm_test_format_block_height_tiled
[15:37:03] [PASSED] drm_test_format_min_pitch_invalid
[15:37:03] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[15:37:03] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[15:37:03] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[15:37:03] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[15:37:03] [PASSED] drm_test_format_min_pitch_two_plane
[15:37:03] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[15:37:03] [PASSED] drm_test_format_min_pitch_tiled
[15:37:03] =================== [PASSED] drm_format ====================
[15:37:03] ===================== drm_framebuffer  =====================
[15:37:03] =============== drm_test_framebuffer_create  ===============
[15:37:03] [PASSED] ABGR8888 normal sizes
[15:37:03] [PASSED] ABGR8888 max sizes
[15:37:03] [PASSED] ABGR8888 pitch greater than min required
[15:37:03] [PASSED] ABGR8888 pitch less than min required
[15:37:03] [PASSED] ABGR8888 Invalid width
[15:37:03] [PASSED] ABGR8888 Invalid buffer handle
[15:37:03] [PASSED] No pixel format
[15:37:03] [PASSED] ABGR8888 Width 0
[15:37:03] [PASSED] ABGR8888 Height 0
[15:37:03] [PASSED] ABGR8888 Out of bound height * pitch combination
[15:37:03] [PASSED] ABGR8888 Large buffer offset
[15:37:03] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[15:37:03] [PASSED] ABGR8888 Valid buffer modifier
[15:37:03] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[15:37:03] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[15:37:03] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[15:37:03] [PASSED] NV12 Normal sizes
[15:37:03] [PASSED] NV12 Max sizes
[15:37:03] [PASSED] NV12 Invalid pitch
[15:37:03] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[15:37:03] [PASSED] NV12 different  modifier per-plane
[15:37:03] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[15:37:03] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[15:37:03] [PASSED] NV12 Modifier for inexistent plane
[15:37:03] [PASSED] NV12 Handle for inexistent plane
[15:37:03] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[15:37:03] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[15:37:03] [PASSED] YVU420 Normal sizes
[15:37:03] [PASSED] YVU420 Max sizes
[15:37:03] [PASSED] YVU420 Invalid pitch
[15:37:03] [PASSED] YVU420 Different pitches
[15:37:03] [PASSED] YVU420 Different buffer offsets/pitches
[15:37:03] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[15:37:03] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[15:37:03] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[15:37:03] [PASSED] YVU420 Valid modifier
[15:37:03] [PASSED] YVU420 Different modifiers per plane
[15:37:03] [PASSED] YVU420 Modifier for inexistent plane
[15:37:03] [PASSED] X0L2 Normal sizes
[15:37:03] [PASSED] X0L2 Max sizes
[15:37:03] [PASSED] X0L2 Invalid pitch
[15:37:03] [PASSED] X0L2 Pitch greater than minimum required
[15:37:03] [PASSED] X0L2 Handle for inexistent plane
[15:37:03] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[15:37:03] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[15:37:03] [PASSED] X0L2 Valid modifier
[15:37:03] [PASSED] X0L2 Modifier for inexistent plane
[15:37:03] =========== [PASSED] drm_test_framebuffer_create ===========
[15:37:03] ================= [PASSED] drm_framebuffer =================
[15:37:03] ==================== drm-test-managed  =====================
[15:37:03] [PASSED] drm_test_managed_run_action
[15:37:03] ================ [PASSED] drm-test-managed =================
[15:37:03] ========================= drm_mm  ==========================
[15:37:03] [PASSED] drm_test_mm_init
[15:37:03] [PASSED] drm_test_mm_debug
[15:37:13] [PASSED] drm_test_mm_reserve
[15:37:23] [PASSED] drm_test_mm_insert
[15:37:24] [PASSED] drm_test_mm_replace
[15:37:24] [PASSED] drm_test_mm_insert_range
[15:37:24] [PASSED] drm_test_mm_frag
[15:37:24] [PASSED] drm_test_mm_align
[15:37:24] [PASSED] drm_test_mm_align32
[15:37:24] [PASSED] drm_test_mm_align64
[15:37:24] [PASSED] drm_test_mm_evict
[15:37:24] [PASSED] drm_test_mm_evict_range
[15:37:24] [PASSED] drm_test_mm_topdown
[15:37:24] [PASSED] drm_test_mm_bottomup
[15:37:24] [PASSED] drm_test_mm_lowest
[15:37:24] [PASSED] drm_test_mm_highest
[15:37:25] [PASSED] drm_test_mm_color
[15:37:26] [PASSED] drm_test_mm_color_evict
[15:37:26] [PASSED] drm_test_mm_color_evict_range
[15:37:26] ===================== [PASSED] drm_mm ======================
[15:37:26] =================== drm_modes_analog_tv  ===================
[15:37:26] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[15:37:26] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[15:37:26] [PASSED] drm_test_modes_analog_tv_pal_576i
[15:37:26] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[15:37:26] =============== [PASSED] drm_modes_analog_tv ===============
[15:37:26] ==================== drm_plane_helper  =====================
[15:37:26] =============== drm_test_check_plane_state  ================
[15:37:26] [PASSED] clipping_simple
[15:37:26] [PASSED] clipping_rotate_reflect
[15:37:26] [PASSED] positioning_simple
[15:37:26] [PASSED] upscaling
[15:37:26] [PASSED] downscaling
[15:37:26] [PASSED] rounding1
[15:37:26] [PASSED] rounding2
[15:37:26] [PASSED] rounding3
[15:37:26] [PASSED] rounding4
[15:37:26] =========== [PASSED] drm_test_check_plane_state ============
[15:37:26] =========== drm_test_check_invalid_plane_state  ============
[15:37:26] [PASSED] positioning_invalid
[15:37:26] [PASSED] upscaling_invalid
[15:37:26] [PASSED] downscaling_invalid
[15:37:26] ======= [PASSED] drm_test_check_invalid_plane_state ========
[15:37:26] ================ [PASSED] drm_plane_helper =================
[15:37:26] ============ drm_connector_helper_tv_get_modes  ============
[15:37:26] ====== drm_test_connector_helper_tv_get_modes_check  =======
[15:37:26] [PASSED] None
[15:37:26] [PASSED] PAL
[15:37:26] [PASSED] NTSC
[15:37:26] [PASSED] Both, NTSC Default
[15:37:26] [PASSED] Both, PAL Default
[15:37:26] [PASSED] Both, NTSC Default, with PAL on command-line
[15:37:26] [PASSED] Both, PAL Default, with NTSC on command-line
[15:37:26] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[15:37:26] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[15:37:26] ======================== drm_rect  =========================
[15:37:26] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[15:37:26] [PASSED] drm_test_rect_clip_scaled_not_clipped
[15:37:26] [PASSED] drm_test_rect_clip_scaled_clipped
[15:37:26] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[15:37:26] ================= drm_test_rect_intersect  =================
[15:37:26] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[15:37:26] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[15:37:26] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[15:37:26] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[15:37:26] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[15:37:26] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[15:37:26] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[15:37:26] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[15:37:26] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[15:37:26] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[15:37:26] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[15:37:26] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[15:37:26] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[15:37:26] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[15:37:26] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[15:37:26] ============= [PASSED] drm_test_rect_intersect =============
[15:37:26] ================ drm_test_rect_calc_hscale  ================
[15:37:26] [PASSED] normal use
[15:37:26] [PASSED] out of max range
[15:37:26] [PASSED] out of min range
[15:37:26] [PASSED] zero dst
[15:37:26] [PASSED] negative src
[15:37:26] [PASSED] negative dst
[15:37:26] ============ [PASSED] drm_test_rect_calc_hscale ============
[15:37:26] ================ drm_test_rect_calc_vscale  ================
[15:37:26] [PASSED] normal use
[15:37:26] [PASSED] out of max range
[15:37:26] [PASSED] out of min range
[15:37:26] [PASSED] zero dst
[15:37:26] [PASSED] negative src
[15:37:26] [PASSED] negative dst
[15:37:26] ============ [PASSED] drm_test_rect_calc_vscale ============
[15:37:26] ================== drm_test_rect_rotate  ===================
[15:37:26] [PASSED] reflect-x
[15:37:26] [PASSED] reflect-y
[15:37:26] [PASSED] rotate-0
[15:37:26] [PASSED] rotate-90
[15:37:26] [PASSED] rotate-180
[15:37:26] [PASSED] rotate-270
[15:37:26] ============== [PASSED] drm_test_rect_rotate ===============
[15:37:26] ================ drm_test_rect_rotate_inv  =================
[15:37:26] [PASSED] reflect-x
[15:37:26] [PASSED] reflect-y
[15:37:26] [PASSED] rotate-0
[15:37:26] [PASSED] rotate-90
[15:37:26] [PASSED] rotate-180
[15:37:26] [PASSED] rotate-270
[15:37:26] ============ [PASSED] drm_test_rect_rotate_inv =============
stty: 'standard input': Inappropriate ioctl for device
[15:37:26] ==================== [PASSED] drm_rect =====================
[15:37:26] ======================== drm_exec  =========================
[15:37:26] [PASSED] sanitycheck
[15:37:26] [PASSED] test_lock
[15:37:26] [PASSED] test_lock_unlock
[15:37:26] [PASSED] test_duplicates
[15:37:26] [PASSED] test_prepare
[15:37:26] [PASSED] test_prepare_array
[15:37:26] [PASSED] test_multiple_loops
[15:37:26] ==================== [PASSED] drm_exec =====================
[15:37:26] ============================================================
[15:37:26] Testing complete. Ran 368 tests: passed: 368
[15:37:26] Elapsed time: 44.402s total, 1.694s configuring, 19.479s building, 23.219s running

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



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

* [Intel-xe] ✓ CI.Build: success for series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (19 preceding siblings ...)
  2023-11-03 15:37 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
@ 2023-11-03 15:44 ` Patchwork
  2023-11-03 15:45 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
                   ` (2 subsequent siblings)
  23 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2023-11-03 15:44 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
URL   : https://patchwork.freedesktop.org/series/125958/
State : success

== Summary ==

+ trap cleanup EXIT
+ cd /kernel
+ git clone https://gitlab.freedesktop.org/drm/xe/ci.git .ci
Cloning into '.ci'...
++ date +%s
+ echo -e '\e[0Ksection_start:1699025856:build_x86_64[collapsed=true]\r\e[0KBuild x86-64'
+ mkdir -p build64-default
^[[0Ksection_start:1699025856:build_x86_64[collapsed=true]
^[[0KBuild x86-64
+ cp .ci/kernel/kconfig build64-default/.config
+ make O=build64-default olddefconfig
make[1]: Entering directory '/kernel/build64-default'
  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/lexer.lex.o
  HOSTCC  scripts/kconfig/menu.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
make[1]: Leaving directory '/kernel/build64-default'
++ nproc
+ make O=build64-default -j48
make[1]: Entering directory '/kernel/build64-default'
  GEN     Makefile
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.h
  GEN     arch/x86/include/generated/asm/orc_hash.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctl.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_32.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctls.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_64.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_x32.h
  WRAP    arch/x86/include/generated/uapi/asm/ipcbuf.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  WRAP    arch/x86/include/generated/uapi/asm/param.h
  WRAP    arch/x86/include/generated/uapi/asm/poll.h
  SYSHDR  arch/x86/include/generated/asm/unistd_32_ia32.h
  SYSHDR  arch/x86/include/generated/asm/unistd_64_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_64.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/termios.h
  WRAP    arch/x86/include/generated/uapi/asm/termbits.h
  WRAP    arch/x86/include/generated/uapi/asm/types.h
  HOSTCC  arch/x86/tools/relocs_32.o
  HOSTCC  arch/x86/tools/relocs_64.o
  HOSTCC  arch/x86/tools/relocs_common.o
  WRAP    arch/x86/include/generated/asm/early_ioremap.h
  WRAP    arch/x86/include/generated/asm/mcs_spinlock.h
  WRAP    arch/x86/include/generated/asm/export.h
  WRAP    arch/x86/include/generated/asm/irq_regs.h
  WRAP    arch/x86/include/generated/asm/kmap_size.h
  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
  UPD     include/generated/uapi/linux/version.h
  UPD     include/config/kernel.release
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/unifdef
  UPD     include/generated/compile.h
  HOSTCC  scripts/sorttable
  HOSTCC  scripts/asn1_compiler
  UPD     include/generated/utsrelease.h
  DESCEND objtool
  HOSTCC  /kernel/build64-default/tools/objtool/fixdep.o
  HOSTLD  /kernel/build64-default/tools/objtool/fixdep-in.o
  LINK    /kernel/build64-default/tools/objtool/fixdep
  HOSTLD  arch/x86/tools/relocs
  INSTALL /kernel/build64-default/tools/objtool/libsubcmd/include/subcmd/exec-cmd.h
  INSTALL /kernel/build64-default/tools/objtool/libsubcmd/include/subcmd/help.h
  INSTALL /kernel/build64-default/tools/objtool/libsubcmd/include/subcmd/pager.h
  INSTALL /kernel/build64-default/tools/objtool/libsubcmd/include/subcmd/parse-options.h
  INSTALL /kernel/build64-default/tools/objtool/libsubcmd/include/subcmd/run-command.h
  CC      /kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o
  CC      /kernel/build64-default/tools/objtool/libsubcmd/help.o
  INSTALL libsubcmd_headers
  CC      /kernel/build64-default/tools/objtool/libsubcmd/pager.o
  CC      /kernel/build64-default/tools/objtool/libsubcmd/parse-options.o
  CC      /kernel/build64-default/tools/objtool/libsubcmd/run-command.o
  CC      /kernel/build64-default/tools/objtool/libsubcmd/sigchain.o
  CC      /kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  CC      scripts/mod/devicetable-offsets.s
  HDRINST usr/include/video/edid.h
  HDRINST usr/include/video/uvesafb.h
  HDRINST usr/include/video/sisfb.h
  HDRINST usr/include/drm/amdgpu_drm.h
  HDRINST usr/include/drm/qaic_accel.h
  HDRINST usr/include/drm/i915_drm.h
  HDRINST usr/include/drm/vgem_drm.h
  HDRINST usr/include/drm/virtgpu_drm.h
  HDRINST usr/include/drm/xe_drm.h
  HDRINST usr/include/drm/omap_drm.h
  HDRINST usr/include/drm/radeon_drm.h
  HDRINST usr/include/drm/tegra_drm.h
  HDRINST usr/include/drm/drm_mode.h
  HDRINST usr/include/drm/ivpu_accel.h
  HDRINST usr/include/drm/exynos_drm.h
  HDRINST usr/include/drm/drm_sarea.h
  HDRINST usr/include/drm/v3d_drm.h
  HDRINST usr/include/drm/qxl_drm.h
  HDRINST usr/include/drm/drm_fourcc.h
  HDRINST usr/include/drm/nouveau_drm.h
  HDRINST usr/include/drm/habanalabs_accel.h
  HDRINST usr/include/drm/vmwgfx_drm.h
  HDRINST usr/include/drm/msm_drm.h
  HDRINST usr/include/drm/etnaviv_drm.h
  HDRINST usr/include/drm/vc4_drm.h
  HDRINST usr/include/drm/panfrost_drm.h
  HDRINST usr/include/drm/lima_drm.h
  HDRINST usr/include/drm/drm.h
  HDRINST usr/include/drm/armada_drm.h
  UPD     scripts/mod/devicetable-offsets.h
  HDRINST usr/include/mtd/inftl-user.h
  HDRINST usr/include/mtd/nftl-user.h
  HDRINST usr/include/mtd/mtd-user.h
  HDRINST usr/include/mtd/ubi-user.h
  HDRINST usr/include/mtd/mtd-abi.h
  HDRINST usr/include/xen/gntdev.h
  HDRINST usr/include/xen/gntalloc.h
  HDRINST usr/include/xen/evtchn.h
  HDRINST usr/include/xen/privcmd.h
  HDRINST usr/include/asm-generic/auxvec.h
  HDRINST usr/include/asm-generic/bitsperlong.h
  HDRINST usr/include/asm-generic/ioctls.h
  HDRINST usr/include/asm-generic/posix_types.h
  HDRINST usr/include/asm-generic/mman.h
  HDRINST usr/include/asm-generic/shmbuf.h
  HDRINST usr/include/asm-generic/bpf_perf_event.h
  HDRINST usr/include/asm-generic/types.h
  HDRINST usr/include/asm-generic/poll.h
  HDRINST usr/include/asm-generic/msgbuf.h
  HDRINST usr/include/asm-generic/swab.h
  HDRINST usr/include/asm-generic/statfs.h
  HDRINST usr/include/asm-generic/unistd.h
  HDRINST usr/include/asm-generic/hugetlb_encode.h
  HDRINST usr/include/asm-generic/resource.h
  HDRINST usr/include/asm-generic/param.h
  HDRINST usr/include/asm-generic/termbits-common.h
  HDRINST usr/include/asm-generic/sockios.h
  HDRINST usr/include/asm-generic/kvm_para.h
  HDRINST usr/include/asm-generic/errno.h
  HDRINST usr/include/asm-generic/termios.h
  HDRINST usr/include/asm-generic/mman-common.h
  HDRINST usr/include/asm-generic/ioctl.h
  HDRINST usr/include/asm-generic/socket.h
  HDRINST usr/include/asm-generic/signal-defs.h
  HDRINST usr/include/asm-generic/termbits.h
  HDRINST usr/include/asm-generic/int-ll64.h
  HDRINST usr/include/asm-generic/signal.h
  HDRINST usr/include/asm-generic/siginfo.h
  HDRINST usr/include/asm-generic/stat.h
  HDRINST usr/include/asm-generic/int-l64.h
  HDRINST usr/include/asm-generic/errno-base.h
  HDRINST usr/include/asm-generic/fcntl.h
  HDRINST usr/include/asm-generic/setup.h
  HDRINST usr/include/asm-generic/ipcbuf.h
  MKELF   scripts/mod/elfconfig.h
  HDRINST usr/include/asm-generic/sembuf.h
  HDRINST usr/include/asm-generic/ucontext.h
  HDRINST usr/include/rdma/mlx5_user_ioctl_cmds.h
  HDRINST usr/include/rdma/irdma-abi.h
  HDRINST usr/include/rdma/mana-abi.h
  HDRINST usr/include/rdma/hfi/hfi1_user.h
  HDRINST usr/include/rdma/hfi/hfi1_ioctl.h
  HDRINST usr/include/rdma/rdma_user_rxe.h
  HDRINST usr/include/rdma/rdma_user_ioctl.h
  HDRINST usr/include/rdma/mlx5_user_ioctl_verbs.h
  HDRINST usr/include/rdma/bnxt_re-abi.h
  HDRINST usr/include/rdma/hns-abi.h
  HOSTCC  scripts/mod/modpost.o
  HOSTCC  scripts/mod/file2alias.o
  HDRINST usr/include/rdma/qedr-abi.h
  HDRINST usr/include/rdma/ib_user_ioctl_cmds.h
  HOSTCC  scripts/mod/sumversion.o
  HDRINST usr/include/rdma/vmw_pvrdma-abi.h
  HDRINST usr/include/rdma/ib_user_sa.h
  HDRINST usr/include/rdma/ib_user_ioctl_verbs.h
  HDRINST usr/include/rdma/rvt-abi.h
  HDRINST usr/include/rdma/mlx5-abi.h
  HDRINST usr/include/rdma/rdma_netlink.h
  HDRINST usr/include/rdma/erdma-abi.h
  HDRINST usr/include/rdma/rdma_user_ioctl_cmds.h
  HDRINST usr/include/rdma/rdma_user_cm.h
  HDRINST usr/include/rdma/ib_user_verbs.h
  HDRINST usr/include/rdma/efa-abi.h
  HDRINST usr/include/rdma/siw-abi.h
  HDRINST usr/include/rdma/mlx4-abi.h
  HDRINST usr/include/rdma/mthca-abi.h
  HDRINST usr/include/rdma/ib_user_mad.h
  HDRINST usr/include/rdma/ocrdma-abi.h
  HDRINST usr/include/rdma/cxgb4-abi.h
  HDRINST usr/include/misc/xilinx_sdfec.h
  HDRINST usr/include/misc/uacce/hisi_qm.h
  HDRINST usr/include/misc/uacce/uacce.h
  HDRINST usr/include/misc/cxl.h
  HDRINST usr/include/misc/ocxl.h
  HDRINST usr/include/misc/fastrpc.h
  HDRINST usr/include/misc/pvpanic.h
  HDRINST usr/include/linux/i8k.h
  HDRINST usr/include/linux/acct.h
  HDRINST usr/include/linux/atmmpc.h
  HDRINST usr/include/linux/fs.h
  HDRINST usr/include/linux/cifs/cifs_mount.h
  HDRINST usr/include/linux/cifs/cifs_netlink.h
  HDRINST usr/include/linux/if_packet.h
  HDRINST usr/include/linux/route.h
  HDRINST usr/include/linux/patchkey.h
  HDRINST usr/include/linux/tc_ematch/tc_em_cmp.h
  HDRINST usr/include/linux/tc_ematch/tc_em_ipt.h
  HDRINST usr/include/linux/tc_ematch/tc_em_meta.h
  HDRINST usr/include/linux/tc_ematch/tc_em_nbyte.h
  HDRINST usr/include/linux/tc_ematch/tc_em_text.h
  HDRINST usr/include/linux/virtio_pmem.h
  HDRINST usr/include/linux/vhost.h
  HDRINST usr/include/linux/cec-funcs.h
  HDRINST usr/include/linux/rkisp1-config.h
  HDRINST usr/include/linux/ppdev.h
  HDRINST usr/include/linux/isdn/capicmd.h
  HDRINST usr/include/linux/virtio_fs.h
  HDRINST usr/include/linux/netfilter_ipv6.h
  HDRINST usr/include/linux/lirc.h
  HDRINST usr/include/linux/mroute6.h
  HDRINST usr/include/linux/nl80211-vnd-intel.h
  HDRINST usr/include/linux/ivtvfb.h
  HDRINST usr/include/linux/auxvec.h
  HDRINST usr/include/linux/dm-log-userspace.h
  HDRINST usr/include/linux/dccp.h
  HDRINST usr/include/linux/virtio_scmi.h
  HDRINST usr/include/linux/atmarp.h
  HDRINST usr/include/linux/arcfb.h
  HDRINST usr/include/linux/nbd-netlink.h
  HDRINST usr/include/linux/sched/types.h
  HDRINST usr/include/linux/tcp.h
  HDRINST usr/include/linux/neighbour.h
  HDRINST usr/include/linux/dlm_device.h
  HDRINST usr/include/linux/wmi.h
  HDRINST usr/include/linux/btrfs_tree.h
  HDRINST usr/include/linux/virtio_crypto.h
  HDRINST usr/include/linux/vbox_err.h
  HDRINST usr/include/linux/edd.h
  HDRINST usr/include/linux/loop.h
  HDRINST usr/include/linux/nvme_ioctl.h
  HDRINST usr/include/linux/mmtimer.h
  HDRINST usr/include/linux/if_pppol2tp.h
  HDRINST usr/include/linux/mtio.h
  HDRINST usr/include/linux/if_arcnet.h
  HDRINST usr/include/linux/romfs_fs.h
  HDRINST usr/include/linux/posix_types.h
  HDRINST usr/include/linux/rtc.h
  HDRINST usr/include/linux/landlock.h
  HDRINST usr/include/linux/gpio.h
  HDRINST usr/include/linux/selinux_netlink.h
  HDRINST usr/include/linux/pps.h
  HDRINST usr/include/linux/ndctl.h
  HDRINST usr/include/linux/virtio_gpu.h
  HDRINST usr/include/linux/android/binderfs.h
  HDRINST usr/include/linux/android/binder.h
  HDRINST usr/include/linux/virtio_vsock.h
  HDRINST usr/include/linux/sound.h
  HDRINST usr/include/linux/vtpm_proxy.h
  HDRINST usr/include/linux/nfs_fs.h
  HDRINST usr/include/linux/elf-fdpic.h
  HDRINST usr/include/linux/adfs_fs.h
  HDRINST usr/include/linux/target_core_user.h
  HDRINST usr/include/linux/netlink_diag.h
  HDRINST usr/include/linux/const.h
  HDRINST usr/include/linux/firewire-cdev.h
  HDRINST usr/include/linux/vdpa.h
  HDRINST usr/include/linux/serial.h
  HDRINST usr/include/linux/if_infiniband.h
  HDRINST usr/include/linux/iio/types.h
  HDRINST usr/include/linux/iio/buffer.h
  HDRINST usr/include/linux/iio/events.h
  HDRINST usr/include/linux/baycom.h
  HDRINST usr/include/linux/major.h
  HDRINST usr/include/linux/atmppp.h
  HDRINST usr/include/linux/ipv6_route.h
  HDRINST usr/include/linux/spi/spidev.h
  HDRINST usr/include/linux/spi/spi.h
  HDRINST usr/include/linux/virtio_ring.h
  HDRINST usr/include/linux/hdlc/ioctl.h
  HDRINST usr/include/linux/remoteproc_cdev.h
  HDRINST usr/include/linux/hyperv.h
  HDRINST usr/include/linux/rpl_iptunnel.h
  HDRINST usr/include/linux/sync_file.h
  HDRINST usr/include/linux/igmp.h
  HDRINST usr/include/linux/v4l2-dv-timings.h
  HDRINST usr/include/linux/virtio_i2c.h
  HDRINST usr/include/linux/xfrm.h
  HDRINST usr/include/linux/capability.h
  HDRINST usr/include/linux/gtp.h
  HDRINST usr/include/linux/xdp_diag.h
  HDRINST usr/include/linux/pkt_cls.h
  HDRINST usr/include/linux/suspend_ioctls.h
  HDRINST usr/include/linux/vt.h
  HDRINST usr/include/linux/loadpin.h
  HDRINST usr/include/linux/dlm_plock.h
  HDRINST usr/include/linux/fb.h
  HDRINST usr/include/linux/max2175.h
  HDRINST usr/include/linux/sunrpc/debug.h
  HDRINST usr/include/linux/gsmmux.h
  HDRINST usr/include/linux/watchdog.h
  HDRINST usr/include/linux/vhost_types.h
  HDRINST usr/include/linux/vduse.h
  HDRINST usr/include/linux/ila.h
  HDRINST usr/include/linux/tdx-guest.h
  HDRINST usr/include/linux/close_range.h
  HDRINST usr/include/linux/ivtv.h
  HDRINST usr/include/linux/cryptouser.h
  HDRINST usr/include/linux/netfilter/xt_string.h
  HDRINST usr/include/linux/netfilter/nfnetlink_compat.h
  HDRINST usr/include/linux/netfilter/nf_nat.h
  HDRINST usr/include/linux/netfilter/xt_recent.h
  HDRINST usr/include/linux/netfilter/xt_addrtype.h
  HDRINST usr/include/linux/netfilter/nf_conntrack_tcp.h
  HDRINST usr/include/linux/netfilter/xt_MARK.h
  HDRINST usr/include/linux/netfilter/xt_SYNPROXY.h
  HDRINST usr/include/linux/netfilter/xt_multiport.h
  HDRINST usr/include/linux/netfilter/nfnetlink.h
  HDRINST usr/include/linux/netfilter/xt_cgroup.h
  HDRINST usr/include/linux/netfilter/nf_synproxy.h
  HDRINST usr/include/linux/netfilter/xt_TCPOPTSTRIP.h
  HDRINST usr/include/linux/netfilter/nfnetlink_log.h
  HDRINST usr/include/linux/netfilter/xt_TPROXY.h
  HDRINST usr/include/linux/netfilter/xt_u32.h
  HDRINST usr/include/linux/netfilter/nfnetlink_osf.h
  HDRINST usr/include/linux/netfilter/xt_ecn.h
  HDRINST usr/include/linux/netfilter/xt_esp.h
  HDRINST usr/include/linux/netfilter/nfnetlink_hook.h
  HDRINST usr/include/linux/netfilter/xt_mac.h
  HDRINST usr/include/linux/netfilter/xt_comment.h
  HDRINST usr/include/linux/netfilter/xt_NFQUEUE.h
  HDRINST usr/include/linux/netfilter/xt_osf.h
  HDRINST usr/include/linux/netfilter/xt_hashlimit.h
  HDRINST usr/include/linux/netfilter/nf_conntrack_sctp.h
  HDRINST usr/include/linux/netfilter/xt_socket.h
  HDRINST usr/include/linux/netfilter/xt_connmark.h
  HDRINST usr/include/linux/netfilter/xt_sctp.h
  HDRINST usr/include/linux/netfilter/xt_tcpudp.h
  HDRINST usr/include/linux/netfilter/xt_DSCP.h
  HDRINST usr/include/linux/netfilter/xt_time.h
  HDRINST usr/include/linux/netfilter/xt_IDLETIMER.h
  HDRINST usr/include/linux/netfilter/xt_policy.h
  HDRINST usr/include/linux/netfilter/xt_rpfilter.h
  HDRINST usr/include/linux/netfilter/xt_nfacct.h
  HDRINST usr/include/linux/netfilter/xt_SECMARK.h
  HDRINST usr/include/linux/netfilter/xt_length.h
  HDRINST usr/include/linux/netfilter/nfnetlink_cthelper.h
  HDRINST usr/include/linux/netfilter/xt_quota.h
  HDRINST usr/include/linux/netfilter/xt_CLASSIFY.h
  HDRINST usr/include/linux/netfilter/xt_ipcomp.h
  HDRINST usr/include/linux/netfilter/xt_iprange.h
  HDRINST usr/include/linux/netfilter/xt_bpf.h
  HDRINST usr/include/linux/netfilter/xt_LOG.h
  HDRINST usr/include/linux/netfilter/xt_rateest.h
  HDRINST usr/include/linux/netfilter/xt_CONNSECMARK.h
  HDRINST usr/include/linux/netfilter/xt_HMARK.h
  HDRINST usr/include/linux/netfilter/xt_CONNMARK.h
  HDRINST usr/include/linux/netfilter/xt_pkttype.h
  HDRINST usr/include/linux/netfilter/xt_ipvs.h
  HDRINST usr/include/linux/netfilter/xt_devgroup.h
  HDRINST usr/include/linux/netfilter/xt_AUDIT.h
  HDRINST usr/include/linux/netfilter/xt_realm.h
  HDRINST usr/include/linux/netfilter/nf_conntrack_common.h
  HDRINST usr/include/linux/netfilter/xt_set.h
  HDRINST usr/include/linux/netfilter/xt_LED.h
  HDRINST usr/include/linux/netfilter/xt_connlabel.h
  HDRINST usr/include/linux/netfilter/xt_owner.h
  HDRINST usr/include/linux/netfilter/xt_dccp.h
  HDRINST usr/include/linux/netfilter/xt_limit.h
  HDRINST usr/include/linux/netfilter/xt_conntrack.h
  HDRINST usr/include/linux/netfilter/xt_TEE.h
  HDRINST usr/include/linux/netfilter/xt_RATEEST.h
  HDRINST usr/include/linux/netfilter/xt_connlimit.h
  HDRINST usr/include/linux/netfilter/ipset/ip_set.h
  HDRINST usr/include/linux/netfilter/ipset/ip_set_list.h
  HDRINST usr/include/linux/netfilter/ipset/ip_set_hash.h
  HDRINST usr/include/linux/netfilter/ipset/ip_set_bitmap.h
  HDRINST usr/include/linux/netfilter/x_tables.h
  HDRINST usr/include/linux/netfilter/xt_dscp.h
  HDRINST usr/include/linux/netfilter/nf_conntrack_ftp.h
  HDRINST usr/include/linux/netfilter/xt_cluster.h
  HDRINST usr/include/linux/netfilter/nf_conntrack_tuple_common.h
  HDRINST usr/include/linux/netfilter/nf_log.h
  HDRINST usr/include/linux/netfilter/xt_tcpmss.h
  HDRINST usr/include/linux/netfilter/xt_l2tp.h
  HDRINST usr/include/linux/netfilter/xt_NFLOG.h
  HDRINST usr/include/linux/netfilter/xt_helper.h
  HDRINST usr/include/linux/netfilter/xt_statistic.h
  HDRINST usr/include/linux/netfilter/nfnetlink_queue.h
  HDRINST usr/include/linux/netfilter/xt_CT.h
  HDRINST usr/include/linux/netfilter/nfnetlink_cttimeout.h
  HDRINST usr/include/linux/netfilter/xt_CHECKSUM.h
  HDRINST usr/include/linux/netfilter/xt_connbytes.h
  HDRINST usr/include/linux/netfilter/xt_state.h
  HDRINST usr/include/linux/netfilter/nf_tables.h
  HDRINST usr/include/linux/netfilter/xt_mark.h
  HDRINST usr/include/linux/netfilter/xt_cpu.h
  HDRINST usr/include/linux/netfilter/nf_tables_compat.h
  HDRINST usr/include/linux/netfilter/xt_physdev.h
  HDRINST usr/include/linux/netfilter/nfnetlink_conntrack.h
  HDRINST usr/include/linux/netfilter/nfnetlink_acct.h
  HDRINST usr/include/linux/netfilter/xt_TCPMSS.h
  HDRINST usr/include/linux/tty_flags.h
  HDRINST usr/include/linux/if_phonet.h
  HDRINST usr/include/linux/elf-em.h
  HDRINST usr/include/linux/vm_sockets.h
  HDRINST usr/include/linux/dlmconstants.h
  HDRINST usr/include/linux/bsg.h
  HDRINST usr/include/linux/matroxfb.h
  HDRINST usr/include/linux/sysctl.h
  HDRINST usr/include/linux/unix_diag.h
  HDRINST usr/include/linux/pcitest.h
  HDRINST usr/include/linux/mman.h
  HDRINST usr/include/linux/if_plip.h
  HDRINST usr/include/linux/virtio_balloon.h
  HDRINST usr/include/linux/pidfd.h
  HDRINST usr/include/linux/f2fs.h
  HDRINST usr/include/linux/x25.h
  HDRINST usr/include/linux/if_cablemodem.h
  HDRINST usr/include/linux/utsname.h
  HDRINST usr/include/linux/counter.h
  HDRINST usr/include/linux/atm_tcp.h
  HDRINST usr/include/linux/atalk.h
  HDRINST usr/include/linux/virtio_rng.h
  HDRINST usr/include/linux/vboxguest.h
  HDRINST usr/include/linux/bpf_perf_event.h
  HDRINST usr/include/linux/ipmi_ssif_bmc.h
  HDRINST usr/include/linux/nfs_mount.h
  HDRINST usr/include/linux/sonet.h
  HDRINST usr/include/linux/netfilter.h
  HDRINST usr/include/linux/keyctl.h
  HDRINST usr/include/linux/nl80211.h
  HDRINST usr/include/linux/misc/bcm_vk.h
  HDRINST usr/include/linux/audit.h
  HDRINST usr/include/linux/tipc_config.h
  HDRINST usr/include/linux/tipc_sockets_diag.h
  HDRINST usr/include/linux/futex.h
  HDRINST usr/include/linux/sev-guest.h
  HDRINST usr/include/linux/ublk_cmd.h
  HDRINST usr/include/linux/types.h
  HDRINST usr/include/linux/virtio_input.h
  HDRINST usr/include/linux/if_slip.h
  HDRINST usr/include/linux/personality.h
  HDRINST usr/include/linux/openat2.h
  HDRINST usr/include/linux/poll.h
  HDRINST usr/include/linux/posix_acl.h
  HDRINST usr/include/linux/smc_diag.h
  HDRINST usr/include/linux/snmp.h
  HDRINST usr/include/linux/errqueue.h
  HDRINST usr/include/linux/if_tunnel.h
  HDRINST usr/include/linux/fanotify.h
  HDRINST usr/include/linux/kernel.h
  HDRINST usr/include/linux/rtnetlink.h
  HDRINST usr/include/linux/rpl.h
  HDRINST usr/include/linux/memfd.h
  HDRINST usr/include/linux/serial_core.h
  HDRINST usr/include/linux/dns_resolver.h
  HDRINST usr/include/linux/pr.h
  HDRINST usr/include/linux/atm_eni.h
  HDRINST usr/include/linux/lp.h
  HDRINST usr/include/linux/virtio_mem.h
  HDRINST usr/include/linux/ultrasound.h
  HDRINST usr/include/linux/sctp.h
  HDRINST usr/include/linux/uio.h
  HDRINST usr/include/linux/tcp_metrics.h
  HDRINST usr/include/linux/wwan.h
  HDRINST usr/include/linux/atmbr2684.h
  HDRINST usr/include/linux/in_route.h
  HDRINST usr/include/linux/qemu_fw_cfg.h
  HDRINST usr/include/linux/if_macsec.h
  HDRINST usr/include/linux/usb/charger.h
  HDRINST usr/include/linux/usb/g_uvc.h
  HDRINST usr/include/linux/usb/gadgetfs.h
  HDRINST usr/include/linux/usb/raw_gadget.h
  HDRINST usr/include/linux/usb/cdc-wdm.h
  HDRINST usr/include/linux/usb/g_printer.h
  HDRINST usr/include/linux/usb/midi.h
  HDRINST usr/include/linux/usb/tmc.h
  HDRINST usr/include/linux/usb/video.h
  HDRINST usr/include/linux/usb/functionfs.h
  HDRINST usr/include/linux/usb/audio.h
  HDRINST usr/include/linux/usb/ch11.h
  HDRINST usr/include/linux/usb/ch9.h
  HDRINST usr/include/linux/usb/cdc.h
  HDRINST usr/include/linux/jffs2.h
  HDRINST usr/include/linux/ax25.h
  HDRINST usr/include/linux/auto_fs.h
  HDRINST usr/include/linux/tiocl.h
  HDRINST usr/include/linux/scc.h
  HDRINST usr/include/linux/psci.h
  HDRINST usr/include/linux/swab.h
  HDRINST usr/include/linux/cec.h
  HDRINST usr/include/linux/kfd_ioctl.h
  HDRINST usr/include/linux/smc.h
  HDRINST usr/include/linux/qrtr.h
  HDRINST usr/include/linux/screen_info.h
  HDRINST usr/include/linux/nfsacl.h
  HDRINST usr/include/linux/seg6_hmac.h
  HDRINST usr/include/linux/gameport.h
  HDRINST usr/include/linux/wireless.h
  HDRINST usr/include/linux/fdreg.h
  HDRINST usr/include/linux/cciss_defs.h
  HDRINST usr/include/linux/serial_reg.h
  HDRINST usr/include/linux/perf_event.h
  HDRINST usr/include/linux/in6.h
  HDRINST usr/include/linux/hid.h
  HDRINST usr/include/linux/netlink.h
  HDRINST usr/include/linux/fuse.h
  HDRINST usr/include/linux/magic.h
  HDRINST usr/include/linux/ioam6_iptunnel.h
  HDRINST usr/include/linux/stm.h
  HDRINST usr/include/linux/vsockmon.h
  HDRINST usr/include/linux/seg6.h
  HDRINST usr/include/linux/idxd.h
  HDRINST usr/include/linux/nitro_enclaves.h
  HDRINST usr/include/linux/ptrace.h
  HDRINST usr/include/linux/ioam6_genl.h
  HDRINST usr/include/linux/qnx4_fs.h
  HDRINST usr/include/linux/fsl_mc.h
  HDRINST usr/include/linux/net_tstamp.h
  HDRINST usr/include/linux/msg.h
  HDRINST usr/include/linux/netfilter_ipv4/ipt_TTL.h
  HDRINST usr/include/linux/netfilter_ipv4/ipt_ttl.h
  HDRINST usr/include/linux/netfilter_ipv4/ipt_ah.h
  HDRINST usr/include/linux/netfilter_ipv4/ipt_ECN.h
  HDRINST usr/include/linux/netfilter_ipv4/ip_tables.h
  HDRINST usr/include/linux/netfilter_ipv4/ipt_ecn.h
  HDRINST usr/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
  HDRINST usr/include/linux/netfilter_ipv4/ipt_REJECT.h
  HDRINST usr/include/linux/netfilter_ipv4/ipt_LOG.h
  HDRINST usr/include/linux/sem.h
  HDRINST usr/include/linux/net_namespace.h
  HDRINST usr/include/linux/radeonfb.h
  HDRINST usr/include/linux/tee.h
  HDRINST usr/include/linux/udp.h
  HDRINST usr/include/linux/virtio_bt.h
  HDRINST usr/include/linux/v4l2-subdev.h
  HDRINST usr/include/linux/posix_acl_xattr.h
  HDRINST usr/include/linux/v4l2-mediabus.h
  HDRINST usr/include/linux/atmapi.h
  HDRINST usr/include/linux/raid/md_p.h
  HDRINST usr/include/linux/raid/md_u.h
  HDRINST usr/include/linux/zorro_ids.h
  LD      /kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o
  HDRINST usr/include/linux/nbd.h
  HDRINST usr/include/linux/isst_if.h
  HDRINST usr/include/linux/rxrpc.h
  HDRINST usr/include/linux/unistd.h
  HDRINST usr/include/linux/if_arp.h
  HDRINST usr/include/linux/atm_zatm.h
  HDRINST usr/include/linux/io_uring.h
  HDRINST usr/include/linux/if_fddi.h
  HDRINST usr/include/linux/bpqether.h
  HDRINST usr/include/linux/sysinfo.h
  HDRINST usr/include/linux/auto_dev-ioctl.h
  HDRINST usr/include/linux/nfs4_mount.h
  HDRINST usr/include/linux/keyboard.h
  HDRINST usr/include/linux/virtio_mmio.h
  HDRINST usr/include/linux/input.h
  HDRINST usr/include/linux/qnxtypes.h
  HDRINST usr/include/linux/mdio.h
  HDRINST usr/include/linux/lwtunnel.h
  HDRINST usr/include/linux/gfs2_ondisk.h
  HDRINST usr/include/linux/eventfd.h
  HDRINST usr/include/linux/nfs4.h
  HDRINST usr/include/linux/ptp_clock.h
  HDRINST usr/include/linux/nubus.h
  HDRINST usr/include/linux/if_bonding.h
  HDRINST usr/include/linux/kcov.h
  HDRINST usr/include/linux/fadvise.h
  HDRINST usr/include/linux/taskstats.h
  HDRINST usr/include/linux/veth.h
  HDRINST usr/include/linux/atm.h
  HDRINST usr/include/linux/ipmi.h
  HDRINST usr/include/linux/kdev_t.h
  AR      /kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a
  HDRINST usr/include/linux/mount.h
  HDRINST usr/include/linux/shm.h
  HDRINST usr/include/linux/resource.h
  HDRINST usr/include/linux/prctl.h
  HDRINST usr/include/linux/watch_queue.h
  HDRINST usr/include/linux/sched.h
  HDRINST usr/include/linux/phonet.h
  HDRINST usr/include/linux/random.h
  HDRINST usr/include/linux/tty.h
  HDRINST usr/include/linux/apm_bios.h
  HDRINST usr/include/linux/fd.h
  HDRINST usr/include/linux/um_timetravel.h
  HDRINST usr/include/linux/tls.h
  HDRINST usr/include/linux/rpmsg_types.h
  HDRINST usr/include/linux/pfrut.h
  HDRINST usr/include/linux/mei.h
  HDRINST usr/include/linux/fsi.h
  HDRINST usr/include/linux/rds.h
  HDRINST usr/include/linux/if_x25.h
  HDRINST usr/include/linux/param.h
  HDRINST usr/include/linux/netdevice.h
  HDRINST usr/include/linux/binfmts.h
  HDRINST usr/include/linux/if_pppox.h
  HDRINST usr/include/linux/sockios.h
  HDRINST usr/include/linux/kcm.h
  HDRINST usr/include/linux/virtio_9p.h
  HDRINST usr/include/linux/genwqe/genwqe_card.h
  HDRINST usr/include/linux/if_tun.h
  HDRINST usr/include/linux/ext4.h
  HDRINST usr/include/linux/if_ether.h
  HDRINST usr/include/linux/kernel-page-flags.h
  HDRINST usr/include/linux/kvm_para.h
  HDRINST usr/include/linux/cdrom.h
  HDRINST usr/include/linux/un.h
  HDRINST usr/include/linux/module.h
  HDRINST usr/include/linux/mqueue.h
  HDRINST usr/include/linux/a.out.h
  HDRINST usr/include/linux/input-event-codes.h
  HDRINST usr/include/linux/coda.h
  HDRINST usr/include/linux/rio_mport_cdev.h
  HDRINST usr/include/linux/ipsec.h
  HDRINST usr/include/linux/blkpg.h
  HDRINST usr/include/linux/blkzoned.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_arpreply.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_redirect.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_nflog.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_802_3.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_nat.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_mark_m.h
  HDRINST usr/include/linux/netfilter_bridge/ebtables.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_vlan.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_limit.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_log.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_stp.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_pkttype.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_ip.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_ip6.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_arp.h
  CC      /kernel/build64-default/tools/objtool/weak.o
  HDRINST usr/include/linux/netfilter_bridge/ebt_mark_t.h
  HDRINST usr/include/linux/netfilter_bridge/ebt_among.h
  CC      /kernel/build64-default/tools/objtool/check.o
  HDRINST usr/include/linux/reiserfs_fs.h
  HDRINST usr/include/linux/cciss_ioctl.h
  MKDIR   /kernel/build64-default/tools/objtool/arch/x86/
  CC      /kernel/build64-default/tools/objtool/special.o
  HDRINST usr/include/linux/fsmap.h
  HDRINST usr/include/linux/smiapp.h
  CC      /kernel/build64-default/tools/objtool/builtin-check.o
  HDRINST usr/include/linux/switchtec_ioctl.h
  HDRINST usr/include/linux/atmdev.h
  CC      /kernel/build64-default/tools/objtool/elf.o
  CC      /kernel/build64-default/tools/objtool/objtool.o
  MKDIR   /kernel/build64-default/tools/objtool/arch/x86/lib/
  CC      /kernel/build64-default/tools/objtool/arch/x86/special.o
  HDRINST usr/include/linux/hpet.h
  CC      /kernel/build64-default/tools/objtool/orc_gen.o
  HDRINST usr/include/linux/virtio_config.h
  CC      /kernel/build64-default/tools/objtool/orc_dump.o
  HDRINST usr/include/linux/string.h
  CC      /kernel/build64-default/tools/objtool/libstring.o
  HDRINST usr/include/linux/kfd_sysfs.h
  CC      /kernel/build64-default/tools/objtool/libctype.o
  HDRINST usr/include/linux/inet_diag.h
  CC      /kernel/build64-default/tools/objtool/str_error_r.o
  HDRINST usr/include/linux/netdev.h
  CC      /kernel/build64-default/tools/objtool/librbtree.o
  GEN     /kernel/build64-default/tools/objtool/arch/x86/lib/inat-tables.c
  HDRINST usr/include/linux/xattr.h
  HDRINST usr/include/linux/iommufd.h
  HDRINST usr/include/linux/user_events.h
  HDRINST usr/include/linux/errno.h
  HDRINST usr/include/linux/icmp.h
  HDRINST usr/include/linux/i2o-dev.h
  HDRINST usr/include/linux/pg.h
  HDRINST usr/include/linux/if_bridge.h
  HDRINST usr/include/linux/thermal.h
  HDRINST usr/include/linux/uinput.h
  HDRINST usr/include/linux/handshake.h
  HDRINST usr/include/linux/dqblk_xfs.h
  HDRINST usr/include/linux/v4l2-common.h
  HDRINST usr/include/linux/nvram.h
  HDRINST usr/include/linux/if_vlan.h
  HDRINST usr/include/linux/uhid.h
  HDRINST usr/include/linux/omap3isp.h
  HDRINST usr/include/linux/rose.h
  HDRINST usr/include/linux/phantom.h
  HDRINST usr/include/linux/ipmi_msgdefs.h
  HDRINST usr/include/linux/bcm933xx_hcs.h
  HDRINST usr/include/linux/bpf.h
  HDRINST usr/include/linux/mempolicy.h
  HDRINST usr/include/linux/efs_fs_sb.h
  HDRINST usr/include/linux/nexthop.h
  HDRINST usr/include/linux/net_dropmon.h
  HDRINST usr/include/linux/surface_aggregator/cdev.h
  HDRINST usr/include/linux/surface_aggregator/dtx.h
  HDRINST usr/include/linux/net.h
  HDRINST usr/include/linux/mii.h
  HDRINST usr/include/linux/virtio_pcidev.h
  HDRINST usr/include/linux/termios.h
  HDRINST usr/include/linux/cgroupstats.h
  HDRINST usr/include/linux/mpls.h
  HDRINST usr/include/linux/iommu.h
  HDRINST usr/include/linux/toshiba.h
  HDRINST usr/include/linux/virtio_scsi.h
  HDRINST usr/include/linux/zorro.h
  HDRINST usr/include/linux/chio.h
  HDRINST usr/include/linux/pkt_sched.h
  HDRINST usr/include/linux/cramfs_fs.h
  HDRINST usr/include/linux/nfs3.h
  HDRINST usr/include/linux/vfio_ccw.h
  HDRINST usr/include/linux/atm_nicstar.h
  HDRINST usr/include/linux/ncsi.h
  HDRINST usr/include/linux/virtio_net.h
  HDRINST usr/include/linux/ioctl.h
  HDRINST usr/include/linux/stddef.h
  HDRINST usr/include/linux/limits.h
  HDRINST usr/include/linux/ipmi_bmc.h
  HDRINST usr/include/linux/netfilter_arp.h
  HDRINST usr/include/linux/if_addr.h
  HDRINST usr/include/linux/rpmsg.h
  HDRINST usr/include/linux/media-bus-format.h
  HDRINST usr/include/linux/kernelcapi.h
  HDRINST usr/include/linux/ppp_defs.h
  HDRINST usr/include/linux/ethtool.h
  HDRINST usr/include/linux/aspeed-video.h
  HDRINST usr/include/linux/hdlc.h
  HDRINST usr/include/linux/fscrypt.h
  HDRINST usr/include/linux/batadv_packet.h
  HDRINST usr/include/linux/uuid.h
  HDRINST usr/include/linux/capi.h
  HDRINST usr/include/linux/mptcp.h
  HDRINST usr/include/linux/hidraw.h
  HDRINST usr/include/linux/virtio_console.h
  HDRINST usr/include/linux/irqnr.h
  HDRINST usr/include/linux/coresight-stm.h
  HDRINST usr/include/linux/cxl_mem.h
  HDRINST usr/include/linux/iso_fs.h
  HDRINST usr/include/linux/virtio_blk.h
  HDRINST usr/include/linux/udf_fs_i.h
  HDRINST usr/include/linux/coff.h
  HDRINST usr/include/linux/dma-buf.h
  CC      /kernel/build64-default/tools/objtool/arch/x86/decode.o
  HDRINST usr/include/linux/ife.h
  HDRINST usr/include/linux/agpgart.h
  HDRINST usr/include/linux/socket.h
  HDRINST usr/include/linux/nilfs2_ondisk.h
  HDRINST usr/include/linux/connector.h
  HDRINST usr/include/linux/auto_fs4.h
  HDRINST usr/include/linux/bt-bmc.h
  HDRINST usr/include/linux/map_to_7segment.h
  HDRINST usr/include/linux/tc_act/tc_skbedit.h
  HDRINST usr/include/linux/tc_act/tc_ctinfo.h
  HDRINST usr/include/linux/tc_act/tc_defact.h
  HDRINST usr/include/linux/tc_act/tc_gact.h
  HDRINST usr/include/linux/tc_act/tc_vlan.h
  HDRINST usr/include/linux/tc_act/tc_skbmod.h
  HDRINST usr/include/linux/tc_act/tc_sample.h
  HDRINST usr/include/linux/tc_act/tc_tunnel_key.h
  HDRINST usr/include/linux/tc_act/tc_gate.h
  HDRINST usr/include/linux/tc_act/tc_mirred.h
  HDRINST usr/include/linux/tc_act/tc_nat.h
  HDRINST usr/include/linux/tc_act/tc_csum.h
  HDRINST usr/include/linux/tc_act/tc_connmark.h
  HDRINST usr/include/linux/tc_act/tc_ife.h
  HDRINST usr/include/linux/tc_act/tc_mpls.h
  HDRINST usr/include/linux/tc_act/tc_ct.h
  HDRINST usr/include/linux/tc_act/tc_pedit.h
  HDRINST usr/include/linux/tc_act/tc_bpf.h
  HDRINST usr/include/linux/tc_act/tc_ipt.h
  HDRINST usr/include/linux/netrom.h
  HDRINST usr/include/linux/joystick.h
  HDRINST usr/include/linux/falloc.h
  HDRINST usr/include/linux/cycx_cfm.h
  HDRINST usr/include/linux/omapfb.h
  HDRINST usr/include/linux/msdos_fs.h
  HDRINST usr/include/linux/virtio_types.h
  HDRINST usr/include/linux/mroute.h
  HDRINST usr/include/linux/psample.h
  HDRINST usr/include/linux/ipv6.h
  HDRINST usr/include/linux/dw100.h
  HDRINST usr/include/linux/psp-sev.h
  HDRINST usr/include/linux/vfio.h
  HDRINST usr/include/linux/if_ppp.h
  HDRINST usr/include/linux/byteorder/big_endian.h
  HDRINST usr/include/linux/byteorder/little_endian.h
  HDRINST usr/include/linux/comedi.h
  HDRINST usr/include/linux/scif_ioctl.h
  HDRINST usr/include/linux/timerfd.h
  HDRINST usr/include/linux/time_types.h
  HDRINST usr/include/linux/firewire-constants.h
  HDRINST usr/include/linux/virtio_snd.h
  HDRINST usr/include/linux/ppp-ioctl.h
  HDRINST usr/include/linux/fib_rules.h
  HDRINST usr/include/linux/gen_stats.h
  HDRINST usr/include/linux/virtio_iommu.h
  HDRINST usr/include/linux/genetlink.h
  HDRINST usr/include/linux/uvcvideo.h
  HDRINST usr/include/linux/pfkeyv2.h
  HDRINST usr/include/linux/soundcard.h
  HDRINST usr/include/linux/times.h
  HDRINST usr/include/linux/nfc.h
  HDRINST usr/include/linux/affs_hardblocks.h
  HDRINST usr/include/linux/nilfs2_api.h
  HDRINST usr/include/linux/rseq.h
  HDRINST usr/include/linux/caif/caif_socket.h
  HDRINST usr/include/linux/caif/if_caif.h
  HDRINST usr/include/linux/i2c-dev.h
  HDRINST usr/include/linux/cuda.h
  HDRINST usr/include/linux/mei_uuid.h
  HDRINST usr/include/linux/cn_proc.h
  HDRINST usr/include/linux/parport.h
  HDRINST usr/include/linux/v4l2-controls.h
  HDRINST usr/include/linux/hsi/cs-protocol.h
  HDRINST usr/include/linux/hsi/hsi_char.h
  HDRINST usr/include/linux/seg6_genl.h
  HDRINST usr/include/linux/am437x-vpfe.h
  HDRINST usr/include/linux/amt.h
  HDRINST usr/include/linux/netconf.h
  HDRINST usr/include/linux/erspan.h
  HDRINST usr/include/linux/nsfs.h
  HDRINST usr/include/linux/xilinx-v4l2-controls.h
  HDRINST usr/include/linux/aspeed-p2a-ctrl.h
  HDRINST usr/include/linux/vfio_zdev.h
  HDRINST usr/include/linux/serio.h
  HDRINST usr/include/linux/acrn.h
  HDRINST usr/include/linux/nfs2.h
  HDRINST usr/include/linux/virtio_pci.h
  HDRINST usr/include/linux/ipc.h
  HDRINST usr/include/linux/ethtool_netlink.h
  HDRINST usr/include/linux/kd.h
  HDRINST usr/include/linux/elf.h
  HDRINST usr/include/linux/videodev2.h
  HDRINST usr/include/linux/if_alg.h
  HDRINST usr/include/linux/sonypi.h
  HDRINST usr/include/linux/fsverity.h
  HDRINST usr/include/linux/if.h
  HDRINST usr/include/linux/btrfs.h
  HDRINST usr/include/linux/vm_sockets_diag.h
  HDRINST usr/include/linux/netfilter_bridge.h
  HDRINST usr/include/linux/packet_diag.h
  HDRINST usr/include/linux/netfilter_ipv4.h
  HDRINST usr/include/linux/kvm.h
  HDRINST usr/include/linux/pci.h
  HDRINST usr/include/linux/if_addrlabel.h
  HDRINST usr/include/linux/hdlcdrv.h
  HDRINST usr/include/linux/cfm_bridge.h
  HDRINST usr/include/linux/fiemap.h
  HDRINST usr/include/linux/dm-ioctl.h
  HDRINST usr/include/linux/aspeed-lpc-ctrl.h
  HDRINST usr/include/linux/atmioc.h
  HDRINST usr/include/linux/dlm.h
  HDRINST usr/include/linux/pci_regs.h
  HDRINST usr/include/linux/cachefiles.h
  HDRINST usr/include/linux/membarrier.h
  HDRINST usr/include/linux/nfs_idmap.h
  HDRINST usr/include/linux/ip.h
  HDRINST usr/include/linux/atm_he.h
  HDRINST usr/include/linux/nfsd/export.h
  HDRINST usr/include/linux/nfsd/stats.h
  HDRINST usr/include/linux/nfsd/debug.h
  HDRINST usr/include/linux/nfsd/cld.h
  HDRINST usr/include/linux/ip_vs.h
  HDRINST usr/include/linux/vmcore.h
  HDRINST usr/include/linux/vbox_vmmdev_types.h
  HDRINST usr/include/linux/dvb/osd.h
  HDRINST usr/include/linux/dvb/dmx.h
  HDRINST usr/include/linux/dvb/net.h
  HDRINST usr/include/linux/dvb/frontend.h
  HDRINST usr/include/linux/dvb/ca.h
  HDRINST usr/include/linux/dvb/version.h
  HDRINST usr/include/linux/dvb/video.h
  HDRINST usr/include/linux/dvb/audio.h
  HDRINST usr/include/linux/nfs.h
  HDRINST usr/include/linux/if_link.h
  HDRINST usr/include/linux/wait.h
  HDRINST usr/include/linux/icmpv6.h
  HDRINST usr/include/linux/media.h
  HDRINST usr/include/linux/seg6_local.h
  HDRINST usr/include/linux/tps6594_pfsm.h
  HDRINST usr/include/linux/openvswitch.h
  HDRINST usr/include/linux/atmsap.h
  HDRINST usr/include/linux/bpfilter.h
  HDRINST usr/include/linux/fpga-dfl.h
  HDRINST usr/include/linux/userio.h
  HDRINST usr/include/linux/signal.h
  HDRINST usr/include/linux/map_to_14segment.h
  HDRINST usr/include/linux/hdreg.h
  HDRINST usr/include/linux/utime.h
  HDRINST usr/include/linux/usbdevice_fs.h
  HDRINST usr/include/linux/timex.h
  HDRINST usr/include/linux/if_fc.h
  HDRINST usr/include/linux/reiserfs_xattr.h
  HDRINST usr/include/linux/hw_breakpoint.h
  HDRINST usr/include/linux/quota.h
  HDRINST usr/include/linux/ioprio.h
  HDRINST usr/include/linux/eventpoll.h
  HDRINST usr/include/linux/can.h
  HDRINST usr/include/linux/atmclip.h
  HDRINST usr/include/linux/if_team.h
  HDRINST usr/include/linux/usbip.h
  HDRINST usr/include/linux/stat.h
  HDRINST usr/include/linux/fou.h
  HDRINST usr/include/linux/hash_info.h
  HDRINST usr/include/linux/ppp-comp.h
  HDRINST usr/include/linux/ip6_tunnel.h
  HDRINST usr/include/linux/tipc_netlink.h
  HDRINST usr/include/linux/in.h
  HDRINST usr/include/linux/wireguard.h
  HDRINST usr/include/linux/btf.h
  HDRINST usr/include/linux/batman_adv.h
  HDRINST usr/include/linux/fcntl.h
  HDRINST usr/include/linux/if_ltalk.h
  HDRINST usr/include/linux/i2c.h
  HDRINST usr/include/linux/atm_idt77105.h
  HDRINST usr/include/linux/kexec.h
  HDRINST usr/include/linux/arm_sdei.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6_tables.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_ah.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_NPT.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_rt.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_REJECT.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_opts.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_srh.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_LOG.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_mh.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_HL.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_hl.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_frag.h
  HDRINST usr/include/linux/netfilter_ipv6/ip6t_ipv6header.h
  HDRINST usr/include/linux/minix_fs.h
  HDRINST usr/include/linux/aio_abi.h
  HDRINST usr/include/linux/pktcdvd.h
  HDRINST usr/include/linux/libc-compat.h
  HDRINST usr/include/linux/atmlec.h
  HDRINST usr/include/linux/signalfd.h
  HDRINST usr/include/linux/bpf_common.h
  HDRINST usr/include/linux/seg6_iptunnel.h
  HDRINST usr/include/linux/synclink.h
  HDRINST usr/include/linux/mpls_iptunnel.h
  HDRINST usr/include/linux/mctp.h
  HDRINST usr/include/linux/if_xdp.h
  HDRINST usr/include/linux/llc.h
  HDRINST usr/include/linux/atmsvc.h
  HDRINST usr/include/linux/sed-opal.h
  HDRINST usr/include/linux/sock_diag.h
  HDRINST usr/include/linux/time.h
  HDRINST usr/include/linux/securebits.h
  HDRINST usr/include/linux/fsl_hypervisor.h
  HDRINST usr/include/linux/if_hippi.h
  HDRINST usr/include/linux/seccomp.h
  HDRINST usr/include/linux/oom.h
  HDRINST usr/include/linux/filter.h
  HDRINST usr/include/linux/inotify.h
  HDRINST usr/include/linux/rfkill.h
  HDRINST usr/include/linux/reboot.h
  HDRINST usr/include/linux/can/vxcan.h
  HDRINST usr/include/linux/can/j1939.h
  HDRINST usr/include/linux/can/netlink.h
  HDRINST usr/include/linux/can/bcm.h
  HDRINST usr/include/linux/can/raw.h
  HDRINST usr/include/linux/can/gw.h
  HDRINST usr/include/linux/can/error.h
  HDRINST usr/include/linux/can/isotp.h
  HDRINST usr/include/linux/if_eql.h
  HDRINST usr/include/linux/psp-dbc.h
  HDRINST usr/include/linux/hiddev.h
  HDRINST usr/include/linux/blktrace_api.h
  HDRINST usr/include/linux/ccs.h
  HDRINST usr/include/linux/ioam6.h
  HDRINST usr/include/linux/hsr_netlink.h
  HDRINST usr/include/linux/mmc/ioctl.h
  HDRINST usr/include/linux/bfs_fs.h
  HDRINST usr/include/linux/rio_cm_cdev.h
  HDRINST usr/include/linux/uleds.h
  HDRINST usr/include/linux/mrp_bridge.h
  HDRINST usr/include/linux/adb.h
  HDRINST usr/include/linux/pmu.h
  HDRINST usr/include/linux/udmabuf.h
  HDRINST usr/include/linux/kcmp.h
  HDRINST usr/include/linux/dma-heap.h
  HDRINST usr/include/linux/userfaultfd.h
  HDRINST usr/include/linux/netfilter_arp/arpt_mangle.h
  HDRINST usr/include/linux/netfilter_arp/arp_tables.h
  HDRINST usr/include/linux/tipc.h
  HDRINST usr/include/linux/virtio_ids.h
  HDRINST usr/include/linux/l2tp.h
  HDRINST usr/include/linux/devlink.h
  HDRINST usr/include/linux/virtio_gpio.h
  HDRINST usr/include/linux/dcbnl.h
  HDRINST usr/include/linux/cyclades.h
  HDRINST usr/include/sound/intel/avs/tokens.h
  HDRINST usr/include/sound/sof/fw.h
  HDRINST usr/include/sound/sof/abi.h
  HDRINST usr/include/sound/sof/tokens.h
  HDRINST usr/include/sound/sof/header.h
  HDRINST usr/include/sound/usb_stream.h
  HDRINST usr/include/sound/sfnt_info.h
  HDRINST usr/include/sound/asequencer.h
  HDRINST usr/include/sound/tlv.h
  HDRINST usr/include/sound/asound.h
  HDRINST usr/include/sound/sb16_csp.h
  HDRINST usr/include/sound/asoc.h
  HDRINST usr/include/sound/compress_offload.h
  HDRINST usr/include/sound/hdsp.h
  HDRINST usr/include/sound/emu10k1.h
  HDRINST usr/include/sound/snd_ar_tokens.h
  HDRINST usr/include/sound/snd_sst_tokens.h
  HDRINST usr/include/sound/asound_fm.h
  HDRINST usr/include/sound/hdspm.h
  HDRINST usr/include/sound/compress_params.h
  HDRINST usr/include/sound/firewire.h
  HDRINST usr/include/sound/skl-tplg-interface.h
  HDRINST usr/include/scsi/scsi_bsg_ufs.h
  HDRINST usr/include/scsi/scsi_netlink_fc.h
  HDRINST usr/include/scsi/scsi_bsg_mpi3mr.h
  HDRINST usr/include/scsi/fc/fc_ns.h
  HDRINST usr/include/scsi/fc/fc_fs.h
  HDRINST usr/include/scsi/fc/fc_els.h
  HDRINST usr/include/scsi/fc/fc_gs.h
  HDRINST usr/include/scsi/scsi_bsg_fc.h
  HDRINST usr/include/scsi/scsi_netlink.h
  HDRINST usr/include/scsi/cxlflash_ioctl.h
  HDRINST usr/include/linux/version.h
  HDRINST usr/include/asm/processor-flags.h
  HDRINST usr/include/asm/auxvec.h
  HDRINST usr/include/asm/svm.h
  HDRINST usr/include/asm/bitsperlong.h
  HDRINST usr/include/asm/kvm_perf.h
  HDRINST usr/include/asm/mce.h
  HDRINST usr/include/asm/posix_types.h
  HDRINST usr/include/asm/msr.h
  HDRINST usr/include/asm/sigcontext32.h
  HDRINST usr/include/asm/mman.h
  HDRINST usr/include/asm/shmbuf.h
  HDRINST usr/include/asm/e820.h
  HDRINST usr/include/asm/posix_types_64.h
  HDRINST usr/include/asm/vsyscall.h
  HDRINST usr/include/asm/msgbuf.h
  HDRINST usr/include/asm/statfs.h
  HDRINST usr/include/asm/swab.h
  HDRINST usr/include/asm/posix_types_x32.h
  HDRINST usr/include/asm/ptrace.h
  HDRINST usr/include/asm/unistd.h
  HDRINST usr/include/asm/ist.h
  HDRINST usr/include/asm/prctl.h
  HDRINST usr/include/asm/boot.h
  HDRINST usr/include/asm/sigcontext.h
  HDRINST usr/include/asm/posix_types_32.h
  HDRINST usr/include/asm/a.out.h
  HDRINST usr/include/asm/kvm_para.h
  HDRINST usr/include/asm/mtrr.h
  HDRINST usr/include/asm/amd_hsmp.h
  HDRINST usr/include/asm/hwcap2.h
  HDRINST usr/include/asm/ptrace-abi.h
  HDRINST usr/include/asm/vm86.h
  HDRINST usr/include/asm/vmx.h
  HDRINST usr/include/asm/ldt.h
  HDRINST usr/include/asm/perf_regs.h
  HDRINST usr/include/asm/kvm.h
  HDRINST usr/include/asm/debugreg.h
  HDRINST usr/include/asm/signal.h
  HDRINST usr/include/asm/bootparam.h
  HDRINST usr/include/asm/siginfo.h
  HDRINST usr/include/asm/hw_breakpoint.h
  HDRINST usr/include/asm/stat.h
  HDRINST usr/include/asm/setup.h
  HDRINST usr/include/asm/sembuf.h
  HDRINST usr/include/asm/sgx.h
  HDRINST usr/include/asm/ucontext.h
  HDRINST usr/include/asm/byteorder.h
  HDRINST usr/include/asm/unistd_64.h
  HDRINST usr/include/asm/ioctls.h
  HDRINST usr/include/asm/bpf_perf_event.h
  HDRINST usr/include/asm/types.h
  HDRINST usr/include/asm/poll.h
  HDRINST usr/include/asm/resource.h
  HDRINST usr/include/asm/param.h
  HDRINST usr/include/asm/sockios.h
  HDRINST usr/include/asm/errno.h
  HDRINST usr/include/asm/unistd_x32.h
  HDRINST usr/include/asm/termios.h
  HDRINST usr/include/asm/ioctl.h
  HDRINST usr/include/asm/socket.h
  HDRINST usr/include/asm/unistd_32.h
  HDRINST usr/include/asm/termbits.h
  HDRINST usr/include/asm/fcntl.h
  HDRINST usr/include/asm/ipcbuf.h
  HOSTLD  scripts/mod/modpost
  CC      kernel/bounds.s
  CHKSHA1 ../include/linux/atomic/atomic-arch-fallback.h
  CHKSHA1 ../include/linux/atomic/atomic-instrumented.h
  CHKSHA1 ../include/linux/atomic/atomic-long.h
  UPD     include/generated/timeconst.h
  UPD     include/generated/bounds.h
  CC      arch/x86/kernel/asm-offsets.s
  LD      /kernel/build64-default/tools/objtool/arch/x86/objtool-in.o
  UPD     include/generated/asm-offsets.h
  CALL    ../scripts/checksyscalls.sh
  LD      /kernel/build64-default/tools/objtool/objtool-in.o
  LINK    /kernel/build64-default/tools/objtool/objtool
  LDS     scripts/module.lds
  CC      ipc/compat.o
  CC      ipc/util.o
  CC      ipc/msgutil.o
  CC      ipc/msg.o
  HOSTCC  usr/gen_init_cpio
  CC      ipc/sem.o
  AR      certs/built-in.a
  CC      ipc/shm.o
  CC      init/main.o
  CC      ipc/syscall.o
  CC      arch/x86/power/cpu.o
  CC      io_uring/io_uring.o
  CC      block/bdev.o
  AR      arch/x86/video/built-in.a
  AS      arch/x86/lib/clear_page_64.o
  CC      security/commoncap.o
  CC      io_uring/xattr.o
  CC      arch/x86/power/hibernate_64.o
  CC      ipc/ipc_sysctl.o
  AR      arch/x86/net/built-in.a
  CC      mm/filemap.o
  AS      arch/x86/crypto/aesni-intel_asm.o
  CC      arch/x86/pci/i386.o
  UPD     init/utsversion-tmp.h
  CC [M]  arch/x86/video/fbdev.o
  CC      block/partitions/core.o
  CC      arch/x86/realmode/init.o
  AR      virt/lib/built-in.a
  CC      net/llc/llc_core.o
  AR      arch/x86/ia32/built-in.a
  CC      net/ethernet/eth.o
  CC      security/keys/gc.o
  CC      net/core/sock.o
  CC      arch/x86/mm/pat/set_memory.o
  CC      arch/x86/crypto/aesni-intel_glue.o
  AR      drivers/cache/built-in.a
  CC      sound/core/seq/seq.o
  AR      sound/i2c/other/built-in.a
  AR      sound/isa/ad1816a/built-in.a
  CC [M]  arch/x86/kvm/../../../virt/kvm/kvm_main.o
  AR      sound/drivers/opl3/built-in.a
  CC      arch/x86/events/amd/core.o
  CC [M]  virt/lib/irqbypass.o
  AR      arch/x86/platform/atom/built-in.a
  CC      arch/x86/kernel/fpu/init.o
  AR      sound/drivers/opl4/built-in.a
  AS      arch/x86/power/hibernate_asm_64.o
  AR      sound/i2c/built-in.a
  AR      sound/pci/ac97/built-in.a
  CC      fs/notify/dnotify/dnotify.o
  CC      arch/x86/lib/cmdline.o
  AR      drivers/irqchip/built-in.a
  AR      sound/isa/ad1848/built-in.a
  AR      arch/x86/platform/ce4100/built-in.a
  AR      sound/pci/ali5451/built-in.a
  AR      sound/drivers/mpu401/built-in.a
  AR      sound/pci/asihpi/built-in.a
  AR      sound/drivers/vx/built-in.a
  CC      arch/x86/entry/vdso/vma.o
  CC      lib/kunit/hooks.o
  CC      arch/x86/events/amd/lbr.o
  CC      arch/x86/entry/vdso/extable.o
  AR      sound/drivers/pcsp/built-in.a
  AR      sound/isa/cs423x/built-in.a
  CC      arch/x86/events/amd/ibs.o
  CC      kernel/sched/core.o
  AR      drivers/bus/mhi/built-in.a
  AR      sound/drivers/built-in.a
  CC      kernel/sched/fair.o
  CC      arch/x86/platform/efi/memmap.o
  CC      mm/kasan/common.o
  AR      sound/pci/au88x0/built-in.a
  AR      drivers/bus/built-in.a
  AR      sound/isa/es1688/built-in.a
  CC      arch/x86/events/amd/uncore.o
  CC      crypto/api.o
  AR      sound/pci/aw2/built-in.a
  AR      sound/isa/galaxy/built-in.a
  AR      sound/pci/ctxfi/built-in.a
  AR      drivers/phy/allwinner/built-in.a
  AR      sound/isa/gus/built-in.a
  AR      sound/pci/ca0106/built-in.a
  AR      sound/isa/msnd/built-in.a
  AR      drivers/phy/amlogic/built-in.a
  AR      sound/pci/cs46xx/built-in.a
  AR      sound/isa/opti9xx/built-in.a
  AR      drivers/phy/broadcom/built-in.a
  AS      arch/x86/lib/cmpxchg16b_emu.o
  AR      sound/pci/cs5535audio/built-in.a
  AR      sound/isa/sb/built-in.a
  AR      drivers/phy/cadence/built-in.a
  CC      arch/x86/lib/copy_mc.o
  AR      sound/pci/lola/built-in.a
  AR      drivers/phy/freescale/built-in.a
  AR      sound/isa/wavefront/built-in.a
  AR      sound/pci/lx6464es/built-in.a
  AR      drivers/phy/hisilicon/built-in.a
  AR      sound/isa/wss/built-in.a
  AR      sound/pci/echoaudio/built-in.a
  AR      sound/isa/built-in.a
  AR      drivers/phy/ingenic/built-in.a
  AR      sound/pci/emu10k1/built-in.a
  AR      drivers/phy/intel/built-in.a
  AR      sound/pci/hda/built-in.a
  CC [M]  sound/pci/hda/hda_bind.o
  CC      io_uring/nop.o
  AR      drivers/phy/lantiq/built-in.a
  AR      drivers/phy/marvell/built-in.a
  GEN     usr/initramfs_data.cpio
  AR      drivers/phy/mediatek/built-in.a
  COPY    usr/initramfs_inc_data
  AS      usr/initramfs_data.o
  CC [M]  lib/kunit/test.o
  AR      drivers/phy/microchip/built-in.a
  AR      drivers/phy/motorola/built-in.a
  AR      usr/built-in.a
  CC [M]  lib/kunit/resource.o
  AR      drivers/phy/mscc/built-in.a
  AR      drivers/phy/qualcomm/built-in.a
  CC      arch/x86/kernel/fpu/bugs.o
  AR      drivers/phy/ralink/built-in.a
  AR      drivers/phy/realtek/built-in.a
  AR      drivers/phy/renesas/built-in.a
  AR      drivers/phy/rockchip/built-in.a
  AR      drivers/phy/samsung/built-in.a
  AR      virt/built-in.a
  AR      drivers/phy/socionext/built-in.a
  AR      drivers/phy/st/built-in.a
  CC      net/802/p8022.o
  AR      drivers/phy/starfive/built-in.a
  AS      arch/x86/lib/copy_mc_64.o
  AR      drivers/phy/sunplus/built-in.a
  CC      net/802/psnap.o
  AS      arch/x86/lib/copy_page_64.o
  CC      sound/core/seq/seq_lock.o
  CC      arch/x86/kernel/fpu/core.o
  AR      drivers/phy/tegra/built-in.a
  AR      drivers/phy/ti/built-in.a
  AS      arch/x86/lib/copy_user_64.o
  AR      drivers/phy/xilinx/built-in.a
  CC      net/llc/llc_input.o
  AS      arch/x86/realmode/rm/header.o
  CC      drivers/phy/phy-core.o
  AS      arch/x86/lib/copy_user_uncached_64.o
  AS      arch/x86/realmode/rm/trampoline_64.o
  CC      arch/x86/lib/cpu.o
  AS      arch/x86/realmode/rm/stack.o
  CC      net/sched/sch_generic.o
  CC      arch/x86/lib/delay.o
  AS      arch/x86/realmode/rm/reboot.o
  CC      net/core/request_sock.o
  CC      security/keys/key.o
  CC      kernel/sched/build_policy.o
  AS      arch/x86/realmode/rm/wakeup_asm.o
  AR      fs/notify/dnotify/built-in.a
  CC      arch/x86/realmode/rm/wakemain.o
  CC      arch/x86/pci/init.o
  CC      fs/notify/inotify/inotify_fsnotify.o
  CC      arch/x86/mm/pat/memtype.o
  CC      security/min_addr.o
  CC      fs/notify/fanotify/fanotify.o
  CC      arch/x86/realmode/rm/video-mode.o
  CC      security/inode.o
  CC      arch/x86/power/hibernate.o
  CC      arch/x86/entry/vdso/vdso32-setup.o
  CC      mm/kasan/report.o
  CC      block/partitions/ldm.o
  CC      arch/x86/platform/efi/quirks.o
  CC      io_uring/fs.o
  AS      arch/x86/realmode/rm/copy.o
  CC      crypto/cipher.o
  CC      sound/core/seq/seq_clientmgr.o
  CC      kernel/sched/build_utility.o
  AS      arch/x86/realmode/rm/bioscall.o
  CC      crypto/compress.o
  CC      arch/x86/realmode/rm/regs.o
  AS      arch/x86/crypto/aesni-intel_avx-x86_64.o
  CC      crypto/algapi.o
  AS      arch/x86/lib/getuser.o
  CC [M]  sound/pci/hda/hda_codec.o
  CC      arch/x86/realmode/rm/video-vga.o
  CC      crypto/scatterwalk.o
  CC [M]  lib/kunit/static_stub.o
  GEN     arch/x86/lib/inat-tables.c
  LDS     arch/x86/entry/vdso/vdso.lds
  CC      arch/x86/lib/insn-eval.o
  CC      arch/x86/realmode/rm/video-vesa.o
  AS      arch/x86/entry/vdso/vdso-note.o
  CC      arch/x86/entry/vdso/vclock_gettime.o
  CC      net/sched/sch_mq.o
  AR      arch/x86/events/amd/built-in.a
  CC      arch/x86/lib/insn.o
  CC      arch/x86/events/intel/core.o
  CC      arch/x86/realmode/rm/video-bios.o
  CC      arch/x86/kernel/cpu/mce/core.o
  CC      init/do_mounts.o
  CC      arch/x86/kernel/cpu/mtrr/mtrr.o
  AR      net/ethernet/built-in.a
  CC      arch/x86/events/intel/bts.o
  AS      arch/x86/crypto/aes_ctrby8_avx-x86_64.o
  CC      fs/notify/inotify/inotify_user.o
  PASYMS  arch/x86/realmode/rm/pasyms.h
  LDS     arch/x86/realmode/rm/realmode.lds
  CC      arch/x86/pci/mmconfig_64.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      arch/x86/kernel/cpu/mtrr/if.o
  AS [M]  arch/x86/crypto/ghash-clmulni-intel_asm.o
  CC      net/802/stp.o
  CC      net/llc/llc_output.o
  CC [M]  arch/x86/crypto/ghash-clmulni-intel_glue.o
  AR      arch/x86/realmode/built-in.a
  AR      arch/x86/platform/geode/built-in.a
  AR      arch/x86/platform/iris/built-in.a
  CC      fs/nfs_common/grace.o
  CC      arch/x86/pci/direct.o
  CC      init/do_mounts_initrd.o
  CC      security/device_cgroup.o
  CC [M]  arch/x86/kvm/../../../virt/kvm/eventfd.o
  CC      net/core/skbuff.o
  CC      ipc/mqueue.o
  AR      arch/x86/power/built-in.a
  CC      arch/x86/platform/intel/iosf_mbi.o
  CC      crypto/proc.o
  CC [M]  lib/kunit/string-stream.o
  CC      security/keys/keyring.o
  AR      arch/x86/platform/intel-mid/built-in.a
  CC      arch/x86/mm/pat/memtype_interval.o
  AR      arch/x86/platform/intel-quark/built-in.a
  AR      drivers/phy/built-in.a
  AR      arch/x86/platform/olpc/built-in.a
  CC      arch/x86/entry/vdso/vgetcpu.o
  CC      arch/x86/platform/efi/efi.o
  AR      drivers/pinctrl/actions/built-in.a
  AR      arch/x86/platform/scx200/built-in.a
  AR      drivers/pinctrl/bcm/built-in.a
  CC      fs/notify/fsnotify.o
  AR      drivers/pinctrl/cirrus/built-in.a
  CC      mm/kasan/init.o
  AR      drivers/pinctrl/freescale/built-in.a
  CC      fs/iomap/trace.o
  CC      drivers/pinctrl/intel/pinctrl-baytrail.o
  HOSTCC  arch/x86/entry/vdso/vdso2c
  AR      fs/quota/built-in.a
  CC      drivers/pinctrl/intel/pinctrl-intel.o
  CC      fs/notify/fanotify/fanotify_user.o
  CC      arch/x86/kernel/fpu/regset.o
  AS [M]  arch/x86/crypto/crc32-pclmul_asm.o
  CC [M]  arch/x86/crypto/crc32-pclmul_glue.o
  CC      arch/x86/kernel/cpu/mtrr/generic.o
  AS      arch/x86/lib/memcpy_64.o
  CC      block/partitions/msdos.o
  CC      arch/x86/kernel/cpu/mtrr/cleanup.o
  CC      arch/x86/platform/efi/efi_64.o
  AS      arch/x86/lib/memmove_64.o
  CC [M]  lib/kunit/assert.o
  AS      arch/x86/lib/memset_64.o
  CC      arch/x86/lib/misc.o
  CC      block/partitions/efi.o
  CC      net/sched/sch_frag.o
  LDS     arch/x86/entry/vdso/vdso32/vdso32.lds
  CC      arch/x86/lib/pc-conf-reg.o
  AS      arch/x86/entry/vdso/vdso32/note.o
  CC      mm/kasan/generic.o
  AR      net/llc/built-in.a
  CC      arch/x86/pci/mmconfig-shared.o
  AS      arch/x86/lib/putuser.o
  AS      arch/x86/entry/vdso/vdso32/system_call.o
  CC      arch/x86/kernel/fpu/signal.o
  AR      net/802/built-in.a
  AS      arch/x86/lib/retpoline.o
  AS      arch/x86/entry/vdso/vdso32/sigreturn.o
  CC      net/sched/sch_api.o
  AR      fs/nfs_common/built-in.a
  CC      net/netlink/af_netlink.o
  CC      arch/x86/entry/vdso/vdso32/vclock_gettime.o
  CC      io_uring/splice.o
  CC      net/netlink/genetlink.o
  CC      crypto/aead.o
  AR      arch/x86/platform/intel/built-in.a
  AR      fs/notify/inotify/built-in.a
  AR      arch/x86/mm/pat/built-in.a
  CC [M]  drivers/pinctrl/intel/pinctrl-cherryview.o
  CC      crypto/geniv.o
  CC      arch/x86/mm/init.o
  CC      arch/x86/lib/usercopy.o
  CC      sound/core/seq/seq_memory.o
  CC      init/initramfs.o
  AS [M]  arch/x86/crypto/crct10dif-pcl-asm_64.o
  CC [M]  arch/x86/crypto/crct10dif-pclmul_glue.o
  CC      fs/notify/notification.o
  CC [M]  lib/kunit/try-catch.o
  CC      block/fops.o
  AS      arch/x86/platform/efi/efi_stub_64.o
  CC      block/bio.o
  CC      arch/x86/lib/usercopy_64.o
  CC      arch/x86/kernel/fpu/xstate.o
  CC [M]  drivers/pinctrl/intel/pinctrl-broxton.o
  CC      mm/kasan/report_generic.o
  CC      security/keys/keyctl.o
  LD [M]  arch/x86/crypto/ghash-clmulni-intel.o
  CC [M]  lib/kunit/executor.o
  CC      fs/iomap/iter.o
  CC [M]  arch/x86/kvm/../../../virt/kvm/binary_stats.o
  CC      arch/x86/entry/vdso/vdso32/vgetcpu.o
  AR      sound/ppc/built-in.a
  CC [M]  arch/x86/kvm/../../../virt/kvm/vfio.o
  CC      arch/x86/kernel/cpu/mce/severity.o
  AR      arch/x86/platform/efi/built-in.a
  AR      arch/x86/platform/ts5500/built-in.a
  LD [M]  arch/x86/crypto/crc32-pclmul.o
  AR      arch/x86/platform/uv/built-in.a
  VDSO    arch/x86/entry/vdso/vdso64.so.dbg
  AR      arch/x86/platform/built-in.a
  LD [M]  arch/x86/crypto/crct10dif-pclmul.o
  CC      net/netlink/policy.o
  CC [M]  arch/x86/kvm/../../../virt/kvm/coalesced_mmio.o
  AR      arch/x86/crypto/built-in.a
  AR      arch/x86/kernel/cpu/mtrr/built-in.a
  CC      security/keys/permission.o
  CC      arch/x86/kernel/cpu/microcode/core.o
  VDSO    arch/x86/entry/vdso/vdso32.so.dbg
  CC [M]  arch/x86/kvm/../../../virt/kvm/async_pf.o
  CC      arch/x86/kernel/cpu/microcode/intel.o
  OBJCOPY arch/x86/entry/vdso/vdso64.so
  CC      arch/x86/events/intel/ds.o
  OBJCOPY arch/x86/entry/vdso/vdso32.so
  VDSO2C  arch/x86/entry/vdso/vdso-image-64.c
  AR      block/partitions/built-in.a
  VDSO2C  arch/x86/entry/vdso/vdso-image-32.c
  CC      arch/x86/entry/vdso/vdso-image-64.o
  AR      net/bpf/built-in.a
  CC      mm/kasan/shadow.o
  AR      drivers/pinctrl/mediatek/built-in.a
  CC      arch/x86/kernel/cpu/microcode/amd.o
  CC      ipc/namespace.o
  AR      drivers/pinctrl/mvebu/built-in.a
  CC      arch/x86/pci/fixup.o
  CC      crypto/skcipher.o
  AR      drivers/pinctrl/nomadik/built-in.a
  CC      arch/x86/pci/acpi.o
  CC      sound/core/seq/seq_queue.o
  CC [M]  sound/pci/hda/hda_jack.o
  AR      sound/arm/built-in.a
  CC      fs/notify/group.o
  CC      arch/x86/lib/msr-smp.o
  CC      net/sched/sch_blackhole.o
  AR      fs/notify/fanotify/built-in.a
  CC      arch/x86/entry/vdso/vdso-image-32.o
  CC      arch/x86/lib/cache-smp.o
  CC      init/calibrate.o
  CC      arch/x86/mm/init_64.o
  CC      block/elevator.o
  CC      fs/notify/mark.o
  CC [M]  lib/kunit/attributes.o
  CC      arch/x86/events/zhaoxin/core.o
  CC      net/core/datagram.o
  CC [M]  drivers/pinctrl/intel/pinctrl-geminilake.o
  CC      lib/math/div64.o
  AR      arch/x86/entry/vdso/built-in.a
  CC      arch/x86/entry/vsyscall/vsyscall_64.o
  CC      arch/x86/lib/msr.o
  CC      fs/iomap/buffered-io.o
  CC      lib/math/gcd.o
  CC      fs/iomap/direct-io.o
  CC [M]  arch/x86/kvm/../../../virt/kvm/irqchip.o
  CC      arch/x86/kernel/cpu/mce/genpool.o
  CC      lib/math/lcm.o
  CC      lib/crypto/memneq.o
  CC      init/init_task.o
  CC      lib/math/int_log.o
  CC      lib/crypto/utils.o
  CC      ipc/mq_sysctl.o
  CC      mm/kasan/quarantine.o
  CC      lib/crypto/chacha.o
  CC      net/sched/sch_fifo.o
  CC      lib/math/int_pow.o
  CC      fs/iomap/fiemap.o
  CC      lib/math/int_sqrt.o
  CC      lib/zlib_inflate/inffast.o
  CC      lib/zlib_deflate/deflate.o
  CC      lib/math/reciprocal_div.o
  CC      lib/zlib_deflate/deftree.o
  CC      fs/iomap/seek.o
  CC      lib/zlib_inflate/inflate.o
  AR      arch/x86/kernel/cpu/microcode/built-in.a
  CC      lib/math/rational.o
  CC      mm/mempool.o
  CC      lib/zlib_inflate/infutil.o
  CC      sound/core/seq/seq_fifo.o
  CC [M]  drivers/pinctrl/intel/pinctrl-sunrisepoint.o
  AR      arch/x86/kernel/fpu/built-in.a
  CC      net/netlink/diag.o
  CC      drivers/gpio/gpiolib.o
  CC      arch/x86/pci/legacy.o
  CC [M]  sound/pci/hda/hda_auto_parser.o
  AR      lib/kunit/built-in.a
  LD [M]  lib/kunit/kunit.o
  CC      security/keys/process_keys.o
  AS      arch/x86/entry/vsyscall/vsyscall_emu_64.o
  CC      sound/core/seq/seq_prioq.o
  CC      fs/iomap/swapfile.o
  CC      lib/crypto/aes.o
  CC      lib/lzo/lzo1x_compress.o
  CC      security/keys/request_key.o
  AR      ipc/built-in.a
  CC      lib/lzo/lzo1x_decompress_safe.o
  CC [M]  sound/pci/hda/hda_sysfs.o
  CC      arch/x86/kernel/cpu/mce/intel.o
  CC      crypto/seqiv.o
  AR      arch/x86/events/zhaoxin/built-in.a
  CC [M]  arch/x86/kvm/../../../virt/kvm/dirty_ring.o
  CC      security/keys/request_key_auth.o
  CC [M]  lib/math/prime_numbers.o
  CC      fs/notify/fdinfo.o
  CC [M]  arch/x86/kvm/../../../virt/kvm/pfncache.o
  CC      init/version.o
  AR      arch/x86/entry/vsyscall/built-in.a
  AS      arch/x86/entry/entry.o
  AS      arch/x86/lib/msr-reg.o
  CC      arch/x86/lib/msr-reg-export.o
  AS      arch/x86/entry/entry_64.o
  CC      sound/core/sound.o
  CC      block/blk-core.o
  CC      lib/crypto/gf128mul.o
  CC      arch/x86/entry/syscall_64.o
  AR      mm/kasan/built-in.a
  AS      arch/x86/lib/hweight.o
  CC      arch/x86/events/intel/knc.o
  CC [M]  arch/x86/kvm/x86.o
  AR      drivers/pinctrl/intel/built-in.a
  CC      arch/x86/lib/iomem.o
  AR      drivers/pinctrl/nuvoton/built-in.a
  CC      arch/x86/events/core.o
  AR      drivers/pinctrl/nxp/built-in.a
  AR      drivers/pinctrl/qcom/built-in.a
  AR      drivers/pinctrl/sprd/built-in.a
  CC      mm/oom_kill.o
  AR      drivers/pinctrl/sunplus/built-in.a
  CC      mm/fadvise.o
  AR      init/built-in.a
  CC      mm/maccess.o
  CC      arch/x86/pci/irq.o
  AR      drivers/pinctrl/ti/built-in.a
  CC      arch/x86/kernel/acpi/boot.o
  CC      lib/zlib_inflate/inftrees.o
  AR      lib/lzo/built-in.a
  CC      drivers/pinctrl/core.o
  CC      lib/zlib_inflate/inflate_syms.o
  CC      arch/x86/kernel/acpi/sleep.o
  AR      net/sched/built-in.a
  CC      drivers/pinctrl/pinctrl-utils.o
  CC      sound/core/seq/seq_timer.o
  CC      io_uring/sync.o
  CC      net/ethtool/ioctl.o
  CC      sound/core/seq/seq_system.o
  CC      lib/zlib_deflate/deflate_syms.o
  CC      sound/core/seq/seq_ports.o
  CC      net/ethtool/common.o
  CC      mm/page-writeback.o
  CC      mm/folio-compat.o
  CC      arch/x86/kernel/cpu/mce/threshold.o
  CC      crypto/echainiv.o
  CC      net/core/stream.o
  AS      arch/x86/lib/iomap_copy_64.o
  CC      arch/x86/events/intel/lbr.o
  AR      lib/math/built-in.a
  CC      sound/core/seq/seq_info.o
  CC      arch/x86/lib/inat.o
  CC      block/blk-sysfs.o
  CC      arch/x86/mm/fault.o
  AR      fs/notify/built-in.a
  CC      mm/readahead.o
  CC      sound/core/init.o
  CC      crypto/ahash.o
  CC      security/keys/user_defined.o
  AR      lib/zlib_inflate/built-in.a
  AS      arch/x86/kernel/acpi/wakeup_64.o
  CC      crypto/shash.o
  AR      net/netlink/built-in.a
  CC      arch/x86/kernel/acpi/apei.o
  AR      arch/x86/lib/built-in.a
  CC [M]  net/netfilter/ipvs/ip_vs_conn.o
  AR      arch/x86/lib/lib.a
  CC      arch/x86/entry/common.o
  CC [M]  net/netfilter/ipvs/ip_vs_core.o
  AR      lib/zlib_deflate/built-in.a
  CC      lib/crypto/blake2s.o
  CC [M]  net/netfilter/ipvs/ip_vs_ctl.o
  CC [M]  sound/pci/hda/hda_controller.o
  AS      arch/x86/entry/thunk_64.o
  CC      crypto/akcipher.o
  AR      net/ipv4/netfilter/built-in.a
  AS      arch/x86/entry/entry_64_compat.o
  CC [M]  net/ipv4/netfilter/nf_defrag_ipv4.o
  CC      net/ipv4/route.o
  CC      arch/x86/entry/syscall_32.o
  CC      mm/swap.o
  CC      arch/x86/mm/ioremap.o
  CC [M]  arch/x86/kvm/emulate.o
  CC      drivers/pinctrl/pinmux.o
  CC      arch/x86/kernel/acpi/cppc.o
  CC      net/ipv4/inetpeer.o
  CC [M]  sound/pci/hda/hda_proc.o
  CC      block/blk-flush.o
  CC      lib/crypto/blake2s-generic.o
  CC      io_uring/advise.o
  CC      lib/crypto/blake2s-selftest.o
  AR      fs/iomap/built-in.a
  AR      sound/core/seq/built-in.a
  CC      sound/core/memory.o
  CC      security/keys/compat.o
  CC [M]  sound/pci/hda/hda_hwdep.o
  CC      arch/x86/events/probe.o
  CC      arch/x86/kernel/cpu/mce/apei.o
  CC      sound/core/control.o
  CC      fs/proc/task_mmu.o
  CC      net/ethtool/netlink.o
  CC      net/netfilter/core.o
  CC      arch/x86/pci/common.o
  CC      io_uring/filetable.o
  CC      sound/core/misc.o
  CC      lib/lz4/lz4_compress.o
  CC      lib/crypto/des.o
  CC      crypto/sig.o
  AR      arch/x86/entry/built-in.a
  CC      arch/x86/kernel/acpi/cstate.o
  CC      lib/crypto/sha1.o
  CC      crypto/kpp.o
  CC      lib/lz4/lz4hc_compress.o
  CC      arch/x86/events/intel/p4.o
  CC      lib/crypto/sha256.o
  CC      net/core/scm.o
  CC      net/ethtool/bitset.o
  CC      arch/x86/events/intel/p6.o
  CC      drivers/pinctrl/pinconf.o
  CC      arch/x86/events/intel/pt.o
  CC      arch/x86/events/intel/uncore.o
  AR      arch/x86/kernel/cpu/mce/built-in.a
  CC      arch/x86/events/intel/uncore_nhmex.o
  CC      arch/x86/kernel/cpu/cacheinfo.o
  CC      arch/x86/mm/extable.o
  CC      arch/x86/events/intel/uncore_snb.o
  CC      security/keys/proc.o
  CC [M]  lib/crypto/arc4.o
  CC [M]  net/ipv4/netfilter/nf_reject_ipv4.o
  CC      arch/x86/pci/early.o
  CC      arch/x86/kernel/cpu/scattered.o
  CC      net/ipv4/protocol.o
  CC      lib/zstd/zstd_compress_module.o
  CC      lib/xz/xz_dec_syms.o
  AR      arch/x86/kernel/acpi/built-in.a
  CC [M]  sound/pci/hda/hda_generic.o
  CC      lib/xz/xz_dec_stream.o
  CC      lib/raid6/algos.o
  CC      lib/zstd/compress/fse_compress.o
  CC      lib/xz/xz_dec_lzma2.o
  CC      net/core/gen_stats.o
  CC      block/blk-settings.o
  CC      arch/x86/pci/bus_numa.o
  CC      drivers/gpio/gpiolib-devres.o
  CC      crypto/acompress.o
  CC      crypto/scompress.o
  AR      kernel/sched/built-in.a
  CC      arch/x86/pci/amd_bus.o
  CC      kernel/locking/mutex.o
  CC      drivers/pinctrl/pinconf-generic.o
  CC      kernel/locking/semaphore.o
  LD [M]  lib/crypto/libarc4.o
  CC [M]  net/netfilter/ipvs/ip_vs_sched.o
  CC      arch/x86/events/intel/uncore_snbep.o
  CC      io_uring/openclose.o
  CC      lib/xz/xz_dec_bcj.o
  CC      net/ethtool/strset.o
  AR      sound/sh/built-in.a
  CC      lib/zstd/compress/hist.o
  CC      lib/zstd/compress/huf_compress.o
  CC      lib/zstd/compress/zstd_compress.o
  AR      sound/synth/emux/built-in.a
  AR      lib/crypto/built-in.a
  AR      sound/synth/built-in.a
  CC      lib/fonts/fonts.o
  CC      security/keys/sysctl.o
  CC      arch/x86/kernel/apic/apic.o
  CC      lib/fonts/font_8x8.o
  CC      lib/fonts/font_8x16.o
  CC      arch/x86/mm/mmap.o
  CC      net/ethtool/linkinfo.o
  AR      sound/usb/misc/built-in.a
  AR      sound/usb/usx2y/built-in.a
  CC      net/core/gen_estimator.o
  AR      sound/firewire/built-in.a
  AR      sound/usb/caiaq/built-in.a
  AR      sound/usb/6fire/built-in.a
  AR      sound/usb/hiface/built-in.a
  AR      sound/sparc/built-in.a
  CC      fs/proc/inode.o
  AR      sound/usb/bcd2000/built-in.a
  AR      sound/spi/built-in.a
  AR      sound/usb/built-in.a
  AR      sound/parisc/built-in.a
  CC      net/core/net_namespace.o
  CC      lib/zstd/compress/zstd_compress_literals.o
  CC [M]  net/netfilter/ipvs/ip_vs_xmit.o
  CC      mm/truncate.o
  CC      net/netfilter/nf_log.o
  CC      arch/x86/mm/pgtable.o
  CC      lib/raid6/recov.o
  CC      drivers/gpio/gpiolib-legacy.o
  CC      fs/kernfs/mount.o
  CC      mm/vmscan.o
  CC      mm/shmem.o
  CC      arch/x86/kernel/cpu/topology.o
  CC      fs/kernfs/inode.o
  CC      drivers/gpio/gpiolib-cdev.o
  HOSTCC  lib/raid6/mktables
  CC      drivers/gpio/gpiolib-sysfs.o
  CC      lib/zstd/compress/zstd_compress_sequences.o
  AR      drivers/pinctrl/built-in.a
  CC      sound/core/device.o
  AR      lib/xz/built-in.a
  CC      net/core/secure_seq.o
  CC      drivers/gpio/gpiolib-acpi.o
  AR      arch/x86/pci/built-in.a
  CC      lib/lz4/lz4_decompress.o
  CC      crypto/algboss.o
  AR      lib/fonts/built-in.a
  AR      sound/pcmcia/vx/built-in.a
  CC      lib/argv_split.o
  CC [M]  sound/pci/hda/patch_realtek.o
  AR      sound/pcmcia/pdaudiocf/built-in.a
  AR      sound/pcmcia/built-in.a
  CC      mm/util.o
  CC      arch/x86/events/intel/uncore_discovery.o
  CC      block/blk-ioc.o
  AR      security/keys/built-in.a
  CC      block/blk-map.o
  AR      security/built-in.a
  CC      arch/x86/events/intel/cstate.o
  AR      drivers/pwm/built-in.a
  CC      drivers/pci/msi/pcidev_msi.o
  CC [M]  net/ipv4/netfilter/ip_tables.o
  CC      drivers/pci/pcie/portdrv.o
  CC      drivers/pci/hotplug/pci_hotplug_core.o
  UNROLL  lib/raid6/int1.c
  CC      net/core/flow_dissector.o
  CC      arch/x86/kernel/cpu/common.o
  CC      lib/bug.o
  UNROLL  lib/raid6/int2.c
  UNROLL  lib/raid6/int4.c
  UNROLL  lib/raid6/int8.c
  UNROLL  lib/raid6/int16.c
  UNROLL  lib/raid6/int32.c
  CC      arch/x86/mm/physaddr.o
  CC [M]  net/netfilter/ipvs/ip_vs_app.o
  CC      lib/raid6/recov_ssse3.o
  CC      kernel/locking/rwsem.o
  CC      io_uring/uring_cmd.o
  CC      mm/mmzone.o
  CC      lib/zstd/compress/zstd_compress_superblock.o
  CC      sound/core/info.o
  CC      arch/x86/kernel/cpu/rdrand.o
  CC      net/ethtool/linkmodes.o
  CC      fs/proc/root.o
  CC      net/core/sysctl_net_core.o
  CC      drivers/gpio/gpiolib-swnode.o
  CC      fs/kernfs/dir.o
  CC      lib/raid6/recov_avx2.o
  CC      drivers/video/console/dummycon.o
  CC      drivers/pci/msi/api.o
  CC      drivers/video/logo/logo.o
  CC      drivers/video/backlight/backlight.o
  CC      arch/x86/mm/tlb.o
  CC      crypto/testmgr.o
  CC      lib/zstd/compress/zstd_double_fast.o
  CC      drivers/pci/msi/msi.o
  CC      net/netfilter/nf_queue.o
  CC      io_uring/epoll.o
  CC      drivers/pci/msi/irqdomain.o
  CC      lib/raid6/mmx.o
  CC      drivers/pci/pcie/rcec.o
  CC      block/blk-merge.o
  CC      arch/x86/kernel/cpu/match.o
  CC      drivers/pci/pcie/aspm.o
  CC      lib/raid6/sse1.o
  CC      drivers/video/console/vgacon.o
  CC      mm/vmstat.o
  CC      net/ipv4/ip_input.o
  AR      lib/lz4/built-in.a
  CC      block/blk-timeout.o
  CC      lib/raid6/sse2.o
  CC      net/core/dev.o
  CC      drivers/pci/hotplug/acpi_pcihp.o
  HOSTCC  drivers/video/logo/pnmtologo
  CC      kernel/locking/percpu-rwsem.o
  CC      drivers/video/fbdev/core/fb_notify.o
  CC      arch/x86/kernel/apic/apic_common.o
  AR      drivers/video/fbdev/omap/built-in.a
  CC      kernel/locking/irqflag-debug.o
  CC      fs/proc/base.o
  CC      lib/buildid.o
  CC      fs/kernfs/file.o
  CC      drivers/idle/intel_idle.o
  CC      sound/core/isadma.o
  LOGO    drivers/video/logo/logo_linux_clut224.c
  CC      drivers/video/logo/logo_linux_clut224.o
  CC      io_uring/statx.o
  AR      drivers/video/logo/built-in.a
  CC      drivers/video/aperture.o
  AR      arch/x86/events/intel/built-in.a
  CC      lib/cmdline.o
  CC      arch/x86/events/utils.o
  CC      kernel/locking/mutex-debug.o
  CC [M]  net/netfilter/ipvs/ip_vs_sync.o
  CC      net/ethtool/rss.o
  AR      drivers/gpio/built-in.a
  CC      net/ethtool/linkstate.o
  CC      lib/cpumask.o
  CC [M]  sound/pci/hda/patch_analog.o
  CC      net/ethtool/debug.o
  AR      drivers/char/ipmi/built-in.a
  CC [M]  net/ipv4/netfilter/iptable_filter.o
  CC [M]  net/netfilter/ipvs/ip_vs_est.o
  CC      arch/x86/kernel/apic/apic_noop.o
  CC      drivers/video/cmdline.o
  CC      arch/x86/kernel/apic/ipi.o
  AR      drivers/video/backlight/built-in.a
  CC      drivers/video/nomodeset.o
  CC      net/netfilter/nf_sockopt.o
  CC      arch/x86/kernel/cpu/bugs.o
  CC      io_uring/net.o
  CC      lib/raid6/avx2.o
  CC      arch/x86/kernel/cpu/aperfmperf.o
  CC      sound/core/vmaster.o
  CC      drivers/pci/hotplug/pciehp_core.o
  CC      fs/sysfs/file.o
  CC      fs/configfs/inode.o
  CC      arch/x86/mm/cpu_entry_area.o
  AR      drivers/pci/msi/built-in.a
  CC      fs/configfs/file.o
  CC [M]  drivers/video/fbdev/core/fb_info.o
  CC [M]  drivers/video/fbdev/core/fbmem.o
  AR      drivers/video/console/built-in.a
  CC      drivers/video/hdmi.o
  CC      lib/zstd/compress/zstd_fast.o
  CC      arch/x86/kernel/apic/vector.o
  CC      kernel/locking/lockdep.o
  CC      drivers/pci/pcie/aer.o
  CC      arch/x86/events/rapl.o
  CC      kernel/locking/lockdep_proc.o
  CC      lib/ctype.o
  CC      io_uring/msg_ring.o
  CC      arch/x86/kernel/apic/init.o
  AR      sound/mips/built-in.a
  CC [M]  drivers/video/fbdev/core/fbcmap.o
  AR      sound/soc/built-in.a
  CC [M]  drivers/video/fbdev/core/modedb.o
  CC      arch/x86/events/msr.o
  CC      fs/kernfs/symlink.o
  CC      lib/zstd/compress/zstd_lazy.o
  CC      crypto/cmac.o
  AR      drivers/video/fbdev/omap2/omapfb/dss/built-in.a
  CC      block/blk-lib.o
  CC      sound/core/ctljack.o
  AR      drivers/video/fbdev/omap2/omapfb/displays/built-in.a
  CC      block/blk-mq.o
  AR      drivers/video/fbdev/omap2/omapfb/built-in.a
  CC      sound/core/jack.o
  AR      drivers/video/fbdev/omap2/built-in.a
  AR      drivers/idle/built-in.a
  CC [M]  drivers/video/fbdev/uvesafb.o
  CC      arch/x86/mm/maccess.o
  CC      drivers/acpi/acpica/dsargs.o
  CC      lib/raid6/avx512.o
  CC      arch/x86/mm/pgprot.o
  CC [M]  drivers/video/fbdev/simplefb.o
  CC      drivers/acpi/acpica/dscontrol.o
  CC      drivers/pci/hotplug/pciehp_ctrl.o
  CC      net/ethtool/wol.o
  CC      drivers/acpi/acpica/dsdebug.o
  CC [M]  net/ipv4/netfilter/iptable_mangle.o
  CC [M]  net/ipv4/netfilter/iptable_nat.o
  CC      fs/configfs/dir.o
  CC      fs/sysfs/dir.o
  AR      sound/pci/ice1712/built-in.a
  CC      block/blk-mq-tag.o
  CC      crypto/hmac.o
  CC      kernel/locking/spinlock.o
  CC      drivers/acpi/acpica/dsfield.o
  CC      lib/zstd/compress/zstd_ldm.o
  CC [M]  sound/pci/hda/patch_hdmi.o
  CC      fs/configfs/symlink.o
  CC [M]  drivers/video/fbdev/core/fbcvt.o
  CC      kernel/locking/osq_lock.o
  AR      fs/kernfs/built-in.a
  CC      mm/backing-dev.o
  CC      crypto/vmac.o
  CC      kernel/locking/qspinlock.o
  CC      drivers/acpi/acpica/dsinit.o
  CC      arch/x86/mm/hugetlbpage.o
  CC      mm/mm_init.o
  AR      arch/x86/events/built-in.a
  CC [M]  drivers/video/fbdev/core/fb_cmdline.o
  CC      io_uring/timeout.o
  CC      drivers/acpi/acpica/dsmethod.o
  AR      sound/atmel/built-in.a
  CC      net/netfilter/utils.o
  AR      sound/hda/built-in.a
  CC      kernel/locking/rtmutex_api.o
  CC      sound/core/timer.o
  CC [M]  sound/hda/hda_bus_type.o
  CC      kernel/locking/spinlock_debug.o
  CC      block/blk-stat.o
  CC      fs/sysfs/symlink.o
  CC [M]  sound/hda/hdac_bus.o
  CC      lib/raid6/recov_avx512.o
  CC      arch/x86/kernel/cpu/cpuid-deps.o
  CC [M]  net/netfilter/ipvs/ip_vs_proto.o
  CC      fs/sysfs/mount.o
  CC      io_uring/sqpoll.o
  CC      crypto/xcbc.o
  CC      drivers/pci/pcie/err.o
  CC      arch/x86/mm/kasan_init_64.o
  CC [M]  drivers/video/fbdev/core/fb_io_fops.o
  CC      drivers/pci/hotplug/pciehp_pci.o
  CC [M]  drivers/video/fbdev/core/fb_backlight.o
  CC      kernel/power/qos.o
  CC      fs/proc/generic.o
  CC      kernel/power/main.o
  CC      net/ethtool/features.o
  CC      kernel/power/console.o
  CC      arch/x86/kernel/kprobes/core.o
  LDS     arch/x86/kernel/vmlinux.lds
  AS      arch/x86/kernel/head_64.o
  CC      arch/x86/kernel/apic/hw_nmi.o
  CC      drivers/acpi/acpica/dsmthdat.o
  CC      arch/x86/kernel/head64.o
  CC      arch/x86/kernel/cpu/umwait.o
  CC [M]  net/ipv4/netfilter/ipt_REJECT.o
  CC      sound/core/hrtimer.o
  CC      arch/x86/kernel/cpu/proc.o
  AR      sound/pci/korg1212/built-in.a
  CC      mm/percpu.o
  CC      arch/x86/mm/numa.o
  CC      net/ethtool/privflags.o
  CC      fs/sysfs/group.o
  CC      block/blk-mq-sysfs.o
  CC [M]  sound/hda/hdac_device.o
  CC      crypto/crypto_null.o
  TABLE   lib/raid6/tables.c
  CC      lib/raid6/int1.o
  CC      fs/configfs/mount.o
  CC [M]  sound/hda/hdac_sysfs.o
  CC      block/blk-mq-cpumap.o
  CC [M]  sound/hda/hdac_regmap.o
  CC      kernel/locking/qrwlock.o
  CC      drivers/pci/pcie/aer_inject.o
  CC      drivers/pci/hotplug/pciehp_hpc.o
  CC      drivers/acpi/acpica/dsobject.o
  CC      drivers/acpi/acpica/dsopcode.o
  CC      arch/x86/kernel/apic/io_apic.o
  CC      io_uring/fdinfo.o
  CC      drivers/pci/hotplug/acpiphp_core.o
  CC [M]  drivers/video/fbdev/core/fbmon.o
  CC      sound/core/seq_device.o
  CC      fs/configfs/item.o
  CC      kernel/printk/printk.o
  CC      kernel/power/process.o
  CC      kernel/irq/irqdesc.o
  CC      drivers/pci/pcie/pme.o
  CC      kernel/rcu/update.o
  MKCAP   arch/x86/kernel/cpu/capflags.c
  CC      fs/proc/array.o
  CC      fs/proc/fd.o
  CC      crypto/md5.o
  CC      kernel/rcu/sync.o
  AR      fs/sysfs/built-in.a
  CC      kernel/rcu/srcutree.o
  CC      mm/slab_common.o
  CC      arch/x86/kernel/cpu/powerflags.o
  CC      arch/x86/kernel/kprobes/opt.o
  CC [M]  net/netfilter/ipvs/ip_vs_pe.o
  CC      arch/x86/kernel/cpu/feat_ctl.o
  CC [M]  net/netfilter/ipvs/ip_vs_proto_tcp.o
  CC      net/ethtool/rings.o
  CC      fs/devpts/inode.o
  CC      lib/raid6/int2.o
  CC      drivers/pci/hotplug/acpiphp_glue.o
  CC      drivers/acpi/acpica/dspkginit.o
  CC [M]  net/netfilter/ipvs/ip_vs_proto_udp.o
  CC      drivers/acpi/acpica/dsutils.o
  CC [M]  net/netfilter/ipvs/ip_vs_nfct.o
  CC      net/ipv4/ip_fragment.o
  CC [M]  net/netfilter/ipvs/ip_vs_rr.o
  CC      arch/x86/kernel/ebda.o
  AR      fs/configfs/built-in.a
  CC      drivers/acpi/acpica/dswexec.o
  CC      fs/ext4/balloc.o
  CC      arch/x86/kernel/platform-quirks.o
  CC      io_uring/tctx.o
  CC [M]  sound/core/control_led.o
  CC      fs/jbd2/transaction.o
  CC [M]  sound/hda/hdac_controller.o
  CC      fs/jbd2/commit.o
  CC      fs/jbd2/recovery.o
  CC      arch/x86/mm/numa_64.o
  CC [M]  sound/pci/hda/hda_eld.o
  CC      arch/x86/kernel/cpu/intel.o
  CC      crypto/sha1_generic.o
  CC      drivers/pci/pcie/dpc.o
  CC      kernel/irq/handle.o
  CC      drivers/acpi/acpica/dswload.o
  CC      net/ethtool/channels.o
  CC      net/ethtool/coalesce.o
  CC      kernel/irq/manage.o
  CC      lib/raid6/int4.o
  CC      fs/proc/proc_tty.o
  CC      kernel/power/suspend.o
  CC      kernel/irq/spurious.o
  CC      arch/x86/kernel/cpu/intel_pconfig.o
  CC      arch/x86/kernel/kprobes/ftrace.o
  CC      drivers/acpi/acpica/dswload2.o
  AR      fs/devpts/built-in.a
  AR      kernel/livepatch/built-in.a
  CC      kernel/dma/mapping.o
  CC      kernel/entry/common.o
  CC      arch/x86/mm/amdtopology.o
  CC      drivers/acpi/acpica/dswscope.o
  CC [M]  drivers/video/fbdev/core/fb_defio.o
  CC      fs/proc/cmdline.o
  CC      fs/proc/consoles.o
  CC      crypto/sha256_generic.o
  CC [M]  sound/core/hwdep.o
  CC      crypto/sha512_generic.o
  CC      io_uring/poll.o
  CC [M]  sound/pci/hda/hda_intel.o
  CC [M]  sound/hda/hdac_stream.o
  CC [M]  arch/x86/kvm/i8259.o
  AR      drivers/pci/hotplug/built-in.a
  CC      kernel/dma/direct.o
  CC      kernel/dma/ops_helpers.o
  CC      kernel/irq/resend.o
  AR      sound/x86/built-in.a
  AR      sound/xen/built-in.a
  AR      sound/virtio/built-in.a
  CC      drivers/acpi/acpica/dswstate.o
  CC      kernel/rcu/tree.o
  CC      sound/sound_core.o
  CC [M]  sound/core/pcm.o
  CC      sound/last.o
  CC      arch/x86/kernel/apic/msi.o
  CC [M]  sound/core/pcm_native.o
  CC      kernel/rcu/rcu_segcblist.o
  CC      crypto/sha3_generic.o
  LD [M]  net/netfilter/ipvs/ip_vs.o
  CC [M]  sound/hda/array.o
  AR      drivers/pci/pcie/built-in.a
  AR      arch/x86/kernel/kprobes/built-in.a
  LD [M]  sound/pci/hda/snd-hda-codec.o
  AR      drivers/pci/controller/dwc/built-in.a
  CC      net/ipv4/ip_forward.o
  AR      drivers/pci/controller/mobiveil/built-in.a
  AR      kernel/locking/built-in.a
  CC      drivers/pci/controller/vmd.o
  LD [M]  sound/pci/hda/snd-hda-codec-generic.o
  CC [M]  net/netfilter/nfnetlink.o
  CC [M]  sound/core/pcm_lib.o
  CC      net/ipv4/ip_options.o
  CC      lib/raid6/int8.o
  CC      arch/x86/mm/srat.o
  CC      kernel/irq/chip.o
  CC      fs/proc/cpuinfo.o
  CC      arch/x86/kernel/cpu/tsx.o
  CC      arch/x86/mm/pkeys.o
  CC      fs/jbd2/checkpoint.o
  CC      lib/raid6/int16.o
  CC [M]  sound/core/pcm_misc.o
  CC      net/xfrm/xfrm_policy.o
  CC      net/ethtool/pause.o
  CC      block/blk-mq-sched.o
  CC      mm/compaction.o
  CC      net/xfrm/xfrm_state.o
  CC      kernel/printk/printk_safe.o
  CC      net/xfrm/xfrm_hash.o
  CC      kernel/power/hibernate.o
  CC      kernel/entry/syscall_user_dispatch.o
  CC [M]  drivers/video/fbdev/core/fb_chrdev.o
  CC      drivers/acpi/acpica/evevent.o
  CC      net/xfrm/xfrm_input.o
  LD [M]  sound/pci/hda/snd-hda-codec-realtek.o
  CC      fs/ext4/bitmap.o
  CC      net/ipv4/ip_output.o
  CC      kernel/dma/dummy.o
  CC [M]  arch/x86/kvm/irq.o
  CC      io_uring/cancel.o
  CC      crypto/blake2b_generic.o
  CC      kernel/printk/printk_ringbuffer.o
  CC      kernel/module/main.o
  CC      kernel/printk/sysctl.o
  CC      arch/x86/kernel/apic/x2apic_phys.o
  CC      fs/proc/devices.o
  CC      drivers/acpi/acpica/evgpe.o
  CC      fs/proc/interrupts.o
  CC      kernel/dma/contiguous.o
  LD [M]  sound/pci/hda/snd-hda-codec-analog.o
  CC [M]  sound/hda/hdmi_chmap.o
  LD [M]  sound/pci/hda/snd-hda-codec-hdmi.o
  CC      lib/dec_and_lock.o
  CC [M]  sound/hda/trace.o
  CC      arch/x86/mm/pti.o
  CC      lib/raid6/int32.o
  CC      drivers/acpi/acpica/evgpeblk.o
  CC      block/ioctl.o
  CC      block/genhd.o
  CC      fs/proc/loadavg.o
  CC      fs/proc/meminfo.o
  CC [M]  drivers/video/fbdev/core/fb_procfs.o
  CC      drivers/acpi/numa/srat.o
  CC      kernel/entry/kvm.o
  CC      lib/decompress.o
  AR      drivers/pci/controller/built-in.a
  CC      io_uring/kbuf.o
  AR      drivers/pci/switch/built-in.a
  CC      drivers/pci/access.o
  CC      fs/ext4/block_validity.o
  CC      fs/ext4/dir.o
  CC      kernel/irq/dummychip.o
  AR      kernel/printk/built-in.a
  CC      net/xfrm/xfrm_output.o
  CC      net/ipv4/ip_sockglue.o
  CC      fs/jbd2/revoke.o
  CC      lib/zstd/compress/zstd_opt.o
  CC      net/ipv4/inet_hashtables.o
  CC      arch/x86/kernel/apic/x2apic_cluster.o
  CC      net/ipv4/inet_timewait_sock.o
  CC [M]  net/netfilter/nf_conntrack_core.o
  CC      net/ethtool/eee.o
  CC      io_uring/rsrc.o
  CC      io_uring/rw.o
  CC      fs/proc/stat.o
  CC [M]  drivers/video/fbdev/core/fbsysfs.o
  LD [M]  sound/pci/hda/snd-hda-intel.o
  AR      sound/pci/mixart/built-in.a
  AR      sound/pci/nm256/built-in.a
  CC      kernel/dma/swiotlb.o
  CC      drivers/acpi/acpica/evgpeinit.o
  AR      sound/pci/oxygen/built-in.a
  CC      crypto/ecb.o
  AR      sound/pci/pcxhr/built-in.a
  AR      sound/pci/riptide/built-in.a
  CC      lib/raid6/tables.o
  AR      sound/pci/rme9652/built-in.a
  CC      kernel/irq/devres.o
  AR      sound/pci/trident/built-in.a
  AR      sound/pci/ymfpci/built-in.a
  AR      sound/pci/vx222/built-in.a
  CC      io_uring/opdef.o
  AR      sound/pci/built-in.a
  CC      io_uring/notif.o
  CC      kernel/power/snapshot.o
  AR      arch/x86/mm/built-in.a
  CC      kernel/power/swap.o
  CC      crypto/cbc.o
  CC      net/xfrm/xfrm_sysctl.o
  CC      drivers/pnp/pnpacpi/core.o
  CC      net/xfrm/xfrm_replay.o
  CC      drivers/pnp/core.o
  CC [M]  sound/hda/hdac_component.o
  AR      drivers/acpi/numa/built-in.a
  CC      arch/x86/kernel/apic/apic_flat_64.o
  AR      kernel/entry/built-in.a
  CC      kernel/power/user.o
  CC      block/ioprio.o
  CC      drivers/acpi/acpica/evgpeutil.o
  CC [M]  arch/x86/kvm/lapic.o
  CC      block/badblocks.o
  CC      drivers/pci/bus.o
  CC      fs/proc/uptime.o
  CC      block/blk-rq-qos.o
  CC      block/disk-events.o
  CC      kernel/irq/autoprobe.o
  CC      fs/ext4/ext4_jbd2.o
  CC      fs/jbd2/journal.o
  CC      fs/ext4/extents.o
  AR      lib/raid6/built-in.a
  CC      fs/ext4/extents_status.o
  CC      drivers/pnp/pnpacpi/rsparser.o
  CC      crypto/pcbc.o
  CC      net/core/dev_addr_lists.o
  CC      net/core/dst.o
  CC      net/ethtool/tsinfo.o
  CC [M]  drivers/video/fbdev/core/fbcon.o
  CC      net/core/netevent.o
  CC      arch/x86/kernel/apic/probe_64.o
  CC      drivers/acpi/acpica/evglock.o
  CC      net/core/neighbour.o
  CC [M]  sound/hda/hdac_i915.o
  CC      drivers/pnp/card.o
  CC      mm/show_mem.o
  CC      fs/proc/util.o
  CC      kernel/irq/irqdomain.o
  CC      mm/shmem_quota.o
  CC      kernel/dma/remap.o
  CC      io_uring/io-wq.o
  CC      arch/x86/kernel/process_64.o
  CC      kernel/irq/proc.o
  CC      crypto/cts.o
  CC      crypto/lrw.o
  CC      crypto/xts.o
  CC      drivers/pci/probe.o
  CC [M]  sound/core/pcm_memory.o
  AR      arch/x86/kernel/apic/built-in.a
  CC      block/blk-ia-ranges.o
  CC      kernel/irq/migration.o
  CC      drivers/acpi/acpica/evhandler.o
  CC      drivers/pci/host-bridge.o
  CC      kernel/module/strict_rwx.o
  CC      block/early-lookup.o
  CC      fs/proc/version.o
  CC      fs/proc/softirqs.o
  CC      drivers/pci/remove.o
  CC      net/core/rtnetlink.o
  CC      drivers/pci/pci.o
  AR      drivers/pnp/pnpacpi/built-in.a
  CC      fs/proc/namespaces.o
  CC      net/core/utils.o
  CC [M]  sound/hda/intel-dsp-config.o
  CC      net/ethtool/cabletest.o
  CC      mm/interval_tree.o
  CC      drivers/pnp/driver.o
  AR      kernel/dma/built-in.a
  CC      kernel/power/poweroff.o
  CC      mm/list_lru.o
  CC      kernel/time/time.o
  CC      mm/workingset.o
  CC      drivers/acpi/acpica/evmisc.o
  CC      kernel/time/timer.o
  CC      fs/proc/self.o
  CC      drivers/pnp/resource.o
  CC      net/ipv4/inet_connection_sock.o
  CC      crypto/ctr.o
  CC      kernel/futex/core.o
  CC [M]  sound/core/memalloc.o
  CC      kernel/futex/syscalls.o
  CC [M]  sound/core/pcm_timer.o
  CC      arch/x86/kernel/cpu/intel_epb.o
  CC      arch/x86/kernel/cpu/amd.o
  CC      mm/debug.o
  CC [M]  sound/hda/intel-nhlt.o
  AR      kernel/power/built-in.a
  CC      mm/gup.o
  CC      fs/proc/thread_self.o
  CC      arch/x86/kernel/cpu/hygon.o
  CC      kernel/module/kmod.o
  CC      net/core/link_watch.o
  CC      net/xfrm/xfrm_device.o
  CC      arch/x86/kernel/signal.o
  CC      block/bsg.o
  CC      kernel/irq/cpuhotplug.o
  CC      drivers/pci/pci-driver.o
  CC      drivers/acpi/acpica/evregion.o
  CC      fs/proc/proc_sysctl.o
  LD [M]  sound/core/snd-ctl-led.o
  LD [M]  sound/core/snd-hwdep.o
  CC [M]  net/netfilter/nf_conntrack_standalone.o
  CC      net/core/filter.o
  CC      drivers/pnp/manager.o
  CC      kernel/futex/pi.o
  CC      fs/ramfs/inode.o
  CC      crypto/gcm.o
  CC      fs/ramfs/file-mmu.o
  CC      block/bsg-lib.o
  AR      sound/core/built-in.a
  CC [M]  drivers/video/fbdev/core/bitblit.o
  CC [M]  drivers/video/fbdev/core/softcursor.o
  CC [M]  sound/hda/intel-sdw-acpi.o
  CC [M]  drivers/video/fbdev/core/tileblit.o
  CC      fs/hugetlbfs/inode.o
  CC      mm/mmap_lock.o
  AR      io_uring/built-in.a
  CC [M]  drivers/video/fbdev/core/fb_logo.o
  CC [M]  drivers/video/fbdev/core/cfbfillrect.o
  CC      net/xfrm/xfrm_algo.o
  CC      net/ethtool/tunnels.o
  CC      kernel/module/tree_lookup.o
  CC      kernel/cgroup/cgroup.o
  CC      drivers/acpi/acpica/evrgnini.o
  CC      kernel/cgroup/rstat.o
  CC      kernel/irq/pm.o
  AR      kernel/rcu/built-in.a
  CC      kernel/irq/msi.o
  CC      mm/highmem.o
  CC      arch/x86/kernel/signal_64.o
  CC      block/blk-cgroup.o
  LD [M]  sound/core/snd-pcm.o
  CC      drivers/pnp/support.o
  CC      net/xfrm/xfrm_user.o
  CC      kernel/trace/trace_clock.o
  CC      kernel/module/debug_kmemleak.o
  CC      kernel/trace/ftrace.o
  CC [M]  arch/x86/kvm/i8254.o
  CC      arch/x86/kernel/cpu/centaur.o
  CC      drivers/pci/search.o
  CC      kernel/futex/requeue.o
  CC      kernel/bpf/core.o
  CC      mm/memory.o
  CC [M]  arch/x86/kvm/ioapic.o
  LD [M]  sound/hda/snd-hda-core.o
  AR      fs/ramfs/built-in.a
  LD [M]  sound/hda/snd-intel-dspcfg.o
  CC      fs/fat/cache.o
  LD [M]  sound/hda/snd-intel-sdw-acpi.o
  AR      sound/built-in.a
  AR      fs/jbd2/built-in.a
  CC      net/core/sock_diag.o
  CC      kernel/cgroup/namespace.o
  CC      drivers/acpi/acpica/evsci.o
  CC      drivers/pnp/interface.o
  CC [M]  drivers/video/fbdev/core/cfbcopyarea.o
  CC      kernel/trace/ring_buffer.o
  CC      drivers/acpi/acpica/evxface.o
  CC      lib/zstd/zstd_decompress_module.o
  CC      drivers/pci/pci-sysfs.o
  CC      lib/zstd/decompress/huf_decompress.o
  CC      mm/mincore.o
  CC      kernel/module/kallsyms.o
  CC      crypto/pcrypt.o
  CC [M]  drivers/video/fbdev/core/cfbimgblt.o
  CC      drivers/pci/rom.o
  CC      drivers/pci/setup-res.o
  CC      drivers/acpi/acpica/evxfevnt.o
  CC      drivers/pci/irq.o
  CC      arch/x86/kernel/cpu/zhaoxin.o
  CC [M]  net/netfilter/nf_conntrack_expect.o
  CC      kernel/futex/waitwake.o
  CC      arch/x86/kernel/cpu/perfctr-watchdog.o
  CC      drivers/pci/vpd.o
  CC      drivers/pnp/quirks.o
  CC      lib/zstd/decompress/zstd_ddict.o
  CC [M]  drivers/video/fbdev/core/sysfillrect.o
  CC      fs/proc/proc_net.o
  CC      block/blk-cgroup-rwstat.o
  CC      kernel/irq/affinity.o
  CC      kernel/time/hrtimer.o
  CC      kernel/time/timekeeping.o
  CC      net/ethtool/fec.o
  CC      kernel/fork.o
  CC      kernel/events/core.o
  CC      fs/fat/dir.o
  CC      kernel/events/ring_buffer.o
  CC      kernel/exec_domain.o
  AR      fs/hugetlbfs/built-in.a
  CC      drivers/acpi/acpica/evxfgpe.o
  CC      kernel/time/ntp.o
  CC      net/ipv4/tcp.o
  CC      kernel/events/callchain.o
  CC      arch/x86/kernel/traps.o
  CC      crypto/cryptd.o
  CC      drivers/pci/setup-bus.o
  CC      drivers/pci/vc.o
  CC      crypto/des_generic.o
  CC      kernel/panic.o
  AR      kernel/futex/built-in.a
  CC      fs/fat/fatent.o
  CC [M]  arch/x86/kvm/irq_comm.o
  CC      kernel/cgroup/cgroup-v1.o
  CC [M]  drivers/video/fbdev/core/syscopyarea.o
  CC      kernel/irq/matrix.o
  CC      arch/x86/kernel/cpu/vmware.o
  CC      kernel/module/procfs.o
  CC [M]  drivers/video/fbdev/core/sysimgblt.o
  CC      kernel/events/hw_breakpoint.o
  CC      mm/mlock.o
  CC      kernel/time/clocksource.o
  CC      drivers/pnp/system.o
  CC      fs/ext4/file.o
  CC      crypto/aes_generic.o
  CC      drivers/acpi/acpica/evxfregn.o
  CC      drivers/acpi/apei/apei-base.o
  CC      fs/proc/kcore.o
  CC      drivers/acpi/apei/hest.o
  AR      drivers/acpi/pmic/built-in.a
  CC      crypto/crc32c_generic.o
  CC      drivers/pci/mmap.o
  CC      drivers/acpi/dptf/int340x_thermal.o
  CC      block/blk-throttle.o
  CC      kernel/time/jiffies.o
  CC      kernel/module/sysfs.o
  CC      net/ethtool/eeprom.o
  CC      drivers/pci/setup-irq.o
  AR      drivers/pnp/built-in.a
  CC      fs/ext4/fsmap.o
  CC      arch/x86/kernel/cpu/hypervisor.o
  CC      crypto/crct10dif_common.o
  CC      drivers/acpi/acpica/exconcat.o
  CC [M]  net/netfilter/nf_conntrack_helper.o
  CC [M]  drivers/video/fbdev/core/fb_sys_fops.o
  CC      kernel/events/uprobes.o
  CC [M]  net/netfilter/nf_conntrack_proto.o
  CC [M]  arch/x86/kvm/cpuid.o
  CC      drivers/acpi/apei/erst.o
  AR      drivers/acpi/dptf/built-in.a
  CC      kernel/time/timer_list.o
  CC      mm/mmap.o
  CC      arch/x86/kernel/cpu/mshyperv.o
  CC [M]  arch/x86/kvm/pmu.o
  CC [M]  arch/x86/kvm/mtrr.o
  CC      drivers/acpi/apei/bert.o
  CC      mm/mmu_gather.o
  CC [M]  net/netfilter/nf_conntrack_proto_generic.o
  CC      drivers/acpi/tables.o
  CC [M]  arch/x86/kvm/hyperv.o
  CC      drivers/acpi/blacklist.o
  CC      fs/ext4/fsync.o
  CC      net/ethtool/stats.o
  AR      net/xfrm/built-in.a
  CC      lib/zstd/decompress/zstd_decompress.o
  CC      fs/fat/file.o
  CC      net/unix/af_unix.o
  CC      drivers/acpi/acpica/exconfig.o
  CC      drivers/acpi/apei/ghes.o
  AR      kernel/module/built-in.a
  CC      fs/fat/inode.o
  CC      kernel/cpu.o
  AR      kernel/irq/built-in.a
  CC      fs/proc/kmsg.o
  CC      drivers/acpi/osi.o
  CC      crypto/crct10dif_generic.o
  CC      net/core/dev_ioctl.o
  AR      drivers/amba/built-in.a
  CC      crypto/authenc.o
  AR      kernel/bpf/built-in.a
  CC      fs/nfs/client.o
  CC      drivers/pci/proc.o
  AR      drivers/clk/actions/built-in.a
  AR      drivers/clk/analogbits/built-in.a
  AR      drivers/clk/bcm/built-in.a
  LD [M]  drivers/video/fbdev/core/fb.o
  AR      drivers/clk/imgtec/built-in.a
  AR      drivers/clk/imx/built-in.a
  CC      kernel/exit.o
  AR      drivers/video/fbdev/core/built-in.a
  AR      drivers/clk/ingenic/built-in.a
  CC      drivers/acpi/osl.o
  AR      drivers/video/fbdev/built-in.a
  AR      drivers/clk/mediatek/built-in.a
  CC      fs/fat/misc.o
  AR      drivers/video/built-in.a
  CC      kernel/time/timeconv.o
  AR      drivers/clk/microchip/built-in.a
  CC      fs/fat/nfs.o
  CC      net/core/tso.o
  AR      drivers/clk/mstar/built-in.a
  CC      kernel/softirq.o
  AR      drivers/clk/mvebu/built-in.a
  AR      drivers/clk/ralink/built-in.a
  AR      drivers/clk/renesas/built-in.a
  CC      drivers/acpi/acpica/exconvrt.o
  AR      drivers/clk/socfpga/built-in.a
  AR      drivers/clk/sprd/built-in.a
  AR      drivers/clk/starfive/built-in.a
  AR      drivers/clk/sunxi-ng/built-in.a
  CC      arch/x86/kernel/cpu/capflags.o
  AR      drivers/clk/ti/built-in.a
  AR      drivers/clk/versatile/built-in.a
  CC      mm/mprotect.o
  CC      drivers/clk/x86/clk-lpss-atom.o
  CC      mm/mremap.o
  CC      fs/proc/page.o
  AR      arch/x86/kernel/cpu/built-in.a
  CC      arch/x86/kernel/idt.o
  CC      drivers/clk/x86/clk-pmc-atom.o
  CC      fs/exportfs/expfs.o
  CC      block/mq-deadline.o
  CC      drivers/acpi/utils.o
  CC      kernel/resource.o
  CC      kernel/sysctl.o
  CC      drivers/acpi/acpica/excreate.o
  CC      kernel/time/timecounter.o
  CC      kernel/trace/trace.o
  CC      kernel/time/alarmtimer.o
  AR      drivers/clk/xilinx/built-in.a
  CC      fs/ext4/hash.o
  CC      drivers/dma/dw/core.o
  CC [M]  net/netfilter/nf_conntrack_proto_tcp.o
  CC      drivers/dma/dw/dw.o
  CC      lib/decompress_bunzip2.o
  CC [M]  net/netfilter/nf_conntrack_proto_udp.o
  CC      fs/ext4/ialloc.o
  CC      drivers/acpi/acpica/exdebug.o
  CC      net/ethtool/phc_vclocks.o
  CC      drivers/dma/hsu/hsu.o
  CC      drivers/pci/slot.o
  CC      net/unix/garbage.o
  CC      fs/fat/namei_vfat.o
  CC      crypto/authencesn.o
  CC      lib/decompress_inflate.o
  AR      drivers/acpi/apei/built-in.a
  CC      fs/fat/namei_msdos.o
  AR      drivers/clk/x86/built-in.a
  CC      drivers/clk/clk-devres.o
  CC      drivers/acpi/acpica/exdump.o
  CC      drivers/acpi/acpica/exfield.o
  CC      arch/x86/kernel/irq.o
  AR      fs/exportfs/built-in.a
  CC      drivers/dma/dw/idma32.o
  CC      net/core/sock_reuseport.o
  CC      drivers/pci/pci-acpi.o
  CC      crypto/lzo.o
  CC      drivers/acpi/acpica/exfldio.o
  AR      fs/proc/built-in.a
  CC      net/unix/sysctl_net_unix.o
  CC      lib/decompress_unlz4.o
  CC      arch/x86/kernel/irq_64.o
  CC      fs/nfs/dir.o
  CC      fs/ext4/indirect.o
  CC      drivers/clk/clk-bulk.o
  CC [M]  arch/x86/kvm/debugfs.o
  CC      drivers/acpi/acpica/exmisc.o
  CC      net/core/fib_notifier.o
  CC      lib/decompress_unlzma.o
  CC      kernel/capability.o
  CC      drivers/dma/dw/acpi.o
  CC      crypto/lzo-rle.o
  CC      arch/x86/kernel/dumpstack_64.o
  CC      kernel/ptrace.o
  CC      net/ethtool/mm.o
  CC      kernel/time/posix-timers.o
  AR      drivers/dma/hsu/built-in.a
  CC      block/kyber-iosched.o
  AR      drivers/soc/apple/built-in.a
  CC      kernel/cgroup/freezer.o
  AR      drivers/soc/aspeed/built-in.a
  AR      drivers/soc/bcm/built-in.a
  CC      drivers/pci/quirks.o
  CC      fs/nfs/file.o
  AR      drivers/pmdomain/actions/built-in.a
  CC      drivers/clk/clkdev.o
  AR      drivers/soc/fsl/built-in.a
  AR      drivers/pmdomain/amlogic/built-in.a
  CC      fs/ext4/inline.o
  AR      drivers/soc/fujitsu/built-in.a
  AR      drivers/pmdomain/apple/built-in.a
  CC      drivers/virtio/virtio.o
  CC      net/ipv4/tcp_input.o
  AR      drivers/pmdomain/bcm/built-in.a
  AR      drivers/soc/hisilicon/built-in.a
  CC      net/ipv4/tcp_output.o
  AR      drivers/soc/imx/built-in.a
  AR      drivers/pmdomain/imx/built-in.a
  AR      drivers/pmdomain/mediatek/built-in.a
  AR      drivers/soc/ixp4xx/built-in.a
  AR      drivers/soc/loongson/built-in.a
  CC      kernel/cgroup/legacy_freezer.o
  AR      drivers/pmdomain/qcom/built-in.a
  AR      drivers/soc/mediatek/built-in.a
  CC      fs/nfs/getroot.o
  CC      arch/x86/kernel/time.o
  AR      drivers/pmdomain/renesas/built-in.a
  AR      drivers/soc/microchip/built-in.a
  CC      lib/decompress_unlzo.o
  AR      drivers/pmdomain/rockchip/built-in.a
  AR      drivers/soc/nuvoton/built-in.a
  CC      drivers/pci/ats.o
  AR      drivers/pmdomain/samsung/built-in.a
  CC      kernel/cgroup/pids.o
  AR      drivers/soc/pxa/built-in.a
  CC      net/core/xdp.o
  AR      drivers/pmdomain/st/built-in.a
  CC      drivers/acpi/acpica/exmutex.o
  AR      drivers/soc/amlogic/built-in.a
  CC      drivers/acpi/reboot.o
  AR      drivers/pmdomain/starfive/built-in.a
  AR      drivers/soc/qcom/built-in.a
  AR      drivers/pmdomain/sunxi/built-in.a
  AR      fs/fat/built-in.a
  AR      drivers/soc/renesas/built-in.a
  AR      drivers/pmdomain/tegra/built-in.a
  AR      drivers/pmdomain/ti/built-in.a
  CC      mm/msync.o
  AR      drivers/soc/rockchip/built-in.a
  AR      drivers/pmdomain/xilinx/built-in.a
  AR      drivers/soc/sifive/built-in.a
  AR      drivers/soc/sunxi/built-in.a
  CC      drivers/tty/vt/vt_ioctl.o
  AR      drivers/pmdomain/built-in.a
  AR      drivers/soc/ti/built-in.a
  CC      drivers/tty/hvc/hvc_console.o
  AR      drivers/soc/xilinx/built-in.a
  AR      drivers/soc/built-in.a
  CC      drivers/tty/serial/8250/8250_core.o
  AR      drivers/tty/ipwireless/built-in.a
  CC      drivers/tty/serial/8250/8250_pnp.o
  CC      net/unix/diag.o
  CC      lib/zstd/decompress/zstd_decompress_block.o
  CC      lib/zstd/zstd_common_module.o
  CC      drivers/dma/dw/pci.o
  CC      crypto/lz4.o
  CC      kernel/user.o
  CC      drivers/tty/serial/8250/8250_port.o
  CC      drivers/tty/vt/vc_screen.o
  CC [M]  arch/x86/kvm/mmu/mmu.o
  CC [M]  net/netfilter/nf_conntrack_proto_icmp.o
  CC [M]  arch/x86/kvm/mmu/page_track.o
  CC      drivers/acpi/acpica/exnames.o
  CC      drivers/clk/clk.o
  CC      drivers/acpi/nvs.o
  CC [M]  arch/x86/kvm/mmu/spte.o
  CC      drivers/tty/serial/8250/8250_dma.o
  CC      drivers/acpi/acpica/exoparg1.o
  CC [M]  net/netfilter/nf_conntrack_extend.o
  CC      net/core/flow_offload.o
  CC      lib/zstd/common/debug.o
  CC      drivers/acpi/wakeup.o
  CC      drivers/virtio/virtio_ring.o
  CC      drivers/virtio/virtio_anchor.o
  CC      drivers/acpi/sleep.o
  CC      net/ethtool/module.o
  CC      crypto/lz4hc.o
  CC      drivers/acpi/device_sysfs.o
  CC [M]  net/netfilter/nf_conntrack_acct.o
  CC      kernel/signal.o
  CC      kernel/cgroup/cpuset.o
  CC      mm/page_vma_mapped.o
  CC      fs/ext4/inode.o
  CC      arch/x86/kernel/ioport.o
  CC      lib/decompress_unxz.o
  AR      drivers/dma/dw/built-in.a
  CC      crypto/xxhash_generic.o
  AR      drivers/dma/idxd/built-in.a
  AR      drivers/dma/mediatek/built-in.a
  CC      crypto/rng.o
  AR      drivers/dma/qcom/built-in.a
  CC      fs/nfs/inode.o
  AR      drivers/dma/ti/built-in.a
  AR      drivers/dma/xilinx/built-in.a
  CC [M]  drivers/dma/ioat/init.o
  CC      drivers/acpi/acpica/exoparg2.o
  AR      drivers/tty/hvc/built-in.a
  CC      crypto/drbg.o
  AR      net/ipv6/netfilter/built-in.a
  CC      crypto/jitterentropy.o
  CC [M]  net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
  CC      drivers/acpi/device_pm.o
  CC      mm/pagewalk.o
  CC      drivers/tty/vt/selection.o
  CC      drivers/tty/vt/keyboard.o
  CC      drivers/tty/vt/consolemap.o
  CC      crypto/jitterentropy-kcapi.o
  CC [M]  drivers/dma/ioat/dma.o
  CC      net/unix/scm.o
  CC      kernel/time/posix-cpu-timers.o
  CC      drivers/tty/tty_io.o
  HOSTCC  drivers/tty/vt/conmakehash
  CC      block/bfq-iosched.o
  CC [M]  arch/x86/kvm/mmu/tdp_iter.o
  CC      drivers/acpi/acpica/exoparg3.o
  CC      kernel/sys.o
  CC      net/ipv4/tcp_timer.o
  CC      kernel/time/posix-clock.o
  CC      kernel/time/itimer.o
  CC [M]  net/netfilter/nf_conntrack_seqadj.o
  CC      fs/ext4/ioctl.o
  CC      drivers/acpi/acpica/exoparg6.o
  CC      net/ipv4/tcp_ipv4.o
  CC      arch/x86/kernel/dumpstack.o
  CC      arch/x86/kernel/nmi.o
  CC      net/ethtool/pse-pd.o
  CC      drivers/tty/n_tty.o
  CC      drivers/clk/clk-divider.o
  CC      drivers/tty/serial/8250/8250_dwlib.o
  CC      drivers/acpi/proc.o
  CC      net/ethtool/plca.o
  CC      mm/pgtable-generic.o
  CC      net/core/gro.o
  CC      drivers/clk/clk-fixed-factor.o
  CC      drivers/tty/vt/vt.o
  CC      drivers/pci/iov.o
  CC      drivers/acpi/acpica/exprep.o
  COPY    drivers/tty/vt/defkeymap.c
  CONMK   drivers/tty/vt/consolemap_deftbl.c
  CC      drivers/tty/vt/defkeymap.o
  CC      drivers/acpi/bus.o
  AR      net/unix/built-in.a
  CC      drivers/tty/serial/8250/8250_pcilib.o
  CC      net/packet/af_packet.o
  CC      drivers/tty/serial/8250/8250_pci.o
  CC      kernel/time/clockevents.o
  CC      net/packet/diag.o
  CC [M]  net/ipv6/netfilter/nf_conntrack_reasm.o
  CC      drivers/virtio/virtio_pci_modern_dev.o
  CC      kernel/umh.o
  CC      lib/decompress_unzstd.o
  CC      drivers/acpi/acpica/exregion.o
  CC      drivers/virtio/virtio_pci_legacy_dev.o
  CC [M]  drivers/dma/ioat/prep.o
  CC      kernel/time/tick-common.o
  CC      drivers/tty/vt/consolemap_deftbl.o
  CC      drivers/virtio/virtio_pci_modern.o
  CC      kernel/time/tick-broadcast.o
  CC      drivers/tty/serial/8250/8250_exar.o
  CC      drivers/acpi/glue.o
  CC      kernel/trace/trace_output.o
  CC      kernel/time/tick-broadcast-hrtimer.o
  CC      drivers/clk/clk-fixed-rate.o
  CC      crypto/ghash-generic.o
  CC      arch/x86/kernel/ldt.o
  CC      kernel/time/tick-oneshot.o
  CC      mm/rmap.o
  CC [M]  net/netfilter/nf_conntrack_proto_icmpv6.o
  AR      net/ethtool/built-in.a
  CC      net/key/af_key.o
  CC [M]  net/netfilter/nf_conntrack_proto_dccp.o
  CC      drivers/acpi/acpica/exresnte.o
  CC      drivers/tty/serial/8250/8250_early.o
  CC      crypto/af_alg.o
  CC      drivers/acpi/scan.o
  CC      kernel/time/tick-sched.o
  CC      kernel/workqueue.o
  CC      drivers/tty/serial/serial_core.o
  CC      drivers/clk/clk-gate.o
  CC      lib/dump_stack.o
  CC      mm/vmalloc.o
  CC      drivers/tty/tty_ioctl.o
  CC      drivers/acpi/acpica/exresolv.o
  CC      drivers/pci/pci-label.o
  AR      kernel/events/built-in.a
  CC      net/core/netdev-genl.o
  AR      net/bridge/netfilter/built-in.a
  CC      net/bridge/br.o
  CC      drivers/acpi/resource.o
  CC      net/bridge/br_device.o
  CC      drivers/acpi/acpi_processor.o
  CC      lib/zstd/common/entropy_common.o
  CC      drivers/virtio/virtio_pci_common.o
  CC      mm/page_alloc.o
  CC      drivers/acpi/acpica/exresop.o
  CC      drivers/clk/clk-multiplier.o
  CC      kernel/time/vsyscall.o
  CC [M]  net/netfilter/nf_conntrack_proto_sctp.o
  CC      kernel/time/timekeeping_debug.o
  CC      drivers/virtio/virtio_pci_legacy.o
  CC      fs/nfs/super.o
  CC      lib/zstd/common/error_private.o
  AR      net/dsa/built-in.a
  CC      drivers/tty/serial/8250/8250_dw.o
  CC [M]  drivers/dma/ioat/dca.o
  CC      lib/zstd/common/fse_decompress.o
  AR      kernel/cgroup/built-in.a
  AS      arch/x86/kernel/ibt_selftest.o
  CC [M]  net/sunrpc/auth_gss/auth_gss.o
  CC      net/8021q/vlan_core.o
  CC      drivers/clk/clk-mux.o
  CC      drivers/clk/clk-composite.o
  CC      arch/x86/kernel/setup.o
  CC [M]  net/8021q/vlan.o
  CC [M]  net/sunrpc/auth_gss/gss_generic_token.o
  LD [M]  net/ipv6/netfilter/nf_defrag_ipv6.o
  CC      net/ipv6/af_inet6.o
  CC      net/core/netdev-genl-gen.o
  CC [M]  drivers/virtio/virtio_mem.o
  CC      drivers/acpi/acpica/exserial.o
  CC      drivers/pci/pci-stub.o
  CC      net/sunrpc/clnt.o
  CC      drivers/clk/clk-fractional-divider.o
  CC      kernel/trace/trace_seq.o
  CC [M]  drivers/dma/ioat/sysfs.o
  CC      drivers/acpi/processor_core.o
  CC [M]  net/netfilter/nf_conntrack_netlink.o
  CC [M]  net/8021q/vlan_dev.o
  CC      net/core/gso.o
  CC [M]  net/sunrpc/auth_gss/gss_mech_switch.o
  CC      kernel/time/namespace.o
  CC      block/bfq-wf2q.o
  CC      drivers/tty/serial/8250/8250_lpss.o
  CC      drivers/tty/serial/8250/8250_mid.o
  CC      drivers/char/hw_random/core.o
  CC      drivers/tty/serial/8250/8250_pericom.o
  CC      drivers/char/hw_random/intel-rng.o
  CC      drivers/char/agp/backend.o
  CC      drivers/acpi/acpica/exstore.o
  CC      drivers/char/agp/generic.o
  CC      lib/zstd/common/zstd_common.o
  CC      drivers/acpi/processor_pdc.o
  AR      drivers/iommu/amd/built-in.a
  CC      drivers/iommu/intel/dmar.o
  CC      drivers/pci/vgaarb.o
  CC      block/bfq-cgroup.o
  CC      net/ipv4/tcp_minisocks.o
  CC      net/ipv4/tcp_cong.o
  CC      block/blk-mq-pci.o
  AR      lib/zstd/built-in.a
  CC      lib/earlycpio.o
  CC      kernel/trace/trace_stat.o
  CC      net/bridge/br_fdb.o
  CC      drivers/clk/clk-gpio.o
  AR      drivers/tty/vt/built-in.a
  CC      crypto/algif_hash.o
  CC      net/ipv4/tcp_metrics.o
  LD [M]  drivers/dma/ioat/ioatdma.o
  CC      lib/extable.o
  CC      net/dcb/dcbnl.o
  CC      drivers/dma/dmaengine.o
  CC      drivers/acpi/ec.o
  CC      arch/x86/kernel/x86_init.o
  CC      lib/flex_proportions.o
  CC      drivers/acpi/acpica/exstoren.o
  CC [M]  net/8021q/vlan_netlink.o
  AR      kernel/time/built-in.a
  CC      drivers/iommu/intel/iommu.o
  CC [M]  net/8021q/vlanproc.o
  CC      drivers/char/agp/isoch.o
  CC      net/ipv4/tcp_fastopen.o
  CC      drivers/char/tpm/tpm-chip.o
  CC      fs/nfs/io.o
  AR      drivers/tty/serial/8250/built-in.a
  CC      drivers/char/agp/intel-agp.o
  CC      lib/idr.o
  CC      net/ipv4/tcp_rate.o
  AR      drivers/char/hw_random/built-in.a
  CC      drivers/char/mem.o
  CC [M]  arch/x86/kvm/mmu/tdp_mmu.o
  CC      net/core/net-sysfs.o
  CC      drivers/tty/serial/serial_base_bus.o
  AR      drivers/clk/built-in.a
  CC      fs/lockd/clntlock.o
  CC      fs/nls/nls_base.o
  CC      lib/irq_regs.o
  CC      fs/nls/nls_cp437.o
  CC [M]  net/sunrpc/auth_gss/svcauth_gss.o
  CC      drivers/acpi/acpica/exstorob.o
  CC      fs/ext4/mballoc.o
  CC      drivers/tty/serial/serial_ctrl.o
  CC      kernel/trace/trace_printk.o
  CC [M]  arch/x86/kvm/smm.o
  AR      net/key/built-in.a
  CC [M]  net/sunrpc/auth_gss/gss_rpc_upcall.o
  CC      mm/init-mm.o
  CC      arch/x86/kernel/i8259.o
  CC      net/ipv6/anycast.o
  CC      block/blk-mq-virtio.o
  CC      drivers/char/agp/intel-gtt.o
  AR      drivers/pci/built-in.a
  CC      net/ipv6/ip6_output.o
  CC      fs/nls/nls_ascii.o
  CC      lib/is_single_threaded.o
  AR      drivers/virtio/built-in.a
  CC      drivers/acpi/acpica/exsystem.o
  CC      crypto/algif_skcipher.o
  AR      net/packet/built-in.a
  AR      drivers/gpu/host1x/built-in.a
  CC      crypto/xor.o
  CC      fs/nls/nls_iso8859-1.o
  AR      drivers/gpu/drm/tests/built-in.a
  CC      net/ipv4/tcp_recovery.o
  CC      drivers/char/tpm/tpm-dev-common.o
  CC [M]  drivers/gpu/drm/tests/drm_kunit_helpers.o
  CC      net/ipv4/tcp_ulp.o
  CC [M]  drivers/gpu/drm/tests/drm_buddy_test.o
  AR      net/8021q/built-in.a
  LD [M]  net/8021q/8021q.o
  CC [M]  arch/x86/kvm/vmx/vmx.o
  CC      net/ipv4/tcp_offload.o
  CC      lib/klist.o
  CC      net/ipv6/ip6_input.o
  CC      fs/nfs/direct.o
  CC      drivers/acpi/acpica/extrace.o
  CC      mm/memblock.o
  CC      mm/memory_hotplug.o
  CC      kernel/pid.o
  CC      drivers/tty/serial/serial_port.o
  CC      drivers/dma/virt-dma.o
  CC      arch/x86/kernel/irqinit.o
  CC      kernel/trace/pid_list.o
  CC      fs/nls/nls_utf8.o
  CC [M]  fs/nls/nls_ucs2_utils.o
  CC      fs/lockd/clntproc.o
  CC      block/blk-mq-debugfs.o
  CC      drivers/tty/serial/earlycon.o
  CC      drivers/acpi/dock.o
  AR      fs/unicode/built-in.a
  CC      fs/ext4/migrate.o
  AR      drivers/gpu/vga/built-in.a
  CC      fs/ext4/mmp.o
  CC      net/ipv4/tcp_plb.o
  CC      lib/kobject.o
  CC      fs/ntfs/aops.o
  CC      drivers/char/tpm/tpm-dev.o
  CC      fs/ntfs/attrib.o
  CC      drivers/acpi/acpica/exutils.o
  CC [M]  net/sunrpc/auth_gss/gss_rpc_xdr.o
  CC      crypto/hash_info.o
  CC      drivers/char/tpm/tpm-interface.o
  CC [M]  net/netfilter/nf_nat_core.o
  CC [M]  arch/x86/kvm/kvm-asm-offsets.s
  CC      crypto/simd.o
  CC      fs/ext4/move_extent.o
  CC [M]  arch/x86/kvm/vmx/pmu_intel.o
  CC      net/dcb/dcbevent.o
  AR      drivers/char/agp/built-in.a
  AR      fs/nls/built-in.a
  CC      fs/ext4/namei.o
  CC      net/bridge/br_forward.o
  CC [M]  net/netfilter/nf_nat_proto.o
  AR      fs/hostfs/built-in.a
  CC      fs/debugfs/inode.o
  CC [M]  crypto/md4.o
  CC      net/ipv6/addrconf.o
  CC      drivers/dma/acpi-dma.o
  CC      arch/x86/kernel/jump_label.o
  CC [M]  drivers/gpu/drm/tests/drm_cmdline_parser_test.o
  CC [M]  drivers/gpu/drm/tests/drm_connector_test.o
  CC      drivers/acpi/acpica/hwacpi.o
  CC      drivers/tty/serial/serial_mctrl_gpio.o
  CC [M]  arch/x86/kvm/vmx/vmcs12.o
  CC      fs/debugfs/file.o
  CC      kernel/trace/trace_sched_switch.o
  CC      net/core/page_pool.o
  CC      kernel/trace/trace_functions.o
  CC      drivers/char/tpm/tpm1-cmd.o
  CC      block/blk-pm.o
  CC      lib/kobject_uevent.o
  CC [M]  crypto/ccm.o
  CC      fs/ext4/page-io.o
  CC      net/sunrpc/xprt.o
  CC      fs/ext4/readpage.o
  CC      drivers/acpi/acpica/hwesleep.o
  CC [M]  arch/x86/kvm/vmx/hyperv.o
  CC      kernel/trace/trace_preemptirq.o
  CC      drivers/char/tpm/tpm2-cmd.o
  AR      net/dcb/built-in.a
  CC [M]  crypto/arc4.o
  CC      net/sunrpc/socklib.o
  CC      fs/ext4/resize.o
  CC [M]  crypto/ecc.o
  CC      fs/tracefs/inode.o
  CC      net/ipv4/datagram.o
  CC      fs/tracefs/event_inode.o
  CC      fs/ntfs/collate.o
  CC      arch/x86/kernel/irq_work.o
  CC      net/l3mdev/l3mdev.o
  CC      fs/lockd/clntxdr.o
  CC [M]  arch/x86/kvm/vmx/nested.o
  CC [M]  arch/x86/kvm/vmx/posted_intr.o
  AR      drivers/dma/built-in.a
  CC      fs/ext4/super.o
  CC [M]  net/sunrpc/auth_gss/trace.o
  CC      fs/ntfs/compress.o
  CC      fs/btrfs/super.o
  CC      mm/madvise.o
  AR      drivers/tty/serial/built-in.a
  CC      lib/logic_pio.o
  CC      drivers/tty/tty_ldisc.o
  CC      net/core/net-procfs.o
  CC      drivers/acpi/acpica/hwgpe.o
  CC      block/holder.o
  CC      fs/ext4/symlink.o
  CC      fs/nfs/pagelist.o
  CC [M]  drivers/gpu/drm/tests/drm_damage_helper_test.o
  CC      kernel/trace/trace_nop.o
  LD [M]  arch/x86/kvm/kvm.o
  AR      fs/debugfs/built-in.a
  CC      mm/page_io.o
  CC      drivers/iommu/intel/pasid.o
  CC      net/handshake/alert.o
  CC      net/bridge/br_if.o
  CC      net/handshake/genl.o
  CC      drivers/acpi/acpica/hwregs.o
  CC      kernel/trace/trace_functions_graph.o
  CC      fs/ext4/sysfs.o
  CC      fs/ext4/xattr.o
  CC [M]  drivers/gpu/drm/tests/drm_dp_mst_helper_test.o
  UPD     arch/x86/kvm/kvm-asm-offsets.h
  CC [M]  crypto/essiv.o
  CC      net/handshake/netlink.o
  AR      fs/tracefs/built-in.a
  CC      fs/ntfs/debug.o
  CC      arch/x86/kernel/probe_roms.o
  CC      fs/pstore/inode.o
  CC      fs/ntfs/dir.o
  CC [M]  net/netfilter/nf_nat_helper.o
  CC      drivers/char/tpm/tpmrm-dev.o
  CC      drivers/char/tpm/tpm2-space.o
  CC      lib/maple_tree.o
  CC      fs/ext4/xattr_hurd.o
  CC      lib/memcat_p.o
  AR      net/l3mdev/built-in.a
  CC      arch/x86/kernel/sys_ia32.o
  AR      block/built-in.a
  CC      drivers/acpi/acpica/hwsleep.o
  CC      net/core/netpoll.o
  CC      drivers/tty/tty_buffer.o
  CC      drivers/char/tpm/tpm-sysfs.o
  CC      fs/lockd/host.o
  CC      net/ipv4/raw.o
  CC [M]  crypto/ecdh.o
  CC      drivers/acpi/acpica/hwvalid.o
  CC      drivers/acpi/pci_root.o
  CC      drivers/connector/cn_queue.o
  AS [M]  arch/x86/kvm/vmx/vmenter.o
  CC      fs/ntfs/file.o
  CC      drivers/base/power/sysfs.o
  CC      drivers/base/firmware_loader/builtin/main.o
  CC      drivers/base/regmap/regmap.o
  AR      drivers/base/test/built-in.a
  CC      net/handshake/request.o
  CC      drivers/acpi/acpica/hwxface.o
  CC      drivers/base/regmap/regcache.o
  CC      drivers/iommu/intel/trace.o
  CC      net/ipv4/udp.o
  CC [M]  crypto/ecdh_helper.o
  CC      net/ipv6/addrlabel.o
  CC      mm/swap_state.o
  CC      drivers/char/tpm/eventlog/common.o
  CC      drivers/iommu/intel/cap_audit.o
  CC [M]  drivers/gpu/drm/tests/drm_format_helper_test.o
  CC      kernel/trace/fgraph.o
  CC      net/ipv4/udplite.o
  AR      drivers/base/firmware_loader/builtin/built-in.a
  CC      fs/pstore/platform.o
  CC      drivers/base/firmware_loader/main.o
  CC      drivers/base/component.o
  CC      net/sunrpc/xprtsock.o
  CC      net/sunrpc/sched.o
  CC [M]  drivers/gpu/drm/tests/drm_format_test.o
  CC [M]  drivers/gpu/drm/tests/drm_framebuffer_test.o
  CC      kernel/task_work.o
  CC      arch/x86/kernel/signal_32.o
  CC      drivers/tty/tty_port.o
  CC      drivers/char/tpm/eventlog/tpm1.o
  CC      drivers/acpi/acpica/hwxfsleep.o
  CC      drivers/base/core.o
  CC      drivers/base/power/generic_ops.o
  CC      net/bridge/br_input.o
  LD [M]  crypto/ecdh_generic.o
  AR      crypto/built-in.a
  CC      fs/lockd/svc.o
  CC      drivers/char/tpm/eventlog/tpm2.o
  CC      fs/ntfs/index.o
  CC [M]  net/netfilter/nf_nat_redirect.o
  CC      net/sunrpc/auth.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_mech.o
  CC      drivers/char/tpm/tpm_ppi.o
  CC      fs/ext4/xattr_trusted.o
  CC      drivers/connector/connector.o
  CC      fs/btrfs/ctree.o
  CC      drivers/base/regmap/regcache-rbtree.o
  CC      drivers/acpi/acpica/hwpci.o
  CC      net/handshake/tlshd.o
  CC      drivers/base/bus.o
  CC      kernel/trace/blktrace.o
  CC      drivers/base/power/common.o
  CC      fs/pstore/pmsg.o
  CC      fs/nfs/read.o
  CC      net/handshake/trace.o
  CC      drivers/tty/tty_mutex.o
  CC      net/core/fib_rules.o
  CC      drivers/base/power/qos.o
  CC      kernel/extable.o
  CC      drivers/iommu/intel/irq_remapping.o
  CC      drivers/acpi/pci_link.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_seal.o
  CC [M]  drivers/gpu/drm/tests/drm_managed_test.o
  CC      kernel/params.o
  CC      arch/x86/kernel/sys_x86_64.o
  CC      net/ipv4/udp_offload.o
  CC      drivers/base/dd.o
  AR      drivers/base/firmware_loader/built-in.a
  CC      drivers/base/syscore.o
  CC      mm/swapfile.o
  CC      fs/ext4/xattr_user.o
  CC      fs/ntfs/inode.o
  CC      fs/ext4/fast_commit.o
  CC [M]  net/netfilter/nf_nat_masquerade.o
  CC      drivers/acpi/acpica/nsaccess.o
  CC      kernel/trace/trace_events.o
  CC      fs/ext4/orphan.o
  CC      drivers/char/tpm/eventlog/acpi.o
  CC      net/sunrpc/auth_null.o
  AR      fs/pstore/built-in.a
  CC      fs/efivarfs/inode.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_unseal.o
  CC      fs/efivarfs/file.o
  CC      drivers/tty/tty_ldsem.o
  CC [M]  net/netfilter/x_tables.o
  CC      drivers/connector/cn_proc.o
  CC [M]  drivers/gpu/drm/tests/drm_mm_test.o
  CC      fs/lockd/svclock.o
  CC [M]  net/netfilter/xt_tcpudp.o
  CC [M]  drivers/gpu/drm/tests/drm_modes_test.o
  CC      net/bridge/br_ioctl.o
  CC      drivers/acpi/acpica/nsalloc.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_wrap.o
  CC      drivers/tty/tty_baudrate.o
  CC      arch/x86/kernel/espfix_64.o
  CC      arch/x86/kernel/ksysfs.o
  CC      kernel/kthread.o
  CC      drivers/acpi/pci_irq.o
  CC      kernel/trace/trace_export.o
  CC      drivers/char/tpm/eventlog/efi.o
  CC      fs/efivarfs/super.o
  CC [M]  drivers/gpu/drm/tests/drm_plane_helper_test.o
  CC [M]  drivers/gpu/drm/tests/drm_probe_helper_test.o
  CC      drivers/base/power/runtime.o
  CC      fs/efivarfs/vars.o
  CC      fs/btrfs/extent-tree.o
  CC      drivers/acpi/acpica/nsarguments.o
  AR      net/handshake/built-in.a
  CC      drivers/base/driver.o
  CC      drivers/char/tpm/tpm_crb.o
  CC [M]  net/bluetooth/af_bluetooth.o
  CC      drivers/tty/tty_jobctrl.o
  CC [M]  net/dns_resolver/dns_key.o
  CC      drivers/iommu/intel/perfmon.o
  CC      net/ipv6/route.o
  CC      drivers/tty/n_null.o
  CC      drivers/base/class.o
  CC      net/sunrpc/auth_tls.o
  CC      fs/nfs/symlink.o
  CC [M]  net/netfilter/xt_mark.o
  CC      drivers/base/regmap/regcache-flat.o
  CC      net/ipv4/arp.o
  CC      drivers/tty/pty.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_crypto.o
  CC      fs/ntfs/mft.o
  CC      arch/x86/kernel/bootflag.o
  CC      net/core/net-traces.o
  CC      mm/swap_slots.o
  CC      drivers/acpi/acpica/nsconvert.o
  CC      drivers/block/loop.o
  CC [M]  drivers/block/nbd.o
  AR      drivers/misc/eeprom/built-in.a
  AR      drivers/connector/built-in.a
  CC [M]  drivers/gpu/drm/tests/drm_rect_test.o
  AR      drivers/misc/cb710/built-in.a
  CC [M]  drivers/gpu/drm/tests/drm_exec_test.o
  CC      kernel/trace/trace_event_perf.o
  AR      drivers/misc/ti-st/built-in.a
  CC      drivers/mfd/mfd-core.o
  AR      fs/efivarfs/built-in.a
  AR      drivers/misc/lis3lv02d/built-in.a
  AR      drivers/nfc/built-in.a
  AR      drivers/misc/cardreader/built-in.a
  CC [M]  drivers/misc/mei/hdcp/mei_hdcp.o
  CC [M]  net/bluetooth/hci_core.o
  AR      drivers/misc/built-in.a
  CC [M]  drivers/misc/mei/pxp/mei_pxp.o
  CC [M]  net/bluetooth/hci_conn.o
  CC      fs/lockd/svcshare.o
  CC      net/bridge/br_stp.o
  CC [M]  net/dns_resolver/dns_query.o
  CC [M]  drivers/misc/mei/init.o
  CC      drivers/acpi/acpica/nsdump.o
  CC      drivers/base/regmap/regcache-maple.o
  AR      drivers/char/tpm/built-in.a
  CC      drivers/char/random.o
  CC [M]  drivers/misc/mei/hbm.o
  CC      drivers/base/platform.o
  CC      drivers/base/cpu.o
  CC      drivers/base/power/wakeirq.o
  CC [M]  net/sunrpc/auth_gss/gss_krb5_keys.o
  CC      arch/x86/kernel/e820.o
  CC      kernel/sys_ni.o
  CC [M]  net/netfilter/xt_nat.o
  CC      net/bridge/br_stp_bpdu.o
  CC      drivers/base/regmap/regmap-debugfs.o
  CC      fs/ntfs/mst.o
  CC      mm/dmapool.o
  CC      drivers/acpi/acpica/nseval.o
  CC      drivers/base/firmware.o
  LD [M]  arch/x86/kvm/kvm-intel.o
  CC      kernel/nsproxy.o
  CC      arch/x86/kernel/pci-dma.o
  CC      drivers/tty/sysrq.o
  CC      fs/nfs/unlink.o
  CC      drivers/acpi/acpi_lpss.o
  CC      net/core/selftests.o
  CC      fs/ntfs/namei.o
  AR      drivers/iommu/intel/built-in.a
  AR      drivers/iommu/arm/arm-smmu/built-in.a
  AR      drivers/iommu/arm/arm-smmu-v3/built-in.a
  LD [M]  net/dns_resolver/dns_resolver.o
  AR      drivers/gpu/drm/arm/built-in.a
  AR      drivers/iommu/arm/built-in.a
  AR      drivers/gpu/drm/display/built-in.a
  CC      arch/x86/kernel/quirks.o
  CC      net/core/ptp_classifier.o
  CC [M]  drivers/gpu/drm/display/drm_display_helper_mod.o
  AR      drivers/iommu/iommufd/built-in.a
  CC      drivers/mfd/intel-lpss.o
  CC [M]  drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
  CC      drivers/iommu/iommu.o
  CC      kernel/trace/trace_events_filter.o
  CC      drivers/base/power/main.o
  CC [M]  net/bluetooth/hci_event.o
  CC [M]  drivers/gpu/drm/display/drm_dp_helper.o
  CC      net/devres.o
  CC      fs/lockd/svcproc.o
  CC      drivers/base/init.o
  CC      net/ipv6/ip6_fib.o
  AR      drivers/gpu/drm/renesas/rcar-du/built-in.a
  AR      drivers/gpu/drm/renesas/built-in.a
  CC      net/ipv6/ipv6_sockglue.o
  CC      drivers/acpi/acpica/nsinit.o
  CC      kernel/notifier.o
  CC [M]  drivers/misc/mei/interrupt.o
  LD [M]  net/sunrpc/auth_gss/auth_rpcgss.o
  CC      fs/ntfs/runlist.o
  LD [M]  net/sunrpc/auth_gss/rpcsec_gss_krb5.o
  CC      fs/btrfs/print-tree.o
  CC      mm/hugetlb.o
  CC      net/sunrpc/auth_unix.o
  CC      net/bridge/br_stp_if.o
  CC      arch/x86/kernel/topology.o
  CC      drivers/base/regmap/regmap-i2c.o
  CC      fs/ntfs/super.o
  CC [M]  drivers/misc/mei/client.o
  CC [M]  drivers/misc/mei/main.o
  CC      drivers/base/map.o
  CC      net/ipv4/icmp.o
  CC      drivers/mfd/intel-lpss-pci.o
  CC      fs/nfs/write.o
  CC [M]  net/bluetooth/mgmt.o
  CC      drivers/acpi/acpica/nsload.o
  CC [M]  net/netfilter/xt_REDIRECT.o
  AR      drivers/block/built-in.a
  CC      drivers/base/regmap/regmap-irq.o
  CC      net/bridge/br_stp_timer.o
  CC      net/bridge/br_netlink.o
  AR      drivers/tty/built-in.a
  CC      kernel/ksysfs.o
  CC      lib/nmi_backtrace.o
  CC      drivers/base/devres.o
  CC [M]  drivers/gpu/drm/display/drm_dp_mst_topology.o
  CC      drivers/char/misc.o
  CC [M]  drivers/gpu/drm/display/drm_dsc_helper.o
  CC      fs/btrfs/root-tree.o
  CC      drivers/iommu/iommu-traces.o
  CC      arch/x86/kernel/kdebugfs.o
  CC      drivers/base/attribute_container.o
  CC      net/sunrpc/svc.o
  CC      drivers/acpi/acpica/nsnames.o
  CC [M]  drivers/misc/mei/dma-ring.o
  CC      fs/lockd/svcsubs.o
  CC      fs/btrfs/dir-item.o
  CC      drivers/mfd/intel-lpss-acpi.o
  CC      net/bridge/br_netlink_tunnel.o
  CC      net/ipv4/devinet.o
  CC      lib/plist.o
  CC      kernel/cred.o
  CC      fs/lockd/mon.o
  AR      drivers/dax/hmem/built-in.a
  CC      drivers/dax/super.o
  CC      fs/lockd/trace.o
  CC      lib/radix-tree.o
  CC      drivers/char/virtio_console.o
  CC      arch/x86/kernel/alternative.o
  CC      drivers/dax/bus.o
  CC      kernel/trace/trace_events_trigger.o
  CC      net/ipv6/ndisc.o
  CC      drivers/acpi/acpica/nsobject.o
  CC [M]  fs/netfs/buffered_read.o
  CC      mm/hugetlb_vmemmap.o
  CC      drivers/char/hpet.o
  CC      drivers/mfd/intel_soc_pmic_crc.o
  CC [M]  fs/netfs/io.o
  CC      fs/ntfs/sysctl.o
  CC [M]  net/netfilter/xt_MASQUERADE.o
  CC      drivers/char/nvram.o
  CC [M]  net/netfilter/xt_addrtype.o
  CC      drivers/base/power/wakeup.o
  CC      fs/ntfs/unistr.o
  AR      drivers/base/regmap/built-in.a
  CC      net/socket.o
  CC      net/compat.o
  CC [M]  fs/fscache/cache.o
  CC      drivers/base/transport_class.o
  CC      drivers/iommu/iommu-sysfs.o
  CC      drivers/acpi/acpica/nsparse.o
  CC      net/ipv6/udp.o
  CC      net/ipv6/udplite.o
  CC [M]  drivers/gpu/drm/display/drm_hdcp_helper.o
  CC [M]  fs/netfs/iterator.o
  CC      kernel/reboot.o
  CC [M]  drivers/misc/mei/bus.o
  CC      drivers/base/power/wakeup_stats.o
  CC      net/ipv6/raw.o
  CC      kernel/async.o
  CC      net/ipv6/icmp.o
  CC      fs/btrfs/file-item.o
  CC      kernel/range.o
  CC [M]  fs/fscache/cookie.o
  CC [M]  drivers/mfd/lpc_sch.o
  CC      fs/ntfs/upcase.o
  CC      lib/ratelimit.o
  CC      drivers/acpi/acpi_apd.o
  CC      net/bridge/br_arp_nd_proxy.o
  CC      kernel/smpboot.o
  CC      fs/lockd/xdr.o
  CC      drivers/acpi/acpica/nspredef.o
  CC      drivers/iommu/dma-iommu.o
  CC      drivers/base/power/domain.o
  CC      drivers/iommu/iova.o
  CC      net/sunrpc/svcsock.o
  CC      drivers/iommu/irq_remapping.o
  CC      mm/mempolicy.o
  AR      drivers/dax/built-in.a
  CC      fs/lockd/clnt4xdr.o
  CC      lib/rbtree.o
  CC      arch/x86/kernel/i8253.o
  CC      kernel/trace/trace_eprobe.o
  CC [M]  fs/smb/common/cifs_arc4.o
  CC [M]  fs/smb/client/trace.o
  CC      kernel/trace/trace_kprobe.o
  CC [M]  fs/netfs/main.o
  CC [M]  fs/netfs/objects.o
  CC [M]  fs/fuse/dev.o
  CC [M]  net/netfilter/xt_conntrack.o
  AR      drivers/char/built-in.a
  CC [M]  fs/fuse/dir.o
  CC      net/sunrpc/svcauth.o
  CC [M]  net/netfilter/xt_ipvs.o
  CC      drivers/acpi/acpi_platform.o
  CC      drivers/acpi/acpica/nsprepkg.o
  AR      fs/ntfs/built-in.a
  CC      mm/sparse.o
  CC [M]  fs/overlayfs/super.o
  CC [M]  drivers/mfd/lpc_ich.o
  CC      fs/open.o
  CC      net/core/netprio_cgroup.o
  CC      net/core/dst_cache.o
  CC      lib/seq_buf.o
  CC      net/sysctl_net.o
  CC [M]  fs/smb/common/cifs_md4.o
  CC      drivers/base/power/domain_governor.o
  CC      fs/nfs/namespace.o
  CC      arch/x86/kernel/hw_breakpoint.o
  CC      arch/x86/kernel/tsc.o
  CC [M]  drivers/misc/mei/bus-fixup.o
  AR      fs/ext4/built-in.a
  CC [M]  drivers/misc/mei/debugfs.o
  CC      fs/read_write.o
  CC      drivers/acpi/acpica/nsrepair.o
  CC      fs/lockd/xdr4.o
  CC      net/ipv4/af_inet.o
  CC      drivers/acpi/acpica/nsrepair2.o
  CC      drivers/acpi/acpica/nssearch.o
  CC      net/core/gro_cells.o
  CC      drivers/base/power/clock_ops.o
  CC      kernel/ucount.o
  CC [M]  fs/fscache/io.o
  CC      net/bridge/br_sysfs_if.o
  CC      net/ipv6/mcast.o
  CC      lib/siphash.o
  LD [M]  fs/netfs/netfs.o
  CC      mm/sparse-vmemmap.o
  CC      fs/nfs/mount_clnt.o
  AR      drivers/mfd/built-in.a
  AR      drivers/iommu/built-in.a
  CC      fs/nfs/nfstrace.o
  CC [M]  net/bluetooth/hci_sock.o
  CC [M]  drivers/gpu/drm/display/drm_hdmi_helper.o
  CC [M]  net/bluetooth/hci_sysfs.o
  CC      fs/btrfs/inode-item.o
  CC      net/bridge/br_sysfs_br.o
  CC      fs/nfs/export.o
  CC [M]  fs/fscache/main.o
  CC      lib/string.o
  CC      lib/timerqueue.o
  CC [M]  drivers/misc/mei/mei-trace.o
  CC      fs/nfs/sysfs.o
  LD [M]  net/netfilter/nf_conntrack.o
  CC      drivers/base/topology.o
  CC [M]  net/bluetooth/l2cap_core.o
  CC [M]  net/bluetooth/l2cap_sock.o
  CC      kernel/regset.o
  CC      fs/nfs/fs_context.o
  LD [M]  net/netfilter/nf_nat.o
  CC      drivers/acpi/acpica/nsutils.o
  AR      net/netfilter/built-in.a
  CC [M]  drivers/gpu/drm/display/drm_scdc_helper.o
  CC      drivers/acpi/acpi_pnp.o
  CC      kernel/trace/error_report-traces.o
  CC      arch/x86/kernel/tsc_msr.o
  CC      arch/x86/kernel/io_delay.o
  CC      arch/x86/kernel/rtc.o
  CC [M]  net/bluetooth/smp.o
  CC [M]  fs/overlayfs/namei.o
  CC      drivers/acpi/acpica/nswalk.o
  AR      drivers/base/power/built-in.a
  CC [M]  fs/fscache/volume.o
  CC [M]  fs/fuse/file.o
  CC      net/sunrpc/svcauth_unix.o
  AR      net/core/built-in.a
  CC      fs/lockd/svc4proc.o
  CC [M]  drivers/gpu/drm/display/drm_dp_aux_dev.o
  CC      kernel/trace/power-traces.o
  CC      lib/vsprintf.o
  CC      fs/nfs/sysctl.o
  CC [M]  fs/fuse/inode.o
  CC      drivers/dma-buf/dma-buf.o
  CC [M]  fs/fuse/control.o
  CC [M]  fs/fuse/xattr.o
  CC      drivers/base/container.o
  CC      drivers/dma-buf/dma-fence.o
  CC      fs/nfs/nfs2super.o
  CC      fs/lockd/procfs.o
  CC      mm/mmu_notifier.o
  CC      net/ipv4/igmp.o
  CC      drivers/acpi/acpica/nsxfeval.o
  CC      kernel/trace/rpm-traces.o
  CC      fs/file_table.o
  CC [M]  drivers/misc/mei/pci-me.o
  CC [M]  net/bluetooth/lib.o
  CC      mm/ksm.o
  CC      net/ipv4/fib_frontend.o
  CC      fs/super.o
  CC      net/sunrpc/addr.o
  CC      arch/x86/kernel/resource.o
  CC      net/bridge/br_nf_core.o
  CC [M]  net/bluetooth/ecdh_helper.o
  CC      drivers/dma-buf/dma-fence-array.o
  CC      drivers/base/property.o
  CC      net/bridge/br_multicast.o
  AS      arch/x86/kernel/irqflags.o
  CC [M]  fs/fscache/proc.o
  CC      fs/char_dev.o
  CC      arch/x86/kernel/static_call.o
  CC      net/bridge/br_mdb.o
  CC [M]  fs/fuse/acl.o
  CC      drivers/acpi/acpica/nsxfname.o
  CC      drivers/acpi/acpica/nsxfobj.o
  CC      fs/btrfs/disk-io.o
  CC [M]  fs/fuse/readdir.o
  CC [M]  drivers/misc/mei/hw-me.o
  CC [M]  fs/overlayfs/util.o
  LD [M]  drivers/gpu/drm/display/drm_display_helper.o
  CC [M]  fs/fuse/ioctl.o
  AR      drivers/gpu/drm/omapdrm/built-in.a
  CC      fs/nfs/proc.o
  AR      drivers/gpu/drm/tilcdc/built-in.a
  AR      drivers/gpu/drm/imx/built-in.a
  AR      drivers/gpu/drm/i2c/built-in.a
  CC [M]  fs/smb/client/cifsfs.o
  CC      kernel/ksyms_common.o
  AR      drivers/gpu/drm/panel/built-in.a
  AR      fs/lockd/built-in.a
  CC      kernel/trace/trace_dynevent.o
  CC      arch/x86/kernel/process.o
  CC      drivers/dma-buf/dma-fence-chain.o
  AR      drivers/gpu/drm/bridge/analogix/built-in.a
  CC      arch/x86/kernel/ptrace.o
  AR      drivers/gpu/drm/hisilicon/built-in.a
  AR      drivers/gpu/drm/bridge/cadence/built-in.a
  CC      drivers/dma-buf/dma-fence-unwrap.o
  AR      drivers/gpu/drm/mxsfb/built-in.a
  AR      drivers/gpu/drm/bridge/imx/built-in.a
  CC      drivers/dma-buf/dma-resv.o
  CC      fs/stat.o
  CC      net/ipv6/reassembly.o
  AR      drivers/gpu/drm/bridge/synopsys/built-in.a
  CC      arch/x86/kernel/tls.o
  AR      drivers/gpu/drm/bridge/built-in.a
  CC      fs/exec.o
  AR      drivers/gpu/drm/xlnx/built-in.a
  AR      drivers/gpu/drm/tiny/built-in.a
  CC [M]  net/bluetooth/hci_request.o
  CC      drivers/acpi/power.o
  AR      drivers/gpu/drm/gud/built-in.a
  AR      drivers/gpu/drm/solomon/built-in.a
  CC [M]  drivers/gpu/drm/ttm/ttm_tt.o
  CC [M]  net/bluetooth/mgmt_util.o
  LD [M]  fs/fscache/fscache.o
  CC [M]  drivers/gpu/drm/ttm/ttm_bo.o
  CC      drivers/acpi/acpica/psargs.o
  CC      net/ipv4/fib_semantics.o
  CC      lib/win_minmax.o
  CC [M]  drivers/gpu/drm/scheduler/sched_main.o
  CC      drivers/dma-buf/sync_file.o
  CC      net/ipv6/tcp_ipv6.o
  CC      drivers/acpi/acpica/psloop.o
  CC      net/bridge/br_multicast_eht.o
  CC      kernel/groups.o
  CC      mm/slub.o
  CC      net/ipv4/fib_trie.o
  CC      drivers/dma-buf/sw_sync.o
  CC      drivers/base/cacheinfo.o
  CC      drivers/base/swnode.o
  CC [M]  net/bluetooth/mgmt_config.o
  CC [M]  drivers/gpu/drm/scheduler/sched_fence.o
  CC [M]  net/bluetooth/hci_codec.o
  CC      lib/xarray.o
  CC      drivers/dma-buf/sync_debug.o
  CC      net/sunrpc/rpcb_clnt.o
  CC      drivers/acpi/acpica/psobject.o
  CC      kernel/trace/trace_probe.o
  CC      drivers/acpi/acpica/psopcode.o
  CC      fs/nfs/nfs2xdr.o
  CC [M]  drivers/dma-buf/selftest.o
  CC      net/bridge/br_vlan.o
  CC [M]  drivers/gpu/drm/ttm/ttm_bo_util.o
  CC      net/ipv4/fib_notifier.o
  CC [M]  drivers/dma-buf/st-dma-fence.o
  CC [M]  fs/overlayfs/inode.o
  CC      kernel/trace/trace_uprobe.o
  LD [M]  fs/fuse/fuse.o
  CC      net/ipv4/inet_fragment.o
  CC [M]  net/bluetooth/eir.o
  CC      kernel/vhost_task.o
  CC      arch/x86/kernel/step.o
  CC [M]  fs/smb/client/cifs_debug.o
  CC [M]  drivers/gpu/drm/ttm/ttm_bo_vm.o
  CC      kernel/trace/rethook.o
  CC      kernel/kcmp.o
  CC [M]  net/bluetooth/hci_sync.o
  CC [M]  drivers/dma-buf/st-dma-fence-chain.o
  CC      fs/pipe.o
  CC      drivers/acpi/acpica/psopinfo.o
  CC [M]  fs/smb/client/connect.o
  CC [M]  drivers/gpu/drm/scheduler/sched_entity.o
  CC      drivers/base/auxiliary.o
  CC [M]  drivers/misc/mei/gsc-me.o
  CC      fs/nfs/nfs3super.o
  LD [M]  drivers/misc/mei/mei.o
  CC      fs/namei.o
  CC [M]  drivers/dma-buf/st-dma-fence-unwrap.o
  CC [M]  net/bluetooth/coredump.o
  LD [M]  drivers/misc/mei/mei-me.o
  CC      net/ipv4/ping.o
  CC [M]  drivers/dma-buf/st-dma-resv.o
  CC [M]  drivers/gpu/drm/ttm/ttm_module.o
  CC      kernel/freezer.o
  CC [M]  net/bluetooth/sco.o
  AR      drivers/cxl/core/built-in.a
  AR      drivers/macintosh/built-in.a
  AR      drivers/cxl/built-in.a
  CC      arch/x86/kernel/i8237.o
  CC      drivers/scsi/scsi.o
  CC      net/ipv4/ip_tunnel_core.o
  CC      drivers/acpi/acpica/psparse.o
  CC      drivers/scsi/hosts.o
  CC      arch/x86/kernel/stacktrace.o
  CC      drivers/acpi/event.o
  CC      drivers/acpi/evged.o
  CC      drivers/base/devtmpfs.o
  CC [M]  drivers/gpu/drm/ttm/ttm_execbuf_util.o
  CC      net/ipv4/gre_offload.o
  CC [M]  net/bluetooth/iso.o
  CC      net/bridge/br_vlan_tunnel.o
  CC [M]  drivers/gpu/drm/ttm/ttm_range_manager.o
  CC      lib/lockref.o
  CC      fs/fcntl.o
  CC      fs/nfs/nfs3client.o
  CC [M]  fs/overlayfs/file.o
  LD [M]  drivers/misc/mei/mei-gsc.o
  CC      fs/nfs/nfs3proc.o
  CC      drivers/nvme/host/core.o
  AR      drivers/nvme/target/built-in.a
  CC      drivers/nvme/host/ioctl.o
  CC      drivers/acpi/acpica/psscope.o
  CC [M]  net/bluetooth/a2mp.o
  CC      lib/bcd.o
  LD [M]  drivers/gpu/drm/scheduler/gpu-sched.o
  CC      kernel/stacktrace.o
  AR      drivers/dma-buf/built-in.a
  LD [M]  drivers/dma-buf/dmabuf_selftests.o
  CC [M]  net/bluetooth/amp.o
  CC      net/sunrpc/timer.o
  CC      lib/sort.o
  CC      kernel/dma.o
  CC      fs/nfs/nfs3xdr.o
  CC      net/ipv4/metrics.o
  CC      lib/parser.o
  CC [M]  fs/overlayfs/dir.o
  CC      net/ipv6/ping.o
  CC      net/ipv6/exthdrs.o
  CC      arch/x86/kernel/reboot.o
  CC [M]  fs/overlayfs/readdir.o
  CC      fs/ioctl.o
  CC [M]  net/bluetooth/hci_debugfs.o
  CC [M]  drivers/gpu/drm/ttm/ttm_resource.o
  CC      drivers/scsi/scsi_ioctl.o
  CC      drivers/nvme/host/sysfs.o
  CC [M]  drivers/gpu/drm/ttm/ttm_pool.o
  CC      drivers/acpi/acpica/pstree.o
  CC      fs/readdir.o
  CC      drivers/acpi/sysfs.o
  CC      kernel/smp.o
  CC      drivers/base/node.o
  CC      kernel/uid16.o
  CC      lib/debug_locks.o
  CC      net/ipv6/datagram.o
  AR      kernel/trace/built-in.a
  CC [M]  fs/smb/client/dir.o
  CC      kernel/kallsyms.o
  CC      lib/random32.o
  CC      net/bridge/br_vlan_options.o
  CC [M]  fs/overlayfs/copy_up.o
  CC      net/bridge/br_mst.o
  CC [M]  drivers/gpu/drm/ttm/ttm_device.o
  CC [M]  drivers/gpu/drm/ttm/ttm_sys_manager.o
  CC      fs/btrfs/transaction.o
  CC      drivers/acpi/acpica/psutils.o
  CC [M]  drivers/gpu/drm/ttm/ttm_agp_backend.o
  CC      drivers/scsi/scsicam.o
  CC      net/ipv4/netlink.o
  CC      net/sunrpc/xdr.o
  CC      net/sunrpc/sunrpc_syms.o
  CC      arch/x86/kernel/msr.o
  CC      drivers/scsi/scsi_error.o
  CC      net/ipv4/nexthop.o
  CC      lib/bust_spinlocks.o
  CC      net/ipv4/udp_tunnel_stub.o
  CC      drivers/scsi/scsi_lib.o
  CC      drivers/scsi/scsi_lib_dma.o
  CC      net/ipv4/sysctl_net_ipv4.o
  CC      fs/select.o
  CC      drivers/base/memory.o
  CC      drivers/nvme/host/pr.o
  CC      drivers/scsi/scsi_scan.o
  CC [M]  net/bridge/br_netfilter_hooks.o
  CC      drivers/acpi/acpica/pswalk.o
  GEN     drivers/scsi/scsi_devinfo_tbl.c
  CC      net/ipv6/ip6_flowlabel.o
  CC [M]  fs/overlayfs/export.o
  CC      drivers/base/module.o
  CC      drivers/acpi/acpica/psxface.o
  CC      drivers/ata/libata-core.o
  CC      net/ipv4/proc.o
  CC      fs/dcache.o
  CC      drivers/spi/spi.o
  CC      drivers/ata/libata-scsi.o
  CC [M]  net/bridge/br_netfilter_ipv6.o
  CC      net/ipv4/syncookies.o
  CC      drivers/base/pinctrl.o
  CC      drivers/scsi/scsi_devinfo.o
  CC      drivers/nvme/host/trace.o
  LD [M]  drivers/gpu/drm/ttm/ttm.o
  CC      kernel/acct.o
  CC [M]  drivers/gpu/drm/amd/amdxcp/amdgpu_xcp_drv.o
  CC      lib/kasprintf.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.o
  CC      lib/bitmap.o
  CC      drivers/acpi/acpica/rsaddr.o
  CC      arch/x86/kernel/cpuid.o
  CC      drivers/scsi/scsi_sysctl.o
  CC      drivers/acpi/property.o
  AR      fs/nfs/built-in.a
  CC      net/sunrpc/cache.o
  CC      mm/migrate.o
  CC      net/sunrpc/rpc_pipe.o
  CC      fs/btrfs/inode.o
  CC [M]  drivers/gpu/drm/i915/i915_driver.o
  CC      fs/inode.o
  CC      fs/attr.o
  CC      drivers/base/devcoredump.o
  CC      drivers/base/platform-msi.o
  CC      drivers/nvme/host/fault_inject.o
  CC      net/ipv6/inet6_connection_sock.o
  CC      lib/scatterlist.o
  CC [M]  fs/overlayfs/params.o
  CC      fs/btrfs/file.o
  LD [M]  drivers/gpu/drm/amd/amdxcp/amdxcp.o
  CC      net/ipv4/esp4.o
  CC      drivers/ata/libata-eh.o
  CC      drivers/acpi/acpica/rscalc.o
  CC      drivers/nvme/host/pci.o
  CC      drivers/scsi/scsi_debugfs.o
  CC      lib/list_sort.o
  CC [M]  fs/smb/client/file.o
  CC      lib/uuid.o
  CC      drivers/scsi/scsi_trace.o
  CC      arch/x86/kernel/early-quirks.o
  CC      drivers/acpi/acpica/rscreate.o
  CC      net/ipv6/udp_offload.o
  CC      drivers/scsi/scsi_logging.o
  CC      kernel/crash_core.o
  CC      drivers/acpi/acpi_cmos_rtc.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_bo_test.o
  CC      drivers/base/physical_location.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.o
  AR      net/bridge/built-in.a
  CC [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.o
  CC      fs/bad_inode.o
  CC      drivers/net/phy/mdio-boardinfo.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_pci_test.o
  CC      drivers/net/phy/stubs.o
  LD [M]  net/bluetooth/bluetooth.o
  CC      drivers/acpi/x86/apple.o
  CC      drivers/net/phy/mdio_devres.o
  CC      arch/x86/kernel/smp.o
  CC      drivers/acpi/x86/utils.o
  CC [M]  drivers/gpu/drm/vgem/vgem_drv.o
  CC      drivers/acpi/x86/s2idle.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_device.o
  CC      drivers/acpi/acpica/rsdumpinfo.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_doorbell_mgr.o
  LD [M]  fs/overlayfs/overlay.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/object.o
  CC      arch/x86/kernel/smpboot.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/client.o
  CC      fs/file.o
  CC      drivers/ata/libata-transport.o
  CC      drivers/ata/libata-trace.o
  CC      drivers/acpi/acpica/rsinfo.o
  CC      drivers/base/trace.o
  CC      net/ipv6/seg6.o
  CC      net/ipv6/fib6_notifier.o
  CC      lib/iov_iter.o
  CC      fs/filesystems.o
  CC      net/ipv6/rpl.o
  CC      fs/btrfs/defrag.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_rtp_test.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/conn.o
  CC      drivers/ata/libata-sata.o
  LD [M]  net/bridge/br_netfilter.o
  CC      drivers/acpi/acpica/rsio.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_wa_test.o
  CC      drivers/scsi/scsi_pm.o
  CC      lib/clz_ctz.o
  CC      drivers/net/phy/phy.o
  CC      kernel/compat.o
  CC      lib/bsearch.o
  CC      net/ipv6/ioam6.o
  CC      lib/find_bit.o
  CC      kernel/utsname.o
  CC      fs/namespace.o
  CC      fs/seq_file.o
  CC      drivers/acpi/debugfs.o
  CC [M]  drivers/gpu/drm/i915/i915_drm_client.o
  CC [M]  drivers/gpu/drm/xe/xe_bb.o
  CC      net/ipv6/sysctl_net_ipv6.o
  CC [M]  drivers/gpu/drm/vgem/vgem_fence.o
  CC      fs/xattr.o
  CC      lib/llist.o
  CC      drivers/acpi/acpica/rsirq.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/device.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.o
  CC      net/sunrpc/sysfs.o
  CC      net/sunrpc/svc_xprt.o
  AR      drivers/base/built-in.a
  CC      drivers/acpi/acpi_lpat.o
  AR      drivers/firewire/built-in.a
  CC      kernel/user_namespace.o
  CC      drivers/scsi/scsi_bsg.o
  CC      net/ipv4/esp4_offload.o
  CC      drivers/acpi/acpica/rslist.o
  CC      mm/memory-tiers.o
  CC      drivers/acpi/acpi_lpit.o
  CC      mm/migrate_device.o
  CC      drivers/ata/libata-sff.o
  CC      lib/memweight.o
  CC      kernel/pid_namespace.o
  CC      net/sunrpc/xprtmultipath.o
  CC      drivers/scsi/scsi_common.o
  CC      drivers/scsi/sd.o
  CC      net/ipv6/xfrm6_policy.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/disp.o
  CC      drivers/ata/libata-pmp.o
  AR      drivers/spi/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_bo.o
  CC      fs/libfs.o
  CC      drivers/acpi/prmt.o
  CC [M]  drivers/gpu/drm/ast/ast_drv.o
  CC      drivers/gpu/drm/drm_mipi_dsi.o
  CC      drivers/acpi/acpi_pcc.o
  UPD     kernel/config_data
  AR      drivers/cdrom/built-in.a
  LD [M]  drivers/gpu/drm/vgem/vgem.o
  AR      drivers/auxdisplay/built-in.a
  CC      arch/x86/kernel/tsc_sync.o
  CC      drivers/input/serio/serio.o
  CC      drivers/usb/common/common.o
  CC      drivers/input/serio/i8042.o
  CC      drivers/acpi/acpica/rsmemory.o
  CC      drivers/usb/common/debug.o
  CC [M]  drivers/gpu/drm/drm_aperture.o
  AR      drivers/nvme/host/built-in.a
  CC      drivers/acpi/acpica/rsmisc.o
  CC      drivers/input/serio/libps2.o
  AR      drivers/nvme/built-in.a
  CC      net/sunrpc/stats.o
  CC      net/sunrpc/sysctl.o
  CC      drivers/acpi/ac.o
  CC [M]  drivers/gpu/drm/i915/i915_config.o
  CC [M]  drivers/gpu/drm/ast/ast_i2c.o
  CC      fs/btrfs/extent_map.o
  CC      drivers/usb/core/usb.o
  AR      drivers/usb/phy/built-in.a
  CC      drivers/usb/host/pci-quirks.o
  CC      drivers/acpi/button.o
  CC      drivers/scsi/sg.o
  CC      drivers/net/phy/phy-c45.o
  CC      mm/huge_memory.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/driver.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/event.o
  CC      mm/khugepaged.o
  CC      fs/btrfs/sysfs.o
  CC      kernel/stop_machine.o
  CC      arch/x86/kernel/setup_percpu.o
  CC [M]  drivers/gpu/drm/i915/i915_getparam.o
  CC      fs/fs-writeback.o
  CC      drivers/usb/core/hub.o
  CC      drivers/net/phy/phy-core.o
  CC      kernel/kprobes.o
  CC      drivers/ata/libata-acpi.o
  CC [M]  drivers/gpu/drm/ast/ast_main.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/fifo.o
  CC      drivers/acpi/acpica/rsserial.o
  CC      drivers/acpi/acpica/rsutils.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/head.o
  CC      net/ipv4/netfilter.o
  AR      drivers/usb/common/built-in.a
  CC      kernel/hung_task.o
  CC      drivers/scsi/scsi_sysfs.o
  AR      drivers/net/pse-pd/built-in.a
  CC      drivers/net/mdio/acpi_mdio.o
  AR      drivers/net/pcs/built-in.a
  AR      drivers/net/ethernet/adi/built-in.a
  CC      net/ipv6/xfrm6_state.o
  AR      drivers/net/ethernet/alacritech/built-in.a
  AR      drivers/net/ethernet/amazon/built-in.a
  AR      drivers/net/usb/built-in.a
  AR      drivers/net/ethernet/aquantia/built-in.a
  CC [M]  drivers/net/usb/pegasus.o
  CC [M]  drivers/net/ipvlan/ipvlan_core.o
  AR      drivers/net/ethernet/asix/built-in.a
  AR      drivers/net/ethernet/cadence/built-in.a
  AR      drivers/net/ethernet/broadcom/built-in.a
  CC [M]  drivers/net/ethernet/broadcom/b44.o
  CC [M]  drivers/net/ipvlan/ipvlan_main.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.o
  CC      net/ipv6/xfrm6_input.o
  CC [M]  drivers/gpu/drm/drm_atomic.o
  CC      arch/x86/kernel/ftrace.o
  CC [M]  drivers/net/ipvlan/ipvlan_l3s.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/mem.o
  CC      drivers/acpi/fan_core.o
  CC      drivers/usb/host/ehci-hcd.o
  AR      drivers/input/serio/built-in.a
  CC [M]  drivers/gpu/drm/ast/ast_mm.o
  CC [M]  drivers/net/usb/rtl8150.o
  CC [M]  drivers/gpu/drm/drm_atomic_uapi.o
  CC      lib/kfifo.o
  CC      drivers/acpi/acpica/rsxface.o
  CC [M]  drivers/gpu/drm/drm_auth.o
  CC      kernel/watchdog.o
  CC      drivers/net/phy/phy_device.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/mmu.o
  CC      drivers/net/phy/linkmode.o
  CC [M]  drivers/gpu/drm/i915/i915_ioctl.o
  CC      drivers/net/mdio/fwnode_mdio.o
  CC [M]  drivers/gpu/drm/ast/ast_mode.o
  CC      mm/page_counter.o
  CC      fs/btrfs/accessors.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/outp.o
  CC      drivers/ata/libata-pata-timings.o
  CC      drivers/ata/ahci.o
  CC      mm/memcontrol.o
  AR      net/sunrpc/built-in.a
  CC [M]  drivers/gpu/drm/drm_blend.o
  CC [M]  fs/smb/client/inode.o
  CC      drivers/acpi/acpica/tbdata.o
  CC      mm/vmpressure.o
  CC      net/ipv4/inet_diag.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/atombios_crtc.o
  AS      arch/x86/kernel/ftrace_64.o
  CC      drivers/input/keyboard/atkbd.o
  AR      drivers/input/mouse/built-in.a
  CC      mm/swap_cgroup.o
  CC      drivers/rtc/lib.o
  CC      arch/x86/kernel/trace_clock.o
  CC      drivers/rtc/class.o
  AR      drivers/i2c/algos/built-in.a
  CC      lib/percpu-refcount.o
  CC [M]  drivers/i2c/algos/i2c-algo-bit.o
  AR      drivers/i3c/built-in.a
  AR      drivers/media/i2c/built-in.a
  CC      arch/x86/kernel/trace.o
  AR      drivers/media/tuners/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_bo_evict.o
  AR      drivers/media/rc/keymaps/built-in.a
  AR      drivers/media/rc/built-in.a
  AR      drivers/ptp/built-in.a
  CC [M]  drivers/ptp/ptp_clock.o
  CC      drivers/ata/libahci.o
  AR      drivers/media/common/b2c2/built-in.a
  CC      drivers/ata/ata_piix.o
  AR      drivers/media/common/saa7146/built-in.a
  AR      drivers/scsi/built-in.a
  CC      drivers/net/phy/mdio_bus.o
  AR      drivers/media/common/siano/built-in.a
  CC      drivers/net/phy/mdio_device.o
  AR      drivers/media/common/v4l2-tpg/built-in.a
  AR      drivers/media/common/videobuf2/built-in.a
  AR      drivers/media/common/built-in.a
  CC      kernel/watchdog_perf.o
  AR      drivers/media/platform/allegro-dvt/built-in.a
  CC [M]  drivers/gpu/drm/i915/i915_irq.o
  AR      drivers/net/mdio/built-in.a
  AR      drivers/media/platform/amlogic/meson-ge2d/built-in.a
  CC [M]  drivers/gpu/drm/i915/i915_mitigations.o
  AR      drivers/media/platform/amlogic/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvif/timer.o
  CC [M]  drivers/net/vxlan/vxlan_core.o
  CC [M]  drivers/gpu/drm/i915/i915_module.o
  CC      net/ipv6/xfrm6_output.o
  AR      drivers/media/platform/amphion/built-in.a
  CC [M]  drivers/net/usb/r8152.o
  AR      drivers/media/platform/aspeed/built-in.a
  CC      drivers/acpi/acpica/tbfadt.o
  AR      drivers/media/platform/atmel/built-in.a
  LD [M]  drivers/net/ipvlan/ipvlan.o
  AR      drivers/media/platform/cadence/built-in.a
  AR      drivers/media/platform/chips-media/built-in.a
  CC [M]  drivers/gpu/drm/i915/i915_params.o
  CC      fs/btrfs/xattr.o
  AR      drivers/media/platform/intel/built-in.a
  CC      fs/pnode.o
  AR      drivers/media/platform/marvell/built-in.a
  CC [M]  drivers/net/vxlan/vxlan_multicast.o
  CC [M]  drivers/gpu/drm/xe/xe_debugfs.o
  AR      drivers/media/platform/mediatek/jpeg/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_devcoredump.o
  CC [M]  drivers/gpu/drm/xe/xe_device.o
  AR      drivers/media/platform/mediatek/mdp/built-in.a
  CC      mm/hugetlb_cgroup.o
  AR      drivers/media/platform/mediatek/vcodec/common/built-in.a
  CC      arch/x86/kernel/rethook.o
  AR      drivers/media/platform/mediatek/vcodec/encoder/built-in.a
  CC [M]  fs/smb/client/link.o
  AR      drivers/media/platform/mediatek/vcodec/decoder/built-in.a
  AR      drivers/media/platform/mediatek/vcodec/built-in.a
  AR      drivers/media/platform/mediatek/vpu/built-in.a
  AR      drivers/media/platform/mediatek/mdp3/built-in.a
  AR      drivers/media/platform/mediatek/built-in.a
  CC      drivers/rtc/interface.o
  AR      drivers/media/platform/microchip/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvif/vmm.o
  AR      drivers/media/platform/nvidia/tegra-vde/built-in.a
  AR      drivers/media/platform/nvidia/built-in.a
  AR      drivers/media/platform/nxp/dw100/built-in.a
  CC      lib/rhashtable.o
  AR      drivers/media/platform/nxp/imx-jpeg/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvif/user.o
  AR      drivers/media/platform/nxp/imx8-isi/built-in.a
  CC      arch/x86/kernel/crash_core_64.o
  AR      drivers/media/platform/nxp/built-in.a
  CC [M]  drivers/net/ethernet/broadcom/bnx2.o
  AR      drivers/media/platform/qcom/camss/built-in.a
  CC      drivers/acpi/acpica/tbfind.o
  AR      drivers/media/platform/qcom/venus/built-in.a
  AR      drivers/media/platform/qcom/built-in.a
  CC      fs/btrfs/ordered-data.o
  AR      drivers/media/platform/renesas/rcar-vin/built-in.a
  CC      drivers/acpi/acpica/tbinstal.o
  AR      drivers/media/platform/renesas/rzg2l-cru/built-in.a
  AR      drivers/media/platform/renesas/vsp1/built-in.a
  CC      drivers/i2c/busses/i2c-designware-common.o
  CC      kernel/seccomp.o
  AR      drivers/input/keyboard/built-in.a
  AR      drivers/media/platform/renesas/built-in.a
  CC      drivers/input/input.o
  CC      drivers/i2c/busses/i2c-designware-master.o
  AR      drivers/media/platform/rockchip/rga/built-in.a
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/atom.o
  CC [M]  drivers/ptp/ptp_chardev.o
  AR      drivers/media/platform/rockchip/rkisp1/built-in.a
  AR      drivers/media/platform/rockchip/built-in.a
  CC      fs/btrfs/extent_io.o
  AR      drivers/media/platform/samsung/exynos-gsc/built-in.a
  AR      drivers/media/platform/samsung/exynos4-is/built-in.a
  CC [M]  drivers/gpu/drm/ast/ast_post.o
  AR      drivers/media/platform/samsung/s3c-camif/built-in.a
  CC [M]  drivers/gpu/drm/ast/ast_dp501.o
  AR      drivers/media/platform/samsung/s5p-g2d/built-in.a
  AR      drivers/media/platform/samsung/s5p-jpeg/built-in.a
  AR      drivers/media/platform/samsung/s5p-mfc/built-in.a
  AR      drivers/media/platform/samsung/built-in.a
  AR      drivers/media/platform/st/sti/bdisp/built-in.a
  AR      drivers/media/platform/st/sti/c8sectpfe/built-in.a
  CC      arch/x86/kernel/module.o
  AR      drivers/media/platform/st/sti/delta/built-in.a
  AR      drivers/media/platform/st/sti/hva/built-in.a
  CC [M]  fs/smb/client/misc.o
  AR      drivers/media/platform/st/stm32/built-in.a
  AR      drivers/media/platform/st/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_device_sysfs.o
  CC      arch/x86/kernel/early_printk.o
  CC [M]  drivers/gpu/drm/i915/i915_pci.o
  CC      drivers/i2c/busses/i2c-designware-platdrv.o
  CC      drivers/acpi/acpica/tbprint.o
  AR      drivers/media/platform/sunxi/sun4i-csi/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_dma_buf.o
  AR      drivers/media/platform/sunxi/sun6i-csi/built-in.a
  AR      drivers/media/platform/ti/am437x/built-in.a
  AR      drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
  AR      drivers/media/platform/ti/cal/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
  AR      drivers/media/platform/ti/vpe/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-di/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_drm_client.o
  AR      drivers/media/platform/ti/davinci/built-in.a
  AR      drivers/media/platform/sunxi/sun8i-rotate/built-in.a
  AR      drivers/media/platform/sunxi/built-in.a
  AR      drivers/media/platform/ti/omap/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_exec.o
  AR      drivers/media/platform/ti/omap3isp/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_execlist.o
  AR      drivers/media/platform/ti/built-in.a
  CC [M]  drivers/gpu/drm/i915/i915_scatterlist.o
  CC      drivers/net/phy/swphy.o
  AR      drivers/media/platform/verisilicon/built-in.a
  CC      net/ipv4/tcp_diag.o
  AR      drivers/media/platform/via/built-in.a
  AR      drivers/media/platform/xilinx/built-in.a
  AR      drivers/media/platform/built-in.a
  CC [M]  drivers/gpu/drm/ast/ast_dp.o
  CC [M]  drivers/gpu/drm/i915/i915_suspend.o
  CC      net/ipv6/xfrm6_protocol.o
  CC      net/ipv4/udp_diag.o
  CC [M]  drivers/gpu/drm/nouveau/nvif/userc361.o
  AR      drivers/media/pci/ttpci/built-in.a
  CC      mm/kmemleak.o
  AR      drivers/media/pci/b2c2/built-in.a
  AR      drivers/media/pci/pluto2/built-in.a
  CC      drivers/net/phy/fixed_phy.o
  AR      drivers/media/pci/dm1105/built-in.a
  CC      drivers/usb/core/hcd.o
  AR      drivers/media/pci/pt1/built-in.a
  AR      drivers/media/pci/pt3/built-in.a
  CC [M]  drivers/net/vxlan/vxlan_vnifilter.o
  CC      drivers/acpi/acpica/tbutils.o
  AR      drivers/media/pci/mantis/built-in.a
  AR      drivers/media/pci/ngene/built-in.a
  CC      drivers/acpi/acpica/tbxface.o
  AR      drivers/media/pci/ddbridge/built-in.a
  AR      drivers/media/pci/saa7146/built-in.a
  CC [M]  drivers/net/vxlan/vxlan_mdb.o
  AR      drivers/media/pci/smipcie/built-in.a
  AR      drivers/media/pci/netup_unidvb/built-in.a
  AR      drivers/media/pci/intel/ipu3/built-in.a
  CC      mm/page_isolation.o
  AR      drivers/media/pci/intel/ivsc/built-in.a
  CC [M]  drivers/ptp/ptp_sysfs.o
  AR      drivers/media/pci/intel/built-in.a
  CC      arch/x86/kernel/hpet.o
  AR      drivers/media/pci/built-in.a
  CC      drivers/i2c/busses/i2c-designware-baytrail.o
  AR      drivers/ata/built-in.a
  AR      drivers/power/reset/built-in.a
  CC      drivers/power/supply/power_supply_core.o
  AR      drivers/media/usb/b2c2/built-in.a
  CC      fs/splice.o
  AR      drivers/media/usb/dvb-usb/built-in.a
  CC [M]  drivers/i2c/busses/i2c-scmi.o
  AR      drivers/media/usb/dvb-usb-v2/built-in.a
  CC [M]  drivers/i2c/busses/i2c-ccgx-ucsi.o
  AR      drivers/media/usb/s2255/built-in.a
  CC [M]  drivers/i2c/busses/i2c-i801.o
  AR      drivers/media/usb/siano/built-in.a
  CC      drivers/rtc/nvmem.o
  AR      drivers/media/usb/ttusb-budget/built-in.a
  AR      drivers/media/usb/ttusb-dec/built-in.a
  CC      lib/base64.o
  AR      drivers/media/usb/built-in.a
  CC [M]  drivers/net/usb/asix_devices.o
  CC [M]  drivers/net/phy/phylink.o
  AR      drivers/media/mmc/siano/built-in.a
  AR      drivers/media/mmc/built-in.a
  AR      drivers/media/firewire/built-in.a
  CC      lib/once.o
  AR      drivers/media/spi/built-in.a
  CC      drivers/acpi/acpica/tbxfload.o
  AR      drivers/media/test-drivers/built-in.a
  CC [M]  drivers/i2c/busses/i2c-isch.o
  AR      drivers/media/built-in.a
  CC [M]  drivers/i2c/busses/i2c-ismt.o
  CC      drivers/power/supply/power_supply_sysfs.o
  CC [M]  drivers/i2c/busses/i2c-piix4.o
  CC [M]  drivers/gpu/drm/i915/i915_switcheroo.o
  CC      drivers/hwmon/hwmon.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/client.o
  CC [M]  drivers/hwmon/acpi_power_meter.o
  CC      drivers/input/input-compat.o
  LD [M]  drivers/gpu/drm/ast/ast.o
  CC [M]  drivers/gpu/drm/xe/xe_exec_queue.o
  CC      drivers/usb/core/urb.o
  CC      arch/x86/kernel/amd_nb.o
  CC      drivers/rtc/dev.o
  CC      kernel/relay.o
  CC      drivers/input/input-mt.o
  CC [M]  drivers/net/phy/aquantia_main.o
  CC      drivers/rtc/proc.o
  CC [M]  drivers/gpu/drm/xe/xe_force_wake.o
  CC [M]  drivers/gpu/drm/drm_bridge.o
  CC      net/ipv4/tcp_cubic.o
  CC      drivers/input/input-poller.o
  CC      fs/btrfs/volumes.o
  CC      net/ipv6/netfilter.o
  CC      drivers/acpi/acpica/tbxfroot.o
  CC      lib/refcount.o
  CC      fs/btrfs/async-thread.o
  CC [M]  drivers/ptp/ptp_vclock.o
  CC [M]  fs/smb/client/netmisc.o
  CC      drivers/usb/host/ehci-pci.o
  CC [M]  drivers/gpu/drm/xe/xe_ggtt.o
  CC      drivers/power/supply/power_supply_leds.o
  CC      fs/sync.o
  CC      mm/early_ioremap.o
  CC      drivers/power/supply/power_supply_hwmon.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_fence.o
  CC [M]  drivers/gpu/drm/drm_cache.o
  CC      lib/rcuref.o
  AR      drivers/i2c/muxes/built-in.a
  CC      drivers/i2c/i2c-boardinfo.o
  CC [M]  drivers/i2c/muxes/i2c-mux-gpio.o
  CC      kernel/utsname_sysctl.o
  CC      drivers/acpi/acpica/utaddress.o
  CC      arch/x86/kernel/kvm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/engine.o
  CC      lib/usercopy.o
  CC      arch/x86/kernel/kvmclock.o
  CC      arch/x86/kernel/paravirt.o
  CC      drivers/rtc/sysfs.o
  CC [M]  fs/smb/client/smbencrypt.o
  CC [M]  drivers/gpu/drm/i915/i915_sysfs.o
  CC      drivers/rtc/rtc-mc146818-lib.o
  CC      fs/btrfs/ioctl.o
  CC      drivers/input/ff-core.o
  CC      drivers/usb/core/message.o
  CC [M]  drivers/net/usb/asix_common.o
  CC      drivers/usb/core/driver.o
  CC [M]  drivers/net/usb/ax88172a.o
  CC      fs/btrfs/locking.o
  CC [M]  drivers/i2c/busses/i2c-designware-pcidrv.o
  CC [M]  drivers/hwmon/coretemp.o
  AR      drivers/power/supply/built-in.a
  CC [M]  drivers/ptp/ptp_kvm_x86.o
  AR      drivers/power/built-in.a
  CC      drivers/rtc/rtc-cmos.o
  CC      drivers/usb/host/ohci-hcd.o
  AR      drivers/thermal/broadcom/built-in.a
  CC      lib/errseq.o
  CC      lib/bucket_locks.o
  AR      drivers/thermal/samsung/built-in.a
  CC      drivers/thermal/intel/intel_tcc.o
  CC      drivers/usb/host/ohci-pci.o
  CC      drivers/thermal/intel/therm_throt.o
  CC      drivers/acpi/acpica/utalloc.o
  CC [M]  drivers/ptp/ptp_kvm_common.o
  CC      drivers/usb/host/uhci-hcd.o
  AR      drivers/thermal/st/built-in.a
  CC      kernel/delayacct.o
  AR      drivers/thermal/qcom/built-in.a
  CC      fs/utimes.o
  AR      drivers/thermal/tegra/built-in.a
  CC [M]  drivers/net/ethernet/broadcom/cnic.o
  CC      mm/cma.o
  CC      fs/d_path.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      mm/secretmem.o
  AR      drivers/net/ethernet/cavium/octeon/built-in.a
  CC      net/ipv4/xfrm4_policy.o
  AR      drivers/net/ethernet/cavium/built-in.a
  CC [M]  drivers/net/usb/ax88179_178a.o
  CC      drivers/i2c/i2c-core-base.o
  CC      drivers/watchdog/watchdog_core.o
  CC [M]  drivers/gpu/drm/xe/xe_gt.o
  CC      drivers/watchdog/watchdog_dev.o
  CC      arch/x86/kernel/pvclock.o
  CC      drivers/watchdog/softdog.o
  CC      drivers/i2c/i2c-core-smbus.o
  CC      net/ipv6/fib6_rules.o
  AR      drivers/net/ethernet/cortina/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/enum.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/event.o
  CC      drivers/input/touchscreen.o
  CC      drivers/acpi/acpica/utascii.o
  CC [M]  drivers/thermal/intel/x86_pkg_temp_thermal.o
  CC      lib/generic-radix-tree.o
  LD [M]  drivers/ptp/ptp.o
  CC      lib/string_helpers.o
  CC      kernel/taskstats.o
  CC      drivers/usb/host/xhci.o
  LD [M]  drivers/i2c/busses/i2c-designware-pci.o
  CC [M]  fs/smb/client/transport.o
  AR      drivers/i2c/busses/built-in.a
  CC [M]  drivers/net/phy/aquantia_hwmon.o
  LD [M]  drivers/ptp/ptp_kvm.o
  CC      drivers/i2c/i2c-core-acpi.o
  AR      drivers/hwmon/built-in.a
  CC [M]  drivers/net/usb/cdc_ether.o
  CC [M]  fs/smb/client/cached_dir.o
  CC [M]  drivers/gpu/drm/i915/i915_utils.o
  CC      net/ipv6/proc.o
  CC      fs/btrfs/orphan.o
  CC [M]  fs/smb/client/cifs_unicode.o
  CC      drivers/usb/host/xhci-mem.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.o
  CC      drivers/acpi/acpica/utbuffer.o
  CC      drivers/acpi/acpica/utcksum.o
  CC      fs/stack.o
  AR      drivers/rtc/built-in.a
  CC      drivers/usb/core/config.o
  CC      fs/btrfs/export.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_object.o
  CC      fs/fs_struct.o
  CC      arch/x86/kernel/pcspeaker.o
  CC      arch/x86/kernel/check.o
  LD [M]  drivers/net/vxlan/vxlan.o
  CC      drivers/input/ff-memless.o
  CC      drivers/net/loopback.o
  CC      lib/hexdump.o
  CC      drivers/input/vivaldi-fmap.o
  CC      fs/btrfs/tree-log.o
  CC      mm/userfaultfd.o
  AR      drivers/thermal/intel/built-in.a
  CC      drivers/usb/core/file.o
  AR      drivers/thermal/mediatek/built-in.a
  CC      drivers/usb/core/buffer.o
  AR      drivers/watchdog/built-in.a
  CC      drivers/thermal/thermal_core.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/firmware.o
  CC      net/ipv4/xfrm4_state.o
  CC      drivers/opp/core.o
  CC [M]  drivers/md/persistent-data/dm-array.o
  CC      net/ipv4/xfrm4_input.o
  CC      drivers/usb/core/sysfs.o
  CC      drivers/acpi/acpica/utcopy.o
  CC      mm/memremap.o
  CC      drivers/md/md.o
  CC      lib/kstrtox.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_clock.o
  CC [M]  drivers/net/phy/ax88796b.o
  CC      drivers/md/md-bitmap.o
  CC [M]  drivers/net/phy/bcm7xxx.o
  CC      arch/x86/kernel/uprobes.o
  CC      fs/statfs.o
  CC [M]  drivers/net/usb/cdc_eem.o
  CC      kernel/tsacct.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_debugfs.o
  CC      mm/hmm.o
  CC      drivers/acpi/acpica/utexcep.o
  CC      net/ipv6/syncookies.o
  CC [M]  drivers/md/persistent-data/dm-bitset.o
  CC [M]  drivers/gpu/drm/i915/intel_clock_gating.o
  CC      fs/btrfs/free-space-cache.o
  CC      net/ipv4/xfrm4_output.o
  CC      drivers/input/input-leds.o
  CC      lib/debug_info.o
  CC      fs/fs_pin.o
  CC      mm/memfd.o
  CC      arch/x86/kernel/perf_regs.o
  CC      arch/x86/kernel/tracepoint.o
  CC      fs/btrfs/zlib.o
  CC      drivers/acpi/acpica/utdebug.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/gpuobj.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_idle_sysfs.o
  CC      fs/btrfs/lzo.o
  CC      drivers/thermal/thermal_sysfs.o
  CC      drivers/opp/cpu.o
  CC      mm/bootmem_info.o
  CC      kernel/tracepoint.o
  CC      kernel/latencytop.o
  CC      drivers/i2c/i2c-core-slave.o
  CC [M]  fs/smb/client/nterr.o
  CC      net/ipv4/xfrm4_protocol.o
  CC      drivers/usb/host/xhci-ext-caps.o
  CC [M]  drivers/net/phy/bcm87xx.o
  CC      drivers/usb/core/endpoint.o
  CC [M]  drivers/net/usb/smsc75xx.o
  CC [M]  drivers/md/persistent-data/dm-block-manager.o
  CC [M]  drivers/md/persistent-data/dm-space-map-common.o
  CC [M]  net/ipv4/ip_tunnel.o
  CC [M]  drivers/md/persistent-data/dm-space-map-disk.o
  CC [M]  drivers/net/usb/smsc95xx.o
  CC [M]  drivers/net/phy/bcm-phy-lib.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_mcr.o
  CC      drivers/input/mousedev.o
  CC      kernel/irq_work.o
  CC      fs/nsfs.o
  CC      drivers/acpi/acpica/utdecode.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_gart.o
  CC      arch/x86/kernel/itmt.o
  CC      arch/x86/kernel/umip.o
  CC      drivers/thermal/thermal_trip.o
  CC      drivers/opp/debugfs.o
  CC      kernel/static_call.o
  CC      drivers/input/evdev.o
  CC [M]  drivers/net/phy/broadcom.o
  CC      kernel/static_call_inline.o
  CC      drivers/usb/core/devio.o
  CC [M]  drivers/md/persistent-data/dm-space-map-metadata.o
  CC [M]  fs/smb/client/cifsencrypt.o
  CC [M]  fs/smb/client/readdir.o
  CC      net/ipv6/mip6.o
  CC      net/ipv6/addrconf_core.o
  CC      drivers/usb/host/xhci-ring.o
  CC [M]  net/ipv4/udp_tunnel_core.o
  CC      drivers/usb/host/xhci-hub.o
  AR      mm/built-in.a
  CC      drivers/thermal/thermal_helpers.o
  CC      net/ipv6/exthdrs_core.o
  CC      drivers/thermal/thermal_hwmon.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/intr.o
  CC      drivers/acpi/acpica/utdelete.o
  CC      kernel/user-return-notifier.o
  CC [M]  drivers/md/persistent-data/dm-transaction-manager.o
  CC      lib/iomap.o
  CC      drivers/i2c/i2c-dev.o
  CC      drivers/cpufreq/cpufreq.o
  CC      drivers/cpuidle/governors/menu.o
  CC      drivers/mmc/core/core.o
  CC      drivers/cpuidle/governors/haltpoll.o
  CC      drivers/acpi/fan_attr.o
  CC      drivers/mmc/host/sdhci.o
  CC      drivers/mmc/core/bus.o
  CC [M]  drivers/gpu/drm/i915/intel_device_info.o
  CC      drivers/mmc/core/host.o
  AR      drivers/opp/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/ioctl.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_pagefault.o
  CC [M]  drivers/gpu/drm/drm_client.o
  CC [M]  drivers/md/persistent-data/dm-btree.o
  CC      drivers/mmc/host/sdhci-pci-core.o
  CC      arch/x86/kernel/unwind_orc.o
  CC      kernel/padata.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sysfs.o
  CC      drivers/acpi/acpica/uterror.o
  CC [M]  net/ipv4/udp_tunnel_nic.o
  CC      drivers/thermal/gov_fair_share.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_encoders.o
  CC      drivers/acpi/acpica/uteval.o
  CC      drivers/acpi/acpica/utglobal.o
  CC      fs/btrfs/zstd.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_display.o
  CC      drivers/thermal/gov_step_wise.o
  CC [M]  drivers/net/phy/lxt.o
  CC      drivers/mmc/host/sdhci-pci-o2micro.o
  CC      drivers/cpufreq/freq_table.o
  CC [M]  drivers/gpu/drm/drm_client_modeset.o
  CC      lib/pci_iomap.o
  CC [M]  drivers/md/persistent-data/dm-btree-remove.o
  AR      drivers/input/built-in.a
  CC [M]  drivers/net/ethernet/broadcom/tg3.o
  CC      net/ipv6/ip6_checksum.o
  CC      drivers/thermal/gov_user_space.o
  CC      drivers/cpufreq/cpufreq_performance.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/memory.o
  AR      drivers/cpuidle/governors/built-in.a
  CC      drivers/mmc/core/mmc.o
  CC      drivers/cpuidle/cpuidle.o
  AR      net/ipv4/built-in.a
  CC      net/ipv6/ip6_icmp.o
  CC      drivers/acpi/acpica/uthex.o
  CC [M]  drivers/net/usb/mcs7830.o
  CC      lib/iomap_copy.o
  CC [M]  drivers/i2c/i2c-smbus.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/mm.o
  CC      drivers/cpuidle/driver.o
  CC      drivers/usb/host/xhci-dbg.o
  CC      fs/fs_types.o
  CC      drivers/usb/core/notify.o
  CC      lib/devres.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
  CC [M]  drivers/i2c/i2c-mux.o
  CC      arch/x86/kernel/callthunks.o
  CC      arch/x86/kernel/cet.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/object.o
  CC      kernel/jump_label.o
  CC      drivers/cpuidle/governor.o
  CC [M]  drivers/gpu/drm/i915/intel_memory_region.o
  AR      drivers/thermal/built-in.a
  CC [M]  fs/smb/client/ioctl.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/oproxy.o
  CC      drivers/acpi/acpica/utids.o
  CC      fs/fs_context.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.o
  AR      drivers/ufs/built-in.a
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_gem.o
  CC [M]  drivers/md/persistent-data/dm-btree-spine.o
  CC      drivers/cpuidle/sysfs.o
  CC [M]  drivers/net/phy/realtek.o
  CC [M]  drivers/gpu/drm/i915/intel_pcode.o
  CC      drivers/usb/core/generic.o
  CC [M]  fs/smb/client/sess.o
  CC      drivers/usb/host/xhci-trace.o
  CC [M]  fs/smb/client/export.o
  CC [M]  fs/smb/client/unc.o
  CC      drivers/usb/host/xhci-debugfs.o
  CC [M]  drivers/gpu/drm/i915/intel_region_ttm.o
  CC      fs/btrfs/compression.o
  CC      drivers/cpuidle/poll_state.o
  CC      drivers/mmc/host/sdhci-pci-arasan.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ring.o
  CC      fs/fs_parser.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/option.o
  CC [M]  drivers/gpu/drm/drm_color_mgmt.o
  CC      lib/check_signature.o
  CC      lib/interval_tree.o
  CC      drivers/acpi/acpica/utinit.o
  CC      net/ipv6/output_core.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_cs.o
  CC      drivers/cpufreq/cpufreq_ondemand.o
  CC      fs/btrfs/delayed-ref.o
  CC      drivers/acpi/acpica/utlock.o
  LD [M]  net/ipv4/udp_tunnel.o
  CC [M]  drivers/net/usb/usbnet.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_bios.o
  CC      drivers/usb/core/quirks.o
  CC      drivers/acpi/acpica/utmath.o
  CC      arch/x86/kernel/mmconf-fam10h_64.o
  CC      drivers/cpuidle/cpuidle-haltpoll.o
  CC [M]  fs/smb/client/winucase.o
  CC      drivers/cpufreq/cpufreq_governor.o
  CC      kernel/context_tracking.o
  CC      lib/assoc_array.o
  AR      drivers/i2c/built-in.a
  CC      drivers/acpi/acpica/utmisc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/ramht.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/subdev.o
  CC      drivers/acpi/acpica/utmutex.o
  AR      drivers/leds/trigger/built-in.a
  CC [M]  drivers/leds/trigger/ledtrig-audio.o
  LD [M]  drivers/md/persistent-data/dm-persistent-data.o
  CC      drivers/md/md-autodetect.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/core/uevent.o
  CC      lib/list_debug.o
  CC      drivers/acpi/acpica/utnonansi.o
  CC      drivers/usb/core/devices.o
  CC      drivers/acpi/acpica/utobject.o
  CC      drivers/mmc/core/mmc_ops.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  AR      drivers/cpuidle/built-in.a
  CC      fs/fsopen.o
  CC      drivers/mmc/host/sdhci-pci-dwc-mshc.o
  AR      drivers/firmware/arm_ffa/built-in.a
  CC [M]  fs/smb/client/smb2ops.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  AR      drivers/firmware/arm_scmi/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_ads.o
  CC [M]  drivers/net/phy/smsc.o
  AR      drivers/firmware/broadcom/built-in.a
  AR      drivers/firmware/cirrus/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_guc_ct.o
  CC      drivers/acpi/acpica/utosi.o
  AR      drivers/firmware/meson/built-in.a
  CC [M]  fs/smb/client/smb2maperror.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_benchmark.o
  CC      drivers/md/dm-uevent.o
  AR      drivers/leds/blink/built-in.a
  CC [M]  fs/smb/client/smb2transport.o
  AR      drivers/leds/simple/built-in.a
  CC [M]  drivers/net/usb/cdc_ncm.o
  CC      drivers/leds/led-core.o
  CC      arch/x86/kernel/vsmp_64.o
  CC      drivers/firmware/efi/libstub/efi-stub-helper.o
  CC [M]  drivers/net/usb/r8153_ecm.o
  AR      drivers/firmware/imx/built-in.a
  AR      drivers/firmware/psci/built-in.a
  CC      drivers/cpufreq/cpufreq_governor_attr_set.o
  CC      drivers/cpufreq/acpi-cpufreq.o
  CC      drivers/usb/host/xhci-pci.o
  CC      kernel/iomem.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/atombios_dp.o
  CC [M]  fs/smb/client/smb2misc.o
  CC [M]  drivers/gpu/drm/drm_connector.o
  CC      drivers/firmware/efi/libstub/gop.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_afmt.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_hwconfig.o
  CC      lib/debugobjects.o
  CC      drivers/cpufreq/intel_pstate.o
  CC      net/ipv6/protocol.o
  CC      drivers/md/dm.o
  CC      fs/btrfs/relocation.o
  CC [M]  fs/smb/client/smb2pdu.o
  CC      drivers/acpi/acpica/utownerid.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/nvfw/fw.o
  CC      drivers/acpi/acpica/utpredef.o
  CC [M]  fs/smb/client/smb2inode.o
  CC      drivers/mmc/host/sdhci-pci-gli.o
  CC      drivers/usb/core/phy.o
  AR      arch/x86/kernel/built-in.a
  CC      drivers/mmc/host/sdhci-acpi.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_log.o
  AR      arch/x86/built-in.a
  CC [M]  drivers/gpu/drm/i915/intel_runtime_pm.o
  CC      drivers/md/dm-table.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_pc.o
  CC      drivers/acpi/acpica/utresdecode.o
  CC [M]  drivers/gpu/drm/drm_crtc.o
  CC      drivers/leds/led-class.o
  CC      kernel/rseq.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/nvfw/hs.o
  CC      drivers/mmc/core/sd.o
  CC      drivers/acpi/processor_driver.o
  LD [M]  drivers/net/usb/asix.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/nvfw/ls.o
  CC      fs/btrfs/delayed-inode.o
  CC      drivers/firmware/efi/libstub/secureboot.o
  LD [M]  drivers/net/phy/aquantia.o
  AR      drivers/net/phy/built-in.a
  CC      drivers/mmc/core/sd_ops.o
  CC      drivers/firmware/efi/libstub/tpm.o
  CC      fs/init.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_submit.o
  CC [M]  drivers/gpu/drm/xe/xe_heci_gsc.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine.o
  CC      fs/btrfs/scrub.o
  CC      drivers/md/dm-target.o
  CC      drivers/acpi/acpica/utresrc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_trace_points.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/atombios_encoders.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/nvfw/acr.o
  CC      drivers/acpi/processor_thermal.o
  CC [M]  drivers/gpu/drm/drm_displayid.o
  CC      drivers/usb/core/port.o
  CC      net/ipv6/ip6_offload.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o
  CC      drivers/usb/core/hcd-pci.o
  CC      drivers/leds/led-triggers.o
  CC      lib/bitrev.o
  AR      drivers/usb/host/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_hw_fence.o
  CC      net/ipv6/tcpv6_offload.o
  CC      drivers/acpi/processor_idle.o
  CC [M]  drivers/gpu/drm/drm_drv.o
  CC      net/ipv6/exthdrs_offload.o
  CC      net/ipv6/inet6_hashtables.o
  CC      drivers/acpi/acpica/utstate.o
  CC [M]  drivers/gpu/drm/xe/xe_huc.o
  CC [M]  drivers/gpu/drm/xe/xe_huc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_irq.o
  CC      drivers/firmware/efi/libstub/file.o
  GZIP    kernel/config_data.gz
  CC      drivers/usb/storage/scsiglue.o
  CC      net/ipv6/mcast_snoop.o
  CC      drivers/usb/storage/protocol.o
  CC [M]  fs/smb/client/smb2file.o
  CC      kernel/configs.o
  CC      lib/crc16.o
  CC      drivers/usb/storage/transport.o
  CC [M]  drivers/gpu/drm/drm_dumb_buffers.o
  CC      drivers/usb/core/usb-acpi.o
  CC [M]  drivers/gpu/drm/i915/intel_sbi.o
  CC [M]  net/ipv6/ip6_udp_tunnel.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_sa.o
  CC      drivers/acpi/acpica/utstring.o
  CC      drivers/mmc/host/cqhci-core.o
  CC [M]  drivers/gpu/drm/drm_edid.o
  CC      drivers/acpi/acpica/utstrsuppt.o
  CC      lib/crc-t10dif.o
  CC      fs/kernel_read_file.o
  CC [M]  fs/smb/client/cifsacl.o
  AR      drivers/leds/built-in.a
  CC [M]  drivers/gpu/drm/drm_encoder.o
  CC      drivers/mmc/core/sdio.o
  CC      drivers/mmc/core/sdio_ops.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/nvfw/flcn.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/base.o
  CC      drivers/usb/storage/usb.o
  AR      kernel/built-in.a
  CC      drivers/acpi/processor_throttling.o
  CC      drivers/acpi/acpica/utstrtoul64.o
  AR      drivers/cpufreq/built-in.a
  CC      drivers/firmware/efi/libstub/mem.o
  CC      drivers/firmware/efi/libstub/random.o
  CC [M]  drivers/gpu/drm/drm_file.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/atombios_i2c.o
  HOSTCC  lib/gen_crc32table
  CC      drivers/firmware/efi/libstub/randomalloc.o
  CC      drivers/md/dm-linear.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/cmdq.o
  CC      drivers/md/dm-stripe.o
  CC [M]  fs/smb/client/fs_context.o
  CC [M]  drivers/gpu/drm/xe/xe_lrc.o
  AR      drivers/crypto/stm32/built-in.a
  AR      drivers/crypto/xilinx/built-in.a
  GEN     xe_wa_oob.c xe_wa_oob.h
  AR      drivers/crypto/hisilicon/built-in.a
  GEN     xe_wa_oob.c xe_wa_oob.h
  AR      drivers/crypto/intel/keembay/built-in.a
  AR      drivers/crypto/starfive/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_mmio.o
  AR      drivers/crypto/intel/ixp4xx/built-in.a
  CC      lib/libcrc32c.o
  AR      drivers/crypto/intel/built-in.a
  CC [M]  fs/smb/client/dns_resolve.o
  AR      drivers/crypto/built-in.a
  AR      drivers/usb/core/built-in.a
  CC      drivers/acpi/processor_perflib.o
  CC      drivers/firmware/efi/libstub/pci.o
  ASN.1   fs/smb/client/cifs_spnego_negtokeninit.asn1.[ch]
  CC      fs/btrfs/backref.o
  AR      drivers/firmware/smccc/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_mocs.o
  CC [M]  drivers/gpu/drm/xe/xe_module.o
  CC      drivers/usb/storage/initializers.o
  CC [M]  drivers/gpu/drm/xe/xe_pat.o
  CC [M]  drivers/gpu/drm/xe/xe_pci.o
  CC      drivers/acpi/acpica/utxface.o
  CC [M]  drivers/gpu/drm/i915/intel_step.o
  CC      fs/btrfs/ulist.o
  CC      drivers/clocksource/acpi_pm.o
  CC [M]  fs/smb/client/namespace.o
  CC [M]  fs/smb/client/smb1ops.o
  CC      drivers/acpi/acpica/utxfinit.o
  CC      drivers/hid/usbhid/hid-core.o
  CC [M]  drivers/gpu/drm/drm_fourcc.o
  AR      net/ipv6/built-in.a
  AR      net/built-in.a
  CC      drivers/hid/usbhid/hiddev.o
  CC      lib/xxhash.o
  AR      drivers/net/ethernet/engleder/built-in.a
  CC      drivers/firmware/efi/libstub/skip_spaces.o
  AR      drivers/net/ethernet/ezchip/built-in.a
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.o
  CC [M]  drivers/gpu/drm/drm_framebuffer.o
  AR      drivers/net/ethernet/fungible/built-in.a
  CC      drivers/firmware/efi/libstub/lib-cmdline.o
  CC [M]  drivers/gpu/drm/drm_gem.o
  CC [M]  drivers/gpu/drm/drm_ioctl.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.o
  CC      drivers/acpi/container.o
  CC      drivers/firmware/efi/libstub/lib-ctype.o
  CC      drivers/usb/storage/sierra_ms.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/fw.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ib.o
  CC [M]  drivers/mmc/host/sdhci-pltfm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_pll.o
  CC      drivers/firmware/efi/libstub/alignedmem.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.o
  CC      drivers/mmc/core/sdio_bus.o
  CC      drivers/md/dm-ioctl.o
  CC [M]  drivers/gpu/drm/xe/xe_pcode.o
  CC      drivers/md/dm-io.o
  CC      drivers/acpi/acpica/utxferror.o
  CC      drivers/firmware/efi/libstub/relocate.o
  CC      drivers/mmc/core/sdio_cis.o
  CC      drivers/firmware/efi/libstub/printk.o
  CC      drivers/clocksource/i8253.o
  CC      drivers/firmware/efi/libstub/vsprintf.o
  CC      drivers/firmware/efi/libstub/x86-stub.o
  CC [M]  fs/smb/client/cifssmb.o
  CC [M]  drivers/gpu/drm/xe/xe_pm.o
  CC [M]  drivers/gpu/drm/xe/xe_preempt_fence.o
  CC      lib/genalloc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.o
  CC      drivers/md/dm-kcopyd.o
  CC      drivers/firmware/efi/libstub/x86-5lvl.o
  CC      drivers/acpi/thermal.o
  CC [M]  fs/smb/client/cifs_spnego_negtokeninit.asn1.o
  CC      drivers/firmware/efi/efi-bgrt.o
  CC      drivers/acpi/acpica/utxfmutex.o
  AR      drivers/clocksource/built-in.a
  CC      drivers/firmware/efi/efi.o
  CC      drivers/firmware/efi/vars.o
  CC      fs/btrfs/qgroup.o
  CC [M]  drivers/gpu/drm/i915/intel_uncore.o
  CC      drivers/usb/storage/option_ms.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/msgq.o
  AR      drivers/mmc/host/built-in.a
  CC      drivers/firmware/efi/reboot.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/firmware/efi/memattr.o
  CC      drivers/usb/storage/usual-tables.o
  AR      drivers/staging/media/built-in.a
  AR      drivers/staging/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_pt.o
  AR      drivers/platform/x86/amd/built-in.a
  CC      drivers/mailbox/mailbox.o
  CC      drivers/platform/x86/intel/pmc/core.o
  CC      drivers/platform/x86/intel/pmc/core_ssram.o
  CC      drivers/platform/x86/intel/pmc/spt.o
  AR      drivers/firmware/tegra/built-in.a
  CC [M]  drivers/platform/x86/intel/pmt/class.o
  CC      drivers/mmc/core/sdio_io.o
  CC      drivers/mailbox/pcc.o
  STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
  CC [M]  drivers/gpu/drm/drm_lease.o
  CC      drivers/platform/x86/intel/pmc/cnp.o
  STUBCPY drivers/firmware/efi/libstub/mem.stub.o
  AR      drivers/acpi/acpica/built-in.a
  CC [M]  drivers/platform/x86/intel/pmt/telemetry.o
  CC      drivers/firmware/efi/tpm.o
  CC [M]  drivers/gpu/drm/drm_managed.o
  CC      drivers/firmware/efi/memmap.o
  CC      drivers/usb/serial/usb-serial.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/qmgr.o
  STUBCPY drivers/firmware/efi/libstub/pci.stub.o
  STUBCPY drivers/firmware/efi/libstub/printk.stub.o
  CC      drivers/usb/serial/generic.o
  CC      lib/percpu_counter.o
  STUBCPY drivers/firmware/efi/libstub/random.stub.o
  STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
  CC [M]  drivers/gpu/drm/i915/intel_wakeref.o
  STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
  CC [M]  fs/smb/client/asn1.o
  STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
  CC      drivers/acpi/acpi_memhotplug.o
  STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
  CC [M]  drivers/gpu/drm/xe/xe_pt_walk.o
  CC      drivers/acpi/ioapic.o
  STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
  AR      drivers/hid/usbhid/built-in.a
  STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
  CC      drivers/hid/hid-core.o
  STUBCPY drivers/firmware/efi/libstub/x86-5lvl.stub.o
  STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
  STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
  AR      drivers/net/ethernet/huawei/built-in.a
  AR      drivers/firmware/efi/libstub/lib.a
  CC      drivers/platform/x86/p2sb.o
  CC      drivers/md/dm-sysfs.o
  CC      lib/fault-inject.o
  CC      drivers/md/dm-stats.o
  CC [M]  drivers/gpu/drm/xe/xe_query.o
  CC      drivers/acpi/battery.o
  AR      drivers/usb/storage/built-in.a
  CC      drivers/usb/serial/bus.o
  CC      drivers/hid/hid-input.o
  CC      drivers/devfreq/devfreq.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.o
  CC      drivers/hid/hid-quirks.o
  CC [M]  drivers/devfreq/governor_simpleondemand.o
  CC      drivers/firmware/efi/esrt.o
  AR      drivers/firmware/xilinx/built-in.a
  CC      drivers/usb/serial/console.o
  CC      drivers/usb/serial/ftdi_sio.o
  CC      drivers/firmware/dmi_scan.o
  CC      drivers/md/dm-rq.o
  CC      drivers/platform/x86/intel/pmc/icl.o
  CC      drivers/firmware/efi/efi-pstore.o
  CC [M]  drivers/gpu/drm/xe/xe_range_fence.o
  AR      drivers/mailbox/built-in.a
  CC      lib/syscall.o
  CC [M]  drivers/platform/x86/intel/pmt/crashlog.o
  CC      drivers/powercap/powercap_sys.o
  AR      drivers/perf/built-in.a
  LD [M]  drivers/platform/x86/intel/pmt/pmt_class.o
  CC      drivers/powercap/intel_rapl_common.o
  CC      drivers/acpi/hed.o
  LD [M]  drivers/platform/x86/intel/pmt/pmt_telemetry.o
  CC      drivers/acpi/bgrt.o
  CC      drivers/mmc/core/sdio_irq.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_sync.o
  CC      drivers/powercap/intel_rapl_msr.o
  CC      drivers/firmware/dmi-sysfs.o
  CC      drivers/usb/serial/pl2303.o
  CC      lib/dynamic_debug.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/v1.o
  CC [M]  drivers/devfreq/governor_performance.o
  CC      drivers/firmware/efi/cper.o
  CC      drivers/platform/x86/pmc_atom.o
  CC      drivers/acpi/cppc_acpi.o
  CC      fs/btrfs/send.o
  CC      drivers/platform/x86/intel/pmc/tgl.o
  CC      drivers/mmc/core/slot-gpio.o
  CC      fs/mnt_idmapping.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.o
  CC      drivers/firmware/efi/cper_cxl.o
  CC      drivers/platform/x86/intel/pmc/adl.o
  CC      drivers/firmware/dmi-id.o
  CC      drivers/firmware/memmap.o
  CC      drivers/platform/x86/intel/pmc/mtl.o
  CC      drivers/md/dm-io-rewind.o
  CC      drivers/md/dm-builtin.o
  CC      drivers/acpi/spcr.o
  CC      drivers/mmc/core/regulator.o
  CC      drivers/platform/x86/intel/pmc/pltdrv.o
  CC      drivers/firmware/efi/runtime-wrappers.o
  CC [M]  drivers/gpu/drm/drm_mm.o
  CC      fs/btrfs/dev-replace.o
  CC      drivers/mmc/core/debugfs.o
  LD [M]  drivers/platform/x86/intel/pmt/pmt_crashlog.o
  CC      drivers/mmc/core/block.o
  CC      fs/btrfs/raid56.o
  AR      drivers/platform/surface/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_reg_sr.o
  CC [M]  drivers/gpu/drm/i915/vlv_sideband.o
  CC      drivers/acpi/acpi_pad.o
  CC      fs/btrfs/uuid-tree.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_whitelist.o
  CC [M]  drivers/md/dm-bufio.o
  CC      drivers/ras/ras.o
  CC      drivers/ras/debugfs.o
  AR      drivers/hwtracing/intel_th/built-in.a
  CC      drivers/net/netconsole.o
  CC      drivers/mmc/core/queue.o
  CC [M]  drivers/platform/x86/wmi.o
  CC [M]  drivers/platform/x86/wmi-bmof.o
  CC [M]  drivers/net/ethernet/intel/e1000/e1000_main.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/gm200.o
  CC [M]  drivers/net/ethernet/intel/e1000/e1000_hw.o
  AR      drivers/net/ethernet/i825xx/built-in.a
  CC [M]  drivers/net/ethernet/intel/e1000/e1000_ethtool.o
  CC [M]  drivers/net/ethernet/intel/e1000/e1000_param.o
  AR      drivers/net/ethernet/microsoft/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/gp102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/ga100.o
  CC [M]  drivers/acpi/acpi_video.o
  CC [M]  drivers/net/ethernet/intel/e1000e/82571.o
  AR      drivers/usb/serial/built-in.a
  AR      drivers/usb/misc/built-in.a
  AR      drivers/powercap/built-in.a
  CC [M]  drivers/net/ethernet/intel/e1000e/ich8lan.o
  CC      drivers/usb/gadget/udc/core.o
  AR      drivers/usb/gadget/function/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvkm/falcon/ga102.o
  CC      drivers/usb/gadget/udc/trace.o
  CC [M]  drivers/gpu/drm/xe/xe_rtp.o
  CC      drivers/android/binderfs.o
  AR      drivers/platform/x86/intel/pmc/built-in.a
  AR      drivers/devfreq/built-in.a
  CC      drivers/platform/x86/intel/turbo_max_3.o
  CC      drivers/android/binder.o
  CC [M]  drivers/md/dm-bio-prison-v1.o
  CC [M]  drivers/net/dummy.o
  CC      fs/btrfs/props.o
  CC [M]  drivers/platform/x86/intel/vsec.o
  CC      drivers/firmware/efi/dev-path-parser.o
  CC [M]  drivers/usb/class/usbtmc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_preempt_mgr.o
  CC      drivers/firmware/efi/apple-properties.o
  CC [M]  drivers/platform/x86/mxm-wmi.o
  AR      drivers/nvmem/layouts/built-in.a
  CC      drivers/nvmem/core.o
  CC [M]  drivers/net/ethernet/intel/e1000e/80003es2lan.o
  CC [M]  drivers/net/ethernet/intel/igb/igb_main.o
  CC [M]  drivers/acpi/video_detect.o
  CC [M]  drivers/net/ethernet/intel/igb/igb_ethtool.o
  CC [M]  drivers/platform/x86/intel_ips.o
  CC      lib/errname.o
  CC      lib/nlattr.o
  CC      fs/btrfs/free-space-tree.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/base.o
  AR      drivers/net/ethernet/litex/built-in.a
  CC [M]  drivers/gpu/drm/i915/vlv_suspend.o
  CC [M]  drivers/net/macvlan.o
  CC      fs/btrfs/tree-checker.o
  AR      drivers/ras/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/lsfw.o
  AR      drivers/net/ethernet/microchip/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gm200.o
  CC [M]  drivers/mtd/chips/chipreg.o
  CC [M]  drivers/gpu/drm/i915/soc/intel_dram.o
  CC [M]  drivers/gpu/drm/drm_mode_config.o
  AR      drivers/net/ethernet/mscc/built-in.a
  CC [M]  drivers/platform/x86/intel/rst.o
  AR      drivers/net/ethernet/neterion/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gm20b.o
  AR      drivers/acpi/built-in.a
  AR      drivers/net/ethernet/netronome/built-in.a
  CC      drivers/hid/hid-debug.o
  CC      drivers/firmware/efi/earlycon.o
  CC [M]  drivers/gpu/drm/xe/xe_ring_ops.o
  CC [M]  drivers/gpu/drm/xe/xe_sa.o
  CC      lib/checksum.o
  CC [M]  drivers/net/mii.o
  CC [M]  drivers/uio/uio.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gp102.o
  AR      drivers/net/ethernet/ni/built-in.a
  CC      drivers/android/binder_alloc.o
  AR      drivers/net/ethernet/packetengines/built-in.a
  CC      fs/btrfs/space-info.o
  CC [M]  drivers/vfio/pci/vfio_pci_core.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.o
  CC [M]  drivers/vfio/pci/vfio_pci_intrs.o
  LD [M]  fs/smb/client/cifs.o
  CC [M]  drivers/vfio/pci/vfio_pci_rdwr.o
  CC      lib/cpu_rmap.o
  CC [M]  drivers/md/dm-bio-prison-v2.o
  CC      fs/btrfs/block-rsv.o
  LD [M]  drivers/acpi/video.o
  CC      fs/btrfs/delalloc-space.o
  AR      drivers/mmc/core/built-in.a
  AR      drivers/usb/gadget/udc/built-in.a
  AR      drivers/mmc/built-in.a
  AR      drivers/net/ethernet/realtek/built-in.a
  CC [M]  drivers/net/ethernet/realtek/8139cp.o
  AR      drivers/usb/gadget/legacy/built-in.a
  LD [M]  drivers/platform/x86/intel/intel_vsec.o
  CC      drivers/usb/gadget/usbstring.o
  LD [M]  drivers/platform/x86/intel/intel-rst.o
  CC [M]  drivers/pps/pps.o
  CC [M]  drivers/mtd/mtdcore.o
  AR      drivers/platform/x86/intel/built-in.a
  AR      drivers/nvmem/built-in.a
  CC      lib/dynamic_queue_limits.o
  CC [M]  drivers/bluetooth/btusb.o
  AR      drivers/net/ethernet/renesas/built-in.a
  CC [M]  drivers/bluetooth/btintel.o
  AR      drivers/platform/x86/built-in.a
  AR      drivers/platform/built-in.a
  CC      lib/glob.o
  CC      drivers/firmware/efi/cper-x86.o
  CC [M]  drivers/gpu/drm/drm_mode_object.o
  CC [M]  drivers/net/mdio.o
  CC      lib/strncpy_from_user.o
  CC [M]  drivers/md/dm-crypt.o
  CC [M]  drivers/dca/dca-core.o
  CC      lib/strnlen_user.o
  CC [M]  drivers/net/ethernet/intel/e1000e/mac.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gp108.o
  CC [M]  drivers/gpu/drm/xe/xe_sched_job.o
  CC      lib/net_utils.o
  CC [M]  drivers/net/tun.o
  CC [M]  drivers/md/dm-thin.o
  CC [M]  drivers/dca/dca-sysfs.o
  CC      drivers/hid/hidraw.o
  CC [M]  drivers/bluetooth/btbcm.o
  AR      drivers/net/ethernet/sfc/built-in.a
  CC [M]  drivers/gpu/drm/i915/soc/intel_gmch.o
  CC [M]  drivers/net/veth.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gv100.o
  AR      drivers/net/ethernet/smsc/built-in.a
  CC [M]  drivers/net/ethernet/smsc/smsc9420.o
  AR      drivers/net/ethernet/socionext/built-in.a
  CC [M]  drivers/mtd/mtdsuper.o
  CC      lib/sg_pool.o
  CC      lib/stackdepot.o
  CC      drivers/hid/hid-generic.o
  CC      drivers/usb/gadget/config.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/gp10b.o
  CC      fs/btrfs/block-group.o
  CC [M]  drivers/pps/kapi.o
  CC [M]  drivers/pps/sysfs.o
  CC      lib/ucs2_string.o
  CC      lib/sbitmap.o
  AR      drivers/firmware/efi/built-in.a
  AR      drivers/firmware/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_step.o
  CC [M]  drivers/ssb/main.o
  CC [M]  drivers/gpu/drm/drm_modes.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_virt.o
  CC [M]  drivers/ssb/scan.o
  CC [M]  drivers/gpu/drm/drm_modeset_lock.o
  CC [M]  drivers/mtd/mtdconcat.o
  LD [M]  drivers/dca/dca.o
  CC      lib/group_cpus.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_atomfirmware.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vf_error.o
  CC [M]  drivers/vhost/net.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/tu102.o
  CC      fs/btrfs/discard.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_82575.o
  CC [M]  drivers/vhost/vhost.o
  CC [M]  drivers/net/ethernet/intel/e1000e/manage.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_sched.o
  CC [M]  drivers/ssb/sprom.o
  CC [M]  drivers/gpu/drm/drm_plane.o
  CC [M]  drivers/mtd/mtdpart.o
  CC [M]  drivers/gpu/drm/xe/xe_sync.o
  CC [M]  drivers/vfio/pci/vfio_pci_config.o
  LD [M]  drivers/pps/pps_core.o
  CC [M]  drivers/gpu/drm/xe/xe_tile.o
  CC [M]  drivers/gpu/drm/xe/xe_tile_sysfs.o
  CC      drivers/usb/gadget/epautoconf.o
  CC      fs/btrfs/reflink.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_mac.o
  CC [M]  drivers/ssb/pci.o
  CC [M]  drivers/gpu/drm/drm_prime.o
  CC      drivers/hid/hid-a4tech.o
  CC [M]  drivers/gpu/drm/i915/soc/intel_pch.o
  CC [M]  drivers/mtd/mtdchar.o
  LD [M]  drivers/net/ethernet/intel/e1000/e1000.o
  AR      drivers/net/ethernet/vertexcom/built-in.a
  AR      drivers/net/ethernet/wangxun/built-in.a
  CC [M]  drivers/bluetooth/btrtl.o
  CC      drivers/hid/hid-apple.o
  CC      drivers/hid/hid-belkin.o
  CC [M]  lib/asn1_decoder.o
  CC [M]  drivers/net/ethernet/intel/e1000e/nvm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/ga100.o
  CC [M]  drivers/net/ethernet/intel/e1000e/phy.o
  CC [M]  drivers/net/ethernet/realtek/8139too.o
  CC [M]  drivers/gpu/drm/drm_print.o
  CC [M]  drivers/ssb/pcihost_wrapper.o
  CC      fs/btrfs/subpage.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_main.o
  CC [M]  drivers/net/ethernet/intel/igbvf/vf.o
  CC      drivers/usb/gadget/composite.o
  CC [M]  drivers/net/ethernet/intel/igbvf/mbx.o
  CC [M]  drivers/ssb/driver_chipcommon.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_main.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/acr/ga102.o
  CC      fs/btrfs/tree-mod-log.o
  GEN     lib/oid_registry_data.c
  CC [M]  drivers/vfio/pci/vfio_pci.o
  CC [M]  drivers/ssb/driver_chipcommon_pmu.o
  CC [M]  drivers/net/ethernet/intel/ixgbevf/vf.o
  CC [M]  drivers/ssb/driver_pcicore.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_common.o
  CC [M]  drivers/gpu/drm/xe/xe_trace.o
  CC [M]  lib/oid_registry.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.o
  CC      fs/btrfs/extent-io-tree.o
  AR      drivers/net/ethernet/intel/built-in.a
  CC [M]  drivers/gpu/drm/drm_property.o
  CC [M]  drivers/gpu/drm/i915/i915_memcpy.o
  CC      fs/remap_range.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_sys_mgr.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_mac.o
  CC [M]  drivers/net/ethernet/intel/igbvf/ethtool.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.o
  CC [M]  drivers/net/ethernet/intel/e1000e/param.o
  CC [M]  drivers/net/ethernet/intel/e1000e/ethtool.o
  CC      drivers/hid/hid-cherry.o
  CC      drivers/usb/gadget/functions.o
  CC      drivers/usb/gadget/configfs.o
  CC      drivers/hid/hid-chicony.o
  LD [M]  drivers/mtd/mtd.o
  CC      drivers/usb/gadget/u_f.o
  CC [M]  drivers/gpu/drm/i915/i915_mm.o
  AR      lib/lib.a
  GEN     lib/crc32table.h
  AR      drivers/net/ethernet/xilinx/built-in.a
  CC [M]  drivers/net/ethernet/intel/e1000e/netdev.o
  CC [M]  drivers/gpu/drm/i915/i915_sw_fence.o
  CC      lib/crc32.o
  LD [M]  drivers/vfio/pci/vfio-pci-core.o
  CC [M]  drivers/net/ethernet/intel/ixgbevf/mbx.o
  CC [M]  drivers/net/ethernet/intel/ixgbevf/ethtool.o
  LD [M]  drivers/vfio/pci/vfio-pci.o
  CC [M]  drivers/vfio/vfio_main.o
  CC [M]  drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.o
  CC [M]  drivers/net/ethernet/intel/ixgbevf/ipsec.o
  CC [M]  drivers/vhost/iotlb.o
  CC [M]  drivers/net/ethernet/intel/e100.o
  CC [M]  drivers/net/ethernet/intel/e1000e/ptp.o
  CC [M]  drivers/md/dm-thin-metadata.o
  CC [M]  drivers/gpu/drm/drm_syncobj.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_nvm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/base.o
  LD [M]  drivers/ssb/ssb.o
  AR      drivers/net/ethernet/synopsys/built-in.a
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_82599.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_82598.o
  LD [M]  drivers/vhost/vhost_net.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_phy.o
  AR      drivers/android/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.o
  CC      fs/buffer.o
  CC [M]  drivers/net/ethernet/realtek/r8169_main.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_phy.o
  AR      lib/built-in.a
  CC [M]  drivers/vfio/iova_bitmap.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ids.o
  CC [M]  drivers/net/ethernet/intel/igbvf/netdev.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_i225.o
  CC [M]  drivers/gpu/drm/drm_sysfs.o
  CC [M]  drivers/gpu/drm/drm_trace_points.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_base.o
  LD [M]  drivers/vhost/vhost_iotlb.o
  CC [M]  drivers/gpu/drm/i915/i915_sw_fence_work.o
  CC      drivers/hid/hid-cypress.o
  CC      fs/btrfs/fs.o
  CC      drivers/hid/hid-ezkey.o
  CC      fs/btrfs/messages.o
  CC      fs/btrfs/bio.o
  CC      fs/btrfs/lru_cache.o
  CC [M]  drivers/gpu/drm/i915/i915_syncmap.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_mbx.o
  CC [M]  drivers/net/ethernet/intel/igb/e1000_i210.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.o
  CC [M]  drivers/gpu/drm/i915/i915_user_extensions.o
  CC      fs/btrfs/acl.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_vram_mgr.o
  CC      fs/mpage.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/g84.o
  AR      drivers/usb/gadget/built-in.a
  CC [M]  drivers/net/ethernet/intel/igb/igb_ptp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.o
  AR      drivers/usb/built-in.a
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.o
  CC [M]  drivers/gpu/drm/drm_vblank.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.o
  CC [M]  drivers/vfio/group.o
  CC [M]  drivers/vfio/container.o
  CC [M]  drivers/gpu/drm/xe/xe_tuning.o
  CC [M]  drivers/gpu/drm/drm_vblank_work.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/gk20a.o
  LD [M]  drivers/md/dm-bio-prison.o
  CC      drivers/hid/hid-kensington.o
  LD [M]  drivers/md/dm-thin-pool.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/gm107.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/gm20b.o
  AR      drivers/md/built-in.a
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_mmhub.o
  CC [M]  drivers/gpu/drm/xe/xe_uc.o
  CC [M]  drivers/gpu/drm/drm_vma_manager.o
  CC [M]  drivers/gpu/drm/drm_writeback.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_nvm.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_phy.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_diag.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_ethtool.o
  CC [M]  drivers/gpu/drm/lib/drm_random.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_x540.o
  CC [M]  drivers/net/ethernet/intel/igb/igb_hwmon.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_x550.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_lib.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_hdp.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_debugfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bar/tu102.o
  AR      drivers/net/ethernet/pensando/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/bit.o
  CC [M]  drivers/gpu/drm/xe/xe_uc_fw.o
  CC [M]  drivers/gpu/drm/i915/i915_ioc32.o
  CC [M]  drivers/gpu/drm/drm_ioc32.o
  CC      fs/proc_namespace.o
  CC [M]  drivers/gpu/drm/xe/xe_vm.o
  CC      drivers/hid/hid-lg.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.o
  CC      drivers/hid/hid-lg-g15.o
  CC      drivers/hid/hid-microsoft.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.o
  CC [M]  drivers/gpu/drm/xe/xe_vm_madvise.o
  CC [M]  drivers/gpu/drm/xe/xe_wait_user_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_wa.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.o
  CC [M]  drivers/vfio/virqfd.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/conn.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/cstep.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_ptp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_csa.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/dcb.o
  CC [M]  drivers/gpu/drm/xe/xe_wopcm.o
  AR      fs/btrfs/built-in.a
  CC [M]  drivers/gpu/drm/xe/xe_hwmon.o
  CC      drivers/hid/hid-monterey.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ras.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_dump.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_tsn.o
  LD [M]  drivers/net/ethernet/intel/igbvf/igbvf.o
  CC [M]  drivers/gpu/drm/xe/xe_display.o
  CC [M]  drivers/gpu/drm/xe/display/xe_fb_pin.o
  CC [M]  drivers/net/ethernet/intel/igc/igc_xdp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/disp.o
  CC [M]  drivers/gpu/drm/drm_panel.o
  CC      fs/direct-io.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/dp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vm_sdma.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.o
  CC [M]  drivers/gpu/drm/drm_pci.o
  CC [M]  drivers/vfio/vfio_iommu_type1.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.o
  CC      fs/eventpoll.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.o
  LD [M]  drivers/net/ethernet/intel/igb/igb.o
  CC [M]  drivers/gpu/drm/i915/i915_debugfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/extdev.o
  CC [M]  drivers/gpu/drm/i915/i915_debugfs_params.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/fan.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_debugfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/gpio.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/i2c.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_display_rps.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/iccsense.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.o
  CC [M]  drivers/gpu/drm/drm_debugfs.o
  CC [M]  drivers/gpu/drm/xe/display/xe_display_misc.o
  LD [M]  drivers/net/ethernet/intel/ixgbevf/ixgbevf.o
  CC [M]  drivers/gpu/drm/drm_debugfs_crc.o
  CC [M]  drivers/net/ethernet/realtek/r8169_firmware.o
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_irq.o
  AR      drivers/hid/built-in.a
  CC [M]  drivers/gpu/drm/xe/display/ext/i915_utils.o
  CC [M]  drivers/gpu/drm/xe/i915-soc/intel_dram.o
  CC [M]  drivers/net/ethernet/realtek/r8169_phy_config.o
  LD [M]  drivers/vfio/vfio.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/amd/amdgpu/amdgpu_umc.o
  CC [M]  drivers/gpu/drm/drm_edid_load.o
  CC [M]  drivers/gpu/drm/drm_panel_orientation_quirks.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_debugfs_params.o
  CC      fs/anon_inodes.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.o
  CC [M]  drivers/gpu/drm/i915/display/intel_pipe_crc.o
  CC [M]  drivers/gpu/drm/drm_exec.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/image.o
  CC [M]  drivers/gpu/drm/drm_gpuvm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
  LD [M]  drivers/net/ethernet/intel/igc/igc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_audio.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_backlight.o
  CC      fs/signalfd.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/smu_v11_0_i2c.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/mxm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/npde.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.o
  CC [M]  drivers/gpu/drm/i915/i915_pmu.o
  CC      fs/timerfd.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_rap.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_fw_attestation.o
  CC [M]  drivers/gpu/drm/drm_buddy.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bios.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/pcir.o
  CC [M]  drivers/gpu/drm/drm_gem_shmem_helper.o
  CC [M]  drivers/gpu/drm/i915/gt/gen2_engine_cs.o
  CC      fs/eventfd.o
  CC      fs/userfaultfd.o
  CC [M]  drivers/gpu/drm/drm_suballoc.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_bw.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cdclk.o
  CC [M]  drivers/gpu/drm/drm_gem_ttm_helper.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_sysfs.o
  LD [M]  drivers/net/ethernet/realtek/r8169.o
  CC [M]  drivers/gpu/drm/i915/gt/gen6_engine_cs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_color.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_securedisplay.o
  CC [M]  drivers/gpu/drm/i915/gt/gen6_ppgtt.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
  LD [M]  drivers/net/ethernet/intel/e1000e/e1000e.o
  CC [M]  drivers/gpu/drm/drm_atomic_helper.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/perf.o
  CC [M]  drivers/gpu/drm/i915/gt/gen7_renderclear.o
  CC [M]  drivers/gpu/drm/i915/gt/gen8_engine_cs.o
  CC      fs/aio.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_debugfs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_eeprom.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_mca.o
  CC      fs/locks.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/pll.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/pmu.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_connector.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/power_budget.o
  CC [M]  drivers/net/ethernet/intel/ixgbe/ixgbe_ipsec.o
  CC      fs/binfmt_script.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.o
  CC [M]  drivers/gpu/drm/i915/gt/gen8_ppgtt.o
  CC [M]  drivers/gpu/drm/drm_atomic_state_helper.o
  CC      fs/binfmt_elf.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_lsdma.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ring_mux.o
  CC      fs/compat_binfmt_elf.o
  CC [M]  drivers/gpu/drm/drm_bridge_connector.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_xcp.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/ramcfg.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_context.o
  CC [M]  drivers/gpu/drm/drm_crtc_helper.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_context_sseu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/rammap.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadow.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_fdinfo.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_crtc_state_dump.o
  CC      fs/mbcache.o
  CC [M]  drivers/gpu/drm/drm_damage_helper.o
  CC [M]  drivers/gpu/drm/drm_encoder_slave.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cursor.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowof.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_engine_cs.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_pmu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/cik.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/cik_ih.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_cx0_phy.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowpci.o
  CC      fs/posix_acl.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowramin.o
  CC [M]  drivers/gpu/drm/drm_flip_work.o
  CC [M]  drivers/gpu/drm/drm_format_helper.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/nouveau/nvkm/subdev/bios/shadowrom.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/dce_v8_0.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_engine_pm.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_engine_user.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v7_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/cik_sdma.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/timing.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/therm.o
  CC      fs/coredump.o
  CC [M]  drivers/gpu/drm/drm_gem_atomic_helper.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/vmap.o
  CC      fs/drop_caches.o
  CC [M]  drivers/gpu/drm/drm_gem_framebuffer_helper.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs.o
  CC [M]  drivers/gpu/drm/drm_kms_helper_common.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/uvd_v4_2.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/volt.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_execlists_submission.o
  CC [M]  drivers/gpu/drm/drm_modeset_helper.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ggtt.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_debugfs_params.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/vpstate.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/xpio.o
  LD [M]  drivers/net/ethernet/intel/ixgbe/ixgbe.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
  CC [M]  drivers/gpu/drm/drm_plane_helper.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/M0203.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_device.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/M0205.o
  CC [M]  drivers/gpu/drm/drm_probe_helper.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt.o
  CC      fs/sysctls.o
  AR      drivers/net/ethernet/built-in.a
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/M0209.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vce_v2_0.o
  CC [M]  drivers/gpu/drm/drm_rect.o
  AR      drivers/net/built-in.a
  CC [M]  drivers/gpu/drm/amd/amdgpu/si.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gmc_v6_0.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
  CC      fs/fhandle.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
  CC [M]  drivers/gpu/drm/drm_self_refresh_helper.o
  CC [M]  drivers/gpu/drm/drm_simple_kms_helper.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_driver.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
  CC [M]  drivers/gpu/drm/bridge/panel.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bios/P0260.o
  CC [M]  drivers/gpu/drm/drm_fbdev_generic.o
  CC [M]  drivers/gpu/drm/drm_fb_helper.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_irq.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bus/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v6_0.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_mcr.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_pm.o
  LD [M]  drivers/gpu/drm/drm.o
  LD [M]  drivers/gpu/drm/drm_shmem_helper.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bus/hwsq.o
  LD [M]  drivers/gpu/drm/drm_suballoc_helper.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_irq.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv04.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv31.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
  LD [M]  drivers/gpu/drm/drm_ttm_helper.o
  AR      drivers/gpu/drm/built-in.a
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bus/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bus/g94.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/bus/gf100.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_requests.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_params.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/si_ih.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
  AR      fs/built-in.a
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_display_wa.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/si_dma.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/dce_v6_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/uvd_v3_1.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv04.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv40.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dmc.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gtt.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_llc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vi.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_lrc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mxgpu_vi.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_migrate.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/g84.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/gt215.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_mocs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/mcp77.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/gf100.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v6_1.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/soc15.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ppgtt.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_rc6.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_region_lmem.o
  LD [M]  drivers/gpu/drm/drm_kms_helper.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_hdcp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/emu_soc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mxgpu_ai.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v7_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/gk20a.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vega10_reg_init.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_link_training.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vega20_reg_init.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/gm20b.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_renderstate.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/pllnv04.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_reset.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ring.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/clk/pllgt215.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ring_submission.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v7_4.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v2_3.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nv.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv04.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/arct_reg_init.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv05.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_rps.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv10.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv1a.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dp_mst.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_sa_media.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mxgpu_nv.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v7_2.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_sseu.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/hdp_v4_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/hdp_v5_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dpt.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/aldebaran_reg_init.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_timeline.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv20.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_drrs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/g84.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/aldebaran.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsb.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/g98.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_dsi.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gt215.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/soc21.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_tlb.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sienna_cichlid.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/mcp89.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/smu_v13_0_10.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/nouveau/nvkm/subdev/devinit/gf100.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_wopcm.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fb.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_workarounds.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v4_3.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm107.o
  CC [M]  drivers/gpu/drm/i915/gt/shmem_utils.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fbc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm200.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fdi.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/hdp_v6_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gv100.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/tu102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v7_7.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/hdp_v5_2.o
  CC [M]  drivers/gpu/drm/i915/gt/sysfs_engines.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/lsdma_v6_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/nbio_v7_9.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/aqua_vanjaram.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/devinit/ga100.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/df_v1_7.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_global_state.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/user.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/df_v3_6.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/gp100.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_gmbus.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/df_v4_3.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/gp10b.o
  CC [M]  drivers/gpu/drm/i915/gt/gen6_renderstate.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdcp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gmc_v7_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gmc_v8_0.o
  CC [M]  drivers/gpu/drm/i915/gt/gen7_renderstate.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hdmi.o
  CC [M]  drivers/gpu/drm/i915/gt/gen8_renderstate.o
  CC [M]  drivers/gpu/drm/i915/gt/gen9_renderstate.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/gv100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fault/tu102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv04.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gmc_v9_0.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_busy.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv10.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_clflush.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v1_1.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_context.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv1a.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_create.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_domain.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv20.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_hti.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv25.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v2_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_link_bw.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv30.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_lspcon.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_internal.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/amd/amdgpu/gmc_v10_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v2_1.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_modeset_verify.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v2_3.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_panel.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv35.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv36.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_object.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv40.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv41.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv44.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v1_7.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/nouveau/nvkm/subdev/fb/nv46.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_qp_tables.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v3_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv47.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v3_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_quirks.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_2.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/i915/gem/i915_gem_lmem.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv49.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/amd/amdgpu/gmc_v11_0.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vga.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_mman.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_pages.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v3_0_1.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv4e.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_phys.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/g84.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gt215.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/mcp77.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_vrr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v3_0_3.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/mcp89.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_pm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfxhub_v1_2.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gf108.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mmhub_v1_8.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/umc_v6_0.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/amd/amdgpu/umc_v6_1.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gk104.o
  CC [M]  drivers/gpu/drm/xe/i915-display/skl_watermark.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/umc_v6_7.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/umc_v8_7.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/umc_v8_10.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_irq.o
  CC [M]  drivers/gpu/drm/xe/xe_pmu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gk110.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/nouveau/nvkm/subdev/fb/gk20a.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ih.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gm107.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gm200.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gm20b.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gp100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/iceland_ih.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/tonga_ih.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/cz_ih.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_region.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gp102.o
  CC [M]  drivers/gpu/drm/xe/i915-display/intel_fbdev.o
  CC [M]  drivers/gpu/drm/xe/xe_guc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gp10b.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gv100.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_shmem.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/tu102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ga100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vega10_ih.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vega20_ih.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
  CC [M]  drivers/gpu/drm/xe/xe_migrate.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ga102.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_klvs_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_errors_abi.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/navi10_ih.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/ih_v6_0.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv04.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_mmio_abi.h
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_stolen.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/ih_v6_1.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_psp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v3_1.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_abi.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v10_0.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_ctb_abi.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv10.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_messages_abi.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv1a.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v11_0.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_throttle.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_gem.h
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_tiling.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv20.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vma_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv40.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_irq.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v11_0_8.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv41.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v12_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv44.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv49.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/vlv_sideband_reg.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_wakeref.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_pcode.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v13_0.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_reg_defs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/psp_v13_0_4.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/dce_v10_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/dce_v11_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv4e.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_trace.h
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_ttm.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_reg.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/rammcp77.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_active_types.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_utils.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf108.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgm107.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_rlc.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_config.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/vlv_sideband.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_gem_stolen.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_mchbar_regs.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_debugfs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v8_0.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_gpu_error.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgm200.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/soc/intel_pch.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/soc/intel_dram.h
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/soc/intel_gmch.h
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_userptr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgp100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v9_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgp102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/sddr2.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gem_wait.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v9_4.o
  CC [M]  drivers/gpu/drm/i915/gem/i915_gemfs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v9_4_2.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/sddr3.o
  CC [M]  drivers/gpu/drm/i915/i915_active.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_vgpu.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_fixed.h
  CC [M]  drivers/gpu/drm/i915/i915_cmd_parser.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gddr3.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_runtime_pm.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fb/gddr5.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fuse/base.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_step.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v10_0.o
  CC [M]  drivers/gpu/drm/i915/i915_deps.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/imu_v11_0.o
  CC [M]  drivers/gpu/drm/i915/i915_gem_evict.o
  CC [M]  drivers/gpu/drm/i915/i915_gem_gtt.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_uc_fw.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_pci_config.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fuse/nv50.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_object_frontbuffer.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/gt/intel_rps.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_clock_gating.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v11_0.o
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/intel_gt_types.h
  HDRTEST drivers/gpu/drm/xe/compat-i915-headers/i915_active.h
  HDRTEST drivers/gpu/drm/xe/instructions/xe_instr_defs.h
  HDRTEST drivers/gpu/drm/xe/instructions/xe_gfxpipe_commands.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gf100.o
  HDRTEST drivers/gpu/drm/xe/instructions/xe_mi_commands.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_reg_defs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_guc_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gm107.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_gt_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/gfx_v11_0_3.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_gpu_commands.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_lrc_layout.h
  CC [M]  drivers/gpu/drm/i915/i915_gem_ww.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_engine_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/nv10.o
  HDRTEST drivers/gpu/drm/xe/tests/xe_test.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/g94.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/gf119.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/imu_v11_0_3.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gpio/ga102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.o
  CC [M]  drivers/gpu/drm/i915/i915_gem.o
  CC [M]  drivers/gpu/drm/i915/i915_query.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.o
  CC [M]  drivers/gpu/drm/i915/i915_request.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gsp/gv100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v2_4.o
  CC [M]  drivers/gpu/drm/i915/i915_scheduler.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v3_0.o
  CC [M]  drivers/gpu/drm/i915/i915_trace_points.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/gsp/ga102.o
  CC [M]  drivers/gpu/drm/i915/i915_ttm_buddy_manager.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/base.o
  HDRTEST drivers/gpu/drm/xe/tests/xe_pci_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_migrate_test.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v4_0.o
  HDRTEST drivers/gpu/drm/xe/tests/xe_dma_buf_test.h
  CC [M]  drivers/gpu/drm/i915/i915_vma.o
  HDRTEST drivers/gpu/drm/xe/tests/xe_bo_test.h
  HDRTEST drivers/gpu/drm/xe/xe_assert.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/nv04.o
  HDRTEST drivers/gpu/drm/xe/xe_bb.h
  CC [M]  drivers/gpu/drm/i915/i915_vma_resource.o
  HDRTEST drivers/gpu/drm/xe/xe_bb_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v4_4.o
  HDRTEST drivers/gpu/drm/xe/xe_bo.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/nv4e.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/nv50.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o
  HDRTEST drivers/gpu/drm/xe/xe_bo_doc.h
  HDRTEST drivers/gpu/drm/xe/xe_bo_evict.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/g94.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v5_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v5_2.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/sdma_v6_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gf117.o
  HDRTEST drivers/gpu/drm/xe/xe_bo_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gf119.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gk110.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_mes.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/gm200.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/pad.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padnv04.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padnv4e.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o
  HDRTEST drivers/gpu/drm/xe/xe_debugfs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padnv50.o
  HDRTEST drivers/gpu/drm/xe/xe_devcoredump.h
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o
  HDRTEST drivers/gpu/drm/xe/xe_devcoredump_types.h
  HDRTEST drivers/gpu/drm/xe/xe_device.h
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padg94.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padgf119.o
  HDRTEST drivers/gpu/drm/xe/xe_device_sysfs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padgm200.o
  HDRTEST drivers/gpu/drm/xe/xe_device_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/mes_v10_1.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bus.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/busnv04.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mes_v11_0.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/busnv4e.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/busnv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/busgf119.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/bit.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o
  HDRTEST drivers/gpu/drm/xe/xe_display.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxg94.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgf119.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/uvd_v5_0.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_log.o
  HDRTEST drivers/gpu/drm/xe/xe_dma_buf.h
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/i2c/anx9805.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_rc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/base.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o
  HDRTEST drivers/gpu/drm/xe/xe_drm_client.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/iccsense/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/uvd_v6_0.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_huc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/instmem/base.o
  HDRTEST drivers/gpu/drm/xe/xe_drv.h
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/uvd_v7_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv04.o
  HDRTEST drivers/gpu/drm/xe/xe_exec.h
  HDRTEST drivers/gpu/drm/xe/xe_exec_queue.h
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_huc_fw.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv40.o
  HDRTEST drivers/gpu/drm/xe/xe_exec_queue_types.h
  HDRTEST drivers/gpu/drm/xe/xe_execlist.h
  HDRTEST drivers/gpu/drm/xe/xe_execlist_types.h
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_uc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/instmem/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/instmem/gk20a.o
  HDRTEST drivers/gpu/drm/xe/xe_force_wake.h
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gf100.o
  CC [M]  drivers/gpu/drm/i915/gt/uc/intel_uc_fw.o
  HDRTEST drivers/gpu/drm/xe/xe_force_wake_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vce.o
  HDRTEST drivers/gpu/drm/xe/xe_ggtt.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/vce_v3_0.o
  CC [M]  drivers/gpu/drm/i915/gt/intel_gsc.o
  HDRTEST drivers/gpu/drm/xe/xe_ggtt_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt.h
  CC [M]  drivers/gpu/drm/i915/i915_hwmon.o
  HDRTEST drivers/gpu/drm/xe/xe_gt_clock.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_idle_sysfs.h
  CC [M]  drivers/gpu/drm/i915/display/hsw_ips.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gk104.o
  HDRTEST drivers/gpu/drm/xe/xe_gt_idle_sysfs_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm107.o
  HDRTEST drivers/gpu/drm/xe/xe_gt_mcr.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/vce_v4_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_atomic.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gm200.o
  HDRTEST drivers/gpu/drm/xe/xe_gt_pagefault.h
  CC [M]  drivers/gpu/drm/i915/display/intel_atomic_plane.o
  CC [M]  drivers/gpu/drm/i915/display/intel_audio.o
  HDRTEST drivers/gpu/drm/xe/xe_gt_printk.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sysfs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gp100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vcn_sw_ring.o
  CC [M]  drivers/gpu/drm/i915/display/intel_bios.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vcn_v1_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vcn_v2_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vcn_v2_5.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vcn_v3_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_bw.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gp102.o
  HDRTEST drivers/gpu/drm/xe/xe_gt_sysfs_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_tlb_invalidation_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_topology.h
  CC [M]  drivers/gpu/drm/i915/display/intel_cdclk.o
  CC [M]  drivers/gpu/drm/i915/display/intel_color.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/gp10b.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/ltc/ga102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/vcn_v4_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/base.o
  HDRTEST drivers/gpu/drm/xe/xe_gt_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv04.o
  HDRTEST drivers/gpu/drm/xe/xe_guc.h
  CC [M]  drivers/gpu/drm/i915/display/intel_combo_phy.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv11.o
  HDRTEST drivers/gpu/drm/xe/xe_guc_ads.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_ads_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_ct.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_ct_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.o
  HDRTEST drivers/gpu/drm/xe/xe_guc_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_exec_queue_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv17.o
  CC [M]  drivers/gpu/drm/i915/display/intel_connector.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv44.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/nv50.o
  HDRTEST drivers/gpu/drm/xe/xe_guc_fwif.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_hwconfig.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_log.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_log_types.h
  CC [M]  drivers/gpu/drm/i915/display/intel_crtc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/g84.o
  HDRTEST drivers/gpu/drm/xe/xe_guc_pc.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_pc_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.o
  HDRTEST drivers/gpu/drm/xe/xe_guc_submit.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/g98.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gt215.o
  HDRTEST drivers/gpu/drm/xe/xe_guc_submit_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.o
  CC [M]  drivers/gpu/drm/i915/display/intel_crtc_state_dump.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_cursor.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display.o
  HDRTEST drivers/gpu/drm/xe/xe_heci_gsc.h
  CC [M]  drivers/gpu/drm/i915/display/intel_display_driver.o
  HDRTEST drivers/gpu/drm/xe/xe_huc.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gf100.o
  HDRTEST drivers/gpu/drm/xe/xe_huc_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_huc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_engine.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gk20a.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gp100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/gp10b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/athub_v1_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_irq.o
  HDRTEST drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_engine_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/athub_v2_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mc/ga100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/base.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_params.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv04.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/athub_v2_1.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_power.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/athub_v3_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv41.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/smuio_v9_0.o
  HDRTEST drivers/gpu/drm/xe/xe_hw_fence.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/smuio_v11_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv44.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/nv50.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_power_map.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_power_well.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_reset.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_rps.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/g84.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_wa.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/mcp77.o
  HDRTEST drivers/gpu/drm/xe/xe_hw_fence_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gk20a.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/smuio_v11_0_6.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/smuio_v13_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/smuio_v13_0_3.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/smuio_v13_0_6.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_reset.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gm200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/mca_v3_0.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gm20b.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gp100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.o
  HDRTEST drivers/gpu/drm/xe/xe_hwmon.h
  HDRTEST drivers/gpu/drm/xe/xe_irq.h
  CC [M]  drivers/gpu/drm/i915/display/intel_dmc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_module.o
  HDRTEST drivers/gpu/drm/xe/xe_lrc.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gp10b.o
  HDRTEST drivers/gpu/drm/xe/xe_lrc_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/gv100.o
  HDRTEST drivers/gpu/drm/xe/xe_macros.h
  HDRTEST drivers/gpu/drm/xe/xe_map.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/tu102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_chardev.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dpio_phy.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_topology.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_pasid.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/mem.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dpll.o
  HDRTEST drivers/gpu/drm/xe/xe_migrate.h
  HDRTEST drivers/gpu/drm/xe/xe_migrate_doc.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/memnv04.o
  HDRTEST drivers/gpu/drm/xe/xe_mmio.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/memnv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/memgf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dpll_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv04.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv41.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dpt.o
  CC [M]  drivers/gpu/drm/i915/display/intel_drrs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_doorbell.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_flat_memory.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv44.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dsb.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmnv50.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_process.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_queue.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmmcp77.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager.o
  HDRTEST drivers/gpu/drm/xe/xe_mocs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_cik.o
  HDRTEST drivers/gpu/drm/xe/xe_module.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_vi.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgk20a.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_v9.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_v10.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgm200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_mqd_manager_v11.o
  CC [M]  drivers/gpu/drm/i915/display/intel_fb.o
  HDRTEST drivers/gpu/drm/xe/xe_pat.h
  HDRTEST drivers/gpu/drm/xe/xe_pci.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgm20b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_kernel_queue.o
  HDRTEST drivers/gpu/drm/xe/xe_pci_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_packet_manager.o
  HDRTEST drivers/gpu/drm/xe/xe_pcode.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgp10b.o
  HDRTEST drivers/gpu/drm/xe/xe_pcode_api.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmgv100.o
  HDRTEST drivers/gpu/drm/xe/xe_platform_types.h
  HDRTEST drivers/gpu/drm/xe/xe_pm.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmmtu102.o
  CC [M]  drivers/gpu/drm/i915/display/intel_fb_pin.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/umem.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/ummu.o
  CC [M]  drivers/gpu/drm/i915/display/intel_fbc.o
  CC [M]  drivers/gpu/drm/i915/display/intel_fdi.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_packet_manager_vi.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_packet_manager_v9.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mmu/uvmm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_process_queue_manager.o
  HDRTEST drivers/gpu/drm/xe/xe_pmu.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mxm/base.o
  CC [M]  drivers/gpu/drm/i915/display/intel_fifo_underrun.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_cik.o
  CC [M]  drivers/gpu/drm/i915/display/intel_frontbuffer.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mxm/mxms.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_vi.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_v9.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_v10.o
  CC [M]  drivers/gpu/drm/i915/display/intel_global_state.o
  CC [M]  drivers/gpu/drm/i915/display/intel_hdcp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/mxm/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.o
  CC [M]  drivers/gpu/drm/i915/display/intel_hdcp_gsc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_device_queue_manager_v11.o
  HDRTEST drivers/gpu/drm/xe/xe_pmu_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_interrupt.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_events.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/cik_event_interrupt.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_int_process_v9.o
  HDRTEST drivers/gpu/drm/xe/xe_preempt_fence.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_int_process_v10.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/pcie.o
  CC [M]  drivers/gpu/drm/i915/display/intel_hotplug.o
  CC [M]  drivers/gpu/drm/i915/display/intel_hotplug_irq.o
  HDRTEST drivers/gpu/drm/xe/xe_preempt_fence_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv04.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv40.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_int_process_v11.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv46.o
  HDRTEST drivers/gpu/drm/xe/xe_pt.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/nv4c.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_smi_events.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_crat.o
  HDRTEST drivers/gpu/drm/xe/xe_pt_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_debug.o
  HDRTEST drivers/gpu/drm/xe/xe_pt_walk.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_debugfs.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/g84.o
  CC [M]  drivers/gpu/drm/i915/display/intel_hti.o
  HDRTEST drivers/gpu/drm/xe/xe_query.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/g92.o
  HDRTEST drivers/gpu/drm/xe/xe_range_fence.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/g94.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/gf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/gf106.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_migrate.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_fence.o
  CC [M]  drivers/gpu/drm/i915/display/intel_link_bw.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.o
  HDRTEST drivers/gpu/drm/xe/xe_reg_sr.h
  HDRTEST drivers/gpu/drm/xe/xe_reg_sr_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.o
  HDRTEST drivers/gpu/drm/xe/xe_reg_whitelist.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/gk104.o
  HDRTEST drivers/gpu/drm/xe/xe_res_cursor.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.o
  CC [M]  drivers/gpu/drm/i915/display/intel_load_detect.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gc_9_4_3.o
  CC [M]  drivers/gpu/drm/i915/display/intel_lpe_audio.o
  HDRTEST drivers/gpu/drm/xe/xe_ring_ops.h
  CC [M]  drivers/gpu/drm/i915/display/intel_modeset_lock.o
  HDRTEST drivers/gpu/drm/xe/xe_ring_ops_types.h
  CC [M]  drivers/gpu/drm/i915/display/intel_modeset_verify.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pci/gp100.o
  HDRTEST drivers/gpu/drm/xe/xe_rtp.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.o
  CC [M]  drivers/gpu/drm/i915/display/intel_modeset_setup.o
  HDRTEST drivers/gpu/drm/xe/xe_rtp_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10_3.o
  HDRTEST drivers/gpu/drm/xe/xe_sa.h
  HDRTEST drivers/gpu/drm/xe/xe_sa_types.h
  HDRTEST drivers/gpu/drm/xe/xe_sched_job.h
  CC [M]  drivers/gpu/drm/i915/display/intel_overlay.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/base.o
  CC [M]  drivers/gpu/drm/i915/display/intel_pch_display.o
  CC [M]  drivers/gpu/drm/i915/display/intel_pch_refclk.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v11.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/memx.o
  HDRTEST drivers/gpu/drm/xe/xe_sched_job_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gt215.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.o
  HDRTEST drivers/gpu/drm/xe/xe_step.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_job.o
  HDRTEST drivers/gpu/drm/xe/xe_step_types.h
  CC [M]  drivers/gpu/drm/i915/display/intel_plane_initial.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gf100.o
  HDRTEST drivers/gpu/drm/xe/xe_sync.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_acp.o
  CC [M]  drivers/gpu/drm/i915/display/intel_pmdemand.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../acp/acp_hw.o
  HDRTEST drivers/gpu/drm/xe/xe_sync_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gf119.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_ioc32.o
  CC [M]  drivers/gpu/drm/i915/display/intel_psr.o
  CC [M]  drivers/gpu/drm/i915/display/intel_quirks.o
  HDRTEST drivers/gpu/drm/xe/xe_tile.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.o
  HDRTEST drivers/gpu/drm/xe/xe_tile_sysfs.h
  HDRTEST drivers/gpu/drm/xe/xe_tile_sysfs_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/amdgpu_hmm.o
  HDRTEST drivers/gpu/drm/xe/xe_trace.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk110.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/arcturus_ppt.o
  CC [M]  drivers/gpu/drm/i915/display/intel_sprite.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/navi10_ppt.o
  HDRTEST drivers/gpu/drm/xe/xe_ttm_stolen_mgr.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_sys_mgr.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
  CC [M]  drivers/gpu/drm/i915/display/intel_sprite_uapi.o
  HDRTEST drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
  HDRTEST drivers/gpu/drm/xe/xe_tuning.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/sienna_cichlid_ppt.o
  HDRTEST drivers/gpu/drm/xe/xe_uc.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/vangogh_ppt.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk208.o
  HDRTEST drivers/gpu/drm/xe/xe_uc_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_fw.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/cyan_skillfish_ppt.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.o
  HDRTEST drivers/gpu/drm/xe/xe_uc_fw_abi.h
  CC [M]  drivers/gpu/drm/i915/display/intel_tc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm107.o
  HDRTEST drivers/gpu/drm/xe/xe_uc_fw_types.h
  CC [M]  drivers/gpu/drm/i915/display/intel_vblank.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu11/smu_v11_0.o
  HDRTEST drivers/gpu/drm/xe/xe_uc_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu12/renoir_ppt.o
  HDRTEST drivers/gpu/drm/xe/xe_vm.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu12/smu_v12_0.o
  HDRTEST drivers/gpu/drm/xe/xe_vm_doc.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0.o
  CC [M]  drivers/gpu/drm/i915/display/intel_vga.o
  HDRTEST drivers/gpu/drm/xe/xe_vm_madvise.h
  HDRTEST drivers/gpu/drm/xe/xe_vm_types.h
  HDRTEST drivers/gpu/drm/xe/xe_wa.h
  HDRTEST drivers/gpu/drm/xe/xe_wait_user_fence.h
  HDRTEST drivers/gpu/drm/xe/xe_wopcm.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/aldebaran_ppt.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/yellow_carp_ppt.o
  HDRTEST drivers/gpu/drm/xe/xe_wopcm_types.h
  LD [M]  drivers/gpu/drm/xe/xe.o
  CC [M]  drivers/gpu/drm/i915/display/intel_wm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_0_ppt.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_4_ppt.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_5_ppt.o
  CC [M]  drivers/gpu/drm/i915/display/i9xx_plane.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_7_ppt.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.o
  CC [M]  drivers/gpu/drm/i915/display/i9xx_wm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu13/smu_v13_0_6_ppt.o
  CC [M]  drivers/gpu/drm/i915/display/skl_scaler.o
  CC [M]  drivers/gpu/drm/i915/display/skl_universal_plane.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/amdgpu_smu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/swsmu/smu_cmn.o
  CC [M]  drivers/gpu/drm/i915/display/skl_watermark.o
  CC [M]  drivers/gpu/drm/i915/display/intel_acpi.o
  CC [M]  drivers/gpu/drm/i915/display/intel_opregion.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gp10b.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smumgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gf117.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu8_smumgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/tonga_smumgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/fiji_smumgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/polaris10_smumgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gk20a.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/iceland_smumgr.o
  CC [M]  drivers/gpu/drm/i915/display/intel_fbdev.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_ch7017.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_ch7xxx.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_ivch.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu7_smumgr.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_ns2501.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gm200.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/privring/gp10b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/vega10_smumgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_sil164.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/fan.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/fannil.o
  CC [M]  drivers/gpu/drm/i915/display/dvo_tfp410.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu10_smumgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/ci_smumgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/vega12_smumgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/fanpwm.o
  CC [M]  drivers/gpu/drm/i915/display/g4x_dp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/vegam_smumgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/smu9_smumgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/smumgr/vega20_smumgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/hwmgr.o
  CC [M]  drivers/gpu/drm/i915/display/g4x_hdmi.o
  CC [M]  drivers/gpu/drm/i915/display/icl_dsi.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/fantog.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/processpptables.o
  CC [M]  drivers/gpu/drm/i915/display/intel_backlight.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/hardwaremanager.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu8_hwmgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/ic.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/temp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/nv40.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/g84.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/pppcielanes.o
  CC [M]  drivers/gpu/drm/i915/display/intel_crt.o
  CC [M]  drivers/gpu/drm/i915/display/intel_cx0_phy.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/process_pptables_v1_0.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/ppatomctrl.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/ppatomfwctrl.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_hwmgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gt215.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gf119.o
  CC [M]  drivers/gpu/drm/i915/display/intel_ddi.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gk104.o
  CC [M]  drivers/gpu/drm/i915/display/intel_ddi_buf_trans.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gm107.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gm200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_powertune.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_thermal.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_clockpowergating.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_device.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/therm/gp100.o
  CC [M]  drivers/gpu/drm/i915/display/intel_display_trace.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_processpptables.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/timer/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_hwmgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv04.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv40.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_powertune.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/timer/nv41.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_thermal.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/timer/gk20a.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu10_hwmgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/pp_psm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/top/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_processpptables.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_hwmgr.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dkl_phy.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/top/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/top/ga100.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/vfn/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/vfn/uvfn.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_thermal.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/vfn/gv100.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp_aux.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/pp_overdriver.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu_helper.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_processpptables.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_hwmgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/vfn/tu102.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp_aux_backlight.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_powertune.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_thermal.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/common_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/vfn/ga100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega10_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/base.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp_hdcp.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp_link_training.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/gpio.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega20_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/nv40.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/vega12_baco.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu9_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/gf117.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dp_mst.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/tonga_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/gk104.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dsi.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/gk20a.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/subdev/volt/gm20b.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/falcon.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/xtensa.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/bsp/g84.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/polaris_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gt215.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/fiji_baco.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/ci_baco.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dsi_vbt.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/hwmgr/smu7_baco.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/powerplay/amd_powerplay.o
  CC [M]  drivers/gpu/drm/i915/display/intel_dvo.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/legacy_dpm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gm107.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gm200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/kv_dpm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gp100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/kv_smc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/si_dpm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/legacy-dpm/si_smc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gp102.o
  CC [M]  drivers/gpu/drm/i915/display/intel_gmbus.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/amdgpu_dpm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/gv100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/amdgpu_pm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../pm/amdgpu_dpm_internal.o
  CC [M]  drivers/gpu/drm/i915/display/intel_hdmi.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_plane.o
  CC [M]  drivers/gpu/drm/i915/display/intel_lspcon.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/tu102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/ga100.o
  CC [M]  drivers/gpu/drm/i915/display/intel_lvds.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_crtc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/ce/ga102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/cipher/g84.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_irq.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/device/acpi.o
  CC [M]  drivers/gpu/drm/i915/display/intel_panel.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_mst_types.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_color.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/dc_fpu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_services.o
  CC [M]  drivers/gpu/drm/i915/display/intel_pps.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_helpers.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_pp_smu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_psr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/device/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.o
  CC [M]  drivers/gpu/drm/i915/display/intel_qp_tables.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_replay.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/device/pci.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/device/user.o
  CC [M]  drivers/gpu/drm/i915/display/intel_sdvo.o
  CC [M]  drivers/gpu/drm/i915/display/intel_snps_phy.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_hdcp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_crc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/chan.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_debugfs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/basics/conversion.o
  CC [M]  drivers/gpu/drm/i915/display/intel_tv.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/conn.o
  CC [M]  drivers/gpu/drm/i915/display/intel_vdsc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/dp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmi.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/head.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/basics/fixpt31_32.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/basics/vector.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/basics/dc_common.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser_interface.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser_helper.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table_helper.o
  CC [M]  drivers/gpu/drm/i915/display/intel_vrr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser_common.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table2.o
  CC [M]  drivers/gpu/drm/i915/display/vlv_dsi.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/command_table_helper2.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/bios_parser2.o
  CC [M]  drivers/gpu/drm/i915/display/vlv_dsi_pll.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce60/command_table_helper_dce60.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce80/command_table_helper_dce80.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/vga.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/nv04.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce110/command_table_helper_dce110.o
  CC [M]  drivers/gpu/drm/i915/i915_perf.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce112/command_table_helper_dce112.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/g84.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/bios/dce112/command_table_helper2_dce112.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/g94.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_tee.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/gt200.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_huc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/dce_calcs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/custom_float.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/bw_fixed.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_mode_lib.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_cmd.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_debugfs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_rq_dlg_helpers.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dml1_display_rq_dlg_calc.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn10/dcn10_fpu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/dcn20_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/mcp77.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/gt215.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/display_mode_vba.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_rq_dlg_calc_20.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_gsccs.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_irq.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/mcp89.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_rq_dlg_calc_20v2.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_pm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/gk104.o
  CC [M]  drivers/gpu/drm/i915/pxp/intel_pxp_session.o
  CC [M]  drivers/gpu/drm/i915/i915_gpu_error.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20v2.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/gk110.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/gm200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_rq_dlg_calc_21.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_mode_vba_21.o
  CC [M]  drivers/gpu/drm/i915/gem/selftests/i915_gem_client_blt.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/gp100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/dcn30_fpu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_mode_vba_30.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/gp102.o
  CC [M]  drivers/gpu/drm/i915/gem/selftests/igt_gem_utils.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/gv100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/display_rq_dlg_calc_30.o
  CC [M]  drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_mode_vba_31.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_rq_dlg_calc_31.o
  CC [M]  drivers/gpu/drm/i915/selftests/i915_random.o
  CC [M]  drivers/gpu/drm/i915/selftests/i915_selftest.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn314/display_mode_vba_314.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn314/display_rq_dlg_calc_314.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/tu102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_rq_dlg_calc_32.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/ga102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_util_32.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/udisp.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/uconn.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/dcn31_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/uoutp.o
  CC [M]  drivers/gpu/drm/i915/selftests/igt_atomic.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/disp/uhead.o
  CC [M]  drivers/gpu/drm/i915/selftests/igt_flush_test.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/nv04.o
  CC [M]  drivers/gpu/drm/i915/selftests/igt_live_test.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/dcn32_fpu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn321/dcn321_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/nv50.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn301/dcn301_fpu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn302/dcn302_fpu.o
  CC [M]  drivers/gpu/drm/i915/selftests/igt_mmap.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn303/dcn303_fpu.o
  CC [M]  drivers/gpu/drm/i915/selftests/igt_reset.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn314/dcn314_fpu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/gf119.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dsc/rc_calc_fpu.o
  CC [M]  drivers/gpu/drm/i915/selftests/igt_spinner.o
  CC [M]  drivers/gpu/drm/i915/selftests/librapl.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/dcn_calcs.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/dcn_calc_math.o
  CC [M]  drivers/gpu/drm/i915/i915_vgpu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dml/calcs/dcn_calc_auto.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/gv100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dkl_phy_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/user.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/usernv04.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce60/dce60_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/usernv50.o
  HDRTEST drivers/gpu/drm/i915/display/intel_crtc_state_dump.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/usergf100.o
  HDRTEST drivers/gpu/drm/i915/display/hsw_ips.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/usergf119.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/dma/usergv100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/cgrp.o
  HDRTEST drivers/gpu/drm/i915/display/g4x_hdmi.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/chan.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/chid.o
  HDRTEST drivers/gpu/drm/i915/display/intel_hdcp_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce100/dce_clk_mgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce110/dce110_clk_mgr.o
  HDRTEST drivers/gpu/drm/i915/display/intel_overlay.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/runl.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce112/dce112_clk_mgr.o
  HDRTEST drivers/gpu/drm/i915/display/skl_watermark_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/runq.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dce120/dce120_clk_mgr.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dmc.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn10/rv1_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv04.o
  HDRTEST drivers/gpu/drm/i915/display/intel_vga.h
  HDRTEST drivers/gpu/drm/i915/display/intel_audio.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn10/rv1_clk_mgr_vbios_smu.o
  HDRTEST drivers/gpu/drm/i915/display/intel_lvds.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn10/rv2_clk_mgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn20/dcn20_clk_mgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn201/dcn201_clk_mgr.o
  HDRTEST drivers/gpu/drm/i915/display/intel_modeset_setup.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv10.o
  HDRTEST drivers/gpu/drm/i915/display/intel_cdclk.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn21/rn_clk_mgr.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_limits.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn21/rn_clk_mgr_vbios_smu.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn30/dcn30_clk_mgr.o
  HDRTEST drivers/gpu/drm/i915/display/intel_hotplug.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dkl_phy.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv17.o
  HDRTEST drivers/gpu/drm/i915/display/intel_atomic.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv40.o
  HDRTEST drivers/gpu/drm/i915/display/intel_color_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/g84.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_driver.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/g98.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dpll.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn30/dcn30_clk_mgr_smu_msg.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn301/vg_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.o
  HDRTEST drivers/gpu/drm/i915/display/vlv_dsi_pll_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk110.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dp_mst.h
  HDRTEST drivers/gpu/drm/i915/display/intel_fdi_regs.h
  HDRTEST drivers/gpu/drm/i915/display/g4x_dp.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk208.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk20a.o
  HDRTEST drivers/gpu/drm/i915/display/intel_tc.h
  HDRTEST drivers/gpu/drm/i915/display/intel_display_params.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm107.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/gm200.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/gp100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/gv100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_frontbuffer.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dsi_vbt.h
  HDRTEST drivers/gpu/drm/i915/display/intel_psr.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn301/dcn301_smu.o
  HDRTEST drivers/gpu/drm/i915/display/intel_crt.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn31/dcn31_smu.o
  HDRTEST drivers/gpu/drm/i915/display/intel_opregion.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/tu102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn31/dcn31_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/ga100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_snps_phy_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn314/dcn314_smu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/ga102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/ucgrp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn314/dcn314_clk_mgr.o
  HDRTEST drivers/gpu/drm/i915/display/i9xx_wm.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/fifo/uchan.o
  HDRTEST drivers/gpu/drm/i915/display/intel_cx0_phy_regs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_global_state.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn315/dcn315_smu.o
  HDRTEST drivers/gpu/drm/i915/display/intel_lpe_audio.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn315/dcn315_clk_mgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn316/dcn316_smu.o
  HDRTEST drivers/gpu/drm/i915/display/intel_drrs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/base.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_rps.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv04.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv10.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn316/dcn316_clk_mgr.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn32/dcn32_clk_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv15.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/clk_mgr/dcn32/dcn32_clk_mgr_smu_msg.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv17.o
  HDRTEST drivers/gpu/drm/i915/display/intel_fbdev.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.o
  HDRTEST drivers/gpu/drm/i915/display/intel_pps_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv25.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_audio.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv2a.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv30.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv34.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_stream_encoder.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv35.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_link_encoder.o
  HDRTEST drivers/gpu/drm/i915/display/intel_hdmi.h
  HDRTEST drivers/gpu/drm/i915/display/intel_fdi.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_hwseq.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_mem_input.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_clock_source.o
  HDRTEST drivers/gpu/drm/i915/display/intel_fb.h
  HDRTEST drivers/gpu/drm/i915/display/intel_qp_tables.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv44.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dsb_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/nv50.o
  HDRTEST drivers/gpu/drm/i915/display/intel_vdsc.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/g84.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_scl_filters.o
  HDRTEST drivers/gpu/drm/i915/display/intel_snps_phy.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_transform.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_core.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_opp.o
  HDRTEST drivers/gpu/drm/i915/display/vlv_dsi_pll.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dvo_dev.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gt200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_dmcu.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/mcp79.o
  HDRTEST drivers/gpu/drm/i915/display/intel_hdcp.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gt215.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/mcp89.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_abm.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_ipp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_aux.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gf104.o
  HDRTEST drivers/gpu/drm/i915/display/intel_sdvo_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c_hw.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_i2c_sw.o
  HDRTEST drivers/gpu/drm/i915/display/intel_pch_refclk.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dmub_psr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gf108.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gf110.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gf117.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gf119.o
  HDRTEST drivers/gpu/drm/i915/display/intel_modeset_lock.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gk104.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_trace.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gk110.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dmub_abm.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_power.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gk110b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dmub_abm_lcd.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dce_panel_cntl.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dp_aux_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dmub_hw_lock_mgr.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gk208.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gk20a.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gm107.o
  HDRTEST drivers/gpu/drm/i915/display/i9xx_plane.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gm200.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gm20b.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dp_aux_backlight.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gp100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gp102.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dpll_mgr.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dmub_outbox.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dce/dmub_replay.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gp104.o
  HDRTEST drivers/gpu/drm/i915/display/vlv_dsi.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gp107.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/gpio_base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/gpio_service.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/hw_factory.o
  HDRTEST drivers/gpu/drm/i915/display/intel_plane_initial.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/hw_gpio.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/hw_hpd.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/hw_ddc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gp108.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/hw_generic.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/hw_translate.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gp10b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dce60/hw_translate_dce60.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/gv100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/tu102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ga102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dce60/hw_factory_dce60.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_device.h
  HDRTEST drivers/gpu/drm/i915/display/intel_fifo_underrun.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dce80/hw_translate_dce80.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dce80/hw_factory_dce80.o
  HDRTEST drivers/gpu/drm/i915/display/intel_cursor.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dce110/hw_translate_dce110.o
  HDRTEST drivers/gpu/drm/i915/display/vlv_dsi_regs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_cx0_phy.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dce110/hw_factory_dce110.o
  HDRTEST drivers/gpu/drm/i915/display/skl_scaler.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dce120/hw_translate_dce120.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv50.o
  HDRTEST drivers/gpu/drm/i915/display/intel_hti.h
  HDRTEST drivers/gpu/drm/i915/display/icl_dsi_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dce120/hw_factory_dce120.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn10/hw_translate_dcn10.o
  HDRTEST drivers/gpu/drm/i915/display/intel_atomic_plane.h
  HDRTEST drivers/gpu/drm/i915/display/skl_watermark.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn10/hw_factory_dcn10.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn20/hw_translate_dcn20.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_fbc.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn20/hw_factory_dcn20.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_reg_defs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf104.o
  HDRTEST drivers/gpu/drm/i915/display/intel_acpi.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf108.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf110.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn21/hw_translate_dcn21.o
  HDRTEST drivers/gpu/drm/i915/display/intel_connector.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn21/hw_factory_dcn21.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dpt.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf119.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn30/hw_translate_dcn30.o
  HDRTEST drivers/gpu/drm/i915/display/intel_quirks.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk104.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dp_link_training.h
  HDRTEST drivers/gpu/drm/i915/display/intel_color.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn30/hw_factory_dcn30.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn315/hw_translate_dcn315.o
  HDRTEST drivers/gpu/drm/i915/display/intel_crtc.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn315/hw_factory_dcn315.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn32/hw_translate_dcn32.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/gpio/dcn32/hw_factory_dcn32.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk110.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk110b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/irq_service.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk208.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk20a.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_debugfs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dce60/irq_service_dce60.o
  HDRTEST drivers/gpu/drm/i915/display/intel_modeset_verify.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm107.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dce80/irq_service_dce80.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_power_well.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dce110/irq_service_dce110.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dce120/irq_service_dce120.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm200.o
  HDRTEST drivers/gpu/drm/i915/display/intel_psr_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dcn10/irq_service_dcn10.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgm20b.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dcn20/irq_service_dcn20.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgp100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_wm.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgp102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dcn21/irq_service_dcn21.o
  HDRTEST drivers/gpu/drm/i915/display/intel_pipe_crc.h
  HDRTEST drivers/gpu/drm/i915/display/intel_audio_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dcn201/irq_service_dcn201.o
  HDRTEST drivers/gpu/drm/i915/display/intel_panel.h
  HDRTEST drivers/gpu/drm/i915/display/intel_sprite.h
  HDRTEST drivers/gpu/drm/i915/display/intel_wm_types.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dcn30/irq_service_dcn30.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgp104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dcn302/irq_service_dcn302.o
  HDRTEST drivers/gpu/drm/i915/display/intel_tv.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgp107.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dcn303/irq_service_dcn303.o
  HDRTEST drivers/gpu/drm/i915/display/intel_hti_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgv100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_vrr.h
  HDRTEST drivers/gpu/drm/i915/display/intel_load_detect.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxtu102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxga102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv31.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dcn31/irq_service_dcn31.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dcn314/irq_service_dcn314.o
  HDRTEST drivers/gpu/drm/i915/display/skl_universal_plane.h
  HDRTEST drivers/gpu/drm/i915/display/intel_mg_phy_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dcn315/irq_service_dcn315.o
  HDRTEST drivers/gpu/drm/i915/display/intel_bw.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv40.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_irq.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/irq/dcn32/irq_service_dcn32.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv44.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv50.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/mpeg/g84.o
  HDRTEST drivers/gpu/drm/i915/display/intel_de.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/mspdec/base.o
  HDRTEST drivers/gpu/drm/i915/display/intel_lvds_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/mspdec/g98.o
  HDRTEST drivers/gpu/drm/i915/display/intel_gmbus_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/link_detection.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/link_dpms.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gt215.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/link_factory.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/link_resource.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dvo.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/link_validation.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/msppp/base.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/msppp/g98.o
  HDRTEST drivers/gpu/drm/i915/display/intel_sdvo.h
  HDRTEST drivers/gpu/drm/i915/display/intel_dp_aux.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/msppp/gt215.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/msppp/gf100.o
  HDRTEST drivers/gpu/drm/i915/display/intel_vdsc_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/msvld/base.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/accessories/link_dp_trace.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/accessories/link_dp_cts.o
  HDRTEST drivers/gpu/drm/i915/display/intel_combo_phy.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/accessories/link_fpga.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/hwss/link_hwss_dio.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dvo_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/hwss/link_hwss_dpia.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/hwss/link_hwss_hpo_dp.o
  HDRTEST drivers/gpu/drm/i915/display/intel_gmbus.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/msvld/g98.o
  HDRTEST drivers/gpu/drm/i915/display/intel_hdcp_gsc.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/msvld/gt215.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dsi.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/msvld/mcp89.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/hwss/link_hwss_dio_fixed_vs_pe_retimer.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dmc_regs.h
  HDRTEST drivers/gpu/drm/i915/display/intel_ddi.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/msvld/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/hwss/link_hwss_hpo_fixed_vs_pe_retimer_dp.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_hpd.o
  HDRTEST drivers/gpu/drm/i915/display/intel_hotplug_irq.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/msvld/gk104.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/nvenc/base.o
  HDRTEST drivers/gpu/drm/i915/display/intel_tv_regs.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/nvenc/gm107.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/nvdec/base.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dsb.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/nvdec/gm107.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_ddc.o
  HDRTEST drivers/gpu/drm/i915/display/intel_bios.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/nvdec/ga102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dpcd.o
  HDRTEST drivers/gpu/drm/i915/display/intel_pch_display.h
  HDRTEST drivers/gpu/drm/i915/display/intel_display_types.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/pm/base.o
  HDRTEST drivers/gpu/drm/i915/display/intel_backlight.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/pm/nv40.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/pm/nv50.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dp_dpia.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/pm/g84.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/pm/gt200.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dp_training.o
  HDRTEST drivers/gpu/drm/i915/display/intel_vblank.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/pm/gt215.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/pm/gf100.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/pm/gf108.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dp.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/pm/gf117.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dp_training_8b_10b.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/pm/gk104.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dp_training_128b_132b.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sec/g98.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sec2/base.o
  HDRTEST drivers/gpu/drm/i915/display/intel_pmdemand.h
  HDRTEST drivers/gpu/drm/i915/display/intel_backlight_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dp_training_dpia.o
  HDRTEST drivers/gpu/drm/i915/display/intel_combo_phy_regs.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dp_training_auxless.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dp_training_fixed_vs_pe_retimer.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dp_phy.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_reset.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dp_capability.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_edp_panel_control.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dp_irq_handler.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_power_map.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sec2/gp102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/link/protocols/link_dp_dpia_bw.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sec2/gp108.o
  HDRTEST drivers/gpu/drm/i915/display/intel_ddi_buf_trans.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sec2/tu102.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sec2/ga102.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/virtual/virtual_link_encoder.o
  HDRTEST drivers/gpu/drm/i915/display/intel_display_wa.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sw/base.o
  HDRTEST drivers/gpu/drm/i915/display/icl_dsi.h
  HDRTEST drivers/gpu/drm/i915/display/intel_lspcon.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/virtual/virtual_stream_encoder.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sw/nv04.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sw/nv10.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dpio_phy.h
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sw/nv50.o
  HDRTEST drivers/gpu/drm/i915/display/intel_dp_hdcp.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/virtual/virtual_link_hwss.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sw/gf100.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dsc/dc_dsc.o
  HDRTEST drivers/gpu/drm/i915/display/intel_fb_pin.h
  HDRTEST drivers/gpu/drm/i915/display/intel_display_debugfs_params.h
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dsc/rc_calc.o
  CC [M]  drivers/gpu/drm/nouveau/nvkm/engine/sw/chan.o
  CC [M]  drivers/gpu/drm/amd/amdgpu/../display/dc/dsc/rc_calc_dpi.o
  HDRTEST drivers/gpu/drm/



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

* [Intel-xe] ✓ CI.Hooks: success for series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (20 preceding siblings ...)
  2023-11-03 15:44 ` [Intel-xe] ✓ CI.Build: " Patchwork
@ 2023-11-03 15:45 ` Patchwork
  2023-11-03 15:46 ` [Intel-xe] ✗ CI.checksparse: warning " Patchwork
  2023-11-03 16:19 ` [Intel-xe] ✗ CI.BAT: failure " Patchwork
  23 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2023-11-03 15:45 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
URL   : https://patchwork.freedesktop.org/series/125958/
State : success

== Summary ==

run-parts: executing /workspace/ci/hooks/00-showenv
+ pwd
+ ls -la
/workspace
total 1068
drwxrwxr-x 12 1003 1003   4096 Nov  3 15:44 .
drwxr-xr-x  1 root root   4096 Nov  3 15:44 ..
-rw-rw-r--  1 1003 1003 797646 Nov  3 15:44 build.log
-rw-rw-r--  1 1003 1003  15363 Nov  3 15:36 checkpatch.log
drwxrwxr-x  5 1003 1003   4096 Nov  3 15:33 ci
drwxrwxr-x  9 1003 1003   4096 Nov  3 15:33 docker
drwxrwxr-x  8 1003 1003   4096 Nov  3 15:33 .git
-rw-rw-r--  1 1003 1003   1340 Nov  3 15:35 git_apply.log
drwxrwxr-x  4 1003 1003   4096 Nov  3 15:33 .github
-rw-rw-r--  1 1003 1003    233 Nov  3 15:33 .groovylintrc.json
-rw-rw-r--  1 1003 1003     78 Nov  3 15:44 hooks.log
drwxrwxr-x 31 1003 1003   4096 Nov  3 15:44 kernel
-rw-rw-r--  1 1003 1003 174537 Nov  3 15:35 kernel.mbox
-rw-rw-r--  1 1003 1003  28749 Nov  3 15:37 kunit.log
-rw-rw-r--  1 1003 1003     48 Nov  3 15:35 parent.tag
drwxrwxr-x 44 1003 1003   4096 Nov  3 15:33 pipelines
-rw-rw-r--  1 1003 1003    793 Nov  3 15:33 README.adoc
drwxrwxr-x  3 1003 1003   4096 Nov  3 15:33 scripts
drwxrwxr-x  3 1003 1003   4096 Nov  3 15:33 src
drwxrwxr-x  2 1003 1003   4096 Nov  3 15:33 vars
drwxrwxr-x  2 1003 1003   4096 Nov  3 15:33 .vscode
+ uname -a
Linux 9586a08e5d6a 5.4.0-164-generic #181-Ubuntu SMP Fri Sep 1 13:41:22 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
+ 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"
+ '[' -n /workspace ']'
+ git_args='-C /workspace/kernel'
+ git_log_args=
+ git --no-pager -C /workspace/kernel log --format=oneline --abbrev-commit
3a56adafa drm/nouveau: use GPUVM common infrastructure
bbc926d18 drm/xe: Use DRM_GPUVM_RESV_PROTECTED for gpuvm
de9ca34ad drm/xe: Adapt to GPUVM tracking of external / evicted objects.
78de36f52 drm/gpuvm: track/lock/validate external/evicted objects
52179edf6 drm/xe: Adjust to commit "drm/gpuvm: add an abstraction for a VM/BO combination"
ca91b52b8 drm/gpuvm: add an abstraction for a VM / BO combination
bbc3c71e2 drm/xe: Adjust to commit drm/gpuvm: reference count drm_gpuvm structures
afa7dff32 drm/gpuvm: reference count drm_gpuvm structures
95e46a429 drm/nouveau: separately allocate struct nouveau_uvmm
abc9e1db0 drm/xe: Adjust to commit "drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm"
4998a6700 drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm
d51e40553 drm/nouveau: make use of the GPUVM's shared dma-resv
44060cb74 drm/xe: Adjust to "drm/gpuvm: add common dma-resv per struct drm_gpuvm"
0a67d1c3e drm/gpuvm: add common dma-resv per struct drm_gpuvm
c54d0d8e9 drm/nouveau: make use of drm_gpuvm_range_valid()
4fac5d494 drm/gpuvm: export drm_gpuvm_range_valid()
ae3be29ee drm/gpuvm: don't always WARN in drm_gpuvm_check_overflow()
6c2d54b09 drm/gpuvm: convert WARN() to drm_WARN() variants
58dfdb8dc drm/xe: Add Wa_14019821291
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
+ grep -q -e '^CONFIG_DRM_XE_DISPLAY=[yY]' /workspace/kernel/build64-default/.config
+ RESTORE_DISPLAY_CONFIG=1
+ trap cleanup EXIT
+ ./scripts/config --file /workspace/kernel/build64-default/.config --disable CONFIG_DRM_XE_DISPLAY
++ nproc
+ make -j48 O=/workspace/kernel/build64-default modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-default'
  SYNC    include/config/auto.conf.cmd
  GEN     Makefile
  GEN     Makefile
  UPD     include/config/kernel.release
  UPD     include/generated/compile.h
  UPD     include/generated/utsrelease.h
  DESCEND objtool
  CALL    ../scripts/checksyscalls.sh
  HOSTCC  /workspace/kernel/build64-default/tools/objtool/fixdep.o
  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/subcmd-config.o
  CC      /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.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
  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 M=drivers/gpu/drm/xe W=1
make[1]: Entering directory '/workspace/kernel/build64-default'
  CC [M]  drivers/gpu/drm/xe/xe_bb.o
  CC [M]  drivers/gpu/drm/xe/xe_bo.o
  CC [M]  drivers/gpu/drm/xe/xe_bo_evict.o
  CC [M]  drivers/gpu/drm/xe/xe_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_devcoredump.o
  CC [M]  drivers/gpu/drm/xe/xe_device.o
  CC [M]  drivers/gpu/drm/xe/xe_device_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_dma_buf.o
  CC [M]  drivers/gpu/drm/xe/xe_drm_client.o
  CC [M]  drivers/gpu/drm/xe/xe_exec.o
  CC [M]  drivers/gpu/drm/xe/xe_execlist.o
  CC [M]  drivers/gpu/drm/xe/xe_exec_queue.o
  CC [M]  drivers/gpu/drm/xe/xe_force_wake.o
  CC [M]  drivers/gpu/drm/xe/xe_ggtt.o
  CC [M]  drivers/gpu/drm/xe/xe_gt.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_clock.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_idle_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_mcr.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_pagefault.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ads.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_ct.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_hwconfig.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_log.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_pc.o
  CC [M]  drivers/gpu/drm/xe/xe_guc_submit.o
  CC [M]  drivers/gpu/drm/xe/xe_heci_gsc.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_hw_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_huc.o
  CC [M]  drivers/gpu/drm/xe/xe_huc_debugfs.o
  CC [M]  drivers/gpu/drm/xe/xe_irq.o
  CC [M]  drivers/gpu/drm/xe/xe_lrc.o
  CC [M]  drivers/gpu/drm/xe/xe_mmio.o
  CC [M]  drivers/gpu/drm/xe/xe_mocs.o
  CC [M]  drivers/gpu/drm/xe/xe_module.o
  CC [M]  drivers/gpu/drm/xe/xe_pat.o
  CC [M]  drivers/gpu/drm/xe/xe_pci.o
  CC [M]  drivers/gpu/drm/xe/xe_pcode.o
  CC [M]  drivers/gpu/drm/xe/xe_pm.o
  CC [M]  drivers/gpu/drm/xe/xe_preempt_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_pt.o
  CC [M]  drivers/gpu/drm/xe/xe_pt_walk.o
  CC [M]  drivers/gpu/drm/xe/xe_query.o
  CC [M]  drivers/gpu/drm/xe/xe_range_fence.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_sr.o
  CC [M]  drivers/gpu/drm/xe/xe_reg_whitelist.o
  CC [M]  drivers/gpu/drm/xe/xe_rtp.o
  CC [M]  drivers/gpu/drm/xe/xe_sa.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_sync.o
  CC [M]  drivers/gpu/drm/xe/xe_tile.o
  CC [M]  drivers/gpu/drm/xe/xe_tile_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_trace.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_sys_mgr.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 [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_madvise.o
  CC [M]  drivers/gpu/drm/xe/xe_wait_user_fence.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_pmu.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_bo_test.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_klvs_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_errors_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_mmio_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_pci_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_rtp_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_ctb_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_messages_abi.h
  HDRTEST drivers/gpu/drm/xe/instructions/xe_instr_defs.h
  HDRTEST drivers/gpu/drm/xe/instructions/xe_gfxpipe_commands.h
  HDRTEST drivers/gpu/drm/xe/instructions/xe_mi_commands.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_wa_test.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_reg_defs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_guc_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_gt_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_gpu_commands.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_lrc_layout.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_mchbar_regs.h
  HDRTEST drivers/gpu/drm/xe/regs/xe_engine_regs.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_pci_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_migrate_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_dma_buf_test.h
  HDRTEST drivers/gpu/drm/xe/tests/xe_bo_test.h
  HDRTEST drivers/gpu/drm/xe/xe_assert.h
  HDRTEST drivers/gpu/drm/xe/xe_bb.h
  HDRTEST drivers/gpu/drm/xe/xe_bb_types.h
  HDRTEST drivers/gpu/drm/xe/xe_bo.h
  HDRTEST drivers/gpu/drm/xe/xe_bo_doc.h
  HDRTEST drivers/gpu/drm/xe/xe_bo_evict.h
  HDRTEST drivers/gpu/drm/xe/xe_bo_types.h
  HDRTEST drivers/gpu/drm/xe/xe_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_devcoredump.h
  HDRTEST drivers/gpu/drm/xe/xe_devcoredump_types.h
  HDRTEST drivers/gpu/drm/xe/xe_device.h
  HDRTEST drivers/gpu/drm/xe/xe_device_sysfs.h
  HDRTEST drivers/gpu/drm/xe/xe_device_types.h
  HDRTEST drivers/gpu/drm/xe/xe_dma_buf.h
  HDRTEST drivers/gpu/drm/xe/xe_drm_client.h
  HDRTEST drivers/gpu/drm/xe/xe_drv.h
  HDRTEST drivers/gpu/drm/xe/xe_exec.h
  HDRTEST drivers/gpu/drm/xe/xe_exec_queue.h
  HDRTEST drivers/gpu/drm/xe/xe_exec_queue_types.h
  HDRTEST drivers/gpu/drm/xe/xe_execlist.h
  HDRTEST drivers/gpu/drm/xe/xe_execlist_types.h
  HDRTEST drivers/gpu/drm/xe/xe_force_wake.h
  HDRTEST drivers/gpu/drm/xe/xe_force_wake_types.h
  HDRTEST drivers/gpu/drm/xe/xe_ggtt.h
  HDRTEST drivers/gpu/drm/xe/xe_ggtt_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_clock.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_idle_sysfs.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_idle_sysfs_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_mcr.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_pagefault.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_printk.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sysfs.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_sysfs_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_tlb_invalidation_types.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_topology.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_ads.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_ads_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_ct.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_ct_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_exec_queue_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_fwif.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_hwconfig.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_log.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_log_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_pc.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_pc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_submit.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_submit_types.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_heci_gsc.h
  HDRTEST drivers/gpu/drm/xe/xe_huc.h
  HDRTEST drivers/gpu/drm/xe/xe_huc_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_huc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_engine.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_engine_types.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_fence.h
  HDRTEST drivers/gpu/drm/xe/xe_hw_fence_types.h
  HDRTEST drivers/gpu/drm/xe/xe_hwmon.h
  HDRTEST drivers/gpu/drm/xe/xe_irq.h
  HDRTEST drivers/gpu/drm/xe/xe_lrc.h
  HDRTEST drivers/gpu/drm/xe/xe_lrc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_macros.h
  HDRTEST drivers/gpu/drm/xe/xe_map.h
  HDRTEST drivers/gpu/drm/xe/xe_migrate.h
  HDRTEST drivers/gpu/drm/xe/xe_migrate_doc.h
  HDRTEST drivers/gpu/drm/xe/xe_mmio.h
  HDRTEST drivers/gpu/drm/xe/xe_mocs.h
  HDRTEST drivers/gpu/drm/xe/xe_module.h
  HDRTEST drivers/gpu/drm/xe/xe_pat.h
  HDRTEST drivers/gpu/drm/xe/xe_pci.h
  HDRTEST drivers/gpu/drm/xe/xe_pci_types.h
  HDRTEST drivers/gpu/drm/xe/xe_pcode.h
  HDRTEST drivers/gpu/drm/xe/xe_pcode_api.h
  HDRTEST drivers/gpu/drm/xe/xe_platform_types.h
  HDRTEST drivers/gpu/drm/xe/xe_pm.h
  HDRTEST drivers/gpu/drm/xe/xe_pmu.h
  HDRTEST drivers/gpu/drm/xe/xe_pmu_types.h
  HDRTEST drivers/gpu/drm/xe/xe_preempt_fence.h
  HDRTEST drivers/gpu/drm/xe/xe_preempt_fence_types.h
  HDRTEST drivers/gpu/drm/xe/xe_pt.h
  HDRTEST drivers/gpu/drm/xe/xe_pt_types.h
  HDRTEST drivers/gpu/drm/xe/xe_pt_walk.h
  HDRTEST drivers/gpu/drm/xe/xe_query.h
  HDRTEST drivers/gpu/drm/xe/xe_range_fence.h
  HDRTEST drivers/gpu/drm/xe/xe_reg_sr.h
  HDRTEST drivers/gpu/drm/xe/xe_reg_sr_types.h
  HDRTEST drivers/gpu/drm/xe/xe_reg_whitelist.h
  HDRTEST drivers/gpu/drm/xe/xe_res_cursor.h
  HDRTEST drivers/gpu/drm/xe/xe_ring_ops.h
  HDRTEST drivers/gpu/drm/xe/xe_ring_ops_types.h
  HDRTEST drivers/gpu/drm/xe/xe_rtp.h
  HDRTEST drivers/gpu/drm/xe/xe_rtp_types.h
  HDRTEST drivers/gpu/drm/xe/xe_sa.h
  HDRTEST drivers/gpu/drm/xe/xe_sa_types.h
  HDRTEST drivers/gpu/drm/xe/xe_sched_job.h
  HDRTEST drivers/gpu/drm/xe/xe_sched_job_types.h
  HDRTEST drivers/gpu/drm/xe/xe_step.h
  HDRTEST drivers/gpu/drm/xe/xe_step_types.h
  HDRTEST drivers/gpu/drm/xe/xe_sync.h
  HDRTEST drivers/gpu/drm/xe/xe_sync_types.h
  HDRTEST drivers/gpu/drm/xe/xe_tile.h
  HDRTEST drivers/gpu/drm/xe/xe_tile_sysfs.h
  HDRTEST drivers/gpu/drm/xe/xe_tile_sysfs_types.h
  HDRTEST drivers/gpu/drm/xe/xe_trace.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_stolen_mgr.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_sys_mgr.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_vram_mgr.h
  HDRTEST drivers/gpu/drm/xe/xe_ttm_vram_mgr_types.h
  HDRTEST drivers/gpu/drm/xe/xe_tuning.h
  HDRTEST drivers/gpu/drm/xe/xe_uc.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_fw.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_fw_abi.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_fw_types.h
  HDRTEST drivers/gpu/drm/xe/xe_uc_types.h
  HDRTEST drivers/gpu/drm/xe/xe_vm.h
  HDRTEST drivers/gpu/drm/xe/xe_vm_doc.h
  HDRTEST drivers/gpu/drm/xe/xe_vm_madvise.h
  HDRTEST drivers/gpu/drm/xe/xe_vm_types.h
  HDRTEST drivers/gpu/drm/xe/xe_wa.h
  HDRTEST drivers/gpu/drm/xe/xe_wait_user_fence.h
  HDRTEST drivers/gpu/drm/xe/xe_wopcm.h
  HDRTEST drivers/gpu/drm/xe/xe_wopcm_types.h
  GEN     xe_wa_oob.c xe_wa_oob.h
  GEN     xe_wa_oob.c xe_wa_oob.h
  CC [M]  drivers/gpu/drm/xe/xe_guc.o
  CC [M]  drivers/gpu/drm/xe/xe_migrate.o
  CC [M]  drivers/gpu/drm/xe/xe_ring_ops.o
  CC [M]  drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
  CC [M]  drivers/gpu/drm/xe/xe_vm.o
  CC [M]  drivers/gpu/drm/xe/xe_wa.o
  LD [M]  drivers/gpu/drm/xe/xe.o
  MODPOST drivers/gpu/drm/xe/Module.symvers
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/xe/tests/xe_bo_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/xe/tests/xe_dma_buf_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/xe/tests/xe_migrate_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/xe/tests/xe_pci_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/xe/tests/xe_rtp_test.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/xe/tests/xe_wa_test.o
  CC [M]  drivers/gpu/drm/xe/xe.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_bo_test.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_pci_test.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_rtp_test.mod.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_wa_test.mod.o
  LD [M]  drivers/gpu/drm/xe/xe.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_bo_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_pci_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_rtp_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_wa_test.ko
make[1]: Leaving directory '/workspace/kernel/build64-default'
+ cleanup
+ '[' 1 -eq 1 ']'
+ ./scripts/config --file /workspace/kernel/build64-default/.config --enable CONFIG_DRM_XE_DISPLAY
run-parts: executing /workspace/ci/hooks/20-kernel-doc
+ SRC_DIR=/workspace/kernel
+ cd /workspace/kernel
+ find drivers/gpu/drm/xe/ -name '*.[ch]' -not -path 'drivers/gpu/drm/xe/display/*'
+ xargs ./scripts/kernel-doc -Werror -none include/uapi/drm/xe_drm.h
All hooks done



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

* [Intel-xe] ✗ CI.checksparse: warning for series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (21 preceding siblings ...)
  2023-11-03 15:45 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
@ 2023-11-03 15:46 ` Patchwork
  2023-11-03 16:19 ` [Intel-xe] ✗ CI.BAT: failure " Patchwork
  23 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2023-11-03 15:46 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe

== Series Details ==

Series: series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
URL   : https://patchwork.freedesktop.org/series/125958/
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 58dfdb8dc78e5668f9891c798ec3191863c1e0d2
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] 28+ messages in thread

* [Intel-xe] ✗ CI.BAT: failure for series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
  2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
                   ` (22 preceding siblings ...)
  2023-11-03 15:46 ` [Intel-xe] ✗ CI.checksparse: warning " Patchwork
@ 2023-11-03 16:19 ` Patchwork
  23 siblings, 0 replies; 28+ messages in thread
From: Patchwork @ 2023-11-03 16:19 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe

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

== Series Details ==

Series: series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants
URL   : https://patchwork.freedesktop.org/series/125958/
State : failure

== Summary ==

CI Bug Log - changes from xe-467-58dfdb8dc78e5668f9891c798ec3191863c1e0d2_BAT -> xe-pw-125958v1_BAT
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with xe-pw-125958v1_BAT absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-125958v1_BAT, please notify your bug team (lgci.bug.filing@intel.com) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

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

  Additional (1): bat-dg2-oem2 

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

  Here are the unknown changes that may have been introduced in xe-pw-125958v1_BAT:

### IGT changes ###

#### Possible regressions ####

  * igt@core_hotunplug@unbind-rebind:
    - bat-adlp-7:         [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-467-58dfdb8dc78e5668f9891c798ec3191863c1e0d2/bat-adlp-7/igt@core_hotunplug@unbind-rebind.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-adlp-7/igt@core_hotunplug@unbind-rebind.html

  
#### Warnings ####

  * igt@xe_evict@evict-small-cm:
    - bat-pvc-2:          [DMESG-FAIL][3] ([Intel XE#482]) -> [FAIL][4] +2 other tests fail
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-467-58dfdb8dc78e5668f9891c798ec3191863c1e0d2/bat-pvc-2/igt@xe_evict@evict-small-cm.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-pvc-2/igt@xe_evict@evict-small-cm.html

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

  Here are the changes found in xe-pw-125958v1_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@core_hotunplug@unbind-rebind:
    - bat-atsm-2:         [PASS][5] -> [INCOMPLETE][6] ([Intel XE#764])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-467-58dfdb8dc78e5668f9891c798ec3191863c1e0d2/bat-atsm-2/igt@core_hotunplug@unbind-rebind.html
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-atsm-2/igt@core_hotunplug@unbind-rebind.html
    - bat-dg2-oem2:       NOTRUN -> [INCOMPLETE][7] ([Intel XE#764])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-dg2-oem2/igt@core_hotunplug@unbind-rebind.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][8] ([Intel XE#623])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-dg2-oem2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][9] ([Intel XE#624])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-dg2-oem2/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_addfb_basic@tile-pitch-mismatch:
    - bat-dg2-oem2:       NOTRUN -> [FAIL][10] ([Intel XE#609]) +1 other test fail
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-dg2-oem2/igt@kms_addfb_basic@tile-pitch-mismatch.html

  * igt@kms_dsc@dsc-basic:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][11] ([Intel XE#423])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-dg2-oem2/igt@kms_dsc@dsc-basic.html

  * igt@kms_flip@basic-flip-vs-wf_vblank:
    - bat-adlp-7:         [PASS][12] -> [FAIL][13] ([Intel XE#480]) +1 other test fail
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-467-58dfdb8dc78e5668f9891c798ec3191863c1e0d2/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank.html
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-adlp-7/igt@kms_flip@basic-flip-vs-wf_vblank.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][14] ([i915#5274])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-dg2-oem2/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@basic:
    - bat-dg2-oem2:       NOTRUN -> [FAIL][15] ([Intel XE#608])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-dg2-oem2/igt@kms_frontbuffer_tracking@basic.html

  * igt@kms_psr@primary_page_flip:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][16] ([Intel XE#535]) +2 other tests skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-dg2-oem2/igt@kms_psr@primary_page_flip.html

  * igt@xe_compute@compute-square:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][17] ([Intel XE#672])
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-dg2-oem2/igt@xe_compute@compute-square.html

  * igt@xe_huc_copy@huc_copy:
    - bat-dg2-oem2:       NOTRUN -> [SKIP][18] ([Intel XE#255])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-dg2-oem2/igt@xe_huc_copy@huc_copy.html

  
#### Possible fixes ####

  * {igt@xe_create@create-execqueues-leak}:
    - bat-atsm-2:         [FAIL][19] ([Intel XE#524]) -> [PASS][20]
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-467-58dfdb8dc78e5668f9891c798ec3191863c1e0d2/bat-atsm-2/igt@xe_create@create-execqueues-leak.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-atsm-2/igt@xe_create@create-execqueues-leak.html

  
#### Warnings ####

  * igt@xe_evict@evict-beng-small-cm:
    - bat-pvc-2:          [DMESG-FAIL][21] ([Intel XE#482]) -> [FAIL][22] ([Intel XE#389])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-467-58dfdb8dc78e5668f9891c798ec3191863c1e0d2/bat-pvc-2/igt@xe_evict@evict-beng-small-cm.html
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-125958v1/bat-pvc-2/igt@xe_evict@evict-beng-small-cm.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
  [Intel XE#389]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/389
  [Intel XE#423]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/423
  [Intel XE#480]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/480
  [Intel XE#482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/482
  [Intel XE#524]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/524
  [Intel XE#535]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/535
  [Intel XE#608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/608
  [Intel XE#609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/609
  [Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623
  [Intel XE#624]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/624
  [Intel XE#672]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/672
  [Intel XE#764]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/764
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274


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

  * IGT: IGT_7570 -> IGT_7573
  * Linux: xe-467-58dfdb8dc78e5668f9891c798ec3191863c1e0d2 -> xe-pw-125958v1

  IGT_7570: 1cd44e96b0419e00b9a09f8ead1369eab432d4f9 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_7573: 69485d223b256208614e9949a4a7e84bde52d5f5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-467-58dfdb8dc78e5668f9891c798ec3191863c1e0d2: 58dfdb8dc78e5668f9891c798ec3191863c1e0d2
  xe-pw-125958v1: 125958v1

== Logs ==

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

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

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

* Re: [Intel-xe] [CI v8 14/18] drm/xe: Adjust to commit "drm/gpuvm: add an abstraction for a VM/BO combination"
  2023-11-03 15:32 ` [Intel-xe] [CI v8 14/18] drm/xe: Adjust to commit "drm/gpuvm: add an abstraction for a VM/BO combination" Thomas Hellström
@ 2023-11-12 22:06   ` Dafna Hirschfeld
  0 siblings, 0 replies; 28+ messages in thread
From: Dafna Hirschfeld @ 2023-11-12 22:06 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe

On 03.11.2023 16:32, Thomas Hellström wrote:
>Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
>---
> drivers/gpu/drm/xe/xe_bo.c | 11 +++++++----
> drivers/gpu/drm/xe/xe_vm.c | 32 +++++++++++++++++++++++++-------
> 2 files changed, 32 insertions(+), 11 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
>index 6212e004c0cf..c23a5694a788 100644
>--- a/drivers/gpu/drm/xe/xe_bo.c
>+++ b/drivers/gpu/drm/xe/xe_bo.c
>@@ -453,6 +453,7 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
> 	struct dma_fence *fence;
> 	struct drm_gpuva *gpuva;
> 	struct drm_gem_object *obj = &bo->ttm.base;
>+	struct drm_gpuvm_bo *vm_bo;
> 	int ret = 0;
>
> 	dma_resv_assert_held(bo->ttm.base.resv);
>@@ -465,11 +466,12 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
> 		dma_resv_iter_end(&cursor);
> 	}
>
>-	drm_gem_for_each_gpuva(gpuva, obj) {
>-		struct xe_vma *vma = gpuva_to_vma(gpuva);
>-		struct xe_vm *vm = xe_vma_vm(vma);
>+	drm_gem_for_each_gpuvm_bo(vm_bo, obj) {
>+		drm_gpuvm_bo_for_each_va(gpuva, vm_bo) {
>+			struct xe_vma *vma = gpuva_to_vma(gpuva);
>+			struct xe_vm *vm = xe_vma_vm(vma);
>
>-		trace_xe_vma_evict(vma);
>+			trace_xe_vma_evict(vma);
>
> 		if (xe_vm_in_fault_mode(vm)) {
> 			/* Wait for pending binds / unbinds. */
>@@ -523,6 +525,7 @@ static int xe_bo_trigger_rebind(struct xe_device *xe, struct xe_bo *bo,
> 			if (vm_resv_locked)
> 				dma_resv_unlock(xe_vm_resv(vm));
> 		}
>+		}

miss identation here

> 	}
>
> 	return ret;
>diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
>index bb44e5ca224a..db5810f72911 100644
>--- a/drivers/gpu/drm/xe/xe_vm.c
>+++ b/drivers/gpu/drm/xe/xe_vm.c
>@@ -911,12 +911,21 @@ static struct xe_vma *xe_vma_create(struct xe_vm *vm,
> 		vma->gpuva.flags |= XE_VMA_ATOMIC_PTE_BIT;
>
> 	if (bo) {
>+		struct drm_gpuvm_bo *vm_bo;
>+
> 		xe_bo_assert_held(bo);
>
>+		vm_bo = drm_gpuvm_bo_obtain(vma->gpuva.vm, &bo->ttm.base);
>+		if (IS_ERR(vm_bo)) {
>+			kfree(vma);
>+			return ERR_CAST(vm_bo);
>+		}
>+
> 		drm_gem_object_get(&bo->ttm.base);
> 		vma->gpuva.gem.obj = &bo->ttm.base;
> 		vma->gpuva.gem.offset = bo_offset_or_userptr;
>-		drm_gpuva_link(&vma->gpuva);
>+		drm_gpuva_link(&vma->gpuva, vm_bo);
>+		drm_gpuvm_bo_put(vm_bo);
> 	} else /* userptr or null */ {
> 		if (!is_null) {
> 			u64 size = end - start + 1;
>@@ -998,16 +1007,19 @@ static struct xe_vma *
> bo_has_vm_references_locked(struct xe_bo *bo, struct xe_vm *vm,
> 			    struct xe_vma *ignore)
> {
>-	struct drm_gpuva *gpuva;
>+	struct drm_gpuvm_bo *vm_bo;
>+	struct drm_gpuva *va;
> 	struct drm_gem_object *obj = &bo->ttm.base;
>
> 	xe_bo_assert_held(bo);
>
>-	drm_gem_for_each_gpuva(gpuva, obj) {
>-		struct xe_vma *vma = gpuva_to_vma(gpuva);
>+	drm_gem_for_each_gpuvm_bo(vm_bo, obj) {
>+		drm_gpuvm_bo_for_each_va(va, vm_bo) {
>+			struct xe_vma *vma = gpuva_to_vma(va);
>
>-		if (vma != ignore && xe_vma_vm(vma) == vm)
>-			return vma;
>+			if (vma != ignore && xe_vma_vm(vma) == vm)
>+				return vma;
>+		}
> 	}
>
> 	return NULL;
>@@ -2169,6 +2181,7 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
> 	struct drm_gpuva_ops *ops;
> 	struct drm_gpuva_op *__op;
> 	struct xe_vma_op *op;
>+	struct drm_gpuvm_bo *vm_bo;
> 	int err;
>
> 	lockdep_assert_held_write(&vm->lock);
>@@ -2226,7 +2239,12 @@ vm_bind_ioctl_ops_create(struct xe_vm *vm, struct xe_bo *bo,
> 		err = xe_bo_lock(bo, true);
> 		if (err)
> 			return ERR_PTR(err);
>-		ops = drm_gpuvm_gem_unmap_ops_create(&vm->gpuvm, obj);
>+
>+		vm_bo = drm_gpuvm_bo_find(&vm->gpuvm, obj);
>+		if (!vm_bo)
>+			break;

I think compiler suppose to fail here since ops is not initialized.
Maybe use drm_gpuvm_bo_obtain instead of drm_gpuvm_bo_find so if no
vm_bo is there, it creates it and ops will have an empty list.

Thanks,
Dafna

>+
>+		ops = drm_gpuvm_bo_unmap_ops_create(vm_bo);
> 		xe_bo_unlock(bo);
> 		if (IS_ERR(ops))
> 			return ops;
>-- 
>2.41.0
>

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

* Re: [Intel-xe] [CI v8 09/18] drm/xe: Adjust to commit "drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm"
  2023-11-03 15:32 ` [Intel-xe] [CI v8 09/18] drm/xe: Adjust to commit "drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm" Thomas Hellström
@ 2023-11-12 22:07   ` Dafna Hirschfeld
  0 siblings, 0 replies; 28+ messages in thread
From: Dafna Hirschfeld @ 2023-11-12 22:07 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe

On 03.11.2023 16:32, Thomas Hellström wrote:
>Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
>---
> drivers/gpu/drm/xe/xe_vm.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
>index dc7991eabb58..46a87a4e42d8 100644
>--- a/drivers/gpu/drm/xe/xe_vm.c
>+++ b/drivers/gpu/drm/xe/xe_vm.c
>@@ -1385,8 +1385,8 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
> 		goto err_no_resv;
> 	}
>
>-	drm_gpuvm_init(&vm->gpuvm, "Xe VM", &xe->drm, vm_resv_obj, 0, vm->size,
>-		       0, 0, &gpuvm_ops);
>+	drm_gpuvm_init(&vm->gpuvm, "Xe VM", 0, &xe->drm, vm_resv_obj,
>+		       0, vm->size, 0, 0, &gpuvm_ops);

Maybe vm->flags can now move to vm->gpuvm->flags ?

Dafna,

>
> 	drm_gem_object_put(vm_resv_obj);
>
>-- 
>2.41.0
>

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

* Re: [Intel-xe] [CI v8 12/18] drm/xe: Adjust to commit drm/gpuvm: reference count drm_gpuvm structures
  2023-11-03 15:32 ` [Intel-xe] [CI v8 12/18] drm/xe: Adjust to commit " Thomas Hellström
@ 2023-11-13  6:14   ` Dafna Hirschfeld
  0 siblings, 0 replies; 28+ messages in thread
From: Dafna Hirschfeld @ 2023-11-13  6:14 UTC (permalink / raw)
  To: Thomas Hellström; +Cc: intel-xe

On 03.11.2023 16:32, Thomas Hellström wrote:
>Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
>---
> drivers/gpu/drm/xe/xe_vm.c       | 30 ++++++++++++------------------
> drivers/gpu/drm/xe/xe_vm.h       |  5 ++---
> drivers/gpu/drm/xe/xe_vm_types.h |  2 --
> 3 files changed, 14 insertions(+), 23 deletions(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
>index 46a87a4e42d8..bb44e5ca224a 100644
>--- a/drivers/gpu/drm/xe/xe_vm.c
>+++ b/drivers/gpu/drm/xe/xe_vm.c
>@@ -1197,8 +1197,11 @@ static struct drm_gpuva_op *xe_vm_op_alloc(void)
> 	return &op->base;
> }
>
>+static void xe_vm_free(struct drm_gpuvm *gpuvm);
>+
> static struct drm_gpuvm_ops gpuvm_ops = {
> 	.op_alloc = xe_vm_op_alloc,
>+	.vm_free = xe_vm_free,
> };
>
> static u64 pde_encode_pat_index(struct xe_device *xe, u16 pat_index)
>@@ -1346,7 +1349,6 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
> 		return ERR_PTR(-ENOMEM);
>
> 	vm->xe = xe;
>-	kref_init(&vm->refcount);
>
> 	vm->size = 1ull << xe->info.va_bits;
>
>@@ -1498,7 +1500,7 @@ struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags)
> 	}
> 	dma_resv_unlock(xe_vm_resv(vm));
> err_put:
>-	drm_gpuvm_destroy(&vm->gpuvm);
>+	//	drm_gpuvm_destroy(&vm->gpuvm);

This should be somehow replaced with xe_vm_put

Dafna,

> err_no_resv:
> 	for_each_tile(tile, xe, id)
> 		xe_range_fence_tree_fini(&vm->rftree[id]);
>@@ -1586,6 +1588,10 @@ void xe_vm_close_and_put(struct xe_vm *vm)
> 				xe_pt_destroy(vm->scratch_pt[id][i], vm->flags,
> 					      NULL);
> 		}
>+		if (vm->pt_root[id]) {
>+			xe_pt_destroy(vm->pt_root[id], vm->flags, NULL);
>+			vm->pt_root[id] = NULL;
>+		}
> 	}
> 	xe_vm_unlock(vm);
>
>@@ -1639,29 +1645,17 @@ static void vm_destroy_work_func(struct work_struct *w)
> 		}
> 	}
>
>-	/*
>-	 * XXX: We delay destroying the PT root until the VM if freed as PT root
>-	 * is needed for xe_vm_lock to work. If we remove that dependency this
>-	 * can be moved to xe_vm_close_and_put.
>-	 */
>-	xe_vm_lock(vm, false);
>-	for_each_tile(tile, xe, id) {
>-		if (vm->pt_root[id]) {
>-			xe_pt_destroy(vm->pt_root[id], vm->flags, NULL);
>-			vm->pt_root[id] = NULL;
>-		}
>-	}
>-	xe_vm_unlock(vm);
>+	for_each_tile(tile, xe, id)
>+		XE_WARN_ON(vm->pt_root[id]);
>
> 	trace_xe_vm_free(vm);
> 	dma_fence_put(vm->rebind_fence);
>-	drm_gpuvm_destroy(&vm->gpuvm);
> 	kfree(vm);
> }
>
>-void xe_vm_free(struct kref *ref)
>+static void xe_vm_free(struct drm_gpuvm *gpuvm)
> {
>-	struct xe_vm *vm = container_of(ref, struct xe_vm, refcount);
>+	struct xe_vm *vm = container_of(gpuvm, struct xe_vm, gpuvm);
>
> 	/* To destroy the VM we need to be able to sleep */
> 	queue_work(system_unbound_wq, &vm->destroy_work);
>diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
>index 88077214261f..a348dc56027c 100644
>--- a/drivers/gpu/drm/xe/xe_vm.h
>+++ b/drivers/gpu/drm/xe/xe_vm.h
>@@ -24,20 +24,19 @@ struct xe_sync_entry;
> struct drm_exec;
>
> struct xe_vm *xe_vm_create(struct xe_device *xe, u32 flags);
>-void xe_vm_free(struct kref *ref);
>
> struct xe_vm *xe_vm_lookup(struct xe_file *xef, u32 id);
> int xe_vma_cmp_vma_cb(const void *key, const struct rb_node *node);
>
> static inline struct xe_vm *xe_vm_get(struct xe_vm *vm)
> {
>-	kref_get(&vm->refcount);
>+	drm_gpuvm_get(&vm->gpuvm);
> 	return vm;
> }
>
> static inline void xe_vm_put(struct xe_vm *vm)
> {
>-	kref_put(&vm->refcount, xe_vm_free);
>+	drm_gpuvm_put(&vm->gpuvm);
> }
>
> int xe_vm_lock(struct xe_vm *vm, bool intr);
>diff --git a/drivers/gpu/drm/xe/xe_vm_types.h b/drivers/gpu/drm/xe/xe_vm_types.h
>index f11ac81cf010..d643dccf9e73 100644
>--- a/drivers/gpu/drm/xe/xe_vm_types.h
>+++ b/drivers/gpu/drm/xe/xe_vm_types.h
>@@ -137,8 +137,6 @@ struct xe_vm {
>
> 	struct xe_device *xe;
>
>-	struct kref refcount;
>-
> 	/* exec queue used for (un)binding vma's */
> 	struct xe_exec_queue *q[XE_MAX_TILES_PER_DEVICE];
>
>-- 
>2.41.0
>

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

end of thread, other threads:[~2023-11-13  6:18 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-03 15:32 [Intel-xe] [CI v8 01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 02/18] drm/gpuvm: don't always WARN in drm_gpuvm_check_overflow() Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 03/18] drm/gpuvm: export drm_gpuvm_range_valid() Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 04/18] drm/nouveau: make use of drm_gpuvm_range_valid() Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 05/18] drm/gpuvm: add common dma-resv per struct drm_gpuvm Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 06/18] drm/xe: Adjust to "drm/gpuvm: add common dma-resv per struct drm_gpuvm" Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 07/18] drm/nouveau: make use of the GPUVM's shared dma-resv Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 08/18] drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 09/18] drm/xe: Adjust to commit "drm/gpuvm: add drm_gpuvm_flags to drm_gpuvm" Thomas Hellström
2023-11-12 22:07   ` Dafna Hirschfeld
2023-11-03 15:32 ` [Intel-xe] [CI v8 10/18] drm/nouveau: separately allocate struct nouveau_uvmm Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 11/18] drm/gpuvm: reference count drm_gpuvm structures Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 12/18] drm/xe: Adjust to commit " Thomas Hellström
2023-11-13  6:14   ` Dafna Hirschfeld
2023-11-03 15:32 ` [Intel-xe] [CI v8 13/18] drm/gpuvm: add an abstraction for a VM / BO combination Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 14/18] drm/xe: Adjust to commit "drm/gpuvm: add an abstraction for a VM/BO combination" Thomas Hellström
2023-11-12 22:06   ` Dafna Hirschfeld
2023-11-03 15:32 ` [Intel-xe] [CI v8 15/18] drm/gpuvm: track/lock/validate external/evicted objects Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 16/18] drm/xe: Adapt to GPUVM tracking of external / evicted objects Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 17/18] drm/xe: Use DRM_GPUVM_RESV_PROTECTED for gpuvm Thomas Hellström
2023-11-03 15:32 ` [Intel-xe] [CI v8 18/18] drm/nouveau: use GPUVM common infrastructure Thomas Hellström
2023-11-03 15:35 ` [Intel-xe] ✓ CI.Patch_applied: success for series starting with [CI,v8,01/18] drm/gpuvm: convert WARN() to drm_WARN() variants Patchwork
2023-11-03 15:36 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
2023-11-03 15:37 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
2023-11-03 15:44 ` [Intel-xe] ✓ CI.Build: " Patchwork
2023-11-03 15:45 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
2023-11-03 15:46 ` [Intel-xe] ✗ CI.checksparse: warning " Patchwork
2023-11-03 16:19 ` [Intel-xe] ✗ CI.BAT: failure " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.