All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-xe] [PATCH v2 0/2] drm/xe: switch to using drm_exec
@ 2023-07-13 13:17 Francois Dugast
  2023-07-13 13:17 ` [Intel-xe] [PATCH v2 1/2] drm: execution context for GEM buffers v7 Francois Dugast
                   ` (7 more replies)
  0 siblings, 8 replies; 14+ messages in thread
From: Francois Dugast @ 2023-07-13 13:17 UTC (permalink / raw)
  To: intel-xe; +Cc: Francois Dugast, christian.koenig

Make Xe use drm_exec (execution context for GEM buffers v7) which was just merged to drm-misc-next.

Christian König (1):
  drm: execution context for GEM buffers v7

Francois Dugast (1):
  drm/xe: switch to using drm_exec

 Documentation/gpu/drm-mm.rst         |  12 +
 drivers/gpu/drm/Kconfig              |   6 +
 drivers/gpu/drm/Makefile             |   2 +
 drivers/gpu/drm/drm_exec.c           | 333 +++++++++++++++++++++++++++
 drivers/gpu/drm/xe/Kconfig           |   1 +
 drivers/gpu/drm/xe/xe_bo.c           |  29 ++-
 drivers/gpu/drm/xe/xe_bo_types.h     |   1 -
 drivers/gpu/drm/xe/xe_exec.c         |  30 +--
 drivers/gpu/drm/xe/xe_gt_pagefault.c |  55 +----
 drivers/gpu/drm/xe/xe_vm.c           | 246 ++++++++++----------
 drivers/gpu/drm/xe/xe_vm.h           |  32 +--
 include/drm/drm_exec.h               | 123 ++++++++++
 12 files changed, 644 insertions(+), 226 deletions(-)
 create mode 100644 drivers/gpu/drm/drm_exec.c
 create mode 100644 include/drm/drm_exec.h

-- 
2.34.1


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

* [Intel-xe] [PATCH v2 1/2] drm: execution context for GEM buffers v7
  2023-07-13 13:17 [Intel-xe] [PATCH v2 0/2] drm/xe: switch to using drm_exec Francois Dugast
@ 2023-07-13 13:17 ` Francois Dugast
  2023-07-13 13:17 ` [Intel-xe] [PATCH v2 2/2] drm/xe: switch to using drm_exec Francois Dugast
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Francois Dugast @ 2023-07-13 13:17 UTC (permalink / raw)
  To: intel-xe
  Cc: Alex Deucher, Boris Brezillon, Danilo Krummrich, christian.koenig

From: Christian König <christian.koenig@amd.com>

This adds the infrastructure for an execution context for GEM buffers
which is similar to the existing TTMs execbuf util and intended to replace
it in the long term.

The basic functionality is that we abstracts the necessary loop to lock
many different GEM buffers with automated deadlock and duplicate handling.

v2: drop xarray and use dynamic resized array instead, the locking
    overhead is unnecessary and measurable.
v3: drop duplicate tracking, radeon is really the only one needing that.
v4: fixes issues pointed out by Danilo, some typos in comments and a
    helper for lock arrays of GEM objects.
v5: some suggestions by Boris Brezillon, especially just use one retry
    macro, drop loop in prepare_array, use flags instead of bool
v6: minor changes suggested by Thomas, Boris and Danilo
v7: minor typos pointed out by checkpatch.pl fixed

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Danilo Krummrich <dakr@redhat.com>
Tested-by: Danilo Krummrich <dakr@redhat.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230711133122.3710-2-christian.koenig@amd.com
---
 Documentation/gpu/drm-mm.rst |  12 ++
 drivers/gpu/drm/Kconfig      |   6 +
 drivers/gpu/drm/Makefile     |   2 +
 drivers/gpu/drm/drm_exec.c   | 333 +++++++++++++++++++++++++++++++++++
 include/drm/drm_exec.h       | 123 +++++++++++++
 5 files changed, 476 insertions(+)
 create mode 100644 drivers/gpu/drm/drm_exec.c
 create mode 100644 include/drm/drm_exec.h

diff --git a/Documentation/gpu/drm-mm.rst b/Documentation/gpu/drm-mm.rst
index b21df6ce9fcb..3d5dc9dc1bfe 100644
--- a/Documentation/gpu/drm-mm.rst
+++ b/Documentation/gpu/drm-mm.rst
@@ -529,6 +529,18 @@ DRM Sync Objects
 .. kernel-doc:: drivers/gpu/drm/drm_syncobj.c
    :export:
 
+DRM Execution context
+=====================
+
+.. kernel-doc:: drivers/gpu/drm/drm_exec.c
+   :doc: Overview
+
+.. kernel-doc:: include/drm/drm_exec.h
+   :internal:
+
+.. kernel-doc:: drivers/gpu/drm/drm_exec.c
+   :export:
+
 GPU Scheduler
 =============
 
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 8eeaa202e8ac..6016987c6ab9 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -194,6 +194,12 @@ config DRM_TTM
 	  GPU memory types. Will be enabled automatically if a device driver
 	  uses it.
 
+config DRM_EXEC
+	tristate
+	depends on DRM
+	help
+	  Execution context for command submissions
+
 config DRM_BUDDY
 	tristate
 	depends on DRM
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index 90ee955ef4d1..3032059bf8bf 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -79,6 +79,8 @@ obj-$(CONFIG_DRM_PANEL_ORIENTATION_QUIRKS) += drm_panel_orientation_quirks.o
 #
 # Memory-management helpers
 #
+#
+obj-$(CONFIG_DRM_EXEC) += drm_exec.o
 
 obj-$(CONFIG_DRM_BUDDY) += drm_buddy.o
 
