All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe
@ 2023-07-04  9:51 Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 01/27] llist: Move llist_{head, node} definition to types.h Gwan-gyeong Mun
                   ` (33 more replies)
  0 siblings, 34 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

This is a series to test the detection of deadlock that can occur in drm-xe 
by applying DEPT implementation [1][2] for Linux 6.4.

This patch series is for checking the deadlock reported by dept when drm-xe
test cases are executed on the CI system, not for review.

[1] https://lore.kernel.org/dri-devel/20230703094752.79269-1-byungchul@sk.com/
[2] Message-ID: <20230703094752.79269-1-byungchul@sk.com>

Byungchul Park (25):
  llist: Move llist_{head,node} definition to types.h
  dept: Implement Dept(Dependency Tracker)
  dept: Add single event dependency tracker APIs
  dept: Add lock dependency tracker APIs
  dept: Tie to Lockdep and IRQ tracing
  dept: Add proc knobs to show stats and dependency graph
  dept: Apply sdt_might_sleep_{start,end}() to
    wait_for_completion()/complete()
  dept: Apply sdt_might_sleep_{start,end}() to PG_{locked,writeback}
    wait
  dept: Apply sdt_might_sleep_{start,end}() to swait
  dept: Apply sdt_might_sleep_{start,end}() to waitqueue wait
  dept: Apply sdt_might_sleep_{start,end}() to hashed-waitqueue wait
  dept: Distinguish each syscall context from another
  dept: Distinguish each work from another
  dept: Add a mechanism to refill the internal memory pools on running
    out
  locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread
  dept: Apply sdt_might_sleep_{start,end}() to dma fence wait
  dept: Track timeout waits separately with a new Kconfig
  dept: Apply timeout consideration to wait_for_completion()/complete()
  dept: Apply timeout consideration to swait
  dept: Apply timeout consideration to waitqueue wait
  dept: Apply timeout consideration to hashed-waitqueue wait
  dept: Apply timeout consideration to dma fence wait
  dept: Record the latest one out of consecutive waits of the same class
  dept: Make Dept able to work with an external wgen
  dept: Track the potential waits of PG_{locked,writeback}

Gwan-gyeong Mun (2):
  HAX: dept: Enable Dept by default
  HAX: dept: Increase DEPT_MAX_WAIT_HIST / DEPT_MAX_ECXT_HELD to track
    more

 arch/arm64/kernel/syscall.c         |    2 +
 arch/x86/entry/common.c             |    4 +
 drivers/dma-buf/dma-fence.c         |    5 +
 include/linux/completion.h          |   30 +-
 include/linux/dept.h                |  614 ++++++
 include/linux/dept_ldt.h            |   77 +
 include/linux/dept_sdt.h            |   66 +
 include/linux/hardirq.h             |    3 +
 include/linux/irqflags.h            |   22 +-
 include/linux/llist.h               |    8 -
 include/linux/local_lock_internal.h |    1 +
 include/linux/lockdep.h             |  102 +-
 include/linux/lockdep_types.h       |    3 +
 include/linux/mm_types.h            |    3 +
 include/linux/mutex.h               |    1 +
 include/linux/page-flags.h          |  112 +-
 include/linux/pagemap.h             |    7 +-
 include/linux/percpu-rwsem.h        |    2 +-
 include/linux/rtmutex.h             |    1 +
 include/linux/rwlock_types.h        |    1 +
 include/linux/rwsem.h               |    1 +
 include/linux/sched.h               |    3 +
 include/linux/seqlock.h             |    2 +-
 include/linux/spinlock_types_raw.h  |    3 +
 include/linux/srcu.h                |    2 +-
 include/linux/swait.h               |    3 +
 include/linux/types.h               |    8 +
 include/linux/wait.h                |    3 +
 include/linux/wait_bit.h            |    3 +
 init/init_task.c                    |    2 +
 init/main.c                         |    2 +
 kernel/Makefile                     |    1 +
 kernel/cpu.c                        |    2 +-
 kernel/dependency/Makefile          |    4 +
 kernel/dependency/dept.c            | 3167 +++++++++++++++++++++++++++
 kernel/dependency/dept_hash.h       |   10 +
 kernel/dependency/dept_internal.h   |   26 +
 kernel/dependency/dept_object.h     |   13 +
 kernel/dependency/dept_proc.c       |   93 +
 kernel/exit.c                       |    1 +
 kernel/fork.c                       |    2 +
 kernel/locking/lockdep.c            |   23 +
 kernel/module/main.c                |    4 +
 kernel/sched/completion.c           |    2 +-
 kernel/sched/core.c                 |    9 +
 kernel/workqueue.c                  |    3 +
 lib/Kconfig.debug                   |   37 +
 lib/locking-selftest.c              |    2 +
 mm/filemap.c                        |   18 +
 mm/mm_init.c                        |    3 +
 50 files changed, 4461 insertions(+), 55 deletions(-)
 create mode 100644 include/linux/dept.h
 create mode 100644 include/linux/dept_ldt.h
 create mode 100644 include/linux/dept_sdt.h
 create mode 100644 kernel/dependency/Makefile
 create mode 100644 kernel/dependency/dept.c
 create mode 100644 kernel/dependency/dept_hash.h
 create mode 100644 kernel/dependency/dept_internal.h
 create mode 100644 kernel/dependency/dept_object.h
 create mode 100644 kernel/dependency/dept_proc.c

-- 
2.40.0


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

* [Intel-xe] [CI 01/27] llist: Move llist_{head, node} definition to types.h
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 02/27] dept: Implement Dept(Dependency Tracker) Gwan-gyeong Mun
                   ` (32 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

llist_head and llist_node can be used by very primitives. For example,
Dept for tracking dependency uses llist things in its header. To avoid
header dependency, move those to types.h.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/llist.h | 8 --------
 include/linux/types.h | 8 ++++++++
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/include/linux/llist.h b/include/linux/llist.h
index 85bda2d02d65..99cc3c30f79c 100644
--- a/include/linux/llist.h
+++ b/include/linux/llist.h
@@ -53,14 +53,6 @@
 #include <linux/stddef.h>
 #include <linux/types.h>
 
-struct llist_head {
-	struct llist_node *first;
-};
-
-struct llist_node {
-	struct llist_node *next;
-};
-
 #define LLIST_HEAD_INIT(name)	{ NULL }
 #define LLIST_HEAD(name)	struct llist_head name = LLIST_HEAD_INIT(name)
 
diff --git a/include/linux/types.h b/include/linux/types.h
index 688fb943556a..0ddb0d722b3d 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -193,6 +193,14 @@ struct hlist_node {
 	struct hlist_node *next, **pprev;
 };
 
+struct llist_head {
+	struct llist_node *first;
+};
+
+struct llist_node {
+	struct llist_node *next;
+};
+
 struct ustat {
 	__kernel_daddr_t	f_tfree;
 #ifdef CONFIG_ARCH_32BIT_USTAT_F_TINODE
-- 
2.40.0


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

* [Intel-xe] [CI 02/27] dept: Implement Dept(Dependency Tracker)
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 01/27] llist: Move llist_{head, node} definition to types.h Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 03/27] dept: Add single event dependency tracker APIs Gwan-gyeong Mun
                   ` (31 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

CURRENT STATUS
--------------
Lockdep tracks acquisition order of locks in order to detect deadlock,
and IRQ and IRQ enable/disable state as well to take accident
acquisitions into account.

Lockdep should be turned off once it detects and reports a deadlock
since the data structure and algorithm are not reusable after detection
because of the complex design.

PROBLEM
-------
*Waits* and their *events* that never reach eventually cause deadlock.
However, Lockdep is only interested in lock acquisition order, forcing
to emulate lock acqusition even for just waits and events that have
nothing to do with real lock.

Even worse, no one likes Lockdep's false positive detection because that
prevents further one that might be more valuable. That's why all the
kernel developers are sensitive to Lockdep's false positive.

Besides those, by tracking acquisition order, it cannot correctly deal
with read lock and cross-event e.g. wait_for_completion()/complete() for
deadlock detection. Lockdep is no longer a good tool for that purpose.

SOLUTION
--------
Again, *waits* and their *events* that never reach eventually cause
deadlock. The new solution, Dept(DEPendency Tracker), focuses on waits
and events themselves. Dept tracks waits and events and report it if
any event would be never reachable.

Dept does:
   . Works with read lock in the right way.
   . Works with any wait and event e.i. cross-event.
   . Continue to work even after reporting multiple times.
   . Provides simple and intuitive APIs.
   . Does exactly what dependency checker should do.

Q & A
-----
Q. Is this the first try ever to address the problem?
A. No. Cross-release feature (b09be676e0ff2 locking/lockdep: Implement
   the 'crossrelease' feature) addressed it 2 years ago that was a
   Lockdep extension and merged but reverted shortly because:

   Cross-release started to report valuable hidden problems but started
   to give report false positive reports as well. For sure, no one
   likes Lockdep's false positive reports since it makes Lockdep stop,
   preventing reporting further real problems.

Q. Why not Dept was developed as an extension of Lockdep?
A. Lockdep definitely includes all the efforts great developers have
   made for a long time so as to be quite stable enough. But I had to
   design and implement newly because of the following:

   1) Lockdep was designed to track lock acquisition order. The APIs and
      implementation do not fit on wait-event model.
   2) Lockdep is turned off on detection including false positive. Which
      is terrible and prevents developing any extension for stronger
      detection.

Q. Do you intend to totally replace Lockdep?
A. No. Lockdep also checks if lock usage is correct. Of course, the
   dependency check routine should be replaced but the other functions
   should be still there.

Q. Do you mean the dependency check routine should be replaced right
   away?
A. No. I admit Lockdep is stable enough thanks to great efforts kernel
   developers have made. Lockdep and Dept, both should be in the kernel
   until Dept gets considered stable.

Q. Stronger detection capability would give more false positive report.
   Which was a big problem when cross-release was introduced. Is it ok
   with Dept?
A. It's ok. Dept allows multiple reporting thanks to simple and quite
   generalized design. Of course, false positive reports should be fixed
   anyway but it's no longer as a critical problem as it was.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/dept.h            |  577 ++++++
 include/linux/hardirq.h         |    3 +
 include/linux/sched.h           |    3 +
 init/init_task.c                |    2 +
 init/main.c                     |    2 +
 kernel/Makefile                 |    1 +
 kernel/dependency/Makefile      |    3 +
 kernel/dependency/dept.c        | 3009 +++++++++++++++++++++++++++++++
 kernel/dependency/dept_hash.h   |   10 +
 kernel/dependency/dept_object.h |   13 +
 kernel/exit.c                   |    1 +
 kernel/fork.c                   |    2 +
 kernel/module/main.c            |    4 +
 kernel/sched/core.c             |    9 +
 lib/Kconfig.debug               |   27 +
 lib/locking-selftest.c          |    2 +
 16 files changed, 3668 insertions(+)
 create mode 100644 include/linux/dept.h
 create mode 100644 kernel/dependency/Makefile
 create mode 100644 kernel/dependency/dept.c
 create mode 100644 kernel/dependency/dept_hash.h
 create mode 100644 kernel/dependency/dept_object.h

diff --git a/include/linux/dept.h b/include/linux/dept.h
new file mode 100644
index 000000000000..b6d45b4b1fd6
--- /dev/null
+++ b/include/linux/dept.h
@@ -0,0 +1,577 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * DEPT(DEPendency Tracker) - runtime dependency tracker
+ *
+ * Started by Byungchul Park <max.byungchul.park@gmail.com>:
+ *
+ *  Copyright (c) 2020 LG Electronics, Inc., Byungchul Park
+ */
+
+#ifndef __LINUX_DEPT_H
+#define __LINUX_DEPT_H
+
+#ifdef CONFIG_DEPT
+
+#include <linux/types.h>
+
+struct task_struct;
+
+#define DEPT_MAX_STACK_ENTRY		16
+#define DEPT_MAX_WAIT_HIST		64
+#define DEPT_MAX_ECXT_HELD		48
+
+#define DEPT_MAX_SUBCLASSES		16
+#define DEPT_MAX_SUBCLASSES_EVT		2
+#define DEPT_MAX_SUBCLASSES_USR		(DEPT_MAX_SUBCLASSES / DEPT_MAX_SUBCLASSES_EVT)
+#define DEPT_MAX_SUBCLASSES_CACHE	2
+
+#define DEPT_SIRQ			0
+#define DEPT_HIRQ			1
+#define DEPT_IRQS_NR			2
+#define DEPT_SIRQF			(1UL << DEPT_SIRQ)
+#define DEPT_HIRQF			(1UL << DEPT_HIRQ)
+
+struct dept_ecxt;
+struct dept_iecxt {
+	struct dept_ecxt		*ecxt;
+	int				enirq;
+	/*
+	 * for preventing to add a new ecxt
+	 */
+	bool				staled;
+};
+
+struct dept_wait;
+struct dept_iwait {
+	struct dept_wait		*wait;
+	int				irq;
+	/*
+	 * for preventing to add a new wait
+	 */
+	bool				staled;
+	bool				touched;
+};
+
+struct dept_class {
+	union {
+		struct llist_node	pool_node;
+		struct {
+			/*
+			 * reference counter for object management
+			 */
+			atomic_t	ref;
+
+			/*
+			 * unique information about the class
+			 */
+			const char	*name;
+			unsigned long	key;
+			int		sub_id;
+
+			/*
+			 * for BFS
+			 */
+			unsigned int	bfs_gen;
+			int		bfs_dist;
+			struct dept_class *bfs_parent;
+
+			/*
+			 * for hashing this object
+			 */
+			struct hlist_node hash_node;
+
+			/*
+			 * for linking all classes
+			 */
+			struct list_head all_node;
+
+			/*
+			 * for associating its dependencies
+			 */
+			struct list_head dep_head;
+			struct list_head dep_rev_head;
+
+			/*
+			 * for tracking IRQ dependencies
+			 */
+			struct dept_iecxt iecxt[DEPT_IRQS_NR];
+			struct dept_iwait iwait[DEPT_IRQS_NR];
+
+			/*
+			 * classified by a map embedded in task_struct,
+			 * not an explicit map
+			 */
+			bool		sched_map;
+		};
+	};
+};
+
+struct dept_key {
+	union {
+		/*
+		 * Each byte-wise address will be used as its key.
+		 */
+		char			base[DEPT_MAX_SUBCLASSES];
+
+		/*
+		 * for caching the main class pointer
+		 */
+		struct dept_class	*classes[DEPT_MAX_SUBCLASSES_CACHE];
+	};
+};
+
+struct dept_map {
+	const char			*name;
+	struct dept_key			*keys;
+
+	/*
+	 * subclass that can be set from user
+	 */
+	int				sub_u;
+
+	/*
+	 * It's local copy for fast access to the associated classes.
+	 * Also used for dept_key for static maps.
+	 */
+	struct dept_key			map_key;
+
+	/*
+	 * wait timestamp associated to this map
+	 */
+	unsigned int			wgen;
+
+	/*
+	 * whether this map should be going to be checked or not
+	 */
+	bool				nocheck;
+};
+
+#define DEPT_MAP_INITIALIZER(n, k)					\
+{									\
+	.name = #n,							\
+	.keys = (struct dept_key *)(k),					\
+	.sub_u = 0,							\
+	.map_key = { .classes = { NULL, } },				\
+	.wgen = 0U,							\
+	.nocheck = false,						\
+}
+
+struct dept_stack {
+	union {
+		struct llist_node	pool_node;
+		struct {
+			/*
+			 * reference counter for object management
+			 */
+			atomic_t	ref;
+
+			/*
+			 * backtrace entries
+			 */
+			unsigned long	raw[DEPT_MAX_STACK_ENTRY];
+			int nr;
+		};
+	};
+};
+
+struct dept_ecxt {
+	union {
+		struct llist_node	pool_node;
+		struct {
+			/*
+			 * reference counter for object management
+			 */
+			atomic_t	ref;
+
+			/*
+			 * function that entered to this ecxt
+			 */
+			const char	*ecxt_fn;
+
+			/*
+			 * event function
+			 */
+			const char	*event_fn;
+
+			/*
+			 * associated class
+			 */
+			struct dept_class *class;
+
+			/*
+			 * flag indicating which IRQ has been
+			 * enabled within the event context
+			 */
+			unsigned long	enirqf;
+
+			/*
+			 * where the IRQ-enabled happened
+			 */
+			unsigned long	enirq_ip[DEPT_IRQS_NR];
+			struct dept_stack *enirq_stack[DEPT_IRQS_NR];
+
+			/*
+			 * where the event context started
+			 */
+			unsigned long	ecxt_ip;
+			struct dept_stack *ecxt_stack;
+
+			/*
+			 * where the event triggered
+			 */
+			unsigned long	event_ip;
+			struct dept_stack *event_stack;
+		};
+	};
+};
+
+struct dept_wait {
+	union {
+		struct llist_node	pool_node;
+		struct {
+			/*
+			 * reference counter for object management
+			 */
+			atomic_t	ref;
+
+			/*
+			 * function causing this wait
+			 */
+			const char	*wait_fn;
+
+			/*
+			 * the associated class
+			 */
+			struct dept_class *class;
+
+			/*
+			 * which IRQ the wait was placed in
+			 */
+			unsigned long	irqf;
+
+			/*
+			 * where the IRQ wait happened
+			 */
+			unsigned long	irq_ip[DEPT_IRQS_NR];
+			struct dept_stack *irq_stack[DEPT_IRQS_NR];
+
+			/*
+			 * where the wait happened
+			 */
+			unsigned long	wait_ip;
+			struct dept_stack *wait_stack;
+
+			/*
+			 * whether this wait is for commit in scheduler
+			 */
+			bool		sched_sleep;
+		};
+	};
+};
+
+struct dept_dep {
+	union {
+		struct llist_node	pool_node;
+		struct {
+			/*
+			 * reference counter for object management
+			 */
+			atomic_t	ref;
+
+			/*
+			 * key data of dependency
+			 */
+			struct dept_ecxt *ecxt;
+			struct dept_wait *wait;
+
+			/*
+			 * This object can be referred without dept_lock
+			 * held but with IRQ disabled, e.g. for hash
+			 * lookup. So deferred deletion is needed.
+			 */
+			struct rcu_head rh;
+
+			/*
+			 * for BFS
+			 */
+			struct list_head bfs_node;
+
+			/*
+			 * for hashing this object
+			 */
+			struct hlist_node hash_node;
+
+			/*
+			 * for linking to a class object
+			 */
+			struct list_head dep_node;
+			struct list_head dep_rev_node;
+		};
+	};
+};
+
+struct dept_hash {
+	/*
+	 * hash table
+	 */
+	struct hlist_head		*table;
+
+	/*
+	 * size of the table e.i. 2^bits
+	 */
+	int				bits;
+};
+
+struct dept_pool {
+	const char			*name;
+
+	/*
+	 * object size
+	 */
+	size_t				obj_sz;
+
+	/*
+	 * the number of the static array
+	 */
+	atomic_t			obj_nr;
+
+	/*
+	 * offset of ->pool_node
+	 */
+	size_t				node_off;
+
+	/*
+	 * pointer to the pool
+	 */
+	void				*spool;
+	struct llist_head		boot_pool;
+	struct llist_head __percpu	*lpool;
+};
+
+struct dept_ecxt_held {
+	/*
+	 * associated event context
+	 */
+	struct dept_ecxt		*ecxt;
+
+	/*
+	 * unique key for this dept_ecxt_held
+	 */
+	struct dept_map			*map;
+
+	/*
+	 * class of the ecxt of this dept_ecxt_held
+	 */
+	struct dept_class		*class;
+
+	/*
+	 * the wgen when the event context started
+	 */
+	unsigned int			wgen;
+
+	/*
+	 * subclass that only works in the local context
+	 */
+	int				sub_l;
+};
+
+struct dept_wait_hist {
+	/*
+	 * associated wait
+	 */
+	struct dept_wait		*wait;
+
+	/*
+	 * unique id of all waits system-wise until wrapped
+	 */
+	unsigned int			wgen;
+
+	/*
+	 * local context id to identify IRQ context
+	 */
+	unsigned int			ctxt_id;
+};
+
+struct dept_task {
+	/*
+	 * all event contexts that have entered and before exiting
+	 */
+	struct dept_ecxt_held		ecxt_held[DEPT_MAX_ECXT_HELD];
+	int				ecxt_held_pos;
+
+	/*
+	 * ring buffer holding all waits that have happened
+	 */
+	struct dept_wait_hist		wait_hist[DEPT_MAX_WAIT_HIST];
+	int				wait_hist_pos;
+
+	/*
+	 * sequential id to identify each IRQ context
+	 */
+	unsigned int			irq_id[DEPT_IRQS_NR];
+
+	/*
+	 * for tracking IRQ-enabled points with cross-event
+	 */
+	unsigned int			wgen_enirq[DEPT_IRQS_NR];
+
+	/*
+	 * for keeping up-to-date IRQ-enabled points
+	 */
+	unsigned long			enirq_ip[DEPT_IRQS_NR];
+
+	/*
+	 * current effective IRQ-enabled flag
+	 */
+	unsigned long			eff_enirqf;
+
+	/*
+	 * for reserving a current stack instance at each operation
+	 */
+	struct dept_stack		*stack;
+
+	/*
+	 * for preventing recursive call into DEPT engine
+	 */
+	int				recursive;
+
+	/*
+	 * for staging data to commit a wait
+	 */
+	struct dept_map			stage_m;
+	bool				stage_sched_map;
+	const char			*stage_w_fn;
+	unsigned long			stage_ip;
+
+	/*
+	 * the number of missing ecxts
+	 */
+	int				missing_ecxt;
+
+	/*
+	 * for tracking IRQ-enable state
+	 */
+	bool				hardirqs_enabled;
+	bool				softirqs_enabled;
+
+	/*
+	 * whether the current is on do_exit()
+	 */
+	bool				task_exit;
+
+	/*
+	 * whether the current is running __schedule()
+	 */
+	bool				in_sched;
+};
+
+#define DEPT_TASK_INITIALIZER(t)				\
+{								\
+	.wait_hist = { { .wait = NULL, } },			\
+	.ecxt_held_pos = 0,					\
+	.wait_hist_pos = 0,					\
+	.irq_id = { 0U },					\
+	.wgen_enirq = { 0U },					\
+	.enirq_ip = { 0UL },					\
+	.eff_enirqf = 0UL,					\
+	.stack = NULL,						\
+	.recursive = 0,						\
+	.stage_m = DEPT_MAP_INITIALIZER((t)->stage_m, NULL),	\
+	.stage_sched_map = false,				\
+	.stage_w_fn = NULL,					\
+	.stage_ip = 0UL,					\
+	.missing_ecxt = 0,					\
+	.hardirqs_enabled = false,				\
+	.softirqs_enabled = false,				\
+	.task_exit = false,					\
+	.in_sched = false,					\
+}
+
+extern void dept_on(void);
+extern void dept_off(void);
+extern void dept_init(void);
+extern void dept_task_init(struct task_struct *t);
+extern void dept_task_exit(struct task_struct *t);
+extern void dept_free_range(void *start, unsigned int sz);
+extern void dept_map_init(struct dept_map *m, struct dept_key *k, int sub_u, const char *n);
+extern void dept_map_reinit(struct dept_map *m, struct dept_key *k, int sub_u, const char *n);
+extern void dept_map_copy(struct dept_map *to, struct dept_map *from);
+
+extern void dept_wait(struct dept_map *m, unsigned long w_f, unsigned long ip, const char *w_fn, int sub_l);
+extern void dept_stage_wait(struct dept_map *m, struct dept_key *k, unsigned long ip, const char *w_fn);
+extern void dept_request_event_wait_commit(void);
+extern void dept_clean_stage(void);
+extern void dept_stage_event(struct task_struct *t, unsigned long ip);
+extern void dept_ecxt_enter(struct dept_map *m, unsigned long e_f, unsigned long ip, const char *c_fn, const char *e_fn, int sub_l);
+extern bool dept_ecxt_holding(struct dept_map *m, unsigned long e_f);
+extern void dept_request_event(struct dept_map *m);
+extern void dept_event(struct dept_map *m, unsigned long e_f, unsigned long ip, const char *e_fn);
+extern void dept_ecxt_exit(struct dept_map *m, unsigned long e_f, unsigned long ip);
+extern void dept_sched_enter(void);
+extern void dept_sched_exit(void);
+
+static inline void dept_ecxt_enter_nokeep(struct dept_map *m)
+{
+	dept_ecxt_enter(m, 0UL, 0UL, NULL, NULL, 0);
+}
+
+/*
+ * for users who want to manage external keys
+ */
+extern void dept_key_init(struct dept_key *k);
+extern void dept_key_destroy(struct dept_key *k);
+extern void dept_map_ecxt_modify(struct dept_map *m, unsigned long e_f, struct dept_key *new_k, unsigned long new_e_f, unsigned long new_ip, const char *new_c_fn, const char *new_e_fn, int new_sub_l);
+
+extern void dept_softirq_enter(void);
+extern void dept_hardirq_enter(void);
+extern void dept_softirqs_on_ip(unsigned long ip);
+extern void dept_hardirqs_on(void);
+extern void dept_hardirqs_on_ip(unsigned long ip);
+extern void dept_softirqs_off_ip(unsigned long ip);
+extern void dept_hardirqs_off(void);
+extern void dept_hardirqs_off_ip(unsigned long ip);
+#else /* !CONFIG_DEPT */
+struct dept_key  { };
+struct dept_map  { };
+struct dept_task { };
+
+#define DEPT_MAP_INITIALIZER(n, k) { }
+#define DEPT_TASK_INITIALIZER(t)   { }
+
+#define dept_on()					do { } while (0)
+#define dept_off()					do { } while (0)
+#define dept_init()					do { } while (0)
+#define dept_task_init(t)				do { } while (0)
+#define dept_task_exit(t)				do { } while (0)
+#define dept_free_range(s, sz)				do { } while (0)
+#define dept_map_init(m, k, su, n)			do { (void)(n); (void)(k); } while (0)
+#define dept_map_reinit(m, k, su, n)			do { (void)(n); (void)(k); } while (0)
+#define dept_map_copy(t, f)				do { } while (0)
+
+#define dept_wait(m, w_f, ip, w_fn, sl)			do { (void)(w_fn); } while (0)
+#define dept_stage_wait(m, k, ip, w_fn)			do { (void)(k); (void)(w_fn); } while (0)
+#define dept_request_event_wait_commit()		do { } while (0)
+#define dept_clean_stage()				do { } while (0)
+#define dept_stage_event(t, ip)				do { } while (0)
+#define dept_ecxt_enter(m, e_f, ip, c_fn, e_fn, sl)	do { (void)(c_fn); (void)(e_fn); } while (0)
+#define dept_ecxt_holding(m, e_f)			false
+#define dept_request_event(m)				do { } while (0)
+#define dept_event(m, e_f, ip, e_fn)			do { (void)(e_fn); } while (0)
+#define dept_ecxt_exit(m, e_f, ip)			do { } while (0)
+#define dept_sched_enter()				do { } while (0)
+#define dept_sched_exit()				do { } while (0)
+#define dept_ecxt_enter_nokeep(m)			do { } while (0)
+#define dept_key_init(k)				do { (void)(k); } while (0)
+#define dept_key_destroy(k)				do { (void)(k); } while (0)
+#define dept_map_ecxt_modify(m, e_f, n_k, n_e_f, n_ip, n_c_fn, n_e_fn, n_sl) do { (void)(n_k); (void)(n_c_fn); (void)(n_e_fn); } while (0)
+
+#define dept_softirq_enter()				do { } while (0)
+#define dept_hardirq_enter()				do { } while (0)
+#define dept_softirqs_on_ip(ip)				do { } while (0)
+#define dept_hardirqs_on()				do { } while (0)
+#define dept_hardirqs_on_ip(ip)				do { } while (0)
+#define dept_softirqs_off_ip(ip)			do { } while (0)
+#define dept_hardirqs_off()				do { } while (0)
+#define dept_hardirqs_off_ip(ip)			do { } while (0)
+#endif
+#endif /* __LINUX_DEPT_H */
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h
index d57cab4d4c06..bb279dbbe748 100644
--- a/include/linux/hardirq.h
+++ b/include/linux/hardirq.h
@@ -5,6 +5,7 @@
 #include <linux/context_tracking_state.h>
 #include <linux/preempt.h>
 #include <linux/lockdep.h>
+#include <linux/dept.h>
 #include <linux/ftrace_irq.h>
 #include <linux/sched.h>
 #include <linux/vtime.h>
@@ -106,6 +107,7 @@ void irq_exit_rcu(void);
  */
 #define __nmi_enter()						\
 	do {							\
+		dept_off();					\
 		lockdep_off();					\
 		arch_nmi_enter();				\
 		BUG_ON(in_nmi() == NMI_MASK);			\
@@ -128,6 +130,7 @@ void irq_exit_rcu(void);
 		__preempt_count_sub(NMI_OFFSET + HARDIRQ_OFFSET);	\
 		arch_nmi_exit();				\
 		lockdep_on();					\
+		dept_on();					\
 	} while (0)
 
 #define nmi_exit()						\
diff --git a/include/linux/sched.h b/include/linux/sched.h
index eed5d65b8d1f..bb8f8e00b9ed 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -38,6 +38,7 @@
 #include <linux/rv.h>
 #include <linux/livepatch_sched.h>
 #include <asm/kmap_size.h>
+#include <linux/dept.h>
 
 /* task_struct member predeclarations (sorted alphabetically): */
 struct audit_context;
@@ -1170,6 +1171,8 @@ struct task_struct {
 	struct held_lock		held_locks[MAX_LOCK_DEPTH];
 #endif
 
+	struct dept_task		dept_task;
+
 #if defined(CONFIG_UBSAN) && !defined(CONFIG_UBSAN_TRAP)
 	unsigned int			in_ubsan;
 #endif
diff --git a/init/init_task.c b/init/init_task.c
index ff6c4b9bfe6b..eb36ad68c912 100644
--- a/init/init_task.c
+++ b/init/init_task.c
@@ -12,6 +12,7 @@
 #include <linux/audit.h>
 #include <linux/numa.h>
 #include <linux/scs.h>
+#include <linux/dept.h>
 
 #include <linux/uaccess.h>
 
@@ -194,6 +195,7 @@ struct task_struct init_task
 	.curr_chain_key = INITIAL_CHAIN_KEY,
 	.lockdep_recursion = 0,
 #endif
+	.dept_task = DEPT_TASK_INITIALIZER(init_task),
 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
 	.ret_stack		= NULL,
 	.tracing_graph_pause	= ATOMIC_INIT(0),
diff --git a/init/main.c b/init/main.c
index af50044deed5..107e83a77cf4 100644
--- a/init/main.c
+++ b/init/main.c
@@ -65,6 +65,7 @@
 #include <linux/debug_locks.h>
 #include <linux/debugobjects.h>
 #include <linux/lockdep.h>
+#include <linux/dept.h>
 #include <linux/kmemleak.h>
 #include <linux/padata.h>
 #include <linux/pid_namespace.h>
@@ -1017,6 +1018,7 @@ asmlinkage __visible void __init __no_sanitize_address __noreturn start_kernel(v
 		      panic_param);
 
 	lockdep_init();
+	dept_init();
 
 	/*
 	 * Need to run this when irqs are enabled, because it wants
diff --git a/kernel/Makefile b/kernel/Makefile
index b69c95315480..871f3c618492 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -51,6 +51,7 @@ obj-y += livepatch/
 obj-y += dma/
 obj-y += entry/
 obj-$(CONFIG_MODULES) += module/
+obj-y += dependency/
 
 obj-$(CONFIG_KCMP) += kcmp.o
 obj-$(CONFIG_FREEZER) += freezer.o
diff --git a/kernel/dependency/Makefile b/kernel/dependency/Makefile
new file mode 100644
index 000000000000..b5cfb8a03c0c
--- /dev/null
+++ b/kernel/dependency/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_DEPT) += dept.o
diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c
new file mode 100644
index 000000000000..8ec638254e5f
--- /dev/null
+++ b/kernel/dependency/dept.c
@@ -0,0 +1,3009 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * DEPT(DEPendency Tracker) - Runtime dependency tracker
+ *
+ * Started by Byungchul Park <max.byungchul.park@gmail.com>:
+ *
+ *  Copyright (c) 2020 LG Electronics, Inc., Byungchul Park
+ *
+ * DEPT provides a general way to detect deadlock possibility in runtime
+ * and the interest is not limited to typical lock but to every
+ * syncronization primitives.
+ *
+ * The following ideas were borrowed from LOCKDEP:
+ *
+ *    1) Use a graph to track relationship between classes.
+ *    2) Prevent performance regression using hash.
+ *
+ * The following items were enhanced from LOCKDEP:
+ *
+ *    1) Cover more deadlock cases.
+ *    2) Allow muliple reports.
+ *
+ * TODO: Both LOCKDEP and DEPT should co-exist until DEPT is considered
+ * stable. Then the dependency check routine should be replaced with
+ * DEPT after. It should finally look like:
+ *
+ *
+ *
+ * As is:
+ *
+ *    LOCKDEP
+ *    +-----------------------------------------+
+ *    | Lock usage correctness check            | <-> locks
+ *    |                                         |
+ *    |                                         |
+ *    | +-------------------------------------+ |
+ *    | | Dependency check                    | |
+ *    | | (by tracking lock acquisition order)| |
+ *    | +-------------------------------------+ |
+ *    |                                         |
+ *    +-----------------------------------------+
+ *
+ *    DEPT
+ *    +-----------------------------------------+
+ *    | Dependency check                        | <-> waits/events
+ *    | (by tracking wait and event context)    |
+ *    +-----------------------------------------+
+ *
+ *
+ *
+ * To be:
+ *
+ *    LOCKDEP
+ *    +-----------------------------------------+
+ *    | Lock usage correctness check            | <-> locks
+ *    |                                         |
+ *    |                                         |
+ *    |       (Request dependency check)        |
+ *    |                    T                    |
+ *    +--------------------|--------------------+
+ *                         |
+ *    DEPT                 V
+ *    +-----------------------------------------+
+ *    | Dependency check                        | <-> waits/events
+ *    | (by tracking wait and event context)    |
+ *    +-----------------------------------------+
+ */
+
+#include <linux/sched.h>
+#include <linux/stacktrace.h>
+#include <linux/spinlock.h>
+#include <linux/kallsyms.h>
+#include <linux/hash.h>
+#include <linux/dept.h>
+#include <linux/utsname.h>
+#include <linux/kernel.h>
+
+static int dept_stop;
+static int dept_per_cpu_ready;
+
+#define DEPT_READY_WARN (!oops_in_progress)
+
+/*
+ * Make all operations using DEPT_WARN_ON() fail on oops_in_progress and
+ * prevent warning message.
+ */
+#define DEPT_WARN_ON_ONCE(c)						\
+	({								\
+		int __ret = 0;						\
+									\
+		if (likely(DEPT_READY_WARN))				\
+			__ret = WARN_ONCE(c, "DEPT_WARN_ON_ONCE: " #c);	\
+		__ret;							\
+	})
+
+#define DEPT_WARN_ONCE(s...)						\
+	({								\
+		if (likely(DEPT_READY_WARN))				\
+			WARN_ONCE(1, "DEPT_WARN_ONCE: " s);		\
+	})
+
+#define DEPT_WARN_ON(c)							\
+	({								\
+		int __ret = 0;						\
+									\
+		if (likely(DEPT_READY_WARN))				\
+			__ret = WARN(c, "DEPT_WARN_ON: " #c);		\
+		__ret;							\
+	})
+
+#define DEPT_WARN(s...)							\
+	({								\
+		if (likely(DEPT_READY_WARN))				\
+			WARN(1, "DEPT_WARN: " s);			\
+	})
+
+#define DEPT_STOP(s...)							\
+	({								\
+		WRITE_ONCE(dept_stop, 1);				\
+		if (likely(DEPT_READY_WARN))				\
+			WARN(1, "DEPT_STOP: " s);			\
+	})
+
+#define DEPT_INFO_ONCE(s...) pr_warn_once("DEPT_INFO_ONCE: " s)
+
+static arch_spinlock_t dept_spin = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
+static arch_spinlock_t stage_spin = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
+
+/*
+ * DEPT internal engine should be careful in using outside functions
+ * e.g. printk at reporting since that kind of usage might cause
+ * untrackable deadlock.
+ */
+static atomic_t dept_outworld = ATOMIC_INIT(0);
+
+static inline void dept_outworld_enter(void)
+{
+	atomic_inc(&dept_outworld);
+}
+
+static inline void dept_outworld_exit(void)
+{
+	atomic_dec(&dept_outworld);
+}
+
+static inline bool dept_outworld_entered(void)
+{
+	return atomic_read(&dept_outworld);
+}
+
+static inline bool dept_lock(void)
+{
+	while (!arch_spin_trylock(&dept_spin))
+		if (unlikely(dept_outworld_entered()))
+			return false;
+	return true;
+}
+
+static inline void dept_unlock(void)
+{
+	arch_spin_unlock(&dept_spin);
+}
+
+/*
+ * whether to stack-trace on every wait or every ecxt
+ */
+static bool rich_stack = true;
+
+enum bfs_ret {
+	BFS_CONTINUE,
+	BFS_CONTINUE_REV,
+	BFS_DONE,
+	BFS_SKIP,
+};
+
+static inline bool after(unsigned int a, unsigned int b)
+{
+	return (int)(b - a) < 0;
+}
+
+static inline bool before(unsigned int a, unsigned int b)
+{
+	return (int)(a - b) < 0;
+}
+
+static inline bool valid_stack(struct dept_stack *s)
+{
+	return s && s->nr > 0;
+}
+
+static inline bool valid_class(struct dept_class *c)
+{
+	return c->key;
+}
+
+static inline void invalidate_class(struct dept_class *c)
+{
+	c->key = 0UL;
+}
+
+static inline struct dept_ecxt *dep_e(struct dept_dep *d)
+{
+	return d->ecxt;
+}
+
+static inline struct dept_wait *dep_w(struct dept_dep *d)
+{
+	return d->wait;
+}
+
+static inline struct dept_class *dep_fc(struct dept_dep *d)
+{
+	return dep_e(d)->class;
+}
+
+static inline struct dept_class *dep_tc(struct dept_dep *d)
+{
+	return dep_w(d)->class;
+}
+
+static inline const char *irq_str(int irq)
+{
+	if (irq == DEPT_SIRQ)
+		return "softirq";
+	if (irq == DEPT_HIRQ)
+		return "hardirq";
+	return "(unknown)";
+}
+
+static inline struct dept_task *dept_task(void)
+{
+	return &current->dept_task;
+}
+
+/*
+ * Dept doesn't work either when it's stopped by DEPT_STOP() or in a nmi
+ * context.
+ */
+static inline bool dept_working(void)
+{
+	return !READ_ONCE(dept_stop) && !in_nmi();
+}
+
+/*
+ * Even k == NULL is considered as a valid key because it would use
+ * &->map_key as the key in that case.
+ */
+struct dept_key __dept_no_validate__;
+static inline bool valid_key(struct dept_key *k)
+{
+	return &__dept_no_validate__ != k;
+}
+
+/*
+ * Pool
+ * =====================================================================
+ * DEPT maintains pools to provide objects in a safe way.
+ *
+ *    1) Static pool is used at the beginning of booting time.
+ *    2) Local pool is tried first before the static pool. Objects that
+ *       have been freed will be placed.
+ */
+
+enum object_t {
+#define OBJECT(id, nr) OBJECT_##id,
+	#include "dept_object.h"
+#undef  OBJECT
+	OBJECT_NR,
+};
+
+#define OBJECT(id, nr)							\
+static struct dept_##id spool_##id[nr];					\
+static DEFINE_PER_CPU(struct llist_head, lpool_##id);
+	#include "dept_object.h"
+#undef  OBJECT
+
+static struct dept_pool pool[OBJECT_NR] = {
+#define OBJECT(id, nr) {						\
+	.name = #id,							\
+	.obj_sz = sizeof(struct dept_##id),				\
+	.obj_nr = ATOMIC_INIT(nr),					\
+	.node_off = offsetof(struct dept_##id, pool_node),		\
+	.spool = spool_##id,						\
+	.lpool = &lpool_##id, },
+	#include "dept_object.h"
+#undef  OBJECT
+};
+
+/*
+ * Can use llist no matter whether CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG is
+ * enabled or not because NMI and other contexts in the same CPU never
+ * run inside of DEPT concurrently by preventing reentrance.
+ */
+static void *from_pool(enum object_t t)
+{
+	struct dept_pool *p;
+	struct llist_head *h;
+	struct llist_node *n;
+
+	/*
+	 * llist_del_first() doesn't allow concurrent access e.g.
+	 * between process and IRQ context.
+	 */
+	if (DEPT_WARN_ON(!irqs_disabled()))
+		return NULL;
+
+	p = &pool[t];
+
+	/*
+	 * Try local pool first.
+	 */
+	if (likely(dept_per_cpu_ready))
+		h = this_cpu_ptr(p->lpool);
+	else
+		h = &p->boot_pool;
+
+	n = llist_del_first(h);
+	if (n)
+		return (void *)n - p->node_off;
+
+	/*
+	 * Try static pool.
+	 */
+	if (atomic_read(&p->obj_nr) > 0) {
+		int idx = atomic_dec_return(&p->obj_nr);
+
+		if (idx >= 0)
+			return p->spool + (idx * p->obj_sz);
+	}
+
+	DEPT_INFO_ONCE("---------------------------------------------\n"
+		"  Some of Dept internal resources are run out.\n"
+		"  Dept might still work if the resources get freed.\n"
+		"  However, the chances are Dept will suffer from\n"
+		"  the lack from now. Needs to extend the internal\n"
+		"  resource pools. Ask max.byungchul.park@gmail.com\n");
+	return NULL;
+}
+
+static void to_pool(void *o, enum object_t t)
+{
+	struct dept_pool *p = &pool[t];
+	struct llist_head *h;
+
+	preempt_disable();
+	if (likely(dept_per_cpu_ready))
+		h = this_cpu_ptr(p->lpool);
+	else
+		h = &p->boot_pool;
+
+	llist_add(o + p->node_off, h);
+	preempt_enable();
+}
+
+#define OBJECT(id, nr)							\
+static void (*ctor_##id)(struct dept_##id *a);				\
+static void (*dtor_##id)(struct dept_##id *a);				\
+static inline struct dept_##id *new_##id(void)				\
+{									\
+	struct dept_##id *a;						\
+									\
+	a = (struct dept_##id *)from_pool(OBJECT_##id);			\
+	if (unlikely(!a))						\
+		return NULL;						\
+									\
+	atomic_set(&a->ref, 1);						\
+									\
+	if (ctor_##id)							\
+		ctor_##id(a);						\
+									\
+	return a;							\
+}									\
+									\
+static inline struct dept_##id *get_##id(struct dept_##id *a)		\
+{									\
+	atomic_inc(&a->ref);						\
+	return a;							\
+}									\
+									\
+static inline void put_##id(struct dept_##id *a)			\
+{									\
+	if (!atomic_dec_return(&a->ref)) {				\
+		if (dtor_##id)						\
+			dtor_##id(a);					\
+		to_pool(a, OBJECT_##id);				\
+	}								\
+}									\
+									\
+static inline void del_##id(struct dept_##id *a)			\
+{									\
+	put_##id(a);							\
+}									\
+									\
+static inline bool id##_consumed(struct dept_##id *a)			\
+{									\
+	return a && atomic_read(&a->ref) > 1;				\
+}
+#include "dept_object.h"
+#undef  OBJECT
+
+#define SET_CONSTRUCTOR(id, f) \
+static void (*ctor_##id)(struct dept_##id *a) = f
+
+static void initialize_dep(struct dept_dep *d)
+{
+	INIT_LIST_HEAD(&d->bfs_node);
+	INIT_LIST_HEAD(&d->dep_node);
+	INIT_LIST_HEAD(&d->dep_rev_node);
+}
+SET_CONSTRUCTOR(dep, initialize_dep);
+
+static void initialize_class(struct dept_class *c)
+{
+	int i;
+
+	for (i = 0; i < DEPT_IRQS_NR; i++) {
+		struct dept_iecxt *ie = &c->iecxt[i];
+		struct dept_iwait *iw = &c->iwait[i];
+
+		ie->ecxt = NULL;
+		ie->enirq = i;
+		ie->staled = false;
+
+		iw->wait = NULL;
+		iw->irq = i;
+		iw->staled = false;
+		iw->touched = false;
+	}
+	c->bfs_gen = 0U;
+
+	INIT_LIST_HEAD(&c->all_node);
+	INIT_LIST_HEAD(&c->dep_head);
+	INIT_LIST_HEAD(&c->dep_rev_head);
+}
+SET_CONSTRUCTOR(class, initialize_class);
+
+static void initialize_ecxt(struct dept_ecxt *e)
+{
+	int i;
+
+	for (i = 0; i < DEPT_IRQS_NR; i++) {
+		e->enirq_stack[i] = NULL;
+		e->enirq_ip[i] = 0UL;
+	}
+	e->ecxt_ip = 0UL;
+	e->ecxt_stack = NULL;
+	e->enirqf = 0UL;
+	e->event_ip = 0UL;
+	e->event_stack = NULL;
+}
+SET_CONSTRUCTOR(ecxt, initialize_ecxt);
+
+static void initialize_wait(struct dept_wait *w)
+{
+	int i;
+
+	for (i = 0; i < DEPT_IRQS_NR; i++) {
+		w->irq_stack[i] = NULL;
+		w->irq_ip[i] = 0UL;
+	}
+	w->wait_ip = 0UL;
+	w->wait_stack = NULL;
+	w->irqf = 0UL;
+}
+SET_CONSTRUCTOR(wait, initialize_wait);
+
+static void initialize_stack(struct dept_stack *s)
+{
+	s->nr = 0;
+}
+SET_CONSTRUCTOR(stack, initialize_stack);
+
+#define OBJECT(id, nr) \
+static void (*ctor_##id)(struct dept_##id *a);
+	#include "dept_object.h"
+#undef  OBJECT
+
+#undef  SET_CONSTRUCTOR
+
+#define SET_DESTRUCTOR(id, f) \
+static void (*dtor_##id)(struct dept_##id *a) = f
+
+static void destroy_dep(struct dept_dep *d)
+{
+	if (dep_e(d))
+		put_ecxt(dep_e(d));
+	if (dep_w(d))
+		put_wait(dep_w(d));
+}
+SET_DESTRUCTOR(dep, destroy_dep);
+
+static void destroy_ecxt(struct dept_ecxt *e)
+{
+	int i;
+
+	for (i = 0; i < DEPT_IRQS_NR; i++)
+		if (e->enirq_stack[i])
+			put_stack(e->enirq_stack[i]);
+	if (e->class)
+		put_class(e->class);
+	if (e->ecxt_stack)
+		put_stack(e->ecxt_stack);
+	if (e->event_stack)
+		put_stack(e->event_stack);
+}
+SET_DESTRUCTOR(ecxt, destroy_ecxt);
+
+static void destroy_wait(struct dept_wait *w)
+{
+	int i;
+
+	for (i = 0; i < DEPT_IRQS_NR; i++)
+		if (w->irq_stack[i])
+			put_stack(w->irq_stack[i]);
+	if (w->class)
+		put_class(w->class);
+	if (w->wait_stack)
+		put_stack(w->wait_stack);
+}
+SET_DESTRUCTOR(wait, destroy_wait);
+
+#define OBJECT(id, nr) \
+static void (*dtor_##id)(struct dept_##id *a);
+	#include "dept_object.h"
+#undef  OBJECT
+
+#undef  SET_DESTRUCTOR
+
+/*
+ * Caching and hashing
+ * =====================================================================
+ * DEPT makes use of caching and hashing to improve performance. Each
+ * object can be obtained in O(1) with its key.
+ *
+ * NOTE: Currently we assume all the objects in the hashs will never be
+ * removed. Implement it when needed.
+ */
+
+/*
+ * Some information might be lost but it's only for hashing key.
+ */
+static inline unsigned long mix(unsigned long a, unsigned long b)
+{
+	int halfbits = sizeof(unsigned long) * 8 / 2;
+	unsigned long halfmask = (1UL << halfbits) - 1UL;
+
+	return (a << halfbits) | (b & halfmask);
+}
+
+static bool cmp_dep(struct dept_dep *d1, struct dept_dep *d2)
+{
+	return dep_fc(d1)->key == dep_fc(d2)->key &&
+	       dep_tc(d1)->key == dep_tc(d2)->key;
+}
+
+static unsigned long key_dep(struct dept_dep *d)
+{
+	return mix(dep_fc(d)->key, dep_tc(d)->key);
+}
+
+static bool cmp_class(struct dept_class *c1, struct dept_class *c2)
+{
+	return c1->key == c2->key;
+}
+
+static unsigned long key_class(struct dept_class *c)
+{
+	return c->key;
+}
+
+#define HASH(id, bits)							\
+static struct hlist_head table_##id[1 << (bits)];			\
+									\
+static inline struct hlist_head *head_##id(struct dept_##id *a)		\
+{									\
+	return table_##id + hash_long(key_##id(a), bits);		\
+}									\
+									\
+static inline struct dept_##id *hash_lookup_##id(struct dept_##id *a)	\
+{									\
+	struct dept_##id *b;						\
+									\
+	hlist_for_each_entry_rcu(b, head_##id(a), hash_node)		\
+		if (cmp_##id(a, b))					\
+			return b;					\
+	return NULL;							\
+}									\
+									\
+static inline void hash_add_##id(struct dept_##id *a)			\
+{									\
+	get_##id(a);							\
+	hlist_add_head_rcu(&a->hash_node, head_##id(a));		\
+}									\
+									\
+static inline void hash_del_##id(struct dept_##id *a)			\
+{									\
+	hlist_del_rcu(&a->hash_node);					\
+	put_##id(a);							\
+}
+#include "dept_hash.h"
+#undef  HASH
+
+static inline struct dept_dep *lookup_dep(struct dept_class *fc,
+					  struct dept_class *tc)
+{
+	struct dept_ecxt onetime_e = { .class = fc };
+	struct dept_wait onetime_w = { .class = tc };
+	struct dept_dep  onetime_d = { .ecxt = &onetime_e,
+				       .wait = &onetime_w };
+	return hash_lookup_dep(&onetime_d);
+}
+
+static inline struct dept_class *lookup_class(unsigned long key)
+{
+	struct dept_class onetime_c = { .key = key };
+
+	return hash_lookup_class(&onetime_c);
+}
+
+/*
+ * Report
+ * =====================================================================
+ * DEPT prints useful information to help debuging on detection of
+ * problematic dependency.
+ */
+
+static inline void print_ip_stack(unsigned long ip, struct dept_stack *s)
+{
+	if (ip)
+		print_ip_sym(KERN_WARNING, ip);
+
+	if (valid_stack(s)) {
+		pr_warn("stacktrace:\n");
+		stack_trace_print(s->raw, s->nr, 5);
+	}
+
+	if (!ip && !valid_stack(s))
+		pr_warn("(N/A)\n");
+}
+
+#define print_spc(spc, fmt, ...)					\
+	pr_warn("%*c" fmt, (spc) * 4, ' ', ##__VA_ARGS__)
+
+static void print_diagram(struct dept_dep *d)
+{
+	struct dept_ecxt *e = dep_e(d);
+	struct dept_wait *w = dep_w(d);
+	struct dept_class *fc = dep_fc(d);
+	struct dept_class *tc = dep_tc(d);
+	unsigned long irqf;
+	int irq;
+	bool firstline = true;
+	int spc = 1;
+	const char *w_fn = w->wait_fn ?: "(unknown)";
+	const char *e_fn = e->event_fn ?: "(unknown)";
+	const char *c_fn = e->ecxt_fn ?: "(unknown)";
+	const char *fc_n = fc->sched_map ? "<sched>" : (fc->name ?: "(unknown)");
+	const char *tc_n = tc->sched_map ? "<sched>" : (tc->name ?: "(unknown)");
+
+	irqf = e->enirqf & w->irqf;
+	for_each_set_bit(irq, &irqf, DEPT_IRQS_NR) {
+		if (!firstline)
+			pr_warn("\nor\n\n");
+		firstline = false;
+
+		print_spc(spc, "[S] %s(%s:%d)\n", c_fn, fc_n, fc->sub_id);
+		print_spc(spc, "    <%s interrupt>\n", irq_str(irq));
+		print_spc(spc + 1, "[W] %s(%s:%d)\n", w_fn, tc_n, tc->sub_id);
+		print_spc(spc, "[E] %s(%s:%d)\n", e_fn, fc_n, fc->sub_id);
+	}
+
+	if (!irqf) {
+		print_spc(spc, "[S] %s(%s:%d)\n", c_fn, fc_n, fc->sub_id);
+		print_spc(spc, "[W] %s(%s:%d)\n", w_fn, tc_n, tc->sub_id);
+		print_spc(spc, "[E] %s(%s:%d)\n", e_fn, fc_n, fc->sub_id);
+	}
+}
+
+static void print_dep(struct dept_dep *d)
+{
+	struct dept_ecxt *e = dep_e(d);
+	struct dept_wait *w = dep_w(d);
+	struct dept_class *fc = dep_fc(d);
+	struct dept_class *tc = dep_tc(d);
+	unsigned long irqf;
+	int irq;
+	const char *w_fn = w->wait_fn ?: "(unknown)";
+	const char *e_fn = e->event_fn ?: "(unknown)";
+	const char *c_fn = e->ecxt_fn ?: "(unknown)";
+	const char *fc_n = fc->sched_map ? "<sched>" : (fc->name ?: "(unknown)");
+	const char *tc_n = tc->sched_map ? "<sched>" : (tc->name ?: "(unknown)");
+
+	irqf = e->enirqf & w->irqf;
+	for_each_set_bit(irq, &irqf, DEPT_IRQS_NR) {
+		pr_warn("%s has been enabled:\n", irq_str(irq));
+		print_ip_stack(e->enirq_ip[irq], e->enirq_stack[irq]);
+		pr_warn("\n");
+
+		pr_warn("[S] %s(%s:%d):\n", c_fn, fc_n, fc->sub_id);
+		print_ip_stack(e->ecxt_ip, e->ecxt_stack);
+		pr_warn("\n");
+
+		pr_warn("[W] %s(%s:%d) in %s context:\n",
+		       w_fn, tc_n, tc->sub_id, irq_str(irq));
+		print_ip_stack(w->irq_ip[irq], w->irq_stack[irq]);
+		pr_warn("\n");
+
+		pr_warn("[E] %s(%s:%d):\n", e_fn, fc_n, fc->sub_id);
+		print_ip_stack(e->event_ip, e->event_stack);
+	}
+
+	if (!irqf) {
+		pr_warn("[S] %s(%s:%d):\n", c_fn, fc_n, fc->sub_id);
+		print_ip_stack(e->ecxt_ip, e->ecxt_stack);
+		pr_warn("\n");
+
+		pr_warn("[W] %s(%s:%d):\n", w_fn, tc_n, tc->sub_id);
+		print_ip_stack(w->wait_ip, w->wait_stack);
+		pr_warn("\n");
+
+		pr_warn("[E] %s(%s:%d):\n", e_fn, fc_n, fc->sub_id);
+		print_ip_stack(e->event_ip, e->event_stack);
+	}
+}
+
+static void save_current_stack(int skip);
+
+/*
+ * Print all classes in a circle.
+ */
+static void print_circle(struct dept_class *c)
+{
+	struct dept_class *fc = c->bfs_parent;
+	struct dept_class *tc = c;
+	int i;
+
+	dept_outworld_enter();
+	save_current_stack(6);
+
+	pr_warn("===================================================\n");
+	pr_warn("DEPT: Circular dependency has been detected.\n");
+	pr_warn("%s %.*s %s\n", init_utsname()->release,
+		(int)strcspn(init_utsname()->version, " "),
+		init_utsname()->version,
+		print_tainted());
+	pr_warn("---------------------------------------------------\n");
+	pr_warn("summary\n");
+	pr_warn("---------------------------------------------------\n");
+
+	if (fc == tc)
+		pr_warn("*** AA DEADLOCK ***\n\n");
+	else
+		pr_warn("*** DEADLOCK ***\n\n");
+
+	i = 0;
+	do {
+		struct dept_dep *d = lookup_dep(fc, tc);
+
+		pr_warn("context %c\n", 'A' + (i++));
+		print_diagram(d);
+		if (fc != c)
+			pr_warn("\n");
+
+		tc = fc;
+		fc = fc->bfs_parent;
+	} while (tc != c);
+
+	pr_warn("\n");
+	pr_warn("[S]: start of the event context\n");
+	pr_warn("[W]: the wait blocked\n");
+	pr_warn("[E]: the event not reachable\n");
+
+	i = 0;
+	do {
+		struct dept_dep *d = lookup_dep(fc, tc);
+
+		pr_warn("---------------------------------------------------\n");
+		pr_warn("context %c's detail\n", 'A' + i);
+		pr_warn("---------------------------------------------------\n");
+		pr_warn("context %c\n", 'A' + (i++));
+		print_diagram(d);
+		pr_warn("\n");
+		print_dep(d);
+
+		tc = fc;
+		fc = fc->bfs_parent;
+	} while (tc != c);
+
+	pr_warn("---------------------------------------------------\n");
+	pr_warn("information that might be helpful\n");
+	pr_warn("---------------------------------------------------\n");
+	dump_stack();
+
+	dept_outworld_exit();
+}
+
+/*
+ * BFS(Breadth First Search)
+ * =====================================================================
+ * Whenever a new dependency is added into the graph, search the graph
+ * for a new circular dependency.
+ */
+
+static inline void enqueue(struct list_head *h, struct dept_dep *d)
+{
+	list_add_tail(&d->bfs_node, h);
+}
+
+static inline struct dept_dep *dequeue(struct list_head *h)
+{
+	struct dept_dep *d;
+
+	d = list_first_entry(h, struct dept_dep, bfs_node);
+	list_del(&d->bfs_node);
+	return d;
+}
+
+static inline bool empty(struct list_head *h)
+{
+	return list_empty(h);
+}
+
+static void extend_queue(struct list_head *h, struct dept_class *cur)
+{
+	struct dept_dep *d;
+
+	list_for_each_entry(d, &cur->dep_head, dep_node) {
+		struct dept_class *next = dep_tc(d);
+
+		if (cur->bfs_gen == next->bfs_gen)
+			continue;
+		next->bfs_gen = cur->bfs_gen;
+		next->bfs_dist = cur->bfs_dist + 1;
+		next->bfs_parent = cur;
+		enqueue(h, d);
+	}
+}
+
+static void extend_queue_rev(struct list_head *h, struct dept_class *cur)
+{
+	struct dept_dep *d;
+
+	list_for_each_entry(d, &cur->dep_rev_head, dep_rev_node) {
+		struct dept_class *next = dep_fc(d);
+
+		if (cur->bfs_gen == next->bfs_gen)
+			continue;
+		next->bfs_gen = cur->bfs_gen;
+		next->bfs_dist = cur->bfs_dist + 1;
+		next->bfs_parent = cur;
+		enqueue(h, d);
+	}
+}
+
+typedef enum bfs_ret bfs_f(struct dept_dep *d, void *in, void **out);
+static unsigned int bfs_gen;
+
+/*
+ * NOTE: Must be called with dept_lock held.
+ */
+static void bfs(struct dept_class *c, bfs_f *cb, void *in, void **out)
+{
+	LIST_HEAD(q);
+	enum bfs_ret ret;
+
+	if (DEPT_WARN_ON(!cb))
+		return;
+
+	/*
+	 * Avoid zero bfs_gen.
+	 */
+	bfs_gen = bfs_gen + 1 ?: 1;
+
+	c->bfs_gen = bfs_gen;
+	c->bfs_dist = 0;
+	c->bfs_parent = c;
+
+	ret = cb(NULL, in, out);
+	if (ret == BFS_DONE)
+		return;
+	if (ret == BFS_SKIP)
+		return;
+	if (ret == BFS_CONTINUE)
+		extend_queue(&q, c);
+	if (ret == BFS_CONTINUE_REV)
+		extend_queue_rev(&q, c);
+
+	while (!empty(&q)) {
+		struct dept_dep *d = dequeue(&q);
+
+		ret = cb(d, in, out);
+		if (ret == BFS_DONE)
+			break;
+		if (ret == BFS_SKIP)
+			continue;
+		if (ret == BFS_CONTINUE)
+			extend_queue(&q, dep_tc(d));
+		if (ret == BFS_CONTINUE_REV)
+			extend_queue_rev(&q, dep_fc(d));
+	}
+
+	while (!empty(&q))
+		dequeue(&q);
+}
+
+/*
+ * Main operations
+ * =====================================================================
+ * Add dependencies - Each new dependency is added into the graph and
+ * checked if it forms a circular dependency.
+ *
+ * Track waits - Waits are queued into the ring buffer for later use to
+ * generate appropriate dependencies with cross-event.
+ *
+ * Track event contexts(ecxt) - Event contexts are pushed into local
+ * stack for later use to generate appropriate dependencies with waits.
+ */
+
+static inline unsigned long cur_enirqf(void);
+static inline int cur_irq(void);
+static inline unsigned int cur_ctxt_id(void);
+
+static inline struct dept_iecxt *iecxt(struct dept_class *c, int irq)
+{
+	return &c->iecxt[irq];
+}
+
+static inline struct dept_iwait *iwait(struct dept_class *c, int irq)
+{
+	return &c->iwait[irq];
+}
+
+static inline void stale_iecxt(struct dept_iecxt *ie)
+{
+	if (ie->ecxt)
+		put_ecxt(ie->ecxt);
+
+	WRITE_ONCE(ie->ecxt, NULL);
+	WRITE_ONCE(ie->staled, true);
+}
+
+static inline void set_iecxt(struct dept_iecxt *ie, struct dept_ecxt *e)
+{
+	/*
+	 * ->ecxt will never be updated once getting set until the class
+	 * gets removed.
+	 */
+	if (ie->ecxt)
+		DEPT_WARN_ON(1);
+	else
+		WRITE_ONCE(ie->ecxt, get_ecxt(e));
+}
+
+static inline void stale_iwait(struct dept_iwait *iw)
+{
+	if (iw->wait)
+		put_wait(iw->wait);
+
+	WRITE_ONCE(iw->wait, NULL);
+	WRITE_ONCE(iw->staled, true);
+}
+
+static inline void set_iwait(struct dept_iwait *iw, struct dept_wait *w)
+{
+	/*
+	 * ->wait will never be updated once getting set until the class
+	 * gets removed.
+	 */
+	if (iw->wait)
+		DEPT_WARN_ON(1);
+	else
+		WRITE_ONCE(iw->wait, get_wait(w));
+
+	iw->touched = true;
+}
+
+static inline void touch_iwait(struct dept_iwait *iw)
+{
+	iw->touched = true;
+}
+
+static inline void untouch_iwait(struct dept_iwait *iw)
+{
+	iw->touched = false;
+}
+
+static inline struct dept_stack *get_current_stack(void)
+{
+	struct dept_stack *s = dept_task()->stack;
+
+	return s ? get_stack(s) : NULL;
+}
+
+static inline void prepare_current_stack(void)
+{
+	struct dept_stack *s = dept_task()->stack;
+
+	/*
+	 * The dept_stack is already ready.
+	 */
+	if (s && !stack_consumed(s)) {
+		s->nr = 0;
+		return;
+	}
+
+	if (s)
+		put_stack(s);
+
+	s = dept_task()->stack = new_stack();
+	if (!s)
+		return;
+
+	get_stack(s);
+	del_stack(s);
+}
+
+static void save_current_stack(int skip)
+{
+	struct dept_stack *s = dept_task()->stack;
+
+	if (!s)
+		return;
+	if (valid_stack(s))
+		return;
+
+	s->nr = stack_trace_save(s->raw, DEPT_MAX_STACK_ENTRY, skip);
+}
+
+static void finish_current_stack(void)
+{
+	struct dept_stack *s = dept_task()->stack;
+
+	if (stack_consumed(s))
+		save_current_stack(2);
+}
+
+/*
+ * FIXME: For now, disable LOCKDEP while DEPT is working.
+ *
+ * Both LOCKDEP and DEPT report it on a deadlock detection using
+ * printk taking the risk of another deadlock that might be caused by
+ * locks of console or printk between inside and outside of them.
+ *
+ * For DEPT, it's no problem since multiple reports are allowed. But it
+ * would be a bad idea for LOCKDEP since it will stop even on a singe
+ * report. So we need to prevent LOCKDEP from its reporting the risk
+ * DEPT would take when reporting something.
+ */
+#include <linux/lockdep.h>
+
+void dept_off(void)
+{
+	dept_task()->recursive++;
+	lockdep_off();
+}
+
+void dept_on(void)
+{
+	dept_task()->recursive--;
+	lockdep_on();
+}
+
+static inline unsigned long dept_enter(void)
+{
+	unsigned long flags;
+
+	flags = arch_local_irq_save();
+	dept_off();
+	prepare_current_stack();
+	return flags;
+}
+
+static inline void dept_exit(unsigned long flags)
+{
+	finish_current_stack();
+	dept_on();
+	arch_local_irq_restore(flags);
+}
+
+static inline unsigned long dept_enter_recursive(void)
+{
+	unsigned long flags;
+
+	flags = arch_local_irq_save();
+	return flags;
+}
+
+static inline void dept_exit_recursive(unsigned long flags)
+{
+	arch_local_irq_restore(flags);
+}
+
+/*
+ * NOTE: Must be called with dept_lock held.
+ */
+static struct dept_dep *__add_dep(struct dept_ecxt *e,
+				  struct dept_wait *w)
+{
+	struct dept_dep *d;
+
+	if (DEPT_WARN_ON(!valid_class(e->class)))
+		return NULL;
+
+	if (DEPT_WARN_ON(!valid_class(w->class)))
+		return NULL;
+
+	if (lookup_dep(e->class, w->class))
+		return NULL;
+
+	d = new_dep();
+	if (unlikely(!d))
+		return NULL;
+
+	d->ecxt = get_ecxt(e);
+	d->wait = get_wait(w);
+
+	/*
+	 * Add the dependency into hash and graph.
+	 */
+	hash_add_dep(d);
+	list_add(&d->dep_node, &dep_fc(d)->dep_head);
+	list_add(&d->dep_rev_node, &dep_tc(d)->dep_rev_head);
+	return d;
+}
+
+static enum bfs_ret cb_check_dl(struct dept_dep *d,
+				void *in, void **out)
+{
+	struct dept_dep *new = (struct dept_dep *)in;
+
+	/*
+	 * initial condition for this BFS search
+	 */
+	if (!d) {
+		dep_tc(new)->bfs_parent = dep_fc(new);
+
+		if (dep_tc(new) != dep_fc(new))
+			return BFS_CONTINUE;
+
+		/*
+		 * AA circle does not make additional deadlock. We don't
+		 * have to continue this BFS search.
+		 */
+		print_circle(dep_tc(new));
+		return BFS_DONE;
+	}
+
+	/*
+	 * Allow multiple reports.
+	 */
+	if (dep_tc(d) == dep_fc(new))
+		print_circle(dep_tc(new));
+
+	return BFS_CONTINUE;
+}
+
+/*
+ * This function is actually in charge of reporting.
+ */
+static inline void check_dl_bfs(struct dept_dep *d)
+{
+	bfs(dep_tc(d), cb_check_dl, (void *)d, NULL);
+}
+
+static enum bfs_ret cb_find_iw(struct dept_dep *d, void *in, void **out)
+{
+	int irq = *(int *)in;
+	struct dept_class *fc;
+	struct dept_iwait *iw;
+
+	if (DEPT_WARN_ON(!out))
+		return BFS_DONE;
+
+	/*
+	 * initial condition for this BFS search
+	 */
+	if (!d)
+		return BFS_CONTINUE_REV;
+
+	fc = dep_fc(d);
+	iw = iwait(fc, irq);
+
+	/*
+	 * If any parent's ->wait was set, then the children would've
+	 * been touched.
+	 */
+	if (!iw->touched)
+		return BFS_SKIP;
+
+	if (!iw->wait)
+		return BFS_CONTINUE_REV;
+
+	*out = iw;
+	return BFS_DONE;
+}
+
+static struct dept_iwait *find_iw_bfs(struct dept_class *c, int irq)
+{
+	struct dept_iwait *iw = iwait(c, irq);
+	struct dept_iwait *found = NULL;
+
+	if (iw->wait)
+		return iw;
+
+	/*
+	 * '->touched == false' guarantees there's no parent that has
+	 * been set ->wait.
+	 */
+	if (!iw->touched)
+		return NULL;
+
+	bfs(c, cb_find_iw, (void *)&irq, (void **)&found);
+
+	if (found)
+		return found;
+
+	untouch_iwait(iw);
+	return NULL;
+}
+
+static enum bfs_ret cb_touch_iw_find_ie(struct dept_dep *d, void *in,
+					void **out)
+{
+	int irq = *(int *)in;
+	struct dept_class *tc;
+	struct dept_iecxt *ie;
+	struct dept_iwait *iw;
+
+	if (DEPT_WARN_ON(!out))
+		return BFS_DONE;
+
+	/*
+	 * initial condition for this BFS search
+	 */
+	if (!d)
+		return BFS_CONTINUE;
+
+	tc = dep_tc(d);
+	ie = iecxt(tc, irq);
+	iw = iwait(tc, irq);
+
+	touch_iwait(iw);
+
+	if (!ie->ecxt)
+		return BFS_CONTINUE;
+
+	if (!*out)
+		*out = ie;
+
+	return BFS_CONTINUE;
+}
+
+static struct dept_iecxt *touch_iw_find_ie_bfs(struct dept_class *c,
+					       int irq)
+{
+	struct dept_iecxt *ie = iecxt(c, irq);
+	struct dept_iwait *iw = iwait(c, irq);
+	struct dept_iecxt *found = ie->ecxt ? ie : NULL;
+
+	touch_iwait(iw);
+	bfs(c, cb_touch_iw_find_ie, (void *)&irq, (void **)&found);
+	return found;
+}
+
+/*
+ * Should be called with dept_lock held.
+ */
+static void __add_idep(struct dept_iecxt *ie, struct dept_iwait *iw)
+{
+	struct dept_dep *new;
+
+	/*
+	 * There's nothing to do.
+	 */
+	if (!ie || !iw || !ie->ecxt || !iw->wait)
+		return;
+
+	new = __add_dep(ie->ecxt, iw->wait);
+
+	/*
+	 * Deadlock detected. Let check_dl_bfs() report it.
+	 */
+	if (new) {
+		check_dl_bfs(new);
+		stale_iecxt(ie);
+		stale_iwait(iw);
+	}
+
+	/*
+	 * If !new, it would be the case of lack of object resource.
+	 * Just let it go and get checked by other chances. Retrying is
+	 * meaningless in that case.
+	 */
+}
+
+static void set_check_iecxt(struct dept_class *c, int irq,
+			    struct dept_ecxt *e)
+{
+	struct dept_iecxt *ie = iecxt(c, irq);
+
+	set_iecxt(ie, e);
+	__add_idep(ie, find_iw_bfs(c, irq));
+}
+
+static void set_check_iwait(struct dept_class *c, int irq,
+			    struct dept_wait *w)
+{
+	struct dept_iwait *iw = iwait(c, irq);
+
+	set_iwait(iw, w);
+	__add_idep(touch_iw_find_ie_bfs(c, irq), iw);
+}
+
+static void add_iecxt(struct dept_class *c, int irq, struct dept_ecxt *e,
+		      bool stack)
+{
+	/*
+	 * This access is safe since we ensure e->class has set locally.
+	 */
+	struct dept_task *dt = dept_task();
+	struct dept_iecxt *ie = iecxt(c, irq);
+
+	if (DEPT_WARN_ON(!valid_class(c)))
+		return;
+
+	if (unlikely(READ_ONCE(ie->staled)))
+		return;
+
+	/*
+	 * Skip add_iecxt() if ie->ecxt has ever been set at least once.
+	 * Which means it has a valid ->ecxt or been staled.
+	 */
+	if (READ_ONCE(ie->ecxt))
+		return;
+
+	if (unlikely(!dept_lock()))
+		return;
+
+	if (unlikely(ie->staled))
+		goto unlock;
+	if (ie->ecxt)
+		goto unlock;
+
+	e->enirqf |= (1UL << irq);
+
+	/*
+	 * Should be NULL since it's the first time that these
+	 * enirq_{ip,stack}[irq] have ever set.
+	 */
+	DEPT_WARN_ON(e->enirq_ip[irq]);
+	DEPT_WARN_ON(e->enirq_stack[irq]);
+
+	e->enirq_ip[irq] = dt->enirq_ip[irq];
+	e->enirq_stack[irq] = stack ? get_current_stack() : NULL;
+
+	set_check_iecxt(c, irq, e);
+unlock:
+	dept_unlock();
+}
+
+static void add_iwait(struct dept_class *c, int irq, struct dept_wait *w)
+{
+	struct dept_iwait *iw = iwait(c, irq);
+
+	if (DEPT_WARN_ON(!valid_class(c)))
+		return;
+
+	if (unlikely(READ_ONCE(iw->staled)))
+		return;
+
+	/*
+	 * Skip add_iwait() if iw->wait has ever been set at least once.
+	 * Which means it has a valid ->wait or been staled.
+	 */
+	if (READ_ONCE(iw->wait))
+		return;
+
+	if (unlikely(!dept_lock()))
+		return;
+
+	if (unlikely(iw->staled))
+		goto unlock;
+	if (iw->wait)
+		goto unlock;
+
+	w->irqf |= (1UL << irq);
+
+	/*
+	 * Should be NULL since it's the first time that these
+	 * irq_{ip,stack}[irq] have ever set.
+	 */
+	DEPT_WARN_ON(w->irq_ip[irq]);
+	DEPT_WARN_ON(w->irq_stack[irq]);
+
+	w->irq_ip[irq] = w->wait_ip;
+	w->irq_stack[irq] = get_current_stack();
+
+	set_check_iwait(c, irq, w);
+unlock:
+	dept_unlock();
+}
+
+static inline struct dept_wait_hist *hist(int pos)
+{
+	struct dept_task *dt = dept_task();
+
+	return dt->wait_hist + (pos % DEPT_MAX_WAIT_HIST);
+}
+
+static inline int hist_pos_next(void)
+{
+	struct dept_task *dt = dept_task();
+
+	return dt->wait_hist_pos % DEPT_MAX_WAIT_HIST;
+}
+
+static inline void hist_advance(void)
+{
+	struct dept_task *dt = dept_task();
+
+	dt->wait_hist_pos++;
+	dt->wait_hist_pos %= DEPT_MAX_WAIT_HIST;
+}
+
+static inline struct dept_wait_hist *new_hist(void)
+{
+	struct dept_wait_hist *wh = hist(hist_pos_next());
+
+	hist_advance();
+	return wh;
+}
+
+static void add_hist(struct dept_wait *w, unsigned int wg, unsigned int ctxt_id)
+{
+	struct dept_wait_hist *wh = new_hist();
+
+	if (likely(wh->wait))
+		put_wait(wh->wait);
+
+	wh->wait = get_wait(w);
+	wh->wgen = wg;
+	wh->ctxt_id = ctxt_id;
+}
+
+/*
+ * Should be called after setting up e's iecxt and w's iwait.
+ */
+static void add_dep(struct dept_ecxt *e, struct dept_wait *w)
+{
+	struct dept_class *fc = e->class;
+	struct dept_class *tc = w->class;
+	struct dept_dep *d;
+	int i;
+
+	if (lookup_dep(fc, tc))
+		return;
+
+	if (unlikely(!dept_lock()))
+		return;
+
+	/*
+	 * __add_dep() will lookup_dep() again with lock held.
+	 */
+	d = __add_dep(e, w);
+	if (d) {
+		check_dl_bfs(d);
+
+		for (i = 0; i < DEPT_IRQS_NR; i++) {
+			struct dept_iwait *fiw = iwait(fc, i);
+			struct dept_iecxt *found_ie;
+			struct dept_iwait *found_iw;
+
+			/*
+			 * '->touched == false' guarantees there's no
+			 * parent that has been set ->wait.
+			 */
+			if (!fiw->touched)
+				continue;
+
+			/*
+			 * find_iw_bfs() will untouch the iwait if
+			 * not found.
+			 */
+			found_iw = find_iw_bfs(fc, i);
+
+			if (!found_iw)
+				continue;
+
+			found_ie = touch_iw_find_ie_bfs(tc, i);
+			__add_idep(found_ie, found_iw);
+		}
+	}
+	dept_unlock();
+}
+
+static atomic_t wgen = ATOMIC_INIT(1);
+
+static void add_wait(struct dept_class *c, unsigned long ip,
+		     const char *w_fn, int sub_l, bool sched_sleep)
+{
+	struct dept_task *dt = dept_task();
+	struct dept_wait *w;
+	unsigned int wg = 0U;
+	int irq;
+	int i;
+
+	if (DEPT_WARN_ON(!valid_class(c)))
+		return;
+
+	w = new_wait();
+	if (unlikely(!w))
+		return;
+
+	WRITE_ONCE(w->class, get_class(c));
+	w->wait_ip = ip;
+	w->wait_fn = w_fn;
+	w->wait_stack = get_current_stack();
+	w->sched_sleep = sched_sleep;
+
+	irq = cur_irq();
+	if (irq < DEPT_IRQS_NR)
+		add_iwait(c, irq, w);
+
+	/*
+	 * Avoid adding dependency between user aware nested ecxt and
+	 * wait.
+	 */
+	for (i = dt->ecxt_held_pos - 1; i >= 0; i--) {
+		struct dept_ecxt_held *eh;
+
+		eh = dt->ecxt_held + i;
+
+		/*
+		 * the case of invalid key'ed one
+		 */
+		if (!eh->ecxt)
+			continue;
+
+		if (eh->ecxt->class != c || eh->sub_l == sub_l)
+			add_dep(eh->ecxt, w);
+	}
+
+	if (!wait_consumed(w) && !rich_stack) {
+		if (w->wait_stack)
+			put_stack(w->wait_stack);
+		w->wait_stack = NULL;
+	}
+
+	/*
+	 * Avoid zero wgen.
+	 */
+	wg = atomic_inc_return(&wgen) ?: atomic_inc_return(&wgen);
+	add_hist(w, wg, cur_ctxt_id());
+
+	del_wait(w);
+}
+
+static bool add_ecxt(struct dept_map *m, struct dept_class *c,
+		     unsigned long ip, const char *c_fn,
+		     const char *e_fn, int sub_l)
+{
+	struct dept_task *dt = dept_task();
+	struct dept_ecxt_held *eh;
+	struct dept_ecxt *e;
+	unsigned long irqf;
+	int irq;
+
+	if (DEPT_WARN_ON(!valid_class(c)))
+		return false;
+
+	if (DEPT_WARN_ON_ONCE(dt->ecxt_held_pos >= DEPT_MAX_ECXT_HELD))
+		return false;
+
+	if (m->nocheck) {
+		eh = dt->ecxt_held + (dt->ecxt_held_pos++);
+		eh->ecxt = NULL;
+		eh->map = m;
+		eh->class = get_class(c);
+		eh->wgen = atomic_read(&wgen);
+		eh->sub_l = sub_l;
+
+		return true;
+	}
+
+	e = new_ecxt();
+	if (unlikely(!e))
+		return false;
+
+	e->class = get_class(c);
+	e->ecxt_ip = ip;
+	e->ecxt_stack = ip && rich_stack ? get_current_stack() : NULL;
+	e->event_fn = e_fn;
+	e->ecxt_fn = c_fn;
+
+	eh = dt->ecxt_held + (dt->ecxt_held_pos++);
+	eh->ecxt = get_ecxt(e);
+	eh->map = m;
+	eh->class = get_class(c);
+	eh->wgen = atomic_read(&wgen);
+	eh->sub_l = sub_l;
+
+	irqf = cur_enirqf();
+	for_each_set_bit(irq, &irqf, DEPT_IRQS_NR)
+		add_iecxt(c, irq, e, false);
+
+	del_ecxt(e);
+	return true;
+}
+
+static int find_ecxt_pos(struct dept_map *m, struct dept_class *c,
+			 bool newfirst)
+{
+	struct dept_task *dt = dept_task();
+	int i;
+
+	if (newfirst) {
+		for (i = dt->ecxt_held_pos - 1; i >= 0; i--) {
+			struct dept_ecxt_held *eh;
+
+			eh = dt->ecxt_held + i;
+			if (eh->map == m && eh->class == c)
+				return i;
+		}
+	} else {
+		for (i = 0; i < dt->ecxt_held_pos; i++) {
+			struct dept_ecxt_held *eh;
+
+			eh = dt->ecxt_held + i;
+			if (eh->map == m && eh->class == c)
+				return i;
+		}
+	}
+	return -1;
+}
+
+static bool pop_ecxt(struct dept_map *m, struct dept_class *c)
+{
+	struct dept_task *dt = dept_task();
+	int pos;
+	int i;
+
+	pos = find_ecxt_pos(m, c, true);
+	if (pos == -1)
+		return false;
+
+	if (dt->ecxt_held[pos].class)
+		put_class(dt->ecxt_held[pos].class);
+
+	if (dt->ecxt_held[pos].ecxt)
+		put_ecxt(dt->ecxt_held[pos].ecxt);
+
+	dt->ecxt_held_pos--;
+
+	for (i = pos; i < dt->ecxt_held_pos; i++)
+		dt->ecxt_held[i] = dt->ecxt_held[i + 1];
+	return true;
+}
+
+static inline bool good_hist(struct dept_wait_hist *wh, unsigned int wg)
+{
+	return wh->wait != NULL && before(wg, wh->wgen);
+}
+
+/*
+ * Binary-search the ring buffer for the earliest valid wait.
+ */
+static int find_hist_pos(unsigned int wg)
+{
+	int oldest;
+	int l;
+	int r;
+	int pos;
+
+	oldest = hist_pos_next();
+	if (unlikely(good_hist(hist(oldest), wg))) {
+		DEPT_INFO_ONCE("Need to expand the ring buffer.\n");
+		return oldest;
+	}
+
+	l = oldest + 1;
+	r = oldest + DEPT_MAX_WAIT_HIST - 1;
+	for (pos = (l + r) / 2; l <= r; pos = (l + r) / 2) {
+		struct dept_wait_hist *p = hist(pos - 1);
+		struct dept_wait_hist *wh = hist(pos);
+
+		if (!good_hist(p, wg) && good_hist(wh, wg))
+			return pos % DEPT_MAX_WAIT_HIST;
+		if (good_hist(wh, wg))
+			r = pos - 1;
+		else
+			l = pos + 1;
+	}
+	return -1;
+}
+
+static void do_event(struct dept_map *m, struct dept_class *c,
+		     unsigned int wg, unsigned long ip)
+{
+	struct dept_task *dt = dept_task();
+	struct dept_wait_hist *wh;
+	struct dept_ecxt_held *eh;
+	unsigned int ctxt_id;
+	int end;
+	int pos;
+	int i;
+
+	if (DEPT_WARN_ON(!valid_class(c)))
+		return;
+
+	if (m->nocheck)
+		return;
+
+	/*
+	 * The event was triggered before wait.
+	 */
+	if (!wg)
+		return;
+
+	pos = find_ecxt_pos(m, c, false);
+	if (pos == -1)
+		return;
+
+	eh = dt->ecxt_held + pos;
+
+	if (DEPT_WARN_ON(!eh->ecxt))
+		return;
+
+	eh->ecxt->event_ip = ip;
+	eh->ecxt->event_stack = get_current_stack();
+
+	/*
+	 * The ecxt already has done what it needs.
+	 */
+	if (!before(wg, eh->wgen))
+		return;
+
+	pos = find_hist_pos(wg);
+	if (pos == -1)
+		return;
+
+	ctxt_id = cur_ctxt_id();
+	end = hist_pos_next();
+	end = end > pos ? end : end + DEPT_MAX_WAIT_HIST;
+	for (wh = hist(pos); pos < end; wh = hist(++pos)) {
+		if (after(wh->wgen, eh->wgen))
+			break;
+
+		if (dt->in_sched && wh->wait->sched_sleep)
+			continue;
+
+		if (wh->ctxt_id == ctxt_id)
+			add_dep(eh->ecxt, wh->wait);
+	}
+
+	for (i = 0; i < DEPT_IRQS_NR; i++) {
+		struct dept_ecxt *e;
+
+		if (before(dt->wgen_enirq[i], wg))
+			continue;
+
+		e = eh->ecxt;
+		add_iecxt(e->class, i, e, false);
+	}
+}
+
+static void del_dep_rcu(struct rcu_head *rh)
+{
+	struct dept_dep *d = container_of(rh, struct dept_dep, rh);
+
+	preempt_disable();
+	del_dep(d);
+	preempt_enable();
+}
+
+/*
+ * NOTE: Must be called with dept_lock held.
+ */
+static void disconnect_class(struct dept_class *c)
+{
+	struct dept_dep *d, *n;
+	int i;
+
+	list_for_each_entry_safe(d, n, &c->dep_head, dep_node) {
+		list_del_rcu(&d->dep_node);
+		list_del_rcu(&d->dep_rev_node);
+		hash_del_dep(d);
+		call_rcu(&d->rh, del_dep_rcu);
+	}
+
+	list_for_each_entry_safe(d, n, &c->dep_rev_head, dep_rev_node) {
+		list_del_rcu(&d->dep_node);
+		list_del_rcu(&d->dep_rev_node);
+		hash_del_dep(d);
+		call_rcu(&d->rh, del_dep_rcu);
+	}
+
+	for (i = 0; i < DEPT_IRQS_NR; i++) {
+		stale_iecxt(iecxt(c, i));
+		stale_iwait(iwait(c, i));
+	}
+}
+
+/*
+ * Context control
+ * =====================================================================
+ * Whether a wait is in {hard,soft}-IRQ context or whether
+ * {hard,soft}-IRQ has been enabled on the way to an event is very
+ * important to check dependency. All those things should be tracked.
+ */
+
+static inline unsigned long cur_enirqf(void)
+{
+	struct dept_task *dt = dept_task();
+	int he = dt->hardirqs_enabled;
+	int se = dt->softirqs_enabled;
+
+	if (he)
+		return DEPT_HIRQF | (se ? DEPT_SIRQF : 0UL);
+	return 0UL;
+}
+
+static inline int cur_irq(void)
+{
+	if (lockdep_softirq_context(current))
+		return DEPT_SIRQ;
+	if (lockdep_hardirq_context())
+		return DEPT_HIRQ;
+	return DEPT_IRQS_NR;
+}
+
+static inline unsigned int cur_ctxt_id(void)
+{
+	struct dept_task *dt = dept_task();
+	int irq = cur_irq();
+
+	/*
+	 * Normal process context
+	 */
+	if (irq == DEPT_IRQS_NR)
+		return 0U;
+
+	return dt->irq_id[irq] | (1UL << irq);
+}
+
+static void enirq_transition(int irq)
+{
+	struct dept_task *dt = dept_task();
+	int i;
+
+	/*
+	 * READ wgen >= wgen of an event with IRQ enabled has been
+	 * observed on the way to the event means, the IRQ can cut in
+	 * within the ecxt. Used for cross-event detection.
+	 *
+	 *    wait context	event context(ecxt)
+	 *    ------------	-------------------
+	 *    wait event
+	 *       WRITE wgen
+	 *			observe IRQ enabled
+	 *			   READ wgen
+	 *			   keep the wgen locally
+	 *
+	 *			on the event
+	 *			   check the local wgen
+	 */
+	dt->wgen_enirq[irq] = atomic_read(&wgen);
+
+	for (i = dt->ecxt_held_pos - 1; i >= 0; i--) {
+		struct dept_ecxt_held *eh;
+		struct dept_ecxt *e;
+
+		eh = dt->ecxt_held + i;
+		e = eh->ecxt;
+		if (e)
+			add_iecxt(e->class, irq, e, true);
+	}
+}
+
+static void enirq_update(unsigned long ip)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long irqf;
+	unsigned long prev;
+	int irq;
+
+	prev = dt->eff_enirqf;
+	irqf = cur_enirqf();
+	dt->eff_enirqf = irqf;
+
+	/*
+	 * Do enirq_transition() only on an OFF -> ON transition.
+	 */
+	for_each_set_bit(irq, &irqf, DEPT_IRQS_NR) {
+		if (prev & (1UL << irq))
+			continue;
+
+		dt->enirq_ip[irq] = ip;
+		enirq_transition(irq);
+	}
+}
+
+/*
+ * Ensure it has been called on ON/OFF transition.
+ */
+static void dept_enirq_transition(unsigned long ip)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	/*
+	 * IRQ ON/OFF transition might happen while Dept is working.
+	 * We cannot handle recursive entrance. Just ingnore it.
+	 * Only transitions outside of Dept will be considered.
+	 */
+	if (dt->recursive)
+		return;
+
+	flags = dept_enter();
+
+	enirq_update(ip);
+
+	dept_exit(flags);
+}
+
+void dept_softirqs_on_ip(unsigned long ip)
+{
+	/*
+	 * Assumes that it's called with IRQ disabled so that accessing
+	 * current's fields is not racy.
+	 */
+	dept_task()->softirqs_enabled = true;
+	dept_enirq_transition(ip);
+}
+
+void dept_hardirqs_on(void)
+{
+	/*
+	 * Assumes that it's called with IRQ disabled so that accessing
+	 * current's fields is not racy.
+	 */
+	dept_task()->hardirqs_enabled = true;
+	dept_enirq_transition(_RET_IP_);
+}
+EXPORT_SYMBOL_GPL(dept_hardirqs_on);
+
+void dept_hardirqs_on_ip(unsigned long ip)
+{
+	/*
+	 * Assumes that it's called with IRQ disabled so that accessing
+	 * current's fields is not racy.
+	 */
+	dept_task()->hardirqs_enabled = true;
+	dept_enirq_transition(ip);
+}
+EXPORT_SYMBOL_GPL(dept_hardirqs_on_ip);
+
+void dept_softirqs_off_ip(unsigned long ip)
+{
+	/*
+	 * Assumes that it's called with IRQ disabled so that accessing
+	 * current's fields is not racy.
+	 */
+	dept_task()->softirqs_enabled = false;
+	dept_enirq_transition(ip);
+}
+
+void dept_hardirqs_off(void)
+{
+	/*
+	 * Assumes that it's called with IRQ disabled so that accessing
+	 * current's fields is not racy.
+	 */
+	dept_task()->hardirqs_enabled = false;
+	dept_enirq_transition(_RET_IP_);
+}
+EXPORT_SYMBOL_GPL(dept_hardirqs_off);
+
+void dept_hardirqs_off_ip(unsigned long ip)
+{
+	/*
+	 * Assumes that it's called with IRQ disabled so that accessing
+	 * current's fields is not racy.
+	 */
+	dept_task()->hardirqs_enabled = false;
+	dept_enirq_transition(ip);
+}
+EXPORT_SYMBOL_GPL(dept_hardirqs_off_ip);
+
+/*
+ * Ensure it's the outmost softirq context.
+ */
+void dept_softirq_enter(void)
+{
+	struct dept_task *dt = dept_task();
+
+	dt->irq_id[DEPT_SIRQ] += 1UL << DEPT_IRQS_NR;
+}
+
+/*
+ * Ensure it's the outmost hardirq context.
+ */
+void dept_hardirq_enter(void)
+{
+	struct dept_task *dt = dept_task();
+
+	dt->irq_id[DEPT_HIRQ] += 1UL << DEPT_IRQS_NR;
+}
+
+void dept_sched_enter(void)
+{
+	dept_task()->in_sched = true;
+}
+
+void dept_sched_exit(void)
+{
+	dept_task()->in_sched = false;
+}
+
+/*
+ * Exposed APIs
+ * =====================================================================
+ */
+
+static inline void clean_classes_cache(struct dept_key *k)
+{
+	int i;
+
+	for (i = 0; i < DEPT_MAX_SUBCLASSES_CACHE; i++) {
+		if (!READ_ONCE(k->classes[i]))
+			continue;
+
+		WRITE_ONCE(k->classes[i], NULL);
+	}
+}
+
+void dept_map_init(struct dept_map *m, struct dept_key *k, int sub_u,
+		   const char *n)
+{
+	unsigned long flags;
+
+	if (unlikely(!dept_working())) {
+		m->nocheck = true;
+		return;
+	}
+
+	if (DEPT_WARN_ON(sub_u < 0)) {
+		m->nocheck = true;
+		return;
+	}
+
+	if (DEPT_WARN_ON(sub_u >= DEPT_MAX_SUBCLASSES_USR)) {
+		m->nocheck = true;
+		return;
+	}
+
+	/*
+	 * Allow recursive entrance.
+	 */
+	flags = dept_enter_recursive();
+
+	clean_classes_cache(&m->map_key);
+
+	m->keys = k;
+	m->sub_u = sub_u;
+	m->name = n;
+	m->wgen = 0U;
+	m->nocheck = !valid_key(k);
+
+	dept_exit_recursive(flags);
+}
+EXPORT_SYMBOL_GPL(dept_map_init);
+
+void dept_map_reinit(struct dept_map *m, struct dept_key *k, int sub_u,
+		     const char *n)
+{
+	unsigned long flags;
+
+	if (unlikely(!dept_working())) {
+		m->nocheck = true;
+		return;
+	}
+
+	/*
+	 * Allow recursive entrance.
+	 */
+	flags = dept_enter_recursive();
+
+	if (k) {
+		clean_classes_cache(&m->map_key);
+		m->keys = k;
+		m->nocheck = !valid_key(k);
+	}
+
+	if (sub_u >= 0 && sub_u < DEPT_MAX_SUBCLASSES_USR)
+		m->sub_u = sub_u;
+
+	if (n)
+		m->name = n;
+
+	m->wgen = 0U;
+
+	dept_exit_recursive(flags);
+}
+EXPORT_SYMBOL_GPL(dept_map_reinit);
+
+void dept_map_copy(struct dept_map *to, struct dept_map *from)
+{
+	if (unlikely(!dept_working())) {
+		to->nocheck = true;
+		return;
+	}
+
+	*to = *from;
+
+	/*
+	 * XXX: 'to' might be in a stack or something. Using the address
+	 * in a stack segment as a key is meaningless. Just ignore the
+	 * case for now.
+	 */
+	if (!to->keys) {
+		to->nocheck = true;
+		return;
+	}
+
+	/*
+	 * Since the class cache can be modified concurrently we could
+	 * observe half pointers (64bit arch using 32bit copy insns).
+	 * Therefore clear the caches and take the performance hit.
+	 *
+	 * XXX: Doesn't work well with lockdep_set_class_and_subclass()
+	 *      since that relies on cache abuse.
+	 */
+	clean_classes_cache(&to->map_key);
+}
+
+static LIST_HEAD(classes);
+
+static inline bool within(const void *addr, void *start, unsigned long size)
+{
+	return addr >= start && addr < start + size;
+}
+
+void dept_free_range(void *start, unsigned int sz)
+{
+	struct dept_task *dt = dept_task();
+	struct dept_class *c, *n;
+	unsigned long flags;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	if (dt->recursive) {
+		DEPT_STOP("Failed to successfully free Dept objects.\n");
+		return;
+	}
+
+	flags = dept_enter();
+
+	/*
+	 * dept_free_range() should not fail.
+	 *
+	 * FIXME: Should be fixed if dept_free_range() causes deadlock
+	 * with dept_lock().
+	 */
+	while (unlikely(!dept_lock()))
+		cpu_relax();
+
+	list_for_each_entry_safe(c, n, &classes, all_node) {
+		if (!within((void *)c->key, start, sz) &&
+		    !within(c->name, start, sz))
+			continue;
+
+		hash_del_class(c);
+		disconnect_class(c);
+		list_del(&c->all_node);
+		invalidate_class(c);
+
+		/*
+		 * Actual deletion will happen on the rcu callback
+		 * that has been added in disconnect_class().
+		 */
+		del_class(c);
+	}
+	dept_unlock();
+	dept_exit(flags);
+
+	/*
+	 * Wait until even lockless hash_lookup_class() for the class
+	 * returns NULL.
+	 */
+	might_sleep();
+	synchronize_rcu();
+}
+
+static inline int sub_id(struct dept_map *m, int e)
+{
+	return (m ? m->sub_u : 0) + e * DEPT_MAX_SUBCLASSES_USR;
+}
+
+static struct dept_class *check_new_class(struct dept_key *local,
+					  struct dept_key *k, int sub_id,
+					  const char *n, bool sched_map)
+{
+	struct dept_class *c = NULL;
+
+	if (DEPT_WARN_ON(sub_id >= DEPT_MAX_SUBCLASSES))
+		return NULL;
+
+	if (DEPT_WARN_ON(!k))
+		return NULL;
+
+	/*
+	 * XXX: Assume that users prevent the map from using if any of
+	 * the cached keys has been invalidated. If not, the cache,
+	 * local->classes should not be used because it would be racy
+	 * with class deletion.
+	 */
+	if (local && sub_id < DEPT_MAX_SUBCLASSES_CACHE)
+		c = READ_ONCE(local->classes[sub_id]);
+
+	if (c)
+		return c;
+
+	c = lookup_class((unsigned long)k->base + sub_id);
+	if (c)
+		goto caching;
+
+	if (unlikely(!dept_lock()))
+		return NULL;
+
+	c = lookup_class((unsigned long)k->base + sub_id);
+	if (unlikely(c))
+		goto unlock;
+
+	c = new_class();
+	if (unlikely(!c))
+		goto unlock;
+
+	c->name = n;
+	c->sched_map = sched_map;
+	c->sub_id = sub_id;
+	c->key = (unsigned long)(k->base + sub_id);
+	hash_add_class(c);
+	list_add(&c->all_node, &classes);
+unlock:
+	dept_unlock();
+caching:
+	if (local && sub_id < DEPT_MAX_SUBCLASSES_CACHE)
+		WRITE_ONCE(local->classes[sub_id], c);
+
+	return c;
+}
+
+/*
+ * Called between dept_enter() and dept_exit().
+ */
+static void __dept_wait(struct dept_map *m, unsigned long w_f,
+			unsigned long ip, const char *w_fn, int sub_l,
+			bool sched_sleep, bool sched_map)
+{
+	int e;
+
+	/*
+	 * Be as conservative as possible. In case of mulitple waits for
+	 * a single dept_map, we are going to keep only the last wait's
+	 * wgen for simplicity - keeping all wgens seems overengineering.
+	 *
+	 * Of course, it might cause missing some dependencies that
+	 * would rarely, probabily never, happen but it helps avoid
+	 * false positive report.
+	 */
+	for_each_set_bit(e, &w_f, DEPT_MAX_SUBCLASSES_EVT) {
+		struct dept_class *c;
+		struct dept_key *k;
+
+		k = m->keys ?: &m->map_key;
+		c = check_new_class(&m->map_key, k,
+				    sub_id(m, e), m->name, sched_map);
+		if (!c)
+			continue;
+
+		add_wait(c, ip, w_fn, sub_l, sched_sleep);
+	}
+}
+
+/*
+ * Called between dept_enter() and dept_exit().
+ */
+static void __dept_event(struct dept_map *m, unsigned long e_f,
+			 unsigned long ip, const char *e_fn,
+			 bool sched_map)
+{
+	struct dept_class *c;
+	struct dept_key *k;
+	int e;
+
+	e = find_first_bit(&e_f, DEPT_MAX_SUBCLASSES_EVT);
+
+	if (DEPT_WARN_ON(e >= DEPT_MAX_SUBCLASSES_EVT))
+		goto exit;
+
+	/*
+	 * An event is an event. If the caller passed more than single
+	 * event, then warn it and handle the event corresponding to
+	 * the first bit anyway.
+	 */
+	DEPT_WARN_ON(1UL << e != e_f);
+
+	k = m->keys ?: &m->map_key;
+	c = check_new_class(&m->map_key, k, sub_id(m, e), m->name, sched_map);
+
+	if (c && add_ecxt(m, c, 0UL, NULL, e_fn, 0)) {
+		do_event(m, c, READ_ONCE(m->wgen), ip);
+		pop_ecxt(m, c);
+	}
+exit:
+	/*
+	 * Keep the map diabled until the next sleep.
+	 */
+	WRITE_ONCE(m->wgen, 0U);
+}
+
+void dept_wait(struct dept_map *m, unsigned long w_f,
+	       unsigned long ip, const char *w_fn, int sub_l)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	if (dt->recursive)
+		return;
+
+	if (m->nocheck)
+		return;
+
+	flags = dept_enter();
+
+	__dept_wait(m, w_f, ip, w_fn, sub_l, false, false);
+
+	dept_exit(flags);
+}
+EXPORT_SYMBOL_GPL(dept_wait);
+
+void dept_stage_wait(struct dept_map *m, struct dept_key *k,
+		     unsigned long ip, const char *w_fn)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	if (m && m->nocheck)
+		return;
+
+	/*
+	 * Either m or k should be passed. Which means Dept relies on
+	 * either its own map or the caller's position in the code when
+	 * determining its class.
+	 */
+	if (DEPT_WARN_ON(!m && !k))
+		return;
+
+	/*
+	 * Allow recursive entrance.
+	 */
+	flags = dept_enter_recursive();
+
+	arch_spin_lock(&stage_spin);
+
+	/*
+	 * Ensure the outmost dept_stage_wait() works.
+	 */
+	if (dt->stage_m.keys)
+		goto unlock;
+
+	if (m) {
+		dt->stage_m = *m;
+
+		/*
+		 * Ensure dt->stage_m.keys != NULL and it works with the
+		 * map's map_key, not stage_m's one when ->keys == NULL.
+		 */
+		if (!m->keys)
+			dt->stage_m.keys = &m->map_key;
+	} else {
+		dt->stage_m.name = w_fn;
+		dt->stage_sched_map = true;
+	}
+
+	/*
+	 * dept_map_reinit() includes WRITE_ONCE(->wgen, 0U) that
+	 * effectively disables the map just in case real sleep won't
+	 * happen. dept_request_event_wait_commit() will enable it.
+	 */
+	dept_map_reinit(&dt->stage_m, k, -1, NULL);
+
+	dt->stage_w_fn = w_fn;
+	dt->stage_ip = ip;
+unlock:
+	arch_spin_unlock(&stage_spin);
+
+	dept_exit_recursive(flags);
+}
+EXPORT_SYMBOL_GPL(dept_stage_wait);
+
+void dept_clean_stage(void)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	/*
+	 * Allow recursive entrance.
+	 */
+	flags = dept_enter_recursive();
+
+	arch_spin_lock(&stage_spin);
+	memset(&dt->stage_m, 0x0, sizeof(struct dept_map));
+	dt->stage_sched_map = false;
+	dt->stage_w_fn = NULL;
+	dt->stage_ip = 0UL;
+	arch_spin_unlock(&stage_spin);
+
+	dept_exit_recursive(flags);
+}
+EXPORT_SYMBOL_GPL(dept_clean_stage);
+
+/*
+ * Always called from __schedule().
+ */
+void dept_request_event_wait_commit(void)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+	unsigned int wg;
+	unsigned long ip;
+	const char *w_fn;
+	bool sched_map;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	/*
+	 * It's impossible that __schedule() is called while Dept is
+	 * working that already disabled IRQ at the entrance.
+	 */
+	if (DEPT_WARN_ON(dt->recursive))
+		return;
+
+	flags = dept_enter();
+
+	/*
+	 * Checks if current has staged a wait.
+	 */
+	if (!dt->stage_m.keys)
+		goto exit;
+
+	w_fn = dt->stage_w_fn;
+	ip = dt->stage_ip;
+	sched_map = dt->stage_sched_map;
+
+	/*
+	 * Avoid zero wgen.
+	 */
+	wg = atomic_inc_return(&wgen) ?: atomic_inc_return(&wgen);
+	WRITE_ONCE(dt->stage_m.wgen, wg);
+
+	__dept_wait(&dt->stage_m, 1UL, ip, w_fn, 0, true, sched_map);
+exit:
+	dept_exit(flags);
+}
+
+/*
+ * Always called from try_to_wake_up().
+ */
+void dept_stage_event(struct task_struct *t, unsigned long ip)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+	struct dept_map m;
+	bool sched_map;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	if (dt->recursive)
+		return;
+
+	flags = dept_enter();
+
+	arch_spin_lock(&stage_spin);
+	m = t->dept_task.stage_m;
+	sched_map = t->dept_task.stage_sched_map;
+	arch_spin_unlock(&stage_spin);
+
+	/*
+	 * ->stage_m.keys should not be NULL if it's in use. Should
+	 * make sure that it's not NULL when staging a valid map.
+	 */
+	if (!m.keys)
+		goto exit;
+
+	__dept_event(&m, 1UL, ip, "try_to_wake_up", sched_map);
+exit:
+	dept_exit(flags);
+}
+
+/*
+ * Modifies the latest ecxt corresponding to m and e_f.
+ */
+void dept_map_ecxt_modify(struct dept_map *m, unsigned long e_f,
+			  struct dept_key *new_k, unsigned long new_e_f,
+			  unsigned long new_ip, const char *new_c_fn,
+			  const char *new_e_fn, int new_sub_l)
+{
+	struct dept_task *dt = dept_task();
+	struct dept_ecxt_held *eh;
+	struct dept_class *c;
+	struct dept_key *k;
+	unsigned long flags;
+	int pos = -1;
+	int new_e;
+	int e;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	/*
+	 * XXX: Couldn't handle re-enterance cases. Ingore it for now.
+	 */
+	if (dt->recursive)
+		return;
+
+	/*
+	 * Should go ahead no matter whether ->nocheck == true or not
+	 * because ->nocheck value can be changed within the ecxt area
+	 * delimitated by dept_ecxt_enter() and dept_ecxt_exit().
+	 */
+
+	flags = dept_enter();
+
+	for_each_set_bit(e, &e_f, DEPT_MAX_SUBCLASSES_EVT) {
+		k = m->keys ?: &m->map_key;
+		c = check_new_class(&m->map_key, k,
+				    sub_id(m, e), m->name, false);
+		if (!c)
+			continue;
+
+		/*
+		 * When it found an ecxt for any event in e_f, done.
+		 */
+		pos = find_ecxt_pos(m, c, true);
+		if (pos != -1)
+			break;
+	}
+
+	if (unlikely(pos == -1))
+		goto exit;
+
+	eh = dt->ecxt_held + pos;
+	new_sub_l = new_sub_l >= 0 ? new_sub_l : eh->sub_l;
+
+	new_e = find_first_bit(&new_e_f, DEPT_MAX_SUBCLASSES_EVT);
+
+	if (new_e < DEPT_MAX_SUBCLASSES_EVT)
+		/*
+		 * Let it work with the first bit anyway.
+		 */
+		DEPT_WARN_ON(1UL << new_e != new_e_f);
+	else
+		new_e = e;
+
+	pop_ecxt(m, c);
+
+	/*
+	 * Apply the key to the map.
+	 */
+	if (new_k)
+		dept_map_reinit(m, new_k, -1, NULL);
+
+	k = m->keys ?: &m->map_key;
+	c = check_new_class(&m->map_key, k, sub_id(m, new_e), m->name, false);
+
+	if (c && add_ecxt(m, c, new_ip, new_c_fn, new_e_fn, new_sub_l))
+		goto exit;
+
+	/*
+	 * Successfully pop_ecxt()ed but failed to add_ecxt().
+	 */
+	dt->missing_ecxt++;
+exit:
+	dept_exit(flags);
+}
+EXPORT_SYMBOL_GPL(dept_map_ecxt_modify);
+
+void dept_ecxt_enter(struct dept_map *m, unsigned long e_f, unsigned long ip,
+		     const char *c_fn, const char *e_fn, int sub_l)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+	struct dept_class *c;
+	struct dept_key *k;
+	int e;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	if (dt->recursive) {
+		dt->missing_ecxt++;
+		return;
+	}
+
+	/*
+	 * Should go ahead no matter whether ->nocheck == true or not
+	 * because ->nocheck value can be changed within the ecxt area
+	 * delimitated by dept_ecxt_enter() and dept_ecxt_exit().
+	 */
+
+	flags = dept_enter();
+
+	e = find_first_bit(&e_f, DEPT_MAX_SUBCLASSES_EVT);
+
+	if (e >= DEPT_MAX_SUBCLASSES_EVT)
+		goto missing_ecxt;
+
+	/*
+	 * An event is an event. If the caller passed more than single
+	 * event, then warn it and handle the event corresponding to
+	 * the first bit anyway.
+	 */
+	DEPT_WARN_ON(1UL << e != e_f);
+
+	k = m->keys ?: &m->map_key;
+	c = check_new_class(&m->map_key, k, sub_id(m, e), m->name, false);
+
+	if (c && add_ecxt(m, c, ip, c_fn, e_fn, sub_l))
+		goto exit;
+missing_ecxt:
+	dt->missing_ecxt++;
+exit:
+	dept_exit(flags);
+}
+EXPORT_SYMBOL_GPL(dept_ecxt_enter);
+
+bool dept_ecxt_holding(struct dept_map *m, unsigned long e_f)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+	bool ret = false;
+	int e;
+
+	if (unlikely(!dept_working()))
+		return false;
+
+	if (dt->recursive)
+		return false;
+
+	flags = dept_enter();
+
+	for_each_set_bit(e, &e_f, DEPT_MAX_SUBCLASSES_EVT) {
+		struct dept_class *c;
+		struct dept_key *k;
+
+		k = m->keys ?: &m->map_key;
+		c = check_new_class(&m->map_key, k,
+				    sub_id(m, e), m->name, false);
+		if (!c)
+			continue;
+
+		if (find_ecxt_pos(m, c, true) != -1) {
+			ret = true;
+			break;
+		}
+	}
+
+	dept_exit(flags);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(dept_ecxt_holding);
+
+void dept_request_event(struct dept_map *m)
+{
+	unsigned long flags;
+	unsigned int wg;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	if (m->nocheck)
+		return;
+
+	/*
+	 * Allow recursive entrance.
+	 */
+	flags = dept_enter_recursive();
+
+	/*
+	 * Avoid zero wgen.
+	 */
+	wg = atomic_inc_return(&wgen) ?: atomic_inc_return(&wgen);
+	WRITE_ONCE(m->wgen, wg);
+
+	dept_exit_recursive(flags);
+}
+EXPORT_SYMBOL_GPL(dept_request_event);
+
+void dept_event(struct dept_map *m, unsigned long e_f,
+		unsigned long ip, const char *e_fn)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	if (dt->recursive) {
+		/*
+		 * Dept won't work with this even though an event
+		 * context has been asked. Don't make it confused at
+		 * handling the event. Disable it until the next.
+		 */
+		WRITE_ONCE(m->wgen, 0U);
+		return;
+	}
+
+	if (m->nocheck)
+		return;
+
+	flags = dept_enter();
+
+	__dept_event(m, e_f, ip, e_fn, false);
+
+	dept_exit(flags);
+}
+EXPORT_SYMBOL_GPL(dept_event);
+
+void dept_ecxt_exit(struct dept_map *m, unsigned long e_f,
+		    unsigned long ip)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+	int e;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	if (dt->recursive) {
+		dt->missing_ecxt--;
+		return;
+	}
+
+	/*
+	 * Should go ahead no matter whether ->nocheck == true or not
+	 * because ->nocheck value can be changed within the ecxt area
+	 * delimitated by dept_ecxt_enter() and dept_ecxt_exit().
+	 */
+
+	flags = dept_enter();
+
+	for_each_set_bit(e, &e_f, DEPT_MAX_SUBCLASSES_EVT) {
+		struct dept_class *c;
+		struct dept_key *k;
+
+		k = m->keys ?: &m->map_key;
+		c = check_new_class(&m->map_key, k,
+				    sub_id(m, e), m->name, false);
+		if (!c)
+			continue;
+
+		/*
+		 * When it found an ecxt for any event in e_f, done.
+		 */
+		if (pop_ecxt(m, c))
+			goto exit;
+	}
+
+	dt->missing_ecxt--;
+exit:
+	dept_exit(flags);
+}
+EXPORT_SYMBOL_GPL(dept_ecxt_exit);
+
+void dept_task_exit(struct task_struct *t)
+{
+	struct dept_task *dt = &t->dept_task;
+	int i;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	raw_local_irq_disable();
+
+	if (dt->stack)
+		put_stack(dt->stack);
+
+	for (i = 0; i < dt->ecxt_held_pos; i++) {
+		if (dt->ecxt_held[i].class)
+			put_class(dt->ecxt_held[i].class);
+		if (dt->ecxt_held[i].ecxt)
+			put_ecxt(dt->ecxt_held[i].ecxt);
+	}
+
+	for (i = 0; i < DEPT_MAX_WAIT_HIST; i++)
+		if (dt->wait_hist[i].wait)
+			put_wait(dt->wait_hist[i].wait);
+
+	dt->task_exit = true;
+	dept_off();
+
+	raw_local_irq_enable();
+}
+
+void dept_task_init(struct task_struct *t)
+{
+	memset(&t->dept_task, 0x0, sizeof(struct dept_task));
+}
+
+void dept_key_init(struct dept_key *k)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+	int sub_id;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	if (dt->recursive) {
+		DEPT_STOP("Key initialization fails.\n");
+		return;
+	}
+
+	flags = dept_enter();
+
+	clean_classes_cache(k);
+
+	/*
+	 * dept_key_init() should not fail.
+	 *
+	 * FIXME: Should be fixed if dept_key_init() causes deadlock
+	 * with dept_lock().
+	 */
+	while (unlikely(!dept_lock()))
+		cpu_relax();
+
+	for (sub_id = 0; sub_id < DEPT_MAX_SUBCLASSES; sub_id++) {
+		struct dept_class *c;
+
+		c = lookup_class((unsigned long)k->base + sub_id);
+		if (!c)
+			continue;
+
+		DEPT_STOP("The class(%s/%d) has not been removed.\n",
+			  c->name, sub_id);
+		break;
+	}
+
+	dept_unlock();
+	dept_exit(flags);
+}
+EXPORT_SYMBOL_GPL(dept_key_init);
+
+void dept_key_destroy(struct dept_key *k)
+{
+	struct dept_task *dt = dept_task();
+	unsigned long flags;
+	int sub_id;
+
+	if (unlikely(!dept_working()))
+		return;
+
+	if (dt->recursive == 1 && dt->task_exit) {
+		/*
+		 * Need to allow to go ahead in this case where
+		 * ->recursive has been set to 1 by dept_off() in
+		 * dept_task_exit() and ->task_exit has been set to
+		 * true in dept_task_exit().
+		 */
+	} else if (dt->recursive) {
+		DEPT_STOP("Key destroying fails.\n");
+		return;
+	}
+
+	flags = dept_enter();
+
+	/*
+	 * dept_key_destroy() should not fail.
+	 *
+	 * FIXME: Should be fixed if dept_key_destroy() causes deadlock
+	 * with dept_lock().
+	 */
+	while (unlikely(!dept_lock()))
+		cpu_relax();
+
+	for (sub_id = 0; sub_id < DEPT_MAX_SUBCLASSES; sub_id++) {
+		struct dept_class *c;
+
+		c = lookup_class((unsigned long)k->base + sub_id);
+		if (!c)
+			continue;
+
+		hash_del_class(c);
+		disconnect_class(c);
+		list_del(&c->all_node);
+		invalidate_class(c);
+
+		/*
+		 * Actual deletion will happen on the rcu callback
+		 * that has been added in disconnect_class().
+		 */
+		del_class(c);
+	}
+
+	dept_unlock();
+	dept_exit(flags);
+
+	/*
+	 * Wait until even lockless hash_lookup_class() for the class
+	 * returns NULL.
+	 */
+	might_sleep();
+	synchronize_rcu();
+}
+EXPORT_SYMBOL_GPL(dept_key_destroy);
+
+static void move_llist(struct llist_head *to, struct llist_head *from)
+{
+	struct llist_node *first = llist_del_all(from);
+	struct llist_node *last;
+
+	if (!first)
+		return;
+
+	for (last = first; last->next; last = last->next);
+	llist_add_batch(first, last, to);
+}
+
+static void migrate_per_cpu_pool(void)
+{
+	const int boot_cpu = 0;
+	int i;
+
+	/*
+	 * The boot CPU has been using the temperal local pool so far.
+	 * From now on that per_cpu areas have been ready, use the
+	 * per_cpu local pool instead.
+	 */
+	DEPT_WARN_ON(smp_processor_id() != boot_cpu);
+	for (i = 0; i < OBJECT_NR; i++) {
+		struct llist_head *from;
+		struct llist_head *to;
+
+		from = &pool[i].boot_pool;
+		to = per_cpu_ptr(pool[i].lpool, boot_cpu);
+		move_llist(to, from);
+	}
+}
+
+#define B2KB(B) ((B) / 1024)
+
+/*
+ * Should be called after setup_per_cpu_areas() and before no non-boot
+ * CPUs have been on.
+ */
+void __init dept_init(void)
+{
+	size_t mem_total = 0;
+
+	local_irq_disable();
+	dept_per_cpu_ready = 1;
+	migrate_per_cpu_pool();
+	local_irq_enable();
+
+#define HASH(id, bits) BUILD_BUG_ON(1 << (bits) <= 0);
+	#include "dept_hash.h"
+#undef  HASH
+#define OBJECT(id, nr) mem_total += sizeof(struct dept_##id) * nr;
+	#include "dept_object.h"
+#undef  OBJECT
+#define HASH(id, bits) mem_total += sizeof(struct hlist_head) * (1 << (bits));
+	#include "dept_hash.h"
+#undef  HASH
+
+	pr_info("DEPendency Tracker: Copyright (c) 2020 LG Electronics, Inc., Byungchul Park\n");
+	pr_info("... DEPT_MAX_STACK_ENTRY: %d\n", DEPT_MAX_STACK_ENTRY);
+	pr_info("... DEPT_MAX_WAIT_HIST  : %d\n", DEPT_MAX_WAIT_HIST);
+	pr_info("... DEPT_MAX_ECXT_HELD  : %d\n", DEPT_MAX_ECXT_HELD);
+	pr_info("... DEPT_MAX_SUBCLASSES : %d\n", DEPT_MAX_SUBCLASSES);
+#define OBJECT(id, nr)							\
+	pr_info("... memory used by %s: %zu KB\n",			\
+	       #id, B2KB(sizeof(struct dept_##id) * nr));
+	#include "dept_object.h"
+#undef  OBJECT
+#define HASH(id, bits)							\
+	pr_info("... hash list head used by %s: %zu KB\n",		\
+	       #id, B2KB(sizeof(struct hlist_head) * (1 << (bits))));
+	#include "dept_hash.h"
+#undef  HASH
+	pr_info("... total memory used by objects and hashs: %zu KB\n", B2KB(mem_total));
+	pr_info("... per task memory footprint: %zu bytes\n", sizeof(struct dept_task));
+}
diff --git a/kernel/dependency/dept_hash.h b/kernel/dependency/dept_hash.h
new file mode 100644
index 000000000000..fd85aab1fdfb
--- /dev/null
+++ b/kernel/dependency/dept_hash.h
@@ -0,0 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * HASH(id, bits)
+ *
+ * id  : Id for the object of struct dept_##id.
+ * bits: 1UL << bits is the hash table size.
+ */
+
+HASH(dep, 12)
+HASH(class, 12)
diff --git a/kernel/dependency/dept_object.h b/kernel/dependency/dept_object.h
new file mode 100644
index 000000000000..0b7eb16fe9fb
--- /dev/null
+++ b/kernel/dependency/dept_object.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * OBJECT(id, nr)
+ *
+ * id: Id for the object of struct dept_##id.
+ * nr: # of the object that should be kept in the pool.
+ */
+
+OBJECT(dep, 1024 * 8)
+OBJECT(class, 1024 * 8)
+OBJECT(stack, 1024 * 32)
+OBJECT(ecxt, 1024 * 16)
+OBJECT(wait, 1024 * 32)
diff --git a/kernel/exit.c b/kernel/exit.c
index edb50b4c9972..8d3850eded25 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -923,6 +923,7 @@ void __noreturn do_exit(long code)
 	exit_tasks_rcu_finish();
 
 	lockdep_free_task(tsk);
+	dept_task_exit(tsk);
 	do_task_dead();
 }
 
diff --git a/kernel/fork.c b/kernel/fork.c
index 41c964104b58..20fa77c47db2 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -99,6 +99,7 @@
 #include <linux/stackprotector.h>
 #include <linux/user_events.h>
 #include <linux/iommu.h>
+#include <linux/dept.h>
 
 #include <asm/pgalloc.h>
 #include <linux/uaccess.h>
@@ -2460,6 +2461,7 @@ __latent_entropy struct task_struct *copy_process(
 #ifdef CONFIG_LOCKDEP
 	lockdep_init_task(p);
 #endif
+	dept_task_init(p);
 
 #ifdef CONFIG_DEBUG_MUTEXES
 	p->blocked_on = NULL; /* not blocked yet */
diff --git a/kernel/module/main.c b/kernel/module/main.c
index 4e2cf784cf8c..aa4bd4dcc9aa 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -1235,12 +1235,14 @@ static void free_mod_mem(struct module *mod)
 
 		/* Free lock-classes; relies on the preceding sync_rcu(). */
 		lockdep_free_key_range(mod_mem->base, mod_mem->size);
+		dept_free_range(mod_mem->base, mod_mem->size);
 		if (mod_mem->size)
 			module_memory_free(mod_mem->base, type);
 	}
 
 	/* MOD_DATA hosts mod, so free it at last */
 	lockdep_free_key_range(mod->mem[MOD_DATA].base, mod->mem[MOD_DATA].size);
+	dept_free_range(mod->mem[MOD_DATA].base, mod->mem[MOD_DATA].size);
 	module_memory_free(mod->mem[MOD_DATA].base, MOD_DATA);
 }
 
@@ -3019,6 +3021,8 @@ static int load_module(struct load_info *info, const char __user *uargs,
 	for_class_mod_mem_type(type, core_data) {
 		lockdep_free_key_range(mod->mem[type].base,
 				       mod->mem[type].size);
+		dept_free_range(mod->mem[type].base,
+				mod->mem[type].size);
 	}
 
 	module_deallocate(mod, info);
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index a68d1276bab0..243f3de42721 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -64,6 +64,7 @@
 #include <linux/vtime.h>
 #include <linux/wait_api.h>
 #include <linux/workqueue_api.h>
+#include <linux/dept.h>
 
 #ifdef CONFIG_PREEMPT_DYNAMIC
 # ifdef CONFIG_GENERIC_ENTRY
@@ -4162,6 +4163,7 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
 	int cpu, success = 0;
 
 	preempt_disable();
+	dept_stage_event(p, _RET_IP_);
 	if (p == current) {
 		/*
 		 * We're waking current, this means 'p->on_rq' and 'task_cpu(p)
@@ -6560,6 +6562,12 @@ static void __sched notrace __schedule(unsigned int sched_mode)
 	rq = cpu_rq(cpu);
 	prev = rq->curr;
 
+	prev_state = READ_ONCE(prev->__state);
+	if (sched_mode != SM_PREEMPT && prev_state & TASK_NORMAL)
+		dept_request_event_wait_commit();
+
+	dept_sched_enter();
+
 	schedule_debug(prev, !!sched_mode);
 
 	if (sched_feat(HRTICK) || sched_feat(HRTICK_DL))
@@ -6674,6 +6682,7 @@ static void __sched notrace __schedule(unsigned int sched_mode)
 		__balance_callbacks(rq);
 		raw_spin_rq_unlock_irq(rq);
 	}
+	dept_sched_exit();
 }
 
 void __noreturn do_task_dead(void)
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index ce51d4dc6803..aa62caa4dc14 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1207,6 +1207,33 @@ config DEBUG_PREEMPT
 
 menu "Lock Debugging (spinlocks, mutexes, etc...)"
 
+config DEPT
+	bool "Dependency tracking (EXPERIMENTAL)"
+	depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
+	select DEBUG_SPINLOCK
+	select DEBUG_MUTEXES
+	select DEBUG_RT_MUTEXES if RT_MUTEXES
+	select DEBUG_RWSEMS
+	select DEBUG_WW_MUTEX_SLOWPATH
+	select DEBUG_LOCK_ALLOC
+	select TRACE_IRQFLAGS
+	select STACKTRACE
+	select FRAME_POINTER if !MIPS && !PPC && !ARM && !S390 && !MICROBLAZE && !ARC && !X86
+	select KALLSYMS
+	select KALLSYMS_ALL
+	select PROVE_LOCKING
+	default n
+	help
+	  Check dependencies between wait and event and report it if
+	  deadlock possibility has been detected. Multiple reports are
+	  allowed if there are more than a single problem.
+
+	  This feature is considered EXPERIMENTAL that might produce
+	  false positive reports because new dependencies start to be
+	  tracked, that have never been tracked before. It's worth
+	  noting, to mitigate the impact by the false positives, multi
+	  reporting has been supported.
+
 config LOCK_DEBUGGING_SUPPORT
 	bool
 	depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
diff --git a/lib/locking-selftest.c b/lib/locking-selftest.c
index 8d24279fad05..cd89138d62ba 100644
--- a/lib/locking-selftest.c
+++ b/lib/locking-selftest.c
@@ -1398,6 +1398,8 @@ static void reset_locks(void)
 	local_irq_disable();
 	lockdep_free_key_range(&ww_lockdep.acquire_key, 1);
 	lockdep_free_key_range(&ww_lockdep.mutex_key, 1);
+	dept_free_range(&ww_lockdep.acquire_key, 1);
+	dept_free_range(&ww_lockdep.mutex_key, 1);
 
 	I1(A); I1(B); I1(C); I1(D);
 	I1(X1); I1(X2); I1(Y1); I1(Y2); I1(Z1); I1(Z2);
-- 
2.40.0


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

* [Intel-xe] [CI 03/27] dept: Add single event dependency tracker APIs
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 01/27] llist: Move llist_{head, node} definition to types.h Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 02/27] dept: Implement Dept(Dependency Tracker) Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 04/27] dept: Add lock " Gwan-gyeong Mun
                   ` (30 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Wrapped the base APIs for easier annotation on wait and event. Start
with supporting waiters on each single event. More general support for
multiple events is a future work. Do more when the need arises.

How to annotate (the simplest way):

1. Initaialize a map for the interesting wait.

   /*
    * Recommand to place along with the wait instance.
    */
   struct dept_map my_wait;

   /*
    * Recommand to place in the initialization code.
    */
   sdt_map_init(&my_wait);

2. Place the following at the wait code.

   sdt_wait(&my_wait);

3. Place the following at the event code.

   sdt_event(&my_wait);

That's it!

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/dept_sdt.h | 62 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100644 include/linux/dept_sdt.h

diff --git a/include/linux/dept_sdt.h b/include/linux/dept_sdt.h
new file mode 100644
index 000000000000..12a793b90c7e
--- /dev/null
+++ b/include/linux/dept_sdt.h
@@ -0,0 +1,62 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Single-event Dependency Tracker
+ *
+ * Started by Byungchul Park <max.byungchul.park@gmail.com>:
+ *
+ *  Copyright (c) 2020 LG Electronics, Inc., Byungchul Park
+ */
+
+#ifndef __LINUX_DEPT_SDT_H
+#define __LINUX_DEPT_SDT_H
+
+#include <linux/kernel.h>
+#include <linux/dept.h>
+
+#ifdef CONFIG_DEPT
+#define sdt_map_init(m)							\
+	do {								\
+		static struct dept_key __key;				\
+		dept_map_init(m, &__key, 0, #m);			\
+	} while (0)
+
+#define sdt_map_init_key(m, k)		dept_map_init(m, k, 0, #m)
+
+#define sdt_wait(m)							\
+	do {								\
+		dept_request_event(m);					\
+		dept_wait(m, 1UL, _THIS_IP_, __func__, 0);		\
+	} while (0)
+
+/*
+ * sdt_might_sleep() and its family will be committed in __schedule()
+ * when it actually gets to __schedule(). Both dept_request_event() and
+ * dept_wait() will be performed on the commit.
+ */
+
+/*
+ * Use the code location as the class key if an explicit map is not used.
+ */
+#define sdt_might_sleep_start(m)					\
+	do {								\
+		struct dept_map *__m = m;				\
+		static struct dept_key __key;				\
+		dept_stage_wait(__m, __m ? NULL : &__key, _THIS_IP_, __func__);\
+	} while (0)
+
+#define sdt_might_sleep_end()		dept_clean_stage()
+
+#define sdt_ecxt_enter(m)		dept_ecxt_enter(m, 1UL, _THIS_IP_, "start", "event", 0)
+#define sdt_event(m)			dept_event(m, 1UL, _THIS_IP_, __func__)
+#define sdt_ecxt_exit(m)		dept_ecxt_exit(m, 1UL, _THIS_IP_)
+#else /* !CONFIG_DEPT */
+#define sdt_map_init(m)			do { } while (0)
+#define sdt_map_init_key(m, k)		do { (void)(k); } while (0)
+#define sdt_wait(m)			do { } while (0)
+#define sdt_might_sleep_start(m)	do { } while (0)
+#define sdt_might_sleep_end()		do { } while (0)
+#define sdt_ecxt_enter(m)		do { } while (0)
+#define sdt_event(m)			do { } while (0)
+#define sdt_ecxt_exit(m)		do { } while (0)
+#endif
+#endif /* __LINUX_DEPT_SDT_H */
-- 
2.40.0


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

* [Intel-xe] [CI 04/27] dept: Add lock dependency tracker APIs
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (2 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 03/27] dept: Add single event dependency tracker APIs Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 05/27] dept: Tie to Lockdep and IRQ tracing Gwan-gyeong Mun
                   ` (29 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Wrapped the base APIs for easier annotation on typical lock.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/dept_ldt.h | 77 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)
 create mode 100644 include/linux/dept_ldt.h

diff --git a/include/linux/dept_ldt.h b/include/linux/dept_ldt.h
new file mode 100644
index 000000000000..062613e89fc3
--- /dev/null
+++ b/include/linux/dept_ldt.h
@@ -0,0 +1,77 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Lock Dependency Tracker
+ *
+ * Started by Byungchul Park <max.byungchul.park@gmail.com>:
+ *
+ *  Copyright (c) 2020 LG Electronics, Inc., Byungchul Park
+ */
+
+#ifndef __LINUX_DEPT_LDT_H
+#define __LINUX_DEPT_LDT_H
+
+#include <linux/dept.h>
+
+#ifdef CONFIG_DEPT
+#define LDT_EVT_L			1UL
+#define LDT_EVT_R			2UL
+#define LDT_EVT_W			1UL
+#define LDT_EVT_RW			(LDT_EVT_R | LDT_EVT_W)
+#define LDT_EVT_ALL			(LDT_EVT_L | LDT_EVT_RW)
+
+#define ldt_init(m, k, su, n)		dept_map_init(m, k, su, n)
+#define ldt_lock(m, sl, t, n, i)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_L, i, "trylock", "unlock", sl);\
+		else {							\
+			dept_wait(m, LDT_EVT_L, i, "lock", sl);		\
+			dept_ecxt_enter(m, LDT_EVT_L, i, "lock", "unlock", sl);\
+		}							\
+	} while (0)
+
+#define ldt_rlock(m, sl, t, n, i, q)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_R, i, "read_trylock", "read_unlock", sl);\
+		else {							\
+			dept_wait(m, q ? LDT_EVT_RW : LDT_EVT_W, i, "read_lock", sl);\
+			dept_ecxt_enter(m, LDT_EVT_R, i, "read_lock", "read_unlock", sl);\
+		}							\
+	} while (0)
+
+#define ldt_wlock(m, sl, t, n, i)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_W, i, "write_trylock", "write_unlock", sl);\
+		else {							\
+			dept_wait(m, LDT_EVT_RW, i, "write_lock", sl);	\
+			dept_ecxt_enter(m, LDT_EVT_W, i, "write_lock", "write_unlock", sl);\
+		}							\
+	} while (0)
+
+#define ldt_unlock(m, i)		dept_ecxt_exit(m, LDT_EVT_ALL, i)
+
+#define ldt_downgrade(m, i)						\
+	do {								\
+		if (dept_ecxt_holding(m, LDT_EVT_W))			\
+			dept_map_ecxt_modify(m, LDT_EVT_W, NULL, LDT_EVT_R, i, "downgrade", "read_unlock", -1);\
+	} while (0)
+
+#define ldt_set_class(m, n, k, sl, i)	dept_map_ecxt_modify(m, LDT_EVT_ALL, k, 0UL, i, "lock_set_class", "(any)unlock", sl)
+#else /* !CONFIG_DEPT */
+#define ldt_init(m, k, su, n)		do { (void)(k); } while (0)
+#define ldt_lock(m, sl, t, n, i)	do { } while (0)
+#define ldt_rlock(m, sl, t, n, i, q)	do { } while (0)
+#define ldt_wlock(m, sl, t, n, i)	do { } while (0)
+#define ldt_unlock(m, i)		do { } while (0)
+#define ldt_downgrade(m, i)		do { } while (0)
+#define ldt_set_class(m, n, k, sl, i)	do { } while (0)
+#endif
+#endif /* __LINUX_DEPT_LDT_H */
-- 
2.40.0


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

* [Intel-xe] [CI 05/27] dept: Tie to Lockdep and IRQ tracing
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (3 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 04/27] dept: Add lock " Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 06/27] dept: Add proc knobs to show stats and dependency graph Gwan-gyeong Mun
                   ` (28 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Yes. How to place Dept in here looks so ugly. But it's inevitable as
long as relying on Lockdep. The way should be enhanced gradually.

   1. Basically relies on Lockdep to track typical locks and IRQ things.

   2. Dept fails to recognize IRQ situation so it generates false alarms
      when raw_local_irq_*() APIs are used. So made it track those too.

   3. Lockdep doesn't track the outmost {hard,soft}irq entracnes but
      Dept makes use of it. So made it track those too.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/irqflags.h            |  22 +++++-
 include/linux/local_lock_internal.h |   1 +
 include/linux/lockdep.h             | 102 ++++++++++++++++++++++------
 include/linux/lockdep_types.h       |   3 +
 include/linux/mutex.h               |   1 +
 include/linux/percpu-rwsem.h        |   2 +-
 include/linux/rtmutex.h             |   1 +
 include/linux/rwlock_types.h        |   1 +
 include/linux/rwsem.h               |   1 +
 include/linux/seqlock.h             |   2 +-
 include/linux/spinlock_types_raw.h  |   3 +
 include/linux/srcu.h                |   2 +-
 kernel/dependency/dept.c            |   4 +-
 kernel/locking/lockdep.c            |  23 +++++++
 14 files changed, 139 insertions(+), 29 deletions(-)

diff --git a/include/linux/irqflags.h b/include/linux/irqflags.h
index 5ec0fa71399e..0ebc5ec2dbd4 100644
--- a/include/linux/irqflags.h
+++ b/include/linux/irqflags.h
@@ -13,6 +13,7 @@
 #define _LINUX_TRACE_IRQFLAGS_H
 
 #include <linux/typecheck.h>
+#include <linux/dept.h>
 #include <asm/irqflags.h>
 #include <asm/percpu.h>
 
@@ -60,8 +61,10 @@ extern void trace_hardirqs_off(void);
 # define lockdep_softirqs_enabled(p)	((p)->softirqs_enabled)
 # define lockdep_hardirq_enter()			\
 do {							\
-	if (__this_cpu_inc_return(hardirq_context) == 1)\
+	if (__this_cpu_inc_return(hardirq_context) == 1) { \
 		current->hardirq_threaded = 0;		\
+		dept_hardirq_enter();			\
+	}						\
 } while (0)
 # define lockdep_hardirq_threaded()		\
 do {						\
@@ -136,6 +139,8 @@ do {						\
 # define lockdep_softirq_enter()		\
 do {						\
 	current->softirq_context++;		\
+	if (current->softirq_context == 1)	\
+		dept_softirq_enter();		\
 } while (0)
 # define lockdep_softirq_exit()			\
 do {						\
@@ -170,17 +175,28 @@ extern void warn_bogus_irq_restore(void);
 /*
  * Wrap the arch provided IRQ routines to provide appropriate checks.
  */
-#define raw_local_irq_disable()		arch_local_irq_disable()
-#define raw_local_irq_enable()		arch_local_irq_enable()
+#define raw_local_irq_disable()				\
+	do {						\
+		arch_local_irq_disable();		\
+		dept_hardirqs_off();			\
+	} while (0)
+#define raw_local_irq_enable()				\
+	do {						\
+		dept_hardirqs_on();			\
+		arch_local_irq_enable();		\
+	} while (0)
 #define raw_local_irq_save(flags)			\
 	do {						\
 		typecheck(unsigned long, flags);	\
 		flags = arch_local_irq_save();		\
+		dept_hardirqs_off();			\
 	} while (0)
 #define raw_local_irq_restore(flags)			\
 	do {						\
 		typecheck(unsigned long, flags);	\
 		raw_check_bogus_irq_restore();		\
+		if (!arch_irqs_disabled_flags(flags))	\
+			dept_hardirqs_on();		\
 		arch_local_irq_restore(flags);		\
 	} while (0)
 #define raw_local_save_flags(flags)			\
diff --git a/include/linux/local_lock_internal.h b/include/linux/local_lock_internal.h
index 975e33b793a7..39f67788fd95 100644
--- a/include/linux/local_lock_internal.h
+++ b/include/linux/local_lock_internal.h
@@ -21,6 +21,7 @@ typedef struct {
 		.name = #lockname,			\
 		.wait_type_inner = LD_WAIT_CONFIG,	\
 		.lock_type = LD_LOCK_PERCPU,		\
+		.dmap = DEPT_MAP_INITIALIZER(lockname, NULL),\
 	},						\
 	.owner = NULL,
 
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h
index 9516b1ea6d91..ff9db6063f49 100644
--- a/include/linux/lockdep.h
+++ b/include/linux/lockdep.h
@@ -12,6 +12,7 @@
 
 #include <linux/lockdep_types.h>
 #include <linux/smp.h>
+#include <linux/dept_ldt.h>
 #include <asm/percpu.h>
 
 struct task_struct;
@@ -39,6 +40,8 @@ static inline void lockdep_copy_map(struct lockdep_map *to,
 	 */
 	for (i = 0; i < NR_LOCKDEP_CACHING_CLASSES; i++)
 		to->class_cache[i] = NULL;
+
+	dept_map_copy(&to->dmap, &from->dmap);
 }
 
 /*
@@ -458,7 +461,8 @@ enum xhlock_context_t {
  * Note that _name must not be NULL.
  */
 #define STATIC_LOCKDEP_MAP_INIT(_name, _key) \
-	{ .name = (_name), .key = (void *)(_key), }
+	{ .name = (_name), .key = (void *)(_key), \
+	  .dmap = DEPT_MAP_INITIALIZER(_name, _key) }
 
 static inline void lockdep_invariant_state(bool force) {}
 static inline void lockdep_free_task(struct task_struct *task) {}
@@ -540,33 +544,89 @@ extern bool read_lock_is_recursive(void);
 #define lock_acquire_shared(l, s, t, n, i)		lock_acquire(l, s, t, 1, 1, n, i)
 #define lock_acquire_shared_recursive(l, s, t, n, i)	lock_acquire(l, s, t, 2, 1, n, i)
 
-#define spin_acquire(l, s, t, i)		lock_acquire_exclusive(l, s, t, NULL, i)
-#define spin_acquire_nest(l, s, t, n, i)	lock_acquire_exclusive(l, s, t, n, i)
-#define spin_release(l, i)			lock_release(l, i)
-
-#define rwlock_acquire(l, s, t, i)		lock_acquire_exclusive(l, s, t, NULL, i)
+#define spin_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)
+#define spin_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)
+#define spin_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)
+#define rwlock_acquire(l, s, t, i)					\
+do {									\
+	ldt_wlock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)
 #define rwlock_acquire_read(l, s, t, i)					\
 do {									\
+	ldt_rlock(&(l)->dmap, s, t, NULL, i, !read_lock_is_recursive());\
 	if (read_lock_is_recursive())					\
 		lock_acquire_shared_recursive(l, s, t, NULL, i);	\
 	else								\
 		lock_acquire_shared(l, s, t, NULL, i);			\
 } while (0)
-
-#define rwlock_release(l, i)			lock_release(l, i)
-
-#define seqcount_acquire(l, s, t, i)		lock_acquire_exclusive(l, s, t, NULL, i)
-#define seqcount_acquire_read(l, s, t, i)	lock_acquire_shared_recursive(l, s, t, NULL, i)
-#define seqcount_release(l, i)			lock_release(l, i)
-
-#define mutex_acquire(l, s, t, i)		lock_acquire_exclusive(l, s, t, NULL, i)
-#define mutex_acquire_nest(l, s, t, n, i)	lock_acquire_exclusive(l, s, t, n, i)
-#define mutex_release(l, i)			lock_release(l, i)
-
-#define rwsem_acquire(l, s, t, i)		lock_acquire_exclusive(l, s, t, NULL, i)
-#define rwsem_acquire_nest(l, s, t, n, i)	lock_acquire_exclusive(l, s, t, n, i)
-#define rwsem_acquire_read(l, s, t, i)		lock_acquire_shared(l, s, t, NULL, i)
-#define rwsem_release(l, i)			lock_release(l, i)
+#define rwlock_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)
+#define seqcount_acquire(l, s, t, i)					\
+do {									\
+	ldt_wlock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)
+#define seqcount_acquire_read(l, s, t, i)				\
+do {									\
+	ldt_rlock(&(l)->dmap, s, t, NULL, i, false);			\
+	lock_acquire_shared_recursive(l, s, t, NULL, i);		\
+} while (0)
+#define seqcount_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)
+#define mutex_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)
+#define mutex_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)
+#define mutex_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)
+#define rwsem_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)
+#define rwsem_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)
+#define rwsem_acquire_read(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_shared(l, s, t, NULL, i);				\
+} while (0)
+#define rwsem_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)
 
 #define lock_map_acquire(l)			lock_acquire_exclusive(l, 0, 0, NULL, _THIS_IP_)
 #define lock_map_acquire_try(l)			lock_acquire_exclusive(l, 0, 1, NULL, _THIS_IP_)
diff --git a/include/linux/lockdep_types.h b/include/linux/lockdep_types.h
index 59f4fb1626ea..fc3e0c136b86 100644
--- a/include/linux/lockdep_types.h
+++ b/include/linux/lockdep_types.h
@@ -11,6 +11,7 @@
 #define __LINUX_LOCKDEP_TYPES_H
 
 #include <linux/types.h>
+#include <linux/dept.h>
 
 #define MAX_LOCKDEP_SUBCLASSES		8UL
 
@@ -77,6 +78,7 @@ struct lock_class_key {
 		struct hlist_node		hash_entry;
 		struct lockdep_subclass_key	subkeys[MAX_LOCKDEP_SUBCLASSES];
 	};
+	struct dept_key				dkey;
 };
 
 extern struct lock_class_key __lockdep_no_validate__;
@@ -186,6 +188,7 @@ struct lockdep_map {
 	int				cpu;
 	unsigned long			ip;
 #endif
+	struct dept_map			dmap;
 };
 
 struct pin_cookie { unsigned int val; };
diff --git a/include/linux/mutex.h b/include/linux/mutex.h
index 8f226d460f51..58bf314eddeb 100644
--- a/include/linux/mutex.h
+++ b/include/linux/mutex.h
@@ -25,6 +25,7 @@
 		, .dep_map = {					\
 			.name = #lockname,			\
 			.wait_type_inner = LD_WAIT_SLEEP,	\
+			.dmap = DEPT_MAP_INITIALIZER(lockname, NULL),\
 		}
 #else
 # define __DEP_MAP_MUTEX_INITIALIZER(lockname)
diff --git a/include/linux/percpu-rwsem.h b/include/linux/percpu-rwsem.h
index 36b942b67b7d..e871aca04645 100644
--- a/include/linux/percpu-rwsem.h
+++ b/include/linux/percpu-rwsem.h
@@ -21,7 +21,7 @@ struct percpu_rw_semaphore {
 };
 
 #ifdef CONFIG_DEBUG_LOCK_ALLOC
-#define __PERCPU_RWSEM_DEP_MAP_INIT(lockname)	.dep_map = { .name = #lockname },
+#define __PERCPU_RWSEM_DEP_MAP_INIT(lockname)	.dep_map = { .name = #lockname, .dmap = DEPT_MAP_INITIALIZER(lockname, NULL) },
 #else
 #define __PERCPU_RWSEM_DEP_MAP_INIT(lockname)
 #endif
diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h
index 7d049883a08a..35889ac5eeae 100644
--- a/include/linux/rtmutex.h
+++ b/include/linux/rtmutex.h
@@ -81,6 +81,7 @@ do { \
 	.dep_map = {					\
 		.name = #mutexname,			\
 		.wait_type_inner = LD_WAIT_SLEEP,	\
+		.dmap = DEPT_MAP_INITIALIZER(mutexname, NULL),\
 	}
 #else
 #define __DEP_MAP_RT_MUTEX_INITIALIZER(mutexname)
diff --git a/include/linux/rwlock_types.h b/include/linux/rwlock_types.h
index 1948442e7750..6e58dfc84997 100644
--- a/include/linux/rwlock_types.h
+++ b/include/linux/rwlock_types.h
@@ -10,6 +10,7 @@
 	.dep_map = {							\
 		.name = #lockname,					\
 		.wait_type_inner = LD_WAIT_CONFIG,			\
+		.dmap = DEPT_MAP_INITIALIZER(lockname, NULL),		\
 	}
 #else
 # define RW_DEP_MAP_INIT(lockname)
diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h
index efa5c324369a..4f856e745dce 100644
--- a/include/linux/rwsem.h
+++ b/include/linux/rwsem.h
@@ -21,6 +21,7 @@
 	.dep_map = {					\
 		.name = #lockname,			\
 		.wait_type_inner = LD_WAIT_SLEEP,	\
+		.dmap = DEPT_MAP_INITIALIZER(lockname, NULL),\
 	},
 #else
 # define __RWSEM_DEP_MAP_INIT(lockname)
diff --git a/include/linux/seqlock.h b/include/linux/seqlock.h
index 3926e9027947..6ba00bcbc11a 100644
--- a/include/linux/seqlock.h
+++ b/include/linux/seqlock.h
@@ -81,7 +81,7 @@ static inline void __seqcount_init(seqcount_t *s, const char *name,
 #ifdef CONFIG_DEBUG_LOCK_ALLOC
 
 # define SEQCOUNT_DEP_MAP_INIT(lockname)				\
-		.dep_map = { .name = #lockname }
+		.dep_map = { .name = #lockname, .dmap = DEPT_MAP_INITIALIZER(lockname, NULL) }
 
 /**
  * seqcount_init() - runtime initializer for seqcount_t
diff --git a/include/linux/spinlock_types_raw.h b/include/linux/spinlock_types_raw.h
index 91cb36b65a17..3dcc551ded25 100644
--- a/include/linux/spinlock_types_raw.h
+++ b/include/linux/spinlock_types_raw.h
@@ -31,11 +31,13 @@ typedef struct raw_spinlock {
 	.dep_map = {					\
 		.name = #lockname,			\
 		.wait_type_inner = LD_WAIT_SPIN,	\
+		.dmap = DEPT_MAP_INITIALIZER(lockname, NULL),\
 	}
 # define SPIN_DEP_MAP_INIT(lockname)			\
 	.dep_map = {					\
 		.name = #lockname,			\
 		.wait_type_inner = LD_WAIT_CONFIG,	\
+		.dmap = DEPT_MAP_INITIALIZER(lockname, NULL),\
 	}
 
 # define LOCAL_SPIN_DEP_MAP_INIT(lockname)		\
@@ -43,6 +45,7 @@ typedef struct raw_spinlock {
 		.name = #lockname,			\
 		.wait_type_inner = LD_WAIT_CONFIG,	\
 		.lock_type = LD_LOCK_PERCPU,		\
+		.dmap = DEPT_MAP_INITIALIZER(lockname, NULL),\
 	}
 #else
 # define RAW_SPIN_DEP_MAP_INIT(lockname)
diff --git a/include/linux/srcu.h b/include/linux/srcu.h
index 41c4b26fb1c1..49efe1f427fa 100644
--- a/include/linux/srcu.h
+++ b/include/linux/srcu.h
@@ -35,7 +35,7 @@ int __init_srcu_struct(struct srcu_struct *ssp, const char *name,
 	__init_srcu_struct((ssp), #ssp, &__srcu_key); \
 })
 
-#define __SRCU_DEP_MAP_INIT(srcu_name)	.dep_map = { .name = #srcu_name },
+#define __SRCU_DEP_MAP_INIT(srcu_name)	.dep_map = { .name = #srcu_name, .dmap = DEPT_MAP_INITIALIZER(srcu_name, NULL) },
 #else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */
 
 int init_srcu_struct(struct srcu_struct *ssp);
diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c
index 8ec638254e5f..d3b6d2f4cd7b 100644
--- a/kernel/dependency/dept.c
+++ b/kernel/dependency/dept.c
@@ -245,10 +245,10 @@ static inline bool dept_working(void)
  * Even k == NULL is considered as a valid key because it would use
  * &->map_key as the key in that case.
  */
-struct dept_key __dept_no_validate__;
+extern struct lock_class_key __lockdep_no_validate__;
 static inline bool valid_key(struct dept_key *k)
 {
-	return &__dept_no_validate__ != k;
+	return &__lockdep_no_validate__.dkey != k;
 }
 
 /*
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index 267aacc13f3f..85c08dcd0f7c 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -1221,6 +1221,8 @@ void lockdep_register_key(struct lock_class_key *key)
 	struct lock_class_key *k;
 	unsigned long flags;
 
+	dept_key_init(&key->dkey);
+
 	if (WARN_ON_ONCE(static_obj(key)))
 		return;
 	hash_head = keyhashentry(key);
@@ -4343,6 +4345,8 @@ void noinstr lockdep_hardirqs_on(unsigned long ip)
 {
 	struct irqtrace_events *trace = &current->irqtrace;
 
+	dept_hardirqs_on_ip(ip);
+
 	if (unlikely(!debug_locks))
 		return;
 
@@ -4408,6 +4412,8 @@ EXPORT_SYMBOL_GPL(lockdep_hardirqs_on);
  */
 void noinstr lockdep_hardirqs_off(unsigned long ip)
 {
+	dept_hardirqs_off_ip(ip);
+
 	if (unlikely(!debug_locks))
 		return;
 
@@ -4452,6 +4458,8 @@ void lockdep_softirqs_on(unsigned long ip)
 {
 	struct irqtrace_events *trace = &current->irqtrace;
 
+	dept_softirqs_on_ip(ip);
+
 	if (unlikely(!lockdep_enabled()))
 		return;
 
@@ -4490,6 +4498,9 @@ void lockdep_softirqs_on(unsigned long ip)
  */
 void lockdep_softirqs_off(unsigned long ip)
 {
+
+	dept_softirqs_off_ip(ip);
+
 	if (unlikely(!lockdep_enabled()))
 		return;
 
@@ -4837,6 +4848,8 @@ void lockdep_init_map_type(struct lockdep_map *lock, const char *name,
 {
 	int i;
 
+	ldt_init(&lock->dmap, &key->dkey, subclass, name);
+
 	for (i = 0; i < NR_LOCKDEP_CACHING_CLASSES; i++)
 		lock->class_cache[i] = NULL;
 
@@ -5584,6 +5597,12 @@ void lock_set_class(struct lockdep_map *lock, const char *name,
 {
 	unsigned long flags;
 
+	/*
+	 * dept_map_(re)init() might be called twice redundantly. But
+	 * there's no choice as long as Dept relies on Lockdep.
+	 */
+	ldt_set_class(&lock->dmap, name, &key->dkey, subclass, ip);
+
 	if (unlikely(!lockdep_enabled()))
 		return;
 
@@ -5601,6 +5620,8 @@ void lock_downgrade(struct lockdep_map *lock, unsigned long ip)
 {
 	unsigned long flags;
 
+	ldt_downgrade(&lock->dmap, ip);
+
 	if (unlikely(!lockdep_enabled()))
 		return;
 
@@ -6401,6 +6422,8 @@ void lockdep_unregister_key(struct lock_class_key *key)
 	unsigned long flags;
 	bool found = false;
 
+	dept_key_destroy(&key->dkey);
+
 	might_sleep();
 
 	if (WARN_ON_ONCE(static_obj(key)))
-- 
2.40.0


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

* [Intel-xe] [CI 06/27] dept: Add proc knobs to show stats and dependency graph
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (4 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 05/27] dept: Tie to Lockdep and IRQ tracing Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 07/27] dept: Apply sdt_might_sleep_{start, end}() to wait_for_completion()/complete() Gwan-gyeong Mun
                   ` (27 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

It'd be useful to show Dept internal stats and dependency graph on
runtime via proc for better information. Introduced the knobs.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 kernel/dependency/Makefile        |  1 +
 kernel/dependency/dept.c          | 24 +++-----
 kernel/dependency/dept_internal.h | 26 +++++++++
 kernel/dependency/dept_proc.c     | 95 +++++++++++++++++++++++++++++++
 4 files changed, 131 insertions(+), 15 deletions(-)
 create mode 100644 kernel/dependency/dept_internal.h
 create mode 100644 kernel/dependency/dept_proc.c

diff --git a/kernel/dependency/Makefile b/kernel/dependency/Makefile
index b5cfb8a03c0c..92f165400187 100644
--- a/kernel/dependency/Makefile
+++ b/kernel/dependency/Makefile
@@ -1,3 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0
 
 obj-$(CONFIG_DEPT) += dept.o
+obj-$(CONFIG_DEPT) += dept_proc.o
diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c
index d3b6d2f4cd7b..c5e23e9184b8 100644
--- a/kernel/dependency/dept.c
+++ b/kernel/dependency/dept.c
@@ -74,6 +74,7 @@
 #include <linux/dept.h>
 #include <linux/utsname.h>
 #include <linux/kernel.h>
+#include "dept_internal.h"
 
 static int dept_stop;
 static int dept_per_cpu_ready;
@@ -261,20 +262,13 @@ static inline bool valid_key(struct dept_key *k)
  *       have been freed will be placed.
  */
 
-enum object_t {
-#define OBJECT(id, nr) OBJECT_##id,
-	#include "dept_object.h"
-#undef  OBJECT
-	OBJECT_NR,
-};
-
 #define OBJECT(id, nr)							\
 static struct dept_##id spool_##id[nr];					\
 static DEFINE_PER_CPU(struct llist_head, lpool_##id);
 	#include "dept_object.h"
 #undef  OBJECT
 
-static struct dept_pool pool[OBJECT_NR] = {
+struct dept_pool dept_pool[OBJECT_NR] = {
 #define OBJECT(id, nr) {						\
 	.name = #id,							\
 	.obj_sz = sizeof(struct dept_##id),				\
@@ -304,7 +298,7 @@ static void *from_pool(enum object_t t)
 	if (DEPT_WARN_ON(!irqs_disabled()))
 		return NULL;
 
-	p = &pool[t];
+	p = &dept_pool[t];
 
 	/*
 	 * Try local pool first.
@@ -339,7 +333,7 @@ static void *from_pool(enum object_t t)
 
 static void to_pool(void *o, enum object_t t)
 {
-	struct dept_pool *p = &pool[t];
+	struct dept_pool *p = &dept_pool[t];
 	struct llist_head *h;
 
 	preempt_disable();
@@ -2136,7 +2130,7 @@ void dept_map_copy(struct dept_map *to, struct dept_map *from)
 	clean_classes_cache(&to->map_key);
 }
 
-static LIST_HEAD(classes);
+LIST_HEAD(dept_classes);
 
 static inline bool within(const void *addr, void *start, unsigned long size)
 {
@@ -2168,7 +2162,7 @@ void dept_free_range(void *start, unsigned int sz)
 	while (unlikely(!dept_lock()))
 		cpu_relax();
 
-	list_for_each_entry_safe(c, n, &classes, all_node) {
+	list_for_each_entry_safe(c, n, &dept_classes, all_node) {
 		if (!within((void *)c->key, start, sz) &&
 		    !within(c->name, start, sz))
 			continue;
@@ -2244,7 +2238,7 @@ static struct dept_class *check_new_class(struct dept_key *local,
 	c->sub_id = sub_id;
 	c->key = (unsigned long)(k->base + sub_id);
 	hash_add_class(c);
-	list_add(&c->all_node, &classes);
+	list_add(&c->all_node, &dept_classes);
 unlock:
 	dept_unlock();
 caching:
@@ -2958,8 +2952,8 @@ static void migrate_per_cpu_pool(void)
 		struct llist_head *from;
 		struct llist_head *to;
 
-		from = &pool[i].boot_pool;
-		to = per_cpu_ptr(pool[i].lpool, boot_cpu);
+		from = &dept_pool[i].boot_pool;
+		to = per_cpu_ptr(dept_pool[i].lpool, boot_cpu);
 		move_llist(to, from);
 	}
 }
diff --git a/kernel/dependency/dept_internal.h b/kernel/dependency/dept_internal.h
new file mode 100644
index 000000000000..007c1eec6bab
--- /dev/null
+++ b/kernel/dependency/dept_internal.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Dept(DEPendency Tracker) - runtime dependency tracker internal header
+ *
+ * Started by Byungchul Park <max.byungchul.park@gmail.com>:
+ *
+ *  Copyright (c) 2020 LG Electronics, Inc., Byungchul Park
+ */
+
+#ifndef __DEPT_INTERNAL_H
+#define __DEPT_INTERNAL_H
+
+#ifdef CONFIG_DEPT
+
+enum object_t {
+#define OBJECT(id, nr) OBJECT_##id,
+	#include "dept_object.h"
+#undef  OBJECT
+	OBJECT_NR,
+};
+
+extern struct list_head dept_classes;
+extern struct dept_pool dept_pool[];
+
+#endif
+#endif /* __DEPT_INTERNAL_H */
diff --git a/kernel/dependency/dept_proc.c b/kernel/dependency/dept_proc.c
new file mode 100644
index 000000000000..7d61dfbc5865
--- /dev/null
+++ b/kernel/dependency/dept_proc.c
@@ -0,0 +1,95 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Procfs knobs for Dept(DEPendency Tracker)
+ *
+ * Started by Byungchul Park <max.byungchul.park@gmail.com>:
+ *
+ *  Copyright (C) 2021 LG Electronics, Inc. , Byungchul Park
+ */
+#include <linux/proc_fs.h>
+#include <linux/seq_file.h>
+#include <linux/dept.h>
+#include "dept_internal.h"
+
+static void *l_next(struct seq_file *m, void *v, loff_t *pos)
+{
+	/*
+	 * XXX: Serialize list traversal if needed. The following might
+	 * give a wrong information on contention.
+	 */
+	return seq_list_next(v, &dept_classes, pos);
+}
+
+static void *l_start(struct seq_file *m, loff_t *pos)
+{
+	/*
+	 * XXX: Serialize list traversal if needed. The following might
+	 * give a wrong information on contention.
+	 */
+	return seq_list_start_head(&dept_classes, *pos);
+}
+
+static void l_stop(struct seq_file *m, void *v)
+{
+}
+
+static int l_show(struct seq_file *m, void *v)
+{
+	struct dept_class *fc = list_entry(v, struct dept_class, all_node);
+	struct dept_dep *d;
+	const char *prefix;
+
+	if (v == &dept_classes) {
+		seq_puts(m, "All classes:\n\n");
+		return 0;
+	}
+
+	prefix = fc->sched_map ? "<sched> " : "";
+	seq_printf(m, "[%p] %s%s\n", (void *)fc->key, prefix, fc->name);
+
+	/*
+	 * XXX: Serialize list traversal if needed. The following might
+	 * give a wrong information on contention.
+	 */
+	list_for_each_entry(d, &fc->dep_head, dep_node) {
+		struct dept_class *tc = d->wait->class;
+
+		prefix = tc->sched_map ? "<sched> " : "";
+		seq_printf(m, " -> [%p] %s%s\n", (void *)tc->key, prefix, tc->name);
+	}
+	seq_puts(m, "\n");
+
+	return 0;
+}
+
+static const struct seq_operations dept_deps_ops = {
+	.start	= l_start,
+	.next	= l_next,
+	.stop	= l_stop,
+	.show	= l_show,
+};
+
+static int dept_stats_show(struct seq_file *m, void *v)
+{
+	int r;
+
+	seq_puts(m, "Availability in the static pools:\n\n");
+#define OBJECT(id, nr)							\
+	r = atomic_read(&dept_pool[OBJECT_##id].obj_nr);		\
+	if (r < 0)							\
+		r = 0;							\
+	seq_printf(m, "%s\t%d/%d(%d%%)\n", #id, r, nr, (r * 100) / (nr));
+	#include "dept_object.h"
+#undef  OBJECT
+
+	return 0;
+}
+
+static int __init dept_proc_init(void)
+{
+	proc_create_seq("dept_deps", S_IRUSR, NULL, &dept_deps_ops);
+	proc_create_single("dept_stats", S_IRUSR, NULL, dept_stats_show);
+	return 0;
+}
+
+__initcall(dept_proc_init);
-- 
2.40.0


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

* [Intel-xe] [CI 07/27] dept: Apply sdt_might_sleep_{start, end}() to wait_for_completion()/complete()
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (5 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 06/27] dept: Add proc knobs to show stats and dependency graph Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 08/27] dept: Apply sdt_might_sleep_{start, end}() to PG_{locked, writeback} wait Gwan-gyeong Mun
                   ` (26 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Makes Dept able to track dependencies by
wait_for_completion()/complete().

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/completion.h | 30 +++++++++++++++++++++++++-----
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/include/linux/completion.h b/include/linux/completion.h
index 62b32b19e0a8..32d535abebf3 100644
--- a/include/linux/completion.h
+++ b/include/linux/completion.h
@@ -10,6 +10,7 @@
  */
 
 #include <linux/swait.h>
+#include <linux/dept_sdt.h>
 
 /*
  * struct completion - structure used to maintain state for a "completion"
@@ -26,14 +27,33 @@
 struct completion {
 	unsigned int done;
 	struct swait_queue_head wait;
+	struct dept_map dmap;
 };
 
+#define init_completion(x)				\
+do {							\
+	sdt_map_init(&(x)->dmap);			\
+	__init_completion(x);				\
+} while (0)
+
+/*
+ * XXX: No use cases for now. Fill the body when needed.
+ */
 #define init_completion_map(x, m) init_completion(x)
-static inline void complete_acquire(struct completion *x) {}
-static inline void complete_release(struct completion *x) {}
+
+static inline void complete_acquire(struct completion *x)
+{
+	sdt_might_sleep_start(&x->dmap);
+}
+
+static inline void complete_release(struct completion *x)
+{
+	sdt_might_sleep_end();
+}
 
 #define COMPLETION_INITIALIZER(work) \
-	{ 0, __SWAIT_QUEUE_HEAD_INITIALIZER((work).wait) }
+	{ 0, __SWAIT_QUEUE_HEAD_INITIALIZER((work).wait), \
+	  .dmap = DEPT_MAP_INITIALIZER(work, NULL), }
 
 #define COMPLETION_INITIALIZER_ONSTACK_MAP(work, map) \
 	(*({ init_completion_map(&(work), &(map)); &(work); }))
@@ -75,13 +95,13 @@ static inline void complete_release(struct completion *x) {}
 #endif
 
 /**
- * init_completion - Initialize a dynamically allocated completion
+ * __init_completion - Initialize a dynamically allocated completion
  * @x:  pointer to completion structure that is to be initialized
  *
  * This inline function will initialize a dynamically created completion
  * structure.
  */
-static inline void init_completion(struct completion *x)
+static inline void __init_completion(struct completion *x)
 {
 	x->done = 0;
 	init_swait_queue_head(&x->wait);
-- 
2.40.0


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

* [Intel-xe] [CI 08/27] dept: Apply sdt_might_sleep_{start, end}() to PG_{locked, writeback} wait
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (6 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 07/27] dept: Apply sdt_might_sleep_{start, end}() to wait_for_completion()/complete() Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 09/27] dept: Apply sdt_might_sleep_{start, end}() to swait Gwan-gyeong Mun
                   ` (25 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Makes Dept able to track dependencies by PG_{locked,writeback} waits.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 mm/filemap.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/mm/filemap.c b/mm/filemap.c
index 83dda76d1fc3..eed64dc88e43 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -44,6 +44,7 @@
 #include <linux/migrate.h>
 #include <linux/pipe_fs_i.h>
 #include <linux/splice.h>
+#include <linux/dept_sdt.h>
 #include <asm/pgalloc.h>
 #include <asm/tlbflush.h>
 #include "internal.h"
@@ -1219,6 +1220,9 @@ static inline bool folio_trylock_flag(struct folio *folio, int bit_nr,
 /* How many times do we accept lock stealing from under a waiter? */
 int sysctl_page_lock_unfairness = 5;
 
+static struct dept_map __maybe_unused PG_locked_map = DEPT_MAP_INITIALIZER(PG_locked_map, NULL);
+static struct dept_map __maybe_unused PG_writeback_map = DEPT_MAP_INITIALIZER(PG_writeback_map, NULL);
+
 static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
 		int state, enum behavior behavior)
 {
@@ -1230,6 +1234,11 @@ static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
 	unsigned long pflags;
 	bool in_thrashing;
 
+	if (bit_nr == PG_locked)
+		sdt_might_sleep_start(&PG_locked_map);
+	else if (bit_nr == PG_writeback)
+		sdt_might_sleep_start(&PG_writeback_map);
+
 	if (bit_nr == PG_locked &&
 	    !folio_test_uptodate(folio) && folio_test_workingset(folio)) {
 		delayacct_thrashing_start(&in_thrashing);
@@ -1331,6 +1340,8 @@ static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
 	 */
 	finish_wait(q, wait);
 
+	sdt_might_sleep_end();
+
 	if (thrashing) {
 		delayacct_thrashing_end(&in_thrashing);
 		psi_memstall_leave(&pflags);
-- 
2.40.0


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

* [Intel-xe] [CI 09/27] dept: Apply sdt_might_sleep_{start, end}() to swait
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (7 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 08/27] dept: Apply sdt_might_sleep_{start, end}() to PG_{locked, writeback} wait Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 10/27] dept: Apply sdt_might_sleep_{start, end}() to waitqueue wait Gwan-gyeong Mun
                   ` (24 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Makes Dept able to track dependencies by swaits.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/swait.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/linux/swait.h b/include/linux/swait.h
index 6a8c22b8c2a5..02848211cef5 100644
--- a/include/linux/swait.h
+++ b/include/linux/swait.h
@@ -6,6 +6,7 @@
 #include <linux/stddef.h>
 #include <linux/spinlock.h>
 #include <linux/wait.h>
+#include <linux/dept_sdt.h>
 #include <asm/current.h>
 
 /*
@@ -161,6 +162,7 @@ extern void finish_swait(struct swait_queue_head *q, struct swait_queue *wait);
 	struct swait_queue __wait;					\
 	long __ret = ret;						\
 									\
+	sdt_might_sleep_start(NULL);					\
 	INIT_LIST_HEAD(&__wait.task_list);				\
 	for (;;) {							\
 		long __int = prepare_to_swait_event(&wq, &__wait, state);\
@@ -176,6 +178,7 @@ extern void finish_swait(struct swait_queue_head *q, struct swait_queue *wait);
 		cmd;							\
 	}								\
 	finish_swait(&wq, &__wait);					\
+	sdt_might_sleep_end();						\
 __out:	__ret;								\
 })
 
-- 
2.40.0


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

* [Intel-xe] [CI 10/27] dept: Apply sdt_might_sleep_{start, end}() to waitqueue wait
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (8 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 09/27] dept: Apply sdt_might_sleep_{start, end}() to swait Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 11/27] dept: Apply sdt_might_sleep_{start, end}() to hashed-waitqueue wait Gwan-gyeong Mun
                   ` (23 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Makes Dept able to track dependencies by waitqueue waits.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/wait.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/linux/wait.h b/include/linux/wait.h
index a0307b516b09..ff349e609da7 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -7,6 +7,7 @@
 #include <linux/list.h>
 #include <linux/stddef.h>
 #include <linux/spinlock.h>
+#include <linux/dept_sdt.h>
 
 #include <asm/current.h>
 #include <uapi/linux/wait.h>
@@ -303,6 +304,7 @@ extern void init_wait_entry(struct wait_queue_entry *wq_entry, int flags);
 	struct wait_queue_entry __wq_entry;					\
 	long __ret = ret;	/* explicit shadow */				\
 										\
+	sdt_might_sleep_start(NULL);						\
 	init_wait_entry(&__wq_entry, exclusive ? WQ_FLAG_EXCLUSIVE : 0);	\
 	for (;;) {								\
 		long __int = prepare_to_wait_event(&wq_head, &__wq_entry, state);\
@@ -318,6 +320,7 @@ extern void init_wait_entry(struct wait_queue_entry *wq_entry, int flags);
 		cmd;								\
 	}									\
 	finish_wait(&wq_head, &__wq_entry);					\
+	sdt_might_sleep_end();							\
 __out:	__ret;									\
 })
 
-- 
2.40.0


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

* [Intel-xe] [CI 11/27] dept: Apply sdt_might_sleep_{start, end}() to hashed-waitqueue wait
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (9 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 10/27] dept: Apply sdt_might_sleep_{start, end}() to waitqueue wait Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 12/27] dept: Distinguish each syscall context from another Gwan-gyeong Mun
                   ` (22 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Makes Dept able to track dependencies by hashed-waitqueue waits.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/wait_bit.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/linux/wait_bit.h b/include/linux/wait_bit.h
index 7725b7579b78..fe89282c3e96 100644
--- a/include/linux/wait_bit.h
+++ b/include/linux/wait_bit.h
@@ -6,6 +6,7 @@
  * Linux wait-bit related types and methods:
  */
 #include <linux/wait.h>
+#include <linux/dept_sdt.h>
 
 struct wait_bit_key {
 	void			*flags;
@@ -246,6 +247,7 @@ extern wait_queue_head_t *__var_waitqueue(void *p);
 	struct wait_bit_queue_entry __wbq_entry;			\
 	long __ret = ret; /* explicit shadow */				\
 									\
+	sdt_might_sleep_start(NULL);					\
 	init_wait_var_entry(&__wbq_entry, var,				\
 			    exclusive ? WQ_FLAG_EXCLUSIVE : 0);		\
 	for (;;) {							\
@@ -263,6 +265,7 @@ extern wait_queue_head_t *__var_waitqueue(void *p);
 		cmd;							\
 	}								\
 	finish_wait(__wq_head, &__wbq_entry.wq_entry);			\
+	sdt_might_sleep_end();						\
 __out:	__ret;								\
 })
 
-- 
2.40.0


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

* [Intel-xe] [CI 12/27] dept: Distinguish each syscall context from another
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (10 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 11/27] dept: Apply sdt_might_sleep_{start, end}() to hashed-waitqueue wait Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 13/27] dept: Distinguish each work " Gwan-gyeong Mun
                   ` (21 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

It enters kernel mode on each syscall and each syscall handling should
be considered independently from the point of view of Dept. Otherwise,
Dept may wrongly track dependencies across different syscalls.

That might be a real dependency from user mode. However, now that Dept
just started to work, conservatively let Dept not track dependencies
across different syscalls.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 arch/arm64/kernel/syscall.c |  2 ++
 arch/x86/entry/common.c     |  4 +++
 include/linux/dept.h        | 39 ++++++++++++---------
 kernel/dependency/dept.c    | 67 +++++++++++++++++++------------------
 4 files changed, 63 insertions(+), 49 deletions(-)

diff --git a/arch/arm64/kernel/syscall.c b/arch/arm64/kernel/syscall.c
index da84cf855c44..d5a43e721173 100644
--- a/arch/arm64/kernel/syscall.c
+++ b/arch/arm64/kernel/syscall.c
@@ -7,6 +7,7 @@
 #include <linux/ptrace.h>
 #include <linux/randomize_kstack.h>
 #include <linux/syscalls.h>
+#include <linux/dept.h>
 
 #include <asm/daifflags.h>
 #include <asm/debug-monitors.h>
@@ -105,6 +106,7 @@ static void el0_svc_common(struct pt_regs *regs, int scno, int sc_nr,
 	 */
 
 	local_daif_restore(DAIF_PROCCTX);
+	dept_kernel_enter();
 
 	if (flags & _TIF_MTE_ASYNC_FAULT) {
 		/*
diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c
index 6c2826417b33..7cdd27abe529 100644
--- a/arch/x86/entry/common.c
+++ b/arch/x86/entry/common.c
@@ -19,6 +19,7 @@
 #include <linux/nospec.h>
 #include <linux/syscalls.h>
 #include <linux/uaccess.h>
+#include <linux/dept.h>
 
 #ifdef CONFIG_XEN_PV
 #include <xen/xen-ops.h>
@@ -72,6 +73,7 @@ static __always_inline bool do_syscall_x32(struct pt_regs *regs, int nr)
 
 __visible noinstr void do_syscall_64(struct pt_regs *regs, int nr)
 {
+	dept_kernel_enter();
 	add_random_kstack_offset();
 	nr = syscall_enter_from_user_mode(regs, nr);
 
@@ -120,6 +122,7 @@ __visible noinstr void do_int80_syscall_32(struct pt_regs *regs)
 {
 	int nr = syscall_32_enter(regs);
 
+	dept_kernel_enter();
 	add_random_kstack_offset();
 	/*
 	 * Subtlety here: if ptrace pokes something larger than 2^31-1 into
@@ -140,6 +143,7 @@ static noinstr bool __do_fast_syscall_32(struct pt_regs *regs)
 	int nr = syscall_32_enter(regs);
 	int res;
 
+	dept_kernel_enter();
 	add_random_kstack_offset();
 	/*
 	 * This cannot use syscall_enter_from_user_mode() as it has to
diff --git a/include/linux/dept.h b/include/linux/dept.h
index b6d45b4b1fd6..f62c7b6f42c6 100644
--- a/include/linux/dept.h
+++ b/include/linux/dept.h
@@ -25,11 +25,16 @@ struct task_struct;
 #define DEPT_MAX_SUBCLASSES_USR		(DEPT_MAX_SUBCLASSES / DEPT_MAX_SUBCLASSES_EVT)
 #define DEPT_MAX_SUBCLASSES_CACHE	2
 
-#define DEPT_SIRQ			0
-#define DEPT_HIRQ			1
-#define DEPT_IRQS_NR			2
-#define DEPT_SIRQF			(1UL << DEPT_SIRQ)
-#define DEPT_HIRQF			(1UL << DEPT_HIRQ)
+enum {
+	DEPT_CXT_SIRQ = 0,
+	DEPT_CXT_HIRQ,
+	DEPT_CXT_IRQS_NR,
+	DEPT_CXT_PROCESS = DEPT_CXT_IRQS_NR,
+	DEPT_CXTS_NR
+};
+
+#define DEPT_SIRQF			(1UL << DEPT_CXT_SIRQ)
+#define DEPT_HIRQF			(1UL << DEPT_CXT_HIRQ)
 
 struct dept_ecxt;
 struct dept_iecxt {
@@ -94,8 +99,8 @@ struct dept_class {
 			/*
 			 * for tracking IRQ dependencies
 			 */
-			struct dept_iecxt iecxt[DEPT_IRQS_NR];
-			struct dept_iwait iwait[DEPT_IRQS_NR];
+			struct dept_iecxt iecxt[DEPT_CXT_IRQS_NR];
+			struct dept_iwait iwait[DEPT_CXT_IRQS_NR];
 
 			/*
 			 * classified by a map embedded in task_struct,
@@ -207,8 +212,8 @@ struct dept_ecxt {
 			/*
 			 * where the IRQ-enabled happened
 			 */
-			unsigned long	enirq_ip[DEPT_IRQS_NR];
-			struct dept_stack *enirq_stack[DEPT_IRQS_NR];
+			unsigned long	enirq_ip[DEPT_CXT_IRQS_NR];
+			struct dept_stack *enirq_stack[DEPT_CXT_IRQS_NR];
 
 			/*
 			 * where the event context started
@@ -252,8 +257,8 @@ struct dept_wait {
 			/*
 			 * where the IRQ wait happened
 			 */
-			unsigned long	irq_ip[DEPT_IRQS_NR];
-			struct dept_stack *irq_stack[DEPT_IRQS_NR];
+			unsigned long	irq_ip[DEPT_CXT_IRQS_NR];
+			struct dept_stack *irq_stack[DEPT_CXT_IRQS_NR];
 
 			/*
 			 * where the wait happened
@@ -406,19 +411,19 @@ struct dept_task {
 	int				wait_hist_pos;
 
 	/*
-	 * sequential id to identify each IRQ context
+	 * sequential id to identify each context
 	 */
-	unsigned int			irq_id[DEPT_IRQS_NR];
+	unsigned int			cxt_id[DEPT_CXTS_NR];
 
 	/*
 	 * for tracking IRQ-enabled points with cross-event
 	 */
-	unsigned int			wgen_enirq[DEPT_IRQS_NR];
+	unsigned int			wgen_enirq[DEPT_CXT_IRQS_NR];
 
 	/*
 	 * for keeping up-to-date IRQ-enabled points
 	 */
-	unsigned long			enirq_ip[DEPT_IRQS_NR];
+	unsigned long			enirq_ip[DEPT_CXT_IRQS_NR];
 
 	/*
 	 * current effective IRQ-enabled flag
@@ -470,7 +475,7 @@ struct dept_task {
 	.wait_hist = { { .wait = NULL, } },			\
 	.ecxt_held_pos = 0,					\
 	.wait_hist_pos = 0,					\
-	.irq_id = { 0U },					\
+	.cxt_id = { 0U },					\
 	.wgen_enirq = { 0U },					\
 	.enirq_ip = { 0UL },					\
 	.eff_enirqf = 0UL,					\
@@ -509,6 +514,7 @@ extern void dept_event(struct dept_map *m, unsigned long e_f, unsigned long ip,
 extern void dept_ecxt_exit(struct dept_map *m, unsigned long e_f, unsigned long ip);
 extern void dept_sched_enter(void);
 extern void dept_sched_exit(void);
+extern void dept_kernel_enter(void);
 
 static inline void dept_ecxt_enter_nokeep(struct dept_map *m)
 {
@@ -560,6 +566,7 @@ struct dept_task { };
 #define dept_ecxt_exit(m, e_f, ip)			do { } while (0)
 #define dept_sched_enter()				do { } while (0)
 #define dept_sched_exit()				do { } while (0)
+#define dept_kernel_enter()				do { } while (0)
 #define dept_ecxt_enter_nokeep(m)			do { } while (0)
 #define dept_key_init(k)				do { (void)(k); } while (0)
 #define dept_key_destroy(k)				do { (void)(k); } while (0)
diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c
index c5e23e9184b8..4165cacf4ebb 100644
--- a/kernel/dependency/dept.c
+++ b/kernel/dependency/dept.c
@@ -221,9 +221,9 @@ static inline struct dept_class *dep_tc(struct dept_dep *d)
 
 static inline const char *irq_str(int irq)
 {
-	if (irq == DEPT_SIRQ)
+	if (irq == DEPT_CXT_SIRQ)
 		return "softirq";
-	if (irq == DEPT_HIRQ)
+	if (irq == DEPT_CXT_HIRQ)
 		return "hardirq";
 	return "(unknown)";
 }
@@ -407,7 +407,7 @@ static void initialize_class(struct dept_class *c)
 {
 	int i;
 
-	for (i = 0; i < DEPT_IRQS_NR; i++) {
+	for (i = 0; i < DEPT_CXT_IRQS_NR; i++) {
 		struct dept_iecxt *ie = &c->iecxt[i];
 		struct dept_iwait *iw = &c->iwait[i];
 
@@ -432,7 +432,7 @@ static void initialize_ecxt(struct dept_ecxt *e)
 {
 	int i;
 
-	for (i = 0; i < DEPT_IRQS_NR; i++) {
+	for (i = 0; i < DEPT_CXT_IRQS_NR; i++) {
 		e->enirq_stack[i] = NULL;
 		e->enirq_ip[i] = 0UL;
 	}
@@ -448,7 +448,7 @@ static void initialize_wait(struct dept_wait *w)
 {
 	int i;
 
-	for (i = 0; i < DEPT_IRQS_NR; i++) {
+	for (i = 0; i < DEPT_CXT_IRQS_NR; i++) {
 		w->irq_stack[i] = NULL;
 		w->irq_ip[i] = 0UL;
 	}
@@ -487,7 +487,7 @@ static void destroy_ecxt(struct dept_ecxt *e)
 {
 	int i;
 
-	for (i = 0; i < DEPT_IRQS_NR; i++)
+	for (i = 0; i < DEPT_CXT_IRQS_NR; i++)
 		if (e->enirq_stack[i])
 			put_stack(e->enirq_stack[i]);
 	if (e->class)
@@ -503,7 +503,7 @@ static void destroy_wait(struct dept_wait *w)
 {
 	int i;
 
-	for (i = 0; i < DEPT_IRQS_NR; i++)
+	for (i = 0; i < DEPT_CXT_IRQS_NR; i++)
 		if (w->irq_stack[i])
 			put_stack(w->irq_stack[i]);
 	if (w->class)
@@ -652,7 +652,7 @@ static void print_diagram(struct dept_dep *d)
 	const char *tc_n = tc->sched_map ? "<sched>" : (tc->name ?: "(unknown)");
 
 	irqf = e->enirqf & w->irqf;
-	for_each_set_bit(irq, &irqf, DEPT_IRQS_NR) {
+	for_each_set_bit(irq, &irqf, DEPT_CXT_IRQS_NR) {
 		if (!firstline)
 			pr_warn("\nor\n\n");
 		firstline = false;
@@ -685,7 +685,7 @@ static void print_dep(struct dept_dep *d)
 	const char *tc_n = tc->sched_map ? "<sched>" : (tc->name ?: "(unknown)");
 
 	irqf = e->enirqf & w->irqf;
-	for_each_set_bit(irq, &irqf, DEPT_IRQS_NR) {
+	for_each_set_bit(irq, &irqf, DEPT_CXT_IRQS_NR) {
 		pr_warn("%s has been enabled:\n", irq_str(irq));
 		print_ip_stack(e->enirq_ip[irq], e->enirq_stack[irq]);
 		pr_warn("\n");
@@ -911,7 +911,7 @@ static void bfs(struct dept_class *c, bfs_f *cb, void *in, void **out)
  */
 
 static inline unsigned long cur_enirqf(void);
-static inline int cur_irq(void);
+static inline int cur_cxt(void);
 static inline unsigned int cur_ctxt_id(void);
 
 static inline struct dept_iecxt *iecxt(struct dept_class *c, int irq)
@@ -1459,7 +1459,7 @@ static void add_dep(struct dept_ecxt *e, struct dept_wait *w)
 	if (d) {
 		check_dl_bfs(d);
 
-		for (i = 0; i < DEPT_IRQS_NR; i++) {
+		for (i = 0; i < DEPT_CXT_IRQS_NR; i++) {
 			struct dept_iwait *fiw = iwait(fc, i);
 			struct dept_iecxt *found_ie;
 			struct dept_iwait *found_iw;
@@ -1495,7 +1495,7 @@ static void add_wait(struct dept_class *c, unsigned long ip,
 	struct dept_task *dt = dept_task();
 	struct dept_wait *w;
 	unsigned int wg = 0U;
-	int irq;
+	int cxt;
 	int i;
 
 	if (DEPT_WARN_ON(!valid_class(c)))
@@ -1511,9 +1511,9 @@ static void add_wait(struct dept_class *c, unsigned long ip,
 	w->wait_stack = get_current_stack();
 	w->sched_sleep = sched_sleep;
 
-	irq = cur_irq();
-	if (irq < DEPT_IRQS_NR)
-		add_iwait(c, irq, w);
+	cxt = cur_cxt();
+	if (cxt == DEPT_CXT_HIRQ || cxt == DEPT_CXT_SIRQ)
+		add_iwait(c, cxt, w);
 
 	/*
 	 * Avoid adding dependency between user aware nested ecxt and
@@ -1594,7 +1594,7 @@ static bool add_ecxt(struct dept_map *m, struct dept_class *c,
 	eh->sub_l = sub_l;
 
 	irqf = cur_enirqf();
-	for_each_set_bit(irq, &irqf, DEPT_IRQS_NR)
+	for_each_set_bit(irq, &irqf, DEPT_CXT_IRQS_NR)
 		add_iecxt(c, irq, e, false);
 
 	del_ecxt(e);
@@ -1746,7 +1746,7 @@ static void do_event(struct dept_map *m, struct dept_class *c,
 			add_dep(eh->ecxt, wh->wait);
 	}
 
-	for (i = 0; i < DEPT_IRQS_NR; i++) {
+	for (i = 0; i < DEPT_CXT_IRQS_NR; i++) {
 		struct dept_ecxt *e;
 
 		if (before(dt->wgen_enirq[i], wg))
@@ -1788,7 +1788,7 @@ static void disconnect_class(struct dept_class *c)
 		call_rcu(&d->rh, del_dep_rcu);
 	}
 
-	for (i = 0; i < DEPT_IRQS_NR; i++) {
+	for (i = 0; i < DEPT_CXT_IRQS_NR; i++) {
 		stale_iecxt(iecxt(c, i));
 		stale_iwait(iwait(c, i));
 	}
@@ -1813,27 +1813,21 @@ static inline unsigned long cur_enirqf(void)
 	return 0UL;
 }
 
-static inline int cur_irq(void)
+static inline int cur_cxt(void)
 {
 	if (lockdep_softirq_context(current))
-		return DEPT_SIRQ;
+		return DEPT_CXT_SIRQ;
 	if (lockdep_hardirq_context())
-		return DEPT_HIRQ;
-	return DEPT_IRQS_NR;
+		return DEPT_CXT_HIRQ;
+	return DEPT_CXT_PROCESS;
 }
 
 static inline unsigned int cur_ctxt_id(void)
 {
 	struct dept_task *dt = dept_task();
-	int irq = cur_irq();
+	int cxt = cur_cxt();
 
-	/*
-	 * Normal process context
-	 */
-	if (irq == DEPT_IRQS_NR)
-		return 0U;
-
-	return dt->irq_id[irq] | (1UL << irq);
+	return dt->cxt_id[cxt] | (1UL << cxt);
 }
 
 static void enirq_transition(int irq)
@@ -1884,7 +1878,7 @@ static void enirq_update(unsigned long ip)
 	/*
 	 * Do enirq_transition() only on an OFF -> ON transition.
 	 */
-	for_each_set_bit(irq, &irqf, DEPT_IRQS_NR) {
+	for_each_set_bit(irq, &irqf, DEPT_CXT_IRQS_NR) {
 		if (prev & (1UL << irq))
 			continue;
 
@@ -1983,6 +1977,13 @@ void dept_hardirqs_off_ip(unsigned long ip)
 }
 EXPORT_SYMBOL_GPL(dept_hardirqs_off_ip);
 
+void dept_kernel_enter(void)
+{
+	struct dept_task *dt = dept_task();
+
+	dt->cxt_id[DEPT_CXT_PROCESS] += 1UL << DEPT_CXTS_NR;
+}
+
 /*
  * Ensure it's the outmost softirq context.
  */
@@ -1990,7 +1991,7 @@ void dept_softirq_enter(void)
 {
 	struct dept_task *dt = dept_task();
 
-	dt->irq_id[DEPT_SIRQ] += 1UL << DEPT_IRQS_NR;
+	dt->cxt_id[DEPT_CXT_SIRQ] += 1UL << DEPT_CXTS_NR;
 }
 
 /*
@@ -2000,7 +2001,7 @@ void dept_hardirq_enter(void)
 {
 	struct dept_task *dt = dept_task();
 
-	dt->irq_id[DEPT_HIRQ] += 1UL << DEPT_IRQS_NR;
+	dt->cxt_id[DEPT_CXT_HIRQ] += 1UL << DEPT_CXTS_NR;
 }
 
 void dept_sched_enter(void)
-- 
2.40.0


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

* [Intel-xe] [CI 13/27] dept: Distinguish each work from another
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (11 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 12/27] dept: Distinguish each syscall context from another Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 14/27] dept: Add a mechanism to refill the internal memory pools on running out Gwan-gyeong Mun
                   ` (20 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Workqueue already provides concurrency control. By that, any wait in a
work doesn't prevents events in other works with the control enabled.
Thus, each work would better be considered a different context.

So let Dept assign a different context id to each work.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/dept.h     |  2 ++
 kernel/dependency/dept.c | 10 ++++++++++
 kernel/workqueue.c       |  3 +++
 3 files changed, 15 insertions(+)

diff --git a/include/linux/dept.h b/include/linux/dept.h
index f62c7b6f42c6..d9ca9dd50219 100644
--- a/include/linux/dept.h
+++ b/include/linux/dept.h
@@ -515,6 +515,7 @@ extern void dept_ecxt_exit(struct dept_map *m, unsigned long e_f, unsigned long
 extern void dept_sched_enter(void);
 extern void dept_sched_exit(void);
 extern void dept_kernel_enter(void);
+extern void dept_work_enter(void);
 
 static inline void dept_ecxt_enter_nokeep(struct dept_map *m)
 {
@@ -567,6 +568,7 @@ struct dept_task { };
 #define dept_sched_enter()				do { } while (0)
 #define dept_sched_exit()				do { } while (0)
 #define dept_kernel_enter()				do { } while (0)
+#define dept_work_enter()				do { } while (0)
 #define dept_ecxt_enter_nokeep(m)			do { } while (0)
 #define dept_key_init(k)				do { (void)(k); } while (0)
 #define dept_key_destroy(k)				do { (void)(k); } while (0)
diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c
index 4165cacf4ebb..6cf17f206b78 100644
--- a/kernel/dependency/dept.c
+++ b/kernel/dependency/dept.c
@@ -1977,6 +1977,16 @@ void dept_hardirqs_off_ip(unsigned long ip)
 }
 EXPORT_SYMBOL_GPL(dept_hardirqs_off_ip);
 
+/*
+ * Assign a different context id to each work.
+ */
+void dept_work_enter(void)
+{
+	struct dept_task *dt = dept_task();
+
+	dt->cxt_id[DEPT_CXT_PROCESS] += 1UL << DEPT_CXTS_NR;
+}
+
 void dept_kernel_enter(void)
 {
 	struct dept_task *dt = dept_task();
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index c913e333cce8..fa23d876a8b5 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -52,6 +52,7 @@
 #include <linux/sched/debug.h>
 #include <linux/nmi.h>
 #include <linux/kvm_para.h>
+#include <linux/dept.h>
 
 #include "workqueue_internal.h"
 
@@ -2318,6 +2319,8 @@ __acquires(&pool->lock)
 
 	lockdep_copy_map(&lockdep_map, &work->lockdep_map);
 #endif
+	dept_work_enter();
+
 	/* ensure we're on the correct CPU */
 	WARN_ON_ONCE(!(pool->flags & POOL_DISASSOCIATED) &&
 		     raw_smp_processor_id() != pool->cpu);
-- 
2.40.0


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

* [Intel-xe] [CI 14/27] dept: Add a mechanism to refill the internal memory pools on running out
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (12 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 13/27] dept: Distinguish each work " Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 15/27] locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread Gwan-gyeong Mun
                   ` (19 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Dept engine works in a constrained environment. For example, Dept cannot
make use of dynamic allocation e.g. kmalloc(). So Dept has been using
static pools to keep memory chunks Dept uses.

However, Dept would barely work once any of the pools gets run out. So
implemented a mechanism for the refill on the lack by any chance, using
irq work and workqueue that fits on the contrained environment.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/dept.h            |  19 ++++--
 kernel/dependency/dept.c        | 104 +++++++++++++++++++++++++++-----
 kernel/dependency/dept_object.h |  10 +--
 kernel/dependency/dept_proc.c   |   8 +--
 4 files changed, 112 insertions(+), 29 deletions(-)

diff --git a/include/linux/dept.h b/include/linux/dept.h
index d9ca9dd50219..583e8fe2dd7b 100644
--- a/include/linux/dept.h
+++ b/include/linux/dept.h
@@ -336,9 +336,19 @@ struct dept_pool {
 	size_t				obj_sz;
 
 	/*
-	 * the number of the static array
+	 * the remaining number of the object in spool
 	 */
-	atomic_t			obj_nr;
+	int				obj_nr;
+
+	/*
+	 * the number of the object in spool
+	 */
+	int				tot_nr;
+
+	/*
+	 * accumulated amount of memory used by the object in byte
+	 */
+	atomic_t			acc_sz;
 
 	/*
 	 * offset of ->pool_node
@@ -348,9 +358,10 @@ struct dept_pool {
 	/*
 	 * pointer to the pool
 	 */
-	void				*spool;
+	void				*spool; /* static pool */
+	void				*rpool; /* reserved pool */
 	struct llist_head		boot_pool;
-	struct llist_head __percpu	*lpool;
+	struct llist_head __percpu	*lpool; /* local pool */
 };
 
 struct dept_ecxt_held {
diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c
index 6cf17f206b78..8454f0a14d67 100644
--- a/kernel/dependency/dept.c
+++ b/kernel/dependency/dept.c
@@ -74,6 +74,9 @@
 #include <linux/dept.h>
 #include <linux/utsname.h>
 #include <linux/kernel.h>
+#include <linux/workqueue.h>
+#include <linux/irq_work.h>
+#include <linux/vmalloc.h>
 #include "dept_internal.h"
 
 static int dept_stop;
@@ -122,10 +125,12 @@ static int dept_per_cpu_ready;
 			WARN(1, "DEPT_STOP: " s);			\
 	})
 
-#define DEPT_INFO_ONCE(s...) pr_warn_once("DEPT_INFO_ONCE: " s)
+#define DEPT_INFO_ONCE(s...)	pr_warn_once("DEPT_INFO_ONCE: " s)
+#define DEPT_INFO(s...)		pr_warn("DEPT_INFO: " s)
 
 static arch_spinlock_t dept_spin = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
 static arch_spinlock_t stage_spin = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
+static arch_spinlock_t dept_pool_spin = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
 
 /*
  * DEPT internal engine should be careful in using outside functions
@@ -264,6 +269,7 @@ static inline bool valid_key(struct dept_key *k)
 
 #define OBJECT(id, nr)							\
 static struct dept_##id spool_##id[nr];					\
+static struct dept_##id rpool_##id[nr];					\
 static DEFINE_PER_CPU(struct llist_head, lpool_##id);
 	#include "dept_object.h"
 #undef  OBJECT
@@ -272,14 +278,70 @@ struct dept_pool dept_pool[OBJECT_NR] = {
 #define OBJECT(id, nr) {						\
 	.name = #id,							\
 	.obj_sz = sizeof(struct dept_##id),				\
-	.obj_nr = ATOMIC_INIT(nr),					\
+	.obj_nr = nr,							\
+	.tot_nr = nr,							\
+	.acc_sz = ATOMIC_INIT(sizeof(spool_##id) + sizeof(rpool_##id)), \
 	.node_off = offsetof(struct dept_##id, pool_node),		\
 	.spool = spool_##id,						\
+	.rpool = rpool_##id,						\
 	.lpool = &lpool_##id, },
 	#include "dept_object.h"
 #undef  OBJECT
 };
 
+static void dept_wq_work_fn(struct work_struct *work)
+{
+	int i;
+
+	for (i = 0; i < OBJECT_NR; i++) {
+		struct dept_pool *p = dept_pool + i;
+		int sz = p->tot_nr * p->obj_sz;
+		void *rpool;
+		bool need;
+
+		arch_spin_lock(&dept_pool_spin);
+		need = !p->rpool;
+		arch_spin_unlock(&dept_pool_spin);
+
+		if (!need)
+			continue;
+
+		rpool = vmalloc(sz);
+
+		if (!rpool) {
+			DEPT_STOP("Failed to extend internal resources.\n");
+			break;
+		}
+
+		arch_spin_lock(&dept_pool_spin);
+		if (!p->rpool) {
+			p->rpool = rpool;
+			rpool = NULL;
+			atomic_add(sz, &p->acc_sz);
+		}
+		arch_spin_unlock(&dept_pool_spin);
+
+		if (rpool)
+			vfree(rpool);
+		else
+			DEPT_INFO("Dept object(%s) just got refilled successfully.\n", p->name);
+	}
+}
+
+static DECLARE_WORK(dept_wq_work, dept_wq_work_fn);
+
+static void dept_irq_work_fn(struct irq_work *w)
+{
+	schedule_work(&dept_wq_work);
+}
+
+static DEFINE_IRQ_WORK(dept_irq_work, dept_irq_work_fn);
+
+static void request_rpool_refill(void)
+{
+	irq_work_queue(&dept_irq_work);
+}
+
 /*
  * Can use llist no matter whether CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG is
  * enabled or not because NMI and other contexts in the same CPU never
@@ -315,19 +377,31 @@ static void *from_pool(enum object_t t)
 	/*
 	 * Try static pool.
 	 */
-	if (atomic_read(&p->obj_nr) > 0) {
-		int idx = atomic_dec_return(&p->obj_nr);
+	arch_spin_lock(&dept_pool_spin);
+
+	if (!p->obj_nr) {
+		p->spool = p->rpool;
+		p->obj_nr = p->rpool ? p->tot_nr : 0;
+		p->rpool = NULL;
+		request_rpool_refill();
+	}
+
+	if (p->obj_nr) {
+		void *ret;
+
+		p->obj_nr--;
+		ret = p->spool + (p->obj_nr * p->obj_sz);
+		arch_spin_unlock(&dept_pool_spin);
 
-		if (idx >= 0)
-			return p->spool + (idx * p->obj_sz);
+		return ret;
 	}
+	arch_spin_unlock(&dept_pool_spin);
 
-	DEPT_INFO_ONCE("---------------------------------------------\n"
-		"  Some of Dept internal resources are run out.\n"
-		"  Dept might still work if the resources get freed.\n"
-		"  However, the chances are Dept will suffer from\n"
-		"  the lack from now. Needs to extend the internal\n"
-		"  resource pools. Ask max.byungchul.park@gmail.com\n");
+	DEPT_INFO("------------------------------------------\n"
+		"  Dept object(%s) is run out.\n"
+		"  Dept is trying to refill the object.\n"
+		"  Nevertheless, if it fails, Dept will stop.\n",
+		p->name);
 	return NULL;
 }
 
@@ -3000,8 +3074,8 @@ void __init dept_init(void)
 	pr_info("... DEPT_MAX_ECXT_HELD  : %d\n", DEPT_MAX_ECXT_HELD);
 	pr_info("... DEPT_MAX_SUBCLASSES : %d\n", DEPT_MAX_SUBCLASSES);
 #define OBJECT(id, nr)							\
-	pr_info("... memory used by %s: %zu KB\n",			\
-	       #id, B2KB(sizeof(struct dept_##id) * nr));
+	pr_info("... memory initially used by %s: %zu KB\n",		\
+	       #id, B2KB(sizeof(spool_##id) + sizeof(rpool_##id)));
 	#include "dept_object.h"
 #undef  OBJECT
 #define HASH(id, bits)							\
@@ -3009,6 +3083,6 @@ void __init dept_init(void)
 	       #id, B2KB(sizeof(struct hlist_head) * (1 << (bits))));
 	#include "dept_hash.h"
 #undef  HASH
-	pr_info("... total memory used by objects and hashs: %zu KB\n", B2KB(mem_total));
+	pr_info("... total memory initially used by objects and hashs: %zu KB\n", B2KB(mem_total));
 	pr_info("... per task memory footprint: %zu bytes\n", sizeof(struct dept_task));
 }
diff --git a/kernel/dependency/dept_object.h b/kernel/dependency/dept_object.h
index 0b7eb16fe9fb..4f936adfa8ee 100644
--- a/kernel/dependency/dept_object.h
+++ b/kernel/dependency/dept_object.h
@@ -6,8 +6,8 @@
  * nr: # of the object that should be kept in the pool.
  */
 
-OBJECT(dep, 1024 * 8)
-OBJECT(class, 1024 * 8)
-OBJECT(stack, 1024 * 32)
-OBJECT(ecxt, 1024 * 16)
-OBJECT(wait, 1024 * 32)
+OBJECT(dep, 1024 * 4 * 2)
+OBJECT(class, 1024 * 4)
+OBJECT(stack, 1024 * 4 * 8)
+OBJECT(ecxt, 1024 * 4 * 2)
+OBJECT(wait, 1024 * 4 * 4)
diff --git a/kernel/dependency/dept_proc.c b/kernel/dependency/dept_proc.c
index 7d61dfbc5865..f07a512b203f 100644
--- a/kernel/dependency/dept_proc.c
+++ b/kernel/dependency/dept_proc.c
@@ -73,12 +73,10 @@ static int dept_stats_show(struct seq_file *m, void *v)
 {
 	int r;
 
-	seq_puts(m, "Availability in the static pools:\n\n");
+	seq_puts(m, "Accumulated amount of memory used by pools:\n\n");
 #define OBJECT(id, nr)							\
-	r = atomic_read(&dept_pool[OBJECT_##id].obj_nr);		\
-	if (r < 0)							\
-		r = 0;							\
-	seq_printf(m, "%s\t%d/%d(%d%%)\n", #id, r, nr, (r * 100) / (nr));
+	r = atomic_read(&dept_pool[OBJECT_##id].acc_sz);		\
+	seq_printf(m, "%s\t%d KB\n", #id, r / 1024);
 	#include "dept_object.h"
 #undef  OBJECT
 
-- 
2.40.0


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

* [Intel-xe] [CI 15/27] locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (13 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 14/27] dept: Add a mechanism to refill the internal memory pools on running out Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 16/27] dept: Apply sdt_might_sleep_{start, end}() to dma fence wait Gwan-gyeong Mun
                   ` (18 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

cb92173d1f0 ("locking/lockdep, cpu/hotplug: Annotate AP thread") was
introduced to make lockdep_assert_cpus_held() work in AP thread.

However, the annotation is too strong for that purpose. We don't have to
use more than try lock annotation for that.

Furthermore, now that Dept was introduced, false positive alarms was
reported by that. Replaced it with try lock annotation.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 kernel/cpu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/cpu.c b/kernel/cpu.c
index f4a2c5845bcb..19076f798b34 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -356,7 +356,7 @@ int lockdep_is_cpus_held(void)
 
 static void lockdep_acquire_cpus_lock(void)
 {
-	rwsem_acquire(&cpu_hotplug_lock.dep_map, 0, 0, _THIS_IP_);
+	rwsem_acquire(&cpu_hotplug_lock.dep_map, 0, 1, _THIS_IP_);
 }
 
 static void lockdep_release_cpus_lock(void)
-- 
2.40.0


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

* [Intel-xe] [CI 16/27] dept: Apply sdt_might_sleep_{start, end}() to dma fence wait
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (14 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 15/27] locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 17/27] dept: Track timeout waits separately with a new Kconfig Gwan-gyeong Mun
                   ` (17 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Makes Dept able to track dma fence waits.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 drivers/dma-buf/dma-fence.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
index f177c56269bb..ad2d7a94c868 100644
--- a/drivers/dma-buf/dma-fence.c
+++ b/drivers/dma-buf/dma-fence.c
@@ -16,6 +16,7 @@
 #include <linux/dma-fence.h>
 #include <linux/sched/signal.h>
 #include <linux/seq_file.h>
+#include <linux/dept_sdt.h>
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/dma_fence.h>
@@ -782,6 +783,7 @@ dma_fence_default_wait(struct dma_fence *fence, bool intr, signed long timeout)
 	cb.task = current;
 	list_add(&cb.base.node, &fence->cb_list);
 
+	sdt_might_sleep_start(NULL);
 	while (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags) && ret > 0) {
 		if (intr)
 			__set_current_state(TASK_INTERRUPTIBLE);
@@ -795,6 +797,7 @@ dma_fence_default_wait(struct dma_fence *fence, bool intr, signed long timeout)
 		if (ret > 0 && intr && signal_pending(current))
 			ret = -ERESTARTSYS;
 	}
+	sdt_might_sleep_end();
 
 	if (!list_empty(&cb.base.node))
 		list_del(&cb.base.node);
@@ -884,6 +887,7 @@ dma_fence_wait_any_timeout(struct dma_fence **fences, uint32_t count,
 		}
 	}
 
+	sdt_might_sleep_start(NULL);
 	while (ret > 0) {
 		if (intr)
 			set_current_state(TASK_INTERRUPTIBLE);
@@ -898,6 +902,7 @@ dma_fence_wait_any_timeout(struct dma_fence **fences, uint32_t count,
 		if (ret > 0 && intr && signal_pending(current))
 			ret = -ERESTARTSYS;
 	}
+	sdt_might_sleep_end();
 
 	__set_current_state(TASK_RUNNING);
 
-- 
2.40.0


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

* [Intel-xe] [CI 17/27] dept: Track timeout waits separately with a new Kconfig
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (15 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 16/27] dept: Apply sdt_might_sleep_{start, end}() to dma fence wait Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 18/27] dept: Apply timeout consideration to wait_for_completion()/complete() Gwan-gyeong Mun
                   ` (16 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Waits with valid timeouts don't actually cause deadlocks. However, Dept
has been reporting the cases as well because it's worth informing the
circular dependency for some cases where, for example, timeout is used
to avoid a deadlock but not meant to be expired.

However, yes, there are also a lot of, even more, cases where timeout
is used for its clear purpose and meant to be expired.

Let Dept report these as an information rather than shouting DEADLOCK.
Plus, introduced CONFIG_DEPT_AGGRESSIVE_TIMEOUT_WAIT Kconfig to make it
optional so that any reports involving waits with timeouts can be turned
on/off depending on the purpose.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/dept.h     | 15 ++++++---
 include/linux/dept_ldt.h |  6 ++--
 include/linux/dept_sdt.h | 12 +++++---
 kernel/dependency/dept.c | 66 ++++++++++++++++++++++++++++++++++------
 lib/Kconfig.debug        | 10 ++++++
 5 files changed, 89 insertions(+), 20 deletions(-)

diff --git a/include/linux/dept.h b/include/linux/dept.h
index 583e8fe2dd7b..0aa8d90558a9 100644
--- a/include/linux/dept.h
+++ b/include/linux/dept.h
@@ -270,6 +270,11 @@ struct dept_wait {
 			 * whether this wait is for commit in scheduler
 			 */
 			bool		sched_sleep;
+
+			/*
+			 * whether a timeout is set
+			 */
+			bool				timeout;
 		};
 	};
 };
@@ -458,6 +463,7 @@ struct dept_task {
 	bool				stage_sched_map;
 	const char			*stage_w_fn;
 	unsigned long			stage_ip;
+	bool				stage_timeout;
 
 	/*
 	 * the number of missing ecxts
@@ -496,6 +502,7 @@ struct dept_task {
 	.stage_sched_map = false,				\
 	.stage_w_fn = NULL,					\
 	.stage_ip = 0UL,					\
+	.stage_timeout = false,					\
 	.missing_ecxt = 0,					\
 	.hardirqs_enabled = false,				\
 	.softirqs_enabled = false,				\
@@ -513,8 +520,8 @@ extern void dept_map_init(struct dept_map *m, struct dept_key *k, int sub_u, con
 extern void dept_map_reinit(struct dept_map *m, struct dept_key *k, int sub_u, const char *n);
 extern void dept_map_copy(struct dept_map *to, struct dept_map *from);
 
-extern void dept_wait(struct dept_map *m, unsigned long w_f, unsigned long ip, const char *w_fn, int sub_l);
-extern void dept_stage_wait(struct dept_map *m, struct dept_key *k, unsigned long ip, const char *w_fn);
+extern void dept_wait(struct dept_map *m, unsigned long w_f, unsigned long ip, const char *w_fn, int sub_l, long timeout);
+extern void dept_stage_wait(struct dept_map *m, struct dept_key *k, unsigned long ip, const char *w_fn, long timeout);
 extern void dept_request_event_wait_commit(void);
 extern void dept_clean_stage(void);
 extern void dept_stage_event(struct task_struct *t, unsigned long ip);
@@ -566,8 +573,8 @@ struct dept_task { };
 #define dept_map_reinit(m, k, su, n)			do { (void)(n); (void)(k); } while (0)
 #define dept_map_copy(t, f)				do { } while (0)
 
-#define dept_wait(m, w_f, ip, w_fn, sl)			do { (void)(w_fn); } while (0)
-#define dept_stage_wait(m, k, ip, w_fn)			do { (void)(k); (void)(w_fn); } while (0)
+#define dept_wait(m, w_f, ip, w_fn, sl, t)		do { (void)(w_fn); } while (0)
+#define dept_stage_wait(m, k, ip, w_fn, t)		do { (void)(k); (void)(w_fn); } while (0)
 #define dept_request_event_wait_commit()		do { } while (0)
 #define dept_clean_stage()				do { } while (0)
 #define dept_stage_event(t, ip)				do { } while (0)
diff --git a/include/linux/dept_ldt.h b/include/linux/dept_ldt.h
index 062613e89fc3..8adf298dfcb8 100644
--- a/include/linux/dept_ldt.h
+++ b/include/linux/dept_ldt.h
@@ -27,7 +27,7 @@
 		else if (t)						\
 			dept_ecxt_enter(m, LDT_EVT_L, i, "trylock", "unlock", sl);\
 		else {							\
-			dept_wait(m, LDT_EVT_L, i, "lock", sl);		\
+			dept_wait(m, LDT_EVT_L, i, "lock", sl, false);	\
 			dept_ecxt_enter(m, LDT_EVT_L, i, "lock", "unlock", sl);\
 		}							\
 	} while (0)
@@ -39,7 +39,7 @@
 		else if (t)						\
 			dept_ecxt_enter(m, LDT_EVT_R, i, "read_trylock", "read_unlock", sl);\
 		else {							\
-			dept_wait(m, q ? LDT_EVT_RW : LDT_EVT_W, i, "read_lock", sl);\
+			dept_wait(m, q ? LDT_EVT_RW : LDT_EVT_W, i, "read_lock", sl, false);\
 			dept_ecxt_enter(m, LDT_EVT_R, i, "read_lock", "read_unlock", sl);\
 		}							\
 	} while (0)
@@ -51,7 +51,7 @@
 		else if (t)						\
 			dept_ecxt_enter(m, LDT_EVT_W, i, "write_trylock", "write_unlock", sl);\
 		else {							\
-			dept_wait(m, LDT_EVT_RW, i, "write_lock", sl);	\
+			dept_wait(m, LDT_EVT_RW, i, "write_lock", sl, false);\
 			dept_ecxt_enter(m, LDT_EVT_W, i, "write_lock", "write_unlock", sl);\
 		}							\
 	} while (0)
diff --git a/include/linux/dept_sdt.h b/include/linux/dept_sdt.h
index 12a793b90c7e..21fce525f031 100644
--- a/include/linux/dept_sdt.h
+++ b/include/linux/dept_sdt.h
@@ -22,11 +22,12 @@
 
 #define sdt_map_init_key(m, k)		dept_map_init(m, k, 0, #m)
 
-#define sdt_wait(m)							\
+#define sdt_wait_timeout(m, t)						\
 	do {								\
 		dept_request_event(m);					\
-		dept_wait(m, 1UL, _THIS_IP_, __func__, 0);		\
+		dept_wait(m, 1UL, _THIS_IP_, __func__, 0, t);		\
 	} while (0)
+#define sdt_wait(m) sdt_wait_timeout(m, -1L)
 
 /*
  * sdt_might_sleep() and its family will be committed in __schedule()
@@ -37,12 +38,13 @@
 /*
  * Use the code location as the class key if an explicit map is not used.
  */
-#define sdt_might_sleep_start(m)					\
+#define sdt_might_sleep_start_timeout(m, t)				\
 	do {								\
 		struct dept_map *__m = m;				\
 		static struct dept_key __key;				\
-		dept_stage_wait(__m, __m ? NULL : &__key, _THIS_IP_, __func__);\
+		dept_stage_wait(__m, __m ? NULL : &__key, _THIS_IP_, __func__, t);\
 	} while (0)
+#define sdt_might_sleep_start(m) sdt_might_sleep_start_timeout(m, -1L)
 
 #define sdt_might_sleep_end()		dept_clean_stage()
 
@@ -52,7 +54,9 @@
 #else /* !CONFIG_DEPT */
 #define sdt_map_init(m)			do { } while (0)
 #define sdt_map_init_key(m, k)		do { (void)(k); } while (0)
+#define sdt_wait_timeout(m, t)		do { } while (0)
 #define sdt_wait(m)			do { } while (0)
+#define sdt_might_sleep_start_timeout(m, t) do { } while (0)
 #define sdt_might_sleep_start(m)	do { } while (0)
 #define sdt_might_sleep_end()		do { } while (0)
 #define sdt_ecxt_enter(m)		do { } while (0)
diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c
index 8454f0a14d67..52537c099b68 100644
--- a/kernel/dependency/dept.c
+++ b/kernel/dependency/dept.c
@@ -740,6 +740,8 @@ static void print_diagram(struct dept_dep *d)
 	if (!irqf) {
 		print_spc(spc, "[S] %s(%s:%d)\n", c_fn, fc_n, fc->sub_id);
 		print_spc(spc, "[W] %s(%s:%d)\n", w_fn, tc_n, tc->sub_id);
+		if (w->timeout)
+			print_spc(spc, "--------------- >8 timeout ---------------\n");
 		print_spc(spc, "[E] %s(%s:%d)\n", e_fn, fc_n, fc->sub_id);
 	}
 }
@@ -793,6 +795,24 @@ static void print_dep(struct dept_dep *d)
 
 static void save_current_stack(int skip);
 
+static bool is_timeout_wait_circle(struct dept_class *c)
+{
+	struct dept_class *fc = c->bfs_parent;
+	struct dept_class *tc = c;
+
+	do {
+		struct dept_dep *d = lookup_dep(fc, tc);
+
+		if (d->wait->timeout)
+			return true;
+
+		tc = fc;
+		fc = fc->bfs_parent;
+	} while (tc != c);
+
+	return false;
+}
+
 /*
  * Print all classes in a circle.
  */
@@ -815,10 +835,14 @@ static void print_circle(struct dept_class *c)
 	pr_warn("summary\n");
 	pr_warn("---------------------------------------------------\n");
 
-	if (fc == tc)
+	if (is_timeout_wait_circle(c)) {
+		pr_warn("NOT A DEADLOCK BUT A CIRCULAR DEPENDENCY\n");
+		pr_warn("CHECK IF THE TIMEOUT IS INTENDED\n\n");
+	} else if (fc == tc) {
 		pr_warn("*** AA DEADLOCK ***\n\n");
-	else
+	} else {
 		pr_warn("*** DEADLOCK ***\n\n");
+	}
 
 	i = 0;
 	do {
@@ -1564,7 +1588,8 @@ static void add_dep(struct dept_ecxt *e, struct dept_wait *w)
 static atomic_t wgen = ATOMIC_INIT(1);
 
 static void add_wait(struct dept_class *c, unsigned long ip,
-		     const char *w_fn, int sub_l, bool sched_sleep)
+		     const char *w_fn, int sub_l, bool sched_sleep,
+		     bool timeout)
 {
 	struct dept_task *dt = dept_task();
 	struct dept_wait *w;
@@ -1584,6 +1609,7 @@ static void add_wait(struct dept_class *c, unsigned long ip,
 	w->wait_fn = w_fn;
 	w->wait_stack = get_current_stack();
 	w->sched_sleep = sched_sleep;
+	w->timeout = timeout;
 
 	cxt = cur_cxt();
 	if (cxt == DEPT_CXT_HIRQ || cxt == DEPT_CXT_SIRQ)
@@ -2338,7 +2364,7 @@ static struct dept_class *check_new_class(struct dept_key *local,
  */
 static void __dept_wait(struct dept_map *m, unsigned long w_f,
 			unsigned long ip, const char *w_fn, int sub_l,
-			bool sched_sleep, bool sched_map)
+			bool sched_sleep, bool sched_map, bool timeout)
 {
 	int e;
 
@@ -2361,7 +2387,7 @@ static void __dept_wait(struct dept_map *m, unsigned long w_f,
 		if (!c)
 			continue;
 
-		add_wait(c, ip, w_fn, sub_l, sched_sleep);
+		add_wait(c, ip, w_fn, sub_l, sched_sleep, timeout);
 	}
 }
 
@@ -2403,14 +2429,23 @@ static void __dept_event(struct dept_map *m, unsigned long e_f,
 }
 
 void dept_wait(struct dept_map *m, unsigned long w_f,
-	       unsigned long ip, const char *w_fn, int sub_l)
+	       unsigned long ip, const char *w_fn, int sub_l,
+	       long timeoutval)
 {
 	struct dept_task *dt = dept_task();
 	unsigned long flags;
+	bool timeout;
 
 	if (unlikely(!dept_working()))
 		return;
 
+	timeout = timeoutval > 0 && timeoutval < MAX_SCHEDULE_TIMEOUT;
+
+#if !defined(CONFIG_DEPT_AGGRESSIVE_TIMEOUT_WAIT)
+	if (timeout)
+		return;
+#endif
+
 	if (dt->recursive)
 		return;
 
@@ -2419,21 +2454,30 @@ void dept_wait(struct dept_map *m, unsigned long w_f,
 
 	flags = dept_enter();
 
-	__dept_wait(m, w_f, ip, w_fn, sub_l, false, false);
+	__dept_wait(m, w_f, ip, w_fn, sub_l, false, false, timeout);
 
 	dept_exit(flags);
 }
 EXPORT_SYMBOL_GPL(dept_wait);
 
 void dept_stage_wait(struct dept_map *m, struct dept_key *k,
-		     unsigned long ip, const char *w_fn)
+		     unsigned long ip, const char *w_fn,
+		     long timeoutval)
 {
 	struct dept_task *dt = dept_task();
 	unsigned long flags;
+	bool timeout;
 
 	if (unlikely(!dept_working()))
 		return;
 
+	timeout = timeoutval > 0 && timeoutval < MAX_SCHEDULE_TIMEOUT;
+
+#if !defined(CONFIG_DEPT_AGGRESSIVE_TIMEOUT_WAIT)
+	if (timeout)
+		return;
+#endif
+
 	if (m && m->nocheck)
 		return;
 
@@ -2481,6 +2525,7 @@ void dept_stage_wait(struct dept_map *m, struct dept_key *k,
 
 	dt->stage_w_fn = w_fn;
 	dt->stage_ip = ip;
+	dt->stage_timeout = timeout;
 unlock:
 	arch_spin_unlock(&stage_spin);
 
@@ -2506,6 +2551,7 @@ void dept_clean_stage(void)
 	dt->stage_sched_map = false;
 	dt->stage_w_fn = NULL;
 	dt->stage_ip = 0UL;
+	dt->stage_timeout = false;
 	arch_spin_unlock(&stage_spin);
 
 	dept_exit_recursive(flags);
@@ -2523,6 +2569,7 @@ void dept_request_event_wait_commit(void)
 	unsigned long ip;
 	const char *w_fn;
 	bool sched_map;
+	bool timeout;
 
 	if (unlikely(!dept_working()))
 		return;
@@ -2545,6 +2592,7 @@ void dept_request_event_wait_commit(void)
 	w_fn = dt->stage_w_fn;
 	ip = dt->stage_ip;
 	sched_map = dt->stage_sched_map;
+	timeout = dt->stage_timeout;
 
 	/*
 	 * Avoid zero wgen.
@@ -2552,7 +2600,7 @@ void dept_request_event_wait_commit(void)
 	wg = atomic_inc_return(&wgen) ?: atomic_inc_return(&wgen);
 	WRITE_ONCE(dt->stage_m.wgen, wg);
 
-	__dept_wait(&dt->stage_m, 1UL, ip, w_fn, 0, true, sched_map);
+	__dept_wait(&dt->stage_m, 1UL, ip, w_fn, 0, true, sched_map, timeout);
 exit:
 	dept_exit(flags);
 }
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index aa62caa4dc14..f78b3d721a2b 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1234,6 +1234,16 @@ config DEPT
 	  noting, to mitigate the impact by the false positives, multi
 	  reporting has been supported.
 
+config DEPT_AGGRESSIVE_TIMEOUT_WAIT
+	bool "Aggressively track even timeout waits"
+	depends on DEPT
+	default n
+	help
+	  Timeout wait doesn't contribute to a deadlock. However,
+	  informing a circular dependency might be helpful for cases
+	  that timeout is used to avoid a deadlock. Say N if you'd like
+	  to avoid verbose reports.
+
 config LOCK_DEBUGGING_SUPPORT
 	bool
 	depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
-- 
2.40.0


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

* [Intel-xe] [CI 18/27] dept: Apply timeout consideration to wait_for_completion()/complete()
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (16 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 17/27] dept: Track timeout waits separately with a new Kconfig Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 19/27] dept: Apply timeout consideration to swait Gwan-gyeong Mun
                   ` (15 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Now that CONFIG_DEPT_AGGRESSIVE_TIMEOUT_WAIT was introduced, apply the
consideration to wait_for_completion()/complete().

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/completion.h | 4 ++--
 kernel/sched/completion.c  | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/linux/completion.h b/include/linux/completion.h
index 32d535abebf3..15eede01a451 100644
--- a/include/linux/completion.h
+++ b/include/linux/completion.h
@@ -41,9 +41,9 @@ do {							\
  */
 #define init_completion_map(x, m) init_completion(x)
 
-static inline void complete_acquire(struct completion *x)
+static inline void complete_acquire(struct completion *x, long timeout)
 {
-	sdt_might_sleep_start(&x->dmap);
+	sdt_might_sleep_start_timeout(&x->dmap, timeout);
 }
 
 static inline void complete_release(struct completion *x)
diff --git a/kernel/sched/completion.c b/kernel/sched/completion.c
index d57a5c1c1cd9..261807fa7118 100644
--- a/kernel/sched/completion.c
+++ b/kernel/sched/completion.c
@@ -100,7 +100,7 @@ __wait_for_common(struct completion *x,
 {
 	might_sleep();
 
-	complete_acquire(x);
+	complete_acquire(x, timeout);
 
 	raw_spin_lock_irq(&x->wait.lock);
 	timeout = do_wait_for_common(x, action, timeout, state);
-- 
2.40.0


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

* [Intel-xe] [CI 19/27] dept: Apply timeout consideration to swait
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (17 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 18/27] dept: Apply timeout consideration to wait_for_completion()/complete() Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 20/27] dept: Apply timeout consideration to waitqueue wait Gwan-gyeong Mun
                   ` (14 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Now that CONFIG_DEPT_AGGRESSIVE_TIMEOUT_WAIT was introduced, apply the
consideration to swait, assuming an input 'ret' in ___swait_event()
macro is used as a timeout value.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/swait.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/swait.h b/include/linux/swait.h
index 02848211cef5..def1e47bb678 100644
--- a/include/linux/swait.h
+++ b/include/linux/swait.h
@@ -162,7 +162,7 @@ extern void finish_swait(struct swait_queue_head *q, struct swait_queue *wait);
 	struct swait_queue __wait;					\
 	long __ret = ret;						\
 									\
-	sdt_might_sleep_start(NULL);					\
+	sdt_might_sleep_start_timeout(NULL, __ret);			\
 	INIT_LIST_HEAD(&__wait.task_list);				\
 	for (;;) {							\
 		long __int = prepare_to_swait_event(&wq, &__wait, state);\
-- 
2.40.0


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

* [Intel-xe] [CI 20/27] dept: Apply timeout consideration to waitqueue wait
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (18 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 19/27] dept: Apply timeout consideration to swait Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 21/27] dept: Apply timeout consideration to hashed-waitqueue wait Gwan-gyeong Mun
                   ` (13 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Now that CONFIG_DEPT_AGGRESSIVE_TIMEOUT_WAIT was introduced, apply the
consideration to waitqueue wait, assuming an input 'ret' in
___wait_event() macro is used as a timeout value.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/wait.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/wait.h b/include/linux/wait.h
index ff349e609da7..aa1bd964be1e 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -304,7 +304,7 @@ extern void init_wait_entry(struct wait_queue_entry *wq_entry, int flags);
 	struct wait_queue_entry __wq_entry;					\
 	long __ret = ret;	/* explicit shadow */				\
 										\
-	sdt_might_sleep_start(NULL);						\
+	sdt_might_sleep_start_timeout(NULL, __ret);				\
 	init_wait_entry(&__wq_entry, exclusive ? WQ_FLAG_EXCLUSIVE : 0);	\
 	for (;;) {								\
 		long __int = prepare_to_wait_event(&wq_head, &__wq_entry, state);\
-- 
2.40.0


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

* [Intel-xe] [CI 21/27] dept: Apply timeout consideration to hashed-waitqueue wait
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (19 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 20/27] dept: Apply timeout consideration to waitqueue wait Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 22/27] dept: Apply timeout consideration to dma fence wait Gwan-gyeong Mun
                   ` (12 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Now that CONFIG_DEPT_AGGRESSIVE_TIMEOUT_WAIT was introduced, apply the
consideration to hashed-waitqueue wait, assuming an input 'ret' in
___wait_var_event() macro is used as a timeout value.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/wait_bit.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/wait_bit.h b/include/linux/wait_bit.h
index fe89282c3e96..3ef450d9a7c5 100644
--- a/include/linux/wait_bit.h
+++ b/include/linux/wait_bit.h
@@ -247,7 +247,7 @@ extern wait_queue_head_t *__var_waitqueue(void *p);
 	struct wait_bit_queue_entry __wbq_entry;			\
 	long __ret = ret; /* explicit shadow */				\
 									\
-	sdt_might_sleep_start(NULL);					\
+	sdt_might_sleep_start_timeout(NULL, __ret);			\
 	init_wait_var_entry(&__wbq_entry, var,				\
 			    exclusive ? WQ_FLAG_EXCLUSIVE : 0);		\
 	for (;;) {							\
-- 
2.40.0


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

* [Intel-xe] [CI 22/27] dept: Apply timeout consideration to dma fence wait
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (20 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 21/27] dept: Apply timeout consideration to hashed-waitqueue wait Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 23/27] dept: Record the latest one out of consecutive waits of the same class Gwan-gyeong Mun
                   ` (11 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Now that CONFIG_DEPT_AGGRESSIVE_TIMEOUT_WAIT was introduced, apply the
consideration to dma fence wait.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 drivers/dma-buf/dma-fence.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
index ad2d7a94c868..ab10b228a147 100644
--- a/drivers/dma-buf/dma-fence.c
+++ b/drivers/dma-buf/dma-fence.c
@@ -783,7 +783,7 @@ dma_fence_default_wait(struct dma_fence *fence, bool intr, signed long timeout)
 	cb.task = current;
 	list_add(&cb.base.node, &fence->cb_list);
 
-	sdt_might_sleep_start(NULL);
+	sdt_might_sleep_start_timeout(NULL, timeout);
 	while (!test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags) && ret > 0) {
 		if (intr)
 			__set_current_state(TASK_INTERRUPTIBLE);
@@ -887,7 +887,7 @@ dma_fence_wait_any_timeout(struct dma_fence **fences, uint32_t count,
 		}
 	}
 
-	sdt_might_sleep_start(NULL);
+	sdt_might_sleep_start_timeout(NULL, timeout);
 	while (ret > 0) {
 		if (intr)
 			set_current_state(TASK_INTERRUPTIBLE);
-- 
2.40.0


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

* [Intel-xe] [CI 23/27] dept: Record the latest one out of consecutive waits of the same class
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (21 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 22/27] dept: Apply timeout consideration to dma fence wait Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 24/27] dept: Make Dept able to work with an external wgen Gwan-gyeong Mun
                   ` (10 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

The current code records all the waits for later use to track relation
between waits and events in each context. However, since the same class
is handled the same way, it'd be okay to record only one on behalf of
the others if they all have the same class.

Even though it's the ideal to search the whole history buffer for that,
since it'd cost too high, alternatively, let's keep the latest one at
least when the same class'ed waits consecutively appear.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 kernel/dependency/dept.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c
index 52537c099b68..cdfda4acff58 100644
--- a/kernel/dependency/dept.c
+++ b/kernel/dependency/dept.c
@@ -1522,9 +1522,28 @@ static inline struct dept_wait_hist *new_hist(void)
 	return wh;
 }
 
+static inline struct dept_wait_hist *last_hist(void)
+{
+	int pos_n = hist_pos_next();
+	struct dept_wait_hist *wh_n = hist(pos_n);
+
+	/*
+	 * This is the first try.
+	 */
+	if (!pos_n && !wh_n->wait)
+		return NULL;
+
+	return hist(pos_n + DEPT_MAX_WAIT_HIST - 1);
+}
+
 static void add_hist(struct dept_wait *w, unsigned int wg, unsigned int ctxt_id)
 {
-	struct dept_wait_hist *wh = new_hist();
+	struct dept_wait_hist *wh;
+
+	wh = last_hist();
+
+	if (!wh || wh->wait->class != w->class || wh->ctxt_id != ctxt_id)
+		wh = new_hist();
 
 	if (likely(wh->wait))
 		put_wait(wh->wait);
-- 
2.40.0


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

* [Intel-xe] [CI 24/27] dept: Make Dept able to work with an external wgen
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (22 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 23/27] dept: Record the latest one out of consecutive waits of the same class Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 25/27] dept: Track the potential waits of PG_{locked, writeback} Gwan-gyeong Mun
                   ` (9 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

There is a case where total maps for its wait/event is so large in size.
For instance, struct page for PG_locked and PG_writeback is the case.
The additional memory size for the maps would be 'the # of pages *
sizeof(struct dept_map)' if each struct page keeps its map all the way,
which might be too big to accept.

It'd be better to keep the minimum data in the case, which is timestamp
called 'wgen' that Dept makes use of. So made Dept able to work with an
external wgen when needed.

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/dept.h     | 18 ++++++++++++++----
 include/linux/dept_sdt.h |  4 ++--
 kernel/dependency/dept.c | 30 +++++++++++++++++++++---------
 3 files changed, 37 insertions(+), 15 deletions(-)

diff --git a/include/linux/dept.h b/include/linux/dept.h
index 0aa8d90558a9..ad32ea7b57bb 100644
--- a/include/linux/dept.h
+++ b/include/linux/dept.h
@@ -487,6 +487,13 @@ struct dept_task {
 	bool				in_sched;
 };
 
+/*
+ * for subsystems that requires compact use of memory e.g. struct page
+ */
+struct dept_ext_wgen{
+	unsigned int wgen;
+};
+
 #define DEPT_TASK_INITIALIZER(t)				\
 {								\
 	.wait_hist = { { .wait = NULL, } },			\
@@ -518,6 +525,7 @@ extern void dept_task_exit(struct task_struct *t);
 extern void dept_free_range(void *start, unsigned int sz);
 extern void dept_map_init(struct dept_map *m, struct dept_key *k, int sub_u, const char *n);
 extern void dept_map_reinit(struct dept_map *m, struct dept_key *k, int sub_u, const char *n);
+extern void dept_ext_wgen_init(struct dept_ext_wgen *ewg);
 extern void dept_map_copy(struct dept_map *to, struct dept_map *from);
 
 extern void dept_wait(struct dept_map *m, unsigned long w_f, unsigned long ip, const char *w_fn, int sub_l, long timeout);
@@ -527,8 +535,8 @@ extern void dept_clean_stage(void);
 extern void dept_stage_event(struct task_struct *t, unsigned long ip);
 extern void dept_ecxt_enter(struct dept_map *m, unsigned long e_f, unsigned long ip, const char *c_fn, const char *e_fn, int sub_l);
 extern bool dept_ecxt_holding(struct dept_map *m, unsigned long e_f);
-extern void dept_request_event(struct dept_map *m);
-extern void dept_event(struct dept_map *m, unsigned long e_f, unsigned long ip, const char *e_fn);
+extern void dept_request_event(struct dept_map *m, struct dept_ext_wgen *ewg);
+extern void dept_event(struct dept_map *m, unsigned long e_f, unsigned long ip, const char *e_fn, struct dept_ext_wgen *ewg);
 extern void dept_ecxt_exit(struct dept_map *m, unsigned long e_f, unsigned long ip);
 extern void dept_sched_enter(void);
 extern void dept_sched_exit(void);
@@ -559,6 +567,7 @@ extern void dept_hardirqs_off_ip(unsigned long ip);
 struct dept_key  { };
 struct dept_map  { };
 struct dept_task { };
+struct dept_ext_wgen { };
 
 #define DEPT_MAP_INITIALIZER(n, k) { }
 #define DEPT_TASK_INITIALIZER(t)   { }
@@ -571,6 +580,7 @@ struct dept_task { };
 #define dept_free_range(s, sz)				do { } while (0)
 #define dept_map_init(m, k, su, n)			do { (void)(n); (void)(k); } while (0)
 #define dept_map_reinit(m, k, su, n)			do { (void)(n); (void)(k); } while (0)
+#define dept_ext_wgen_init(wg)				do { } while (0)
 #define dept_map_copy(t, f)				do { } while (0)
 
 #define dept_wait(m, w_f, ip, w_fn, sl, t)		do { (void)(w_fn); } while (0)
@@ -580,8 +590,8 @@ struct dept_task { };
 #define dept_stage_event(t, ip)				do { } while (0)
 #define dept_ecxt_enter(m, e_f, ip, c_fn, e_fn, sl)	do { (void)(c_fn); (void)(e_fn); } while (0)
 #define dept_ecxt_holding(m, e_f)			false
-#define dept_request_event(m)				do { } while (0)
-#define dept_event(m, e_f, ip, e_fn)			do { (void)(e_fn); } while (0)
+#define dept_request_event(m, wg)			do { } while (0)
+#define dept_event(m, e_f, ip, e_fn, wg)		do { (void)(e_fn); } while (0)
 #define dept_ecxt_exit(m, e_f, ip)			do { } while (0)
 #define dept_sched_enter()				do { } while (0)
 #define dept_sched_exit()				do { } while (0)
diff --git a/include/linux/dept_sdt.h b/include/linux/dept_sdt.h
index 21fce525f031..8cdac7982036 100644
--- a/include/linux/dept_sdt.h
+++ b/include/linux/dept_sdt.h
@@ -24,7 +24,7 @@
 
 #define sdt_wait_timeout(m, t)						\
 	do {								\
-		dept_request_event(m);					\
+		dept_request_event(m, NULL);				\
 		dept_wait(m, 1UL, _THIS_IP_, __func__, 0, t);		\
 	} while (0)
 #define sdt_wait(m) sdt_wait_timeout(m, -1L)
@@ -49,7 +49,7 @@
 #define sdt_might_sleep_end()		dept_clean_stage()
 
 #define sdt_ecxt_enter(m)		dept_ecxt_enter(m, 1UL, _THIS_IP_, "start", "event", 0)
-#define sdt_event(m)			dept_event(m, 1UL, _THIS_IP_, __func__)
+#define sdt_event(m)			dept_event(m, 1UL, _THIS_IP_, __func__, NULL)
 #define sdt_ecxt_exit(m)		dept_ecxt_exit(m, 1UL, _THIS_IP_)
 #else /* !CONFIG_DEPT */
 #define sdt_map_init(m)			do { } while (0)
diff --git a/kernel/dependency/dept.c b/kernel/dependency/dept.c
index cdfda4acff58..335e5f67bf55 100644
--- a/kernel/dependency/dept.c
+++ b/kernel/dependency/dept.c
@@ -2230,6 +2230,11 @@ void dept_map_reinit(struct dept_map *m, struct dept_key *k, int sub_u,
 }
 EXPORT_SYMBOL_GPL(dept_map_reinit);
 
+void dept_ext_wgen_init(struct dept_ext_wgen *ewg)
+{
+	WRITE_ONCE(ewg->wgen, 0U);
+}
+
 void dept_map_copy(struct dept_map *to, struct dept_map *from)
 {
 	if (unlikely(!dept_working())) {
@@ -2415,7 +2420,7 @@ static void __dept_wait(struct dept_map *m, unsigned long w_f,
  */
 static void __dept_event(struct dept_map *m, unsigned long e_f,
 			 unsigned long ip, const char *e_fn,
-			 bool sched_map)
+			 bool sched_map, unsigned int *wgp)
 {
 	struct dept_class *c;
 	struct dept_key *k;
@@ -2437,14 +2442,14 @@ static void __dept_event(struct dept_map *m, unsigned long e_f,
 	c = check_new_class(&m->map_key, k, sub_id(m, e), m->name, sched_map);
 
 	if (c && add_ecxt(m, c, 0UL, NULL, e_fn, 0)) {
-		do_event(m, c, READ_ONCE(m->wgen), ip);
+		do_event(m, c, READ_ONCE(*wgp), ip);
 		pop_ecxt(m, c);
 	}
 exit:
 	/*
 	 * Keep the map diabled until the next sleep.
 	 */
-	WRITE_ONCE(m->wgen, 0U);
+	WRITE_ONCE(*wgp, 0U);
 }
 
 void dept_wait(struct dept_map *m, unsigned long w_f,
@@ -2654,7 +2659,7 @@ void dept_stage_event(struct task_struct *t, unsigned long ip)
 	if (!m.keys)
 		goto exit;
 
-	__dept_event(&m, 1UL, ip, "try_to_wake_up", sched_map);
+	__dept_event(&m, 1UL, ip, "try_to_wake_up", sched_map, &m.wgen);
 exit:
 	dept_exit(flags);
 }
@@ -2833,10 +2838,11 @@ bool dept_ecxt_holding(struct dept_map *m, unsigned long e_f)
 }
 EXPORT_SYMBOL_GPL(dept_ecxt_holding);
 
-void dept_request_event(struct dept_map *m)
+void dept_request_event(struct dept_map *m, struct dept_ext_wgen *ewg)
 {
 	unsigned long flags;
 	unsigned int wg;
+	unsigned int *wgp;
 
 	if (unlikely(!dept_working()))
 		return;
@@ -2849,32 +2855,38 @@ void dept_request_event(struct dept_map *m)
 	 */
 	flags = dept_enter_recursive();
 
+	wgp = ewg ? &ewg->wgen : &m->wgen;
+
 	/*
 	 * Avoid zero wgen.
 	 */
 	wg = atomic_inc_return(&wgen) ?: atomic_inc_return(&wgen);
-	WRITE_ONCE(m->wgen, wg);
+	WRITE_ONCE(*wgp, wg);
 
 	dept_exit_recursive(flags);
 }
 EXPORT_SYMBOL_GPL(dept_request_event);
 
 void dept_event(struct dept_map *m, unsigned long e_f,
-		unsigned long ip, const char *e_fn)
+		unsigned long ip, const char *e_fn,
+		struct dept_ext_wgen *ewg)
 {
 	struct dept_task *dt = dept_task();
 	unsigned long flags;
+	unsigned int *wgp;
 
 	if (unlikely(!dept_working()))
 		return;
 
+	wgp = ewg ? &ewg->wgen : &m->wgen;
+
 	if (dt->recursive) {
 		/*
 		 * Dept won't work with this even though an event
 		 * context has been asked. Don't make it confused at
 		 * handling the event. Disable it until the next.
 		 */
-		WRITE_ONCE(m->wgen, 0U);
+		WRITE_ONCE(*wgp, 0U);
 		return;
 	}
 
@@ -2883,7 +2895,7 @@ void dept_event(struct dept_map *m, unsigned long e_f,
 
 	flags = dept_enter();
 
-	__dept_event(m, e_f, ip, e_fn, false);
+	__dept_event(m, e_f, ip, e_fn, false, wgp);
 
 	dept_exit(flags);
 }
-- 
2.40.0


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

* [Intel-xe] [CI 25/27] dept: Track the potential waits of PG_{locked, writeback}
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (23 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 24/27] dept: Make Dept able to work with an external wgen Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 26/27] HAX: dept: Enable Dept by default Gwan-gyeong Mun
                   ` (8 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

From: Byungchul Park <byungchul@sk.com>

Currently, Dept only tracks the real waits of PG_{locked,writeback} that
actually happened having gone through __schedule() to avoid false
positives. However, it ends in limited capacity for deadlock detection,
because anyway there might be still way more potential dependencies by
the waits that have yet to happen but may happen in the future so as to
cause a deadlock.

So let Dept assume that when PG_{locked,writeback} bit gets cleared,
there might be waits on the bit to be woken up.

Even though false positives may increase with the aggressive tracking,
it's worth doing it because it's going to be useful in practice. See the
following link for instance:

   https://lore.kernel.org/lkml/1674268856-31807-1-git-send-email-byungchul.park@lge.com/

Signed-off-by: Byungchul Park <byungchul@sk.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/mm_types.h   |   3 +
 include/linux/page-flags.h | 112 +++++++++++++++++++++++++++++++++----
 include/linux/pagemap.h    |   7 ++-
 mm/filemap.c               |  11 +++-
 mm/mm_init.c               |   3 +
 5 files changed, 121 insertions(+), 15 deletions(-)

diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 306a3d1a0fa6..ac5048b66e5c 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -19,6 +19,7 @@
 #include <linux/workqueue.h>
 #include <linux/seqlock.h>
 #include <linux/percpu_counter.h>
+#include <linux/dept.h>
 
 #include <asm/mmu.h>
 
@@ -228,6 +229,8 @@ struct page {
 #ifdef LAST_CPUPID_NOT_IN_PAGE_FLAGS
 	int _last_cpupid;
 #endif
+	struct dept_ext_wgen PG_locked_wgen;
+	struct dept_ext_wgen PG_writeback_wgen;
 } _struct_page_alignment;
 
 /*
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index 92a2063a0a23..d91e67ed194c 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -196,6 +196,50 @@ enum pageflags {
 
 #ifndef __GENERATING_BOUNDS_H
 
+#ifdef CONFIG_DEPT
+#include <linux/kernel.h>
+#include <linux/dept.h>
+
+extern struct dept_map PG_locked_map;
+extern struct dept_map PG_writeback_map;
+
+/*
+ * Place the following annotations in its suitable point in code:
+ *
+ *	Annotate dept_page_set_bit() around firstly set_bit*()
+ *	Annotate dept_page_clear_bit() around clear_bit*()
+ *	Annotate dept_page_wait_on_bit() around wait_on_bit*()
+ */
+
+static inline void dept_page_set_bit(struct page *p, int bit_nr)
+{
+	if (bit_nr == PG_locked)
+		dept_request_event(&PG_locked_map, &p->PG_locked_wgen);
+	else if (bit_nr == PG_writeback)
+		dept_request_event(&PG_writeback_map, &p->PG_writeback_wgen);
+}
+
+static inline void dept_page_clear_bit(struct page *p, int bit_nr)
+{
+	if (bit_nr == PG_locked)
+		dept_event(&PG_locked_map, 1UL, _RET_IP_, __func__, &p->PG_locked_wgen);
+	else if (bit_nr == PG_writeback)
+		dept_event(&PG_writeback_map, 1UL, _RET_IP_, __func__, &p->PG_writeback_wgen);
+}
+
+static inline void dept_page_wait_on_bit(struct page *p, int bit_nr)
+{
+	if (bit_nr == PG_locked)
+		dept_wait(&PG_locked_map, 1UL, _RET_IP_, __func__, 0, -1L);
+	else if (bit_nr == PG_writeback)
+		dept_wait(&PG_writeback_map, 1UL, _RET_IP_, __func__, 0, -1L);
+}
+#else
+#define dept_page_set_bit(p, bit_nr)		do { } while (0)
+#define dept_page_clear_bit(p, bit_nr)		do { } while (0)
+#define dept_page_wait_on_bit(p, bit_nr)	do { } while (0)
+#endif
+
 #ifdef CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP
 DECLARE_STATIC_KEY_FALSE(hugetlb_optimize_vmemmap_key);
 
@@ -377,44 +421,88 @@ static __always_inline int Page##uname(struct page *page)		\
 #define SETPAGEFLAG(uname, lname, policy)				\
 static __always_inline							\
 void folio_set_##lname(struct folio *folio)				\
-{ set_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); }		\
+{									\
+	set_bit(PG_##lname, folio_flags(folio, FOLIO_##policy));	\
+	dept_page_set_bit(&folio->page, PG_##lname);			\
+}									\
 static __always_inline void SetPage##uname(struct page *page)		\
-{ set_bit(PG_##lname, &policy(page, 1)->flags); }
+{									\
+	set_bit(PG_##lname, &policy(page, 1)->flags);			\
+	dept_page_set_bit(page, PG_##lname);				\
+}
 
 #define CLEARPAGEFLAG(uname, lname, policy)				\
 static __always_inline							\
 void folio_clear_##lname(struct folio *folio)				\
-{ clear_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); }		\
+{									\
+	clear_bit(PG_##lname, folio_flags(folio, FOLIO_##policy));	\
+	dept_page_clear_bit(&folio->page, PG_##lname);			\
+}									\
 static __always_inline void ClearPage##uname(struct page *page)		\
-{ clear_bit(PG_##lname, &policy(page, 1)->flags); }
+{									\
+	clear_bit(PG_##lname, &policy(page, 1)->flags);			\
+	dept_page_clear_bit(page, PG_##lname);				\
+}
 
 #define __SETPAGEFLAG(uname, lname, policy)				\
 static __always_inline							\
 void __folio_set_##lname(struct folio *folio)				\
-{ __set_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); }		\
+{									\
+	__set_bit(PG_##lname, folio_flags(folio, FOLIO_##policy));	\
+	dept_page_set_bit(&folio->page, PG_##lname);			\
+}									\
 static __always_inline void __SetPage##uname(struct page *page)		\
-{ __set_bit(PG_##lname, &policy(page, 1)->flags); }
+{									\
+	__set_bit(PG_##lname, &policy(page, 1)->flags);			\
+	dept_page_set_bit(page, PG_##lname);				\
+}
 
 #define __CLEARPAGEFLAG(uname, lname, policy)				\
 static __always_inline							\
 void __folio_clear_##lname(struct folio *folio)				\
-{ __clear_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); }	\
+{									\
+	__clear_bit(PG_##lname, folio_flags(folio, FOLIO_##policy));	\
+	dept_page_clear_bit(&folio->page, PG_##lname);			\
+}									\
 static __always_inline void __ClearPage##uname(struct page *page)	\
-{ __clear_bit(PG_##lname, &policy(page, 1)->flags); }
+{									\
+	__clear_bit(PG_##lname, &policy(page, 1)->flags);		\
+	dept_page_clear_bit(page, PG_##lname);				\
+}
 
 #define TESTSETFLAG(uname, lname, policy)				\
 static __always_inline							\
 bool folio_test_set_##lname(struct folio *folio)			\
-{ return test_and_set_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); } \
+{									\
+	bool ret = test_and_set_bit(PG_##lname, folio_flags(folio, FOLIO_##policy));\
+	if (!ret)							\
+		dept_page_set_bit(&folio->page, PG_##lname);		\
+	return ret;							\
+}									\
 static __always_inline int TestSetPage##uname(struct page *page)	\
-{ return test_and_set_bit(PG_##lname, &policy(page, 1)->flags); }
+{									\
+	bool ret = test_and_set_bit(PG_##lname, &policy(page, 1)->flags);\
+	if (!ret)							\
+		dept_page_set_bit(page, PG_##lname);			\
+	return ret;							\
+}
 
 #define TESTCLEARFLAG(uname, lname, policy)				\
 static __always_inline							\
 bool folio_test_clear_##lname(struct folio *folio)			\
-{ return test_and_clear_bit(PG_##lname, folio_flags(folio, FOLIO_##policy)); } \
+{									\
+	bool ret = test_and_clear_bit(PG_##lname, folio_flags(folio, FOLIO_##policy));\
+	if (ret)							\
+		dept_page_clear_bit(&folio->page, PG_##lname);		\
+	return ret;							\
+}									\
 static __always_inline int TestClearPage##uname(struct page *page)	\
-{ return test_and_clear_bit(PG_##lname, &policy(page, 1)->flags); }
+{									\
+	bool ret = test_and_clear_bit(PG_##lname, &policy(page, 1)->flags);\
+	if (ret)							\
+		dept_page_clear_bit(page, PG_##lname);			\
+	return ret;							\
+}
 
 #define PAGEFLAG(uname, lname, policy)					\
 	TESTPAGEFLAG(uname, lname, policy)				\
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index a56308a9d1a4..a88e2430f415 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -915,7 +915,12 @@ void folio_unlock(struct folio *folio);
  */
 static inline bool folio_trylock(struct folio *folio)
 {
-	return likely(!test_and_set_bit_lock(PG_locked, folio_flags(folio, 0)));
+	bool ret = !test_and_set_bit_lock(PG_locked, folio_flags(folio, 0));
+
+	if (ret)
+		dept_page_set_bit(&folio->page, PG_locked);
+
+	return likely(ret);
 }
 
 /*
diff --git a/mm/filemap.c b/mm/filemap.c
index eed64dc88e43..f05208bb50dc 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1101,6 +1101,7 @@ static int wake_page_function(wait_queue_entry_t *wait, unsigned mode, int sync,
 		if (flags & WQ_FLAG_CUSTOM) {
 			if (test_and_set_bit(key->bit_nr, &key->folio->flags))
 				return -1;
+			dept_page_set_bit(&key->folio->page, key->bit_nr);
 			flags |= WQ_FLAG_DONE;
 		}
 	}
@@ -1210,6 +1211,7 @@ static inline bool folio_trylock_flag(struct folio *folio, int bit_nr,
 	if (wait->flags & WQ_FLAG_EXCLUSIVE) {
 		if (test_and_set_bit(bit_nr, &folio->flags))
 			return false;
+		dept_page_set_bit(&folio->page, bit_nr);
 	} else if (test_bit(bit_nr, &folio->flags))
 		return false;
 
@@ -1220,8 +1222,10 @@ static inline bool folio_trylock_flag(struct folio *folio, int bit_nr,
 /* How many times do we accept lock stealing from under a waiter? */
 int sysctl_page_lock_unfairness = 5;
 
-static struct dept_map __maybe_unused PG_locked_map = DEPT_MAP_INITIALIZER(PG_locked_map, NULL);
-static struct dept_map __maybe_unused PG_writeback_map = DEPT_MAP_INITIALIZER(PG_writeback_map, NULL);
+struct dept_map __maybe_unused PG_locked_map = DEPT_MAP_INITIALIZER(PG_locked_map, NULL);
+struct dept_map __maybe_unused PG_writeback_map = DEPT_MAP_INITIALIZER(PG_writeback_map, NULL);
+EXPORT_SYMBOL(PG_locked_map);
+EXPORT_SYMBOL(PG_writeback_map);
 
 static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
 		int state, enum behavior behavior)
@@ -1234,6 +1238,7 @@ static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
 	unsigned long pflags;
 	bool in_thrashing;
 
+	dept_page_wait_on_bit(&folio->page, bit_nr);
 	if (bit_nr == PG_locked)
 		sdt_might_sleep_start(&PG_locked_map);
 	else if (bit_nr == PG_writeback)
@@ -1331,6 +1336,7 @@ static inline int folio_wait_bit_common(struct folio *folio, int bit_nr,
 		wait->flags |= WQ_FLAG_DONE;
 		break;
 	}
+	dept_page_set_bit(&folio->page, bit_nr);
 
 	/*
 	 * If a signal happened, this 'finish_wait()' may remove the last
@@ -1538,6 +1544,7 @@ void folio_unlock(struct folio *folio)
 	BUILD_BUG_ON(PG_waiters != 7);
 	BUILD_BUG_ON(PG_locked > 7);
 	VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio);
+	dept_page_clear_bit(&folio->page, PG_locked);
 	if (clear_bit_unlock_is_negative_byte(PG_locked, folio_flags(folio, 0)))
 		folio_wake_bit(folio, PG_locked);
 }
diff --git a/mm/mm_init.c b/mm/mm_init.c
index 7f7f9c677854..a339f0cbe1b2 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -26,6 +26,7 @@
 #include <linux/pgtable.h>
 #include <linux/swap.h>
 #include <linux/cma.h>
+#include <linux/dept.h>
 #include "internal.h"
 #include "slab.h"
 #include "shuffle.h"
@@ -558,6 +559,8 @@ static void __meminit __init_single_page(struct page *page, unsigned long pfn,
 	page_mapcount_reset(page);
 	page_cpupid_reset_last(page);
 	page_kasan_tag_reset(page);
+	dept_ext_wgen_init(&page->PG_locked_wgen);
+	dept_ext_wgen_init(&page->PG_writeback_wgen);
 
 	INIT_LIST_HEAD(&page->lru);
 #ifdef WANT_PAGE_VIRTUAL
-- 
2.40.0


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

* [Intel-xe] [CI 26/27] HAX: dept: Enable Dept by default
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (24 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 25/27] dept: Track the potential waits of PG_{locked, writeback} Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04  9:51 ` [Intel-xe] [CI 27/27] HAX: dept: Increase DEPT_MAX_WAIT_HIST / DEPT_MAX_ECXT_HELD to track more Gwan-gyeong Mun
                   ` (7 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 lib/Kconfig.debug | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index f78b3d721a2b..856dcb30153c 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1222,7 +1222,7 @@ config DEPT
 	select KALLSYMS
 	select KALLSYMS_ALL
 	select PROVE_LOCKING
-	default n
+	default y
 	help
 	  Check dependencies between wait and event and report it if
 	  deadlock possibility has been detected. Multiple reports are
@@ -1237,7 +1237,7 @@ config DEPT
 config DEPT_AGGRESSIVE_TIMEOUT_WAIT
 	bool "Aggressively track even timeout waits"
 	depends on DEPT
-	default n
+	default y
 	help
 	  Timeout wait doesn't contribute to a deadlock. However,
 	  informing a circular dependency might be helpful for cases
-- 
2.40.0


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

* [Intel-xe] [CI 27/27] HAX: dept: Increase DEPT_MAX_WAIT_HIST / DEPT_MAX_ECXT_HELD to track more
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (25 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 26/27] HAX: dept: Enable Dept by default Gwan-gyeong Mun
@ 2023-07-04  9:51 ` Gwan-gyeong Mun
  2023-07-04 10:08 ` [Intel-xe] ✓ CI.Patch_applied: success for DEPT 2.4 test run for drm-xe Patchwork
                   ` (6 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Gwan-gyeong Mun @ 2023-07-04  9:51 UTC (permalink / raw)
  To: intel-xe; +Cc: max.byungchul.park, byungchul

Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
---
 include/linux/dept.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/linux/dept.h b/include/linux/dept.h
index ad32ea7b57bb..cd2ed8619424 100644
--- a/include/linux/dept.h
+++ b/include/linux/dept.h
@@ -17,8 +17,8 @@
 struct task_struct;
 
 #define DEPT_MAX_STACK_ENTRY		16
-#define DEPT_MAX_WAIT_HIST		64
-#define DEPT_MAX_ECXT_HELD		48
+#define DEPT_MAX_WAIT_HIST		256
+#define DEPT_MAX_ECXT_HELD		96
 
 #define DEPT_MAX_SUBCLASSES		16
 #define DEPT_MAX_SUBCLASSES_EVT		2
-- 
2.40.0


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

* [Intel-xe] ✓ CI.Patch_applied: success for DEPT 2.4 test run for drm-xe
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (26 preceding siblings ...)
  2023-07-04  9:51 ` [Intel-xe] [CI 27/27] HAX: dept: Increase DEPT_MAX_WAIT_HIST / DEPT_MAX_ECXT_HELD to track more Gwan-gyeong Mun
@ 2023-07-04 10:08 ` Patchwork
  2023-07-04 10:09 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
                   ` (5 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2023-07-04 10:08 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-xe

== Series Details ==

Series: DEPT 2.4 test run for drm-xe
URL   : https://patchwork.freedesktop.org/series/120168/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-xe-next' with base: ===
Base commit: 103e5d7aa fixup! drm/xe/display: Implement display support
=== git am output follows ===
Applying: llist: Move llist_{head, node} definition to types.h
Applying: dept: Implement Dept(Dependency Tracker)
Applying: dept: Add single event dependency tracker APIs
Applying: dept: Add lock dependency tracker APIs
Applying: dept: Tie to Lockdep and IRQ tracing
Applying: dept: Add proc knobs to show stats and dependency graph
Applying: dept: Apply sdt_might_sleep_{start, end}() to wait_for_completion()/complete()
Applying: dept: Apply sdt_might_sleep_{start, end}() to PG_{locked, writeback} wait
Applying: dept: Apply sdt_might_sleep_{start, end}() to swait
Applying: dept: Apply sdt_might_sleep_{start, end}() to waitqueue wait
Applying: dept: Apply sdt_might_sleep_{start, end}() to hashed-waitqueue wait
Applying: dept: Distinguish each syscall context from another
Applying: dept: Distinguish each work from another
Applying: dept: Add a mechanism to refill the internal memory pools on running out
Applying: locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread
Applying: dept: Apply sdt_might_sleep_{start, end}() to dma fence wait
Applying: dept: Track timeout waits separately with a new Kconfig
Applying: dept: Apply timeout consideration to wait_for_completion()/complete()
Applying: dept: Apply timeout consideration to swait
Applying: dept: Apply timeout consideration to waitqueue wait
Applying: dept: Apply timeout consideration to hashed-waitqueue wait
Applying: dept: Apply timeout consideration to dma fence wait
Applying: dept: Record the latest one out of consecutive waits of the same class
Applying: dept: Make Dept able to work with an external wgen
Applying: dept: Track the potential waits of PG_{locked, writeback}
Applying: HAX: dept: Enable Dept by default
Applying: HAX: dept: Increase DEPT_MAX_WAIT_HIST / DEPT_MAX_ECXT_HELD to track more



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

* [Intel-xe] ✗ CI.checkpatch: warning for DEPT 2.4 test run for drm-xe
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (27 preceding siblings ...)
  2023-07-04 10:08 ` [Intel-xe] ✓ CI.Patch_applied: success for DEPT 2.4 test run for drm-xe Patchwork
@ 2023-07-04 10:09 ` Patchwork
  2023-07-04 10:10 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
                   ` (4 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2023-07-04 10:09 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-xe

== Series Details ==

Series: DEPT 2.4 test run for drm-xe
URL   : https://patchwork.freedesktop.org/series/120168/
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 ec83616727744a0b866eb774d9b39181b1e28b00
Author: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Date:   Tue Jul 4 12:51:29 2023 +0300

    HAX: dept: Increase DEPT_MAX_WAIT_HIST / DEPT_MAX_ECXT_HELD to track more
    
    Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
+ /mt/dim checkpatch 103e5d7aa1ba8469687574c926f40c630252ede4 drm-intel
23326d980 llist: Move llist_{head, node} definition to types.h
d3c7c8210 dept: Implement Dept(Dependency Tracker)
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'
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'
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
-:90: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#90: 
new file mode 100644

-:584: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#584: FILE: include/linux/dept.h:490:
+extern void dept_on(void);

-:585: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#585: FILE: include/linux/dept.h:491:
+extern void dept_off(void);

-:586: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#586: FILE: include/linux/dept.h:492:
+extern void dept_init(void);

-:587: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#587: FILE: include/linux/dept.h:493:
+extern void dept_task_init(struct task_struct *t);

-:588: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#588: FILE: include/linux/dept.h:494:
+extern void dept_task_exit(struct task_struct *t);

-:589: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#589: FILE: include/linux/dept.h:495:
+extern void dept_free_range(void *start, unsigned int sz);

-:590: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#590: FILE: include/linux/dept.h:496:
+extern void dept_map_init(struct dept_map *m, struct dept_key *k, int sub_u, const char *n);

-:591: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#591: FILE: include/linux/dept.h:497:
+extern void dept_map_reinit(struct dept_map *m, struct dept_key *k, int sub_u, const char *n);

-:592: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#592: FILE: include/linux/dept.h:498:
+extern void dept_map_copy(struct dept_map *to, struct dept_map *from);

-:594: WARNING:LONG_LINE: line length of 108 exceeds 100 columns
#594: FILE: include/linux/dept.h:500:
+extern void dept_wait(struct dept_map *m, unsigned long w_f, unsigned long ip, const char *w_fn, int sub_l);

-:594: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#594: FILE: include/linux/dept.h:500:
+extern void dept_wait(struct dept_map *m, unsigned long w_f, unsigned long ip, const char *w_fn, int sub_l);

-:595: WARNING:LONG_LINE: line length of 104 exceeds 100 columns
#595: FILE: include/linux/dept.h:501:
+extern void dept_stage_wait(struct dept_map *m, struct dept_key *k, unsigned long ip, const char *w_fn);

-:595: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#595: FILE: include/linux/dept.h:501:
+extern void dept_stage_wait(struct dept_map *m, struct dept_key *k, unsigned long ip, const char *w_fn);

-:596: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#596: FILE: include/linux/dept.h:502:
+extern void dept_request_event_wait_commit(void);

-:597: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#597: FILE: include/linux/dept.h:503:
+extern void dept_clean_stage(void);

-:598: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#598: FILE: include/linux/dept.h:504:
+extern void dept_stage_event(struct task_struct *t, unsigned long ip);

-:599: WARNING:LONG_LINE: line length of 132 exceeds 100 columns
#599: FILE: include/linux/dept.h:505:
+extern void dept_ecxt_enter(struct dept_map *m, unsigned long e_f, unsigned long ip, const char *c_fn, const char *e_fn, int sub_l);

-:599: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#599: FILE: include/linux/dept.h:505:
+extern void dept_ecxt_enter(struct dept_map *m, unsigned long e_f, unsigned long ip, const char *c_fn, const char *e_fn, int sub_l);

-:600: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#600: FILE: include/linux/dept.h:506:
+extern bool dept_ecxt_holding(struct dept_map *m, unsigned long e_f);

-:601: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#601: FILE: include/linux/dept.h:507:
+extern void dept_request_event(struct dept_map *m);

-:602: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#602: FILE: include/linux/dept.h:508:
+extern void dept_event(struct dept_map *m, unsigned long e_f, unsigned long ip, const char *e_fn);

-:603: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#603: FILE: include/linux/dept.h:509:
+extern void dept_ecxt_exit(struct dept_map *m, unsigned long e_f, unsigned long ip);

-:604: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#604: FILE: include/linux/dept.h:510:
+extern void dept_sched_enter(void);

-:605: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#605: FILE: include/linux/dept.h:511:
+extern void dept_sched_exit(void);

-:615: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#615: FILE: include/linux/dept.h:521:
+extern void dept_key_init(struct dept_key *k);

-:616: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#616: FILE: include/linux/dept.h:522:
+extern void dept_key_destroy(struct dept_key *k);

-:617: WARNING:LONG_LINE: line length of 200 exceeds 100 columns
#617: FILE: include/linux/dept.h:523:
+extern void dept_map_ecxt_modify(struct dept_map *m, unsigned long e_f, struct dept_key *new_k, unsigned long new_e_f, unsigned long new_ip, const char *new_c_fn, const char *new_e_fn, int new_sub_l);

-:617: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#617: FILE: include/linux/dept.h:523:
+extern void dept_map_ecxt_modify(struct dept_map *m, unsigned long e_f, struct dept_key *new_k, unsigned long new_e_f, unsigned long new_ip, const char *new_c_fn, const char *new_e_fn, int new_sub_l);

-:619: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#619: FILE: include/linux/dept.h:525:
+extern void dept_softirq_enter(void);

-:620: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#620: FILE: include/linux/dept.h:526:
+extern void dept_hardirq_enter(void);

-:621: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#621: FILE: include/linux/dept.h:527:
+extern void dept_softirqs_on_ip(unsigned long ip);

-:622: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#622: FILE: include/linux/dept.h:528:
+extern void dept_hardirqs_on(void);

-:623: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#623: FILE: include/linux/dept.h:529:
+extern void dept_hardirqs_on_ip(unsigned long ip);

-:624: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#624: FILE: include/linux/dept.h:530:
+extern void dept_softirqs_off_ip(unsigned long ip);

-:625: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#625: FILE: include/linux/dept.h:531:
+extern void dept_hardirqs_off(void);

-:626: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#626: FILE: include/linux/dept.h:532:
+extern void dept_hardirqs_off_ip(unsigned long ip);

-:645: WARNING:SINGLE_STATEMENT_DO_WHILE_MACRO: Single statement macros should not use a do {} while (0) loop
#645: FILE: include/linux/dept.h:551:
+#define dept_wait(m, w_f, ip, w_fn, sl)			do { (void)(w_fn); } while (0)

-:653: WARNING:SINGLE_STATEMENT_DO_WHILE_MACRO: Single statement macros should not use a do {} while (0) loop
#653: FILE: include/linux/dept.h:559:
+#define dept_event(m, e_f, ip, e_fn)			do { (void)(e_fn); } while (0)

-:658: WARNING:SINGLE_STATEMENT_DO_WHILE_MACRO: Single statement macros should not use a do {} while (0) loop
#658: FILE: include/linux/dept.h:564:
+#define dept_key_init(k)				do { (void)(k); } while (0)

-:659: WARNING:SINGLE_STATEMENT_DO_WHILE_MACRO: Single statement macros should not use a do {} while (0) loop
#659: FILE: include/linux/dept.h:565:
+#define dept_key_destroy(k)				do { (void)(k); } while (0)

-:660: WARNING:LONG_LINE: line length of 138 exceeds 100 columns
#660: FILE: include/linux/dept.h:566:
+#define dept_map_ecxt_modify(m, e_f, n_k, n_e_f, n_ip, n_c_fn, n_e_fn, n_sl) do { (void)(n_k); (void)(n_c_fn); (void)(n_e_fn); } while (0)

-:808: WARNING:TYPO_SPELLING: 'muliple' may be misspelled - perhaps 'multiple'?
#808: FILE: kernel/dependency/dept.c:21:
+ *    2) Allow muliple reports.
                ^^^^^^^

-:1058: WARNING:TRAILING_SEMICOLON: macros should not use a trailing semicolon
#1058: FILE: kernel/dependency/dept.c:271:
+#define OBJECT(id, nr)							\
+static struct dept_##id spool_##id[nr];					\
+static DEFINE_PER_CPU(struct llist_head, lpool_##id);

-:1185: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#1185: FILE: kernel/dependency/dept.c:398:
+}
+#include "dept_object.h"

-:1197: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#1197: FILE: kernel/dependency/dept.c:410:
+}
+SET_CONSTRUCTOR(dep, initialize_dep);

-:1222: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#1222: FILE: kernel/dependency/dept.c:435:
+}
+SET_CONSTRUCTOR(class, initialize_class);

-:1238: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#1238: FILE: kernel/dependency/dept.c:451:
+}
+SET_CONSTRUCTOR(ecxt, initialize_ecxt);

-:1252: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#1252: FILE: kernel/dependency/dept.c:465:
+}
+SET_CONSTRUCTOR(wait, initialize_wait);

-:1258: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#1258: FILE: kernel/dependency/dept.c:471:
+}
+SET_CONSTRUCTOR(stack, initialize_stack);

-:1260: WARNING:TRAILING_SEMICOLON: macros should not use a trailing semicolon
#1260: FILE: kernel/dependency/dept.c:473:
+#define OBJECT(id, nr) \
+static void (*ctor_##id)(struct dept_##id *a);

-:1277: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#1277: FILE: kernel/dependency/dept.c:490:
+}
+SET_DESTRUCTOR(dep, destroy_dep);

-:1293: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#1293: FILE: kernel/dependency/dept.c:506:
+}
+SET_DESTRUCTOR(ecxt, destroy_ecxt);

-:1307: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#1307: FILE: kernel/dependency/dept.c:520:
+}
+SET_DESTRUCTOR(wait, destroy_wait);

-:1309: WARNING:TRAILING_SEMICOLON: macros should not use a trailing semicolon
#1309: FILE: kernel/dependency/dept.c:522:
+#define OBJECT(id, nr) \
+static void (*dtor_##id)(struct dept_##id *a);

-:1358: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'bits' - possible side-effects?
#1358: FILE: kernel/dependency/dept.c:571:
+#define HASH(id, bits)							\
+static struct hlist_head table_##id[1 << (bits)];			\
+									\
+static inline struct hlist_head *head_##id(struct dept_##id *a)		\
+{									\
+	return table_##id + hash_long(key_##id(a), bits);		\
+}									\
+									\
+static inline struct dept_##id *hash_lookup_##id(struct dept_##id *a)	\
+{									\
+	struct dept_##id *b;						\
+									\
+	hlist_for_each_entry_rcu(b, head_##id(a), hash_node)		\
+		if (cmp_##id(a, b))					\
+			return b;					\
+	return NULL;							\
+}									\
+									\
+static inline void hash_add_##id(struct dept_##id *a)			\
+{									\
+	get_##id(a);							\
+	hlist_add_head_rcu(&a->hash_node, head_##id(a));		\
+}									\
+									\
+static inline void hash_del_##id(struct dept_##id *a)			\
+{									\
+	hlist_del_rcu(&a->hash_node);					\
+	put_##id(a);							\
+}

-:1387: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#1387: FILE: kernel/dependency/dept.c:600:
+}
+#include "dept_hash.h"

-:1491: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#1491: FILE: kernel/dependency/dept.c:704:
+		pr_warn("[W] %s(%s:%d) in %s context:\n",
+		       w_fn, tc_n, tc->sub_id, irq_str(irq));

-:2448: CHECK:COMPARISON_TO_NULL: Comparison to NULL could be written "wh->wait"
#2448: FILE: kernel/dependency/dept.c:1661:
+	return wh->wait != NULL && before(wg, wh->wgen);

-:3108: WARNING:TYPO_SPELLING: 'diabled' may be misspelled - perhaps 'disabled'?
#3108: FILE: kernel/dependency/dept.c:2321:
+	 * Keep the map diabled until the next sleep.
 	                ^^^^^^^

-:3324: WARNING:TYPO_SPELLING: 'Ingore' may be misspelled - perhaps 'Ignore'?
#3324: FILE: kernel/dependency/dept.c:2537:
+	 * XXX: Couldn't handle re-enterance cases. Ingore it for now.
 	                                            ^^^^^^

-:3729: ERROR:TRAILING_STATEMENTS: trailing statements should be on next line
#3729: FILE: kernel/dependency/dept.c:2942:
+	for (last = first; last->next; last = last->next);

-:3769: WARNING:TRAILING_SEMICOLON: macros should not use a trailing semicolon
#3769: FILE: kernel/dependency/dept.c:2982:
+#define HASH(id, bits) BUILD_BUG_ON(1 << (bits) <= 0);

-:3772: ERROR:MULTISTATEMENT_MACRO_USE_DO_WHILE: Macros with multiple statements should be enclosed in a do - while loop
#3772: FILE: kernel/dependency/dept.c:2985:
+#define OBJECT(id, nr) mem_total += sizeof(struct dept_##id) * nr;

-:3772: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'nr' may be better as '(nr)' to avoid precedence issues
#3772: FILE: kernel/dependency/dept.c:2985:
+#define OBJECT(id, nr) mem_total += sizeof(struct dept_##id) * nr;

-:3772: WARNING:TRAILING_SEMICOLON: macros should not use a trailing semicolon
#3772: FILE: kernel/dependency/dept.c:2985:
+#define OBJECT(id, nr) mem_total += sizeof(struct dept_##id) * nr;

-:3775: ERROR:MULTISTATEMENT_MACRO_USE_DO_WHILE: Macros with multiple statements should be enclosed in a do - while loop
#3775: FILE: kernel/dependency/dept.c:2988:
+#define HASH(id, bits) mem_total += sizeof(struct hlist_head) * (1 << (bits));

-:3775: WARNING:TRAILING_SEMICOLON: macros should not use a trailing semicolon
#3775: FILE: kernel/dependency/dept.c:2988:
+#define HASH(id, bits) mem_total += sizeof(struct hlist_head) * (1 << (bits));

-:3784: CHECK:MACRO_ARG_PRECEDENCE: Macro argument 'nr' may be better as '(nr)' to avoid precedence issues
#3784: FILE: kernel/dependency/dept.c:2997:
+#define OBJECT(id, nr)							\
+	pr_info("... memory used by %s: %zu KB\n",			\
+	       #id, B2KB(sizeof(struct dept_##id) * nr));

-:3784: WARNING:TRAILING_SEMICOLON: macros should not use a trailing semicolon
#3784: FILE: kernel/dependency/dept.c:2997:
+#define OBJECT(id, nr)							\
+	pr_info("... memory used by %s: %zu KB\n",			\
+	       #id, B2KB(sizeof(struct dept_##id) * nr));

-:3789: WARNING:TRAILING_SEMICOLON: macros should not use a trailing semicolon
#3789: FILE: kernel/dependency/dept.c:3002:
+#define HASH(id, bits)							\
+	pr_info("... hash list head used by %s: %zu KB\n",		\
+	       #id, B2KB(sizeof(struct hlist_head) * (1 << (bits))));

total: 3 errors, 21 warnings, 47 checks, 3800 lines checked
556d7361e dept: Add single event dependency tracker APIs
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
-:38: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#38: 
new file mode 100644

-:67: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'm' - possible side-effects?
#67: FILE: include/linux/dept_sdt.h:25:
+#define sdt_wait(m)							\
+	do {								\
+		dept_request_event(m);					\
+		dept_wait(m, 1UL, _THIS_IP_, __func__, 0);		\
+	} while (0)

-:96: WARNING:SINGLE_STATEMENT_DO_WHILE_MACRO: Single statement macros should not use a do {} while (0) loop
#96: FILE: include/linux/dept_sdt.h:54:
+#define sdt_map_init_key(m, k)		do { (void)(k); } while (0)

total: 0 errors, 2 warnings, 1 checks, 62 lines checked
298d79bcd dept: Add lock dependency tracker APIs
Traceback (most recent call last):
  File "scripts/spdxcheck.py", line 6, in <module>
    from ply import lex, yacc
ModuleNotFoundError: No module named 'ply'
-:12: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#12: 
new file mode 100644

-:39: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'm' - possible side-effects?
#39: FILE: include/linux/dept_ldt.h:23:
+#define ldt_lock(m, sl, t, n, i)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_L, i, "trylock", "unlock", sl);\
+		else {							\
+			dept_wait(m, LDT_EVT_L, i, "lock", sl);		\
+			dept_ecxt_enter(m, LDT_EVT_L, i, "lock", "unlock", sl);\
+		}							\
+	} while (0)

-:39: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'sl' - possible side-effects?
#39: FILE: include/linux/dept_ldt.h:23:
+#define ldt_lock(m, sl, t, n, i)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_L, i, "trylock", "unlock", sl);\
+		else {							\
+			dept_wait(m, LDT_EVT_L, i, "lock", sl);		\
+			dept_ecxt_enter(m, LDT_EVT_L, i, "lock", "unlock", sl);\
+		}							\
+	} while (0)

-:39: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#39: FILE: include/linux/dept_ldt.h:23:
+#define ldt_lock(m, sl, t, n, i)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_L, i, "trylock", "unlock", sl);\
+		else {							\
+			dept_wait(m, LDT_EVT_L, i, "lock", sl);		\
+			dept_ecxt_enter(m, LDT_EVT_L, i, "lock", "unlock", sl);\
+		}							\
+	} while (0)

-:51: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'm' - possible side-effects?
#51: FILE: include/linux/dept_ldt.h:35:
+#define ldt_rlock(m, sl, t, n, i, q)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_R, i, "read_trylock", "read_unlock", sl);\
+		else {							\
+			dept_wait(m, q ? LDT_EVT_RW : LDT_EVT_W, i, "read_lock", sl);\
+			dept_ecxt_enter(m, LDT_EVT_R, i, "read_lock", "read_unlock", sl);\
+		}							\
+	} while (0)

-:51: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'sl' - possible side-effects?
#51: FILE: include/linux/dept_ldt.h:35:
+#define ldt_rlock(m, sl, t, n, i, q)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_R, i, "read_trylock", "read_unlock", sl);\
+		else {							\
+			dept_wait(m, q ? LDT_EVT_RW : LDT_EVT_W, i, "read_lock", sl);\
+			dept_ecxt_enter(m, LDT_EVT_R, i, "read_lock", "read_unlock", sl);\
+		}							\
+	} while (0)

-:51: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#51: FILE: include/linux/dept_ldt.h:35:
+#define ldt_rlock(m, sl, t, n, i, q)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_R, i, "read_trylock", "read_unlock", sl);\
+		else {							\
+			dept_wait(m, q ? LDT_EVT_RW : LDT_EVT_W, i, "read_lock", sl);\
+			dept_ecxt_enter(m, LDT_EVT_R, i, "read_lock", "read_unlock", sl);\
+		}							\
+	} while (0)

-:63: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'm' - possible side-effects?
#63: FILE: include/linux/dept_ldt.h:47:
+#define ldt_wlock(m, sl, t, n, i)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_W, i, "write_trylock", "write_unlock", sl);\
+		else {							\
+			dept_wait(m, LDT_EVT_RW, i, "write_lock", sl);	\
+			dept_ecxt_enter(m, LDT_EVT_W, i, "write_lock", "write_unlock", sl);\
+		}							\
+	} while (0)

-:63: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'sl' - possible side-effects?
#63: FILE: include/linux/dept_ldt.h:47:
+#define ldt_wlock(m, sl, t, n, i)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_W, i, "write_trylock", "write_unlock", sl);\
+		else {							\
+			dept_wait(m, LDT_EVT_RW, i, "write_lock", sl);	\
+			dept_ecxt_enter(m, LDT_EVT_W, i, "write_lock", "write_unlock", sl);\
+		}							\
+	} while (0)

-:63: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#63: FILE: include/linux/dept_ldt.h:47:
+#define ldt_wlock(m, sl, t, n, i)					\
+	do {								\
+		if (n)							\
+			dept_ecxt_enter_nokeep(m);			\
+		else if (t)						\
+			dept_ecxt_enter(m, LDT_EVT_W, i, "write_trylock", "write_unlock", sl);\
+		else {							\
+			dept_wait(m, LDT_EVT_RW, i, "write_lock", sl);	\
+			dept_ecxt_enter(m, LDT_EVT_W, i, "write_lock", "write_unlock", sl);\
+		}							\
+	} while (0)

-:77: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'm' - possible side-effects?
#77: FILE: include/linux/dept_ldt.h:61:
+#define ldt_downgrade(m, i)						\
+	do {								\
+		if (dept_ecxt_holding(m, LDT_EVT_W))			\
+			dept_map_ecxt_modify(m, LDT_EVT_W, NULL, LDT_EVT_R, i, "downgrade", "read_unlock", -1);\
+	} while (0)

-:80: WARNING:LONG_LINE: line length of 112 exceeds 100 columns
#80: FILE: include/linux/dept_ldt.h:64:
+			dept_map_ecxt_modify(m, LDT_EVT_W, NULL, LDT_EVT_R, i, "downgrade", "read_unlock", -1);\

-:83: WARNING:LONG_LINE: line length of 124 exceeds 100 columns
#83: FILE: include/linux/dept_ldt.h:67:
+#define ldt_set_class(m, n, k, sl, i)	dept_map_ecxt_modify(m, LDT_EVT_ALL, k, 0UL, i, "lock_set_class", "(any)unlock", sl)

-:85: WARNING:SINGLE_STATEMENT_DO_WHILE_MACRO: Single statement macros should not use a do {} while (0) loop
#85: FILE: include/linux/dept_ldt.h:69:
+#define ldt_init(m, k, su, n)		do { (void)(k); } while (0)

total: 0 errors, 4 warnings, 10 checks, 77 lines checked
3780e7533 dept: Tie to Lockdep and IRQ tracing
-:136: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#136: FILE: include/linux/lockdep.h:547:
+#define spin_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:136: CHECK:MACRO_ARG_REUSE: Macro argument reuse 's' - possible side-effects?
#136: FILE: include/linux/lockdep.h:547:
+#define spin_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:136: CHECK:MACRO_ARG_REUSE: Macro argument reuse 't' - possible side-effects?
#136: FILE: include/linux/lockdep.h:547:
+#define spin_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:136: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#136: FILE: include/linux/lockdep.h:547:
+#define spin_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:141: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#141: FILE: include/linux/lockdep.h:552:
+#define spin_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:141: CHECK:MACRO_ARG_REUSE: Macro argument reuse 's' - possible side-effects?
#141: FILE: include/linux/lockdep.h:552:
+#define spin_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:141: CHECK:MACRO_ARG_REUSE: Macro argument reuse 't' - possible side-effects?
#141: FILE: include/linux/lockdep.h:552:
+#define spin_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:141: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects?
#141: FILE: include/linux/lockdep.h:552:
+#define spin_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:141: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#141: FILE: include/linux/lockdep.h:552:
+#define spin_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:146: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#146: FILE: include/linux/lockdep.h:557:
+#define spin_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)

-:146: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#146: FILE: include/linux/lockdep.h:557:
+#define spin_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)

-:151: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#151: FILE: include/linux/lockdep.h:562:
+#define rwlock_acquire(l, s, t, i)					\
+do {									\
+	ldt_wlock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:151: CHECK:MACRO_ARG_REUSE: Macro argument reuse 's' - possible side-effects?
#151: FILE: include/linux/lockdep.h:562:
+#define rwlock_acquire(l, s, t, i)					\
+do {									\
+	ldt_wlock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:151: CHECK:MACRO_ARG_REUSE: Macro argument reuse 't' - possible side-effects?
#151: FILE: include/linux/lockdep.h:562:
+#define rwlock_acquire(l, s, t, i)					\
+do {									\
+	ldt_wlock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:151: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#151: FILE: include/linux/lockdep.h:562:
+#define rwlock_acquire(l, s, t, i)					\
+do {									\
+	ldt_wlock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:179: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#179: FILE: include/linux/lockdep.h:575:
+#define rwlock_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)

-:179: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#179: FILE: include/linux/lockdep.h:575:
+#define rwlock_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)

-:184: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#184: FILE: include/linux/lockdep.h:580:
+#define seqcount_acquire(l, s, t, i)					\
+do {									\
+	ldt_wlock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:184: CHECK:MACRO_ARG_REUSE: Macro argument reuse 's' - possible side-effects?
#184: FILE: include/linux/lockdep.h:580:
+#define seqcount_acquire(l, s, t, i)					\
+do {									\
+	ldt_wlock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:184: CHECK:MACRO_ARG_REUSE: Macro argument reuse 't' - possible side-effects?
#184: FILE: include/linux/lockdep.h:580:
+#define seqcount_acquire(l, s, t, i)					\
+do {									\
+	ldt_wlock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:184: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#184: FILE: include/linux/lockdep.h:580:
+#define seqcount_acquire(l, s, t, i)					\
+do {									\
+	ldt_wlock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:189: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#189: FILE: include/linux/lockdep.h:585:
+#define seqcount_acquire_read(l, s, t, i)				\
+do {									\
+	ldt_rlock(&(l)->dmap, s, t, NULL, i, false);			\
+	lock_acquire_shared_recursive(l, s, t, NULL, i);		\
+} while (0)

-:189: CHECK:MACRO_ARG_REUSE: Macro argument reuse 's' - possible side-effects?
#189: FILE: include/linux/lockdep.h:585:
+#define seqcount_acquire_read(l, s, t, i)				\
+do {									\
+	ldt_rlock(&(l)->dmap, s, t, NULL, i, false);			\
+	lock_acquire_shared_recursive(l, s, t, NULL, i);		\
+} while (0)

-:189: CHECK:MACRO_ARG_REUSE: Macro argument reuse 't' - possible side-effects?
#189: FILE: include/linux/lockdep.h:585:
+#define seqcount_acquire_read(l, s, t, i)				\
+do {									\
+	ldt_rlock(&(l)->dmap, s, t, NULL, i, false);			\
+	lock_acquire_shared_recursive(l, s, t, NULL, i);		\
+} while (0)

-:189: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#189: FILE: include/linux/lockdep.h:585:
+#define seqcount_acquire_read(l, s, t, i)				\
+do {									\
+	ldt_rlock(&(l)->dmap, s, t, NULL, i, false);			\
+	lock_acquire_shared_recursive(l, s, t, NULL, i);		\
+} while (0)

-:194: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#194: FILE: include/linux/lockdep.h:590:
+#define seqcount_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)

-:194: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#194: FILE: include/linux/lockdep.h:590:
+#define seqcount_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)

-:199: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#199: FILE: include/linux/lockdep.h:595:
+#define mutex_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:199: CHECK:MACRO_ARG_REUSE: Macro argument reuse 's' - possible side-effects?
#199: FILE: include/linux/lockdep.h:595:
+#define mutex_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:199: CHECK:MACRO_ARG_REUSE: Macro argument reuse 't' - possible side-effects?
#199: FILE: include/linux/lockdep.h:595:
+#define mutex_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:199: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#199: FILE: include/linux/lockdep.h:595:
+#define mutex_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:204: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#204: FILE: include/linux/lockdep.h:600:
+#define mutex_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:204: CHECK:MACRO_ARG_REUSE: Macro argument reuse 's' - possible side-effects?
#204: FILE: include/linux/lockdep.h:600:
+#define mutex_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:204: CHECK:MACRO_ARG_REUSE: Macro argument reuse 't' - possible side-effects?
#204: FILE: include/linux/lockdep.h:600:
+#define mutex_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:204: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects?
#204: FILE: include/linux/lockdep.h:600:
+#define mutex_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:204: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#204: FILE: include/linux/lockdep.h:600:
+#define mutex_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:209: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#209: FILE: include/linux/lockdep.h:605:
+#define mutex_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)

-:209: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#209: FILE: include/linux/lockdep.h:605:
+#define mutex_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)

-:214: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#214: FILE: include/linux/lockdep.h:610:
+#define rwsem_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:214: CHECK:MACRO_ARG_REUSE: Macro argument reuse 's' - possible side-effects?
#214: FILE: include/linux/lockdep.h:610:
+#define rwsem_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:214: CHECK:MACRO_ARG_REUSE: Macro argument reuse 't' - possible side-effects?
#214: FILE: include/linux/lockdep.h:610:
+#define rwsem_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:214: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#214: FILE: include/linux/lockdep.h:610:
+#define rwsem_acquire(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_exclusive(l, s, t, NULL, i);			\
+} while (0)

-:219: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#219: FILE: include/linux/lockdep.h:615:
+#define rwsem_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:219: CHECK:MACRO_ARG_REUSE: Macro argument reuse 's' - possible side-effects?
#219: FILE: include/linux/lockdep.h:615:
+#define rwsem_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:219: CHECK:MACRO_ARG_REUSE: Macro argument reuse 't' - possible side-effects?
#219: FILE: include/linux/lockdep.h:615:
+#define rwsem_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:219: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects?
#219: FILE: include/linux/lockdep.h:615:
+#define rwsem_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:219: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#219: FILE: include/linux/lockdep.h:615:
+#define rwsem_acquire_nest(l, s, t, n, i)				\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, n, i);				\
+	lock_acquire_exclusive(l, s, t, n, i);				\
+} while (0)

-:224: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#224: FILE: include/linux/lockdep.h:620:
+#define rwsem_acquire_read(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_shared(l, s, t, NULL, i);				\
+} while (0)

-:224: CHECK:MACRO_ARG_REUSE: Macro argument reuse 's' - possible side-effects?
#224: FILE: include/linux/lockdep.h:620:
+#define rwsem_acquire_read(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_shared(l, s, t, NULL, i);				\
+} while (0)

-:224: CHECK:MACRO_ARG_REUSE: Macro argument reuse 't' - possible side-effects?
#224: FILE: include/linux/lockdep.h:620:
+#define rwsem_acquire_read(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_shared(l, s, t, NULL, i);				\
+} while (0)

-:224: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#224: FILE: include/linux/lockdep.h:620:
+#define rwsem_acquire_read(l, s, t, i)					\
+do {									\
+	ldt_lock(&(l)->dmap, s, t, NULL, i);				\
+	lock_acquire_shared(l, s, t, NULL, i);				\
+} while (0)

-:229: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'l' - possible side-effects?
#229: FILE: include/linux/lockdep.h:625:
+#define rwsem_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)

-:229: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i' - possible side-effects?
#229: FILE: include/linux/lockdep.h:625:
+#define rwsem_release(l, i)						\
+do {									\
+	ldt_unlock(&(l)->dmap, i);					\
+	lock_release(l, i);						\
+} while (0)

-:286: WARNING:LONG_LINE: line length of 127 exceeds 100 columns
#286: FILE: include/linux/percpu-rwsem.h:24:
+#define __PERCPU_RWSEM_DEP_MAP_INIT(lockname)	.dep_map = { .name = #lockname, .dmap = DEPT_MAP_INITIALIZER(lockname, NULL) },

-:374: WARNING:LONG_LINE: line length of 121 exceeds 100 columns
#374: FILE: include/linux/srcu.h:38:
+#define __SRCU_DEP_MAP_INIT(srcu_name)	.dep_map = { .name = #srcu_name, .dmap = DEPT_MAP_INITIALIZER(srcu_name, NULL) },

-:387: WARNING:AVOID_EXTERNS: externs should be avoided in .c files
#387: FILE: kernel/dependency/dept.c:248:
+extern struct lock_class_key __lockdep_no_validate__;

-:439: CHECK:BRACES: Blank lines aren't necessary after an open brace '{'
#439: FILE: kernel/locking/lockdep.c:4501:
 {
+

total: 0 errors, 3 warnings, 54 checks, 378 lines checked
fc7f85f87 dept: Add proc knobs to show stats and dependency graph
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'
-:112: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#112: 
new file mode 100644

-:225: ERROR:MULTISTATEMENT_MACRO_USE_DO_WHILE: Macros with multiple statements should be enclosed in a do - while loop
#225: FILE: kernel/dependency/dept_proc.c:77:
+#define OBJECT(id, nr)							\
+	r = atomic_read(&dept_pool[OBJECT_##id].obj_nr);		\
+	if (r < 0)							\
+		r = 0;							\
+	seq_printf(m, "%s\t%d/%d(%d%%)\n", #id, r, nr, (r * 100) / (nr));

-:225: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'nr' - possible side-effects?
#225: FILE: kernel/dependency/dept_proc.c:77:
+#define OBJECT(id, nr)							\
+	r = atomic_read(&dept_pool[OBJECT_##id].obj_nr);		\
+	if (r < 0)							\
+		r = 0;							\
+	seq_printf(m, "%s\t%d/%d(%d%%)\n", #id, r, nr, (r * 100) / (nr));

-:225: WARNING:TRAILING_SEMICOLON: macros should not use a trailing semicolon
#225: FILE: kernel/dependency/dept_proc.c:77:
+#define OBJECT(id, nr)							\
+	r = atomic_read(&dept_pool[OBJECT_##id].obj_nr);		\
+	if (r < 0)							\
+		r = 0;							\
+	seq_printf(m, "%s\t%d/%d(%d%%)\n", #id, r, nr, (r * 100) / (nr));

-:238: WARNING:SYMBOLIC_PERMS: Symbolic permissions 'S_IRUSR' are not preferred. Consider using octal permissions '0400'.
#238: FILE: kernel/dependency/dept_proc.c:90:
+	proc_create_seq("dept_deps", S_IRUSR, NULL, &dept_deps_ops);

-:239: WARNING:SYMBOLIC_PERMS: Symbolic permissions 'S_IRUSR' are not preferred. Consider using octal permissions '0400'.
#239: FILE: kernel/dependency/dept_proc.c:91:
+	proc_create_single("dept_stats", S_IRUSR, NULL, dept_stats_show);

-:243: WARNING:USE_DEVICE_INITCALL: please use device_initcall() or more appropriate function instead of __initcall() (see include/linux/init.h)
#243: FILE: kernel/dependency/dept_proc.c:95:
+__initcall(dept_proc_init);

total: 1 errors, 5 warnings, 1 checks, 203 lines checked
553ef9bff dept: Apply sdt_might_sleep_{start, end}() to wait_for_completion()/complete()
-:32: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'x' - possible side-effects?
#32: FILE: include/linux/completion.h:33:
+#define init_completion(x)				\
+do {							\
+	sdt_map_init(&(x)->dmap);			\
+	__init_completion(x);				\
+} while (0)

total: 0 errors, 0 warnings, 1 checks, 58 lines checked
f785682a3 dept: Apply sdt_might_sleep_{start, end}() to PG_{locked, writeback} wait
-:29: WARNING:LONG_LINE: line length of 102 exceeds 100 columns
#29: FILE: mm/filemap.c:1224:
+static struct dept_map __maybe_unused PG_writeback_map = DEPT_MAP_INITIALIZER(PG_writeback_map, NULL);

total: 0 errors, 1 warnings, 0 checks, 35 lines checked
2c5f31d5a dept: Apply sdt_might_sleep_{start, end}() to swait
20f9ef025 dept: Apply sdt_might_sleep_{start, end}() to waitqueue wait
c10fcf9d2 dept: Apply sdt_might_sleep_{start, end}() to hashed-waitqueue wait
5e6972bbb dept: Distinguish each syscall context from another
-:169: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#169: FILE: include/linux/dept.h:517:
+extern void dept_kernel_enter(void);

total: 0 errors, 0 warnings, 1 checks, 335 lines checked
2f6fa1c02 dept: Distinguish each work from another
-:23: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#23: FILE: include/linux/dept.h:518:
+extern void dept_work_enter(void);

total: 0 errors, 0 warnings, 1 checks, 45 lines checked
51de354ff dept: Add a mechanism to refill the internal memory pools on running out
4f34ed5d8 locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread
ba789b00a dept: Apply sdt_might_sleep_{start, end}() to dma fence wait
40fc14d31 dept: Track timeout waits separately with a new Kconfig
-:60: WARNING:LONG_LINE: line length of 122 exceeds 100 columns
#60: FILE: include/linux/dept.h:523:
+extern void dept_wait(struct dept_map *m, unsigned long w_f, unsigned long ip, const char *w_fn, int sub_l, long timeout);

-:60: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#60: FILE: include/linux/dept.h:523:
+extern void dept_wait(struct dept_map *m, unsigned long w_f, unsigned long ip, const char *w_fn, int sub_l, long timeout);

-:61: WARNING:LONG_LINE: line length of 118 exceeds 100 columns
#61: FILE: include/linux/dept.h:524:
+extern void dept_stage_wait(struct dept_map *m, struct dept_key *k, unsigned long ip, const char *w_fn, long timeout);

-:61: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#61: FILE: include/linux/dept.h:524:
+extern void dept_stage_wait(struct dept_map *m, struct dept_key *k, unsigned long ip, const char *w_fn, long timeout);

-:71: WARNING:SINGLE_STATEMENT_DO_WHILE_MACRO: Single statement macros should not use a do {} while (0) loop
#71: FILE: include/linux/dept.h:576:
+#define dept_wait(m, w_f, ip, w_fn, sl, t)		do { (void)(w_fn); } while (0)

-:116: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'm' - possible side-effects?
#116: FILE: include/linux/dept_sdt.h:25:
+#define sdt_wait_timeout(m, t)						\
 	do {								\
 		dept_request_event(m);					\
+		dept_wait(m, 1UL, _THIS_IP_, __func__, 0, t);		\
 	} while (0)

total: 0 errors, 3 warnings, 3 checks, 295 lines checked
497bc2bc4 dept: Apply timeout consideration to wait_for_completion()/complete()
a0c502207 dept: Apply timeout consideration to swait
032bccb89 dept: Apply timeout consideration to waitqueue wait
38445caed dept: Apply timeout consideration to hashed-waitqueue wait
f19ba4a62 dept: Apply timeout consideration to dma fence wait
c71e3bee1 dept: Record the latest one out of consecutive waits of the same class
8e6ec9e96 dept: Make Dept able to work with an external wgen
-:30: WARNING:SPACING: missing space after struct definition
#30: FILE: include/linux/dept.h:493:
+struct dept_ext_wgen{

-:41: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#41: FILE: include/linux/dept.h:528:
+extern void dept_ext_wgen_init(struct dept_ext_wgen *ewg);

-:51: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#51: FILE: include/linux/dept.h:538:
+extern void dept_request_event(struct dept_map *m, struct dept_ext_wgen *ewg);

-:52: WARNING:LONG_LINE: line length of 125 exceeds 100 columns
#52: FILE: include/linux/dept.h:539:
+extern void dept_event(struct dept_map *m, unsigned long e_f, unsigned long ip, const char *e_fn, struct dept_ext_wgen *ewg);

-:52: CHECK:AVOID_EXTERNS: extern prototypes should be avoided in .h files
#52: FILE: include/linux/dept.h:539:
+extern void dept_event(struct dept_map *m, unsigned long e_f, unsigned long ip, const char *e_fn, struct dept_ext_wgen *ewg);

-:79: WARNING:SINGLE_STATEMENT_DO_WHILE_MACRO: Single statement macros should not use a do {} while (0) loop
#79: FILE: include/linux/dept.h:594:
+#define dept_event(m, e_f, ip, e_fn, wg)		do { (void)(e_fn); } while (0)

total: 0 errors, 3 warnings, 3 checks, 174 lines checked
806253f8f dept: Track the potential waits of PG_{locked, writeback}
-:20: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line)
#20: 
   https://lore.kernel.org/lkml/1674268856-31807-1-git-send-email-byungchul.park@lge.com/

-:248: WARNING:EXPORT_SYMBOL: EXPORT_SYMBOL(foo); should immediately follow its function/variable
#248: FILE: mm/filemap.c:1227:
+EXPORT_SYMBOL(PG_locked_map);

-:249: WARNING:EXPORT_SYMBOL: EXPORT_SYMBOL(foo); should immediately follow its function/variable
#249: FILE: mm/filemap.c:1228:
+EXPORT_SYMBOL(PG_writeback_map);

total: 0 errors, 3 warnings, 0 checks, 240 lines checked
6683bd312 HAX: dept: Enable Dept by default
-:7: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one

total: 0 errors, 1 warnings, 0 checks, 16 lines checked
ec8361672 HAX: dept: Increase DEPT_MAX_WAIT_HIST / DEPT_MAX_ECXT_HELD to track more
-:8: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one

total: 0 errors, 1 warnings, 0 checks, 10 lines checked



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

* [Intel-xe] ✓ CI.KUnit: success for DEPT 2.4 test run for drm-xe
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (28 preceding siblings ...)
  2023-07-04 10:09 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
@ 2023-07-04 10:10 ` Patchwork
  2023-07-04 10:14 ` [Intel-xe] ✓ CI.Build: " Patchwork
                   ` (3 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2023-07-04 10:10 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-xe

== Series Details ==

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

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

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



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

* [Intel-xe] ✓ CI.Build: success for DEPT 2.4 test run for drm-xe
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (29 preceding siblings ...)
  2023-07-04 10:10 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
@ 2023-07-04 10:14 ` Patchwork
  2023-07-04 10:15 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
                   ` (2 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2023-07-04 10:14 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-xe

== Series Details ==

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



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

* [Intel-xe] ✓ CI.Hooks: success for DEPT 2.4 test run for drm-xe
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (30 preceding siblings ...)
  2023-07-04 10:14 ` [Intel-xe] ✓ CI.Build: " Patchwork
@ 2023-07-04 10:15 ` Patchwork
  2023-07-04 10:16 ` [Intel-xe] ✗ CI.checksparse: warning " Patchwork
  2023-07-04 10:50 ` [Intel-xe] ○ CI.BAT: info " Patchwork
  33 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2023-07-04 10:15 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-xe

== Series Details ==

Series: DEPT 2.4 test run for drm-xe
URL   : https://patchwork.freedesktop.org/series/120168/
State : success

== Summary ==

run-parts: executing /workspace/ci/hooks/00-showenv
/workspace
+ pwd
+ ls -la
total 756
drwxrwxr-x 10 1003 1003   4096 Jul  4 10:14 .
drwxr-xr-x  1 root root   4096 Jul  4 10:14 ..
-rw-rw-r--  1 1003 1003 389473 Jul  4 10:14 build.log
-rw-rw-r--  1 1003 1003  46987 Jul  4 10:09 checkpatch.log
drwxrwxr-x  5 1003 1003   4096 Jul  4 10:07 ci
drwxrwxr-x 10 1003 1003   4096 Jul  4 09:55 docker
drwxrwxr-x  8 1003 1003   4096 Jul  4 09:55 .git
-rw-rw-r--  1 1003 1003   1960 Jul  4 10:08 git_apply.log
drwxrwxr-x  3 1003 1003   4096 Jul  4 09:55 .github
-rw-rw-r--  1 1003 1003    233 Jul  4 09:55 .groovylintrc.json
-rw-rw-r--  1 1003 1003     78 Jul  4 10:14 hooks.log
drwxrwxr-x 31 1003 1003   4096 Jul  4 10:14 kernel
-rw-rw-r--  1 1003 1003 243213 Jul  4 10:08 kernel.mbox
-rw-rw-r--  1 1003 1003  26091 Jul  4 10:10 kunit.log
drwxrwxr-x 42 1003 1003   4096 Jul  4 09:55 pipelines
-rw-rw-r--  1 1003 1003    793 Jul  4 09:55 README.adoc
drwxrwxr-x  3 1003 1003   4096 Jul  4 09:55 scripts
drwxrwxr-x  2 1003 1003   4096 Jul  4 09:55 .vscode
+ uname -a
Linux 6815119ceae9 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
ec8361672 HAX: dept: Increase DEPT_MAX_WAIT_HIST / DEPT_MAX_ECXT_HELD to track more
6683bd312 HAX: dept: Enable Dept by default
806253f8f dept: Track the potential waits of PG_{locked, writeback}
8e6ec9e96 dept: Make Dept able to work with an external wgen
c71e3bee1 dept: Record the latest one out of consecutive waits of the same class
f19ba4a62 dept: Apply timeout consideration to dma fence wait
38445caed dept: Apply timeout consideration to hashed-waitqueue wait
032bccb89 dept: Apply timeout consideration to waitqueue wait
a0c502207 dept: Apply timeout consideration to swait
497bc2bc4 dept: Apply timeout consideration to wait_for_completion()/complete()
40fc14d31 dept: Track timeout waits separately with a new Kconfig
ba789b00a dept: Apply sdt_might_sleep_{start, end}() to dma fence wait
4f34ed5d8 locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread
51de354ff dept: Add a mechanism to refill the internal memory pools on running out
2f6fa1c02 dept: Distinguish each work from another
5e6972bbb dept: Distinguish each syscall context from another
c10fcf9d2 dept: Apply sdt_might_sleep_{start, end}() to hashed-waitqueue wait
20f9ef025 dept: Apply sdt_might_sleep_{start, end}() to waitqueue wait
2c5f31d5a dept: Apply sdt_might_sleep_{start, end}() to swait
f785682a3 dept: Apply sdt_might_sleep_{start, end}() to PG_{locked, writeback} wait
553ef9bff dept: Apply sdt_might_sleep_{start, end}() to wait_for_completion()/complete()
fc7f85f87 dept: Add proc knobs to show stats and dependency graph
3780e7533 dept: Tie to Lockdep and IRQ tracing
298d79bcd dept: Add lock dependency tracker APIs
556d7361e dept: Add single event dependency tracker APIs
d3c7c8210 dept: Implement Dept(Dependency Tracker)
23326d980 llist: Move llist_{head, node} definition to types.h
103e5d7aa fixup! drm/xe/display: Implement display support
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_sysfs.o
  CC [M]  drivers/gpu/drm/xe/xe_tile.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
  CC [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.o
  HDRTEST drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h
  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
  HDRTEST drivers/gpu/drm/xe/regs/xe_reg_defs.h
  CC [M]  drivers/gpu/drm/xe/tests/xe_rtp_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
  CC [M]  drivers/gpu/drm/xe/tests/xe_wa_test.o
  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_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_gt_clock.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_debugfs.h
  HDRTEST drivers/gpu/drm/xe/xe_guc_ct_types.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_bo_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_migrate_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_dma_buf_test.ko
  LD [M]  drivers/gpu/drm/xe/tests/xe_pci_test.ko
  LD [M]  drivers/gpu/drm/xe/xe.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] 35+ messages in thread

* [Intel-xe] ✗ CI.checksparse: warning for DEPT 2.4 test run for drm-xe
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (31 preceding siblings ...)
  2023-07-04 10:15 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
@ 2023-07-04 10:16 ` Patchwork
  2023-07-04 10:50 ` [Intel-xe] ○ CI.BAT: info " Patchwork
  33 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2023-07-04 10:16 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-xe

== Series Details ==

Series: DEPT 2.4 test run for drm-xe
URL   : https://patchwork.freedesktop.org/series/120168/
State : warning

== Summary ==

+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 103e5d7aa1ba8469687574c926f40c630252ede4
Sparse version: 0.6.1 (Ubuntu: 0.6.1-2build1)
Fast mode used, each commit won't be checked separately.
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* [Intel-xe] ○ CI.BAT: info for DEPT 2.4 test run for drm-xe
  2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
                   ` (32 preceding siblings ...)
  2023-07-04 10:16 ` [Intel-xe] ✗ CI.checksparse: warning " Patchwork
@ 2023-07-04 10:50 ` Patchwork
  33 siblings, 0 replies; 35+ messages in thread
From: Patchwork @ 2023-07-04 10:50 UTC (permalink / raw)
  To: Gwan-gyeong Mun; +Cc: intel-xe

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

== Series Details ==

Series: DEPT 2.4 test run for drm-xe
URL   : https://patchwork.freedesktop.org/series/120168/
State : info

== Summary ==

Participating hosts:
bat-pvc-2
bat-atsm-2
bat-dg2-oem2
bat-adlp-7
Missing hosts results[2]:
bat-pvc-2
bat-atsm-2
Results: [xe-pw-120168v1](https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-120168v1/index.html)



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

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

end of thread, other threads:[~2023-07-04 10:50 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-04  9:51 [Intel-xe] [CI 00/27] DEPT 2.4 test run for drm-xe Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 01/27] llist: Move llist_{head, node} definition to types.h Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 02/27] dept: Implement Dept(Dependency Tracker) Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 03/27] dept: Add single event dependency tracker APIs Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 04/27] dept: Add lock " Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 05/27] dept: Tie to Lockdep and IRQ tracing Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 06/27] dept: Add proc knobs to show stats and dependency graph Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 07/27] dept: Apply sdt_might_sleep_{start, end}() to wait_for_completion()/complete() Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 08/27] dept: Apply sdt_might_sleep_{start, end}() to PG_{locked, writeback} wait Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 09/27] dept: Apply sdt_might_sleep_{start, end}() to swait Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 10/27] dept: Apply sdt_might_sleep_{start, end}() to waitqueue wait Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 11/27] dept: Apply sdt_might_sleep_{start, end}() to hashed-waitqueue wait Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 12/27] dept: Distinguish each syscall context from another Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 13/27] dept: Distinguish each work " Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 14/27] dept: Add a mechanism to refill the internal memory pools on running out Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 15/27] locking/lockdep, cpu/hotplus: Use a weaker annotation in AP thread Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 16/27] dept: Apply sdt_might_sleep_{start, end}() to dma fence wait Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 17/27] dept: Track timeout waits separately with a new Kconfig Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 18/27] dept: Apply timeout consideration to wait_for_completion()/complete() Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 19/27] dept: Apply timeout consideration to swait Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 20/27] dept: Apply timeout consideration to waitqueue wait Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 21/27] dept: Apply timeout consideration to hashed-waitqueue wait Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 22/27] dept: Apply timeout consideration to dma fence wait Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 23/27] dept: Record the latest one out of consecutive waits of the same class Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 24/27] dept: Make Dept able to work with an external wgen Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 25/27] dept: Track the potential waits of PG_{locked, writeback} Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 26/27] HAX: dept: Enable Dept by default Gwan-gyeong Mun
2023-07-04  9:51 ` [Intel-xe] [CI 27/27] HAX: dept: Increase DEPT_MAX_WAIT_HIST / DEPT_MAX_ECXT_HELD to track more Gwan-gyeong Mun
2023-07-04 10:08 ` [Intel-xe] ✓ CI.Patch_applied: success for DEPT 2.4 test run for drm-xe Patchwork
2023-07-04 10:09 ` [Intel-xe] ✗ CI.checkpatch: warning " Patchwork
2023-07-04 10:10 ` [Intel-xe] ✓ CI.KUnit: success " Patchwork
2023-07-04 10:14 ` [Intel-xe] ✓ CI.Build: " Patchwork
2023-07-04 10:15 ` [Intel-xe] ✓ CI.Hooks: " Patchwork
2023-07-04 10:16 ` [Intel-xe] ✗ CI.checksparse: warning " Patchwork
2023-07-04 10:50 ` [Intel-xe] ○ CI.BAT: info " 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.