diff --git a/drivers/gpu/drm/drm_exec.c b/drivers/gpu/drm/drm_exec.c
new file mode 100644
index 000000000000..ff69cf0fb42a
--- /dev/null
+++ b/drivers/gpu/drm/drm_exec.c
@@ -0,0 +1,333 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+
+#include <drm/drm_exec.h>
+#include <drm/drm_gem.h>
+#include <linux/dma-resv.h>
+
+/**
+ * DOC: Overview
+ *
+ * This component mainly abstracts the retry loop necessary for locking
+ * multiple GEM objects while preparing hardware operations (e.g. command
+ * submissions, page table updates etc..).
+ *
+ * If a contention is detected while locking a GEM object the cleanup procedure
+ * unlocks all previously locked GEM objects and locks the contended one first
+ * before locking any further objects.
+ *
+ * After an object is locked fences slots can optionally be reserved on the
+ * dma_resv object inside the GEM object.
+ *
+ * A typical usage pattern should look like this::
+ *
+ *	struct drm_gem_object *obj;
+ *	struct drm_exec exec;
+ *	unsigned long index;
+ *	int ret;
+ *
+ *	drm_exec_init(&exec, DRM_EXEC_INTERRUPTIBLE_WAIT);
+ *	drm_exec_until_all_locked(&exec) {
+ *		ret = drm_exec_prepare_obj(&exec, boA, 1);
+ *		drm_exec_retry_on_contention(&exec);
+ *		if (ret)
+ *			goto error;
+ *
+ *		ret = drm_exec_prepare_obj(&exec, boB, 1);
+ *		drm_exec_retry_on_contention(&exec);
+ *		if (ret)
+ *			goto error;
+ *	}
+ *
+ *	drm_exec_for_each_locked_object(&exec, index, obj) {
+ *		dma_resv_add_fence(obj->resv, fence, DMA_RESV_USAGE_READ);
+ *		...
+ *	}
+ *	drm_exec_fini(&exec);
+ *
+ * See struct dma_exec for more details.
+ */
+
+/* Dummy value used to initially enter the retry loop */
+#define DRM_EXEC_DUMMY ((void *)~0)
+
+/* Unlock all objects and drop references */
+static void drm_exec_unlock_all(struct drm_exec *exec)
+{
+	struct drm_gem_object *obj;
+	unsigned long index;
+
+	drm_exec_for_each_locked_object(exec, index, obj) {
+		dma_resv_unlock(obj->resv);
+		drm_gem_object_put(obj);
+	}
+
+	drm_gem_object_put(exec->prelocked);
+	exec->prelocked = NULL;
+}
+
+/**
+ * drm_exec_init - initialize a drm_exec object
+ * @exec: the drm_exec object to initialize
+ * @flags: controls locking behavior, see DRM_EXEC_* defines
+ *
+ * Initialize the object and make sure that we can track locked objects.
+ */
+void drm_exec_init(struct drm_exec *exec, uint32_t flags)
+{
+	exec->flags = flags;
+	exec->objects = kmalloc(PAGE_SIZE, GFP_KERNEL);
+
+	/* If allocation here fails, just delay that till the first use */
+	exec->max_objects = exec->objects ? PAGE_SIZE / sizeof(void *) : 0;
+	exec->num_objects = 0;
+	exec->contended = DRM_EXEC_DUMMY;
+	exec->prelocked = NULL;
+}
+EXPORT_SYMBOL(drm_exec_init);
+
+/**
+ * drm_exec_fini - finalize a drm_exec object
+ * @exec: the drm_exec object to finalize
+ *
+ * Unlock all locked objects, drop the references to objects and free all memory
+ * used for tracking the state.
+ */
+void drm_exec_fini(struct drm_exec *exec)
+{
+	drm_exec_unlock_all(exec);
+	kvfree(exec->objects);
+	if (exec->contended != DRM_EXEC_DUMMY) {
+		drm_gem_object_put(exec->contended);
+		ww_acquire_fini(&exec->ticket);
+	}
+}
+EXPORT_SYMBOL(drm_exec_fini);
+
+/**
+ * drm_exec_cleanup - cleanup when contention is detected
+ * @exec: the drm_exec object to cleanup
+ *
+ * Cleanup the current state and return true if we should stay inside the retry
+ * loop, false if there wasn't any contention detected and we can keep the
+ * objects locked.
+ */
+bool drm_exec_cleanup(struct drm_exec *exec)
+{
+	if (likely(!exec->contended)) {
+		ww_acquire_done(&exec->ticket);
+		return false;
+	}
+
+	if (likely(exec->contended == DRM_EXEC_DUMMY)) {
+		exec->contended = NULL;
+		ww_acquire_init(&exec->ticket, &reservation_ww_class);
+		return true;
+	}
+
+	drm_exec_unlock_all(exec);
+	exec->num_objects = 0;
+	return true;
+}
+EXPORT_SYMBOL(drm_exec_cleanup);
+
+/* Track the locked object in the array */
+static int drm_exec_obj_locked(struct drm_exec *exec,
+			       struct drm_gem_object *obj)
+{
+	if (unlikely(exec->num_objects == exec->max_objects)) {
+		size_t size = exec->max_objects * sizeof(void *);
+		void *tmp;
+
+		tmp = kvrealloc(exec->objects, size, size + PAGE_SIZE,
+				GFP_KERNEL);
+		if (!tmp)
+			return -ENOMEM;
+
+		exec->objects = tmp;
+		exec->max_objects += PAGE_SIZE / sizeof(void *);
+	}
+	drm_gem_object_get(obj);
+	exec->objects[exec->num_objects++] = obj;
+
+	return 0;
+}
+
+/* Make sure the contended object is locked first */
+static int drm_exec_lock_contended(struct drm_exec *exec)
+{
+	struct drm_gem_object *obj = exec->contended;
+	int ret;
+
+	if (likely(!obj))
+		return 0;
+
+	/* Always cleanup the contention so that error handling can kick in */
+	exec->contended = NULL;
+	if (exec->flags & DRM_EXEC_INTERRUPTIBLE_WAIT) {
+		ret = dma_resv_lock_slow_interruptible(obj->resv,
+						       &exec->ticket);
+		if (unlikely(ret))
+			goto error_dropref;
+	} else {
+		dma_resv_lock_slow(obj->resv, &exec->ticket);
+	}
+
+	ret = drm_exec_obj_locked(exec, obj);
+	if (unlikely(ret))
+		goto error_unlock;
+
+	exec->prelocked = obj;
+	return 0;
+
+error_unlock:
+	dma_resv_unlock(obj->resv);
+
+error_dropref:
+	drm_gem_object_put(obj);
+	return ret;
+}
+
+/**
+ * drm_exec_lock_obj - lock a GEM object for use
+ * @exec: the drm_exec object with the state
+ * @obj: the GEM object to lock
+ *
+ * Lock a GEM object for use and grab a reference to it.
+ *
+ * Returns: -EDEADLK if a contention is detected, -EALREADY when object is
+ * already locked (can be suppressed by setting the DRM_EXEC_IGNORE_DUPLICATES
+ * flag), -ENOMEM when memory allocation failed and zero for success.
+ */
+int drm_exec_lock_obj(struct drm_exec *exec, struct drm_gem_object *obj)
+{
+	int ret;
+
+	ret = drm_exec_lock_contended(exec);
+	if (unlikely(ret))
+		return ret;
+
+	if (exec->prelocked == obj) {
+		drm_gem_object_put(exec->prelocked);
+		exec->prelocked = NULL;
+		return 0;
+	}
+
+	if (exec->flags & DRM_EXEC_INTERRUPTIBLE_WAIT)
+		ret = dma_resv_lock_interruptible(obj->resv, &exec->ticket);
+	else
+		ret = dma_resv_lock(obj->resv, &exec->ticket);
+
+	if (unlikely(ret == -EDEADLK)) {
+		drm_gem_object_get(obj);
+		exec->contended = obj;
+		return -EDEADLK;
+	}
+
+	if (unlikely(ret == -EALREADY) &&
+	    exec->flags & DRM_EXEC_IGNORE_DUPLICATES)
+		return 0;
+
+	if (unlikely(ret))
+		return ret;
+
+	ret = drm_exec_obj_locked(exec, obj);
+	if (ret)
+		goto error_unlock;
+
+	return 0;
+
+error_unlock:
+	dma_resv_unlock(obj->resv);
+	return ret;
+}
+EXPORT_SYMBOL(drm_exec_lock_obj);
+
+/**
+ * drm_exec_unlock_obj - unlock a GEM object in this exec context
+ * @exec: the drm_exec object with the state
+ * @obj: the GEM object to unlock
+ *
+ * Unlock the GEM object and remove it from the collection of locked objects.
+ * Should only be used to unlock the most recently locked objects. It's not time
+ * efficient to unlock objects locked long ago.
+ */
+void drm_exec_unlock_obj(struct drm_exec *exec, struct drm_gem_object *obj)
+{
+	unsigned int i;
+
+	for (i = exec->num_objects; i--;) {
+		if (exec->objects[i] == obj) {
+			dma_resv_unlock(obj->resv);
+			for (++i; i < exec->num_objects; ++i)
+				exec->objects[i - 1] = exec->objects[i];
+			--exec->num_objects;
+			drm_gem_object_put(obj);
+			return;
+		}
+
+	}
+}
+EXPORT_SYMBOL(drm_exec_unlock_obj);
+
+/**
+ * drm_exec_prepare_obj - prepare a GEM object for use
+ * @exec: the drm_exec object with the state
+ * @obj: the GEM object to prepare
+ * @num_fences: how many fences to reserve
+ *
+ * Prepare a GEM object for use by locking it and reserving fence slots.
+ *
+ * Returns: -EDEADLK if a contention is detected, -EALREADY when object is
+ * already locked, -ENOMEM when memory allocation failed and zero for success.
+ */
+int drm_exec_prepare_obj(struct drm_exec *exec, struct drm_gem_object *obj,
+			 unsigned int num_fences)
+{
+	int ret;
+
+	ret = drm_exec_lock_obj(exec, obj);
+	if (ret)
+		return ret;
+
+	ret = dma_resv_reserve_fences(obj->resv, num_fences);
+	if (ret) {
+		drm_exec_unlock_obj(exec, obj);
+		return ret;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL(drm_exec_prepare_obj);
+
+/**
+ * drm_exec_prepare_array - helper to prepare an array of objects
+ * @exec: the drm_exec object with the state
+ * @objects: array of GEM object to prepare
+ * @num_objects: number of GEM objects in the array
+ * @num_fences: number of fences to reserve on each GEM object
+ *
+ * Prepares all GEM objects in an array, aborts on first error.
+ * Reserves @num_fences on each GEM object after locking it.
+ *
+ * Returns: -EDEADLOCK on contention, -EALREADY when object is already locked,
+ * -ENOMEM when memory allocation failed and zero for success.
+ */
+int drm_exec_prepare_array(struct drm_exec *exec,
+			   struct drm_gem_object **objects,
+			   unsigned int num_objects,
+			   unsigned int num_fences)
+{
+	int ret;
+
+	for (unsigned int i = 0; i < num_objects; ++i) {
+		ret = drm_exec_prepare_obj(exec, objects[i], num_fences);
+		if (unlikely(ret))
+			return ret;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL(drm_exec_prepare_array);
+
+MODULE_DESCRIPTION("DRM execution context");
+MODULE_LICENSE("Dual MIT/GPL");
diff --git a/include/drm/drm_exec.h b/include/drm/drm_exec.h
new file mode 100644
index 000000000000..73205afec162
--- /dev/null
+++ b/include/drm/drm_exec.h
@@ -0,0 +1,123 @@
+/* SPDX-License-Identifier: GPL-2.0 OR MIT */
+
+#ifndef __DRM_EXEC_H__
+#define __DRM_EXEC_H__
+
+#include <linux/ww_mutex.h>
+
+#define DRM_EXEC_INTERRUPTIBLE_WAIT	BIT(0)
+#define DRM_EXEC_IGNORE_DUPLICATES	BIT(1)
+
+struct drm_gem_object;
+
+/**
+ * struct drm_exec - Execution context
+ */
+struct drm_exec {
+	/**
+	 * @flags: Flags to control locking behavior
+	 */
+	uint32_t		flags;
+
+	/**
+	 * @ticket: WW ticket used for acquiring locks
+	 */
+	struct ww_acquire_ctx	ticket;
+
+	/**
+	 * @num_objects: number of objects locked
+	 */
+	unsigned int		num_objects;
+
+	/**
+	 * @max_objects: maximum objects in array
+	 */
+	unsigned int		max_objects;
+
+	/**
+	 * @objects: array of the locked objects
+	 */
+	struct drm_gem_object	**objects;
+
+	/**
+	 * @contended: contended GEM object we backed off for
+	 */
+	struct drm_gem_object	*contended;
+
+	/**
+	 * @prelocked: already locked GEM object due to contention
+	 */
+	struct drm_gem_object *prelocked;
+};
+
+/**
+ * drm_exec_for_each_locked_object - iterate over all the locked objects
+ * @exec: drm_exec object
+ * @index: unsigned long index for the iteration
+ * @obj: the current GEM object
+ *
+ * Iterate over all the locked GEM objects inside the drm_exec object.
+ */
+#define drm_exec_for_each_locked_object(exec, index, obj)	\
+	for (index = 0, obj = (exec)->objects[0];		\
+	     index < (exec)->num_objects;			\
+	     ++index, obj = (exec)->objects[index])
+
+/**
+ * drm_exec_until_all_locked - loop until all GEM objects are locked
+ * @exec: drm_exec object
+ *
+ * Core functionality of the drm_exec object. Loops until all GEM objects are
+ * locked and no more contention exists. At the beginning of the loop it is
+ * guaranteed that no GEM object is locked.
+ *
+ * Since labels can't be defined local to the loops body we use a jump pointer
+ * to make sure that the retry is only used from within the loops body.
+ */
+#define drm_exec_until_all_locked(exec)				\
+	for (void *__drm_exec_retry_ptr; ({			\
+		__label__ __drm_exec_retry;			\
+__drm_exec_retry:						\
+		__drm_exec_retry_ptr = &&__drm_exec_retry;	\
+		(void)__drm_exec_retry_ptr;			\
+		drm_exec_cleanup(exec);				\
+	});)
+
+/**
+ * drm_exec_retry_on_contention - restart the loop to grap all locks
+ * @exec: drm_exec object
+ *
+ * Control flow helper to continue when a contention was detected and we need to
+ * clean up and re-start the loop to prepare all GEM objects.
+ */
+#define drm_exec_retry_on_contention(exec)			\
+	do {							\
+		if (unlikely(drm_exec_is_contended(exec)))	\
+			goto *__drm_exec_retry_ptr;		\
+	} while (0)
+
+/**
+ * drm_exec_is_contended - check for contention
+ * @exec: drm_exec object
+ *
+ * Returns true if the drm_exec object has run into some contention while
+ * locking a GEM object and needs to clean up.
+ */
+static inline bool drm_exec_is_contended(struct drm_exec *exec)
+{
+	return !!exec->contended;
+}
+
+void drm_exec_init(struct drm_exec *exec, uint32_t flags);
+void drm_exec_fini(struct drm_exec *exec);
+bool drm_exec_cleanup(struct drm_exec *exec);
+int drm_exec_lock_obj(struct drm_exec *exec, struct drm_gem_object *obj);
+void drm_exec_unlock_obj(struct drm_exec *exec, struct drm_gem_object *obj);
+int drm_exec_prepare_obj(struct drm_exec *exec, struct drm_gem_object *obj,
+			 unsigned int num_fences);
+int drm_exec_prepare_array(struct drm_exec *exec,
+			   struct drm_gem_object **objects,
+			   unsigned int num_objects,
+			   unsigned int num_fences);
+
+#endif
-- 
2.34.1


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

* [Intel-xe] [PATCH v2 2/2] drm/xe: switch to using drm_exec
  2023-07-13 13:17 [Intel-xe] [PATCH v2 0/2] drm/xe: switch to using drm_exec Francois Dugast
  2023-07-13 13:17 ` [Intel-xe] [PATCH v2 1/2] drm: execution context for GEM buffers v7 Francois Dugast
@ 2023-07-13 13:17 ` Francois Dugast
  2023-07-13 14:00   ` Matthew Brost
  2023-07-13 14:18 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 14+ messages in thread
From: Francois Dugast @ 2023-07-13 13:17 UTC (permalink / raw)
  To: intel-xe; +Cc: Francois Dugast, christian.koenig

Replace the use of ttm_execbuf_util helpers with the drm_exec helpers.

v2:
- Call dma-resv locking functions directly in xe_bo_lock and
  xe_vm_lock functions (Matthew Brost)
- Switch to execution context for GEM buffers v7 (Christian König)
- Use DRM_EXEC_INTERRUPTIBLE_WAIT

Signed-off-by: Francois Dugast <francois.dugast@intel.com>
---
 drivers/gpu/drm/xe/Kconfig           |   1 +
 drivers/gpu/drm/xe/xe_bo.c           |  29 +++-
 drivers/gpu/drm/xe/xe_bo_types.h     |   1 -
 drivers/gpu/drm/xe/xe_exec.c         |  30 +---
 drivers/gpu/drm/xe/xe_gt_pagefault.c |  55 +-----
 drivers/gpu/drm/xe/xe_vm.c           | 246 +++++++++++++--------------
 drivers/gpu/drm/xe/xe_vm.h           |  32 ++--
 7 files changed, 168 insertions(+), 226 deletions(-)

diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
index d44794f99338..b739faa401d3 100644
--- a/drivers/gpu/drm/xe/Kconfig
+++ b/drivers/gpu/drm/xe/Kconfig
@@ -8,6 +8,7 @@ config DRM_XE
 	select SHMEM
 	select TMPFS
 	select DRM_BUDDY
+	select DRM_EXEC
 	select DRM_KMS_HELPER
 	select DRM_PANEL
 	select DRM_SUBALLOC_HELPER
diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 6353afa8d846..aafe69ed4320 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -1806,17 +1806,32 @@ int xe_gem_mmap_offset_ioctl(struct drm_device *dev, void *data,
 int xe_bo_lock(struct xe_bo *bo, struct ww_acquire_ctx *ww,
 	       int num_resv, bool intr)
 {
-	struct ttm_validate_buffer tv_bo;
-	LIST_HEAD(objs);
-	LIST_HEAD(dups);
+	struct dma_resv *obj;
+	int err;
 
 	XE_BUG_ON(!ww);
 
-	tv_bo.num_shared = num_resv;
-	tv_bo.bo = &bo->ttm;;
-	list_add_tail(&tv_bo.head, &objs);
+	obj = bo->ttm.base.resv;
+	ww_acquire_init(ww, &reservation_ww_class);
+
+	if (intr)
+		err = dma_resv_lock_interruptible(obj, ww);
+	else
+		err = dma_resv_lock(obj, ww);
+
+	if (unlikely(err))
+		return err;
+
+	num_resv = max(num_resv, 1);
+	err = dma_resv_reserve_fences(obj, num_resv);
+	if (err)
+		goto out_err;
 
-	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
+	return 0;
+
+out_err:
+	dma_resv_unlock(obj);
+	return err;
 }
 
 void xe_bo_unlock(struct xe_bo *bo, struct ww_acquire_ctx *ww)
diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
index f6ee920303af..bc67263c6713 100644
--- a/drivers/gpu/drm/xe/xe_bo_types.h
+++ b/drivers/gpu/drm/xe/xe_bo_types.h
@@ -11,7 +11,6 @@
 #include <drm/drm_mm.h>
 #include <drm/ttm/ttm_bo.h>
 #include <drm/ttm/ttm_device.h>
-#include <drm/ttm/ttm_execbuf_util.h>
 #include <drm/ttm/ttm_placement.h>
 
 struct xe_device;
diff --git a/drivers/gpu/drm/xe/xe_exec.c b/drivers/gpu/drm/xe/xe_exec.c
index ba13d20ed348..32a6e16ec177 100644
--- a/drivers/gpu/drm/xe/xe_exec.c
+++ b/drivers/gpu/drm/xe/xe_exec.c
@@ -6,6 +6,7 @@
 #include "xe_exec.h"
 
 #include <drm/drm_device.h>
+#include <drm/drm_exec.h>
 #include <drm/drm_file.h>
 #include <drm/xe_drm.h>
 #include <linux/delay.h>
@@ -95,23 +96,18 @@
 
 #define XE_EXEC_BIND_RETRY_TIMEOUT_MS 1000
 
-static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
-			 struct ttm_validate_buffer tv_onstack[],
-			 struct ttm_validate_buffer **tv,
-			 struct list_head *objs)
+static int xe_exec_begin(struct xe_engine *e, struct drm_exec *exec)
 {
 	struct xe_vm *vm = e->vm;
 	struct xe_vma *vma;
-	LIST_HEAD(dups);
 	ktime_t end = 0;
 	int err = 0;
 
-	*tv = NULL;
 	if (xe_vm_no_dma_fences(e->vm))
 		return 0;
 
 retry:
-	err = xe_vm_lock_dma_resv(vm, ww, tv_onstack, tv, objs, true, 1);
+	err = xe_vm_lock_dma_resv(vm, exec, true, 1);
 	if (err)
 		return err;
 
@@ -128,8 +124,7 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
 
 		err = xe_bo_validate(xe_vma_bo(vma), vm, false);
 		if (err) {
-			xe_vm_unlock_dma_resv(vm, tv_onstack, *tv, ww, objs);
-			*tv = NULL;
+			xe_vm_unlock_dma_resv(vm, exec);
 			break;
 		}
 	}
@@ -153,14 +148,10 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
 	return err;
 }
 
-static void xe_exec_end(struct xe_engine *e,
-			struct ttm_validate_buffer *tv_onstack,
-			struct ttm_validate_buffer *tv,
-			struct ww_acquire_ctx *ww,
-			struct list_head *objs)
+static void xe_exec_end(struct xe_engine *e, struct drm_exec *exec)
 {
 	if (!xe_vm_no_dma_fences(e->vm))
-		xe_vm_unlock_dma_resv(e->vm, tv_onstack, tv, ww, objs);
+		xe_vm_unlock_dma_resv(e->vm, exec);
 }
 
 int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
@@ -173,14 +164,11 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	struct xe_engine *engine;
 	struct xe_sync_entry *syncs = NULL;
 	u64 addresses[XE_HW_ENGINE_MAX_INSTANCE];
-	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
-	struct ttm_validate_buffer *tv = NULL;
 	u32 i, num_syncs = 0;
 	struct xe_sched_job *job;
 	struct dma_fence *rebind_fence;
 	struct xe_vm *vm;
-	struct ww_acquire_ctx ww;
-	struct list_head objs;
+	struct drm_exec exec;
 	bool write_locked;
 	int err = 0;
 
@@ -293,7 +281,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 			goto err_unlock_list;
 	}
 
-	err = xe_exec_begin(engine, &ww, tv_onstack, &tv, &objs);
+	err = xe_exec_begin(engine, &exec);
 	if (err)
 		goto err_unlock_list;
 
@@ -412,7 +400,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	if (err)
 		xe_sched_job_put(job);
 err_engine_end:
-	xe_exec_end(engine, tv_onstack, tv, &ww, &objs);
+	xe_exec_end(engine, &exec);
 err_unlock_list:
 	if (write_locked)
 		up_write(&vm->lock);
diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
index 125e4744fa38..94f59c29ba9b 100644
--- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
+++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
@@ -8,8 +8,8 @@
 #include <linux/bitfield.h>
 #include <linux/circ_buf.h>
 
+#include <drm/drm_exec.h>
 #include <drm/drm_managed.h>
-#include <drm/ttm/ttm_execbuf_util.h>
 
 #include "xe_bo.h"
 #include "xe_gt.h"
@@ -84,11 +84,6 @@ static bool vma_matches(struct xe_vma *vma, u64 page_addr)
 	return true;
 }
 
-static bool only_needs_bo_lock(struct xe_bo *bo)
-{
-	return bo && bo->vm;
-}
-
 static struct xe_vma *lookup_vma(struct xe_vm *vm, u64 page_addr)
 {
 	struct xe_vma *vma = NULL;
@@ -110,10 +105,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
 	struct xe_vm *vm;
 	struct xe_vma *vma = NULL;
 	struct xe_bo *bo;
-	LIST_HEAD(objs);
-	LIST_HEAD(dups);
-	struct ttm_validate_buffer tv_bo, tv_vm;
-	struct ww_acquire_ctx ww;
+	struct drm_exec exec;
 	struct dma_fence *fence;
 	bool write_locked;
 	int ret = 0;
@@ -171,20 +163,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
 
 	/* Lock VM and BOs dma-resv */
 	bo = xe_vma_bo(vma);
-	if (only_needs_bo_lock(bo)) {
-		/* This path ensures the BO's LRU is updated */
-		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
-	} else {
-		tv_vm.num_shared = xe->info.tile_count;
-		tv_vm.bo = xe_vm_ttm_bo(vm);
-		list_add(&tv_vm.head, &objs);
-		if (bo) {
-			tv_bo.bo = &bo->ttm;
-			tv_bo.num_shared = xe->info.tile_count;
-			list_add(&tv_bo.head, &objs);
-		}
-		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
-	}
+	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
 	if (ret)
 		goto unlock_vm;
 
@@ -227,10 +206,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
 	vma->usm.tile_invalidated &= ~BIT(gt_to_tile(gt)->id);
 
 unlock_dma_resv:
-	if (only_needs_bo_lock(bo))
-		xe_bo_unlock(bo, &ww);
-	else
-		ttm_eu_backoff_reservation(&ww, &objs);
+	xe_vm_bo_unlock(vm, bo, &exec, true);
 unlock_vm:
 	if (!ret)
 		vm->usm.last_fault_vma = vma;
@@ -498,10 +474,7 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
 	struct xe_vm *vm;
 	struct xe_vma *vma;
 	struct xe_bo *bo;
-	LIST_HEAD(objs);
-	LIST_HEAD(dups);
-	struct ttm_validate_buffer tv_bo, tv_vm;
-	struct ww_acquire_ctx ww;
+	struct drm_exec exec;
 	int ret = 0;
 
 	/* We only support ACC_TRIGGER at the moment */
@@ -534,28 +507,14 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
 
 	/* Lock VM and BOs dma-resv */
 	bo = xe_vma_bo(vma);
-	if (only_needs_bo_lock(bo)) {
-		/* This path ensures the BO's LRU is updated */
-		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
-	} else {
-		tv_vm.num_shared = xe->info.tile_count;
-		tv_vm.bo = xe_vm_ttm_bo(vm);
-		list_add(&tv_vm.head, &objs);
-		tv_bo.bo = &bo->ttm;
-		tv_bo.num_shared = xe->info.tile_count;
-		list_add(&tv_bo.head, &objs);
-		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
-	}
+	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
 	if (ret)
 		goto unlock_vm;
 
 	/* Migrate to VRAM, move should invalidate the VMA first */
 	ret = xe_bo_migrate(bo, XE_PL_VRAM0 + tile->id);
 
-	if (only_needs_bo_lock(bo))
-		xe_bo_unlock(bo, &ww);
-	else
-		ttm_eu_backoff_reservation(&ww, &objs);
+	xe_vm_bo_unlock(vm, bo, &exec, true);
 unlock_vm:
 	up_read(&vm->lock);
 	xe_vm_put(vm);
diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
index 6c216350084b..c89b10d5feb5 100644
--- a/drivers/gpu/drm/xe/xe_vm.c
+++ b/drivers/gpu/drm/xe/xe_vm.c
@@ -7,8 +7,8 @@
 
 #include <linux/dma-fence-array.h>
 
+#include <drm/drm_exec.h>
 #include <drm/drm_print.h>
-#include <drm/ttm/ttm_execbuf_util.h>
 #include <drm/ttm/ttm_tt.h>
 #include <drm/xe_drm.h>
 #include <linux/delay.h>
@@ -321,11 +321,8 @@ static void resume_and_reinstall_preempt_fences(struct xe_vm *vm)
 
 int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
 {
-	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
-	struct ttm_validate_buffer *tv;
-	struct ww_acquire_ctx ww;
-	struct list_head objs;
 	struct dma_fence *pfence;
+	struct drm_exec exec;
 	int err;
 	bool wait;
 
@@ -333,7 +330,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
 
 	down_write(&vm->lock);
 
-	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs, true, 1);
+	err = xe_vm_lock_dma_resv(vm, &exec, true, 1);
 	if (err)
 		goto out_unlock_outer;
 
@@ -367,7 +364,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
 	up_read(&vm->userptr.notifier_lock);
 
 out_unlock:
-	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
+	xe_vm_unlock_dma_resv(vm, &exec);
 out_unlock_outer:
 	up_write(&vm->lock);
 
@@ -397,68 +394,43 @@ int __xe_vm_userptr_needs_repin(struct xe_vm *vm)
  * 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.
- * @ww: Pointer to a struct ww_acquire_ctx locking context.
- * @tv_onstack: Array size XE_ONSTACK_TV of storage for the struct
- * ttm_validate_buffers used for locking.
- * @tv: Pointer to a pointer that on output contains the actual storage used.
- * @objs: List head for the buffer objects locked.
+ * @exec: Pointer to a struct drm_exec execution context.
  * @intr: Whether to lock interruptible.
  * @num_shared: Number of dma-fence slots to reserve in the locked objects.
  *
  * Locks the vm dma-resv objects and all the dma-resv objects of the
- * buffer objects on the vm external object list. The TTM utilities require
- * a list of struct ttm_validate_buffers pointing to the actual buffer
- * objects to lock. Storage for those struct ttm_validate_buffers should
- * be provided in @tv_onstack, and is typically reserved on the stack
- * of the caller. If the size of @tv_onstack isn't sufficient, then
- * storage will be allocated internally using kvmalloc().
+ * buffer objects on the vm external object list using helpers provided
+ * by drm_exec.
  *
  * The function performs deadlock handling internally, and after a
  * successful return the ww locking transaction should be considered
  * sealed.
  *
- * Return: 0 on success, Negative error code on error. In particular if
- * @intr is set to true, -EINTR or -ERESTARTSYS may be returned. In case
- * of error, any locking performed has been reverted.
+ * Return: 0 on success, Negative error code on error.
  */
-int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
-			struct ttm_validate_buffer *tv_onstack,
-			struct ttm_validate_buffer **tv,
-			struct list_head *objs,
-			bool intr,
-			unsigned int num_shared)
-{
-	struct ttm_validate_buffer *tv_vm, *tv_bo;
+int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
+			bool intr, unsigned int num_shared)
+{
 	struct xe_vma *vma, *next;
-	LIST_HEAD(dups);
+	struct drm_gem_object *obj;
 	int err;
 
 	lockdep_assert_held(&vm->lock);
 
-	if (vm->extobj.entries < XE_ONSTACK_TV) {
-		tv_vm = tv_onstack;
-	} else {
-		tv_vm = kvmalloc_array(vm->extobj.entries + 1, sizeof(*tv_vm),
-				       GFP_KERNEL);
-		if (!tv_vm)
-			return -ENOMEM;
+	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
+	drm_exec_until_all_locked(exec) {
+		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm), num_shared);
+		drm_exec_retry_on_contention(exec);
+		if (unlikely(err) && err != -EALREADY)
+			goto out_err;
+		list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
+			obj = &xe_vma_bo(vma)->ttm.base;
+			err = drm_exec_prepare_obj(exec, obj, num_shared);
+			drm_exec_retry_on_contention(exec);
+			if (unlikely(err) && err != -EALREADY)
+				goto out_err;
+		}
 	}
-	tv_bo = tv_vm + 1;
-
-	INIT_LIST_HEAD(objs);
-	list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
-		tv_bo->num_shared = num_shared;
-		tv_bo->bo = &xe_vma_bo(vma)->ttm;
-
-		list_add_tail(&tv_bo->head, objs);
-		tv_bo++;
-	}
-	tv_vm->num_shared = num_shared;
-	tv_vm->bo = xe_vm_ttm_bo(vm);
-	list_add_tail(&tv_vm->head, objs);
-	err = ttm_eu_reserve_buffers(ww, objs, intr, &dups);
-	if (err)
-		goto out_err;
 
 	spin_lock(&vm->notifier.list_lock);
 	list_for_each_entry_safe(vma, next, &vm->notifier.rebind_list,
@@ -470,14 +442,10 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
 			list_move_tail(&vma->rebind_link, &vm->rebind_list);
 	}
 	spin_unlock(&vm->notifier.list_lock);
-
-	*tv = tv_vm;
 	return 0;
 
 out_err:
-	if (tv_vm != tv_onstack)
-		kvfree(tv_vm);
-
+	drm_exec_fini(exec);
 	return err;
 }
 
@@ -485,20 +453,16 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
  * xe_vm_unlock_dma_resv() - Unlock reservation objects locked by
  * xe_vm_lock_dma_resv()
  * @vm: The vm.
- * @tv_onstack: The @tv_onstack array given to xe_vm_lock_dma_resv().
- * @tv: The value of *@tv given by xe_vm_lock_dma_resv().
- * @ww: The ww_acquire_context used for locking.
- * @objs: The list returned from xe_vm_lock_dma_resv().
+ * @exec: The @drm_exec given to xe_vm_lock_dma_resv().
  *
  * Unlocks the reservation objects and frees any memory allocated by
  * xe_vm_lock_dma_resv().
  */
-void xe_vm_unlock_dma_resv(struct xe_vm *vm,
-			   struct ttm_validate_buffer *tv_onstack,
-			   struct ttm_validate_buffer *tv,
-			   struct ww_acquire_ctx *ww,
-			   struct list_head *objs)
+void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec)
 {
+	struct drm_gem_object *obj, *skip = xe_vm_gem(vm);
+	unsigned long index;
+
 	/*
 	 * Nothing should've been able to enter the list while we were locked,
 	 * since we've held the dma-resvs of all the vm's external objects,
@@ -507,9 +471,13 @@ void xe_vm_unlock_dma_resv(struct xe_vm *vm,
 	 */
 	XE_WARN_ON(!list_empty(&vm->notifier.rebind_list));
 
-	ttm_eu_backoff_reservation(ww, objs);
-	if (tv && tv != tv_onstack)
-		kvfree(tv);
+	drm_exec_for_each_locked_object(exec, index, obj) {
+		struct xe_bo *bo = gem_to_xe_bo(obj);
+
+		if (obj != skip)
+			ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
+	}
+	drm_exec_fini(exec);
 }
 
 #define XE_VM_REBIND_RETRY_TIMEOUT_MS 1000
@@ -536,10 +504,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
 {
 	struct xe_vm *vm = container_of(w, struct xe_vm, preempt.rebind_work);
 	struct xe_vma *vma;
-	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
-	struct ttm_validate_buffer *tv;
-	struct ww_acquire_ctx ww;
-	struct list_head objs;
+	struct drm_exec exec;
 	struct dma_fence *rebind_fence;
 	unsigned int fence_count = 0;
 	LIST_HEAD(preempt_fences);
@@ -582,8 +547,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
 			goto out_unlock_outer;
 	}
 
-	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs,
-				  false, vm->preempt.num_engines);
+	err = xe_vm_lock_dma_resv(vm, &exec, false, vm->preempt.num_engines);
 	if (err)
 		goto out_unlock_outer;
 
@@ -662,7 +626,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
 	up_read(&vm->userptr.notifier_lock);
 
 out_unlock:
-	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
+	xe_vm_unlock_dma_resv(vm, &exec);
 out_unlock_outer:
 	if (err == -EAGAIN) {
 		trace_xe_vm_rebind_worker_retry(vm);
@@ -1105,27 +1069,17 @@ static void xe_vma_destroy(struct xe_vma *vma, struct dma_fence *fence)
 
 static void xe_vma_destroy_unlocked(struct xe_vma *vma)
 {
-	struct ttm_validate_buffer tv[2];
-	struct ww_acquire_ctx ww;
+	struct xe_vm *vm = xe_vma_vm(vma);
 	struct xe_bo *bo = xe_vma_bo(vma);
-	LIST_HEAD(objs);
-	LIST_HEAD(dups);
+	struct drm_exec exec;
 	int err;
 
-	memset(tv, 0, sizeof(tv));
-	tv[0].bo = xe_vm_ttm_bo(xe_vma_vm(vma));
-	list_add(&tv[0].head, &objs);
-
-	if (bo) {
-		tv[1].bo = &xe_bo_get(bo)->ttm;
-		list_add(&tv[1].head, &objs);
-	}
-	err = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
+	err = xe_vm_bo_lock(vm, xe_bo_get(bo), &exec, 0, false);
 	XE_WARN_ON(err);
 
 	xe_vma_destroy(vma, NULL);
 
-	ttm_eu_backoff_reservation(&ww, &objs);
+	xe_vm_bo_unlock(vm, bo, &exec, false);
 	if (bo)
 		xe_bo_put(bo);
 }
@@ -2125,21 +2079,6 @@ static int xe_vm_prefetch(struct xe_vm *vm, struct xe_vma *vma,
 
 #define VM_BIND_OP(op)	(op & 0xffff)
 
-struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm)
-{
-	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
-		XE_VM_FLAG_GT_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 xe_vm_tv_populate(struct xe_vm *vm, struct ttm_validate_buffer *tv)
-{
-	tv->num_shared = 1;
-	tv->bo = xe_vm_ttm_bo(vm);
-}
-
 static void vm_set_async_error(struct xe_vm *vm, int err)
 {
 	lockdep_assert_held(&vm->lock);
@@ -2577,17 +2516,12 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)
 static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
 			       struct xe_vma_op *op)
 {
-	LIST_HEAD(objs);
-	LIST_HEAD(dups);
-	struct ttm_validate_buffer tv_bo, tv_vm;
-	struct ww_acquire_ctx ww;
 	struct xe_bo *vbo;
+	struct drm_exec exec;
 	int err;
 
 	lockdep_assert_held_write(&vm->lock);
 
-	xe_vm_tv_populate(vm, &tv_vm);
-	list_add_tail(&tv_vm.head, &objs);
 	vbo = xe_vma_bo(vma);
 	if (vbo) {
 		/*
@@ -2596,16 +2530,10 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
 		 * take a reference here.
 		 */
 		xe_bo_get(vbo);
-
-		if (!vbo->vm) {
-			tv_bo.bo = &vbo->ttm;
-			tv_bo.num_shared = 1;
-			list_add(&tv_bo.head, &objs);
-		}
 	}
 
 again:
-	err = ttm_eu_reserve_buffers(&ww, &objs, true, &dups);
+	err = xe_vm_bo_lock(vm, vbo, &exec, 1, true);
 	if (err) {
 		xe_bo_put(vbo);
 		return err;
@@ -2687,7 +2615,7 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
 		XE_BUG_ON("NOT POSSIBLE");
 	}
 
-	ttm_eu_backoff_reservation(&ww, &objs);
+	xe_vm_bo_unlock(vm, vbo, &exec, false);
 	if (err == -EAGAIN && xe_vma_is_userptr(vma)) {
 		lockdep_assert_held_write(&vm->lock);
 		err = xe_vma_userptr_pin_pages(vma);
@@ -3338,24 +3266,47 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
 	return err == -ENODATA ? 0 : err;
 }
 
+struct drm_gem_object *xe_vm_gem(struct xe_vm *vm)
+{
+	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
+		XE_VM_FLAG_GT_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.base;
+}
+
 /*
- * XXX: Using the TTM wrappers for now, likely can call into dma-resv code
- * directly to optimize. Also this likely should be an inline function.
+ * XXX: This likely should be an inline function.
  */
 int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
 	       int num_resv, bool intr)
 {
-	struct ttm_validate_buffer tv_vm;
-	LIST_HEAD(objs);
-	LIST_HEAD(dups);
+	struct dma_resv *obj;
+	int err;
 
 	XE_BUG_ON(!ww);
 
-	tv_vm.num_shared = num_resv;
-	tv_vm.bo = xe_vm_ttm_bo(vm);;
-	list_add_tail(&tv_vm.head, &objs);
+	obj = xe_vm_gem(vm)->resv;
+	ww_acquire_init(ww, &reservation_ww_class);
+
+	if (intr)
+		err = dma_resv_lock_interruptible(obj, ww);
+	else
+		err = dma_resv_lock(obj, ww);
+
+	if (unlikely(err))
+		return err;
+
+	num_resv = max(num_resv, 1);
+	err = dma_resv_reserve_fences(obj, num_resv);
+	if (err)
+		goto out_err;
 
-	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
+	return 0;
+
+out_err:
+	dma_resv_unlock(&vm->resv);
+	return err;
 }
 
 void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
@@ -3364,6 +3315,43 @@ void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
 	ww_acquire_fini(ww);
 }
 
+int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
+		  int num_resv, bool intr)
+{
+	int err;
+
+	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
+	drm_exec_until_all_locked(exec) {
+		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm),
+					   num_resv);
+		drm_exec_retry_on_contention(exec);
+		if (err && err != -EALREADY)
+			goto out_err;
+
+		if (bo && !bo->vm) {
+			err = drm_exec_prepare_obj(exec, &bo->ttm.base,
+						   num_resv);
+			drm_exec_retry_on_contention(exec);
+			if (err && err != -EALREADY)
+				goto out_err;
+		}
+	}
+
+	return 0;
+
+out_err:
+	drm_exec_fini(exec);
+	return err;
+}
+
+void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
+		     bool lru_update)
+{
+	if (lru_update && bo && (!bo->vm || xe_vm_no_dma_fences(vm)))
+		ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
+	drm_exec_fini(exec);
+}
+
 /**
  * xe_vm_invalidate_vma - invalidate GPU mappings for VMA without a lock
  * @vma: VMA to invalidate
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
index eaf11ac8ff51..62a062bd5078 100644
--- a/drivers/gpu/drm/xe/xe_vm.h
+++ b/drivers/gpu/drm/xe/xe_vm.h
@@ -12,6 +12,7 @@
 #include "xe_vm_types.h"
 
 struct drm_device;
+struct drm_exec;
 struct drm_printer;
 struct drm_file;
 
@@ -39,11 +40,17 @@ static inline void xe_vm_put(struct xe_vm *vm)
 	kref_put(&vm->refcount, xe_vm_free);
 }
 
+struct drm_gem_object *xe_vm_gem(struct xe_vm *vm);
+
 int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
 	       int num_resv, bool intr);
-
 void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww);
 
+int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
+		  int num_resv, bool intr);
+void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
+		     bool lru_update);
+
 static inline bool xe_vm_is_closed(struct xe_vm *vm)
 {
 	/* Only guaranteed not to change when vm->lock is held */
@@ -183,8 +190,6 @@ int xe_vm_async_fence_wait_start(struct dma_fence *fence);
 
 extern struct ttm_device_funcs xe_ttm_funcs;
 
-struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm);
-
 /**
  * xe_vm_reactivate_rebind() - Reactivate the rebind functionality on compute
  * vms.
@@ -212,23 +217,10 @@ static inline void xe_vm_queue_rebind_worker(struct xe_vm *vm)
 	queue_work(vm->xe->ordered_wq, &vm->preempt.rebind_work);
 }
 
-/*
- * XE_ONSTACK_TV is used to size the tv_onstack array that is input
- * to xe_vm_lock_dma_resv() and xe_vm_unlock_dma_resv().
- */
-#define XE_ONSTACK_TV 20
-int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
-			struct ttm_validate_buffer *tv_onstack,
-			struct ttm_validate_buffer **tv,
-			struct list_head *objs,
-			bool intr,
-			unsigned int num_shared);
-
-void xe_vm_unlock_dma_resv(struct xe_vm *vm,
-			   struct ttm_validate_buffer *tv_onstack,
-			   struct ttm_validate_buffer *tv,
-			   struct ww_acquire_ctx *ww,
-			   struct list_head *objs);
+int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
+			bool intr, unsigned int num_shared);
+
+void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec);
 
 void xe_vm_fence_all_extobjs(struct xe_vm *vm, struct dma_fence *fence,
 			     enum dma_resv_usage usage);
-- 
2.34.1


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

* Re: [Intel-xe] [PATCH v2 2/2] drm/xe: switch to using drm_exec
  2023-07-13 13:17 ` [Intel-xe] [PATCH v2 2/2] drm/xe: switch to using drm_exec Francois Dugast
@ 2023-07-13 14:00   ` Matthew Brost
  2023-07-13 14:17     ` Francois Dugast
  2023-07-13 14:35     ` Christian König
  0 siblings, 2 replies; 14+ messages in thread
From: Matthew Brost @ 2023-07-13 14:00 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe, christian.koenig

On Thu, Jul 13, 2023 at 01:17:11PM +0000, Francois Dugast wrote:
> Replace the use of ttm_execbuf_util helpers with the drm_exec helpers.
> 
> v2:
> - Call dma-resv locking functions directly in xe_bo_lock and
>   xe_vm_lock functions (Matthew Brost)
> - Switch to execution context for GEM buffers v7 (Christian König)
> - Use DRM_EXEC_INTERRUPTIBLE_WAIT
> 
> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> ---
>  drivers/gpu/drm/xe/Kconfig           |   1 +
>  drivers/gpu/drm/xe/xe_bo.c           |  29 +++-
>  drivers/gpu/drm/xe/xe_bo_types.h     |   1 -
>  drivers/gpu/drm/xe/xe_exec.c         |  30 +---
>  drivers/gpu/drm/xe/xe_gt_pagefault.c |  55 +-----
>  drivers/gpu/drm/xe/xe_vm.c           | 246 +++++++++++++--------------
>  drivers/gpu/drm/xe/xe_vm.h           |  32 ++--
>  7 files changed, 168 insertions(+), 226 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
> index d44794f99338..b739faa401d3 100644
> --- a/drivers/gpu/drm/xe/Kconfig
> +++ b/drivers/gpu/drm/xe/Kconfig
> @@ -8,6 +8,7 @@ config DRM_XE
>  	select SHMEM
>  	select TMPFS
>  	select DRM_BUDDY
> +	select DRM_EXEC
>  	select DRM_KMS_HELPER
>  	select DRM_PANEL
>  	select DRM_SUBALLOC_HELPER
> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
> index 6353afa8d846..aafe69ed4320 100644
> --- a/drivers/gpu/drm/xe/xe_bo.c
> +++ b/drivers/gpu/drm/xe/xe_bo.c
> @@ -1806,17 +1806,32 @@ int xe_gem_mmap_offset_ioctl(struct drm_device *dev, void *data,
>  int xe_bo_lock(struct xe_bo *bo, struct ww_acquire_ctx *ww,
>  	       int num_resv, bool intr)
>  {
> -	struct ttm_validate_buffer tv_bo;
> -	LIST_HEAD(objs);
> -	LIST_HEAD(dups);
> +	struct dma_resv *obj;
> +	int err;
>  
>  	XE_BUG_ON(!ww);
>  
> -	tv_bo.num_shared = num_resv;
> -	tv_bo.bo = &bo->ttm;;
> -	list_add_tail(&tv_bo.head, &objs);
> +	obj = bo->ttm.base.resv;
> +	ww_acquire_init(ww, &reservation_ww_class);
> +
> +	if (intr)
> +		err = dma_resv_lock_interruptible(obj, ww);
> +	else
> +		err = dma_resv_lock(obj, ww);
> +
> +	if (unlikely(err))
> +		return err;
> +
> +	num_resv = max(num_resv, 1);

Why? If the user ask to reserve 0 fences this will reserve 1.

> +	err = dma_resv_reserve_fences(obj, num_resv);
> +	if (err)
> +		goto out_err;
>  
> -	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
> +	return 0;
> +
> +out_err:
> +	dma_resv_unlock(obj);
> +	return err;
>  }
>  
>  void xe_bo_unlock(struct xe_bo *bo, struct ww_acquire_ctx *ww)
> diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
> index f6ee920303af..bc67263c6713 100644
> --- a/drivers/gpu/drm/xe/xe_bo_types.h
> +++ b/drivers/gpu/drm/xe/xe_bo_types.h
> @@ -11,7 +11,6 @@
>  #include <drm/drm_mm.h>
>  #include <drm/ttm/ttm_bo.h>
>  #include <drm/ttm/ttm_device.h>
> -#include <drm/ttm/ttm_execbuf_util.h>
>  #include <drm/ttm/ttm_placement.h>
>  
>  struct xe_device;
> diff --git a/drivers/gpu/drm/xe/xe_exec.c b/drivers/gpu/drm/xe/xe_exec.c
> index ba13d20ed348..32a6e16ec177 100644
> --- a/drivers/gpu/drm/xe/xe_exec.c
> +++ b/drivers/gpu/drm/xe/xe_exec.c
> @@ -6,6 +6,7 @@
>  #include "xe_exec.h"
>  
>  #include <drm/drm_device.h>
> +#include <drm/drm_exec.h>
>  #include <drm/drm_file.h>
>  #include <drm/xe_drm.h>
>  #include <linux/delay.h>
> @@ -95,23 +96,18 @@
>  
>  #define XE_EXEC_BIND_RETRY_TIMEOUT_MS 1000
>  
> -static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
> -			 struct ttm_validate_buffer tv_onstack[],
> -			 struct ttm_validate_buffer **tv,
> -			 struct list_head *objs)
> +static int xe_exec_begin(struct xe_engine *e, struct drm_exec *exec)
>  {
>  	struct xe_vm *vm = e->vm;
>  	struct xe_vma *vma;
> -	LIST_HEAD(dups);
>  	ktime_t end = 0;
>  	int err = 0;
>  
> -	*tv = NULL;
>  	if (xe_vm_no_dma_fences(e->vm))
>  		return 0;
>  
>  retry:
> -	err = xe_vm_lock_dma_resv(vm, ww, tv_onstack, tv, objs, true, 1);
> +	err = xe_vm_lock_dma_resv(vm, exec, true, 1);
>  	if (err)
>  		return err;
>  
> @@ -128,8 +124,7 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
>  
>  		err = xe_bo_validate(xe_vma_bo(vma), vm, false);
>  		if (err) {
> -			xe_vm_unlock_dma_resv(vm, tv_onstack, *tv, ww, objs);
> -			*tv = NULL;
> +			xe_vm_unlock_dma_resv(vm, exec);
>  			break;
>  		}
>  	}
> @@ -153,14 +148,10 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
>  	return err;
>  }
>  
> -static void xe_exec_end(struct xe_engine *e,
> -			struct ttm_validate_buffer *tv_onstack,
> -			struct ttm_validate_buffer *tv,
> -			struct ww_acquire_ctx *ww,
> -			struct list_head *objs)
> +static void xe_exec_end(struct xe_engine *e, struct drm_exec *exec)
>  {
>  	if (!xe_vm_no_dma_fences(e->vm))
> -		xe_vm_unlock_dma_resv(e->vm, tv_onstack, tv, ww, objs);
> +		xe_vm_unlock_dma_resv(e->vm, exec);
>  }
>  
>  int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> @@ -173,14 +164,11 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>  	struct xe_engine *engine;
>  	struct xe_sync_entry *syncs = NULL;
>  	u64 addresses[XE_HW_ENGINE_MAX_INSTANCE];
> -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
> -	struct ttm_validate_buffer *tv = NULL;
>  	u32 i, num_syncs = 0;
>  	struct xe_sched_job *job;
>  	struct dma_fence *rebind_fence;
>  	struct xe_vm *vm;
> -	struct ww_acquire_ctx ww;
> -	struct list_head objs;
> +	struct drm_exec exec;
>  	bool write_locked;
>  	int err = 0;
>  
> @@ -293,7 +281,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>  			goto err_unlock_list;
>  	}
>  
> -	err = xe_exec_begin(engine, &ww, tv_onstack, &tv, &objs);
> +	err = xe_exec_begin(engine, &exec);
>  	if (err)
>  		goto err_unlock_list;
>  
> @@ -412,7 +400,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>  	if (err)
>  		xe_sched_job_put(job);
>  err_engine_end:
> -	xe_exec_end(engine, tv_onstack, tv, &ww, &objs);
> +	xe_exec_end(engine, &exec);
>  err_unlock_list:
>  	if (write_locked)
>  		up_write(&vm->lock);
> diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> index 125e4744fa38..94f59c29ba9b 100644
> --- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
> +++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> @@ -8,8 +8,8 @@
>  #include <linux/bitfield.h>
>  #include <linux/circ_buf.h>
>  
> +#include <drm/drm_exec.h>
>  #include <drm/drm_managed.h>
> -#include <drm/ttm/ttm_execbuf_util.h>
>  
>  #include "xe_bo.h"
>  #include "xe_gt.h"
> @@ -84,11 +84,6 @@ static bool vma_matches(struct xe_vma *vma, u64 page_addr)
>  	return true;
>  }
>  
> -static bool only_needs_bo_lock(struct xe_bo *bo)
> -{
> -	return bo && bo->vm;
> -}
> -
>  static struct xe_vma *lookup_vma(struct xe_vm *vm, u64 page_addr)
>  {
>  	struct xe_vma *vma = NULL;
> @@ -110,10 +105,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
>  	struct xe_vm *vm;
>  	struct xe_vma *vma = NULL;
>  	struct xe_bo *bo;
> -	LIST_HEAD(objs);
> -	LIST_HEAD(dups);
> -	struct ttm_validate_buffer tv_bo, tv_vm;
> -	struct ww_acquire_ctx ww;
> +	struct drm_exec exec;
>  	struct dma_fence *fence;
>  	bool write_locked;
>  	int ret = 0;
> @@ -171,20 +163,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
>  
>  	/* Lock VM and BOs dma-resv */
>  	bo = xe_vma_bo(vma);
> -	if (only_needs_bo_lock(bo)) {
> -		/* This path ensures the BO's LRU is updated */
> -		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
> -	} else {
> -		tv_vm.num_shared = xe->info.tile_count;
> -		tv_vm.bo = xe_vm_ttm_bo(vm);
> -		list_add(&tv_vm.head, &objs);
> -		if (bo) {
> -			tv_bo.bo = &bo->ttm;
> -			tv_bo.num_shared = xe->info.tile_count;
> -			list_add(&tv_bo.head, &objs);
> -		}
> -		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
> -	}
> +	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
>  	if (ret)
>  		goto unlock_vm;
>  
> @@ -227,10 +206,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
>  	vma->usm.tile_invalidated &= ~BIT(gt_to_tile(gt)->id);
>  
>  unlock_dma_resv:
> -	if (only_needs_bo_lock(bo))
> -		xe_bo_unlock(bo, &ww);
> -	else
> -		ttm_eu_backoff_reservation(&ww, &objs);
> +	xe_vm_bo_unlock(vm, bo, &exec, true);
>  unlock_vm:
>  	if (!ret)
>  		vm->usm.last_fault_vma = vma;
> @@ -498,10 +474,7 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
>  	struct xe_vm *vm;
>  	struct xe_vma *vma;
>  	struct xe_bo *bo;
> -	LIST_HEAD(objs);
> -	LIST_HEAD(dups);
> -	struct ttm_validate_buffer tv_bo, tv_vm;
> -	struct ww_acquire_ctx ww;
> +	struct drm_exec exec;
>  	int ret = 0;
>  
>  	/* We only support ACC_TRIGGER at the moment */
> @@ -534,28 +507,14 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
>  
>  	/* Lock VM and BOs dma-resv */
>  	bo = xe_vma_bo(vma);
> -	if (only_needs_bo_lock(bo)) {
> -		/* This path ensures the BO's LRU is updated */
> -		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
> -	} else {
> -		tv_vm.num_shared = xe->info.tile_count;
> -		tv_vm.bo = xe_vm_ttm_bo(vm);
> -		list_add(&tv_vm.head, &objs);
> -		tv_bo.bo = &bo->ttm;
> -		tv_bo.num_shared = xe->info.tile_count;
> -		list_add(&tv_bo.head, &objs);
> -		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
> -	}
> +	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
>  	if (ret)
>  		goto unlock_vm;
>  
>  	/* Migrate to VRAM, move should invalidate the VMA first */
>  	ret = xe_bo_migrate(bo, XE_PL_VRAM0 + tile->id);
>  
> -	if (only_needs_bo_lock(bo))
> -		xe_bo_unlock(bo, &ww);
> -	else
> -		ttm_eu_backoff_reservation(&ww, &objs);
> +	xe_vm_bo_unlock(vm, bo, &exec, true);
>  unlock_vm:
>  	up_read(&vm->lock);
>  	xe_vm_put(vm);
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index 6c216350084b..c89b10d5feb5 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -7,8 +7,8 @@
>  
>  #include <linux/dma-fence-array.h>
>  
> +#include <drm/drm_exec.h>
>  #include <drm/drm_print.h>
> -#include <drm/ttm/ttm_execbuf_util.h>
>  #include <drm/ttm/ttm_tt.h>
>  #include <drm/xe_drm.h>
>  #include <linux/delay.h>
> @@ -321,11 +321,8 @@ static void resume_and_reinstall_preempt_fences(struct xe_vm *vm)
>  
>  int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
>  {
> -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
> -	struct ttm_validate_buffer *tv;
> -	struct ww_acquire_ctx ww;
> -	struct list_head objs;
>  	struct dma_fence *pfence;
> +	struct drm_exec exec;
>  	int err;
>  	bool wait;
>  
> @@ -333,7 +330,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
>  
>  	down_write(&vm->lock);
>  
> -	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs, true, 1);
> +	err = xe_vm_lock_dma_resv(vm, &exec, true, 1);
>  	if (err)
>  		goto out_unlock_outer;
>  
> @@ -367,7 +364,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
>  	up_read(&vm->userptr.notifier_lock);
>  
>  out_unlock:
> -	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
> +	xe_vm_unlock_dma_resv(vm, &exec);
>  out_unlock_outer:
>  	up_write(&vm->lock);
>  
> @@ -397,68 +394,43 @@ int __xe_vm_userptr_needs_repin(struct xe_vm *vm)
>   * 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.
> - * @ww: Pointer to a struct ww_acquire_ctx locking context.
> - * @tv_onstack: Array size XE_ONSTACK_TV of storage for the struct
> - * ttm_validate_buffers used for locking.
> - * @tv: Pointer to a pointer that on output contains the actual storage used.
> - * @objs: List head for the buffer objects locked.
> + * @exec: Pointer to a struct drm_exec execution context.
>   * @intr: Whether to lock interruptible.
>   * @num_shared: Number of dma-fence slots to reserve in the locked objects.
>   *
>   * Locks the vm dma-resv objects and all the dma-resv objects of the
> - * buffer objects on the vm external object list. The TTM utilities require
> - * a list of struct ttm_validate_buffers pointing to the actual buffer
> - * objects to lock. Storage for those struct ttm_validate_buffers should
> - * be provided in @tv_onstack, and is typically reserved on the stack
> - * of the caller. If the size of @tv_onstack isn't sufficient, then
> - * storage will be allocated internally using kvmalloc().
> + * buffer objects on the vm external object list using helpers provided
> + * by drm_exec.
>   *
>   * The function performs deadlock handling internally, and after a
>   * successful return the ww locking transaction should be considered
>   * sealed.
>   *
> - * Return: 0 on success, Negative error code on error. In particular if
> - * @intr is set to true, -EINTR or -ERESTARTSYS may be returned. In case
> - * of error, any locking performed has been reverted.
> + * Return: 0 on success, Negative error code on error.
>   */
> -int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> -			struct ttm_validate_buffer *tv_onstack,
> -			struct ttm_validate_buffer **tv,
> -			struct list_head *objs,
> -			bool intr,
> -			unsigned int num_shared)
> -{
> -	struct ttm_validate_buffer *tv_vm, *tv_bo;
> +int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
> +			bool intr, unsigned int num_shared)
> +{
>  	struct xe_vma *vma, *next;
> -	LIST_HEAD(dups);
> +	struct drm_gem_object *obj;
>  	int err;
>  
>  	lockdep_assert_held(&vm->lock);
>  
> -	if (vm->extobj.entries < XE_ONSTACK_TV) {
> -		tv_vm = tv_onstack;
> -	} else {
> -		tv_vm = kvmalloc_array(vm->extobj.entries + 1, sizeof(*tv_vm),
> -				       GFP_KERNEL);
> -		if (!tv_vm)
> -			return -ENOMEM;
> +	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
> +	drm_exec_until_all_locked(exec) {
> +		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm), num_shared);
> +		drm_exec_retry_on_contention(exec);
> +		if (unlikely(err) && err != -EALREADY)
> +			goto out_err;
> +		list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
> +			obj = &xe_vma_bo(vma)->ttm.base;
> +			err = drm_exec_prepare_obj(exec, obj, num_shared);
> +			drm_exec_retry_on_contention(exec);
> +			if (unlikely(err) && err != -EALREADY)
> +				goto out_err;
> +		}
>  	}
> -	tv_bo = tv_vm + 1;
> -
> -	INIT_LIST_HEAD(objs);
> -	list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
> -		tv_bo->num_shared = num_shared;
> -		tv_bo->bo = &xe_vma_bo(vma)->ttm;
> -
> -		list_add_tail(&tv_bo->head, objs);
> -		tv_bo++;
> -	}
> -	tv_vm->num_shared = num_shared;
> -	tv_vm->bo = xe_vm_ttm_bo(vm);
> -	list_add_tail(&tv_vm->head, objs);
> -	err = ttm_eu_reserve_buffers(ww, objs, intr, &dups);
> -	if (err)
> -		goto out_err;
>  
>  	spin_lock(&vm->notifier.list_lock);
>  	list_for_each_entry_safe(vma, next, &vm->notifier.rebind_list,
> @@ -470,14 +442,10 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>  			list_move_tail(&vma->rebind_link, &vm->rebind_list);
>  	}
>  	spin_unlock(&vm->notifier.list_lock);
> -
> -	*tv = tv_vm;
>  	return 0;
>  
>  out_err:
> -	if (tv_vm != tv_onstack)
> -		kvfree(tv_vm);
> -
> +	drm_exec_fini(exec);
>  	return err;
>  }
>  
> @@ -485,20 +453,16 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>   * xe_vm_unlock_dma_resv() - Unlock reservation objects locked by
>   * xe_vm_lock_dma_resv()
>   * @vm: The vm.
> - * @tv_onstack: The @tv_onstack array given to xe_vm_lock_dma_resv().
> - * @tv: The value of *@tv given by xe_vm_lock_dma_resv().
> - * @ww: The ww_acquire_context used for locking.
> - * @objs: The list returned from xe_vm_lock_dma_resv().
> + * @exec: The @drm_exec given to xe_vm_lock_dma_resv().
>   *
>   * Unlocks the reservation objects and frees any memory allocated by
>   * xe_vm_lock_dma_resv().
>   */
> -void xe_vm_unlock_dma_resv(struct xe_vm *vm,
> -			   struct ttm_validate_buffer *tv_onstack,
> -			   struct ttm_validate_buffer *tv,
> -			   struct ww_acquire_ctx *ww,
> -			   struct list_head *objs)
> +void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec)
>  {
> +	struct drm_gem_object *obj, *skip = xe_vm_gem(vm);
> +	unsigned long index;
> +
>  	/*
>  	 * Nothing should've been able to enter the list while we were locked,
>  	 * since we've held the dma-resvs of all the vm's external objects,
> @@ -507,9 +471,13 @@ void xe_vm_unlock_dma_resv(struct xe_vm *vm,
>  	 */
>  	XE_WARN_ON(!list_empty(&vm->notifier.rebind_list));
>  
> -	ttm_eu_backoff_reservation(ww, objs);
> -	if (tv && tv != tv_onstack)
> -		kvfree(tv);
> +	drm_exec_for_each_locked_object(exec, index, obj) {
> +		struct xe_bo *bo = gem_to_xe_bo(obj);
> +
> +		if (obj != skip)
> +			ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
> +	}
> +	drm_exec_fini(exec);
>  }
>  
>  #define XE_VM_REBIND_RETRY_TIMEOUT_MS 1000
> @@ -536,10 +504,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
>  {
>  	struct xe_vm *vm = container_of(w, struct xe_vm, preempt.rebind_work);
>  	struct xe_vma *vma;
> -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
> -	struct ttm_validate_buffer *tv;
> -	struct ww_acquire_ctx ww;
> -	struct list_head objs;
> +	struct drm_exec exec;
>  	struct dma_fence *rebind_fence;
>  	unsigned int fence_count = 0;
>  	LIST_HEAD(preempt_fences);
> @@ -582,8 +547,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
>  			goto out_unlock_outer;
>  	}
>  
> -	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs,
> -				  false, vm->preempt.num_engines);
> +	err = xe_vm_lock_dma_resv(vm, &exec, false, vm->preempt.num_engines);
>  	if (err)
>  		goto out_unlock_outer;
>  
> @@ -662,7 +626,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
>  	up_read(&vm->userptr.notifier_lock);
>  
>  out_unlock:
> -	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
> +	xe_vm_unlock_dma_resv(vm, &exec);
>  out_unlock_outer:
>  	if (err == -EAGAIN) {
>  		trace_xe_vm_rebind_worker_retry(vm);
> @@ -1105,27 +1069,17 @@ static void xe_vma_destroy(struct xe_vma *vma, struct dma_fence *fence)
>  
>  static void xe_vma_destroy_unlocked(struct xe_vma *vma)
>  {
> -	struct ttm_validate_buffer tv[2];
> -	struct ww_acquire_ctx ww;
> +	struct xe_vm *vm = xe_vma_vm(vma);
>  	struct xe_bo *bo = xe_vma_bo(vma);
> -	LIST_HEAD(objs);
> -	LIST_HEAD(dups);
> +	struct drm_exec exec;
>  	int err;
>  
> -	memset(tv, 0, sizeof(tv));
> -	tv[0].bo = xe_vm_ttm_bo(xe_vma_vm(vma));
> -	list_add(&tv[0].head, &objs);
> -
> -	if (bo) {
> -		tv[1].bo = &xe_bo_get(bo)->ttm;
> -		list_add(&tv[1].head, &objs);
> -	}
> -	err = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
> +	err = xe_vm_bo_lock(vm, xe_bo_get(bo), &exec, 0, false);
>  	XE_WARN_ON(err);
>  
>  	xe_vma_destroy(vma, NULL);
>  
> -	ttm_eu_backoff_reservation(&ww, &objs);
> +	xe_vm_bo_unlock(vm, bo, &exec, false);
>  	if (bo)
>  		xe_bo_put(bo);
>  }
> @@ -2125,21 +2079,6 @@ static int xe_vm_prefetch(struct xe_vm *vm, struct xe_vma *vma,
>  
>  #define VM_BIND_OP(op)	(op & 0xffff)
>  
> -struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm)
> -{
> -	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
> -		XE_VM_FLAG_GT_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 xe_vm_tv_populate(struct xe_vm *vm, struct ttm_validate_buffer *tv)
> -{
> -	tv->num_shared = 1;
> -	tv->bo = xe_vm_ttm_bo(vm);
> -}
> -
>  static void vm_set_async_error(struct xe_vm *vm, int err)
>  {
>  	lockdep_assert_held(&vm->lock);
> @@ -2577,17 +2516,12 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)
>  static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
>  			       struct xe_vma_op *op)
>  {
> -	LIST_HEAD(objs);
> -	LIST_HEAD(dups);
> -	struct ttm_validate_buffer tv_bo, tv_vm;
> -	struct ww_acquire_ctx ww;
>  	struct xe_bo *vbo;
> +	struct drm_exec exec;
>  	int err;
>  
>  	lockdep_assert_held_write(&vm->lock);
>  
> -	xe_vm_tv_populate(vm, &tv_vm);
> -	list_add_tail(&tv_vm.head, &objs);
>  	vbo = xe_vma_bo(vma);
>  	if (vbo) {
>  		/*
> @@ -2596,16 +2530,10 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
>  		 * take a reference here.
>  		 */
>  		xe_bo_get(vbo);
> -
> -		if (!vbo->vm) {
> -			tv_bo.bo = &vbo->ttm;
> -			tv_bo.num_shared = 1;
> -			list_add(&tv_bo.head, &objs);
> -		}
>  	}
>  
>  again:
> -	err = ttm_eu_reserve_buffers(&ww, &objs, true, &dups);
> +	err = xe_vm_bo_lock(vm, vbo, &exec, 1, true);
>  	if (err) {
>  		xe_bo_put(vbo);
>  		return err;
> @@ -2687,7 +2615,7 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
>  		XE_BUG_ON("NOT POSSIBLE");
>  	}
>  
> -	ttm_eu_backoff_reservation(&ww, &objs);
> +	xe_vm_bo_unlock(vm, vbo, &exec, false);
>  	if (err == -EAGAIN && xe_vma_is_userptr(vma)) {
>  		lockdep_assert_held_write(&vm->lock);
>  		err = xe_vma_userptr_pin_pages(vma);
> @@ -3338,24 +3266,47 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>  	return err == -ENODATA ? 0 : err;
>  }
>  
> +struct drm_gem_object *xe_vm_gem(struct xe_vm *vm)
> +{
> +	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
> +		XE_VM_FLAG_GT_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.base;
> +}
> +
>  /*
> - * XXX: Using the TTM wrappers for now, likely can call into dma-resv code
> - * directly to optimize. Also this likely should be an inline function.
> + * XXX: This likely should be an inline function.
>   */
>  int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>  	       int num_resv, bool intr)
>  {
> -	struct ttm_validate_buffer tv_vm;
> -	LIST_HEAD(objs);
> -	LIST_HEAD(dups);
> +	struct dma_resv *obj;
> +	int err;
>  
>  	XE_BUG_ON(!ww);
>  
> -	tv_vm.num_shared = num_resv;
> -	tv_vm.bo = xe_vm_ttm_bo(vm);;
> -	list_add_tail(&tv_vm.head, &objs);
> +	obj = xe_vm_gem(vm)->resv;
> +	ww_acquire_init(ww, &reservation_ww_class);
> +
> +	if (intr)
> +		err = dma_resv_lock_interruptible(obj, ww);
> +	else
> +		err = dma_resv_lock(obj, ww);
> +
> +	if (unlikely(err))
> +		return err;
> +
> +	num_resv = max(num_resv, 1);

Same question as above here.

Matt

> +	err = dma_resv_reserve_fences(obj, num_resv);
> +	if (err)
> +		goto out_err;
>  
> -	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
> +	return 0;
> +
> +out_err:
> +	dma_resv_unlock(&vm->resv);
> +	return err;
>  }
>  
>  void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
> @@ -3364,6 +3315,43 @@ void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
>  	ww_acquire_fini(ww);
>  }
>  
> +int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> +		  int num_resv, bool intr)
> +{
> +	int err;
> +
> +	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
> +	drm_exec_until_all_locked(exec) {
> +		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm),
> +					   num_resv);
> +		drm_exec_retry_on_contention(exec);
> +		if (err && err != -EALREADY)
> +			goto out_err;
> +
> +		if (bo && !bo->vm) {
> +			err = drm_exec_prepare_obj(exec, &bo->ttm.base,
> +						   num_resv);
> +			drm_exec_retry_on_contention(exec);
> +			if (err && err != -EALREADY)
> +				goto out_err;
> +		}
> +	}
> +
> +	return 0;
> +
> +out_err:
> +	drm_exec_fini(exec);
> +	return err;
> +}
> +
> +void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> +		     bool lru_update)
> +{
> +	if (lru_update && bo && (!bo->vm || xe_vm_no_dma_fences(vm)))
> +		ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
> +	drm_exec_fini(exec);
> +}
> +
>  /**
>   * xe_vm_invalidate_vma - invalidate GPU mappings for VMA without a lock
>   * @vma: VMA to invalidate
> diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
> index eaf11ac8ff51..62a062bd5078 100644
> --- a/drivers/gpu/drm/xe/xe_vm.h
> +++ b/drivers/gpu/drm/xe/xe_vm.h
> @@ -12,6 +12,7 @@
>  #include "xe_vm_types.h"
>  
>  struct drm_device;
> +struct drm_exec;
>  struct drm_printer;
>  struct drm_file;
>  
> @@ -39,11 +40,17 @@ static inline void xe_vm_put(struct xe_vm *vm)
>  	kref_put(&vm->refcount, xe_vm_free);
>  }
>  
> +struct drm_gem_object *xe_vm_gem(struct xe_vm *vm);
> +
>  int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>  	       int num_resv, bool intr);
> -
>  void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww);
>  
> +int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> +		  int num_resv, bool intr);
> +void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> +		     bool lru_update);
> +
>  static inline bool xe_vm_is_closed(struct xe_vm *vm)
>  {
>  	/* Only guaranteed not to change when vm->lock is held */
> @@ -183,8 +190,6 @@ int xe_vm_async_fence_wait_start(struct dma_fence *fence);
>  
>  extern struct ttm_device_funcs xe_ttm_funcs;
>  
> -struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm);
> -
>  /**
>   * xe_vm_reactivate_rebind() - Reactivate the rebind functionality on compute
>   * vms.
> @@ -212,23 +217,10 @@ static inline void xe_vm_queue_rebind_worker(struct xe_vm *vm)
>  	queue_work(vm->xe->ordered_wq, &vm->preempt.rebind_work);
>  }
>  
> -/*
> - * XE_ONSTACK_TV is used to size the tv_onstack array that is input
> - * to xe_vm_lock_dma_resv() and xe_vm_unlock_dma_resv().
> - */
> -#define XE_ONSTACK_TV 20
> -int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> -			struct ttm_validate_buffer *tv_onstack,
> -			struct ttm_validate_buffer **tv,
> -			struct list_head *objs,
> -			bool intr,
> -			unsigned int num_shared);
> -
> -void xe_vm_unlock_dma_resv(struct xe_vm *vm,
> -			   struct ttm_validate_buffer *tv_onstack,
> -			   struct ttm_validate_buffer *tv,
> -			   struct ww_acquire_ctx *ww,
> -			   struct list_head *objs);
> +int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
> +			bool intr, unsigned int num_shared);
> +
> +void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec);
>  
>  void xe_vm_fence_all_extobjs(struct xe_vm *vm, struct dma_fence *fence,
>  			     enum dma_resv_usage usage);
> -- 
> 2.34.1
> 

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

* Re: [Intel-xe] [PATCH v2 2/2] drm/xe: switch to using drm_exec
  2023-07-13 14:00   ` Matthew Brost
@ 2023-07-13 14:17     ` Francois Dugast
  2023-07-13 14:35     ` Christian König
  1 sibling, 0 replies; 14+ messages in thread
From: Francois Dugast @ 2023-07-13 14:17 UTC (permalink / raw)
  To: Matthew Brost; +Cc: intel-xe, christian.koenig

On Thu, Jul 13, 2023 at 02:00:14PM +0000, Matthew Brost wrote:
> On Thu, Jul 13, 2023 at 01:17:11PM +0000, Francois Dugast wrote:
> > Replace the use of ttm_execbuf_util helpers with the drm_exec helpers.
> > 
> > v2:
> > - Call dma-resv locking functions directly in xe_bo_lock and
> >   xe_vm_lock functions (Matthew Brost)
> > - Switch to execution context for GEM buffers v7 (Christian König)
> > - Use DRM_EXEC_INTERRUPTIBLE_WAIT
> > 
> > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > ---
> >  drivers/gpu/drm/xe/Kconfig           |   1 +
> >  drivers/gpu/drm/xe/xe_bo.c           |  29 +++-
> >  drivers/gpu/drm/xe/xe_bo_types.h     |   1 -
> >  drivers/gpu/drm/xe/xe_exec.c         |  30 +---
> >  drivers/gpu/drm/xe/xe_gt_pagefault.c |  55 +-----
> >  drivers/gpu/drm/xe/xe_vm.c           | 246 +++++++++++++--------------
> >  drivers/gpu/drm/xe/xe_vm.h           |  32 ++--
> >  7 files changed, 168 insertions(+), 226 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
> > index d44794f99338..b739faa401d3 100644
> > --- a/drivers/gpu/drm/xe/Kconfig
> > +++ b/drivers/gpu/drm/xe/Kconfig
> > @@ -8,6 +8,7 @@ config DRM_XE
> >  	select SHMEM
> >  	select TMPFS
> >  	select DRM_BUDDY
> > +	select DRM_EXEC
> >  	select DRM_KMS_HELPER
> >  	select DRM_PANEL
> >  	select DRM_SUBALLOC_HELPER
> > diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
> > index 6353afa8d846..aafe69ed4320 100644
> > --- a/drivers/gpu/drm/xe/xe_bo.c
> > +++ b/drivers/gpu/drm/xe/xe_bo.c
> > @@ -1806,17 +1806,32 @@ int xe_gem_mmap_offset_ioctl(struct drm_device *dev, void *data,
> >  int xe_bo_lock(struct xe_bo *bo, struct ww_acquire_ctx *ww,
> >  	       int num_resv, bool intr)
> >  {
> > -	struct ttm_validate_buffer tv_bo;
> > -	LIST_HEAD(objs);
> > -	LIST_HEAD(dups);
> > +	struct dma_resv *obj;
> > +	int err;
> >  
> >  	XE_BUG_ON(!ww);
> >  
> > -	tv_bo.num_shared = num_resv;
> > -	tv_bo.bo = &bo->ttm;;
> > -	list_add_tail(&tv_bo.head, &objs);
> > +	obj = bo->ttm.base.resv;
> > +	ww_acquire_init(ww, &reservation_ww_class);
> > +
> > +	if (intr)
> > +		err = dma_resv_lock_interruptible(obj, ww);
> > +	else
> > +		err = dma_resv_lock(obj, ww);
> > +
> > +	if (unlikely(err))
> > +		return err;
> > +
> > +	num_resv = max(num_resv, 1);
> 
> Why? If the user ask to reserve 0 fences this will reserve 1.

The intention was to not deviate from the previous behavior with
ttm_eu_reserve_buffers [1]:

		num_fences = max(entry->num_shared, 1u);

But if you confirm is not needed then I will remove it so that exactly num_resv
fences are reserved.

[1] https://gitlab.freedesktop.org/drm/xe/kernel/-/blob/drm-xe-next/drivers/gpu/drm/ttm/ttm_execbuf_util.c#L100

Francois

> 
> > +	err = dma_resv_reserve_fences(obj, num_resv);
> > +	if (err)
> > +		goto out_err;
> >  
> > -	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
> > +	return 0;
> > +
> > +out_err:
> > +	dma_resv_unlock(obj);
> > +	return err;
> >  }
> >  
> >  void xe_bo_unlock(struct xe_bo *bo, struct ww_acquire_ctx *ww)
> > diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
> > index f6ee920303af..bc67263c6713 100644
> > --- a/drivers/gpu/drm/xe/xe_bo_types.h
> > +++ b/drivers/gpu/drm/xe/xe_bo_types.h
> > @@ -11,7 +11,6 @@
> >  #include <drm/drm_mm.h>
> >  #include <drm/ttm/ttm_bo.h>
> >  #include <drm/ttm/ttm_device.h>
> > -#include <drm/ttm/ttm_execbuf_util.h>
> >  #include <drm/ttm/ttm_placement.h>
> >  
> >  struct xe_device;
> > diff --git a/drivers/gpu/drm/xe/xe_exec.c b/drivers/gpu/drm/xe/xe_exec.c
> > index ba13d20ed348..32a6e16ec177 100644
> > --- a/drivers/gpu/drm/xe/xe_exec.c
> > +++ b/drivers/gpu/drm/xe/xe_exec.c
> > @@ -6,6 +6,7 @@
> >  #include "xe_exec.h"
> >  
> >  #include <drm/drm_device.h>
> > +#include <drm/drm_exec.h>
> >  #include <drm/drm_file.h>
> >  #include <drm/xe_drm.h>
> >  #include <linux/delay.h>
> > @@ -95,23 +96,18 @@
> >  
> >  #define XE_EXEC_BIND_RETRY_TIMEOUT_MS 1000
> >  
> > -static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
> > -			 struct ttm_validate_buffer tv_onstack[],
> > -			 struct ttm_validate_buffer **tv,
> > -			 struct list_head *objs)
> > +static int xe_exec_begin(struct xe_engine *e, struct drm_exec *exec)
> >  {
> >  	struct xe_vm *vm = e->vm;
> >  	struct xe_vma *vma;
> > -	LIST_HEAD(dups);
> >  	ktime_t end = 0;
> >  	int err = 0;
> >  
> > -	*tv = NULL;
> >  	if (xe_vm_no_dma_fences(e->vm))
> >  		return 0;
> >  
> >  retry:
> > -	err = xe_vm_lock_dma_resv(vm, ww, tv_onstack, tv, objs, true, 1);
> > +	err = xe_vm_lock_dma_resv(vm, exec, true, 1);
> >  	if (err)
> >  		return err;
> >  
> > @@ -128,8 +124,7 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
> >  
> >  		err = xe_bo_validate(xe_vma_bo(vma), vm, false);
> >  		if (err) {
> > -			xe_vm_unlock_dma_resv(vm, tv_onstack, *tv, ww, objs);
> > -			*tv = NULL;
> > +			xe_vm_unlock_dma_resv(vm, exec);
> >  			break;
> >  		}
> >  	}
> > @@ -153,14 +148,10 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
> >  	return err;
> >  }
> >  
> > -static void xe_exec_end(struct xe_engine *e,
> > -			struct ttm_validate_buffer *tv_onstack,
> > -			struct ttm_validate_buffer *tv,
> > -			struct ww_acquire_ctx *ww,
> > -			struct list_head *objs)
> > +static void xe_exec_end(struct xe_engine *e, struct drm_exec *exec)
> >  {
> >  	if (!xe_vm_no_dma_fences(e->vm))
> > -		xe_vm_unlock_dma_resv(e->vm, tv_onstack, tv, ww, objs);
> > +		xe_vm_unlock_dma_resv(e->vm, exec);
> >  }
> >  
> >  int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> > @@ -173,14 +164,11 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> >  	struct xe_engine *engine;
> >  	struct xe_sync_entry *syncs = NULL;
> >  	u64 addresses[XE_HW_ENGINE_MAX_INSTANCE];
> > -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
> > -	struct ttm_validate_buffer *tv = NULL;
> >  	u32 i, num_syncs = 0;
> >  	struct xe_sched_job *job;
> >  	struct dma_fence *rebind_fence;
> >  	struct xe_vm *vm;
> > -	struct ww_acquire_ctx ww;
> > -	struct list_head objs;
> > +	struct drm_exec exec;
> >  	bool write_locked;
> >  	int err = 0;
> >  
> > @@ -293,7 +281,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> >  			goto err_unlock_list;
> >  	}
> >  
> > -	err = xe_exec_begin(engine, &ww, tv_onstack, &tv, &objs);
> > +	err = xe_exec_begin(engine, &exec);
> >  	if (err)
> >  		goto err_unlock_list;
> >  
> > @@ -412,7 +400,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> >  	if (err)
> >  		xe_sched_job_put(job);
> >  err_engine_end:
> > -	xe_exec_end(engine, tv_onstack, tv, &ww, &objs);
> > +	xe_exec_end(engine, &exec);
> >  err_unlock_list:
> >  	if (write_locked)
> >  		up_write(&vm->lock);
> > diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> > index 125e4744fa38..94f59c29ba9b 100644
> > --- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
> > +++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> > @@ -8,8 +8,8 @@
> >  #include <linux/bitfield.h>
> >  #include <linux/circ_buf.h>
> >  
> > +#include <drm/drm_exec.h>
> >  #include <drm/drm_managed.h>
> > -#include <drm/ttm/ttm_execbuf_util.h>
> >  
> >  #include "xe_bo.h"
> >  #include "xe_gt.h"
> > @@ -84,11 +84,6 @@ static bool vma_matches(struct xe_vma *vma, u64 page_addr)
> >  	return true;
> >  }
> >  
> > -static bool only_needs_bo_lock(struct xe_bo *bo)
> > -{
> > -	return bo && bo->vm;
> > -}
> > -
> >  static struct xe_vma *lookup_vma(struct xe_vm *vm, u64 page_addr)
> >  {
> >  	struct xe_vma *vma = NULL;
> > @@ -110,10 +105,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
> >  	struct xe_vm *vm;
> >  	struct xe_vma *vma = NULL;
> >  	struct xe_bo *bo;
> > -	LIST_HEAD(objs);
> > -	LIST_HEAD(dups);
> > -	struct ttm_validate_buffer tv_bo, tv_vm;
> > -	struct ww_acquire_ctx ww;
> > +	struct drm_exec exec;
> >  	struct dma_fence *fence;
> >  	bool write_locked;
> >  	int ret = 0;
> > @@ -171,20 +163,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
> >  
> >  	/* Lock VM and BOs dma-resv */
> >  	bo = xe_vma_bo(vma);
> > -	if (only_needs_bo_lock(bo)) {
> > -		/* This path ensures the BO's LRU is updated */
> > -		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
> > -	} else {
> > -		tv_vm.num_shared = xe->info.tile_count;
> > -		tv_vm.bo = xe_vm_ttm_bo(vm);
> > -		list_add(&tv_vm.head, &objs);
> > -		if (bo) {
> > -			tv_bo.bo = &bo->ttm;
> > -			tv_bo.num_shared = xe->info.tile_count;
> > -			list_add(&tv_bo.head, &objs);
> > -		}
> > -		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
> > -	}
> > +	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
> >  	if (ret)
> >  		goto unlock_vm;
> >  
> > @@ -227,10 +206,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
> >  	vma->usm.tile_invalidated &= ~BIT(gt_to_tile(gt)->id);
> >  
> >  unlock_dma_resv:
> > -	if (only_needs_bo_lock(bo))
> > -		xe_bo_unlock(bo, &ww);
> > -	else
> > -		ttm_eu_backoff_reservation(&ww, &objs);
> > +	xe_vm_bo_unlock(vm, bo, &exec, true);
> >  unlock_vm:
> >  	if (!ret)
> >  		vm->usm.last_fault_vma = vma;
> > @@ -498,10 +474,7 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
> >  	struct xe_vm *vm;
> >  	struct xe_vma *vma;
> >  	struct xe_bo *bo;
> > -	LIST_HEAD(objs);
> > -	LIST_HEAD(dups);
> > -	struct ttm_validate_buffer tv_bo, tv_vm;
> > -	struct ww_acquire_ctx ww;
> > +	struct drm_exec exec;
> >  	int ret = 0;
> >  
> >  	/* We only support ACC_TRIGGER at the moment */
> > @@ -534,28 +507,14 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
> >  
> >  	/* Lock VM and BOs dma-resv */
> >  	bo = xe_vma_bo(vma);
> > -	if (only_needs_bo_lock(bo)) {
> > -		/* This path ensures the BO's LRU is updated */
> > -		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
> > -	} else {
> > -		tv_vm.num_shared = xe->info.tile_count;
> > -		tv_vm.bo = xe_vm_ttm_bo(vm);
> > -		list_add(&tv_vm.head, &objs);
> > -		tv_bo.bo = &bo->ttm;
> > -		tv_bo.num_shared = xe->info.tile_count;
> > -		list_add(&tv_bo.head, &objs);
> > -		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
> > -	}
> > +	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
> >  	if (ret)
> >  		goto unlock_vm;
> >  
> >  	/* Migrate to VRAM, move should invalidate the VMA first */
> >  	ret = xe_bo_migrate(bo, XE_PL_VRAM0 + tile->id);
> >  
> > -	if (only_needs_bo_lock(bo))
> > -		xe_bo_unlock(bo, &ww);
> > -	else
> > -		ttm_eu_backoff_reservation(&ww, &objs);
> > +	xe_vm_bo_unlock(vm, bo, &exec, true);
> >  unlock_vm:
> >  	up_read(&vm->lock);
> >  	xe_vm_put(vm);
> > diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> > index 6c216350084b..c89b10d5feb5 100644
> > --- a/drivers/gpu/drm/xe/xe_vm.c
> > +++ b/drivers/gpu/drm/xe/xe_vm.c
> > @@ -7,8 +7,8 @@
> >  
> >  #include <linux/dma-fence-array.h>
> >  
> > +#include <drm/drm_exec.h>
> >  #include <drm/drm_print.h>
> > -#include <drm/ttm/ttm_execbuf_util.h>
> >  #include <drm/ttm/ttm_tt.h>
> >  #include <drm/xe_drm.h>
> >  #include <linux/delay.h>
> > @@ -321,11 +321,8 @@ static void resume_and_reinstall_preempt_fences(struct xe_vm *vm)
> >  
> >  int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
> >  {
> > -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
> > -	struct ttm_validate_buffer *tv;
> > -	struct ww_acquire_ctx ww;
> > -	struct list_head objs;
> >  	struct dma_fence *pfence;
> > +	struct drm_exec exec;
> >  	int err;
> >  	bool wait;
> >  
> > @@ -333,7 +330,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
> >  
> >  	down_write(&vm->lock);
> >  
> > -	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs, true, 1);
> > +	err = xe_vm_lock_dma_resv(vm, &exec, true, 1);
> >  	if (err)
> >  		goto out_unlock_outer;
> >  
> > @@ -367,7 +364,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
> >  	up_read(&vm->userptr.notifier_lock);
> >  
> >  out_unlock:
> > -	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
> > +	xe_vm_unlock_dma_resv(vm, &exec);
> >  out_unlock_outer:
> >  	up_write(&vm->lock);
> >  
> > @@ -397,68 +394,43 @@ int __xe_vm_userptr_needs_repin(struct xe_vm *vm)
> >   * 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.
> > - * @ww: Pointer to a struct ww_acquire_ctx locking context.
> > - * @tv_onstack: Array size XE_ONSTACK_TV of storage for the struct
> > - * ttm_validate_buffers used for locking.
> > - * @tv: Pointer to a pointer that on output contains the actual storage used.
> > - * @objs: List head for the buffer objects locked.
> > + * @exec: Pointer to a struct drm_exec execution context.
> >   * @intr: Whether to lock interruptible.
> >   * @num_shared: Number of dma-fence slots to reserve in the locked objects.
> >   *
> >   * Locks the vm dma-resv objects and all the dma-resv objects of the
> > - * buffer objects on the vm external object list. The TTM utilities require
> > - * a list of struct ttm_validate_buffers pointing to the actual buffer
> > - * objects to lock. Storage for those struct ttm_validate_buffers should
> > - * be provided in @tv_onstack, and is typically reserved on the stack
> > - * of the caller. If the size of @tv_onstack isn't sufficient, then
> > - * storage will be allocated internally using kvmalloc().
> > + * buffer objects on the vm external object list using helpers provided
> > + * by drm_exec.
> >   *
> >   * The function performs deadlock handling internally, and after a
> >   * successful return the ww locking transaction should be considered
> >   * sealed.
> >   *
> > - * Return: 0 on success, Negative error code on error. In particular if
> > - * @intr is set to true, -EINTR or -ERESTARTSYS may be returned. In case
> > - * of error, any locking performed has been reverted.
> > + * Return: 0 on success, Negative error code on error.
> >   */
> > -int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> > -			struct ttm_validate_buffer *tv_onstack,
> > -			struct ttm_validate_buffer **tv,
> > -			struct list_head *objs,
> > -			bool intr,
> > -			unsigned int num_shared)
> > -{
> > -	struct ttm_validate_buffer *tv_vm, *tv_bo;
> > +int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
> > +			bool intr, unsigned int num_shared)
> > +{
> >  	struct xe_vma *vma, *next;
> > -	LIST_HEAD(dups);
> > +	struct drm_gem_object *obj;
> >  	int err;
> >  
> >  	lockdep_assert_held(&vm->lock);
> >  
> > -	if (vm->extobj.entries < XE_ONSTACK_TV) {
> > -		tv_vm = tv_onstack;
> > -	} else {
> > -		tv_vm = kvmalloc_array(vm->extobj.entries + 1, sizeof(*tv_vm),
> > -				       GFP_KERNEL);
> > -		if (!tv_vm)
> > -			return -ENOMEM;
> > +	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
> > +	drm_exec_until_all_locked(exec) {
> > +		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm), num_shared);
> > +		drm_exec_retry_on_contention(exec);
> > +		if (unlikely(err) && err != -EALREADY)
> > +			goto out_err;
> > +		list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
> > +			obj = &xe_vma_bo(vma)->ttm.base;
> > +			err = drm_exec_prepare_obj(exec, obj, num_shared);
> > +			drm_exec_retry_on_contention(exec);
> > +			if (unlikely(err) && err != -EALREADY)
> > +				goto out_err;
> > +		}
> >  	}
> > -	tv_bo = tv_vm + 1;
> > -
> > -	INIT_LIST_HEAD(objs);
> > -	list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
> > -		tv_bo->num_shared = num_shared;
> > -		tv_bo->bo = &xe_vma_bo(vma)->ttm;
> > -
> > -		list_add_tail(&tv_bo->head, objs);
> > -		tv_bo++;
> > -	}
> > -	tv_vm->num_shared = num_shared;
> > -	tv_vm->bo = xe_vm_ttm_bo(vm);
> > -	list_add_tail(&tv_vm->head, objs);
> > -	err = ttm_eu_reserve_buffers(ww, objs, intr, &dups);
> > -	if (err)
> > -		goto out_err;
> >  
> >  	spin_lock(&vm->notifier.list_lock);
> >  	list_for_each_entry_safe(vma, next, &vm->notifier.rebind_list,
> > @@ -470,14 +442,10 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> >  			list_move_tail(&vma->rebind_link, &vm->rebind_list);
> >  	}
> >  	spin_unlock(&vm->notifier.list_lock);
> > -
> > -	*tv = tv_vm;
> >  	return 0;
> >  
> >  out_err:
> > -	if (tv_vm != tv_onstack)
> > -		kvfree(tv_vm);
> > -
> > +	drm_exec_fini(exec);
> >  	return err;
> >  }
> >  
> > @@ -485,20 +453,16 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> >   * xe_vm_unlock_dma_resv() - Unlock reservation objects locked by
> >   * xe_vm_lock_dma_resv()
> >   * @vm: The vm.
> > - * @tv_onstack: The @tv_onstack array given to xe_vm_lock_dma_resv().
> > - * @tv: The value of *@tv given by xe_vm_lock_dma_resv().
> > - * @ww: The ww_acquire_context used for locking.
> > - * @objs: The list returned from xe_vm_lock_dma_resv().
> > + * @exec: The @drm_exec given to xe_vm_lock_dma_resv().
> >   *
> >   * Unlocks the reservation objects and frees any memory allocated by
> >   * xe_vm_lock_dma_resv().
> >   */
> > -void xe_vm_unlock_dma_resv(struct xe_vm *vm,
> > -			   struct ttm_validate_buffer *tv_onstack,
> > -			   struct ttm_validate_buffer *tv,
> > -			   struct ww_acquire_ctx *ww,
> > -			   struct list_head *objs)
> > +void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec)
> >  {
> > +	struct drm_gem_object *obj, *skip = xe_vm_gem(vm);
> > +	unsigned long index;
> > +
> >  	/*
> >  	 * Nothing should've been able to enter the list while we were locked,
> >  	 * since we've held the dma-resvs of all the vm's external objects,
> > @@ -507,9 +471,13 @@ void xe_vm_unlock_dma_resv(struct xe_vm *vm,
> >  	 */
> >  	XE_WARN_ON(!list_empty(&vm->notifier.rebind_list));
> >  
> > -	ttm_eu_backoff_reservation(ww, objs);
> > -	if (tv && tv != tv_onstack)
> > -		kvfree(tv);
> > +	drm_exec_for_each_locked_object(exec, index, obj) {
> > +		struct xe_bo *bo = gem_to_xe_bo(obj);
> > +
> > +		if (obj != skip)
> > +			ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
> > +	}
> > +	drm_exec_fini(exec);
> >  }
> >  
> >  #define XE_VM_REBIND_RETRY_TIMEOUT_MS 1000
> > @@ -536,10 +504,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
> >  {
> >  	struct xe_vm *vm = container_of(w, struct xe_vm, preempt.rebind_work);
> >  	struct xe_vma *vma;
> > -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
> > -	struct ttm_validate_buffer *tv;
> > -	struct ww_acquire_ctx ww;
> > -	struct list_head objs;
> > +	struct drm_exec exec;
> >  	struct dma_fence *rebind_fence;
> >  	unsigned int fence_count = 0;
> >  	LIST_HEAD(preempt_fences);
> > @@ -582,8 +547,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
> >  			goto out_unlock_outer;
> >  	}
> >  
> > -	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs,
> > -				  false, vm->preempt.num_engines);
> > +	err = xe_vm_lock_dma_resv(vm, &exec, false, vm->preempt.num_engines);
> >  	if (err)
> >  		goto out_unlock_outer;
> >  
> > @@ -662,7 +626,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
> >  	up_read(&vm->userptr.notifier_lock);
> >  
> >  out_unlock:
> > -	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
> > +	xe_vm_unlock_dma_resv(vm, &exec);
> >  out_unlock_outer:
> >  	if (err == -EAGAIN) {
> >  		trace_xe_vm_rebind_worker_retry(vm);
> > @@ -1105,27 +1069,17 @@ static void xe_vma_destroy(struct xe_vma *vma, struct dma_fence *fence)
> >  
> >  static void xe_vma_destroy_unlocked(struct xe_vma *vma)
> >  {
> > -	struct ttm_validate_buffer tv[2];
> > -	struct ww_acquire_ctx ww;
> > +	struct xe_vm *vm = xe_vma_vm(vma);
> >  	struct xe_bo *bo = xe_vma_bo(vma);
> > -	LIST_HEAD(objs);
> > -	LIST_HEAD(dups);
> > +	struct drm_exec exec;
> >  	int err;
> >  
> > -	memset(tv, 0, sizeof(tv));
> > -	tv[0].bo = xe_vm_ttm_bo(xe_vma_vm(vma));
> > -	list_add(&tv[0].head, &objs);
> > -
> > -	if (bo) {
> > -		tv[1].bo = &xe_bo_get(bo)->ttm;
> > -		list_add(&tv[1].head, &objs);
> > -	}
> > -	err = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
> > +	err = xe_vm_bo_lock(vm, xe_bo_get(bo), &exec, 0, false);
> >  	XE_WARN_ON(err);
> >  
> >  	xe_vma_destroy(vma, NULL);
> >  
> > -	ttm_eu_backoff_reservation(&ww, &objs);
> > +	xe_vm_bo_unlock(vm, bo, &exec, false);
> >  	if (bo)
> >  		xe_bo_put(bo);
> >  }
> > @@ -2125,21 +2079,6 @@ static int xe_vm_prefetch(struct xe_vm *vm, struct xe_vma *vma,
> >  
> >  #define VM_BIND_OP(op)	(op & 0xffff)
> >  
> > -struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm)
> > -{
> > -	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
> > -		XE_VM_FLAG_GT_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 xe_vm_tv_populate(struct xe_vm *vm, struct ttm_validate_buffer *tv)
> > -{
> > -	tv->num_shared = 1;
> > -	tv->bo = xe_vm_ttm_bo(vm);
> > -}
> > -
> >  static void vm_set_async_error(struct xe_vm *vm, int err)
> >  {
> >  	lockdep_assert_held(&vm->lock);
> > @@ -2577,17 +2516,12 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)
> >  static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
> >  			       struct xe_vma_op *op)
> >  {
> > -	LIST_HEAD(objs);
> > -	LIST_HEAD(dups);
> > -	struct ttm_validate_buffer tv_bo, tv_vm;
> > -	struct ww_acquire_ctx ww;
> >  	struct xe_bo *vbo;
> > +	struct drm_exec exec;
> >  	int err;
> >  
> >  	lockdep_assert_held_write(&vm->lock);
> >  
> > -	xe_vm_tv_populate(vm, &tv_vm);
> > -	list_add_tail(&tv_vm.head, &objs);
> >  	vbo = xe_vma_bo(vma);
> >  	if (vbo) {
> >  		/*
> > @@ -2596,16 +2530,10 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
> >  		 * take a reference here.
> >  		 */
> >  		xe_bo_get(vbo);
> > -
> > -		if (!vbo->vm) {
> > -			tv_bo.bo = &vbo->ttm;
> > -			tv_bo.num_shared = 1;
> > -			list_add(&tv_bo.head, &objs);
> > -		}
> >  	}
> >  
> >  again:
> > -	err = ttm_eu_reserve_buffers(&ww, &objs, true, &dups);
> > +	err = xe_vm_bo_lock(vm, vbo, &exec, 1, true);
> >  	if (err) {
> >  		xe_bo_put(vbo);
> >  		return err;
> > @@ -2687,7 +2615,7 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
> >  		XE_BUG_ON("NOT POSSIBLE");
> >  	}
> >  
> > -	ttm_eu_backoff_reservation(&ww, &objs);
> > +	xe_vm_bo_unlock(vm, vbo, &exec, false);
> >  	if (err == -EAGAIN && xe_vma_is_userptr(vma)) {
> >  		lockdep_assert_held_write(&vm->lock);
> >  		err = xe_vma_userptr_pin_pages(vma);
> > @@ -3338,24 +3266,47 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> >  	return err == -ENODATA ? 0 : err;
> >  }
> >  
> > +struct drm_gem_object *xe_vm_gem(struct xe_vm *vm)
> > +{
> > +	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
> > +		XE_VM_FLAG_GT_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.base;
> > +}
> > +
> >  /*
> > - * XXX: Using the TTM wrappers for now, likely can call into dma-resv code
> > - * directly to optimize. Also this likely should be an inline function.
> > + * XXX: This likely should be an inline function.
> >   */
> >  int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> >  	       int num_resv, bool intr)
> >  {
> > -	struct ttm_validate_buffer tv_vm;
> > -	LIST_HEAD(objs);
> > -	LIST_HEAD(dups);
> > +	struct dma_resv *obj;
> > +	int err;
> >  
> >  	XE_BUG_ON(!ww);
> >  
> > -	tv_vm.num_shared = num_resv;
> > -	tv_vm.bo = xe_vm_ttm_bo(vm);;
> > -	list_add_tail(&tv_vm.head, &objs);
> > +	obj = xe_vm_gem(vm)->resv;
> > +	ww_acquire_init(ww, &reservation_ww_class);
> > +
> > +	if (intr)
> > +		err = dma_resv_lock_interruptible(obj, ww);
> > +	else
> > +		err = dma_resv_lock(obj, ww);
> > +
> > +	if (unlikely(err))
> > +		return err;
> > +
> > +	num_resv = max(num_resv, 1);
> 
> Same question as above here.
> 
> Matt
> 
> > +	err = dma_resv_reserve_fences(obj, num_resv);
> > +	if (err)
> > +		goto out_err;
> >  
> > -	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
> > +	return 0;
> > +
> > +out_err:
> > +	dma_resv_unlock(&vm->resv);
> > +	return err;
> >  }
> >  
> >  void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
> > @@ -3364,6 +3315,43 @@ void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
> >  	ww_acquire_fini(ww);
> >  }
> >  
> > +int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> > +		  int num_resv, bool intr)
> > +{
> > +	int err;
> > +
> > +	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
> > +	drm_exec_until_all_locked(exec) {
> > +		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm),
> > +					   num_resv);
> > +		drm_exec_retry_on_contention(exec);
> > +		if (err && err != -EALREADY)
> > +			goto out_err;
> > +
> > +		if (bo && !bo->vm) {
> > +			err = drm_exec_prepare_obj(exec, &bo->ttm.base,
> > +						   num_resv);
> > +			drm_exec_retry_on_contention(exec);
> > +			if (err && err != -EALREADY)
> > +				goto out_err;
> > +		}
> > +	}
> > +
> > +	return 0;
> > +
> > +out_err:
> > +	drm_exec_fini(exec);
> > +	return err;
> > +}
> > +
> > +void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> > +		     bool lru_update)
> > +{
> > +	if (lru_update && bo && (!bo->vm || xe_vm_no_dma_fences(vm)))
> > +		ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
> > +	drm_exec_fini(exec);
> > +}
> > +
> >  /**
> >   * xe_vm_invalidate_vma - invalidate GPU mappings for VMA without a lock
> >   * @vma: VMA to invalidate
> > diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
> > index eaf11ac8ff51..62a062bd5078 100644
> > --- a/drivers/gpu/drm/xe/xe_vm.h
> > +++ b/drivers/gpu/drm/xe/xe_vm.h
> > @@ -12,6 +12,7 @@
> >  #include "xe_vm_types.h"
> >  
> >  struct drm_device;
> > +struct drm_exec;
> >  struct drm_printer;
> >  struct drm_file;
> >  
> > @@ -39,11 +40,17 @@ static inline void xe_vm_put(struct xe_vm *vm)
> >  	kref_put(&vm->refcount, xe_vm_free);
> >  }
> >  
> > +struct drm_gem_object *xe_vm_gem(struct xe_vm *vm);
> > +
> >  int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> >  	       int num_resv, bool intr);
> > -
> >  void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww);
> >  
> > +int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> > +		  int num_resv, bool intr);
> > +void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> > +		     bool lru_update);
> > +
> >  static inline bool xe_vm_is_closed(struct xe_vm *vm)
> >  {
> >  	/* Only guaranteed not to change when vm->lock is held */
> > @@ -183,8 +190,6 @@ int xe_vm_async_fence_wait_start(struct dma_fence *fence);
> >  
> >  extern struct ttm_device_funcs xe_ttm_funcs;
> >  
> > -struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm);
> > -
> >  /**
> >   * xe_vm_reactivate_rebind() - Reactivate the rebind functionality on compute
> >   * vms.
> > @@ -212,23 +217,10 @@ static inline void xe_vm_queue_rebind_worker(struct xe_vm *vm)
> >  	queue_work(vm->xe->ordered_wq, &vm->preempt.rebind_work);
> >  }
> >  
> > -/*
> > - * XE_ONSTACK_TV is used to size the tv_onstack array that is input
> > - * to xe_vm_lock_dma_resv() and xe_vm_unlock_dma_resv().
> > - */
> > -#define XE_ONSTACK_TV 20
> > -int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> > -			struct ttm_validate_buffer *tv_onstack,
> > -			struct ttm_validate_buffer **tv,
> > -			struct list_head *objs,
> > -			bool intr,
> > -			unsigned int num_shared);
> > -
> > -void xe_vm_unlock_dma_resv(struct xe_vm *vm,
> > -			   struct ttm_validate_buffer *tv_onstack,
> > -			   struct ttm_validate_buffer *tv,
> > -			   struct ww_acquire_ctx *ww,
> > -			   struct list_head *objs);
> > +int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
> > +			bool intr, unsigned int num_shared);
> > +
> > +void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec);
> >  
> >  void xe_vm_fence_all_extobjs(struct xe_vm *vm, struct dma_fence *fence,
> >  			     enum dma_resv_usage usage);
> > -- 
> > 2.34.1
> > 

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

* [Intel-xe] ✓ CI.Patch_applied: success for drm/xe: switch to using drm_exec
  2023-07-13 13:17 [Intel-xe] [PATCH v2 0/2] drm/xe: switch to using drm_exec Francois Dugast
  2023-07-13 13:17 ` [Intel-xe] [PATCH v2 1/2] drm: execution context for GEM buffers v7 Francois Dugast
  2023-07-13 13:17 ` [Intel-xe] [PATCH v2 2/2] drm/xe: switch to using drm_exec Francois Dugast
@ 2023-07-13 14:18 ` Patchwork
  2023-07-13 14:19 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2023-07-13 14:18 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: drm/xe: switch to using drm_exec
URL   : https://patchwork.freedesktop.org/series/120675/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-xe-next' with base: ===
Base commit: ccde55837 drm/xe: handle TLB invalidations from CT fast-path
=== git am output follows ===
Applying: drm: execution context for GEM buffers v7
Applying: drm/xe: switch to using drm_exec



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

* [Intel-xe] ✗ CI.checkpatch: warning for drm/xe: switch to using drm_exec
  2023-07-13 13:17 [Intel-xe] [PATCH v2 0/2] drm/xe: switch to using drm_exec Francois Dugast
                   ` (2 preceding siblings ...)
  2023-07-13 14:18 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
@ 2023-07-13 14:19 ` Patchwork
  2023-07-13 14:20 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2023-07-13 14:19 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: drm/xe: switch to using drm_exec
URL   : https://patchwork.freedesktop.org/series/120675/
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
c7d32770e3cd31d9fc134ce41f329b10aa33ee15
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit e1397169e05dcfd3a11de1fcde23c0930f27030a
Author: Francois Dugast <francois.dugast@intel.com>
Date:   Thu Jul 13 13:17:11 2023 +0000

    drm/xe: switch to using drm_exec
    
    Replace the use of ttm_execbuf_util helpers with the drm_exec helpers.
    
    v2:
    - Call dma-resv locking functions directly in xe_bo_lock and
      xe_vm_lock functions (Matthew Brost)
    - Switch to execution context for GEM buffers v7 (Christian König)
    - Use DRM_EXEC_INTERRUPTIBLE_WAIT
    
    Signed-off-by: Francois Dugast <francois.dugast@intel.com>
+ /mt/dim checkpatch ccde558371c92a1f8b3707fe7cf274e388c434dd drm-intel
0f1a124b2 drm: execution context for GEM buffers v7
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
-:87: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#87: 
new file mode 100644

-:359: CHECK:BRACES: Blank lines aren't necessary before a close brace '}'
#359: FILE: drivers/gpu/drm/drm_exec.c:268:
+
+	}

-:450: CHECK:PREFER_KERNEL_TYPES: Prefer kernel type 'u32' over 'uint32_t'
#450: FILE: include/drm/drm_exec.h:20:
+	uint32_t		flags;

-:491: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'exec' - possible side-effects?
#491: FILE: include/drm/drm_exec.h:61:
+#define drm_exec_for_each_locked_object(exec, index, obj)	\
+	for (index = 0, obj = (exec)->objects[0];		\
+	     index < (exec)->num_objects;			\
+	     ++index, obj = (exec)->objects[index])

-:491: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'index' - possible side-effects?
#491: FILE: include/drm/drm_exec.h:61:
+#define drm_exec_for_each_locked_object(exec, index, obj)	\
+	for (index = 0, obj = (exec)->objects[0];		\
+	     index < (exec)->num_objects;			\
+	     ++index, obj = (exec)->objects[index])

-:491: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'obj' - possible side-effects?
#491: FILE: include/drm/drm_exec.h:61:
+#define drm_exec_for_each_locked_object(exec, index, obj)	\
+	for (index = 0, obj = (exec)->objects[0];		\
+	     index < (exec)->num_objects;			\
+	     ++index, obj = (exec)->objects[index])

-:523: WARNING:MACRO_WITH_FLOW_CONTROL: Macros with flow control statements should be avoided
#523: FILE: include/drm/drm_exec.h:93:
+#define drm_exec_retry_on_contention(exec)			\
+	do {							\
+		if (unlikely(drm_exec_is_contended(exec)))	\
+			goto *__drm_exec_retry_ptr;		\
+	} while (0)

total: 0 errors, 2 warnings, 5 checks, 494 lines checked
e1397169e drm/xe: switch to using drm_exec



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

* [Intel-xe] ✓ CI.KUnit: success for drm/xe: switch to using drm_exec
  2023-07-13 13:17 [Intel-xe] [PATCH v2 0/2] drm/xe: switch to using drm_exec Francois Dugast
                   ` (3 preceding siblings ...)
  2023-07-13 14:19 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
@ 2023-07-13 14:20 ` Patchwork
  2023-07-13 14:24 ` [Intel-xe] ✓ CI.Build: " Patchwork
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2023-07-13 14:20 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: drm/xe: switch to using drm_exec
URL   : https://patchwork.freedesktop.org/series/120675/
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
[14:19:01] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:19:05] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make ARCH=um O=.kunit --jobs=48
[14:19:24] Starting KUnit Kernel (1/1)...
[14:19:24] ============================================================
[14:19:25] ==================== xe_bo (2 subtests) ====================
[14:19:25] [SKIPPED] xe_ccs_migrate_kunit
[14:19:25] [SKIPPED] xe_bo_evict_kunit
[14:19:25] ===================== [SKIPPED] xe_bo ======================
[14:19:25] ================== xe_dma_buf (1 subtest) ==================
[14:19:25] [SKIPPED] xe_dma_buf_kunit
[14:19:25] =================== [SKIPPED] xe_dma_buf ===================
[14:19:25] ================== xe_migrate (1 subtest) ==================
[14:19:25] [SKIPPED] xe_migrate_sanity_kunit
[14:19:25] =================== [SKIPPED] xe_migrate ===================
[14:19:25] =================== xe_pci (2 subtests) ====================
[14:19:25] [PASSED] xe_gmdid_graphics_ip
[14:19:25] [PASSED] xe_gmdid_media_ip
[14:19:25] ===================== [PASSED] xe_pci ======================
[14:19:25] ==================== xe_rtp (1 subtest) ====================
[14:19:25] ================== xe_rtp_process_tests  ===================
[14:19:25] [PASSED] coalesce-same-reg
[14:19:25] [PASSED] no-match-no-add
[14:19:25] [PASSED] no-match-no-add-multiple-rules
[14:19:25] [PASSED] two-regs-two-entries
[14:19:25] [PASSED] clr-one-set-other
[14:19:25] [PASSED] set-field
[14:19:25] [PASSED] conflict-duplicate
[14:19:25] [PASSED] conflict-not-disjoint
[14:19:25] [PASSED] conflict-reg-type
[14:19:25] ============== [PASSED] xe_rtp_process_tests ===============
[14:19:25] ===================== [PASSED] xe_rtp ======================
[14:19:25] ==================== xe_wa (1 subtest) =====================
[14:19:25] ======================== xe_wa_gt  =========================
[14:19:25] [PASSED] TIGERLAKE (B0)
[14:19:25] [PASSED] DG1 (A0)
[14:19:25] [PASSED] DG1 (B0)
[14:19:25] [PASSED] ALDERLAKE_S (A0)
[14:19:25] [PASSED] ALDERLAKE_S (B0)
[14:19:25] [PASSED] ALDERLAKE_S (C0)
[14:19:25] [PASSED] ALDERLAKE_S (D0)
[14:19:25] [PASSED] ALDERLAKE_P (A0)
[14:19:25] [PASSED] ALDERLAKE_P (B0)
[14:19:25] [PASSED] ALDERLAKE_P (C0)
[14:19:25] [PASSED] DG2_G10 (A0)
[14:19:25] [PASSED] DG2_G10 (A1)
[14:19:25] [PASSED] DG2_G10 (B0)
[14:19:25] [PASSED] DG2_G10 (C0)
[14:19:25] [PASSED] DG2_G11 (A0)
[14:19:25] [PASSED] DG2_G11 (B0)
[14:19:25] [PASSED] DG2_G11 (B1)
[14:19:25] [PASSED] DG2_G12 (A0)
[14:19:25] [PASSED] DG2_G12 (A1)
[14:19:25] [PASSED] PVC (B0)
[14:19:25] [PASSED] PVC (B1)
[14:19:25] [PASSED] PVC (C0)
[14:19:25] ==================== [PASSED] xe_wa_gt =====================
[14:19:25] ====================== [PASSED] xe_wa ======================
[14:19:25] ============================================================
[14:19:25] Testing complete. Ran 37 tests: passed: 33, skipped: 4
[14:19:25] Elapsed time: 23.779s total, 4.267s configuring, 19.342s building, 0.146s running

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

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



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

* [Intel-xe] ✓ CI.Build: success for drm/xe: switch to using drm_exec
  2023-07-13 13:17 [Intel-xe] [PATCH v2 0/2] drm/xe: switch to using drm_exec Francois Dugast
                   ` (4 preceding siblings ...)
  2023-07-13 14:20 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
@ 2023-07-13 14:24 ` Patchwork
  2023-07-13 14:24 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
  2023-07-13 14:25 ` [Intel-xe] ✓ CI.checksparse: " Patchwork
  7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2023-07-13 14:24 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

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



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

* [Intel-xe] ✓ CI.Hooks: success for drm/xe: switch to using drm_exec
  2023-07-13 13:17 [Intel-xe] [PATCH v2 0/2] drm/xe: switch to using drm_exec Francois Dugast
                   ` (5 preceding siblings ...)
  2023-07-13 14:24 ` [Intel-xe] ✓ CI.Build: " Patchwork
@ 2023-07-13 14:24 ` Patchwork
  2023-07-13 14:25 ` [Intel-xe] ✓ CI.checksparse: " Patchwork
  7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2023-07-13 14:24 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: drm/xe: switch to using drm_exec
URL   : https://patchwork.freedesktop.org/series/120675/
State : success

== Summary ==

run-parts: executing /workspace/ci/hooks/00-showenv
+ pwd
+ ls -la
/workspace
total 516
drwxrwxr-x 10 1003 1003   4096 Jul 13 14:24 .
drwxr-xr-x  1 root root   4096 Jul 13 14:24 ..
-rw-rw-r--  1 1003 1003 389651 Jul 13 14:23 build.log
-rw-rw-r--  1 1003 1003   3073 Jul 13 14:18 checkpatch.log
drwxrwxr-x  5 1003 1003   4096 Jul 13 14:17 ci
drwxrwxr-x  9 1003 1003   4096 Jul 13 14:17 docker
drwxrwxr-x  8 1003 1003   4096 Jul 13 14:17 .git
-rw-rw-r--  1 1003 1003    266 Jul 13 14:18 git_apply.log
drwxrwxr-x  3 1003 1003   4096 Jul 13 14:17 .github
-rw-rw-r--  1 1003 1003    233 Jul 13 14:17 .groovylintrc.json
-rw-rw-r--  1 1003 1003     78 Jul 13 14:24 hooks.log
drwxrwxr-x 31 1003 1003   4096 Jul 13 14:23 kernel
-rw-rw-r--  1 1003 1003  41196 Jul 13 14:18 kernel.mbox
-rw-rw-r--  1 1003 1003  26091 Jul 13 14:20 kunit.log
drwxrwxr-x 44 1003 1003   4096 Jul 13 14:17 pipelines
-rw-rw-r--  1 1003 1003    793 Jul 13 14:17 README.adoc
drwxrwxr-x  3 1003 1003   4096 Jul 13 14:17 scripts
drwxrwxr-x  2 1003 1003   4096 Jul 13 14:17 .vscode
+ uname -a
Linux d58925ea2343 5.4.0-149-generic #166-Ubuntu SMP Tue Apr 18 16:51:45 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
+ export
+ grep -Ei '(^|\W)CI_'
declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64"
declare -x CI_KERNEL_IMAGES_DIR="/workspace/kernel/archive/boot"
declare -x CI_KERNEL_MODULES_DIR="/workspace/kernel/archive"
declare -x CI_KERNEL_SRC_DIR="/workspace/kernel"
declare -x CI_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
e1397169e drm/xe: switch to using drm_exec
0f1a124b2 drm: execution context for GEM buffers v7
ccde55837 drm/xe: handle TLB invalidations from CT fast-path
run-parts: executing /workspace/ci/hooks/10-build-W1
+ SRC_DIR=/workspace/kernel
+ RESTORE_DISPLAY_CONFIG=0
+ '[' -n /workspace/kernel/build64 ']'
+ BUILD_DIR=/workspace/kernel/build64
+ cd /workspace/kernel
+ grep -q -e '^CONFIG_DRM_XE_DISPLAY=[yY]' /workspace/kernel/build64/.config
+ RESTORE_DISPLAY_CONFIG=1
+ trap cleanup EXIT
+ ./scripts/config --file /workspace/kernel/build64/.config --disable CONFIG_DRM_XE_DISPLAY
++ nproc
+ make -j48 O=/workspace/kernel/build64 modules_prepare
make[1]: Entering directory '/workspace/kernel/build64'
  SYNC    include/config/auto.conf.cmd
  GEN     Makefile
  GEN     Makefile
  UPD     include/generated/compile.h
  UPD     include/config/kernel.release
  UPD     include/generated/utsrelease.h
  DESCEND objtool
  CALL    ../scripts/checksyscalls.sh
  HOSTCC  /workspace/kernel/build64/tools/objtool/fixdep.o
  HOSTLD  /workspace/kernel/build64/tools/objtool/fixdep-in.o
  LINK    /workspace/kernel/build64/tools/objtool/fixdep
  INSTALL libsubcmd_headers
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/exec-cmd.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/help.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/pager.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/parse-options.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/run-command.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/sigchain.o
  CC      /workspace/kernel/build64/tools/objtool/libsubcmd/subcmd-config.o
  LD      /workspace/kernel/build64/tools/objtool/libsubcmd/libsubcmd-in.o
  AR      /workspace/kernel/build64/tools/objtool/libsubcmd/libsubcmd.a
  CC      /workspace/kernel/build64/tools/objtool/weak.o
  CC      /workspace/kernel/build64/tools/objtool/check.o
  CC      /workspace/kernel/build64/tools/objtool/special.o
  CC      /workspace/kernel/build64/tools/objtool/builtin-check.o
  CC      /workspace/kernel/build64/tools/objtool/elf.o
  CC      /workspace/kernel/build64/tools/objtool/objtool.o
  CC      /workspace/kernel/build64/tools/objtool/orc_gen.o
  CC      /workspace/kernel/build64/tools/objtool/orc_dump.o
  CC      /workspace/kernel/build64/tools/objtool/libstring.o
  CC      /workspace/kernel/build64/tools/objtool/libctype.o
  CC      /workspace/kernel/build64/tools/objtool/str_error_r.o
  CC      /workspace/kernel/build64/tools/objtool/librbtree.o
  CC      /workspace/kernel/build64/tools/objtool/arch/x86/special.o
  CC      /workspace/kernel/build64/tools/objtool/arch/x86/decode.o
  LD      /workspace/kernel/build64/tools/objtool/arch/x86/objtool-in.o
  LD      /workspace/kernel/build64/tools/objtool/objtool-in.o
  LINK    /workspace/kernel/build64/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64'
++ nproc
+ make -j48 O=/workspace/kernel/build64 M=drivers/gpu/drm/xe W=1
make[1]: Entering directory '/workspace/kernel/build64'
  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_dma_buf.o
  CC [M]  drivers/gpu/drm/xe/xe_engine.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_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
  CC [M]  drivers/gpu/drm/xe/xe_gt_topology.o
  HOSTCC  drivers/gpu/drm/xe/xe_gen_wa_oob
  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_hw_engine.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_migrate.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_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_stolen_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.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
  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/xe/tests/xe_bo_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_mmio_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_abi.h
  HDRTEST drivers/gpu/drm/xe/abi/guc_communication_ctb_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_messages_abi.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_pci_test.o
  CC [M]  drivers/gpu/drm/xe/tests/xe_rtp_test.o
  HDRTEST drivers/gpu/drm/xe/regs/xe_reg_defs.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_wa_test.o
  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_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_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_types.h
  HDRTEST drivers/gpu/drm/xe/xe_dma_buf.h
  HDRTEST drivers/gpu/drm/xe/xe_drv.h
  HDRTEST drivers/gpu/drm/xe/xe_engine.h
  HDRTEST drivers/gpu/drm/xe/xe_engine_types.h
  HDRTEST drivers/gpu/drm/xe/xe_exec.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_engine_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_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_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_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_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_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_ring_ops.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
  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/tests/xe_migrate_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_bo_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.ko
  LD [M]  drivers/gpu/drm/xe/xe.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_pci_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'
+ cleanup
+ '[' 1 -eq 1 ']'
+ ./scripts/config --file /workspace/kernel/build64/.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] 14+ messages in thread

* [Intel-xe] ✓ CI.checksparse: success for drm/xe: switch to using drm_exec
  2023-07-13 13:17 [Intel-xe] [PATCH v2 0/2] drm/xe: switch to using drm_exec Francois Dugast
                   ` (6 preceding siblings ...)
  2023-07-13 14:24 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
@ 2023-07-13 14:25 ` Patchwork
  7 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2023-07-13 14:25 UTC (permalink / raw)
  To: Francois Dugast; +Cc: intel-xe

== Series Details ==

Series: drm/xe: switch to using drm_exec
URL   : https://patchwork.freedesktop.org/series/120675/
State : success

== 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 ccde558371c92a1f8b3707fe7cf274e388c434dd
Sparse version: 0.6.1 (Ubuntu: 0.6.1-2build1)
Fast mode used, each commit won't be checked separately.
Okay!

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



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

* Re: [Intel-xe] [PATCH v2 2/2] drm/xe: switch to using drm_exec
  2023-07-13 14:00   ` Matthew Brost
  2023-07-13 14:17     ` Francois Dugast
@ 2023-07-13 14:35     ` Christian König
  2023-07-13 18:13       ` Matthew Brost
  1 sibling, 1 reply; 14+ messages in thread
From: Christian König @ 2023-07-13 14:35 UTC (permalink / raw)
  To: Matthew Brost, Francois Dugast; +Cc: intel-xe

Am 13.07.23 um 16:00 schrieb Matthew Brost:
> On Thu, Jul 13, 2023 at 01:17:11PM +0000, Francois Dugast wrote:
>> Replace the use of ttm_execbuf_util helpers with the drm_exec helpers.
>>
>> v2:
>> - Call dma-resv locking functions directly in xe_bo_lock and
>>    xe_vm_lock functions (Matthew Brost)
>> - Switch to execution context for GEM buffers v7 (Christian König)
>> - Use DRM_EXEC_INTERRUPTIBLE_WAIT
>>
>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>> ---
>>   drivers/gpu/drm/xe/Kconfig           |   1 +
>>   drivers/gpu/drm/xe/xe_bo.c           |  29 +++-
>>   drivers/gpu/drm/xe/xe_bo_types.h     |   1 -
>>   drivers/gpu/drm/xe/xe_exec.c         |  30 +---
>>   drivers/gpu/drm/xe/xe_gt_pagefault.c |  55 +-----
>>   drivers/gpu/drm/xe/xe_vm.c           | 246 +++++++++++++--------------
>>   drivers/gpu/drm/xe/xe_vm.h           |  32 ++--
>>   7 files changed, 168 insertions(+), 226 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
>> index d44794f99338..b739faa401d3 100644
>> --- a/drivers/gpu/drm/xe/Kconfig
>> +++ b/drivers/gpu/drm/xe/Kconfig
>> @@ -8,6 +8,7 @@ config DRM_XE
>>   	select SHMEM
>>   	select TMPFS
>>   	select DRM_BUDDY
>> +	select DRM_EXEC
>>   	select DRM_KMS_HELPER
>>   	select DRM_PANEL
>>   	select DRM_SUBALLOC_HELPER
>> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
>> index 6353afa8d846..aafe69ed4320 100644
>> --- a/drivers/gpu/drm/xe/xe_bo.c
>> +++ b/drivers/gpu/drm/xe/xe_bo.c
>> @@ -1806,17 +1806,32 @@ int xe_gem_mmap_offset_ioctl(struct drm_device *dev, void *data,
>>   int xe_bo_lock(struct xe_bo *bo, struct ww_acquire_ctx *ww,
>>   	       int num_resv, bool intr)
>>   {
>> -	struct ttm_validate_buffer tv_bo;
>> -	LIST_HEAD(objs);
>> -	LIST_HEAD(dups);
>> +	struct dma_resv *obj;
>> +	int err;
>>   
>>   	XE_BUG_ON(!ww);
>>   
>> -	tv_bo.num_shared = num_resv;
>> -	tv_bo.bo = &bo->ttm;;
>> -	list_add_tail(&tv_bo.head, &objs);
>> +	obj = bo->ttm.base.resv;
>> +	ww_acquire_init(ww, &reservation_ww_class);
>> +
>> +	if (intr)
>> +		err = dma_resv_lock_interruptible(obj, ww);
>> +	else
>> +		err = dma_resv_lock(obj, ww);
>> +
>> +	if (unlikely(err))
>> +		return err;
>> +
>> +	num_resv = max(num_resv, 1);
> Why? If the user ask to reserve 0 fences this will reserve 1.

Reserving 0 fences is illegal. The dma_resv object will complain about 
that in debug builds IIRC.

Christian.

>
>> +	err = dma_resv_reserve_fences(obj, num_resv);
>> +	if (err)
>> +		goto out_err;
>>   
>> -	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
>> +	return 0;
>> +
>> +out_err:
>> +	dma_resv_unlock(obj);
>> +	return err;
>>   }
>>   
>>   void xe_bo_unlock(struct xe_bo *bo, struct ww_acquire_ctx *ww)
>> diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
>> index f6ee920303af..bc67263c6713 100644
>> --- a/drivers/gpu/drm/xe/xe_bo_types.h
>> +++ b/drivers/gpu/drm/xe/xe_bo_types.h
>> @@ -11,7 +11,6 @@
>>   #include <drm/drm_mm.h>
>>   #include <drm/ttm/ttm_bo.h>
>>   #include <drm/ttm/ttm_device.h>
>> -#include <drm/ttm/ttm_execbuf_util.h>
>>   #include <drm/ttm/ttm_placement.h>
>>   
>>   struct xe_device;
>> diff --git a/drivers/gpu/drm/xe/xe_exec.c b/drivers/gpu/drm/xe/xe_exec.c
>> index ba13d20ed348..32a6e16ec177 100644
>> --- a/drivers/gpu/drm/xe/xe_exec.c
>> +++ b/drivers/gpu/drm/xe/xe_exec.c
>> @@ -6,6 +6,7 @@
>>   #include "xe_exec.h"
>>   
>>   #include <drm/drm_device.h>
>> +#include <drm/drm_exec.h>
>>   #include <drm/drm_file.h>
>>   #include <drm/xe_drm.h>
>>   #include <linux/delay.h>
>> @@ -95,23 +96,18 @@
>>   
>>   #define XE_EXEC_BIND_RETRY_TIMEOUT_MS 1000
>>   
>> -static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
>> -			 struct ttm_validate_buffer tv_onstack[],
>> -			 struct ttm_validate_buffer **tv,
>> -			 struct list_head *objs)
>> +static int xe_exec_begin(struct xe_engine *e, struct drm_exec *exec)
>>   {
>>   	struct xe_vm *vm = e->vm;
>>   	struct xe_vma *vma;
>> -	LIST_HEAD(dups);
>>   	ktime_t end = 0;
>>   	int err = 0;
>>   
>> -	*tv = NULL;
>>   	if (xe_vm_no_dma_fences(e->vm))
>>   		return 0;
>>   
>>   retry:
>> -	err = xe_vm_lock_dma_resv(vm, ww, tv_onstack, tv, objs, true, 1);
>> +	err = xe_vm_lock_dma_resv(vm, exec, true, 1);
>>   	if (err)
>>   		return err;
>>   
>> @@ -128,8 +124,7 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
>>   
>>   		err = xe_bo_validate(xe_vma_bo(vma), vm, false);
>>   		if (err) {
>> -			xe_vm_unlock_dma_resv(vm, tv_onstack, *tv, ww, objs);
>> -			*tv = NULL;
>> +			xe_vm_unlock_dma_resv(vm, exec);
>>   			break;
>>   		}
>>   	}
>> @@ -153,14 +148,10 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
>>   	return err;
>>   }
>>   
>> -static void xe_exec_end(struct xe_engine *e,
>> -			struct ttm_validate_buffer *tv_onstack,
>> -			struct ttm_validate_buffer *tv,
>> -			struct ww_acquire_ctx *ww,
>> -			struct list_head *objs)
>> +static void xe_exec_end(struct xe_engine *e, struct drm_exec *exec)
>>   {
>>   	if (!xe_vm_no_dma_fences(e->vm))
>> -		xe_vm_unlock_dma_resv(e->vm, tv_onstack, tv, ww, objs);
>> +		xe_vm_unlock_dma_resv(e->vm, exec);
>>   }
>>   
>>   int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>> @@ -173,14 +164,11 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>>   	struct xe_engine *engine;
>>   	struct xe_sync_entry *syncs = NULL;
>>   	u64 addresses[XE_HW_ENGINE_MAX_INSTANCE];
>> -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
>> -	struct ttm_validate_buffer *tv = NULL;
>>   	u32 i, num_syncs = 0;
>>   	struct xe_sched_job *job;
>>   	struct dma_fence *rebind_fence;
>>   	struct xe_vm *vm;
>> -	struct ww_acquire_ctx ww;
>> -	struct list_head objs;
>> +	struct drm_exec exec;
>>   	bool write_locked;
>>   	int err = 0;
>>   
>> @@ -293,7 +281,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>>   			goto err_unlock_list;
>>   	}
>>   
>> -	err = xe_exec_begin(engine, &ww, tv_onstack, &tv, &objs);
>> +	err = xe_exec_begin(engine, &exec);
>>   	if (err)
>>   		goto err_unlock_list;
>>   
>> @@ -412,7 +400,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>>   	if (err)
>>   		xe_sched_job_put(job);
>>   err_engine_end:
>> -	xe_exec_end(engine, tv_onstack, tv, &ww, &objs);
>> +	xe_exec_end(engine, &exec);
>>   err_unlock_list:
>>   	if (write_locked)
>>   		up_write(&vm->lock);
>> diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
>> index 125e4744fa38..94f59c29ba9b 100644
>> --- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
>> +++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
>> @@ -8,8 +8,8 @@
>>   #include <linux/bitfield.h>
>>   #include <linux/circ_buf.h>
>>   
>> +#include <drm/drm_exec.h>
>>   #include <drm/drm_managed.h>
>> -#include <drm/ttm/ttm_execbuf_util.h>
>>   
>>   #include "xe_bo.h"
>>   #include "xe_gt.h"
>> @@ -84,11 +84,6 @@ static bool vma_matches(struct xe_vma *vma, u64 page_addr)
>>   	return true;
>>   }
>>   
>> -static bool only_needs_bo_lock(struct xe_bo *bo)
>> -{
>> -	return bo && bo->vm;
>> -}
>> -
>>   static struct xe_vma *lookup_vma(struct xe_vm *vm, u64 page_addr)
>>   {
>>   	struct xe_vma *vma = NULL;
>> @@ -110,10 +105,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
>>   	struct xe_vm *vm;
>>   	struct xe_vma *vma = NULL;
>>   	struct xe_bo *bo;
>> -	LIST_HEAD(objs);
>> -	LIST_HEAD(dups);
>> -	struct ttm_validate_buffer tv_bo, tv_vm;
>> -	struct ww_acquire_ctx ww;
>> +	struct drm_exec exec;
>>   	struct dma_fence *fence;
>>   	bool write_locked;
>>   	int ret = 0;
>> @@ -171,20 +163,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
>>   
>>   	/* Lock VM and BOs dma-resv */
>>   	bo = xe_vma_bo(vma);
>> -	if (only_needs_bo_lock(bo)) {
>> -		/* This path ensures the BO's LRU is updated */
>> -		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
>> -	} else {
>> -		tv_vm.num_shared = xe->info.tile_count;
>> -		tv_vm.bo = xe_vm_ttm_bo(vm);
>> -		list_add(&tv_vm.head, &objs);
>> -		if (bo) {
>> -			tv_bo.bo = &bo->ttm;
>> -			tv_bo.num_shared = xe->info.tile_count;
>> -			list_add(&tv_bo.head, &objs);
>> -		}
>> -		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
>> -	}
>> +	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
>>   	if (ret)
>>   		goto unlock_vm;
>>   
>> @@ -227,10 +206,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
>>   	vma->usm.tile_invalidated &= ~BIT(gt_to_tile(gt)->id);
>>   
>>   unlock_dma_resv:
>> -	if (only_needs_bo_lock(bo))
>> -		xe_bo_unlock(bo, &ww);
>> -	else
>> -		ttm_eu_backoff_reservation(&ww, &objs);
>> +	xe_vm_bo_unlock(vm, bo, &exec, true);
>>   unlock_vm:
>>   	if (!ret)
>>   		vm->usm.last_fault_vma = vma;
>> @@ -498,10 +474,7 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
>>   	struct xe_vm *vm;
>>   	struct xe_vma *vma;
>>   	struct xe_bo *bo;
>> -	LIST_HEAD(objs);
>> -	LIST_HEAD(dups);
>> -	struct ttm_validate_buffer tv_bo, tv_vm;
>> -	struct ww_acquire_ctx ww;
>> +	struct drm_exec exec;
>>   	int ret = 0;
>>   
>>   	/* We only support ACC_TRIGGER at the moment */
>> @@ -534,28 +507,14 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
>>   
>>   	/* Lock VM and BOs dma-resv */
>>   	bo = xe_vma_bo(vma);
>> -	if (only_needs_bo_lock(bo)) {
>> -		/* This path ensures the BO's LRU is updated */
>> -		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
>> -	} else {
>> -		tv_vm.num_shared = xe->info.tile_count;
>> -		tv_vm.bo = xe_vm_ttm_bo(vm);
>> -		list_add(&tv_vm.head, &objs);
>> -		tv_bo.bo = &bo->ttm;
>> -		tv_bo.num_shared = xe->info.tile_count;
>> -		list_add(&tv_bo.head, &objs);
>> -		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
>> -	}
>> +	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
>>   	if (ret)
>>   		goto unlock_vm;
>>   
>>   	/* Migrate to VRAM, move should invalidate the VMA first */
>>   	ret = xe_bo_migrate(bo, XE_PL_VRAM0 + tile->id);
>>   
>> -	if (only_needs_bo_lock(bo))
>> -		xe_bo_unlock(bo, &ww);
>> -	else
>> -		ttm_eu_backoff_reservation(&ww, &objs);
>> +	xe_vm_bo_unlock(vm, bo, &exec, true);
>>   unlock_vm:
>>   	up_read(&vm->lock);
>>   	xe_vm_put(vm);
>> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
>> index 6c216350084b..c89b10d5feb5 100644
>> --- a/drivers/gpu/drm/xe/xe_vm.c
>> +++ b/drivers/gpu/drm/xe/xe_vm.c
>> @@ -7,8 +7,8 @@
>>   
>>   #include <linux/dma-fence-array.h>
>>   
>> +#include <drm/drm_exec.h>
>>   #include <drm/drm_print.h>
>> -#include <drm/ttm/ttm_execbuf_util.h>
>>   #include <drm/ttm/ttm_tt.h>
>>   #include <drm/xe_drm.h>
>>   #include <linux/delay.h>
>> @@ -321,11 +321,8 @@ static void resume_and_reinstall_preempt_fences(struct xe_vm *vm)
>>   
>>   int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
>>   {
>> -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
>> -	struct ttm_validate_buffer *tv;
>> -	struct ww_acquire_ctx ww;
>> -	struct list_head objs;
>>   	struct dma_fence *pfence;
>> +	struct drm_exec exec;
>>   	int err;
>>   	bool wait;
>>   
>> @@ -333,7 +330,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
>>   
>>   	down_write(&vm->lock);
>>   
>> -	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs, true, 1);
>> +	err = xe_vm_lock_dma_resv(vm, &exec, true, 1);
>>   	if (err)
>>   		goto out_unlock_outer;
>>   
>> @@ -367,7 +364,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
>>   	up_read(&vm->userptr.notifier_lock);
>>   
>>   out_unlock:
>> -	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
>> +	xe_vm_unlock_dma_resv(vm, &exec);
>>   out_unlock_outer:
>>   	up_write(&vm->lock);
>>   
>> @@ -397,68 +394,43 @@ int __xe_vm_userptr_needs_repin(struct xe_vm *vm)
>>    * 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.
>> - * @ww: Pointer to a struct ww_acquire_ctx locking context.
>> - * @tv_onstack: Array size XE_ONSTACK_TV of storage for the struct
>> - * ttm_validate_buffers used for locking.
>> - * @tv: Pointer to a pointer that on output contains the actual storage used.
>> - * @objs: List head for the buffer objects locked.
>> + * @exec: Pointer to a struct drm_exec execution context.
>>    * @intr: Whether to lock interruptible.
>>    * @num_shared: Number of dma-fence slots to reserve in the locked objects.
>>    *
>>    * Locks the vm dma-resv objects and all the dma-resv objects of the
>> - * buffer objects on the vm external object list. The TTM utilities require
>> - * a list of struct ttm_validate_buffers pointing to the actual buffer
>> - * objects to lock. Storage for those struct ttm_validate_buffers should
>> - * be provided in @tv_onstack, and is typically reserved on the stack
>> - * of the caller. If the size of @tv_onstack isn't sufficient, then
>> - * storage will be allocated internally using kvmalloc().
>> + * buffer objects on the vm external object list using helpers provided
>> + * by drm_exec.
>>    *
>>    * The function performs deadlock handling internally, and after a
>>    * successful return the ww locking transaction should be considered
>>    * sealed.
>>    *
>> - * Return: 0 on success, Negative error code on error. In particular if
>> - * @intr is set to true, -EINTR or -ERESTARTSYS may be returned. In case
>> - * of error, any locking performed has been reverted.
>> + * Return: 0 on success, Negative error code on error.
>>    */
>> -int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>> -			struct ttm_validate_buffer *tv_onstack,
>> -			struct ttm_validate_buffer **tv,
>> -			struct list_head *objs,
>> -			bool intr,
>> -			unsigned int num_shared)
>> -{
>> -	struct ttm_validate_buffer *tv_vm, *tv_bo;
>> +int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
>> +			bool intr, unsigned int num_shared)
>> +{
>>   	struct xe_vma *vma, *next;
>> -	LIST_HEAD(dups);
>> +	struct drm_gem_object *obj;
>>   	int err;
>>   
>>   	lockdep_assert_held(&vm->lock);
>>   
>> -	if (vm->extobj.entries < XE_ONSTACK_TV) {
>> -		tv_vm = tv_onstack;
>> -	} else {
>> -		tv_vm = kvmalloc_array(vm->extobj.entries + 1, sizeof(*tv_vm),
>> -				       GFP_KERNEL);
>> -		if (!tv_vm)
>> -			return -ENOMEM;
>> +	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
>> +	drm_exec_until_all_locked(exec) {
>> +		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm), num_shared);
>> +		drm_exec_retry_on_contention(exec);
>> +		if (unlikely(err) && err != -EALREADY)
>> +			goto out_err;
>> +		list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
>> +			obj = &xe_vma_bo(vma)->ttm.base;
>> +			err = drm_exec_prepare_obj(exec, obj, num_shared);
>> +			drm_exec_retry_on_contention(exec);
>> +			if (unlikely(err) && err != -EALREADY)
>> +				goto out_err;
>> +		}
>>   	}
>> -	tv_bo = tv_vm + 1;
>> -
>> -	INIT_LIST_HEAD(objs);
>> -	list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
>> -		tv_bo->num_shared = num_shared;
>> -		tv_bo->bo = &xe_vma_bo(vma)->ttm;
>> -
>> -		list_add_tail(&tv_bo->head, objs);
>> -		tv_bo++;
>> -	}
>> -	tv_vm->num_shared = num_shared;
>> -	tv_vm->bo = xe_vm_ttm_bo(vm);
>> -	list_add_tail(&tv_vm->head, objs);
>> -	err = ttm_eu_reserve_buffers(ww, objs, intr, &dups);
>> -	if (err)
>> -		goto out_err;
>>   
>>   	spin_lock(&vm->notifier.list_lock);
>>   	list_for_each_entry_safe(vma, next, &vm->notifier.rebind_list,
>> @@ -470,14 +442,10 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>>   			list_move_tail(&vma->rebind_link, &vm->rebind_list);
>>   	}
>>   	spin_unlock(&vm->notifier.list_lock);
>> -
>> -	*tv = tv_vm;
>>   	return 0;
>>   
>>   out_err:
>> -	if (tv_vm != tv_onstack)
>> -		kvfree(tv_vm);
>> -
>> +	drm_exec_fini(exec);
>>   	return err;
>>   }
>>   
>> @@ -485,20 +453,16 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>>    * xe_vm_unlock_dma_resv() - Unlock reservation objects locked by
>>    * xe_vm_lock_dma_resv()
>>    * @vm: The vm.
>> - * @tv_onstack: The @tv_onstack array given to xe_vm_lock_dma_resv().
>> - * @tv: The value of *@tv given by xe_vm_lock_dma_resv().
>> - * @ww: The ww_acquire_context used for locking.
>> - * @objs: The list returned from xe_vm_lock_dma_resv().
>> + * @exec: The @drm_exec given to xe_vm_lock_dma_resv().
>>    *
>>    * Unlocks the reservation objects and frees any memory allocated by
>>    * xe_vm_lock_dma_resv().
>>    */
>> -void xe_vm_unlock_dma_resv(struct xe_vm *vm,
>> -			   struct ttm_validate_buffer *tv_onstack,
>> -			   struct ttm_validate_buffer *tv,
>> -			   struct ww_acquire_ctx *ww,
>> -			   struct list_head *objs)
>> +void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec)
>>   {
>> +	struct drm_gem_object *obj, *skip = xe_vm_gem(vm);
>> +	unsigned long index;
>> +
>>   	/*
>>   	 * Nothing should've been able to enter the list while we were locked,
>>   	 * since we've held the dma-resvs of all the vm's external objects,
>> @@ -507,9 +471,13 @@ void xe_vm_unlock_dma_resv(struct xe_vm *vm,
>>   	 */
>>   	XE_WARN_ON(!list_empty(&vm->notifier.rebind_list));
>>   
>> -	ttm_eu_backoff_reservation(ww, objs);
>> -	if (tv && tv != tv_onstack)
>> -		kvfree(tv);
>> +	drm_exec_for_each_locked_object(exec, index, obj) {
>> +		struct xe_bo *bo = gem_to_xe_bo(obj);
>> +
>> +		if (obj != skip)
>> +			ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
>> +	}
>> +	drm_exec_fini(exec);
>>   }
>>   
>>   #define XE_VM_REBIND_RETRY_TIMEOUT_MS 1000
>> @@ -536,10 +504,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
>>   {
>>   	struct xe_vm *vm = container_of(w, struct xe_vm, preempt.rebind_work);
>>   	struct xe_vma *vma;
>> -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
>> -	struct ttm_validate_buffer *tv;
>> -	struct ww_acquire_ctx ww;
>> -	struct list_head objs;
>> +	struct drm_exec exec;
>>   	struct dma_fence *rebind_fence;
>>   	unsigned int fence_count = 0;
>>   	LIST_HEAD(preempt_fences);
>> @@ -582,8 +547,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
>>   			goto out_unlock_outer;
>>   	}
>>   
>> -	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs,
>> -				  false, vm->preempt.num_engines);
>> +	err = xe_vm_lock_dma_resv(vm, &exec, false, vm->preempt.num_engines);
>>   	if (err)
>>   		goto out_unlock_outer;
>>   
>> @@ -662,7 +626,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
>>   	up_read(&vm->userptr.notifier_lock);
>>   
>>   out_unlock:
>> -	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
>> +	xe_vm_unlock_dma_resv(vm, &exec);
>>   out_unlock_outer:
>>   	if (err == -EAGAIN) {
>>   		trace_xe_vm_rebind_worker_retry(vm);
>> @@ -1105,27 +1069,17 @@ static void xe_vma_destroy(struct xe_vma *vma, struct dma_fence *fence)
>>   
>>   static void xe_vma_destroy_unlocked(struct xe_vma *vma)
>>   {
>> -	struct ttm_validate_buffer tv[2];
>> -	struct ww_acquire_ctx ww;
>> +	struct xe_vm *vm = xe_vma_vm(vma);
>>   	struct xe_bo *bo = xe_vma_bo(vma);
>> -	LIST_HEAD(objs);
>> -	LIST_HEAD(dups);
>> +	struct drm_exec exec;
>>   	int err;
>>   
>> -	memset(tv, 0, sizeof(tv));
>> -	tv[0].bo = xe_vm_ttm_bo(xe_vma_vm(vma));
>> -	list_add(&tv[0].head, &objs);
>> -
>> -	if (bo) {
>> -		tv[1].bo = &xe_bo_get(bo)->ttm;
>> -		list_add(&tv[1].head, &objs);
>> -	}
>> -	err = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
>> +	err = xe_vm_bo_lock(vm, xe_bo_get(bo), &exec, 0, false);
>>   	XE_WARN_ON(err);
>>   
>>   	xe_vma_destroy(vma, NULL);
>>   
>> -	ttm_eu_backoff_reservation(&ww, &objs);
>> +	xe_vm_bo_unlock(vm, bo, &exec, false);
>>   	if (bo)
>>   		xe_bo_put(bo);
>>   }
>> @@ -2125,21 +2079,6 @@ static int xe_vm_prefetch(struct xe_vm *vm, struct xe_vma *vma,
>>   
>>   #define VM_BIND_OP(op)	(op & 0xffff)
>>   
>> -struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm)
>> -{
>> -	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
>> -		XE_VM_FLAG_GT_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 xe_vm_tv_populate(struct xe_vm *vm, struct ttm_validate_buffer *tv)
>> -{
>> -	tv->num_shared = 1;
>> -	tv->bo = xe_vm_ttm_bo(vm);
>> -}
>> -
>>   static void vm_set_async_error(struct xe_vm *vm, int err)
>>   {
>>   	lockdep_assert_held(&vm->lock);
>> @@ -2577,17 +2516,12 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)
>>   static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
>>   			       struct xe_vma_op *op)
>>   {
>> -	LIST_HEAD(objs);
>> -	LIST_HEAD(dups);
>> -	struct ttm_validate_buffer tv_bo, tv_vm;
>> -	struct ww_acquire_ctx ww;
>>   	struct xe_bo *vbo;
>> +	struct drm_exec exec;
>>   	int err;
>>   
>>   	lockdep_assert_held_write(&vm->lock);
>>   
>> -	xe_vm_tv_populate(vm, &tv_vm);
>> -	list_add_tail(&tv_vm.head, &objs);
>>   	vbo = xe_vma_bo(vma);
>>   	if (vbo) {
>>   		/*
>> @@ -2596,16 +2530,10 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
>>   		 * take a reference here.
>>   		 */
>>   		xe_bo_get(vbo);
>> -
>> -		if (!vbo->vm) {
>> -			tv_bo.bo = &vbo->ttm;
>> -			tv_bo.num_shared = 1;
>> -			list_add(&tv_bo.head, &objs);
>> -		}
>>   	}
>>   
>>   again:
>> -	err = ttm_eu_reserve_buffers(&ww, &objs, true, &dups);
>> +	err = xe_vm_bo_lock(vm, vbo, &exec, 1, true);
>>   	if (err) {
>>   		xe_bo_put(vbo);
>>   		return err;
>> @@ -2687,7 +2615,7 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
>>   		XE_BUG_ON("NOT POSSIBLE");
>>   	}
>>   
>> -	ttm_eu_backoff_reservation(&ww, &objs);
>> +	xe_vm_bo_unlock(vm, vbo, &exec, false);
>>   	if (err == -EAGAIN && xe_vma_is_userptr(vma)) {
>>   		lockdep_assert_held_write(&vm->lock);
>>   		err = xe_vma_userptr_pin_pages(vma);
>> @@ -3338,24 +3266,47 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>>   	return err == -ENODATA ? 0 : err;
>>   }
>>   
>> +struct drm_gem_object *xe_vm_gem(struct xe_vm *vm)
>> +{
>> +	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
>> +		XE_VM_FLAG_GT_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.base;
>> +}
>> +
>>   /*
>> - * XXX: Using the TTM wrappers for now, likely can call into dma-resv code
>> - * directly to optimize. Also this likely should be an inline function.
>> + * XXX: This likely should be an inline function.
>>    */
>>   int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>>   	       int num_resv, bool intr)
>>   {
>> -	struct ttm_validate_buffer tv_vm;
>> -	LIST_HEAD(objs);
>> -	LIST_HEAD(dups);
>> +	struct dma_resv *obj;
>> +	int err;
>>   
>>   	XE_BUG_ON(!ww);
>>   
>> -	tv_vm.num_shared = num_resv;
>> -	tv_vm.bo = xe_vm_ttm_bo(vm);;
>> -	list_add_tail(&tv_vm.head, &objs);
>> +	obj = xe_vm_gem(vm)->resv;
>> +	ww_acquire_init(ww, &reservation_ww_class);
>> +
>> +	if (intr)
>> +		err = dma_resv_lock_interruptible(obj, ww);
>> +	else
>> +		err = dma_resv_lock(obj, ww);
>> +
>> +	if (unlikely(err))
>> +		return err;
>> +
>> +	num_resv = max(num_resv, 1);
> Same question as above here.
>
> Matt
>
>> +	err = dma_resv_reserve_fences(obj, num_resv);
>> +	if (err)
>> +		goto out_err;
>>   
>> -	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
>> +	return 0;
>> +
>> +out_err:
>> +	dma_resv_unlock(&vm->resv);
>> +	return err;
>>   }
>>   
>>   void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
>> @@ -3364,6 +3315,43 @@ void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
>>   	ww_acquire_fini(ww);
>>   }
>>   
>> +int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
>> +		  int num_resv, bool intr)
>> +{
>> +	int err;
>> +
>> +	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
>> +	drm_exec_until_all_locked(exec) {
>> +		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm),
>> +					   num_resv);
>> +		drm_exec_retry_on_contention(exec);
>> +		if (err && err != -EALREADY)
>> +			goto out_err;
>> +
>> +		if (bo && !bo->vm) {
>> +			err = drm_exec_prepare_obj(exec, &bo->ttm.base,
>> +						   num_resv);
>> +			drm_exec_retry_on_contention(exec);
>> +			if (err && err != -EALREADY)
>> +				goto out_err;
>> +		}
>> +	}
>> +
>> +	return 0;
>> +
>> +out_err:
>> +	drm_exec_fini(exec);
>> +	return err;
>> +}
>> +
>> +void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
>> +		     bool lru_update)
>> +{
>> +	if (lru_update && bo && (!bo->vm || xe_vm_no_dma_fences(vm)))
>> +		ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
>> +	drm_exec_fini(exec);
>> +}
>> +
>>   /**
>>    * xe_vm_invalidate_vma - invalidate GPU mappings for VMA without a lock
>>    * @vma: VMA to invalidate
>> diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
>> index eaf11ac8ff51..62a062bd5078 100644
>> --- a/drivers/gpu/drm/xe/xe_vm.h
>> +++ b/drivers/gpu/drm/xe/xe_vm.h
>> @@ -12,6 +12,7 @@
>>   #include "xe_vm_types.h"
>>   
>>   struct drm_device;
>> +struct drm_exec;
>>   struct drm_printer;
>>   struct drm_file;
>>   
>> @@ -39,11 +40,17 @@ static inline void xe_vm_put(struct xe_vm *vm)
>>   	kref_put(&vm->refcount, xe_vm_free);
>>   }
>>   
>> +struct drm_gem_object *xe_vm_gem(struct xe_vm *vm);
>> +
>>   int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>>   	       int num_resv, bool intr);
>> -
>>   void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww);
>>   
>> +int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
>> +		  int num_resv, bool intr);
>> +void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
>> +		     bool lru_update);
>> +
>>   static inline bool xe_vm_is_closed(struct xe_vm *vm)
>>   {
>>   	/* Only guaranteed not to change when vm->lock is held */
>> @@ -183,8 +190,6 @@ int xe_vm_async_fence_wait_start(struct dma_fence *fence);
>>   
>>   extern struct ttm_device_funcs xe_ttm_funcs;
>>   
>> -struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm);
>> -
>>   /**
>>    * xe_vm_reactivate_rebind() - Reactivate the rebind functionality on compute
>>    * vms.
>> @@ -212,23 +217,10 @@ static inline void xe_vm_queue_rebind_worker(struct xe_vm *vm)
>>   	queue_work(vm->xe->ordered_wq, &vm->preempt.rebind_work);
>>   }
>>   
>> -/*
>> - * XE_ONSTACK_TV is used to size the tv_onstack array that is input
>> - * to xe_vm_lock_dma_resv() and xe_vm_unlock_dma_resv().
>> - */
>> -#define XE_ONSTACK_TV 20
>> -int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>> -			struct ttm_validate_buffer *tv_onstack,
>> -			struct ttm_validate_buffer **tv,
>> -			struct list_head *objs,
>> -			bool intr,
>> -			unsigned int num_shared);
>> -
>> -void xe_vm_unlock_dma_resv(struct xe_vm *vm,
>> -			   struct ttm_validate_buffer *tv_onstack,
>> -			   struct ttm_validate_buffer *tv,
>> -			   struct ww_acquire_ctx *ww,
>> -			   struct list_head *objs);
>> +int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
>> +			bool intr, unsigned int num_shared);
>> +
>> +void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec);
>>   
>>   void xe_vm_fence_all_extobjs(struct xe_vm *vm, struct dma_fence *fence,
>>   			     enum dma_resv_usage usage);
>> -- 
>> 2.34.1
>>


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

* Re: [Intel-xe] [PATCH v2 2/2] drm/xe: switch to using drm_exec
  2023-07-13 14:35     ` Christian König
@ 2023-07-13 18:13       ` Matthew Brost
  2023-07-14  6:44         ` Christian König
  0 siblings, 1 reply; 14+ messages in thread
From: Matthew Brost @ 2023-07-13 18:13 UTC (permalink / raw)
  To: Christian König; +Cc: Francois Dugast, intel-xe

On Thu, Jul 13, 2023 at 04:35:57PM +0200, Christian König wrote:
> Am 13.07.23 um 16:00 schrieb Matthew Brost:
> > On Thu, Jul 13, 2023 at 01:17:11PM +0000, Francois Dugast wrote:
> > > Replace the use of ttm_execbuf_util helpers with the drm_exec helpers.
> > > 
> > > v2:
> > > - Call dma-resv locking functions directly in xe_bo_lock and
> > >    xe_vm_lock functions (Matthew Brost)
> > > - Switch to execution context for GEM buffers v7 (Christian König)
> > > - Use DRM_EXEC_INTERRUPTIBLE_WAIT
> > > 
> > > Signed-off-by: Francois Dugast <francois.dugast@intel.com>
> > > ---
> > >   drivers/gpu/drm/xe/Kconfig           |   1 +
> > >   drivers/gpu/drm/xe/xe_bo.c           |  29 +++-
> > >   drivers/gpu/drm/xe/xe_bo_types.h     |   1 -
> > >   drivers/gpu/drm/xe/xe_exec.c         |  30 +---
> > >   drivers/gpu/drm/xe/xe_gt_pagefault.c |  55 +-----
> > >   drivers/gpu/drm/xe/xe_vm.c           | 246 +++++++++++++--------------
> > >   drivers/gpu/drm/xe/xe_vm.h           |  32 ++--
> > >   7 files changed, 168 insertions(+), 226 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
> > > index d44794f99338..b739faa401d3 100644
> > > --- a/drivers/gpu/drm/xe/Kconfig
> > > +++ b/drivers/gpu/drm/xe/Kconfig
> > > @@ -8,6 +8,7 @@ config DRM_XE
> > >   	select SHMEM
> > >   	select TMPFS
> > >   	select DRM_BUDDY
> > > +	select DRM_EXEC
> > >   	select DRM_KMS_HELPER
> > >   	select DRM_PANEL
> > >   	select DRM_SUBALLOC_HELPER
> > > diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
> > > index 6353afa8d846..aafe69ed4320 100644
> > > --- a/drivers/gpu/drm/xe/xe_bo.c
> > > +++ b/drivers/gpu/drm/xe/xe_bo.c
> > > @@ -1806,17 +1806,32 @@ int xe_gem_mmap_offset_ioctl(struct drm_device *dev, void *data,
> > >   int xe_bo_lock(struct xe_bo *bo, struct ww_acquire_ctx *ww,
> > >   	       int num_resv, bool intr)
> > >   {
> > > -	struct ttm_validate_buffer tv_bo;
> > > -	LIST_HEAD(objs);
> > > -	LIST_HEAD(dups);
> > > +	struct dma_resv *obj;
> > > +	int err;
> > >   	XE_BUG_ON(!ww);
> > > -	tv_bo.num_shared = num_resv;
> > > -	tv_bo.bo = &bo->ttm;;
> > > -	list_add_tail(&tv_bo.head, &objs);
> > > +	obj = bo->ttm.base.resv;
> > > +	ww_acquire_init(ww, &reservation_ww_class);
> > > +
> > > +	if (intr)
> > > +		err = dma_resv_lock_interruptible(obj, ww);
> > > +	else
> > > +		err = dma_resv_lock(obj, ww);
> > > +
> > > +	if (unlikely(err))
> > > +		return err;
> > > +
> > > +	num_resv = max(num_resv, 1);
> > Why? If the user ask to reserve 0 fences this will reserve 1.
> 
> Reserving 0 fences is illegal. The dma_resv object will complain about that
> in debug builds IIRC.
> 
 
Maybe if you call dma_resv_reserve_fences with 0 or try to install a
fence without reserving something will complain but certainly can do
this:

dma_resv_lock
do something without calling dma_resv_reserve_fences
dma_resv_unlock

Matt

> Christian.
> 
> > 
> > > +	err = dma_resv_reserve_fences(obj, num_resv);
> > > +	if (err)
> > > +		goto out_err;
> > > -	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
> > > +	return 0;
> > > +
> > > +out_err:
> > > +	dma_resv_unlock(obj);
> > > +	return err;
> > >   }
> > >   void xe_bo_unlock(struct xe_bo *bo, struct ww_acquire_ctx *ww)
> > > diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
> > > index f6ee920303af..bc67263c6713 100644
> > > --- a/drivers/gpu/drm/xe/xe_bo_types.h
> > > +++ b/drivers/gpu/drm/xe/xe_bo_types.h
> > > @@ -11,7 +11,6 @@
> > >   #include <drm/drm_mm.h>
> > >   #include <drm/ttm/ttm_bo.h>
> > >   #include <drm/ttm/ttm_device.h>
> > > -#include <drm/ttm/ttm_execbuf_util.h>
> > >   #include <drm/ttm/ttm_placement.h>
> > >   struct xe_device;
> > > diff --git a/drivers/gpu/drm/xe/xe_exec.c b/drivers/gpu/drm/xe/xe_exec.c
> > > index ba13d20ed348..32a6e16ec177 100644
> > > --- a/drivers/gpu/drm/xe/xe_exec.c
> > > +++ b/drivers/gpu/drm/xe/xe_exec.c
> > > @@ -6,6 +6,7 @@
> > >   #include "xe_exec.h"
> > >   #include <drm/drm_device.h>
> > > +#include <drm/drm_exec.h>
> > >   #include <drm/drm_file.h>
> > >   #include <drm/xe_drm.h>
> > >   #include <linux/delay.h>
> > > @@ -95,23 +96,18 @@
> > >   #define XE_EXEC_BIND_RETRY_TIMEOUT_MS 1000
> > > -static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
> > > -			 struct ttm_validate_buffer tv_onstack[],
> > > -			 struct ttm_validate_buffer **tv,
> > > -			 struct list_head *objs)
> > > +static int xe_exec_begin(struct xe_engine *e, struct drm_exec *exec)
> > >   {
> > >   	struct xe_vm *vm = e->vm;
> > >   	struct xe_vma *vma;
> > > -	LIST_HEAD(dups);
> > >   	ktime_t end = 0;
> > >   	int err = 0;
> > > -	*tv = NULL;
> > >   	if (xe_vm_no_dma_fences(e->vm))
> > >   		return 0;
> > >   retry:
> > > -	err = xe_vm_lock_dma_resv(vm, ww, tv_onstack, tv, objs, true, 1);
> > > +	err = xe_vm_lock_dma_resv(vm, exec, true, 1);
> > >   	if (err)
> > >   		return err;
> > > @@ -128,8 +124,7 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
> > >   		err = xe_bo_validate(xe_vma_bo(vma), vm, false);
> > >   		if (err) {
> > > -			xe_vm_unlock_dma_resv(vm, tv_onstack, *tv, ww, objs);
> > > -			*tv = NULL;
> > > +			xe_vm_unlock_dma_resv(vm, exec);
> > >   			break;
> > >   		}
> > >   	}
> > > @@ -153,14 +148,10 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
> > >   	return err;
> > >   }
> > > -static void xe_exec_end(struct xe_engine *e,
> > > -			struct ttm_validate_buffer *tv_onstack,
> > > -			struct ttm_validate_buffer *tv,
> > > -			struct ww_acquire_ctx *ww,
> > > -			struct list_head *objs)
> > > +static void xe_exec_end(struct xe_engine *e, struct drm_exec *exec)
> > >   {
> > >   	if (!xe_vm_no_dma_fences(e->vm))
> > > -		xe_vm_unlock_dma_resv(e->vm, tv_onstack, tv, ww, objs);
> > > +		xe_vm_unlock_dma_resv(e->vm, exec);
> > >   }
> > >   int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> > > @@ -173,14 +164,11 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> > >   	struct xe_engine *engine;
> > >   	struct xe_sync_entry *syncs = NULL;
> > >   	u64 addresses[XE_HW_ENGINE_MAX_INSTANCE];
> > > -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
> > > -	struct ttm_validate_buffer *tv = NULL;
> > >   	u32 i, num_syncs = 0;
> > >   	struct xe_sched_job *job;
> > >   	struct dma_fence *rebind_fence;
> > >   	struct xe_vm *vm;
> > > -	struct ww_acquire_ctx ww;
> > > -	struct list_head objs;
> > > +	struct drm_exec exec;
> > >   	bool write_locked;
> > >   	int err = 0;
> > > @@ -293,7 +281,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> > >   			goto err_unlock_list;
> > >   	}
> > > -	err = xe_exec_begin(engine, &ww, tv_onstack, &tv, &objs);
> > > +	err = xe_exec_begin(engine, &exec);
> > >   	if (err)
> > >   		goto err_unlock_list;
> > > @@ -412,7 +400,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> > >   	if (err)
> > >   		xe_sched_job_put(job);
> > >   err_engine_end:
> > > -	xe_exec_end(engine, tv_onstack, tv, &ww, &objs);
> > > +	xe_exec_end(engine, &exec);
> > >   err_unlock_list:
> > >   	if (write_locked)
> > >   		up_write(&vm->lock);
> > > diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> > > index 125e4744fa38..94f59c29ba9b 100644
> > > --- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
> > > +++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
> > > @@ -8,8 +8,8 @@
> > >   #include <linux/bitfield.h>
> > >   #include <linux/circ_buf.h>
> > > +#include <drm/drm_exec.h>
> > >   #include <drm/drm_managed.h>
> > > -#include <drm/ttm/ttm_execbuf_util.h>
> > >   #include "xe_bo.h"
> > >   #include "xe_gt.h"
> > > @@ -84,11 +84,6 @@ static bool vma_matches(struct xe_vma *vma, u64 page_addr)
> > >   	return true;
> > >   }
> > > -static bool only_needs_bo_lock(struct xe_bo *bo)
> > > -{
> > > -	return bo && bo->vm;
> > > -}
> > > -
> > >   static struct xe_vma *lookup_vma(struct xe_vm *vm, u64 page_addr)
> > >   {
> > >   	struct xe_vma *vma = NULL;
> > > @@ -110,10 +105,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
> > >   	struct xe_vm *vm;
> > >   	struct xe_vma *vma = NULL;
> > >   	struct xe_bo *bo;
> > > -	LIST_HEAD(objs);
> > > -	LIST_HEAD(dups);
> > > -	struct ttm_validate_buffer tv_bo, tv_vm;
> > > -	struct ww_acquire_ctx ww;
> > > +	struct drm_exec exec;
> > >   	struct dma_fence *fence;
> > >   	bool write_locked;
> > >   	int ret = 0;
> > > @@ -171,20 +163,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
> > >   	/* Lock VM and BOs dma-resv */
> > >   	bo = xe_vma_bo(vma);
> > > -	if (only_needs_bo_lock(bo)) {
> > > -		/* This path ensures the BO's LRU is updated */
> > > -		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
> > > -	} else {
> > > -		tv_vm.num_shared = xe->info.tile_count;
> > > -		tv_vm.bo = xe_vm_ttm_bo(vm);
> > > -		list_add(&tv_vm.head, &objs);
> > > -		if (bo) {
> > > -			tv_bo.bo = &bo->ttm;
> > > -			tv_bo.num_shared = xe->info.tile_count;
> > > -			list_add(&tv_bo.head, &objs);
> > > -		}
> > > -		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
> > > -	}
> > > +	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
> > >   	if (ret)
> > >   		goto unlock_vm;
> > > @@ -227,10 +206,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
> > >   	vma->usm.tile_invalidated &= ~BIT(gt_to_tile(gt)->id);
> > >   unlock_dma_resv:
> > > -	if (only_needs_bo_lock(bo))
> > > -		xe_bo_unlock(bo, &ww);
> > > -	else
> > > -		ttm_eu_backoff_reservation(&ww, &objs);
> > > +	xe_vm_bo_unlock(vm, bo, &exec, true);
> > >   unlock_vm:
> > >   	if (!ret)
> > >   		vm->usm.last_fault_vma = vma;
> > > @@ -498,10 +474,7 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
> > >   	struct xe_vm *vm;
> > >   	struct xe_vma *vma;
> > >   	struct xe_bo *bo;
> > > -	LIST_HEAD(objs);
> > > -	LIST_HEAD(dups);
> > > -	struct ttm_validate_buffer tv_bo, tv_vm;
> > > -	struct ww_acquire_ctx ww;
> > > +	struct drm_exec exec;
> > >   	int ret = 0;
> > >   	/* We only support ACC_TRIGGER at the moment */
> > > @@ -534,28 +507,14 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
> > >   	/* Lock VM and BOs dma-resv */
> > >   	bo = xe_vma_bo(vma);
> > > -	if (only_needs_bo_lock(bo)) {
> > > -		/* This path ensures the BO's LRU is updated */
> > > -		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
> > > -	} else {
> > > -		tv_vm.num_shared = xe->info.tile_count;
> > > -		tv_vm.bo = xe_vm_ttm_bo(vm);
> > > -		list_add(&tv_vm.head, &objs);
> > > -		tv_bo.bo = &bo->ttm;
> > > -		tv_bo.num_shared = xe->info.tile_count;
> > > -		list_add(&tv_bo.head, &objs);
> > > -		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
> > > -	}
> > > +	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
> > >   	if (ret)
> > >   		goto unlock_vm;
> > >   	/* Migrate to VRAM, move should invalidate the VMA first */
> > >   	ret = xe_bo_migrate(bo, XE_PL_VRAM0 + tile->id);
> > > -	if (only_needs_bo_lock(bo))
> > > -		xe_bo_unlock(bo, &ww);
> > > -	else
> > > -		ttm_eu_backoff_reservation(&ww, &objs);
> > > +	xe_vm_bo_unlock(vm, bo, &exec, true);
> > >   unlock_vm:
> > >   	up_read(&vm->lock);
> > >   	xe_vm_put(vm);
> > > diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> > > index 6c216350084b..c89b10d5feb5 100644
> > > --- a/drivers/gpu/drm/xe/xe_vm.c
> > > +++ b/drivers/gpu/drm/xe/xe_vm.c
> > > @@ -7,8 +7,8 @@
> > >   #include <linux/dma-fence-array.h>
> > > +#include <drm/drm_exec.h>
> > >   #include <drm/drm_print.h>
> > > -#include <drm/ttm/ttm_execbuf_util.h>
> > >   #include <drm/ttm/ttm_tt.h>
> > >   #include <drm/xe_drm.h>
> > >   #include <linux/delay.h>
> > > @@ -321,11 +321,8 @@ static void resume_and_reinstall_preempt_fences(struct xe_vm *vm)
> > >   int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
> > >   {
> > > -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
> > > -	struct ttm_validate_buffer *tv;
> > > -	struct ww_acquire_ctx ww;
> > > -	struct list_head objs;
> > >   	struct dma_fence *pfence;
> > > +	struct drm_exec exec;
> > >   	int err;
> > >   	bool wait;
> > > @@ -333,7 +330,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
> > >   	down_write(&vm->lock);
> > > -	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs, true, 1);
> > > +	err = xe_vm_lock_dma_resv(vm, &exec, true, 1);
> > >   	if (err)
> > >   		goto out_unlock_outer;
> > > @@ -367,7 +364,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
> > >   	up_read(&vm->userptr.notifier_lock);
> > >   out_unlock:
> > > -	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
> > > +	xe_vm_unlock_dma_resv(vm, &exec);
> > >   out_unlock_outer:
> > >   	up_write(&vm->lock);
> > > @@ -397,68 +394,43 @@ int __xe_vm_userptr_needs_repin(struct xe_vm *vm)
> > >    * 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.
> > > - * @ww: Pointer to a struct ww_acquire_ctx locking context.
> > > - * @tv_onstack: Array size XE_ONSTACK_TV of storage for the struct
> > > - * ttm_validate_buffers used for locking.
> > > - * @tv: Pointer to a pointer that on output contains the actual storage used.
> > > - * @objs: List head for the buffer objects locked.
> > > + * @exec: Pointer to a struct drm_exec execution context.
> > >    * @intr: Whether to lock interruptible.
> > >    * @num_shared: Number of dma-fence slots to reserve in the locked objects.
> > >    *
> > >    * Locks the vm dma-resv objects and all the dma-resv objects of the
> > > - * buffer objects on the vm external object list. The TTM utilities require
> > > - * a list of struct ttm_validate_buffers pointing to the actual buffer
> > > - * objects to lock. Storage for those struct ttm_validate_buffers should
> > > - * be provided in @tv_onstack, and is typically reserved on the stack
> > > - * of the caller. If the size of @tv_onstack isn't sufficient, then
> > > - * storage will be allocated internally using kvmalloc().
> > > + * buffer objects on the vm external object list using helpers provided
> > > + * by drm_exec.
> > >    *
> > >    * The function performs deadlock handling internally, and after a
> > >    * successful return the ww locking transaction should be considered
> > >    * sealed.
> > >    *
> > > - * Return: 0 on success, Negative error code on error. In particular if
> > > - * @intr is set to true, -EINTR or -ERESTARTSYS may be returned. In case
> > > - * of error, any locking performed has been reverted.
> > > + * Return: 0 on success, Negative error code on error.
> > >    */
> > > -int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> > > -			struct ttm_validate_buffer *tv_onstack,
> > > -			struct ttm_validate_buffer **tv,
> > > -			struct list_head *objs,
> > > -			bool intr,
> > > -			unsigned int num_shared)
> > > -{
> > > -	struct ttm_validate_buffer *tv_vm, *tv_bo;
> > > +int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
> > > +			bool intr, unsigned int num_shared)
> > > +{
> > >   	struct xe_vma *vma, *next;
> > > -	LIST_HEAD(dups);
> > > +	struct drm_gem_object *obj;
> > >   	int err;
> > >   	lockdep_assert_held(&vm->lock);
> > > -	if (vm->extobj.entries < XE_ONSTACK_TV) {
> > > -		tv_vm = tv_onstack;
> > > -	} else {
> > > -		tv_vm = kvmalloc_array(vm->extobj.entries + 1, sizeof(*tv_vm),
> > > -				       GFP_KERNEL);
> > > -		if (!tv_vm)
> > > -			return -ENOMEM;
> > > +	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
> > > +	drm_exec_until_all_locked(exec) {
> > > +		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm), num_shared);
> > > +		drm_exec_retry_on_contention(exec);
> > > +		if (unlikely(err) && err != -EALREADY)
> > > +			goto out_err;
> > > +		list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
> > > +			obj = &xe_vma_bo(vma)->ttm.base;
> > > +			err = drm_exec_prepare_obj(exec, obj, num_shared);
> > > +			drm_exec_retry_on_contention(exec);
> > > +			if (unlikely(err) && err != -EALREADY)
> > > +				goto out_err;
> > > +		}
> > >   	}
> > > -	tv_bo = tv_vm + 1;
> > > -
> > > -	INIT_LIST_HEAD(objs);
> > > -	list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
> > > -		tv_bo->num_shared = num_shared;
> > > -		tv_bo->bo = &xe_vma_bo(vma)->ttm;
> > > -
> > > -		list_add_tail(&tv_bo->head, objs);
> > > -		tv_bo++;
> > > -	}
> > > -	tv_vm->num_shared = num_shared;
> > > -	tv_vm->bo = xe_vm_ttm_bo(vm);
> > > -	list_add_tail(&tv_vm->head, objs);
> > > -	err = ttm_eu_reserve_buffers(ww, objs, intr, &dups);
> > > -	if (err)
> > > -		goto out_err;
> > >   	spin_lock(&vm->notifier.list_lock);
> > >   	list_for_each_entry_safe(vma, next, &vm->notifier.rebind_list,
> > > @@ -470,14 +442,10 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> > >   			list_move_tail(&vma->rebind_link, &vm->rebind_list);
> > >   	}
> > >   	spin_unlock(&vm->notifier.list_lock);
> > > -
> > > -	*tv = tv_vm;
> > >   	return 0;
> > >   out_err:
> > > -	if (tv_vm != tv_onstack)
> > > -		kvfree(tv_vm);
> > > -
> > > +	drm_exec_fini(exec);
> > >   	return err;
> > >   }
> > > @@ -485,20 +453,16 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> > >    * xe_vm_unlock_dma_resv() - Unlock reservation objects locked by
> > >    * xe_vm_lock_dma_resv()
> > >    * @vm: The vm.
> > > - * @tv_onstack: The @tv_onstack array given to xe_vm_lock_dma_resv().
> > > - * @tv: The value of *@tv given by xe_vm_lock_dma_resv().
> > > - * @ww: The ww_acquire_context used for locking.
> > > - * @objs: The list returned from xe_vm_lock_dma_resv().
> > > + * @exec: The @drm_exec given to xe_vm_lock_dma_resv().
> > >    *
> > >    * Unlocks the reservation objects and frees any memory allocated by
> > >    * xe_vm_lock_dma_resv().
> > >    */
> > > -void xe_vm_unlock_dma_resv(struct xe_vm *vm,
> > > -			   struct ttm_validate_buffer *tv_onstack,
> > > -			   struct ttm_validate_buffer *tv,
> > > -			   struct ww_acquire_ctx *ww,
> > > -			   struct list_head *objs)
> > > +void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec)
> > >   {
> > > +	struct drm_gem_object *obj, *skip = xe_vm_gem(vm);
> > > +	unsigned long index;
> > > +
> > >   	/*
> > >   	 * Nothing should've been able to enter the list while we were locked,
> > >   	 * since we've held the dma-resvs of all the vm's external objects,
> > > @@ -507,9 +471,13 @@ void xe_vm_unlock_dma_resv(struct xe_vm *vm,
> > >   	 */
> > >   	XE_WARN_ON(!list_empty(&vm->notifier.rebind_list));
> > > -	ttm_eu_backoff_reservation(ww, objs);
> > > -	if (tv && tv != tv_onstack)
> > > -		kvfree(tv);
> > > +	drm_exec_for_each_locked_object(exec, index, obj) {
> > > +		struct xe_bo *bo = gem_to_xe_bo(obj);
> > > +
> > > +		if (obj != skip)
> > > +			ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
> > > +	}
> > > +	drm_exec_fini(exec);
> > >   }
> > >   #define XE_VM_REBIND_RETRY_TIMEOUT_MS 1000
> > > @@ -536,10 +504,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
> > >   {
> > >   	struct xe_vm *vm = container_of(w, struct xe_vm, preempt.rebind_work);
> > >   	struct xe_vma *vma;
> > > -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
> > > -	struct ttm_validate_buffer *tv;
> > > -	struct ww_acquire_ctx ww;
> > > -	struct list_head objs;
> > > +	struct drm_exec exec;
> > >   	struct dma_fence *rebind_fence;
> > >   	unsigned int fence_count = 0;
> > >   	LIST_HEAD(preempt_fences);
> > > @@ -582,8 +547,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
> > >   			goto out_unlock_outer;
> > >   	}
> > > -	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs,
> > > -				  false, vm->preempt.num_engines);
> > > +	err = xe_vm_lock_dma_resv(vm, &exec, false, vm->preempt.num_engines);
> > >   	if (err)
> > >   		goto out_unlock_outer;
> > > @@ -662,7 +626,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
> > >   	up_read(&vm->userptr.notifier_lock);
> > >   out_unlock:
> > > -	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
> > > +	xe_vm_unlock_dma_resv(vm, &exec);
> > >   out_unlock_outer:
> > >   	if (err == -EAGAIN) {
> > >   		trace_xe_vm_rebind_worker_retry(vm);
> > > @@ -1105,27 +1069,17 @@ static void xe_vma_destroy(struct xe_vma *vma, struct dma_fence *fence)
> > >   static void xe_vma_destroy_unlocked(struct xe_vma *vma)
> > >   {
> > > -	struct ttm_validate_buffer tv[2];
> > > -	struct ww_acquire_ctx ww;
> > > +	struct xe_vm *vm = xe_vma_vm(vma);
> > >   	struct xe_bo *bo = xe_vma_bo(vma);
> > > -	LIST_HEAD(objs);
> > > -	LIST_HEAD(dups);
> > > +	struct drm_exec exec;
> > >   	int err;
> > > -	memset(tv, 0, sizeof(tv));
> > > -	tv[0].bo = xe_vm_ttm_bo(xe_vma_vm(vma));
> > > -	list_add(&tv[0].head, &objs);
> > > -
> > > -	if (bo) {
> > > -		tv[1].bo = &xe_bo_get(bo)->ttm;
> > > -		list_add(&tv[1].head, &objs);
> > > -	}
> > > -	err = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
> > > +	err = xe_vm_bo_lock(vm, xe_bo_get(bo), &exec, 0, false);
> > >   	XE_WARN_ON(err);
> > >   	xe_vma_destroy(vma, NULL);
> > > -	ttm_eu_backoff_reservation(&ww, &objs);
> > > +	xe_vm_bo_unlock(vm, bo, &exec, false);
> > >   	if (bo)
> > >   		xe_bo_put(bo);
> > >   }
> > > @@ -2125,21 +2079,6 @@ static int xe_vm_prefetch(struct xe_vm *vm, struct xe_vma *vma,
> > >   #define VM_BIND_OP(op)	(op & 0xffff)
> > > -struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm)
> > > -{
> > > -	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
> > > -		XE_VM_FLAG_GT_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 xe_vm_tv_populate(struct xe_vm *vm, struct ttm_validate_buffer *tv)
> > > -{
> > > -	tv->num_shared = 1;
> > > -	tv->bo = xe_vm_ttm_bo(vm);
> > > -}
> > > -
> > >   static void vm_set_async_error(struct xe_vm *vm, int err)
> > >   {
> > >   	lockdep_assert_held(&vm->lock);
> > > @@ -2577,17 +2516,12 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)
> > >   static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
> > >   			       struct xe_vma_op *op)
> > >   {
> > > -	LIST_HEAD(objs);
> > > -	LIST_HEAD(dups);
> > > -	struct ttm_validate_buffer tv_bo, tv_vm;
> > > -	struct ww_acquire_ctx ww;
> > >   	struct xe_bo *vbo;
> > > +	struct drm_exec exec;
> > >   	int err;
> > >   	lockdep_assert_held_write(&vm->lock);
> > > -	xe_vm_tv_populate(vm, &tv_vm);
> > > -	list_add_tail(&tv_vm.head, &objs);
> > >   	vbo = xe_vma_bo(vma);
> > >   	if (vbo) {
> > >   		/*
> > > @@ -2596,16 +2530,10 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
> > >   		 * take a reference here.
> > >   		 */
> > >   		xe_bo_get(vbo);
> > > -
> > > -		if (!vbo->vm) {
> > > -			tv_bo.bo = &vbo->ttm;
> > > -			tv_bo.num_shared = 1;
> > > -			list_add(&tv_bo.head, &objs);
> > > -		}
> > >   	}
> > >   again:
> > > -	err = ttm_eu_reserve_buffers(&ww, &objs, true, &dups);
> > > +	err = xe_vm_bo_lock(vm, vbo, &exec, 1, true);
> > >   	if (err) {
> > >   		xe_bo_put(vbo);
> > >   		return err;
> > > @@ -2687,7 +2615,7 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
> > >   		XE_BUG_ON("NOT POSSIBLE");
> > >   	}
> > > -	ttm_eu_backoff_reservation(&ww, &objs);
> > > +	xe_vm_bo_unlock(vm, vbo, &exec, false);
> > >   	if (err == -EAGAIN && xe_vma_is_userptr(vma)) {
> > >   		lockdep_assert_held_write(&vm->lock);
> > >   		err = xe_vma_userptr_pin_pages(vma);
> > > @@ -3338,24 +3266,47 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
> > >   	return err == -ENODATA ? 0 : err;
> > >   }
> > > +struct drm_gem_object *xe_vm_gem(struct xe_vm *vm)
> > > +{
> > > +	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
> > > +		XE_VM_FLAG_GT_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.base;
> > > +}
> > > +
> > >   /*
> > > - * XXX: Using the TTM wrappers for now, likely can call into dma-resv code
> > > - * directly to optimize. Also this likely should be an inline function.
> > > + * XXX: This likely should be an inline function.
> > >    */
> > >   int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> > >   	       int num_resv, bool intr)
> > >   {
> > > -	struct ttm_validate_buffer tv_vm;
> > > -	LIST_HEAD(objs);
> > > -	LIST_HEAD(dups);
> > > +	struct dma_resv *obj;
> > > +	int err;
> > >   	XE_BUG_ON(!ww);
> > > -	tv_vm.num_shared = num_resv;
> > > -	tv_vm.bo = xe_vm_ttm_bo(vm);;
> > > -	list_add_tail(&tv_vm.head, &objs);
> > > +	obj = xe_vm_gem(vm)->resv;
> > > +	ww_acquire_init(ww, &reservation_ww_class);
> > > +
> > > +	if (intr)
> > > +		err = dma_resv_lock_interruptible(obj, ww);
> > > +	else
> > > +		err = dma_resv_lock(obj, ww);
> > > +
> > > +	if (unlikely(err))
> > > +		return err;
> > > +
> > > +	num_resv = max(num_resv, 1);
> > Same question as above here.
> > 
> > Matt
> > 
> > > +	err = dma_resv_reserve_fences(obj, num_resv);
> > > +	if (err)
> > > +		goto out_err;
> > > -	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
> > > +	return 0;
> > > +
> > > +out_err:
> > > +	dma_resv_unlock(&vm->resv);
> > > +	return err;
> > >   }
> > >   void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
> > > @@ -3364,6 +3315,43 @@ void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
> > >   	ww_acquire_fini(ww);
> > >   }
> > > +int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> > > +		  int num_resv, bool intr)
> > > +{
> > > +	int err;
> > > +
> > > +	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
> > > +	drm_exec_until_all_locked(exec) {
> > > +		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm),
> > > +					   num_resv);
> > > +		drm_exec_retry_on_contention(exec);
> > > +		if (err && err != -EALREADY)
> > > +			goto out_err;
> > > +
> > > +		if (bo && !bo->vm) {
> > > +			err = drm_exec_prepare_obj(exec, &bo->ttm.base,
> > > +						   num_resv);
> > > +			drm_exec_retry_on_contention(exec);
> > > +			if (err && err != -EALREADY)
> > > +				goto out_err;
> > > +		}
> > > +	}
> > > +
> > > +	return 0;
> > > +
> > > +out_err:
> > > +	drm_exec_fini(exec);
> > > +	return err;
> > > +}
> > > +
> > > +void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> > > +		     bool lru_update)
> > > +{
> > > +	if (lru_update && bo && (!bo->vm || xe_vm_no_dma_fences(vm)))
> > > +		ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
> > > +	drm_exec_fini(exec);
> > > +}
> > > +
> > >   /**
> > >    * xe_vm_invalidate_vma - invalidate GPU mappings for VMA without a lock
> > >    * @vma: VMA to invalidate
> > > diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
> > > index eaf11ac8ff51..62a062bd5078 100644
> > > --- a/drivers/gpu/drm/xe/xe_vm.h
> > > +++ b/drivers/gpu/drm/xe/xe_vm.h
> > > @@ -12,6 +12,7 @@
> > >   #include "xe_vm_types.h"
> > >   struct drm_device;
> > > +struct drm_exec;
> > >   struct drm_printer;
> > >   struct drm_file;
> > > @@ -39,11 +40,17 @@ static inline void xe_vm_put(struct xe_vm *vm)
> > >   	kref_put(&vm->refcount, xe_vm_free);
> > >   }
> > > +struct drm_gem_object *xe_vm_gem(struct xe_vm *vm);
> > > +
> > >   int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> > >   	       int num_resv, bool intr);
> > > -
> > >   void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww);
> > > +int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> > > +		  int num_resv, bool intr);
> > > +void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
> > > +		     bool lru_update);
> > > +
> > >   static inline bool xe_vm_is_closed(struct xe_vm *vm)
> > >   {
> > >   	/* Only guaranteed not to change when vm->lock is held */
> > > @@ -183,8 +190,6 @@ int xe_vm_async_fence_wait_start(struct dma_fence *fence);
> > >   extern struct ttm_device_funcs xe_ttm_funcs;
> > > -struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm);
> > > -
> > >   /**
> > >    * xe_vm_reactivate_rebind() - Reactivate the rebind functionality on compute
> > >    * vms.
> > > @@ -212,23 +217,10 @@ static inline void xe_vm_queue_rebind_worker(struct xe_vm *vm)
> > >   	queue_work(vm->xe->ordered_wq, &vm->preempt.rebind_work);
> > >   }
> > > -/*
> > > - * XE_ONSTACK_TV is used to size the tv_onstack array that is input
> > > - * to xe_vm_lock_dma_resv() and xe_vm_unlock_dma_resv().
> > > - */
> > > -#define XE_ONSTACK_TV 20
> > > -int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
> > > -			struct ttm_validate_buffer *tv_onstack,
> > > -			struct ttm_validate_buffer **tv,
> > > -			struct list_head *objs,
> > > -			bool intr,
> > > -			unsigned int num_shared);
> > > -
> > > -void xe_vm_unlock_dma_resv(struct xe_vm *vm,
> > > -			   struct ttm_validate_buffer *tv_onstack,
> > > -			   struct ttm_validate_buffer *tv,
> > > -			   struct ww_acquire_ctx *ww,
> > > -			   struct list_head *objs);
> > > +int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
> > > +			bool intr, unsigned int num_shared);
> > > +
> > > +void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec);
> > >   void xe_vm_fence_all_extobjs(struct xe_vm *vm, struct dma_fence *fence,
> > >   			     enum dma_resv_usage usage);
> > > -- 
> > > 2.34.1
> > > 
> 

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

* Re: [Intel-xe] [PATCH v2 2/2] drm/xe: switch to using drm_exec
  2023-07-13 18:13       ` Matthew Brost
@ 2023-07-14  6:44         ` Christian König
  0 siblings, 0 replies; 14+ messages in thread
From: Christian König @ 2023-07-14  6:44 UTC (permalink / raw)
  To: Matthew Brost; +Cc: Francois Dugast, intel-xe

Am 13.07.23 um 20:13 schrieb Matthew Brost:
> On Thu, Jul 13, 2023 at 04:35:57PM +0200, Christian König wrote:
>> Am 13.07.23 um 16:00 schrieb Matthew Brost:
>>> On Thu, Jul 13, 2023 at 01:17:11PM +0000, Francois Dugast wrote:
>>>> Replace the use of ttm_execbuf_util helpers with the drm_exec helpers.
>>>>
>>>> v2:
>>>> - Call dma-resv locking functions directly in xe_bo_lock and
>>>>     xe_vm_lock functions (Matthew Brost)
>>>> - Switch to execution context for GEM buffers v7 (Christian König)
>>>> - Use DRM_EXEC_INTERRUPTIBLE_WAIT
>>>>
>>>> Signed-off-by: Francois Dugast <francois.dugast@intel.com>
>>>> ---
>>>>    drivers/gpu/drm/xe/Kconfig           |   1 +
>>>>    drivers/gpu/drm/xe/xe_bo.c           |  29 +++-
>>>>    drivers/gpu/drm/xe/xe_bo_types.h     |   1 -
>>>>    drivers/gpu/drm/xe/xe_exec.c         |  30 +---
>>>>    drivers/gpu/drm/xe/xe_gt_pagefault.c |  55 +-----
>>>>    drivers/gpu/drm/xe/xe_vm.c           | 246 +++++++++++++--------------
>>>>    drivers/gpu/drm/xe/xe_vm.h           |  32 ++--
>>>>    7 files changed, 168 insertions(+), 226 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
>>>> index d44794f99338..b739faa401d3 100644
>>>> --- a/drivers/gpu/drm/xe/Kconfig
>>>> +++ b/drivers/gpu/drm/xe/Kconfig
>>>> @@ -8,6 +8,7 @@ config DRM_XE
>>>>    	select SHMEM
>>>>    	select TMPFS
>>>>    	select DRM_BUDDY
>>>> +	select DRM_EXEC
>>>>    	select DRM_KMS_HELPER
>>>>    	select DRM_PANEL
>>>>    	select DRM_SUBALLOC_HELPER
>>>> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
>>>> index 6353afa8d846..aafe69ed4320 100644
>>>> --- a/drivers/gpu/drm/xe/xe_bo.c
>>>> +++ b/drivers/gpu/drm/xe/xe_bo.c
>>>> @@ -1806,17 +1806,32 @@ int xe_gem_mmap_offset_ioctl(struct drm_device *dev, void *data,
>>>>    int xe_bo_lock(struct xe_bo *bo, struct ww_acquire_ctx *ww,
>>>>    	       int num_resv, bool intr)
>>>>    {
>>>> -	struct ttm_validate_buffer tv_bo;
>>>> -	LIST_HEAD(objs);
>>>> -	LIST_HEAD(dups);
>>>> +	struct dma_resv *obj;
>>>> +	int err;
>>>>    	XE_BUG_ON(!ww);
>>>> -	tv_bo.num_shared = num_resv;
>>>> -	tv_bo.bo = &bo->ttm;;
>>>> -	list_add_tail(&tv_bo.head, &objs);
>>>> +	obj = bo->ttm.base.resv;
>>>> +	ww_acquire_init(ww, &reservation_ww_class);
>>>> +
>>>> +	if (intr)
>>>> +		err = dma_resv_lock_interruptible(obj, ww);
>>>> +	else
>>>> +		err = dma_resv_lock(obj, ww);
>>>> +
>>>> +	if (unlikely(err))
>>>> +		return err;
>>>> +
>>>> +	num_resv = max(num_resv, 1);
>>> Why? If the user ask to reserve 0 fences this will reserve 1.
>> Reserving 0 fences is illegal. The dma_resv object will complain about that
>> in debug builds IIRC.
>>
>   
> Maybe if you call dma_resv_reserve_fences with 0 or try to install a
> fence without reserving something will complain but certainly can do
> this:
>
> dma_resv_lock
> do something without calling dma_resv_reserve_fences
> dma_resv_unlock

Yeah, that's exactly why I have separate the _prepare_obj() and 
_lock_obj() functions in drm_exec:

  * drm_exec_prepare_obj - prepare a GEM object for use
  * @exec: the drm_exec object with the state
  * @obj: the GEM object to prepare
  * @num_fences: how many fences to reserve

  * drm_exec_lock_obj - lock a GEM object for use
  * @exec: the drm_exec object with the state
  * @obj: the GEM object to lock

If you don't need to reserve a fence then don't call the function for 
that, otherwise reserve at least one fence or you will get a warning :)

A simple if (!num_resv) here should do as well.

Regards,
Christian.

>
> Matt
>
>> Christian.
>>
>>>> +	err = dma_resv_reserve_fences(obj, num_resv);
>>>> +	if (err)
>>>> +		goto out_err;
>>>> -	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
>>>> +	return 0;
>>>> +
>>>> +out_err:
>>>> +	dma_resv_unlock(obj);
>>>> +	return err;
>>>>    }
>>>>    void xe_bo_unlock(struct xe_bo *bo, struct ww_acquire_ctx *ww)
>>>> diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
>>>> index f6ee920303af..bc67263c6713 100644
>>>> --- a/drivers/gpu/drm/xe/xe_bo_types.h
>>>> +++ b/drivers/gpu/drm/xe/xe_bo_types.h
>>>> @@ -11,7 +11,6 @@
>>>>    #include <drm/drm_mm.h>
>>>>    #include <drm/ttm/ttm_bo.h>
>>>>    #include <drm/ttm/ttm_device.h>
>>>> -#include <drm/ttm/ttm_execbuf_util.h>
>>>>    #include <drm/ttm/ttm_placement.h>
>>>>    struct xe_device;
>>>> diff --git a/drivers/gpu/drm/xe/xe_exec.c b/drivers/gpu/drm/xe/xe_exec.c
>>>> index ba13d20ed348..32a6e16ec177 100644
>>>> --- a/drivers/gpu/drm/xe/xe_exec.c
>>>> +++ b/drivers/gpu/drm/xe/xe_exec.c
>>>> @@ -6,6 +6,7 @@
>>>>    #include "xe_exec.h"
>>>>    #include <drm/drm_device.h>
>>>> +#include <drm/drm_exec.h>
>>>>    #include <drm/drm_file.h>
>>>>    #include <drm/xe_drm.h>
>>>>    #include <linux/delay.h>
>>>> @@ -95,23 +96,18 @@
>>>>    #define XE_EXEC_BIND_RETRY_TIMEOUT_MS 1000
>>>> -static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
>>>> -			 struct ttm_validate_buffer tv_onstack[],
>>>> -			 struct ttm_validate_buffer **tv,
>>>> -			 struct list_head *objs)
>>>> +static int xe_exec_begin(struct xe_engine *e, struct drm_exec *exec)
>>>>    {
>>>>    	struct xe_vm *vm = e->vm;
>>>>    	struct xe_vma *vma;
>>>> -	LIST_HEAD(dups);
>>>>    	ktime_t end = 0;
>>>>    	int err = 0;
>>>> -	*tv = NULL;
>>>>    	if (xe_vm_no_dma_fences(e->vm))
>>>>    		return 0;
>>>>    retry:
>>>> -	err = xe_vm_lock_dma_resv(vm, ww, tv_onstack, tv, objs, true, 1);
>>>> +	err = xe_vm_lock_dma_resv(vm, exec, true, 1);
>>>>    	if (err)
>>>>    		return err;
>>>> @@ -128,8 +124,7 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
>>>>    		err = xe_bo_validate(xe_vma_bo(vma), vm, false);
>>>>    		if (err) {
>>>> -			xe_vm_unlock_dma_resv(vm, tv_onstack, *tv, ww, objs);
>>>> -			*tv = NULL;
>>>> +			xe_vm_unlock_dma_resv(vm, exec);
>>>>    			break;
>>>>    		}
>>>>    	}
>>>> @@ -153,14 +148,10 @@ static int xe_exec_begin(struct xe_engine *e, struct ww_acquire_ctx *ww,
>>>>    	return err;
>>>>    }
>>>> -static void xe_exec_end(struct xe_engine *e,
>>>> -			struct ttm_validate_buffer *tv_onstack,
>>>> -			struct ttm_validate_buffer *tv,
>>>> -			struct ww_acquire_ctx *ww,
>>>> -			struct list_head *objs)
>>>> +static void xe_exec_end(struct xe_engine *e, struct drm_exec *exec)
>>>>    {
>>>>    	if (!xe_vm_no_dma_fences(e->vm))
>>>> -		xe_vm_unlock_dma_resv(e->vm, tv_onstack, tv, ww, objs);
>>>> +		xe_vm_unlock_dma_resv(e->vm, exec);
>>>>    }
>>>>    int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>>>> @@ -173,14 +164,11 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>>>>    	struct xe_engine *engine;
>>>>    	struct xe_sync_entry *syncs = NULL;
>>>>    	u64 addresses[XE_HW_ENGINE_MAX_INSTANCE];
>>>> -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
>>>> -	struct ttm_validate_buffer *tv = NULL;
>>>>    	u32 i, num_syncs = 0;
>>>>    	struct xe_sched_job *job;
>>>>    	struct dma_fence *rebind_fence;
>>>>    	struct xe_vm *vm;
>>>> -	struct ww_acquire_ctx ww;
>>>> -	struct list_head objs;
>>>> +	struct drm_exec exec;
>>>>    	bool write_locked;
>>>>    	int err = 0;
>>>> @@ -293,7 +281,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>>>>    			goto err_unlock_list;
>>>>    	}
>>>> -	err = xe_exec_begin(engine, &ww, tv_onstack, &tv, &objs);
>>>> +	err = xe_exec_begin(engine, &exec);
>>>>    	if (err)
>>>>    		goto err_unlock_list;
>>>> @@ -412,7 +400,7 @@ int xe_exec_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>>>>    	if (err)
>>>>    		xe_sched_job_put(job);
>>>>    err_engine_end:
>>>> -	xe_exec_end(engine, tv_onstack, tv, &ww, &objs);
>>>> +	xe_exec_end(engine, &exec);
>>>>    err_unlock_list:
>>>>    	if (write_locked)
>>>>    		up_write(&vm->lock);
>>>> diff --git a/drivers/gpu/drm/xe/xe_gt_pagefault.c b/drivers/gpu/drm/xe/xe_gt_pagefault.c
>>>> index 125e4744fa38..94f59c29ba9b 100644
>>>> --- a/drivers/gpu/drm/xe/xe_gt_pagefault.c
>>>> +++ b/drivers/gpu/drm/xe/xe_gt_pagefault.c
>>>> @@ -8,8 +8,8 @@
>>>>    #include <linux/bitfield.h>
>>>>    #include <linux/circ_buf.h>
>>>> +#include <drm/drm_exec.h>
>>>>    #include <drm/drm_managed.h>
>>>> -#include <drm/ttm/ttm_execbuf_util.h>
>>>>    #include "xe_bo.h"
>>>>    #include "xe_gt.h"
>>>> @@ -84,11 +84,6 @@ static bool vma_matches(struct xe_vma *vma, u64 page_addr)
>>>>    	return true;
>>>>    }
>>>> -static bool only_needs_bo_lock(struct xe_bo *bo)
>>>> -{
>>>> -	return bo && bo->vm;
>>>> -}
>>>> -
>>>>    static struct xe_vma *lookup_vma(struct xe_vm *vm, u64 page_addr)
>>>>    {
>>>>    	struct xe_vma *vma = NULL;
>>>> @@ -110,10 +105,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
>>>>    	struct xe_vm *vm;
>>>>    	struct xe_vma *vma = NULL;
>>>>    	struct xe_bo *bo;
>>>> -	LIST_HEAD(objs);
>>>> -	LIST_HEAD(dups);
>>>> -	struct ttm_validate_buffer tv_bo, tv_vm;
>>>> -	struct ww_acquire_ctx ww;
>>>> +	struct drm_exec exec;
>>>>    	struct dma_fence *fence;
>>>>    	bool write_locked;
>>>>    	int ret = 0;
>>>> @@ -171,20 +163,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
>>>>    	/* Lock VM and BOs dma-resv */
>>>>    	bo = xe_vma_bo(vma);
>>>> -	if (only_needs_bo_lock(bo)) {
>>>> -		/* This path ensures the BO's LRU is updated */
>>>> -		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
>>>> -	} else {
>>>> -		tv_vm.num_shared = xe->info.tile_count;
>>>> -		tv_vm.bo = xe_vm_ttm_bo(vm);
>>>> -		list_add(&tv_vm.head, &objs);
>>>> -		if (bo) {
>>>> -			tv_bo.bo = &bo->ttm;
>>>> -			tv_bo.num_shared = xe->info.tile_count;
>>>> -			list_add(&tv_bo.head, &objs);
>>>> -		}
>>>> -		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
>>>> -	}
>>>> +	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
>>>>    	if (ret)
>>>>    		goto unlock_vm;
>>>> @@ -227,10 +206,7 @@ static int handle_pagefault(struct xe_gt *gt, struct pagefault *pf)
>>>>    	vma->usm.tile_invalidated &= ~BIT(gt_to_tile(gt)->id);
>>>>    unlock_dma_resv:
>>>> -	if (only_needs_bo_lock(bo))
>>>> -		xe_bo_unlock(bo, &ww);
>>>> -	else
>>>> -		ttm_eu_backoff_reservation(&ww, &objs);
>>>> +	xe_vm_bo_unlock(vm, bo, &exec, true);
>>>>    unlock_vm:
>>>>    	if (!ret)
>>>>    		vm->usm.last_fault_vma = vma;
>>>> @@ -498,10 +474,7 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
>>>>    	struct xe_vm *vm;
>>>>    	struct xe_vma *vma;
>>>>    	struct xe_bo *bo;
>>>> -	LIST_HEAD(objs);
>>>> -	LIST_HEAD(dups);
>>>> -	struct ttm_validate_buffer tv_bo, tv_vm;
>>>> -	struct ww_acquire_ctx ww;
>>>> +	struct drm_exec exec;
>>>>    	int ret = 0;
>>>>    	/* We only support ACC_TRIGGER at the moment */
>>>> @@ -534,28 +507,14 @@ static int handle_acc(struct xe_gt *gt, struct acc *acc)
>>>>    	/* Lock VM and BOs dma-resv */
>>>>    	bo = xe_vma_bo(vma);
>>>> -	if (only_needs_bo_lock(bo)) {
>>>> -		/* This path ensures the BO's LRU is updated */
>>>> -		ret = xe_bo_lock(bo, &ww, xe->info.tile_count, false);
>>>> -	} else {
>>>> -		tv_vm.num_shared = xe->info.tile_count;
>>>> -		tv_vm.bo = xe_vm_ttm_bo(vm);
>>>> -		list_add(&tv_vm.head, &objs);
>>>> -		tv_bo.bo = &bo->ttm;
>>>> -		tv_bo.num_shared = xe->info.tile_count;
>>>> -		list_add(&tv_bo.head, &objs);
>>>> -		ret = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
>>>> -	}
>>>> +	ret = xe_vm_bo_lock(vm, bo, &exec, xe->info.tile_count, false);
>>>>    	if (ret)
>>>>    		goto unlock_vm;
>>>>    	/* Migrate to VRAM, move should invalidate the VMA first */
>>>>    	ret = xe_bo_migrate(bo, XE_PL_VRAM0 + tile->id);
>>>> -	if (only_needs_bo_lock(bo))
>>>> -		xe_bo_unlock(bo, &ww);
>>>> -	else
>>>> -		ttm_eu_backoff_reservation(&ww, &objs);
>>>> +	xe_vm_bo_unlock(vm, bo, &exec, true);
>>>>    unlock_vm:
>>>>    	up_read(&vm->lock);
>>>>    	xe_vm_put(vm);
>>>> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
>>>> index 6c216350084b..c89b10d5feb5 100644
>>>> --- a/drivers/gpu/drm/xe/xe_vm.c
>>>> +++ b/drivers/gpu/drm/xe/xe_vm.c
>>>> @@ -7,8 +7,8 @@
>>>>    #include <linux/dma-fence-array.h>
>>>> +#include <drm/drm_exec.h>
>>>>    #include <drm/drm_print.h>
>>>> -#include <drm/ttm/ttm_execbuf_util.h>
>>>>    #include <drm/ttm/ttm_tt.h>
>>>>    #include <drm/xe_drm.h>
>>>>    #include <linux/delay.h>
>>>> @@ -321,11 +321,8 @@ static void resume_and_reinstall_preempt_fences(struct xe_vm *vm)
>>>>    int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
>>>>    {
>>>> -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
>>>> -	struct ttm_validate_buffer *tv;
>>>> -	struct ww_acquire_ctx ww;
>>>> -	struct list_head objs;
>>>>    	struct dma_fence *pfence;
>>>> +	struct drm_exec exec;
>>>>    	int err;
>>>>    	bool wait;
>>>> @@ -333,7 +330,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
>>>>    	down_write(&vm->lock);
>>>> -	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs, true, 1);
>>>> +	err = xe_vm_lock_dma_resv(vm, &exec, true, 1);
>>>>    	if (err)
>>>>    		goto out_unlock_outer;
>>>> @@ -367,7 +364,7 @@ int xe_vm_add_compute_engine(struct xe_vm *vm, struct xe_engine *e)
>>>>    	up_read(&vm->userptr.notifier_lock);
>>>>    out_unlock:
>>>> -	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
>>>> +	xe_vm_unlock_dma_resv(vm, &exec);
>>>>    out_unlock_outer:
>>>>    	up_write(&vm->lock);
>>>> @@ -397,68 +394,43 @@ int __xe_vm_userptr_needs_repin(struct xe_vm *vm)
>>>>     * 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.
>>>> - * @ww: Pointer to a struct ww_acquire_ctx locking context.
>>>> - * @tv_onstack: Array size XE_ONSTACK_TV of storage for the struct
>>>> - * ttm_validate_buffers used for locking.
>>>> - * @tv: Pointer to a pointer that on output contains the actual storage used.
>>>> - * @objs: List head for the buffer objects locked.
>>>> + * @exec: Pointer to a struct drm_exec execution context.
>>>>     * @intr: Whether to lock interruptible.
>>>>     * @num_shared: Number of dma-fence slots to reserve in the locked objects.
>>>>     *
>>>>     * Locks the vm dma-resv objects and all the dma-resv objects of the
>>>> - * buffer objects on the vm external object list. The TTM utilities require
>>>> - * a list of struct ttm_validate_buffers pointing to the actual buffer
>>>> - * objects to lock. Storage for those struct ttm_validate_buffers should
>>>> - * be provided in @tv_onstack, and is typically reserved on the stack
>>>> - * of the caller. If the size of @tv_onstack isn't sufficient, then
>>>> - * storage will be allocated internally using kvmalloc().
>>>> + * buffer objects on the vm external object list using helpers provided
>>>> + * by drm_exec.
>>>>     *
>>>>     * The function performs deadlock handling internally, and after a
>>>>     * successful return the ww locking transaction should be considered
>>>>     * sealed.
>>>>     *
>>>> - * Return: 0 on success, Negative error code on error. In particular if
>>>> - * @intr is set to true, -EINTR or -ERESTARTSYS may be returned. In case
>>>> - * of error, any locking performed has been reverted.
>>>> + * Return: 0 on success, Negative error code on error.
>>>>     */
>>>> -int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>>>> -			struct ttm_validate_buffer *tv_onstack,
>>>> -			struct ttm_validate_buffer **tv,
>>>> -			struct list_head *objs,
>>>> -			bool intr,
>>>> -			unsigned int num_shared)
>>>> -{
>>>> -	struct ttm_validate_buffer *tv_vm, *tv_bo;
>>>> +int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
>>>> +			bool intr, unsigned int num_shared)
>>>> +{
>>>>    	struct xe_vma *vma, *next;
>>>> -	LIST_HEAD(dups);
>>>> +	struct drm_gem_object *obj;
>>>>    	int err;
>>>>    	lockdep_assert_held(&vm->lock);
>>>> -	if (vm->extobj.entries < XE_ONSTACK_TV) {
>>>> -		tv_vm = tv_onstack;
>>>> -	} else {
>>>> -		tv_vm = kvmalloc_array(vm->extobj.entries + 1, sizeof(*tv_vm),
>>>> -				       GFP_KERNEL);
>>>> -		if (!tv_vm)
>>>> -			return -ENOMEM;
>>>> +	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
>>>> +	drm_exec_until_all_locked(exec) {
>>>> +		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm), num_shared);
>>>> +		drm_exec_retry_on_contention(exec);
>>>> +		if (unlikely(err) && err != -EALREADY)
>>>> +			goto out_err;
>>>> +		list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
>>>> +			obj = &xe_vma_bo(vma)->ttm.base;
>>>> +			err = drm_exec_prepare_obj(exec, obj, num_shared);
>>>> +			drm_exec_retry_on_contention(exec);
>>>> +			if (unlikely(err) && err != -EALREADY)
>>>> +				goto out_err;
>>>> +		}
>>>>    	}
>>>> -	tv_bo = tv_vm + 1;
>>>> -
>>>> -	INIT_LIST_HEAD(objs);
>>>> -	list_for_each_entry(vma, &vm->extobj.list, extobj.link) {
>>>> -		tv_bo->num_shared = num_shared;
>>>> -		tv_bo->bo = &xe_vma_bo(vma)->ttm;
>>>> -
>>>> -		list_add_tail(&tv_bo->head, objs);
>>>> -		tv_bo++;
>>>> -	}
>>>> -	tv_vm->num_shared = num_shared;
>>>> -	tv_vm->bo = xe_vm_ttm_bo(vm);
>>>> -	list_add_tail(&tv_vm->head, objs);
>>>> -	err = ttm_eu_reserve_buffers(ww, objs, intr, &dups);
>>>> -	if (err)
>>>> -		goto out_err;
>>>>    	spin_lock(&vm->notifier.list_lock);
>>>>    	list_for_each_entry_safe(vma, next, &vm->notifier.rebind_list,
>>>> @@ -470,14 +442,10 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>>>>    			list_move_tail(&vma->rebind_link, &vm->rebind_list);
>>>>    	}
>>>>    	spin_unlock(&vm->notifier.list_lock);
>>>> -
>>>> -	*tv = tv_vm;
>>>>    	return 0;
>>>>    out_err:
>>>> -	if (tv_vm != tv_onstack)
>>>> -		kvfree(tv_vm);
>>>> -
>>>> +	drm_exec_fini(exec);
>>>>    	return err;
>>>>    }
>>>> @@ -485,20 +453,16 @@ int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>>>>     * xe_vm_unlock_dma_resv() - Unlock reservation objects locked by
>>>>     * xe_vm_lock_dma_resv()
>>>>     * @vm: The vm.
>>>> - * @tv_onstack: The @tv_onstack array given to xe_vm_lock_dma_resv().
>>>> - * @tv: The value of *@tv given by xe_vm_lock_dma_resv().
>>>> - * @ww: The ww_acquire_context used for locking.
>>>> - * @objs: The list returned from xe_vm_lock_dma_resv().
>>>> + * @exec: The @drm_exec given to xe_vm_lock_dma_resv().
>>>>     *
>>>>     * Unlocks the reservation objects and frees any memory allocated by
>>>>     * xe_vm_lock_dma_resv().
>>>>     */
>>>> -void xe_vm_unlock_dma_resv(struct xe_vm *vm,
>>>> -			   struct ttm_validate_buffer *tv_onstack,
>>>> -			   struct ttm_validate_buffer *tv,
>>>> -			   struct ww_acquire_ctx *ww,
>>>> -			   struct list_head *objs)
>>>> +void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec)
>>>>    {
>>>> +	struct drm_gem_object *obj, *skip = xe_vm_gem(vm);
>>>> +	unsigned long index;
>>>> +
>>>>    	/*
>>>>    	 * Nothing should've been able to enter the list while we were locked,
>>>>    	 * since we've held the dma-resvs of all the vm's external objects,
>>>> @@ -507,9 +471,13 @@ void xe_vm_unlock_dma_resv(struct xe_vm *vm,
>>>>    	 */
>>>>    	XE_WARN_ON(!list_empty(&vm->notifier.rebind_list));
>>>> -	ttm_eu_backoff_reservation(ww, objs);
>>>> -	if (tv && tv != tv_onstack)
>>>> -		kvfree(tv);
>>>> +	drm_exec_for_each_locked_object(exec, index, obj) {
>>>> +		struct xe_bo *bo = gem_to_xe_bo(obj);
>>>> +
>>>> +		if (obj != skip)
>>>> +			ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
>>>> +	}
>>>> +	drm_exec_fini(exec);
>>>>    }
>>>>    #define XE_VM_REBIND_RETRY_TIMEOUT_MS 1000
>>>> @@ -536,10 +504,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
>>>>    {
>>>>    	struct xe_vm *vm = container_of(w, struct xe_vm, preempt.rebind_work);
>>>>    	struct xe_vma *vma;
>>>> -	struct ttm_validate_buffer tv_onstack[XE_ONSTACK_TV];
>>>> -	struct ttm_validate_buffer *tv;
>>>> -	struct ww_acquire_ctx ww;
>>>> -	struct list_head objs;
>>>> +	struct drm_exec exec;
>>>>    	struct dma_fence *rebind_fence;
>>>>    	unsigned int fence_count = 0;
>>>>    	LIST_HEAD(preempt_fences);
>>>> @@ -582,8 +547,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
>>>>    			goto out_unlock_outer;
>>>>    	}
>>>> -	err = xe_vm_lock_dma_resv(vm, &ww, tv_onstack, &tv, &objs,
>>>> -				  false, vm->preempt.num_engines);
>>>> +	err = xe_vm_lock_dma_resv(vm, &exec, false, vm->preempt.num_engines);
>>>>    	if (err)
>>>>    		goto out_unlock_outer;
>>>> @@ -662,7 +626,7 @@ static void preempt_rebind_work_func(struct work_struct *w)
>>>>    	up_read(&vm->userptr.notifier_lock);
>>>>    out_unlock:
>>>> -	xe_vm_unlock_dma_resv(vm, tv_onstack, tv, &ww, &objs);
>>>> +	xe_vm_unlock_dma_resv(vm, &exec);
>>>>    out_unlock_outer:
>>>>    	if (err == -EAGAIN) {
>>>>    		trace_xe_vm_rebind_worker_retry(vm);
>>>> @@ -1105,27 +1069,17 @@ static void xe_vma_destroy(struct xe_vma *vma, struct dma_fence *fence)
>>>>    static void xe_vma_destroy_unlocked(struct xe_vma *vma)
>>>>    {
>>>> -	struct ttm_validate_buffer tv[2];
>>>> -	struct ww_acquire_ctx ww;
>>>> +	struct xe_vm *vm = xe_vma_vm(vma);
>>>>    	struct xe_bo *bo = xe_vma_bo(vma);
>>>> -	LIST_HEAD(objs);
>>>> -	LIST_HEAD(dups);
>>>> +	struct drm_exec exec;
>>>>    	int err;
>>>> -	memset(tv, 0, sizeof(tv));
>>>> -	tv[0].bo = xe_vm_ttm_bo(xe_vma_vm(vma));
>>>> -	list_add(&tv[0].head, &objs);
>>>> -
>>>> -	if (bo) {
>>>> -		tv[1].bo = &xe_bo_get(bo)->ttm;
>>>> -		list_add(&tv[1].head, &objs);
>>>> -	}
>>>> -	err = ttm_eu_reserve_buffers(&ww, &objs, false, &dups);
>>>> +	err = xe_vm_bo_lock(vm, xe_bo_get(bo), &exec, 0, false);
>>>>    	XE_WARN_ON(err);
>>>>    	xe_vma_destroy(vma, NULL);
>>>> -	ttm_eu_backoff_reservation(&ww, &objs);
>>>> +	xe_vm_bo_unlock(vm, bo, &exec, false);
>>>>    	if (bo)
>>>>    		xe_bo_put(bo);
>>>>    }
>>>> @@ -2125,21 +2079,6 @@ static int xe_vm_prefetch(struct xe_vm *vm, struct xe_vma *vma,
>>>>    #define VM_BIND_OP(op)	(op & 0xffff)
>>>> -struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm)
>>>> -{
>>>> -	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
>>>> -		XE_VM_FLAG_GT_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 xe_vm_tv_populate(struct xe_vm *vm, struct ttm_validate_buffer *tv)
>>>> -{
>>>> -	tv->num_shared = 1;
>>>> -	tv->bo = xe_vm_ttm_bo(vm);
>>>> -}
>>>> -
>>>>    static void vm_set_async_error(struct xe_vm *vm, int err)
>>>>    {
>>>>    	lockdep_assert_held(&vm->lock);
>>>> @@ -2577,17 +2516,12 @@ static int xe_vma_op_commit(struct xe_vm *vm, struct xe_vma_op *op)
>>>>    static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
>>>>    			       struct xe_vma_op *op)
>>>>    {
>>>> -	LIST_HEAD(objs);
>>>> -	LIST_HEAD(dups);
>>>> -	struct ttm_validate_buffer tv_bo, tv_vm;
>>>> -	struct ww_acquire_ctx ww;
>>>>    	struct xe_bo *vbo;
>>>> +	struct drm_exec exec;
>>>>    	int err;
>>>>    	lockdep_assert_held_write(&vm->lock);
>>>> -	xe_vm_tv_populate(vm, &tv_vm);
>>>> -	list_add_tail(&tv_vm.head, &objs);
>>>>    	vbo = xe_vma_bo(vma);
>>>>    	if (vbo) {
>>>>    		/*
>>>> @@ -2596,16 +2530,10 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
>>>>    		 * take a reference here.
>>>>    		 */
>>>>    		xe_bo_get(vbo);
>>>> -
>>>> -		if (!vbo->vm) {
>>>> -			tv_bo.bo = &vbo->ttm;
>>>> -			tv_bo.num_shared = 1;
>>>> -			list_add(&tv_bo.head, &objs);
>>>> -		}
>>>>    	}
>>>>    again:
>>>> -	err = ttm_eu_reserve_buffers(&ww, &objs, true, &dups);
>>>> +	err = xe_vm_bo_lock(vm, vbo, &exec, 1, true);
>>>>    	if (err) {
>>>>    		xe_bo_put(vbo);
>>>>    		return err;
>>>> @@ -2687,7 +2615,7 @@ static int __xe_vma_op_execute(struct xe_vm *vm, struct xe_vma *vma,
>>>>    		XE_BUG_ON("NOT POSSIBLE");
>>>>    	}
>>>> -	ttm_eu_backoff_reservation(&ww, &objs);
>>>> +	xe_vm_bo_unlock(vm, vbo, &exec, false);
>>>>    	if (err == -EAGAIN && xe_vma_is_userptr(vma)) {
>>>>    		lockdep_assert_held_write(&vm->lock);
>>>>    		err = xe_vma_userptr_pin_pages(vma);
>>>> @@ -3338,24 +3266,47 @@ int xe_vm_bind_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
>>>>    	return err == -ENODATA ? 0 : err;
>>>>    }
>>>> +struct drm_gem_object *xe_vm_gem(struct xe_vm *vm)
>>>> +{
>>>> +	int idx = vm->flags & XE_VM_FLAG_MIGRATION ?
>>>> +		XE_VM_FLAG_GT_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.base;
>>>> +}
>>>> +
>>>>    /*
>>>> - * XXX: Using the TTM wrappers for now, likely can call into dma-resv code
>>>> - * directly to optimize. Also this likely should be an inline function.
>>>> + * XXX: This likely should be an inline function.
>>>>     */
>>>>    int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>>>>    	       int num_resv, bool intr)
>>>>    {
>>>> -	struct ttm_validate_buffer tv_vm;
>>>> -	LIST_HEAD(objs);
>>>> -	LIST_HEAD(dups);
>>>> +	struct dma_resv *obj;
>>>> +	int err;
>>>>    	XE_BUG_ON(!ww);
>>>> -	tv_vm.num_shared = num_resv;
>>>> -	tv_vm.bo = xe_vm_ttm_bo(vm);;
>>>> -	list_add_tail(&tv_vm.head, &objs);
>>>> +	obj = xe_vm_gem(vm)->resv;
>>>> +	ww_acquire_init(ww, &reservation_ww_class);
>>>> +
>>>> +	if (intr)
>>>> +		err = dma_resv_lock_interruptible(obj, ww);
>>>> +	else
>>>> +		err = dma_resv_lock(obj, ww);
>>>> +
>>>> +	if (unlikely(err))
>>>> +		return err;
>>>> +
>>>> +	num_resv = max(num_resv, 1);
>>> Same question as above here.
>>>
>>> Matt
>>>
>>>> +	err = dma_resv_reserve_fences(obj, num_resv);
>>>> +	if (err)
>>>> +		goto out_err;
>>>> -	return ttm_eu_reserve_buffers(ww, &objs, intr, &dups);
>>>> +	return 0;
>>>> +
>>>> +out_err:
>>>> +	dma_resv_unlock(&vm->resv);
>>>> +	return err;
>>>>    }
>>>>    void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
>>>> @@ -3364,6 +3315,43 @@ void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww)
>>>>    	ww_acquire_fini(ww);
>>>>    }
>>>> +int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
>>>> +		  int num_resv, bool intr)
>>>> +{
>>>> +	int err;
>>>> +
>>>> +	drm_exec_init(exec, intr ? DRM_EXEC_INTERRUPTIBLE_WAIT : 0);
>>>> +	drm_exec_until_all_locked(exec) {
>>>> +		err = drm_exec_prepare_obj(exec, xe_vm_gem(vm),
>>>> +					   num_resv);
>>>> +		drm_exec_retry_on_contention(exec);
>>>> +		if (err && err != -EALREADY)
>>>> +			goto out_err;
>>>> +
>>>> +		if (bo && !bo->vm) {
>>>> +			err = drm_exec_prepare_obj(exec, &bo->ttm.base,
>>>> +						   num_resv);
>>>> +			drm_exec_retry_on_contention(exec);
>>>> +			if (err && err != -EALREADY)
>>>> +				goto out_err;
>>>> +		}
>>>> +	}
>>>> +
>>>> +	return 0;
>>>> +
>>>> +out_err:
>>>> +	drm_exec_fini(exec);
>>>> +	return err;
>>>> +}
>>>> +
>>>> +void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
>>>> +		     bool lru_update)
>>>> +{
>>>> +	if (lru_update && bo && (!bo->vm || xe_vm_no_dma_fences(vm)))
>>>> +		ttm_bo_move_to_lru_tail_unlocked(&bo->ttm);
>>>> +	drm_exec_fini(exec);
>>>> +}
>>>> +
>>>>    /**
>>>>     * xe_vm_invalidate_vma - invalidate GPU mappings for VMA without a lock
>>>>     * @vma: VMA to invalidate
>>>> diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h
>>>> index eaf11ac8ff51..62a062bd5078 100644
>>>> --- a/drivers/gpu/drm/xe/xe_vm.h
>>>> +++ b/drivers/gpu/drm/xe/xe_vm.h
>>>> @@ -12,6 +12,7 @@
>>>>    #include "xe_vm_types.h"
>>>>    struct drm_device;
>>>> +struct drm_exec;
>>>>    struct drm_printer;
>>>>    struct drm_file;
>>>> @@ -39,11 +40,17 @@ static inline void xe_vm_put(struct xe_vm *vm)
>>>>    	kref_put(&vm->refcount, xe_vm_free);
>>>>    }
>>>> +struct drm_gem_object *xe_vm_gem(struct xe_vm *vm);
>>>> +
>>>>    int xe_vm_lock(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>>>>    	       int num_resv, bool intr);
>>>> -
>>>>    void xe_vm_unlock(struct xe_vm *vm, struct ww_acquire_ctx *ww);
>>>> +int xe_vm_bo_lock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
>>>> +		  int num_resv, bool intr);
>>>> +void xe_vm_bo_unlock(struct xe_vm *vm, struct xe_bo *bo, struct drm_exec *exec,
>>>> +		     bool lru_update);
>>>> +
>>>>    static inline bool xe_vm_is_closed(struct xe_vm *vm)
>>>>    {
>>>>    	/* Only guaranteed not to change when vm->lock is held */
>>>> @@ -183,8 +190,6 @@ int xe_vm_async_fence_wait_start(struct dma_fence *fence);
>>>>    extern struct ttm_device_funcs xe_ttm_funcs;
>>>> -struct ttm_buffer_object *xe_vm_ttm_bo(struct xe_vm *vm);
>>>> -
>>>>    /**
>>>>     * xe_vm_reactivate_rebind() - Reactivate the rebind functionality on compute
>>>>     * vms.
>>>> @@ -212,23 +217,10 @@ static inline void xe_vm_queue_rebind_worker(struct xe_vm *vm)
>>>>    	queue_work(vm->xe->ordered_wq, &vm->preempt.rebind_work);
>>>>    }
>>>> -/*
>>>> - * XE_ONSTACK_TV is used to size the tv_onstack array that is input
>>>> - * to xe_vm_lock_dma_resv() and xe_vm_unlock_dma_resv().
>>>> - */
>>>> -#define XE_ONSTACK_TV 20
>>>> -int xe_vm_lock_dma_resv(struct xe_vm *vm, struct ww_acquire_ctx *ww,
>>>> -			struct ttm_validate_buffer *tv_onstack,
>>>> -			struct ttm_validate_buffer **tv,
>>>> -			struct list_head *objs,
>>>> -			bool intr,
>>>> -			unsigned int num_shared);
>>>> -
>>>> -void xe_vm_unlock_dma_resv(struct xe_vm *vm,
>>>> -			   struct ttm_validate_buffer *tv_onstack,
>>>> -			   struct ttm_validate_buffer *tv,
>>>> -			   struct ww_acquire_ctx *ww,
>>>> -			   struct list_head *objs);
>>>> +int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec,
>>>> +			bool intr, unsigned int num_shared);
>>>> +
>>>> +void xe_vm_unlock_dma_resv(struct xe_vm *vm, struct drm_exec *exec);
>>>>    void xe_vm_fence_all_extobjs(struct xe_vm *vm, struct dma_fence *fence,
>>>>    			     enum dma_resv_usage usage);
>>>> -- 
>>>> 2.34.1
>>>>


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

end of thread, other threads:[~2023-07-14  6:45 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-13 13:17 [Intel-xe] [PATCH v2 0/2] drm/xe: switch to using drm_exec Francois Dugast
2023-07-13 13:17 ` [Intel-xe] [PATCH v2 1/2] drm: execution context for GEM buffers v7 Francois Dugast
2023-07-13 13:17 ` [Intel-xe] [PATCH v2 2/2] drm/xe: switch to using drm_exec Francois Dugast
2023-07-13 14:00   ` Matthew Brost
2023-07-13 14:17     ` Francois Dugast
2023-07-13 14:35     ` Christian König
2023-07-13 18:13       ` Matthew Brost
2023-07-14  6:44         ` Christian König
2023-07-13 14:18 ` [Intel-xe] ✓ CI.Patch_applied: success for " Patchwork
2023-07-13 14:19 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
2023-07-13 14:20 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
2023-07-13 14:24 ` [Intel-xe] ✓ CI.Build: " Patchwork
2023-07-13 14:24 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
2023-07-13 14:25 ` [Intel-xe] ✓ CI.checksparse: " 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.