Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
@ 2024-10-21 22:27 Gustavo Sousa
  2024-10-21 22:27 ` [PATCH 01/13] drm/xe: Mimic i915 behavior for non-sleeping MMIO wait Gustavo Sousa
                   ` (20 more replies)
  0 siblings, 21 replies; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Using the DMC wakelock is the official recommendation for Xe3_LPD. This
series apply fixes to the current DMC wakelock implementation and
enables it by default for Xe3_LPD. The series has been tested with a PTL
machine.

Gustavo Sousa (13):
  drm/xe: Mimic i915 behavior for non-sleeping MMIO wait
  drm/i915/dmc_wl: Use non-sleeping variant of MMIO wait
  drm/i915/dmc_wl: Check for non-zero refcount in release work
  drm/i915/dmc_wl: Get wakelock when disabling dynamic DC states
  drm/i915/dmc_wl: Use sentinel item for range tables
  drm/i915/dmc_wl: Extract intel_dmc_wl_addr_in_range()
  drm/i915/dmc_wl: Check ranges specific to DC states
  drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables
  drm/i915/dmc_wl: Deal with existing references when disabling
  drm/i915/dmc_wl: Couple enable/disable with dynamic DC states
  drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK()
  drm/i915/dmc_wl: Sanitize enable_dmc_wl according to hardware support
  drm/i915/xe3lpd: Use DMC wakelock by default

 drivers/gpu/drm/i915/display/intel_de.h       |  11 +
 .../drm/i915/display/intel_display_device.h   |   1 +
 .../drm/i915/display/intel_display_driver.c   |   2 +-
 .../drm/i915/display/intel_display_params.c   |   4 +-
 .../drm/i915/display/intel_display_params.h   |   2 +-
 .../i915/display/intel_display_power_well.c   |  15 +-
 drivers/gpu/drm/i915/display/intel_dmc.c      |   4 -
 drivers/gpu/drm/i915/display/intel_dmc_wl.c   | 282 ++++++++++++++----
 drivers/gpu/drm/i915/display/intel_dmc_wl.h   |   2 +
 .../drm/xe/compat-i915-headers/intel_uncore.h |  13 +-
 10 files changed, 269 insertions(+), 67 deletions(-)

-- 
2.47.0


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

* [PATCH 01/13] drm/xe: Mimic i915 behavior for non-sleeping MMIO wait
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-11-01 10:57   ` Luca Coelho
  2024-10-21 22:27 ` [PATCH 02/13] drm/i915/dmc_wl: Use non-sleeping variant of " Gustavo Sousa
                   ` (19 subsequent siblings)
  20 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

In upcoming display changes, we will modify the DMC wakelock MMIO
waiting code to choose a non-sleeping variant implementation, because
the wakelock is also taking in atomic context.

While xe provides an explicit parameter (namely "atomic") to prevent
xe_mmio_wait32() from sleeping, i915 does not and implements that
behavior when slow_timeout_ms is zero.

So, for now, let's mimic what i915 does to allow for display to use
non-sleeping MMIO wait. In the future, we should come up with a better
and explicit interface for this behavior in i915, at least while display
code is not an independent entity with proper interfaces between xe and
i915.

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 .../gpu/drm/xe/compat-i915-headers/intel_uncore.h   | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
index 0382beb4035b..5a57f76c1760 100644
--- a/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
+++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
@@ -117,10 +117,21 @@ __intel_wait_for_register(struct intel_uncore *uncore, i915_reg_t i915_reg,
 			  unsigned int slow_timeout_ms, u32 *out_value)
 {
 	struct xe_reg reg = XE_REG(i915_mmio_reg_offset(i915_reg));
+	bool atomic;
+
+	/*
+	 * FIXME: We are trying to replicate the behavior from i915 here, in
+	 * which sleep is not performed if slow_timeout_ms == 0. This hack is
+	 * necessary because of paths in display code that are executed in
+	 * atomic context. Setting the atomic flag based on timeout values
+	 * doesn't feel very robust. Ideally, we should have a proper interface
+	 * for explicitly choosing non-sleeping behavior.
+	 */
+	atomic = !slow_timeout_ms && fast_timeout_us > 0;
 
 	return xe_mmio_wait32(__compat_uncore_to_mmio(uncore), reg, mask, value,
 			      fast_timeout_us + 1000 * slow_timeout_ms,
-			      out_value, false);
+			      out_value, atomic);
 }
 
 static inline u32 intel_uncore_read_fw(struct intel_uncore *uncore,
-- 
2.47.0


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

* [PATCH 02/13] drm/i915/dmc_wl: Use non-sleeping variant of MMIO wait
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
  2024-10-21 22:27 ` [PATCH 01/13] drm/xe: Mimic i915 behavior for non-sleeping MMIO wait Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-10-22  9:34   ` Jani Nikula
  2024-11-01 11:18   ` Luca Coelho
  2024-10-21 22:27 ` [PATCH 03/13] drm/i915/dmc_wl: Check for non-zero refcount in release work Gustavo Sousa
                   ` (18 subsequent siblings)
  20 siblings, 2 replies; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Some display MMIO transactions for offsets in the range that requires
the DMC wakelock happen in atomic context (this has been confirmed
during tests on PTL). That means that we need to use a non-sleeping
variant of MMIO waiting function.

Implement __intel_de_wait_for_register_atomic_nowl() and use it when
waiting for acknowledgment of acquire/release.

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_de.h     | 11 +++++++++++
 drivers/gpu/drm/i915/display/intel_dmc_wl.c | 20 ++++++++++++--------
 2 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
index e017cd4a8168..4116783a62dd 100644
--- a/drivers/gpu/drm/i915/display/intel_de.h
+++ b/drivers/gpu/drm/i915/display/intel_de.h
@@ -121,6 +121,17 @@ ____intel_de_wait_for_register_nowl(struct intel_display *display,
 }
 #define __intel_de_wait_for_register_nowl(p,...) ____intel_de_wait_for_register_nowl(__to_intel_display(p), __VA_ARGS__)
 
+static inline int
+____intel_de_wait_for_register_atomic_nowl(struct intel_display *display,
+					   i915_reg_t reg,
+					   u32 mask, u32 value,
+					   unsigned int fast_timeout_us)
+{
+	return __intel_wait_for_register(__to_uncore(display), reg, mask,
+					 value, fast_timeout_us, 0, NULL);
+}
+#define __intel_de_wait_for_register_atomic_nowl(p,...) ____intel_de_wait_for_register_atomic_nowl(__to_intel_display(p), __VA_ARGS__)
+
 static inline int
 __intel_de_wait(struct intel_display *display, i915_reg_t reg,
 		u32 mask, u32 value, unsigned int timeout)
diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index 5634ff07269d..8056a3c8666c 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -39,7 +39,7 @@
  * potential future use.
  */
 
-#define DMC_WAKELOCK_CTL_TIMEOUT 5
+#define DMC_WAKELOCK_CTL_TIMEOUT_US 5000
 #define DMC_WAKELOCK_HOLD_TIME 50
 
 struct intel_dmc_wl_range {
@@ -78,9 +78,9 @@ static void intel_dmc_wl_work(struct work_struct *work)
 
 	__intel_de_rmw_nowl(display, DMC_WAKELOCK1_CTL, DMC_WAKELOCK_CTL_REQ, 0);
 
-	if (__intel_de_wait_for_register_nowl(display, DMC_WAKELOCK1_CTL,
-					      DMC_WAKELOCK_CTL_ACK, 0,
-					      DMC_WAKELOCK_CTL_TIMEOUT)) {
+	if (__intel_de_wait_for_register_atomic_nowl(display, DMC_WAKELOCK1_CTL,
+						     DMC_WAKELOCK_CTL_ACK, 0,
+						     DMC_WAKELOCK_CTL_TIMEOUT_US)) {
 		WARN_RATELIMIT(1, "DMC wakelock release timed out");
 		goto out_unlock;
 	}
@@ -216,10 +216,14 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
 		__intel_de_rmw_nowl(display, DMC_WAKELOCK1_CTL, 0,
 				    DMC_WAKELOCK_CTL_REQ);
 
-		if (__intel_de_wait_for_register_nowl(display, DMC_WAKELOCK1_CTL,
-						      DMC_WAKELOCK_CTL_ACK,
-						      DMC_WAKELOCK_CTL_ACK,
-						      DMC_WAKELOCK_CTL_TIMEOUT)) {
+		/*
+		 * We need to use the atomic variant of the waiting routine
+		 * because the DMC wakelock is also taken in atomic context.
+		 */
+		if (__intel_de_wait_for_register_atomic_nowl(display, DMC_WAKELOCK1_CTL,
+							     DMC_WAKELOCK_CTL_ACK,
+							     DMC_WAKELOCK_CTL_ACK,
+							     DMC_WAKELOCK_CTL_TIMEOUT_US)) {
 			WARN_RATELIMIT(1, "DMC wakelock ack timed out");
 			goto out_unlock;
 		}
-- 
2.47.0


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

* [PATCH 03/13] drm/i915/dmc_wl: Check for non-zero refcount in release work
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
  2024-10-21 22:27 ` [PATCH 01/13] drm/xe: Mimic i915 behavior for non-sleeping MMIO wait Gustavo Sousa
  2024-10-21 22:27 ` [PATCH 02/13] drm/i915/dmc_wl: Use non-sleeping variant of " Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-11-01 11:48   ` Luca Coelho
  2024-10-21 22:27 ` [PATCH 04/13] drm/i915/dmc_wl: Get wakelock when disabling dynamic DC states Gustavo Sousa
                   ` (17 subsequent siblings)
  20 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

When the DMC wakelock refcount reaches zero, we know that there are no
users and that we can do the actual release operation on the hardware,
which is queued with a delayed work. The idea of the delayed work is to
avoid performing the release if a new lock user appears (i.e. refcount
gets incremented) in a very short period of time.

Based on the above, the release work should bail out if refcount is
non-zero (meaning new lock users appeared in the meantime), but our
current code actually does the opposite: it bails when refcount is zero.
That means that the wakelock is not released when it should be; and
that, when the work is not canceled in time, it ends up being releasing
when it should not.

Fix that by inverting the condition.

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dmc_wl.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index 8056a3c8666c..c298aef89449 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -72,8 +72,11 @@ static void intel_dmc_wl_work(struct work_struct *work)
 
 	spin_lock_irqsave(&wl->lock, flags);
 
-	/* Bail out if refcount reached zero while waiting for the spinlock */
-	if (!refcount_read(&wl->refcount))
+	/*
+	 * Bail out if refcount became non-zero while waiting for the spinlock,
+	 * meaning that the lock is now taken again.
+	 */
+	if (refcount_read(&wl->refcount))
 		goto out_unlock;
 
 	__intel_de_rmw_nowl(display, DMC_WAKELOCK1_CTL, DMC_WAKELOCK_CTL_REQ, 0);
-- 
2.47.0


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

* [PATCH 04/13] drm/i915/dmc_wl: Get wakelock when disabling dynamic DC states
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (2 preceding siblings ...)
  2024-10-21 22:27 ` [PATCH 03/13] drm/i915/dmc_wl: Check for non-zero refcount in release work Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-11-01 12:24   ` Luca Coelho
  2024-10-21 22:27 ` [PATCH 05/13] drm/i915/dmc_wl: Use sentinel item for range tables Gustavo Sousa
                   ` (16 subsequent siblings)
  20 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Bspec says that disabling dynamic DC states require taking the DMC
wakelock to cause an DC exit before writing to DC_STATE_EN. Implement
that.

In fact, testing on PTL revealed we end up failing to exit DC5/6 without
this step.

Bspec: 71583
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 .../drm/i915/display/intel_display_power_well.c    | 10 +++++++---
 drivers/gpu/drm/i915/display/intel_dmc_wl.c        | 14 ++++++++++++--
 drivers/gpu/drm/i915/display/intel_dmc_wl.h        |  2 ++
 3 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_power_well.c b/drivers/gpu/drm/i915/display/intel_display_power_well.c
index adaf7cf3a33b..e8946ce86aaa 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power_well.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power_well.c
@@ -987,10 +987,14 @@ void gen9_disable_dc_states(struct intel_display *display)
 		return;
 	}
 
-	gen9_set_dc_state(display, DC_STATE_DISABLE);
-
-	if (!HAS_DISPLAY(display))
+	if (HAS_DISPLAY(display)) {
+		intel_dmc_wl_get_noreg(display);
+		gen9_set_dc_state(display, DC_STATE_DISABLE);
+		intel_dmc_wl_put_noreg(display);
+	} else {
+		gen9_set_dc_state(display, DC_STATE_DISABLE);
 		return;
+	}
 
 	intel_dmc_wl_disable(display);
 
diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index c298aef89449..5ed610c9be39 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -194,7 +194,7 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
 	if (!__intel_dmc_wl_supported(display))
 		return;
 
-	if (!intel_dmc_wl_check_range(reg.reg))
+	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
 		return;
 
 	spin_lock_irqsave(&wl->lock, flags);
@@ -246,7 +246,7 @@ void intel_dmc_wl_put(struct intel_display *display, i915_reg_t reg)
 	if (!__intel_dmc_wl_supported(display))
 		return;
 
-	if (!intel_dmc_wl_check_range(reg.reg))
+	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
 		return;
 
 	spin_lock_irqsave(&wl->lock, flags);
@@ -267,3 +267,13 @@ void intel_dmc_wl_put(struct intel_display *display, i915_reg_t reg)
 out_unlock:
 	spin_unlock_irqrestore(&wl->lock, flags);
 }
+
+void intel_dmc_wl_get_noreg(struct intel_display *display)
+{
+	intel_dmc_wl_get(display, INVALID_MMIO_REG);
+}
+
+void intel_dmc_wl_put_noreg(struct intel_display *display)
+{
+	intel_dmc_wl_put(display, INVALID_MMIO_REG);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.h b/drivers/gpu/drm/i915/display/intel_dmc_wl.h
index adab51208d0a..9aa72a4bf153 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.h
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.h
@@ -27,5 +27,7 @@ void intel_dmc_wl_enable(struct intel_display *display);
 void intel_dmc_wl_disable(struct intel_display *display);
 void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg);
 void intel_dmc_wl_put(struct intel_display *display, i915_reg_t reg);
+void intel_dmc_wl_get_noreg(struct intel_display *display);
+void intel_dmc_wl_put_noreg(struct intel_display *display);
 
 #endif /* __INTEL_WAKELOCK_H__ */
-- 
2.47.0


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

* [PATCH 05/13] drm/i915/dmc_wl: Use sentinel item for range tables
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (3 preceding siblings ...)
  2024-10-21 22:27 ` [PATCH 04/13] drm/i915/dmc_wl: Get wakelock when disabling dynamic DC states Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-11-01 12:25   ` Luca Coelho
  2024-10-21 22:27 ` [PATCH 06/13] drm/i915/dmc_wl: Extract intel_dmc_wl_addr_in_range() Gustavo Sousa
                   ` (15 subsequent siblings)
  20 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

We are currently using ARRAY_SIZE() to iterate address ranges in
intel_dmc_wl_check_range(). In upcoming changes, we will be using more
than a single table and will extract the range checking logic into a
dedicated function that takes a range table as argument. As we will not
able to use ARRAY_SIZE() then, let's make range tables contain a
sentinel item at the end and use that instead of having to pass the size
as parameter in this future function.

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dmc_wl.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index 5ed610c9be39..82eb9166e5f8 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -49,6 +49,7 @@ struct intel_dmc_wl_range {
 
 static struct intel_dmc_wl_range lnl_wl_range[] = {
 	{ .start = 0x60000, .end = 0x7ffff },
+	{},
 };
 
 static void __intel_dmc_wl_release(struct intel_display *display)
@@ -99,7 +100,7 @@ static bool intel_dmc_wl_check_range(u32 address)
 	int i;
 	bool wl_needed = false;
 
-	for (i = 0; i < ARRAY_SIZE(lnl_wl_range); i++) {
+	for (i = 0; lnl_wl_range[i].start; i++) {
 		if (address >= lnl_wl_range[i].start &&
 		    address <= lnl_wl_range[i].end) {
 			wl_needed = true;
-- 
2.47.0


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

* [PATCH 06/13] drm/i915/dmc_wl: Extract intel_dmc_wl_addr_in_range()
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (4 preceding siblings ...)
  2024-10-21 22:27 ` [PATCH 05/13] drm/i915/dmc_wl: Use sentinel item for range tables Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-10-21 22:27 ` [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states Gustavo Sousa
                   ` (14 subsequent siblings)
  20 siblings, 0 replies; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

We will be using more than one range table in
intel_dmc_wl_check_range(). As such, move the logic to a new function
and name it intel_dmc_wl_addr_in_range().

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dmc_wl.c | 22 ++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index 82eb9166e5f8..d597cc825f64 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -95,20 +95,20 @@ static void intel_dmc_wl_work(struct work_struct *work)
 	spin_unlock_irqrestore(&wl->lock, flags);
 }
 
-static bool intel_dmc_wl_check_range(u32 address)
+static bool intel_dmc_wl_addr_in_range(u32 address,
+				       const struct intel_dmc_wl_range ranges[])
 {
-	int i;
-	bool wl_needed = false;
-
-	for (i = 0; lnl_wl_range[i].start; i++) {
-		if (address >= lnl_wl_range[i].start &&
-		    address <= lnl_wl_range[i].end) {
-			wl_needed = true;
-			break;
-		}
+	for (int i = 0; ranges[i].start; i++) {
+		if (ranges[i].start <= address && address <= ranges[i].end)
+			return true;
 	}
 
-	return wl_needed;
+	return false;
+}
+
+static bool intel_dmc_wl_check_range(u32 address)
+{
+	return intel_dmc_wl_addr_in_range(address, lnl_wl_range);
 }
 
 static bool __intel_dmc_wl_supported(struct intel_display *display)
-- 
2.47.0


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

* [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (5 preceding siblings ...)
  2024-10-21 22:27 ` [PATCH 06/13] drm/i915/dmc_wl: Extract intel_dmc_wl_addr_in_range() Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-10-22  8:03   ` Jani Nikula
                     ` (3 more replies)
  2024-10-21 22:27 ` [PATCH 08/13] drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables Gustavo Sousa
                   ` (13 subsequent siblings)
  20 siblings, 4 replies; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

There are extra registers that require the DMC wakelock when specific
dynamic DC states are in place. Add the table ranges for them and use
the correct table depending on the allowed DC states.

Bspec: 71583
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dmc_wl.c | 112 +++++++++++++++++++-
 1 file changed, 108 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index d597cc825f64..8bf2f32be859 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -5,6 +5,7 @@
 
 #include <linux/kernel.h>
 
+#include "i915_reg.h"
 #include "intel_de.h"
 #include "intel_dmc.h"
 #include "intel_dmc_regs.h"
@@ -52,6 +53,87 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
 	{},
 };
 
+static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
+	{ .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
+	{ .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
+	{ .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
+	{ .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
+	{ .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
+
+	/* DBUF_CTL_* */
+	{ .start = 0x44300, .end = 0x44300 },
+	{ .start = 0x44304, .end = 0x44304 },
+	{ .start = 0x44f00, .end = 0x44f00 },
+	{ .start = 0x44f04, .end = 0x44f04 },
+	{ .start = 0x44fe8, .end = 0x44fe8 },
+	{ .start = 0x45008, .end = 0x45008 },
+
+	{ .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
+	{ .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
+	{ .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
+
+	/* TRANS_CMTG_CTL_* */
+	{ .start = 0x6fa88, .end = 0x6fa88 },
+	{ .start = 0x6fb88, .end = 0x6fb88 },
+
+	{ .start = 0x46430, .end = 0x46430 }, /* CHICKEN_DCPR_1 */
+	{ .start = 0x46434, .end = 0x46434 }, /* CHICKEN_DCPR_2 */
+	{ .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
+	{ .start = 0x42084, .end = 0x42084 }, /* CHICKEN_MISC_2 */
+	{ .start = 0x42088, .end = 0x42088 }, /* CHICKEN_MISC_3 */
+	{ .start = 0x46160, .end = 0x46160 }, /* CMTG_CLK_SEL */
+	{ .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
+
+	{},
+};
+
+static struct intel_dmc_wl_range xe3lpd_dc3co_wl_ranges[] = {
+	{ .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
+
+	{ .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
+
+	/* DBUF_CTL_* */
+	{ .start = 0x44300, .end = 0x44300 },
+	{ .start = 0x44304, .end = 0x44304 },
+	{ .start = 0x44f00, .end = 0x44f00 },
+	{ .start = 0x44f04, .end = 0x44f04 },
+	{ .start = 0x44fe8, .end = 0x44fe8 },
+	{ .start = 0x45008, .end = 0x45008 },
+
+	{ .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
+	{ .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
+	{ .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
+	{ .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
+
+	/* Scanline registers */
+	{ .start = 0x70000, .end = 0x70000 },
+	{ .start = 0x70004, .end = 0x70004 },
+	{ .start = 0x70014, .end = 0x70014 },
+	{ .start = 0x70018, .end = 0x70018 },
+	{ .start = 0x71000, .end = 0x71000 },
+	{ .start = 0x71004, .end = 0x71004 },
+	{ .start = 0x71014, .end = 0x71014 },
+	{ .start = 0x71018, .end = 0x71018 },
+	{ .start = 0x72000, .end = 0x72000 },
+	{ .start = 0x72004, .end = 0x72004 },
+	{ .start = 0x72014, .end = 0x72014 },
+	{ .start = 0x72018, .end = 0x72018 },
+	{ .start = 0x73000, .end = 0x73000 },
+	{ .start = 0x73004, .end = 0x73004 },
+	{ .start = 0x73014, .end = 0x73014 },
+	{ .start = 0x73018, .end = 0x73018 },
+	{ .start = 0x7b000, .end = 0x7b000 },
+	{ .start = 0x7b004, .end = 0x7b004 },
+	{ .start = 0x7b014, .end = 0x7b014 },
+	{ .start = 0x7b018, .end = 0x7b018 },
+	{ .start = 0x7c000, .end = 0x7c000 },
+	{ .start = 0x7c004, .end = 0x7c004 },
+	{ .start = 0x7c014, .end = 0x7c014 },
+	{ .start = 0x7c018, .end = 0x7c018 },
+
+	{},
+};
+
 static void __intel_dmc_wl_release(struct intel_display *display)
 {
 	struct drm_i915_private *i915 = to_i915(display->drm);
@@ -106,9 +188,31 @@ static bool intel_dmc_wl_addr_in_range(u32 address,
 	return false;
 }
 
-static bool intel_dmc_wl_check_range(u32 address)
+static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
 {
-	return intel_dmc_wl_addr_in_range(address, lnl_wl_range);
+	const struct intel_dmc_wl_range *ranges;
+
+	ranges = lnl_wl_range;
+
+	if (intel_dmc_wl_addr_in_range(address, ranges))
+		return true;
+
+	switch (display->power.domains.dc_state) {
+	case DC_STATE_EN_DC3CO:
+		ranges = xe3lpd_dc3co_wl_ranges;
+		break;
+	case DC_STATE_EN_UPTO_DC5:
+	case DC_STATE_EN_UPTO_DC6:
+		ranges = xe3lpd_dc5_dc6_wl_ranges;
+		break;
+	default:
+		ranges = NULL;
+	}
+
+	if (ranges && intel_dmc_wl_addr_in_range(address, ranges))
+		return true;
+
+	return false;
 }
 
 static bool __intel_dmc_wl_supported(struct intel_display *display)
@@ -195,7 +299,7 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
 	if (!__intel_dmc_wl_supported(display))
 		return;
 
-	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
+	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
 		return;
 
 	spin_lock_irqsave(&wl->lock, flags);
@@ -247,7 +351,7 @@ void intel_dmc_wl_put(struct intel_display *display, i915_reg_t reg)
 	if (!__intel_dmc_wl_supported(display))
 		return;
 
-	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
+	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
 		return;
 
 	spin_lock_irqsave(&wl->lock, flags);
-- 
2.47.0


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

* [PATCH 08/13] drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (6 preceding siblings ...)
  2024-10-21 22:27 ` [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-11-01 12:58   ` Luca Coelho
  2024-10-21 22:27 ` [PATCH 09/13] drm/i915/dmc_wl: Deal with existing references when disabling Gustavo Sousa
                   ` (12 subsequent siblings)
  20 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Allow simpler syntax for defining entries for single registers in range
tables. That makes them easier to type as well as to read, allowing one
to quickly tell whether a range actually refers to a single register or
a "true range".

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dmc_wl.c | 118 ++++++++++----------
 1 file changed, 60 insertions(+), 58 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index 8bf2f32be859..6992ce654e75 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -54,82 +54,82 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
 };
 
 static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
-	{ .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
+	{ .start = 0x45500 }, /* DC_STATE_SEL */
 	{ .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
-	{ .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
+	{ .start = 0x45504 }, /* DC_STATE_EN */
 	{ .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
-	{ .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
+	{ .start = 0x454f0 }, /* RETENTION_CTRL */
 
 	/* DBUF_CTL_* */
-	{ .start = 0x44300, .end = 0x44300 },
-	{ .start = 0x44304, .end = 0x44304 },
-	{ .start = 0x44f00, .end = 0x44f00 },
-	{ .start = 0x44f04, .end = 0x44f04 },
-	{ .start = 0x44fe8, .end = 0x44fe8 },
-	{ .start = 0x45008, .end = 0x45008 },
+	{ .start = 0x44300 },
+	{ .start = 0x44304 },
+	{ .start = 0x44f00 },
+	{ .start = 0x44f04 },
+	{ .start = 0x44fe8 },
+	{ .start = 0x45008 },
 
-	{ .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
-	{ .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
-	{ .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
+	{ .start = 0x46070 }, /* CDCLK_PLL_ENABLE */
+	{ .start = 0x46000 }, /* CDCLK_CTL */
+	{ .start = 0x46008 }, /* CDCLK_SQUASH_CTL */
 
 	/* TRANS_CMTG_CTL_* */
-	{ .start = 0x6fa88, .end = 0x6fa88 },
-	{ .start = 0x6fb88, .end = 0x6fb88 },
-
-	{ .start = 0x46430, .end = 0x46430 }, /* CHICKEN_DCPR_1 */
-	{ .start = 0x46434, .end = 0x46434 }, /* CHICKEN_DCPR_2 */
-	{ .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
-	{ .start = 0x42084, .end = 0x42084 }, /* CHICKEN_MISC_2 */
-	{ .start = 0x42088, .end = 0x42088 }, /* CHICKEN_MISC_3 */
-	{ .start = 0x46160, .end = 0x46160 }, /* CMTG_CLK_SEL */
+	{ .start = 0x6fa88 },
+	{ .start = 0x6fb88 },
+
+	{ .start = 0x46430 }, /* CHICKEN_DCPR_1 */
+	{ .start = 0x46434 }, /* CHICKEN_DCPR_2 */
+	{ .start = 0x454a0 }, /* CHICKEN_DCPR_4 */
+	{ .start = 0x42084 }, /* CHICKEN_MISC_2 */
+	{ .start = 0x42088 }, /* CHICKEN_MISC_3 */
+	{ .start = 0x46160 }, /* CMTG_CLK_SEL */
 	{ .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
 
 	{},
 };
 
 static struct intel_dmc_wl_range xe3lpd_dc3co_wl_ranges[] = {
-	{ .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
+	{ .start = 0x454a0 }, /* CHICKEN_DCPR_4 */
 
-	{ .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
+	{ .start = 0x45504 }, /* DC_STATE_EN */
 
 	/* DBUF_CTL_* */
-	{ .start = 0x44300, .end = 0x44300 },
-	{ .start = 0x44304, .end = 0x44304 },
-	{ .start = 0x44f00, .end = 0x44f00 },
-	{ .start = 0x44f04, .end = 0x44f04 },
-	{ .start = 0x44fe8, .end = 0x44fe8 },
-	{ .start = 0x45008, .end = 0x45008 },
-
-	{ .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
-	{ .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
-	{ .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
+	{ .start = 0x44300 },
+	{ .start = 0x44304 },
+	{ .start = 0x44f00 },
+	{ .start = 0x44f04 },
+	{ .start = 0x44fe8 },
+	{ .start = 0x45008 },
+
+	{ .start = 0x46070 }, /* CDCLK_PLL_ENABLE */
+	{ .start = 0x46000 }, /* CDCLK_CTL */
+	{ .start = 0x46008 }, /* CDCLK_SQUASH_CTL */
 	{ .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
 
 	/* Scanline registers */
-	{ .start = 0x70000, .end = 0x70000 },
-	{ .start = 0x70004, .end = 0x70004 },
-	{ .start = 0x70014, .end = 0x70014 },
-	{ .start = 0x70018, .end = 0x70018 },
-	{ .start = 0x71000, .end = 0x71000 },
-	{ .start = 0x71004, .end = 0x71004 },
-	{ .start = 0x71014, .end = 0x71014 },
-	{ .start = 0x71018, .end = 0x71018 },
-	{ .start = 0x72000, .end = 0x72000 },
-	{ .start = 0x72004, .end = 0x72004 },
-	{ .start = 0x72014, .end = 0x72014 },
-	{ .start = 0x72018, .end = 0x72018 },
-	{ .start = 0x73000, .end = 0x73000 },
-	{ .start = 0x73004, .end = 0x73004 },
-	{ .start = 0x73014, .end = 0x73014 },
-	{ .start = 0x73018, .end = 0x73018 },
-	{ .start = 0x7b000, .end = 0x7b000 },
-	{ .start = 0x7b004, .end = 0x7b004 },
-	{ .start = 0x7b014, .end = 0x7b014 },
-	{ .start = 0x7b018, .end = 0x7b018 },
-	{ .start = 0x7c000, .end = 0x7c000 },
-	{ .start = 0x7c004, .end = 0x7c004 },
-	{ .start = 0x7c014, .end = 0x7c014 },
-	{ .start = 0x7c018, .end = 0x7c018 },
+	{ .start = 0x70000 },
+	{ .start = 0x70004 },
+	{ .start = 0x70014 },
+	{ .start = 0x70018 },
+	{ .start = 0x71000 },
+	{ .start = 0x71004 },
+	{ .start = 0x71014 },
+	{ .start = 0x71018 },
+	{ .start = 0x72000 },
+	{ .start = 0x72004 },
+	{ .start = 0x72014 },
+	{ .start = 0x72018 },
+	{ .start = 0x73000 },
+	{ .start = 0x73004 },
+	{ .start = 0x73014 },
+	{ .start = 0x73018 },
+	{ .start = 0x7b000 },
+	{ .start = 0x7b004 },
+	{ .start = 0x7b014 },
+	{ .start = 0x7b018 },
+	{ .start = 0x7c000 },
+	{ .start = 0x7c004 },
+	{ .start = 0x7c014 },
+	{ .start = 0x7c018 },
 
 	{},
 };
@@ -181,7 +181,9 @@ static bool intel_dmc_wl_addr_in_range(u32 address,
 				       const struct intel_dmc_wl_range ranges[])
 {
 	for (int i = 0; ranges[i].start; i++) {
-		if (ranges[i].start <= address && address <= ranges[i].end)
+		u32 end = ranges[i].end ?: ranges[i].start;
+
+		if (ranges[i].start <= address && address <= end)
 			return true;
 	}
 
-- 
2.47.0


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

* [PATCH 09/13] drm/i915/dmc_wl: Deal with existing references when disabling
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (7 preceding siblings ...)
  2024-10-21 22:27 ` [PATCH 08/13] drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-11-01 14:17   ` Luca Coelho
  2024-10-21 22:27 ` [PATCH 10/13] drm/i915/dmc_wl: Couple enable/disable with dynamic DC states Gustavo Sousa
                   ` (11 subsequent siblings)
  20 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

It is possible that there are active wakelock references at the time we
are disabling the DMC wakelock mechanism. We need to deal with that in
two ways:

(A) Implement the missing step from Bspec:

    The Bspec instructs us to clear any existing wakelock request bit
    after disabling the mechanism. That gives a clue that it is okay to
    disable while there are locks held and we do not need to wait for
    them. However, since the spec is not explicit about it, we need
    still to get confirmation with the hardware team. Let's thus
    implement the spec and add a TODO note.

(B) Ensure a consistent driver state:

    The enable/disable logic would be problematic if the following
    sequence of events would happen:

    1. Function A calls intel_dmc_wl_get();
    2. Some function calls intel_dmc_wl_disable();
    3. Some function calls intel_dmc_wl_enable();
    4. Function A is done and calls intel_dmc_wl_put().

    At (2), the refcount becomes zero and then (4) causes an invalid
    decrement to the refcount. That would cause some issues:

        - At the time between (3) and (4), function A would think that
          the hardware lock is held but it could not be really held
          until intel_dmc_wl_get() is called by something else.
        - The call made to (4) could cause the refcount to become zero
          and consequently the hardware lock to be released while there
          could be innocent paths trusting they still have the lock.

    To fix that, we need to keep the refcount correctly in sync with
    intel_dmc_wl_{get,put}() calls and retake the hardware lock when
    enabling the DMC wakelock with a non-zero refcount.

    One missing piece left to be handled here is the following scenario:

    1. Function A calls intel_dmc_wl_get();
    2. Some function calls intel_dmc_wl_disable();
    3. Some function calls intel_dmc_wl_enable();
    4. Concurrently with (3), function A performs the MMIO in between
       setting DMC_WAKELOCK_CFG_ENABLE and asserting the lock with
       __intel_dmc_wl_take().

    I'm mostly sure this would cause issues future display IPs if DMC
    trap implementation was completely removed. We need to check with
    the hardware team whether it would be safe to assert the hardware
    lock before setting DMC_WAKELOCK_CFG_ENABLE to avoid this scenario.
    If not, then we would have to deal with that via software
    synchronization.

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dmc_wl.c | 97 ++++++++++++++-------
 1 file changed, 67 insertions(+), 30 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index 6992ce654e75..e27c06b7c42f 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -177,6 +177,37 @@ static void intel_dmc_wl_work(struct work_struct *work)
 	spin_unlock_irqrestore(&wl->lock, flags);
 }
 
+static void __intel_dmc_wl_take(struct intel_display *display)
+{
+	struct intel_dmc_wl *wl = &display->wl;
+
+	/*
+	 * Only try to take the wakelock if it's not marked as taken
+	 * yet.  It may be already taken at this point if we have
+	 * already released the last reference, but the work has not
+	 * run yet.
+	 */
+	if (wl->taken)
+		return;
+
+	__intel_de_rmw_nowl(display, DMC_WAKELOCK1_CTL, 0,
+			    DMC_WAKELOCK_CTL_REQ);
+
+	/*
+	 * We need to use the atomic variant of the waiting routine
+	 * because the DMC wakelock is also taken in atomic context.
+	 */
+	if (__intel_de_wait_for_register_atomic_nowl(display, DMC_WAKELOCK1_CTL,
+						     DMC_WAKELOCK_CTL_ACK,
+						     DMC_WAKELOCK_CTL_ACK,
+						     DMC_WAKELOCK_CTL_TIMEOUT_US)) {
+		WARN_RATELIMIT(1, "DMC wakelock ack timed out");
+		return;
+	}
+
+	wl->taken = true;
+}
+
 static bool intel_dmc_wl_addr_in_range(u32 address,
 				       const struct intel_dmc_wl_range ranges[])
 {
@@ -261,7 +292,23 @@ void intel_dmc_wl_enable(struct intel_display *display)
 	__intel_de_rmw_nowl(display, DMC_WAKELOCK_CFG, 0, DMC_WAKELOCK_CFG_ENABLE);
 
 	wl->enabled = true;
-	wl->taken = false;
+
+	/*
+	 * This would be racy in the following scenario:
+	 *
+	 *   1. Function A calls intel_dmc_wl_get();
+	 *   2. Some function calls intel_dmc_wl_disable();
+	 *   3. Some function calls intel_dmc_wl_enable();
+	 *   4. Concurrently with (3), function A performs the MMIO in between
+	 *      setting DMC_WAKELOCK_CFG_ENABLE and asserting the lock with
+	 *      __intel_dmc_wl_take().
+	 *
+	 * TODO: Check with the hardware team whether it is safe to assert the
+	 * hardware lock before enabling to avoid such a scenario. Otherwise, we
+	 * would need to deal with it via software synchronization.
+	 */
+	if (refcount_read(&wl->refcount))
+		__intel_dmc_wl_take(display);
 
 out_unlock:
 	spin_unlock_irqrestore(&wl->lock, flags);
@@ -285,8 +332,18 @@ void intel_dmc_wl_disable(struct intel_display *display)
 	/* Disable wakelock in DMC */
 	__intel_de_rmw_nowl(display, DMC_WAKELOCK_CFG, DMC_WAKELOCK_CFG_ENABLE, 0);
 
-	refcount_set(&wl->refcount, 0);
 	wl->enabled = false;
+
+	/*
+	 * The spec is not explicit about the expectation of existing
+	 * lock users at the moment of disabling, but it does say that we must
+	 * clear DMC_WAKELOCK_CTL_REQ, which gives us a clue that it is okay to
+	 * disable with existing lock users.
+	 *
+	 * TODO: Get the correct expectation from the hardware team.
+	 */
+	__intel_de_rmw_nowl(display, DMC_WAKELOCK1_CTL, DMC_WAKELOCK_CTL_REQ, 0);
+
 	wl->taken = false;
 
 out_unlock:
@@ -306,8 +363,11 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
 
 	spin_lock_irqsave(&wl->lock, flags);
 
-	if (!wl->enabled)
+	if (!wl->enabled) {
+		if (!refcount_inc_not_zero(&wl->refcount))
+			refcount_set(&wl->refcount, 1);
 		goto out_unlock;
+	}
 
 	cancel_delayed_work(&wl->work);
 
@@ -316,30 +376,7 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
 
 	refcount_set(&wl->refcount, 1);
 
-	/*
-	 * Only try to take the wakelock if it's not marked as taken
-	 * yet.  It may be already taken at this point if we have
-	 * already released the last reference, but the work has not
-	 * run yet.
-	 */
-	if (!wl->taken) {
-		__intel_de_rmw_nowl(display, DMC_WAKELOCK1_CTL, 0,
-				    DMC_WAKELOCK_CTL_REQ);
-
-		/*
-		 * We need to use the atomic variant of the waiting routine
-		 * because the DMC wakelock is also taken in atomic context.
-		 */
-		if (__intel_de_wait_for_register_atomic_nowl(display, DMC_WAKELOCK1_CTL,
-							     DMC_WAKELOCK_CTL_ACK,
-							     DMC_WAKELOCK_CTL_ACK,
-							     DMC_WAKELOCK_CTL_TIMEOUT_US)) {
-			WARN_RATELIMIT(1, "DMC wakelock ack timed out");
-			goto out_unlock;
-		}
-
-		wl->taken = true;
-	}
+	__intel_dmc_wl_take(display);
 
 out_unlock:
 	spin_unlock_irqrestore(&wl->lock, flags);
@@ -358,14 +395,14 @@ void intel_dmc_wl_put(struct intel_display *display, i915_reg_t reg)
 
 	spin_lock_irqsave(&wl->lock, flags);
 
-	if (!wl->enabled)
-		goto out_unlock;
-
 	if (WARN_RATELIMIT(!refcount_read(&wl->refcount),
 			   "Tried to put wakelock with refcount zero\n"))
 		goto out_unlock;
 
 	if (refcount_dec_and_test(&wl->refcount)) {
+		if (!wl->enabled)
+			goto out_unlock;
+
 		__intel_dmc_wl_release(display);
 
 		goto out_unlock;
-- 
2.47.0


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

* [PATCH 10/13] drm/i915/dmc_wl: Couple enable/disable with dynamic DC states
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (8 preceding siblings ...)
  2024-10-21 22:27 ` [PATCH 09/13] drm/i915/dmc_wl: Deal with existing references when disabling Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-11-01 14:19   ` Luca Coelho
  2024-10-21 22:27 ` [PATCH 11/13] drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK() Gustavo Sousa
                   ` (10 subsequent siblings)
  20 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Enabling and disabling the DMC wakelock should be done as part of
enabling and disabling of dynamic DC states, respectively. We should not
enable or disable DMC wakelock independently of DC states, otherwise we
would risk ending up with an inconsistent state where dynamic DC states
are enabled and the DMC wakelock is disabled, going against current
recommendations and making MMIO transactions potentially slower. In
future display IPs that could have a worse outcome if DMC trap
implementation is completely removed.

So, let's make things safer by tying stuff together, removing the
independent calls, and also put warnings in place to detect inconsistent
calls.

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_power_well.c | 5 ++++-
 drivers/gpu/drm/i915/display/intel_dmc.c                | 4 ----
 drivers/gpu/drm/i915/display/intel_dmc_wl.c             | 6 ++++--
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_power_well.c b/drivers/gpu/drm/i915/display/intel_display_power_well.c
index e8946ce86aaa..1a6c93170a5a 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power_well.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power_well.c
@@ -981,6 +981,7 @@ void gen9_disable_dc_states(struct intel_display *display)
 	struct drm_i915_private *dev_priv = to_i915(display->drm);
 	struct i915_power_domains *power_domains = &display->power.domains;
 	struct intel_cdclk_config cdclk_config = {};
+	u32 old_state = power_domains->dc_state;
 
 	if (power_domains->target_dc_state == DC_STATE_EN_DC3CO) {
 		tgl_disable_dc3co(display);
@@ -996,7 +997,9 @@ void gen9_disable_dc_states(struct intel_display *display)
 		return;
 	}
 
-	intel_dmc_wl_disable(display);
+	if (old_state == DC_STATE_EN_UPTO_DC5 ||
+	    old_state == DC_STATE_EN_UPTO_DC6)
+		intel_dmc_wl_disable(display);
 
 	intel_cdclk_get_cdclk(display, &cdclk_config);
 	/* Can't read out voltage_level so can't use intel_cdclk_changed() */
diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
index 48bbbf8f312c..f0b12c609884 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc.c
@@ -632,8 +632,6 @@ void intel_dmc_disable_program(struct intel_display *display)
 	pipedmc_clock_gating_wa(display, true);
 	disable_all_event_handlers(display);
 	pipedmc_clock_gating_wa(display, false);
-
-	intel_dmc_wl_disable(display);
 }
 
 void assert_dmc_loaded(struct intel_display *display)
@@ -1140,8 +1138,6 @@ void intel_dmc_suspend(struct intel_display *display)
 	if (dmc)
 		flush_work(&dmc->work);
 
-	intel_dmc_wl_disable(display);
-
 	/* Drop the reference held in case DMC isn't loaded. */
 	if (!intel_dmc_has_payload(display))
 		intel_dmc_runtime_pm_put(display);
diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index e27c06b7c42f..8283b607aac4 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -271,6 +271,7 @@ void intel_dmc_wl_init(struct intel_display *display)
 	refcount_set(&wl->refcount, 0);
 }
 
+/* Must only be called as part of enabling dynamic DC states. */
 void intel_dmc_wl_enable(struct intel_display *display)
 {
 	struct intel_dmc_wl *wl = &display->wl;
@@ -281,7 +282,7 @@ void intel_dmc_wl_enable(struct intel_display *display)
 
 	spin_lock_irqsave(&wl->lock, flags);
 
-	if (wl->enabled)
+	if (drm_WARN_ON(display->drm, wl->enabled))
 		goto out_unlock;
 
 	/*
@@ -314,6 +315,7 @@ void intel_dmc_wl_enable(struct intel_display *display)
 	spin_unlock_irqrestore(&wl->lock, flags);
 }
 
+/* Must only be called as part of disabling dynamic DC states. */
 void intel_dmc_wl_disable(struct intel_display *display)
 {
 	struct intel_dmc_wl *wl = &display->wl;
@@ -326,7 +328,7 @@ void intel_dmc_wl_disable(struct intel_display *display)
 
 	spin_lock_irqsave(&wl->lock, flags);
 
-	if (!wl->enabled)
+	if (drm_WARN_ON(display->drm, !wl->enabled))
 		goto out_unlock;
 
 	/* Disable wakelock in DMC */
-- 
2.47.0


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

* [PATCH 11/13] drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK()
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (9 preceding siblings ...)
  2024-10-21 22:27 ` [PATCH 10/13] drm/i915/dmc_wl: Couple enable/disable with dynamic DC states Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-10-22  9:37   ` Jani Nikula
  2024-10-21 22:27 ` [PATCH 12/13] drm/i915/dmc_wl: Sanitize enable_dmc_wl according to hardware support Gustavo Sousa
                   ` (9 subsequent siblings)
  20 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

In order to be able to use the DMC wakelock, we also need to know that
the display hardware has support for DMC, which is a runtime info.
Define HAS_DMC_WAKELOCK(), which checks for both DMC availability and IP
version, and use it in place of directly checking the display version.

Since we depend on runtime info, also make sure to call
intel_dmc_wl_init() only after we have probed the hardware for such info
(i.e. after intel_display_device_info_runtime_init()).

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
 drivers/gpu/drm/i915/display/intel_display_driver.c | 2 +-
 drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 4 ++--
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
index 071a36b51f79..5f78fd127fe0 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.h
+++ b/drivers/gpu/drm/i915/display/intel_display_device.h
@@ -128,6 +128,7 @@ enum intel_display_subplatform {
 #define HAS_DDI(i915)			(DISPLAY_INFO(i915)->has_ddi)
 #define HAS_DISPLAY(i915)		(DISPLAY_RUNTIME_INFO(i915)->pipe_mask != 0)
 #define HAS_DMC(i915)			(DISPLAY_RUNTIME_INFO(i915)->has_dmc)
+#define HAS_DMC_WAKELOCK(i915)		(HAS_DMC(i915) && DISPLAY_VER(i915) >= 20)
 #define HAS_DOUBLE_BUFFERED_M_N(i915)	(DISPLAY_VER(i915) >= 9 || IS_BROADWELL(i915))
 #define HAS_DP_MST(i915)		(DISPLAY_INFO(i915)->has_dp_mst)
 #define HAS_DP20(i915)			(IS_DG2(i915) || DISPLAY_VER(i915) >= 14)
diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
index 673f9b965494..8afaa9cb89d2 100644
--- a/drivers/gpu/drm/i915/display/intel_display_driver.c
+++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
@@ -200,7 +200,6 @@ void intel_display_driver_early_probe(struct drm_i915_private *i915)
 	intel_dpll_init_clock_hook(i915);
 	intel_init_display_hooks(i915);
 	intel_fdi_init_hook(i915);
-	intel_dmc_wl_init(&i915->display);
 }
 
 /* part #1: call before irq install */
@@ -238,6 +237,7 @@ int intel_display_driver_probe_noirq(struct drm_i915_private *i915)
 		return 0;
 
 	intel_dmc_init(display);
+	intel_dmc_wl_init(display);
 
 	i915->display.wq.modeset = alloc_ordered_workqueue("i915_modeset", 0);
 	i915->display.wq.flip = alloc_workqueue("i915_flip", WQ_HIGHPRI |
diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index 8283b607aac4..f6ec79b0e39d 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -250,7 +250,7 @@ static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
 
 static bool __intel_dmc_wl_supported(struct intel_display *display)
 {
-	if (DISPLAY_VER(display) < 20 ||
+	if (!HAS_DMC_WAKELOCK(display) ||
 	    !intel_dmc_has_payload(display) ||
 	    !display->params.enable_dmc_wl)
 		return false;
@@ -263,7 +263,7 @@ void intel_dmc_wl_init(struct intel_display *display)
 	struct intel_dmc_wl *wl = &display->wl;
 
 	/* don't call __intel_dmc_wl_supported(), DMC is not loaded yet */
-	if (DISPLAY_VER(display) < 20 || !display->params.enable_dmc_wl)
+	if (!HAS_DMC_WAKELOCK(display) || !display->params.enable_dmc_wl)
 		return;
 
 	INIT_DELAYED_WORK(&wl->work, intel_dmc_wl_work);
-- 
2.47.0


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

* [PATCH 12/13] drm/i915/dmc_wl: Sanitize enable_dmc_wl according to hardware support
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (10 preceding siblings ...)
  2024-10-21 22:27 ` [PATCH 11/13] drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK() Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-11-01 14:25   ` Luca Coelho
  2024-10-21 22:27 ` [PATCH 13/13] drm/i915/xe3lpd: Use DMC wakelock by default Gustavo Sousa
                   ` (8 subsequent siblings)
  20 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Instead of checking for HAS_DMC_WAKELOCK() multiple times, let's use it
to sanitize the enable_dmc_wl parameter and use that variable when
necessary.

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dmc_wl.c | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index f6ec79b0e39d..55f07f3c9863 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -5,6 +5,8 @@
 
 #include <linux/kernel.h>
 
+#include <drm/drm_print.h>
+
 #include "i915_reg.h"
 #include "intel_de.h"
 #include "intel_dmc.h"
@@ -250,20 +252,25 @@ static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
 
 static bool __intel_dmc_wl_supported(struct intel_display *display)
 {
-	if (!HAS_DMC_WAKELOCK(display) ||
-	    !intel_dmc_has_payload(display) ||
-	    !display->params.enable_dmc_wl)
-		return false;
+	return display->params.enable_dmc_wl && intel_dmc_has_payload(display);
+}
 
-	return true;
+static void intel_dmc_wl_sanitize_param(struct intel_display *display)
+{
+	if (!HAS_DMC_WAKELOCK(display))
+		display->params.enable_dmc_wl = false;
+
+	drm_dbg_kms(display->drm, "Sanitized enable_dmc_wl value: %d\n",
+		    display->params.enable_dmc_wl);
 }
 
 void intel_dmc_wl_init(struct intel_display *display)
 {
 	struct intel_dmc_wl *wl = &display->wl;
 
-	/* don't call __intel_dmc_wl_supported(), DMC is not loaded yet */
-	if (!HAS_DMC_WAKELOCK(display) || !display->params.enable_dmc_wl)
+	intel_dmc_wl_sanitize_param(display);
+
+	if (!display->params.enable_dmc_wl)
 		return;
 
 	INIT_DELAYED_WORK(&wl->work, intel_dmc_wl_work);
-- 
2.47.0


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

* [PATCH 13/13] drm/i915/xe3lpd: Use DMC wakelock by default
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (11 preceding siblings ...)
  2024-10-21 22:27 ` [PATCH 12/13] drm/i915/dmc_wl: Sanitize enable_dmc_wl according to hardware support Gustavo Sousa
@ 2024-10-21 22:27 ` Gustavo Sousa
  2024-11-01 14:27   ` Luca Coelho
  2024-10-21 23:47 ` ✓ CI.Patch_applied: success for drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Patchwork
                   ` (7 subsequent siblings)
  20 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-21 22:27 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Although Bspec doesn't explicitly mentions that, as of Xe3_LPD, using
DMC wakelock is the officially recommended way of accessing registers
that would be off during DC5/DC6 and the legacy method (where the DMC
intercepts MMIO to wake up the hardware) is to be avoided.

As such, update the driver to use the DMC wakelock by default starting
with Xe3_LPD. Since the feature is somewhat new to the driver, also
allow disabling it via a module parameter for debugging purposes.

For that, make the existing parameter allow values -1 (per-chip
default), 0 (disabled) and 1 (enabled), similarly to what is done for
other parameters.

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_params.c | 4 ++--
 drivers/gpu/drm/i915/display/intel_display_params.h | 2 +-
 drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 6 +++++-
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
index 024de8abcb1a..bf00e5f1f145 100644
--- a/drivers/gpu/drm/i915/display/intel_display_params.c
+++ b/drivers/gpu/drm/i915/display/intel_display_params.c
@@ -123,10 +123,10 @@ intel_display_param_named_unsafe(enable_psr2_sel_fetch, bool, 0400,
 	"(0=disabled, 1=enabled) "
 	"Default: 1");
 
-intel_display_param_named_unsafe(enable_dmc_wl, bool, 0400,
+intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
 	"Enable DMC wakelock "
 	"(0=disabled, 1=enabled) "
-	"Default: 0");
+	"Default: -1 (use per-chip default)");
 
 __maybe_unused
 static void _param_print_bool(struct drm_printer *p, const char *driver_name,
diff --git a/drivers/gpu/drm/i915/display/intel_display_params.h b/drivers/gpu/drm/i915/display/intel_display_params.h
index dcb6face936a..5317138e6044 100644
--- a/drivers/gpu/drm/i915/display/intel_display_params.h
+++ b/drivers/gpu/drm/i915/display/intel_display_params.h
@@ -47,7 +47,7 @@ struct drm_printer;
 	param(int, enable_psr, -1, 0600) \
 	param(bool, psr_safest_params, false, 0400) \
 	param(bool, enable_psr2_sel_fetch, true, 0400) \
-	param(bool, enable_dmc_wl, false, 0400) \
+	param(int, enable_dmc_wl, -1, 0400) \
 
 #define MEMBER(T, member, ...) T member;
 struct intel_display_params {
diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
index 55f07f3c9863..f58031811e79 100644
--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
@@ -258,7 +258,11 @@ static bool __intel_dmc_wl_supported(struct intel_display *display)
 static void intel_dmc_wl_sanitize_param(struct intel_display *display)
 {
 	if (!HAS_DMC_WAKELOCK(display))
-		display->params.enable_dmc_wl = false;
+		display->params.enable_dmc_wl = 0;
+	else if (display->params.enable_dmc_wl >= 0)
+		display->params.enable_dmc_wl = !!display->params.enable_dmc_wl;
+	else
+		display->params.enable_dmc_wl = DISPLAY_VER(display) >= 30;
 
 	drm_dbg_kms(display->drm, "Sanitized enable_dmc_wl value: %d\n",
 		    display->params.enable_dmc_wl);
-- 
2.47.0


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

* ✓ CI.Patch_applied: success for drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (12 preceding siblings ...)
  2024-10-21 22:27 ` [PATCH 13/13] drm/i915/xe3lpd: Use DMC wakelock by default Gustavo Sousa
@ 2024-10-21 23:47 ` Patchwork
  2024-10-21 23:48 ` ✗ CI.checkpatch: warning " Patchwork
                   ` (6 subsequent siblings)
  20 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-10-21 23:47 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-xe

== Series Details ==

Series: drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
URL   : https://patchwork.freedesktop.org/series/140283/
State : success

== Summary ==

=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: aa0898115bcf drm-tip: 2024y-10m-21d-17h-57m-13s UTC integration manifest
=== git am output follows ===
Applying: drm/xe: Mimic i915 behavior for non-sleeping MMIO wait
Applying: drm/i915/dmc_wl: Use non-sleeping variant of MMIO wait
Applying: drm/i915/dmc_wl: Check for non-zero refcount in release work
Applying: drm/i915/dmc_wl: Get wakelock when disabling dynamic DC states
Applying: drm/i915/dmc_wl: Use sentinel item for range tables
Applying: drm/i915/dmc_wl: Extract intel_dmc_wl_addr_in_range()
Applying: drm/i915/dmc_wl: Check ranges specific to DC states
Applying: drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables
Applying: drm/i915/dmc_wl: Deal with existing references when disabling
Applying: drm/i915/dmc_wl: Couple enable/disable with dynamic DC states
Applying: drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK()
Applying: drm/i915/dmc_wl: Sanitize enable_dmc_wl according to hardware support
Applying: drm/i915/xe3lpd: Use DMC wakelock by default



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

* ✗ CI.checkpatch: warning for drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (13 preceding siblings ...)
  2024-10-21 23:47 ` ✓ CI.Patch_applied: success for drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Patchwork
@ 2024-10-21 23:48 ` Patchwork
  2024-10-21 23:49 ` ✓ CI.KUnit: success " Patchwork
                   ` (5 subsequent siblings)
  20 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-10-21 23:48 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-xe

== Series Details ==

Series: drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
URL   : https://patchwork.freedesktop.org/series/140283/
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
30ab6715fc09baee6cc14cb3c89ad8858688d474
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 95256bd463f37a1cace127866a5a922245670607
Author: Gustavo Sousa <gustavo.sousa@intel.com>
Date:   Mon Oct 21 19:27:32 2024 -0300

    drm/i915/xe3lpd: Use DMC wakelock by default
    
    Although Bspec doesn't explicitly mentions that, as of Xe3_LPD, using
    DMC wakelock is the officially recommended way of accessing registers
    that would be off during DC5/DC6 and the legacy method (where the DMC
    intercepts MMIO to wake up the hardware) is to be avoided.
    
    As such, update the driver to use the DMC wakelock by default starting
    with Xe3_LPD. Since the feature is somewhat new to the driver, also
    allow disabling it via a module parameter for debugging purposes.
    
    For that, make the existing parameter allow values -1 (per-chip
    default), 0 (disabled) and 1 (enabled), similarly to what is done for
    other parameters.
    
    Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
+ /mt/dim checkpatch aa0898115bcff3eda6d021cc66eb8a1c3b264c56 drm-intel
5d8105c4c9ce drm/xe: Mimic i915 behavior for non-sleeping MMIO wait
dc64a19a5c2a drm/i915/dmc_wl: Use non-sleeping variant of MMIO wait
-:33: WARNING:LONG_LINE: line length of 134 exceeds 100 columns
#33: FILE: drivers/gpu/drm/i915/display/intel_de.h:133:
+#define __intel_de_wait_for_register_atomic_nowl(p,...) ____intel_de_wait_for_register_atomic_nowl(__to_intel_display(p), __VA_ARGS__)

-:33: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#33: FILE: drivers/gpu/drm/i915/display/intel_de.h:133:
+}
+#define __intel_de_wait_for_register_atomic_nowl(p,...) ____intel_de_wait_for_register_atomic_nowl(__to_intel_display(p), __VA_ARGS__)

-:33: ERROR:SPACING: space required after that ',' (ctx:VxV)
#33: FILE: drivers/gpu/drm/i915/display/intel_de.h:133:
+#define __intel_de_wait_for_register_atomic_nowl(p,...) ____intel_de_wait_for_register_atomic_nowl(__to_intel_display(p), __VA_ARGS__)
                                                   ^

total: 1 errors, 1 warnings, 1 checks, 55 lines checked
31ccaf36002f drm/i915/dmc_wl: Check for non-zero refcount in release work
f947ac2e799a drm/i915/dmc_wl: Get wakelock when disabling dynamic DC states
d4488bbbc81b drm/i915/dmc_wl: Use sentinel item for range tables
ae3c9b3c0115 drm/i915/dmc_wl: Extract intel_dmc_wl_addr_in_range()
b083f4d16ada drm/i915/dmc_wl: Check ranges specific to DC states
118c8a479335 drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables
ef2c4c703b24 drm/i915/dmc_wl: Deal with existing references when disabling
320cd4901765 drm/i915/dmc_wl: Couple enable/disable with dynamic DC states
49d30d6585f5 drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK()
-:25: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'i915' - possible side-effects?
#25: FILE: drivers/gpu/drm/i915/display/intel_display_device.h:131:
+#define HAS_DMC_WAKELOCK(i915)		(HAS_DMC(i915) && DISPLAY_VER(i915) >= 20)

total: 0 errors, 0 warnings, 1 checks, 37 lines checked
414e7db171e6 drm/i915/dmc_wl: Sanitize enable_dmc_wl according to hardware support
95256bd463f3 drm/i915/xe3lpd: Use DMC wakelock by default
-:31: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#31: FILE: drivers/gpu/drm/i915/display/intel_display_params.c:127:
+intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
 	"Enable DMC wakelock "

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



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

* ✓ CI.KUnit: success for drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (14 preceding siblings ...)
  2024-10-21 23:48 ` ✗ CI.checkpatch: warning " Patchwork
@ 2024-10-21 23:49 ` Patchwork
  2024-10-22  0:01 ` ✓ CI.Build: " Patchwork
                   ` (4 subsequent siblings)
  20 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-10-21 23:49 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-xe

== Series Details ==

Series: drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
URL   : https://patchwork.freedesktop.org/series/140283/
State : success

== Summary ==

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

[23:48:53] Starting KUnit Kernel (1/1)...
[23:48:53] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[23:48:53] =================== guc_dbm (7 subtests) ===================
[23:48:53] [PASSED] test_empty
[23:48:53] [PASSED] test_default
[23:48:53] ======================== test_size  ========================
[23:48:53] [PASSED] 4
[23:48:53] [PASSED] 8
[23:48:53] [PASSED] 32
[23:48:53] [PASSED] 256
[23:48:53] ==================== [PASSED] test_size ====================
[23:48:53] ======================= test_reuse  ========================
[23:48:53] [PASSED] 4
[23:48:53] [PASSED] 8
[23:48:53] [PASSED] 32
[23:48:53] [PASSED] 256
[23:48:53] =================== [PASSED] test_reuse ====================
[23:48:53] =================== test_range_overlap  ====================
[23:48:53] [PASSED] 4
[23:48:53] [PASSED] 8
[23:48:53] [PASSED] 32
[23:48:53] [PASSED] 256
[23:48:53] =============== [PASSED] test_range_overlap ================
[23:48:53] =================== test_range_compact  ====================
[23:48:53] [PASSED] 4
[23:48:53] [PASSED] 8
[23:48:53] [PASSED] 32
[23:48:53] [PASSED] 256
[23:48:53] =============== [PASSED] test_range_compact ================
[23:48:53] ==================== test_range_spare  =====================
[23:48:53] [PASSED] 4
[23:48:53] [PASSED] 8
[23:48:53] [PASSED] 32
[23:48:53] [PASSED] 256
[23:48:53] ================ [PASSED] test_range_spare =================
[23:48:53] ===================== [PASSED] guc_dbm =====================
[23:48:53] =================== guc_idm (6 subtests) ===================
[23:48:53] [PASSED] bad_init
[23:48:53] [PASSED] no_init
[23:48:53] [PASSED] init_fini
[23:48:53] [PASSED] check_used
[23:48:53] [PASSED] check_quota
[23:48:53] [PASSED] check_all
[23:48:53] ===================== [PASSED] guc_idm =====================
[23:48:53] ================== no_relay (3 subtests) ===================
[23:48:53] [PASSED] xe_drops_guc2pf_if_not_ready
[23:48:53] [PASSED] xe_drops_guc2vf_if_not_ready
[23:48:53] [PASSED] xe_rejects_send_if_not_ready
[23:48:53] ==================== [PASSED] no_relay =====================
[23:48:53] ================== pf_relay (14 subtests) ==================
[23:48:53] [PASSED] pf_rejects_guc2pf_too_short
[23:48:53] [PASSED] pf_rejects_guc2pf_too_long
[23:48:53] [PASSED] pf_rejects_guc2pf_no_payload
[23:48:53] [PASSED] pf_fails_no_payload
[23:48:53] [PASSED] pf_fails_bad_origin
[23:48:53] [PASSED] pf_fails_bad_type
[23:48:53] [PASSED] pf_txn_reports_error
[23:48:53] [PASSED] pf_txn_sends_pf2guc
[23:48:53] [PASSED] pf_sends_pf2guc
[23:48:53] [SKIPPED] pf_loopback_nop
[23:48:53] [SKIPPED] pf_loopback_echo
[23:48:53] [SKIPPED] pf_loopback_fail
[23:48:53] [SKIPPED] pf_loopback_busy
[23:48:53] [SKIPPED] pf_loopback_retry
[23:48:53] ==================== [PASSED] pf_relay =====================
[23:48:53] ================== vf_relay (3 subtests) ===================
[23:48:53] [PASSED] vf_rejects_guc2vf_too_short
[23:48:53] [PASSED] vf_rejects_guc2vf_too_long
[23:48:53] [PASSED] vf_rejects_guc2vf_no_payload
[23:48:53] ==================== [PASSED] vf_relay =====================
[23:48:53] ================= pf_service (11 subtests) =================
[23:48:53] [PASSED] pf_negotiate_any
[23:48:53] [PASSED] pf_negotiate_base_match
[23:48:53] [PASSED] pf_negotiate_base_newer
[23:48:53] [PASSED] pf_negotiate_base_next
[23:48:53] [SKIPPED] pf_negotiate_base_older
[23:48:53] [PASSED] pf_negotiate_base_prev
[23:48:53] [PASSED] pf_negotiate_latest_match
[23:48:53] [PASSED] pf_negotiate_latest_newer
[23:48:53] [PASSED] pf_negotiate_latest_next
[23:48:53] [SKIPPED] pf_negotiate_latest_older
[23:48:53] [SKIPPED] pf_negotiate_latest_prev
[23:48:53] =================== [PASSED] pf_service ====================
[23:48:53] ===================== lmtt (1 subtest) =====================
[23:48:53] ======================== test_ops  =========================
[23:48:53] [PASSED] 2-level
[23:48:53] [PASSED] multi-level
[23:48:53] ==================== [PASSED] test_ops =====================
[23:48:53] ====================== [PASSED] lmtt =======================
[23:48:53] =================== xe_mocs (2 subtests) ===================
[23:48:53] ================ xe_live_mocs_kernel_kunit  ================
[23:48:53] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[23:48:53] ================ xe_live_mocs_reset_kunit  =================
[23:48:53] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[23:48:53] ==================== [SKIPPED] xe_mocs =====================
[23:48:53] ================= xe_migrate (2 subtests) ==================
[23:48:53] ================= xe_migrate_sanity_kunit  =================
[23:48:53] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[23:48:53] ================== xe_validate_ccs_kunit  ==================
[23:48:53] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[23:48:53] =================== [SKIPPED] xe_migrate ===================
[23:48:53] ================== xe_dma_buf (1 subtest) ==================
[23:48:53] ==================== xe_dma_buf_kunit  =====================
[23:48:53] ================ [SKIPPED] xe_dma_buf_kunit ================
[23:48:53] =================== [SKIPPED] xe_dma_buf ===================
[23:48:53] ==================== xe_bo (3 subtests) ====================
[23:48:53] ================== xe_ccs_migrate_kunit  ===================
[23:48:53] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[23:48:53] ==================== xe_bo_evict_kunit  ====================
[23:48:53] =============== [SKIPPED] xe_bo_evict_kunit ================
[23:48:53] =================== xe_bo_shrink_kunit  ====================
[23:48:53] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[23:48:53] ===================== [SKIPPED] xe_bo ======================
[23:48:53] ==================== args (11 subtests) ====================
[23:48:53] [PASSED] count_args_test
[23:48:53] [PASSED] call_args_example
[23:48:53] [PASSED] call_args_test
[23:48:53] [PASSED] drop_first_arg_example
[23:48:53] [PASSED] drop_first_arg_test
[23:48:53] [PASSED] first_arg_example
[23:48:53] [PASSED] first_arg_test
[23:48:53] [PASSED] last_arg_example
[23:48:53] [PASSED] last_arg_test
[23:48:53] [PASSED] pick_arg_example
[23:48:53] [PASSED] sep_comma_examplestty: 'standard input': Inappropriate ioctl for device

[23:48:53] ====================== [PASSED] args =======================
[23:48:53] =================== xe_pci (2 subtests) ====================
[23:48:53] [PASSED] xe_gmdid_graphics_ip
[23:48:53] [PASSED] xe_gmdid_media_ip
[23:48:53] ===================== [PASSED] xe_pci ======================
[23:48:53] =================== xe_rtp (2 subtests) ====================
[23:48:53] =============== xe_rtp_process_to_sr_tests  ================
[23:48:53] [PASSED] coalesce-same-reg
[23:48:53] [PASSED] no-match-no-add
[23:48:53] [PASSED] match-or
[23:48:53] [PASSED] match-or-xfail
[23:48:53] [PASSED] no-match-no-add-multiple-rules
[23:48:53] [PASSED] two-regs-two-entries
[23:48:53] [PASSED] clr-one-set-other
[23:48:53] [PASSED] set-field
[23:48:53] [PASSED] conflict-duplicate
[23:48:53] [PASSED] conflict-not-disjoint
[23:48:53] [PASSED] conflict-reg-type
[23:48:53] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[23:48:53] ================== xe_rtp_process_tests  ===================
[23:48:53] [PASSED] active1
[23:48:53] [PASSED] active2
[23:48:53] [PASSED] active-inactive
[23:48:53] [PASSED] inactive-active
[23:48:53] [PASSED] inactive-1st_or_active-inactive
[23:48:53] [PASSED] inactive-2nd_or_active-inactive
[23:48:53] [PASSED] inactive-last_or_active-inactive
[23:48:53] [PASSED] inactive-no_or_active-inactive
[23:48:53] ============== [PASSED] xe_rtp_process_tests ===============
[23:48:53] ===================== [PASSED] xe_rtp ======================
[23:48:53] ==================== xe_wa (1 subtest) =====================
[23:48:53] ======================== xe_wa_gt  =========================
[23:48:53] [PASSED] TIGERLAKE (B0)
[23:48:53] [PASSED] DG1 (A0)
[23:48:53] [PASSED] DG1 (B0)
[23:48:53] [PASSED] ALDERLAKE_S (A0)
[23:48:53] [PASSED] ALDERLAKE_S (B0)
[23:48:53] [PASSED] ALDERLAKE_S (C0)
[23:48:53] [PASSED] ALDERLAKE_S (D0)
[23:48:53] [PASSED] ALDERLAKE_P (A0)
[23:48:53] [PASSED] ALDERLAKE_P (B0)
[23:48:53] [PASSED] ALDERLAKE_P (C0)
[23:48:53] [PASSED] ALDERLAKE_S_RPLS (D0)
[23:48:53] [PASSED] ALDERLAKE_P_RPLU (E0)
[23:48:53] [PASSED] DG2_G10 (C0)
[23:48:53] [PASSED] DG2_G11 (B1)
[23:48:53] [PASSED] DG2_G12 (A1)
[23:48:53] [PASSED] METEORLAKE (g:A0, m:A0)
[23:48:53] [PASSED] METEORLAKE (g:A0, m:A0)
[23:48:53] [PASSED] METEORLAKE (g:A0, m:A0)
[23:48:53] [PASSED] LUNARLAKE (g:A0, m:A0)
[23:48:53] [PASSED] LUNARLAKE (g:B0, m:A0)
[23:48:53] [PASSED] BATTLEMAGE (g:A0, m:A1)
[23:48:53] ==================== [PASSED] xe_wa_gt =====================
[23:48:53] ====================== [PASSED] xe_wa ======================
[23:48:53] ============================================================
[23:48:53] Testing complete. Ran 122 tests: passed: 106, skipped: 16
[23:48:53] Elapsed time: 32.768s total, 4.490s configuring, 28.061s building, 0.209s running

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

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

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

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



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

* ✓ CI.Build: success for drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (15 preceding siblings ...)
  2024-10-21 23:49 ` ✓ CI.KUnit: success " Patchwork
@ 2024-10-22  0:01 ` Patchwork
  2024-10-22  0:03 ` ✓ CI.Hooks: " Patchwork
                   ` (3 subsequent siblings)
  20 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-10-22  0:01 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-xe

== Series Details ==

Series: drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
URL   : https://patchwork.freedesktop.org/series/140283/
State : success

== Summary ==

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



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

* ✓ CI.Hooks: success for drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (16 preceding siblings ...)
  2024-10-22  0:01 ` ✓ CI.Build: " Patchwork
@ 2024-10-22  0:03 ` Patchwork
  2024-10-22  0:04 ` ✗ CI.checksparse: warning " Patchwork
                   ` (2 subsequent siblings)
  20 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-10-22  0:03 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-xe

== Series Details ==

Series: drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
URL   : https://patchwork.freedesktop.org/series/140283/
State : success

== Summary ==

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

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

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

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

  GEN     Makefile

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

* ✗ CI.checksparse: warning for drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (17 preceding siblings ...)
  2024-10-22  0:03 ` ✓ CI.Hooks: " Patchwork
@ 2024-10-22  0:04 ` Patchwork
  2024-10-22  0:29 ` ✓ CI.BAT: success " Patchwork
  2024-10-22  8:23 ` ✗ CI.FULL: failure " Patchwork
  20 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-10-22  0:04 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-xe

== Series Details ==

Series: drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
URL   : https://patchwork.freedesktop.org/series/140283/
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 aa0898115bcff3eda6d021cc66eb8a1c3b264c56
/root/linux/maintainer-tools/dim: line 2068: sparse: command not found
Sparse version: 
Fast mode used, each commit won't be checked separately.
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✓ CI.BAT: success for drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (18 preceding siblings ...)
  2024-10-22  0:04 ` ✗ CI.checksparse: warning " Patchwork
@ 2024-10-22  0:29 ` Patchwork
  2024-10-22  8:23 ` ✗ CI.FULL: failure " Patchwork
  20 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-10-22  0:29 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-xe

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

== Series Details ==

Series: drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
URL   : https://patchwork.freedesktop.org/series/140283/
State : success

== Summary ==

CI Bug Log - changes from xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56_BAT -> xe-pw-140283v1_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (9 -> 9)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Issues hit ####

  * igt@xe_exec_compute_mode@twice-userptr-invalidate:
    - bat-lnl-2:          [PASS][1] -> [FAIL][2] ([Intel XE#2754])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/bat-lnl-2/igt@xe_exec_compute_mode@twice-userptr-invalidate.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/bat-lnl-2/igt@xe_exec_compute_mode@twice-userptr-invalidate.html

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


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

  * Linux: xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56 -> xe-pw-140283v1

  IGT_8080: 20fcbc59241a16c84d12f4f6ba390fb46fd65a36 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56: aa0898115bcff3eda6d021cc66eb8a1c3b264c56
  xe-pw-140283v1: 140283v1

== Logs ==

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

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

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

* Re: [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states
  2024-10-21 22:27 ` [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states Gustavo Sousa
@ 2024-10-22  8:03   ` Jani Nikula
  2024-10-22 11:06     ` Gustavo Sousa
  2024-11-05 19:54     ` Gustavo Sousa
  2024-10-22  8:03   ` Jani Nikula
                     ` (2 subsequent siblings)
  3 siblings, 2 replies; 60+ messages in thread
From: Jani Nikula @ 2024-10-22  8:03 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> There are extra registers that require the DMC wakelock when specific
> dynamic DC states are in place. Add the table ranges for them and use
> the correct table depending on the allowed DC states.
>
> Bspec: 71583
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 112 +++++++++++++++++++-
>  1 file changed, 108 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> index d597cc825f64..8bf2f32be859 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> @@ -5,6 +5,7 @@
>  
>  #include <linux/kernel.h>
>  
> +#include "i915_reg.h"
>  #include "intel_de.h"
>  #include "intel_dmc.h"
>  #include "intel_dmc_regs.h"
> @@ -52,6 +53,87 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>  	{},
>  };
>  
> +static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
> +	{ .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
> +	{ .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
> +	{ .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
> +	{ .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
> +	{ .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
> +
> +	/* DBUF_CTL_* */
> +	{ .start = 0x44300, .end = 0x44300 },
> +	{ .start = 0x44304, .end = 0x44304 },
> +	{ .start = 0x44f00, .end = 0x44f00 },
> +	{ .start = 0x44f04, .end = 0x44f04 },
> +	{ .start = 0x44fe8, .end = 0x44fe8 },
> +	{ .start = 0x45008, .end = 0x45008 },
> +
> +	{ .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
> +	{ .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
> +	{ .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
> +
> +	/* TRANS_CMTG_CTL_* */
> +	{ .start = 0x6fa88, .end = 0x6fa88 },
> +	{ .start = 0x6fb88, .end = 0x6fb88 },
> +
> +	{ .start = 0x46430, .end = 0x46430 }, /* CHICKEN_DCPR_1 */
> +	{ .start = 0x46434, .end = 0x46434 }, /* CHICKEN_DCPR_2 */
> +	{ .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
> +	{ .start = 0x42084, .end = 0x42084 }, /* CHICKEN_MISC_2 */
> +	{ .start = 0x42088, .end = 0x42088 }, /* CHICKEN_MISC_3 */
> +	{ .start = 0x46160, .end = 0x46160 }, /* CMTG_CLK_SEL */
> +	{ .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
> +
> +	{},
> +};
> +
> +static struct intel_dmc_wl_range xe3lpd_dc3co_wl_ranges[] = {
> +	{ .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
> +
> +	{ .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
> +
> +	/* DBUF_CTL_* */
> +	{ .start = 0x44300, .end = 0x44300 },
> +	{ .start = 0x44304, .end = 0x44304 },
> +	{ .start = 0x44f00, .end = 0x44f00 },
> +	{ .start = 0x44f04, .end = 0x44f04 },
> +	{ .start = 0x44fe8, .end = 0x44fe8 },
> +	{ .start = 0x45008, .end = 0x45008 },
> +
> +	{ .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
> +	{ .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
> +	{ .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
> +	{ .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
> +
> +	/* Scanline registers */
> +	{ .start = 0x70000, .end = 0x70000 },
> +	{ .start = 0x70004, .end = 0x70004 },
> +	{ .start = 0x70014, .end = 0x70014 },
> +	{ .start = 0x70018, .end = 0x70018 },
> +	{ .start = 0x71000, .end = 0x71000 },
> +	{ .start = 0x71004, .end = 0x71004 },
> +	{ .start = 0x71014, .end = 0x71014 },
> +	{ .start = 0x71018, .end = 0x71018 },
> +	{ .start = 0x72000, .end = 0x72000 },
> +	{ .start = 0x72004, .end = 0x72004 },
> +	{ .start = 0x72014, .end = 0x72014 },
> +	{ .start = 0x72018, .end = 0x72018 },
> +	{ .start = 0x73000, .end = 0x73000 },
> +	{ .start = 0x73004, .end = 0x73004 },
> +	{ .start = 0x73014, .end = 0x73014 },
> +	{ .start = 0x73018, .end = 0x73018 },
> +	{ .start = 0x7b000, .end = 0x7b000 },
> +	{ .start = 0x7b004, .end = 0x7b004 },
> +	{ .start = 0x7b014, .end = 0x7b014 },
> +	{ .start = 0x7b018, .end = 0x7b018 },
> +	{ .start = 0x7c000, .end = 0x7c000 },
> +	{ .start = 0x7c004, .end = 0x7c004 },
> +	{ .start = 0x7c014, .end = 0x7c014 },
> +	{ .start = 0x7c018, .end = 0x7c018 },
> +
> +	{},
> +};
> +
>  static void __intel_dmc_wl_release(struct intel_display *display)
>  {
>  	struct drm_i915_private *i915 = to_i915(display->drm);
> @@ -106,9 +188,31 @@ static bool intel_dmc_wl_addr_in_range(u32 address,
>  	return false;
>  }
>  
> -static bool intel_dmc_wl_check_range(u32 address)
> +static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
>  {
> -	return intel_dmc_wl_addr_in_range(address, lnl_wl_range);
> +	const struct intel_dmc_wl_range *ranges;
> +
> +	ranges = lnl_wl_range;
> +
> +	if (intel_dmc_wl_addr_in_range(address, ranges))
> +		return true;
> +
> +	switch (display->power.domains.dc_state) {

This file has no business looking at power domain guts. Use or add
interfaces instead of poking at data directly.

> +	case DC_STATE_EN_DC3CO:
> +		ranges = xe3lpd_dc3co_wl_ranges;
> +		break;
> +	case DC_STATE_EN_UPTO_DC5:
> +	case DC_STATE_EN_UPTO_DC6:
> +		ranges = xe3lpd_dc5_dc6_wl_ranges;
> +		break;
> +	default:
> +		ranges = NULL;
> +	}
> +
> +	if (ranges && intel_dmc_wl_addr_in_range(address, ranges))
> +		return true;
> +
> +	return false;
>  }
>  
>  static bool __intel_dmc_wl_supported(struct intel_display *display)
> @@ -195,7 +299,7 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
>  	if (!__intel_dmc_wl_supported(display))
>  		return;
>  
> -	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
> +	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))

Side note, unrelated to this patch, i915_reg_t is supposed to be opaque,
nobody should look at reg.reg directly, there's i915_mmio_reg_offset()
for it.

>  		return;
>  
>  	spin_lock_irqsave(&wl->lock, flags);
> @@ -247,7 +351,7 @@ void intel_dmc_wl_put(struct intel_display *display, i915_reg_t reg)
>  	if (!__intel_dmc_wl_supported(display))
>  		return;
>  
> -	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
> +	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
>  		return;
>  
>  	spin_lock_irqsave(&wl->lock, flags);

-- 
Jani Nikula, Intel

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

* Re: [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states
  2024-10-21 22:27 ` [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states Gustavo Sousa
  2024-10-22  8:03   ` Jani Nikula
@ 2024-10-22  8:03   ` Jani Nikula
  2024-10-22 11:10     ` Gustavo Sousa
  2024-10-22 11:14   ` Gustavo Sousa
  2024-11-01 12:51   ` Luca Coelho
  3 siblings, 1 reply; 60+ messages in thread
From: Jani Nikula @ 2024-10-22  8:03 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> There are extra registers that require the DMC wakelock when specific
> dynamic DC states are in place. Add the table ranges for them and use
> the correct table depending on the allowed DC states.
>
> Bspec: 71583
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 112 +++++++++++++++++++-
>  1 file changed, 108 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> index d597cc825f64..8bf2f32be859 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> @@ -5,6 +5,7 @@
>  
>  #include <linux/kernel.h>
>  
> +#include "i915_reg.h"

I think you mean i915_reg_defs.h

>  #include "intel_de.h"
>  #include "intel_dmc.h"
>  #include "intel_dmc_regs.h"
> @@ -52,6 +53,87 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>  	{},
>  };
>  
> +static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
> +	{ .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
> +	{ .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
> +	{ .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
> +	{ .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
> +	{ .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
> +
> +	/* DBUF_CTL_* */
> +	{ .start = 0x44300, .end = 0x44300 },
> +	{ .start = 0x44304, .end = 0x44304 },
> +	{ .start = 0x44f00, .end = 0x44f00 },
> +	{ .start = 0x44f04, .end = 0x44f04 },
> +	{ .start = 0x44fe8, .end = 0x44fe8 },
> +	{ .start = 0x45008, .end = 0x45008 },
> +
> +	{ .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
> +	{ .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
> +	{ .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
> +
> +	/* TRANS_CMTG_CTL_* */
> +	{ .start = 0x6fa88, .end = 0x6fa88 },
> +	{ .start = 0x6fb88, .end = 0x6fb88 },
> +
> +	{ .start = 0x46430, .end = 0x46430 }, /* CHICKEN_DCPR_1 */
> +	{ .start = 0x46434, .end = 0x46434 }, /* CHICKEN_DCPR_2 */
> +	{ .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
> +	{ .start = 0x42084, .end = 0x42084 }, /* CHICKEN_MISC_2 */
> +	{ .start = 0x42088, .end = 0x42088 }, /* CHICKEN_MISC_3 */
> +	{ .start = 0x46160, .end = 0x46160 }, /* CMTG_CLK_SEL */
> +	{ .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
> +
> +	{},
> +};
> +
> +static struct intel_dmc_wl_range xe3lpd_dc3co_wl_ranges[] = {
> +	{ .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
> +
> +	{ .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
> +
> +	/* DBUF_CTL_* */
> +	{ .start = 0x44300, .end = 0x44300 },
> +	{ .start = 0x44304, .end = 0x44304 },
> +	{ .start = 0x44f00, .end = 0x44f00 },
> +	{ .start = 0x44f04, .end = 0x44f04 },
> +	{ .start = 0x44fe8, .end = 0x44fe8 },
> +	{ .start = 0x45008, .end = 0x45008 },
> +
> +	{ .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
> +	{ .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
> +	{ .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
> +	{ .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
> +
> +	/* Scanline registers */
> +	{ .start = 0x70000, .end = 0x70000 },
> +	{ .start = 0x70004, .end = 0x70004 },
> +	{ .start = 0x70014, .end = 0x70014 },
> +	{ .start = 0x70018, .end = 0x70018 },
> +	{ .start = 0x71000, .end = 0x71000 },
> +	{ .start = 0x71004, .end = 0x71004 },
> +	{ .start = 0x71014, .end = 0x71014 },
> +	{ .start = 0x71018, .end = 0x71018 },
> +	{ .start = 0x72000, .end = 0x72000 },
> +	{ .start = 0x72004, .end = 0x72004 },
> +	{ .start = 0x72014, .end = 0x72014 },
> +	{ .start = 0x72018, .end = 0x72018 },
> +	{ .start = 0x73000, .end = 0x73000 },
> +	{ .start = 0x73004, .end = 0x73004 },
> +	{ .start = 0x73014, .end = 0x73014 },
> +	{ .start = 0x73018, .end = 0x73018 },
> +	{ .start = 0x7b000, .end = 0x7b000 },
> +	{ .start = 0x7b004, .end = 0x7b004 },
> +	{ .start = 0x7b014, .end = 0x7b014 },
> +	{ .start = 0x7b018, .end = 0x7b018 },
> +	{ .start = 0x7c000, .end = 0x7c000 },
> +	{ .start = 0x7c004, .end = 0x7c004 },
> +	{ .start = 0x7c014, .end = 0x7c014 },
> +	{ .start = 0x7c018, .end = 0x7c018 },
> +
> +	{},
> +};
> +
>  static void __intel_dmc_wl_release(struct intel_display *display)
>  {
>  	struct drm_i915_private *i915 = to_i915(display->drm);
> @@ -106,9 +188,31 @@ static bool intel_dmc_wl_addr_in_range(u32 address,
>  	return false;
>  }
>  
> -static bool intel_dmc_wl_check_range(u32 address)
> +static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
>  {
> -	return intel_dmc_wl_addr_in_range(address, lnl_wl_range);
> +	const struct intel_dmc_wl_range *ranges;
> +
> +	ranges = lnl_wl_range;
> +
> +	if (intel_dmc_wl_addr_in_range(address, ranges))
> +		return true;
> +
> +	switch (display->power.domains.dc_state) {
> +	case DC_STATE_EN_DC3CO:
> +		ranges = xe3lpd_dc3co_wl_ranges;
> +		break;
> +	case DC_STATE_EN_UPTO_DC5:
> +	case DC_STATE_EN_UPTO_DC6:
> +		ranges = xe3lpd_dc5_dc6_wl_ranges;
> +		break;
> +	default:
> +		ranges = NULL;
> +	}
> +
> +	if (ranges && intel_dmc_wl_addr_in_range(address, ranges))
> +		return true;
> +
> +	return false;
>  }
>  
>  static bool __intel_dmc_wl_supported(struct intel_display *display)
> @@ -195,7 +299,7 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
>  	if (!__intel_dmc_wl_supported(display))
>  		return;
>  
> -	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
> +	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
>  		return;
>  
>  	spin_lock_irqsave(&wl->lock, flags);
> @@ -247,7 +351,7 @@ void intel_dmc_wl_put(struct intel_display *display, i915_reg_t reg)
>  	if (!__intel_dmc_wl_supported(display))
>  		return;
>  
> -	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
> +	if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
>  		return;
>  
>  	spin_lock_irqsave(&wl->lock, flags);

-- 
Jani Nikula, Intel

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

* ✗ CI.FULL: failure for drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
  2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
                   ` (19 preceding siblings ...)
  2024-10-22  0:29 ` ✓ CI.BAT: success " Patchwork
@ 2024-10-22  8:23 ` Patchwork
  20 siblings, 0 replies; 60+ messages in thread
From: Patchwork @ 2024-10-22  8:23 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-xe

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

== Series Details ==

Series: drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD
URL   : https://patchwork.freedesktop.org/series/140283/
State : failure

== Summary ==

CI Bug Log - changes from xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56_full -> xe-pw-140283v1_full
====================================================

Summary
-------

  **FAILURE**

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

  

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
    - shard-bmg:          NOTRUN -> [INCOMPLETE][1] +1 other test incomplete
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-bmg-4/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html

  * igt@kms_psr@psr2-sprite-plane-onoff:
    - shard-lnl:          [PASS][2] -> [DMESG-WARN][3] +1 other test dmesg-warn
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-3/igt@kms_psr@psr2-sprite-plane-onoff.html
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-7/igt@kms_psr@psr2-sprite-plane-onoff.html

  * igt@xe_gt_freq@freq_suspend:
    - shard-adlp:         [PASS][4] -> [DMESG-WARN][5]
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-9/igt@xe_gt_freq@freq_suspend.html
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-3/igt@xe_gt_freq@freq_suspend.html

  * igt@xe_oa@oa-exponents:
    - shard-lnl:          [PASS][6] -> [FAIL][7]
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-4/igt@xe_oa@oa-exponents.html
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-7/igt@xe_oa@oa-exponents.html

  * igt@xe_oa@oa-exponents@rcs-0:
    - shard-lnl:          NOTRUN -> [FAIL][8]
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-7/igt@xe_oa@oa-exponents@rcs-0.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@intel_hwmon@hwmon-write:
    - shard-adlp:         NOTRUN -> [SKIP][9] ([Intel XE#1125])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@intel_hwmon@hwmon-write.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-y:
    - shard-adlp:         [PASS][10] -> [DMESG-WARN][11] ([Intel XE#3194]) +1 other test dmesg-warn
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-2/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-y.html
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-3/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-y.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing:
    - shard-bmg:          [PASS][12] -> [FAIL][13] ([Intel XE#1426]) +1 other test fail
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-bmg-2/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-bmg-2/igt@kms_atomic_transition@plane-all-modeset-transition-fencing.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-270:
    - shard-dg2-set2:     NOTRUN -> [SKIP][14] ([Intel XE#316])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_big_fb@4-tiled-32bpp-rotate-270.html

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

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-lnl:          [PASS][16] -> [FAIL][17] ([Intel XE#1874])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-3/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip.html
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-7/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0:
    - shard-dg2-set2:     NOTRUN -> [SKIP][18] ([Intel XE#1124]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0.html

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

  * igt@kms_big_fb@yf-tiled-addfb-size-overflow:
    - shard-dg2-set2:     NOTRUN -> [SKIP][20] ([Intel XE#610])
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html

  * igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-c-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][21] ([Intel XE#787]) +20 other tests skip
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-c-dp-4.html

  * igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4:
    - shard-dg2-set2:     NOTRUN -> [SKIP][22] ([Intel XE#455] / [Intel XE#787]) +5 other tests skip
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_ccs@missing-ccs-buffer-4-tiled-mtl-mc-ccs@pipe-d-dp-4.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
    - shard-dg2-set2:     [PASS][23] -> [INCOMPLETE][24] ([Intel XE#1195] / [Intel XE#1727])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [PASS][25] -> [INCOMPLETE][26] ([Intel XE#1195] / [Intel XE#3113])
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-435/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-6.html
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-hdmi-a-6.html

  * igt@kms_chamelium_frames@vga-frame-dump:
    - shard-dg2-set2:     NOTRUN -> [SKIP][27] ([Intel XE#373]) +1 other test skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_chamelium_frames@vga-frame-dump.html

  * igt@kms_content_protection@srm:
    - shard-adlp:         NOTRUN -> [SKIP][28] ([Intel XE#455])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@cursor-sliding-512x170:
    - shard-dg2-set2:     NOTRUN -> [SKIP][29] ([Intel XE#308])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_cursor_crc@cursor-sliding-512x170.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-adlp:         [PASS][30] -> [FAIL][31] ([Intel XE#1475]) +1 other test fail
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-3/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@flip-vs-cursor-toggle:
    - shard-lnl:          [PASS][32] -> [FAIL][33] ([Intel XE#1475])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-3/igt@kms_cursor_legacy@flip-vs-cursor-toggle.html
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-7/igt@kms_cursor_legacy@flip-vs-cursor-toggle.html

  * igt@kms_feature_discovery@psr2:
    - shard-adlp:         NOTRUN -> [SKIP][34] ([Intel XE#1135])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_feature_discovery@psr2.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bd-dp2-hdmi-a3:
    - shard-bmg:          [PASS][35] -> [FAIL][36] ([Intel XE#301]) +3 other tests fail
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-bmg-4/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bd-dp2-hdmi-a3.html
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-bmg-8/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@bd-dp2-hdmi-a3.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank@c-edp1:
    - shard-lnl:          [PASS][37] -> [FAIL][38] ([Intel XE#886]) +1 other test fail
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-8/igt@kms_flip@flip-vs-absolute-wf_vblank@c-edp1.html
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-1/igt@kms_flip@flip-vs-absolute-wf_vblank@c-edp1.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank@c-dp4:
    - shard-dg2-set2:     [PASS][39] -> [INCOMPLETE][40] ([Intel XE#1195]) +1 other test incomplete
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-435/igt@kms_flip@flip-vs-blocking-wf-vblank@c-dp4.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-435/igt@kms_flip@flip-vs-blocking-wf-vblank@c-dp4.html

  * igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6:
    - shard-dg2-set2:     [PASS][41] -> [FAIL][42] ([Intel XE#301]) +1 other test fail
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-466/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6.html
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a6.html

  * igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-x:
    - shard-adlp:         [PASS][43] -> [FAIL][44] ([Intel XE#1874]) +1 other test fail
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-8/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-x.html
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-8/igt@kms_flip_tiling@flip-change-tiling@pipe-c-hdmi-a-1-x-to-x.html

  * igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen:
    - shard-adlp:         NOTRUN -> [SKIP][45] ([Intel XE#651])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff:
    - shard-dg2-set2:     NOTRUN -> [SKIP][46] ([Intel XE#651]) +6 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt:
    - shard-adlp:         NOTRUN -> [SKIP][47] ([Intel XE#656]) +1 other test skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-msflip-blt:
    - shard-adlp:         NOTRUN -> [SKIP][48] ([Intel XE#653]) +1 other test skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-msflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-fullscreen:
    - shard-dg2-set2:     NOTRUN -> [SKIP][49] ([Intel XE#653]) +5 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-fullscreen.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6:
    - shard-dg2-set2:     [PASS][50] -> [FAIL][51] ([Intel XE#361])
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-464/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-466/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-6.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a:
    - shard-adlp:         NOTRUN -> [SKIP][52] ([Intel XE#2763]) +2 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-a.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d:
    - shard-adlp:         NOTRUN -> [SKIP][53] ([Intel XE#2763] / [Intel XE#455]) +1 other test skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-b:
    - shard-dg2-set2:     NOTRUN -> [SKIP][54] ([Intel XE#2763]) +2 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-b.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d:
    - shard-dg2-set2:     NOTRUN -> [SKIP][55] ([Intel XE#2763] / [Intel XE#455]) +1 other test skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-d.html

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf:
    - shard-dg2-set2:     NOTRUN -> [SKIP][56] ([Intel XE#1489]) +1 other test skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr@fbc-pr-primary-page-flip:
    - shard-adlp:         NOTRUN -> [SKIP][57] ([Intel XE#2850] / [Intel XE#929])
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_psr@fbc-pr-primary-page-flip.html

  * igt@kms_psr@psr-cursor-plane-onoff:
    - shard-dg2-set2:     NOTRUN -> [SKIP][58] ([Intel XE#2850] / [Intel XE#929]) +2 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_psr@psr-cursor-plane-onoff.html

  * igt@kms_scaling_modes@scaling-mode-full:
    - shard-dg2-set2:     NOTRUN -> [SKIP][59] ([Intel XE#455]) +5 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_scaling_modes@scaling-mode-full.html

  * igt@kms_sequence@get-idle:
    - shard-bmg:          [PASS][60] -> [DMESG-WARN][61] ([Intel XE#877]) +1 other test dmesg-warn
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-bmg-2/igt@kms_sequence@get-idle.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-bmg-5/igt@kms_sequence@get-idle.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-dg2-set2:     NOTRUN -> [SKIP][62] ([Intel XE#1500])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_universal_plane@cursor-fb-leak:
    - shard-lnl:          [PASS][63] -> [FAIL][64] ([Intel XE#899]) +2 other tests fail
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-4/igt@kms_universal_plane@cursor-fb-leak.html
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-7/igt@kms_universal_plane@cursor-fb-leak.html

  * igt@kms_vrr@flipline:
    - shard-lnl:          [PASS][65] -> [FAIL][66] ([Intel XE#2443]) +1 other test fail
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-4/igt@kms_vrr@flipline.html
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-8/igt@kms_vrr@flipline.html

  * igt@xe_compute_preempt@compute-preempt:
    - shard-dg2-set2:     NOTRUN -> [SKIP][67] ([Intel XE#1280] / [Intel XE#455]) +1 other test skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@xe_compute_preempt@compute-preempt.html

  * igt@xe_eudebug_online@reset-with-attention:
    - shard-dg2-set2:     NOTRUN -> [SKIP][68] ([Intel XE#2905]) +2 other tests skip
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@xe_eudebug_online@reset-with-attention.html

  * igt@xe_evict@evict-mixed-many-threads-small:
    - shard-dg2-set2:     [PASS][69] -> [TIMEOUT][70] ([Intel XE#1473])
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-433/igt@xe_evict@evict-mixed-many-threads-small.html
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-466/igt@xe_evict@evict-mixed-many-threads-small.html

  * igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null:
    - shard-adlp:         NOTRUN -> [SKIP][71] ([Intel XE#1392])
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null.html

  * igt@xe_exec_compute_mode@many-bindexecqueue-userptr-invalidate-race:
    - shard-lnl:          [PASS][72] -> [FAIL][73] ([Intel XE#2754])
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-6/igt@xe_exec_compute_mode@many-bindexecqueue-userptr-invalidate-race.html
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-7/igt@xe_exec_compute_mode@many-bindexecqueue-userptr-invalidate-race.html

  * igt@xe_exec_compute_mode@many-execqueues-userptr-invalidate:
    - shard-lnl:          [PASS][74] -> [DMESG-WARN][75] ([Intel XE#2687])
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-7/igt@xe_exec_compute_mode@many-execqueues-userptr-invalidate.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-1/igt@xe_exec_compute_mode@many-execqueues-userptr-invalidate.html

  * igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-prefetch:
    - shard-dg2-set2:     NOTRUN -> [SKIP][76] ([Intel XE#288]) +5 other tests skip
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-prefetch.html

  * igt@xe_exec_fault_mode@twice-bindexecqueue-rebind:
    - shard-lnl:          [PASS][77] -> [FAIL][78] ([Intel XE#1630])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-1/igt@xe_exec_fault_mode@twice-bindexecqueue-rebind.html
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-6/igt@xe_exec_fault_mode@twice-bindexecqueue-rebind.html

  * igt@xe_exec_fault_mode@twice-userptr:
    - shard-adlp:         NOTRUN -> [SKIP][79] ([Intel XE#288])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@xe_exec_fault_mode@twice-userptr.html

  * igt@xe_gt_freq@freq_reset_multiple:
    - shard-lnl:          [PASS][80] -> [DMESG-WARN][81] ([Intel XE#3184])
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-1/igt@xe_gt_freq@freq_reset_multiple.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-6/igt@xe_gt_freq@freq_reset_multiple.html

  * igt@xe_oa@oa-regs-whitelisted@ccs-0:
    - shard-lnl:          NOTRUN -> [FAIL][82] ([Intel XE#2514])
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-5/igt@xe_oa@oa-regs-whitelisted@ccs-0.html

  * igt@xe_oa@privileged-forked-access-vaddr:
    - shard-dg2-set2:     NOTRUN -> [SKIP][83] ([Intel XE#2541]) +1 other test skip
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@xe_oa@privileged-forked-access-vaddr.html

  * igt@xe_pm@s4-vm-bind-prefetch:
    - shard-adlp:         [PASS][84] -> [ABORT][85] ([Intel XE#1607] / [Intel XE#1794])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-4/igt@xe_pm@s4-vm-bind-prefetch.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-9/igt@xe_pm@s4-vm-bind-prefetch.html

  * igt@xe_pm@s4-vm-bind-userptr:
    - shard-adlp:         [PASS][86] -> [ABORT][87] ([Intel XE#1794])
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-2/igt@xe_pm@s4-vm-bind-userptr.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-9/igt@xe_pm@s4-vm-bind-userptr.html

  * igt@xe_pm_residency@idle-residency-on-exec@gt0-engine-drm_xe_engine_class_video_enhance:
    - shard-dg2-set2:     NOTRUN -> [INCOMPLETE][88] ([Intel XE#1195])
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@xe_pm_residency@idle-residency-on-exec@gt0-engine-drm_xe_engine_class_video_enhance.html

  * igt@xe_pm_residency@toggle-gt-c6:
    - shard-lnl:          [PASS][89] -> [FAIL][90] ([Intel XE#958])
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-6/igt@xe_pm_residency@toggle-gt-c6.html
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-4/igt@xe_pm_residency@toggle-gt-c6.html

  
#### Possible fixes ####

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-x:
    - shard-adlp:         [DMESG-WARN][91] ([Intel XE#3194]) -> [PASS][92] +2 other tests pass
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-2/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-x.html
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-3/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-1-x.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc:
    - shard-dg2-set2:     [INCOMPLETE][93] ([Intel XE#1195] / [Intel XE#2692]) -> [PASS][94]
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-463/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_color@ctm-negative:
    - shard-bmg:          [DMESG-WARN][95] ([Intel XE#877]) -> [PASS][96] +3 other tests pass
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-bmg-2/igt@kms_color@ctm-negative.html
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-bmg-1/igt@kms_color@ctm-negative.html

  * igt@kms_color@legacy-gamma-reset:
    - shard-adlp:         [DMESG-WARN][97] -> [PASS][98]
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-4/igt@kms_color@legacy-gamma-reset.html
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-6/igt@kms_color@legacy-gamma-reset.html

  * igt@kms_cursor_legacy@flip-vs-cursor-varying-size:
    - shard-lnl:          [FAIL][99] ([Intel XE#1475]) -> [PASS][100]
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-8/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-1/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html

  * igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3:
    - shard-bmg:          [FAIL][101] ([Intel XE#301]) -> [PASS][102] +2 other tests pass
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-bmg-5/igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3.html
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-bmg-2/igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
    - shard-adlp:         [FAIL][103] ([Intel XE#2882]) -> [PASS][104]
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-8/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@c-hdmi-a1:
    - shard-adlp:         [FAIL][105] -> [PASS][106]
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-8/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@c-hdmi-a1.html
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible@c-hdmi-a1.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank@a-edp1:
    - shard-lnl:          [FAIL][107] ([Intel XE#886]) -> [PASS][108] +5 other tests pass
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-8/igt@kms_flip@flip-vs-absolute-wf_vblank@a-edp1.html
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-1/igt@kms_flip@flip-vs-absolute-wf_vblank@a-edp1.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank@a-dp2:
    - shard-bmg:          [INCOMPLETE][109] -> [PASS][110] +1 other test pass
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-bmg-4/igt@kms_flip@flip-vs-blocking-wf-vblank@a-dp2.html
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-bmg-4/igt@kms_flip@flip-vs-blocking-wf-vblank@a-dp2.html

  * igt@kms_plane_cursor@primary:
    - shard-lnl:          [FAIL][111] ([Intel XE#1471] / [Intel XE#1874]) -> [PASS][112]
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-1/igt@kms_plane_cursor@primary.html
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-3/igt@kms_plane_cursor@primary.html

  * igt@kms_plane_cursor@primary@pipe-a-edp-1-size-64:
    - shard-lnl:          [FAIL][113] ([Intel XE#1471]) -> [PASS][114]
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-1/igt@kms_plane_cursor@primary@pipe-a-edp-1-size-64.html
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-3/igt@kms_plane_cursor@primary@pipe-a-edp-1-size-64.html

  * igt@kms_pm_dc@deep-pkgc:
    - shard-lnl:          [FAIL][115] ([Intel XE#2029]) -> [PASS][116]
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-5/igt@kms_pm_dc@deep-pkgc.html
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-3/igt@kms_pm_dc@deep-pkgc.html

  * igt@kms_pm_rpm@modeset-stress-extra-wait:
    - shard-lnl:          [DMESG-WARN][117] -> [PASS][118]
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-6/igt@kms_pm_rpm@modeset-stress-extra-wait.html
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-5/igt@kms_pm_rpm@modeset-stress-extra-wait.html

  * igt@kms_pm_rpm@universal-planes:
    - shard-lnl:          [DMESG-WARN][119] ([Intel XE#2042]) -> [PASS][120]
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-8/igt@kms_pm_rpm@universal-planes.html
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-8/igt@kms_pm_rpm@universal-planes.html

  * igt@kms_psr@psr2-cursor-plane-move@edp-1:
    - shard-lnl:          [FAIL][121] ([Intel XE#2948]) -> [PASS][122] +1 other test pass
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-3/igt@kms_psr@psr2-cursor-plane-move@edp-1.html
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-7/igt@kms_psr@psr2-cursor-plane-move@edp-1.html

  * igt@kms_vrr@flip-dpms:
    - shard-lnl:          [FAIL][123] -> [PASS][124] +3 other tests pass
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-5/igt@kms_vrr@flip-dpms.html
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-6/igt@kms_vrr@flip-dpms.html

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-dg2-set2:     [TIMEOUT][125] ([Intel XE#1473] / [Intel XE#402]) -> [PASS][126]
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-436/igt@xe_evict@evict-beng-mixed-many-threads-small.html
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-464/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * igt@xe_evict@evict-beng-mixed-threads-large:
    - shard-dg2-set2:     [FAIL][127] ([Intel XE#1000]) -> [PASS][128]
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-466/igt@xe_evict@evict-beng-mixed-threads-large.html
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-433/igt@xe_evict@evict-beng-mixed-threads-large.html

  * igt@xe_exec_compute_mode@many-bindexecqueue-userptr-invalidate:
    - shard-lnl:          [DMESG-WARN][129] ([Intel XE#2687]) -> [PASS][130]
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-3/igt@xe_exec_compute_mode@many-bindexecqueue-userptr-invalidate.html
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-7/igt@xe_exec_compute_mode@many-bindexecqueue-userptr-invalidate.html

  * igt@xe_exec_reset@parallel-close-fd:
    - shard-bmg:          [FAIL][131] -> [PASS][132]
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-bmg-2/igt@xe_exec_reset@parallel-close-fd.html
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-bmg-5/igt@xe_exec_reset@parallel-close-fd.html

  * igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race:
    - shard-dg2-set2:     [DMESG-WARN][133] ([Intel XE#358]) -> [PASS][134]
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-436/igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race.html
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-464/igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race.html

  * igt@xe_pm@d3hot-basic-exec:
    - shard-lnl:          [DMESG-WARN][135] ([Intel XE#3184]) -> [PASS][136] +1 other test pass
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-lnl-4/igt@xe_pm@d3hot-basic-exec.html
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-lnl-5/igt@xe_pm@d3hot-basic-exec.html

  * igt@xe_pm_residency@idle-residency-on-exec@gt0-engine-drm_xe_engine_class_video_decode:
    - shard-dg2-set2:     [INCOMPLETE][137] ([Intel XE#1195]) -> [PASS][138] +1 other test pass
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-466/igt@xe_pm_residency@idle-residency-on-exec@gt0-engine-drm_xe_engine_class_video_decode.html
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-436/igt@xe_pm_residency@idle-residency-on-exec@gt0-engine-drm_xe_engine_class_video_decode.html

  * igt@xe_vm@large-split-binds-2097152:
    - shard-adlp:         [TIMEOUT][139] ([Intel XE#1033] / [Intel XE#1727]) -> [PASS][140] +1 other test pass
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-8/igt@xe_vm@large-split-binds-2097152.html
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@xe_vm@large-split-binds-2097152.html

  
#### Warnings ####

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - shard-adlp:         [DMESG-FAIL][141] ([Intel XE#3194]) -> [FAIL][142] ([Intel XE#1231] / [Intel XE#1242])
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-2/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - shard-adlp:         [TIMEOUT][143] ([Intel XE#1033] / [Intel XE#1727] / [Intel XE#402]) -> [DMESG-FAIL][144] ([Intel XE#3194])
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-8/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
   [144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - shard-adlp:         [FAIL][145] ([Intel XE#1231] / [Intel XE#1242]) -> [DMESG-FAIL][146] ([Intel XE#3194]) +1 other test dmesg-fail
   [145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-6/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
   [146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-2/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-fullscreen:
    - shard-adlp:         [TIMEOUT][147] ([Intel XE#1033] / [Intel XE#1727]) -> [SKIP][148] ([Intel XE#656])
   [147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-8/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-fullscreen.html
   [148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-1/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-wc:
    - shard-dg2-set2:     [SKIP][149] ([Intel XE#783]) -> [SKIP][150] ([Intel XE#3187] / [Intel XE#783]) +2 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-466/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-wc.html
   [150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-433/igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-mmap-wc.html

  * igt@kms_lease@lease-invalid-crtc:
    - shard-dg2-set2:     [SKIP][151] -> [SKIP][152] ([Intel XE#3187]) +25 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-dg2-466/igt@kms_lease@lease-invalid-crtc.html
   [152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-dg2-433/igt@kms_lease@lease-invalid-crtc.html

  * igt@kms_plane@pixel-format-source-clamping:
    - shard-adlp:         [INCOMPLETE][153] ([Intel XE#1035] / [Intel XE#1195]) -> [INCOMPLETE][154] ([Intel XE#1035])
   [153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56/shard-adlp-6/igt@kms_plane@pixel-format-source-clamping.html
   [154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140283v1/shard-adlp-3/igt@kms_plane@pixel-format-source-clamping.html

  
  [Intel XE#1000]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1000
  [Intel XE#1033]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1033
  [Intel XE#1035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1035
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1125]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1125
  [Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
  [Intel XE#1195]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1195
  [Intel XE#1231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1231
  [Intel XE#1242]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1242
  [Intel XE#1280]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1280
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1426
  [Intel XE#1471]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1471
  [Intel XE#1473]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1473
  [Intel XE#1475]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1475
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
  [Intel XE#1607]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1607
  [Intel XE#1630]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1630
  [Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
  [Intel XE#1794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1794
  [Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
  [Intel XE#2029]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2029
  [Intel XE#2042]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2042
  [Intel XE#2443]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2443
  [Intel XE#2514]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2514
  [Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
  [Intel XE#2687]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2687
  [Intel XE#2692]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2692
  [Intel XE#2754]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2754
  [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
  [Intel XE#2882]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2882
  [Intel XE#2905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2905
  [Intel XE#2948]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2948
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
  [Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
  [Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
  [Intel XE#3184]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3184
  [Intel XE#3187]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3187
  [Intel XE#3194]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3194
  [Intel XE#358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/358
  [Intel XE#361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/361
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#402]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/402
  [Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
  [Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#783]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/783
  [Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
  [Intel XE#877]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/877
  [Intel XE#886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/886
  [Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899
  [Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
  [Intel XE#958]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/958


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

  * Linux: xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56 -> xe-pw-140283v1

  IGT_8080: 20fcbc59241a16c84d12f4f6ba390fb46fd65a36 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-2106-aa0898115bcff3eda6d021cc66eb8a1c3b264c56: aa0898115bcff3eda6d021cc66eb8a1c3b264c56
  xe-pw-140283v1: 140283v1

== Logs ==

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

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

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

* Re: [PATCH 02/13] drm/i915/dmc_wl: Use non-sleeping variant of MMIO wait
  2024-10-21 22:27 ` [PATCH 02/13] drm/i915/dmc_wl: Use non-sleeping variant of " Gustavo Sousa
@ 2024-10-22  9:34   ` Jani Nikula
  2024-10-22 10:55     ` Gustavo Sousa
  2024-11-01 11:18   ` Luca Coelho
  1 sibling, 1 reply; 60+ messages in thread
From: Jani Nikula @ 2024-10-22  9:34 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> Some display MMIO transactions for offsets in the range that requires
> the DMC wakelock happen in atomic context (this has been confirmed
> during tests on PTL). That means that we need to use a non-sleeping
> variant of MMIO waiting function.
>
> Implement __intel_de_wait_for_register_atomic_nowl() and use it when
> waiting for acknowledgment of acquire/release.
>
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_de.h     | 11 +++++++++++
>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 20 ++++++++++++--------
>  2 files changed, 23 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
> index e017cd4a8168..4116783a62dd 100644
> --- a/drivers/gpu/drm/i915/display/intel_de.h
> +++ b/drivers/gpu/drm/i915/display/intel_de.h
> @@ -121,6 +121,17 @@ ____intel_de_wait_for_register_nowl(struct intel_display *display,
>  }
>  #define __intel_de_wait_for_register_nowl(p,...) ____intel_de_wait_for_register_nowl(__to_intel_display(p), __VA_ARGS__)
>  
> +static inline int
> +____intel_de_wait_for_register_atomic_nowl(struct intel_display *display,
> +					   i915_reg_t reg,
> +					   u32 mask, u32 value,
> +					   unsigned int fast_timeout_us)
> +{
> +	return __intel_wait_for_register(__to_uncore(display), reg, mask,
> +					 value, fast_timeout_us, 0, NULL);
> +}
> +#define __intel_de_wait_for_register_atomic_nowl(p,...) ____intel_de_wait_for_register_atomic_nowl(__to_intel_display(p), __VA_ARGS__)
> +

There's no need to add the wrapper when all users pass struct
intel_display. And we don't want new users that pass i915.

And why are we adding new stuff and users with double underscores?

>  static inline int
>  __intel_de_wait(struct intel_display *display, i915_reg_t reg,
>  		u32 mask, u32 value, unsigned int timeout)
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> index 5634ff07269d..8056a3c8666c 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> @@ -39,7 +39,7 @@
>   * potential future use.
>   */
>  
> -#define DMC_WAKELOCK_CTL_TIMEOUT 5
> +#define DMC_WAKELOCK_CTL_TIMEOUT_US 5000
>  #define DMC_WAKELOCK_HOLD_TIME 50
>  
>  struct intel_dmc_wl_range {
> @@ -78,9 +78,9 @@ static void intel_dmc_wl_work(struct work_struct *work)
>  
>  	__intel_de_rmw_nowl(display, DMC_WAKELOCK1_CTL, DMC_WAKELOCK_CTL_REQ, 0);
>  
> -	if (__intel_de_wait_for_register_nowl(display, DMC_WAKELOCK1_CTL,
> -					      DMC_WAKELOCK_CTL_ACK, 0,
> -					      DMC_WAKELOCK_CTL_TIMEOUT)) {
> +	if (__intel_de_wait_for_register_atomic_nowl(display, DMC_WAKELOCK1_CTL,
> +						     DMC_WAKELOCK_CTL_ACK, 0,
> +						     DMC_WAKELOCK_CTL_TIMEOUT_US)) {
>  		WARN_RATELIMIT(1, "DMC wakelock release timed out");
>  		goto out_unlock;
>  	}
> @@ -216,10 +216,14 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
>  		__intel_de_rmw_nowl(display, DMC_WAKELOCK1_CTL, 0,
>  				    DMC_WAKELOCK_CTL_REQ);
>  
> -		if (__intel_de_wait_for_register_nowl(display, DMC_WAKELOCK1_CTL,
> -						      DMC_WAKELOCK_CTL_ACK,
> -						      DMC_WAKELOCK_CTL_ACK,
> -						      DMC_WAKELOCK_CTL_TIMEOUT)) {
> +		/*
> +		 * We need to use the atomic variant of the waiting routine
> +		 * because the DMC wakelock is also taken in atomic context.
> +		 */
> +		if (__intel_de_wait_for_register_atomic_nowl(display, DMC_WAKELOCK1_CTL,
> +							     DMC_WAKELOCK_CTL_ACK,
> +							     DMC_WAKELOCK_CTL_ACK,
> +							     DMC_WAKELOCK_CTL_TIMEOUT_US)) {
>  			WARN_RATELIMIT(1, "DMC wakelock ack timed out");
>  			goto out_unlock;
>  		}

-- 
Jani Nikula, Intel

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

* Re: [PATCH 11/13] drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK()
  2024-10-21 22:27 ` [PATCH 11/13] drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK() Gustavo Sousa
@ 2024-10-22  9:37   ` Jani Nikula
  2024-10-22 11:03     ` Gustavo Sousa
  0 siblings, 1 reply; 60+ messages in thread
From: Jani Nikula @ 2024-10-22  9:37 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> In order to be able to use the DMC wakelock, we also need to know that
> the display hardware has support for DMC, which is a runtime info.
> Define HAS_DMC_WAKELOCK(), which checks for both DMC availability and IP
> version, and use it in place of directly checking the display version.
>
> Since we depend on runtime info, also make sure to call
> intel_dmc_wl_init() only after we have probed the hardware for such info
> (i.e. after intel_display_device_info_runtime_init()).

Non-functional changes combined with functional changes. Please split.

BR,
Jani.

>
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
>  drivers/gpu/drm/i915/display/intel_display_driver.c | 2 +-
>  drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 4 ++--
>  3 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
> index 071a36b51f79..5f78fd127fe0 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
> @@ -128,6 +128,7 @@ enum intel_display_subplatform {
>  #define HAS_DDI(i915)			(DISPLAY_INFO(i915)->has_ddi)
>  #define HAS_DISPLAY(i915)		(DISPLAY_RUNTIME_INFO(i915)->pipe_mask != 0)
>  #define HAS_DMC(i915)			(DISPLAY_RUNTIME_INFO(i915)->has_dmc)
> +#define HAS_DMC_WAKELOCK(i915)		(HAS_DMC(i915) && DISPLAY_VER(i915) >= 20)
>  #define HAS_DOUBLE_BUFFERED_M_N(i915)	(DISPLAY_VER(i915) >= 9 || IS_BROADWELL(i915))
>  #define HAS_DP_MST(i915)		(DISPLAY_INFO(i915)->has_dp_mst)
>  #define HAS_DP20(i915)			(IS_DG2(i915) || DISPLAY_VER(i915) >= 14)
> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
> index 673f9b965494..8afaa9cb89d2 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
> @@ -200,7 +200,6 @@ void intel_display_driver_early_probe(struct drm_i915_private *i915)
>  	intel_dpll_init_clock_hook(i915);
>  	intel_init_display_hooks(i915);
>  	intel_fdi_init_hook(i915);
> -	intel_dmc_wl_init(&i915->display);
>  }
>  
>  /* part #1: call before irq install */
> @@ -238,6 +237,7 @@ int intel_display_driver_probe_noirq(struct drm_i915_private *i915)
>  		return 0;
>  
>  	intel_dmc_init(display);
> +	intel_dmc_wl_init(display);
>  
>  	i915->display.wq.modeset = alloc_ordered_workqueue("i915_modeset", 0);
>  	i915->display.wq.flip = alloc_workqueue("i915_flip", WQ_HIGHPRI |
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> index 8283b607aac4..f6ec79b0e39d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> @@ -250,7 +250,7 @@ static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
>  
>  static bool __intel_dmc_wl_supported(struct intel_display *display)
>  {
> -	if (DISPLAY_VER(display) < 20 ||
> +	if (!HAS_DMC_WAKELOCK(display) ||
>  	    !intel_dmc_has_payload(display) ||
>  	    !display->params.enable_dmc_wl)
>  		return false;
> @@ -263,7 +263,7 @@ void intel_dmc_wl_init(struct intel_display *display)
>  	struct intel_dmc_wl *wl = &display->wl;
>  
>  	/* don't call __intel_dmc_wl_supported(), DMC is not loaded yet */
> -	if (DISPLAY_VER(display) < 20 || !display->params.enable_dmc_wl)
> +	if (!HAS_DMC_WAKELOCK(display) || !display->params.enable_dmc_wl)
>  		return;
>  
>  	INIT_DELAYED_WORK(&wl->work, intel_dmc_wl_work);

-- 
Jani Nikula, Intel

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

* Re: [PATCH 02/13] drm/i915/dmc_wl: Use non-sleeping variant of MMIO wait
  2024-10-22  9:34   ` Jani Nikula
@ 2024-10-22 10:55     ` Gustavo Sousa
  2024-11-01 11:04       ` Luca Coelho
  0 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-22 10:55 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Jani Nikula (2024-10-22 06:34:44-03:00)
>On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>> Some display MMIO transactions for offsets in the range that requires
>> the DMC wakelock happen in atomic context (this has been confirmed
>> during tests on PTL). That means that we need to use a non-sleeping
>> variant of MMIO waiting function.
>>
>> Implement __intel_de_wait_for_register_atomic_nowl() and use it when
>> waiting for acknowledgment of acquire/release.
>>
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_de.h     | 11 +++++++++++
>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 20 ++++++++++++--------
>>  2 files changed, 23 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
>> index e017cd4a8168..4116783a62dd 100644
>> --- a/drivers/gpu/drm/i915/display/intel_de.h
>> +++ b/drivers/gpu/drm/i915/display/intel_de.h
>> @@ -121,6 +121,17 @@ ____intel_de_wait_for_register_nowl(struct intel_display *display,
>>  }
>>  #define __intel_de_wait_for_register_nowl(p,...) ____intel_de_wait_for_register_nowl(__to_intel_display(p), __VA_ARGS__)
>>  
>> +static inline int
>> +____intel_de_wait_for_register_atomic_nowl(struct intel_display *display,
>> +                                           i915_reg_t reg,
>> +                                           u32 mask, u32 value,
>> +                                           unsigned int fast_timeout_us)
>> +{
>> +        return __intel_wait_for_register(__to_uncore(display), reg, mask,
>> +                                         value, fast_timeout_us, 0, NULL);
>> +}
>> +#define __intel_de_wait_for_register_atomic_nowl(p,...) ____intel_de_wait_for_register_atomic_nowl(__to_intel_display(p), __VA_ARGS__)
>> +
>
>There's no need to add the wrapper when all users pass struct
>intel_display. And we don't want new users that pass i915.

Ah, okay. Thanks.

>
>And why are we adding new stuff and users with double underscores?

Well, this is a no-wakelock variant and it shouldn't be used broadly. I
believe that was the motivation of all "__intel_de_*nowl" variants being
prefixed with the underscores.

--
Gustavo Sousa

>
>>  static inline int
>>  __intel_de_wait(struct intel_display *display, i915_reg_t reg,
>>                  u32 mask, u32 value, unsigned int timeout)
>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> index 5634ff07269d..8056a3c8666c 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> @@ -39,7 +39,7 @@
>>   * potential future use.
>>   */
>>  
>> -#define DMC_WAKELOCK_CTL_TIMEOUT 5
>> +#define DMC_WAKELOCK_CTL_TIMEOUT_US 5000
>>  #define DMC_WAKELOCK_HOLD_TIME 50
>>  
>>  struct intel_dmc_wl_range {
>> @@ -78,9 +78,9 @@ static void intel_dmc_wl_work(struct work_struct *work)
>>  
>>          __intel_de_rmw_nowl(display, DMC_WAKELOCK1_CTL, DMC_WAKELOCK_CTL_REQ, 0);
>>  
>> -        if (__intel_de_wait_for_register_nowl(display, DMC_WAKELOCK1_CTL,
>> -                                              DMC_WAKELOCK_CTL_ACK, 0,
>> -                                              DMC_WAKELOCK_CTL_TIMEOUT)) {
>> +        if (__intel_de_wait_for_register_atomic_nowl(display, DMC_WAKELOCK1_CTL,
>> +                                                     DMC_WAKELOCK_CTL_ACK, 0,
>> +                                                     DMC_WAKELOCK_CTL_TIMEOUT_US)) {
>>                  WARN_RATELIMIT(1, "DMC wakelock release timed out");
>>                  goto out_unlock;
>>          }
>> @@ -216,10 +216,14 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
>>                  __intel_de_rmw_nowl(display, DMC_WAKELOCK1_CTL, 0,
>>                                      DMC_WAKELOCK_CTL_REQ);
>>  
>> -                if (__intel_de_wait_for_register_nowl(display, DMC_WAKELOCK1_CTL,
>> -                                                      DMC_WAKELOCK_CTL_ACK,
>> -                                                      DMC_WAKELOCK_CTL_ACK,
>> -                                                      DMC_WAKELOCK_CTL_TIMEOUT)) {
>> +                /*
>> +                 * We need to use the atomic variant of the waiting routine
>> +                 * because the DMC wakelock is also taken in atomic context.
>> +                 */
>> +                if (__intel_de_wait_for_register_atomic_nowl(display, DMC_WAKELOCK1_CTL,
>> +                                                             DMC_WAKELOCK_CTL_ACK,
>> +                                                             DMC_WAKELOCK_CTL_ACK,
>> +                                                             DMC_WAKELOCK_CTL_TIMEOUT_US)) {
>>                          WARN_RATELIMIT(1, "DMC wakelock ack timed out");
>>                          goto out_unlock;
>>                  }
>
>-- 
>Jani Nikula, Intel

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

* Re: [PATCH 11/13] drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK()
  2024-10-22  9:37   ` Jani Nikula
@ 2024-10-22 11:03     ` Gustavo Sousa
  2024-11-05 13:56       ` Gustavo Sousa
  0 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-22 11:03 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Jani Nikula (2024-10-22 06:37:51-03:00)
>On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>> In order to be able to use the DMC wakelock, we also need to know that
>> the display hardware has support for DMC, which is a runtime info.
>> Define HAS_DMC_WAKELOCK(), which checks for both DMC availability and IP
>> version, and use it in place of directly checking the display version.
>>
>> Since we depend on runtime info, also make sure to call
>> intel_dmc_wl_init() only after we have probed the hardware for such info
>> (i.e. after intel_display_device_info_runtime_init()).
>
>Non-functional changes combined with functional changes. Please split.

Do you mean changing the call site of intel_dmc_wl_init() as being
non-functional? Or is it something else?

If this is about the former, I would argue that's not really
non-functional, because we are changing the order of how things are
done... But if making that a standalone patch is preferred, I can do
that.

--
Gustavo Sousa

>
>BR,
>Jani.
>
>>
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
>>  drivers/gpu/drm/i915/display/intel_display_driver.c | 2 +-
>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 4 ++--
>>  3 files changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
>> index 071a36b51f79..5f78fd127fe0 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
>> @@ -128,6 +128,7 @@ enum intel_display_subplatform {
>>  #define HAS_DDI(i915)                        (DISPLAY_INFO(i915)->has_ddi)
>>  #define HAS_DISPLAY(i915)                (DISPLAY_RUNTIME_INFO(i915)->pipe_mask != 0)
>>  #define HAS_DMC(i915)                        (DISPLAY_RUNTIME_INFO(i915)->has_dmc)
>> +#define HAS_DMC_WAKELOCK(i915)                (HAS_DMC(i915) && DISPLAY_VER(i915) >= 20)
>>  #define HAS_DOUBLE_BUFFERED_M_N(i915)        (DISPLAY_VER(i915) >= 9 || IS_BROADWELL(i915))
>>  #define HAS_DP_MST(i915)                (DISPLAY_INFO(i915)->has_dp_mst)
>>  #define HAS_DP20(i915)                        (IS_DG2(i915) || DISPLAY_VER(i915) >= 14)
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
>> index 673f9b965494..8afaa9cb89d2 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
>> @@ -200,7 +200,6 @@ void intel_display_driver_early_probe(struct drm_i915_private *i915)
>>          intel_dpll_init_clock_hook(i915);
>>          intel_init_display_hooks(i915);
>>          intel_fdi_init_hook(i915);
>> -        intel_dmc_wl_init(&i915->display);
>>  }
>>  
>>  /* part #1: call before irq install */
>> @@ -238,6 +237,7 @@ int intel_display_driver_probe_noirq(struct drm_i915_private *i915)
>>                  return 0;
>>  
>>          intel_dmc_init(display);
>> +        intel_dmc_wl_init(display);
>>  
>>          i915->display.wq.modeset = alloc_ordered_workqueue("i915_modeset", 0);
>>          i915->display.wq.flip = alloc_workqueue("i915_flip", WQ_HIGHPRI |
>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> index 8283b607aac4..f6ec79b0e39d 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> @@ -250,7 +250,7 @@ static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
>>  
>>  static bool __intel_dmc_wl_supported(struct intel_display *display)
>>  {
>> -        if (DISPLAY_VER(display) < 20 ||
>> +        if (!HAS_DMC_WAKELOCK(display) ||
>>              !intel_dmc_has_payload(display) ||
>>              !display->params.enable_dmc_wl)
>>                  return false;
>> @@ -263,7 +263,7 @@ void intel_dmc_wl_init(struct intel_display *display)
>>          struct intel_dmc_wl *wl = &display->wl;
>>  
>>          /* don't call __intel_dmc_wl_supported(), DMC is not loaded yet */
>> -        if (DISPLAY_VER(display) < 20 || !display->params.enable_dmc_wl)
>> +        if (!HAS_DMC_WAKELOCK(display) || !display->params.enable_dmc_wl)
>>                  return;
>>  
>>          INIT_DELAYED_WORK(&wl->work, intel_dmc_wl_work);
>
>-- 
>Jani Nikula, Intel

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

* Re: [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states
  2024-10-22  8:03   ` Jani Nikula
@ 2024-10-22 11:06     ` Gustavo Sousa
  2024-11-05 19:54     ` Gustavo Sousa
  1 sibling, 0 replies; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-22 11:06 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Jani Nikula (2024-10-22 05:03:21-03:00)
>On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>> There are extra registers that require the DMC wakelock when specific
>> dynamic DC states are in place. Add the table ranges for them and use
>> the correct table depending on the allowed DC states.
>>
>> Bspec: 71583
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 112 +++++++++++++++++++-
>>  1 file changed, 108 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> index d597cc825f64..8bf2f32be859 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> @@ -5,6 +5,7 @@
>>  
>>  #include <linux/kernel.h>
>>  
>> +#include "i915_reg.h"
>>  #include "intel_de.h"
>>  #include "intel_dmc.h"
>>  #include "intel_dmc_regs.h"
>> @@ -52,6 +53,87 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>>          {},
>>  };
>>  
>> +static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
>> +        { .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
>> +        { .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
>> +        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>> +        { .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
>> +        { .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
>> +
>> +        /* DBUF_CTL_* */
>> +        { .start = 0x44300, .end = 0x44300 },
>> +        { .start = 0x44304, .end = 0x44304 },
>> +        { .start = 0x44f00, .end = 0x44f00 },
>> +        { .start = 0x44f04, .end = 0x44f04 },
>> +        { .start = 0x44fe8, .end = 0x44fe8 },
>> +        { .start = 0x45008, .end = 0x45008 },
>> +
>> +        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> +        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>> +        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> +
>> +        /* TRANS_CMTG_CTL_* */
>> +        { .start = 0x6fa88, .end = 0x6fa88 },
>> +        { .start = 0x6fb88, .end = 0x6fb88 },
>> +
>> +        { .start = 0x46430, .end = 0x46430 }, /* CHICKEN_DCPR_1 */
>> +        { .start = 0x46434, .end = 0x46434 }, /* CHICKEN_DCPR_2 */
>> +        { .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
>> +        { .start = 0x42084, .end = 0x42084 }, /* CHICKEN_MISC_2 */
>> +        { .start = 0x42088, .end = 0x42088 }, /* CHICKEN_MISC_3 */
>> +        { .start = 0x46160, .end = 0x46160 }, /* CMTG_CLK_SEL */
>> +        { .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
>> +
>> +        {},
>> +};
>> +
>> +static struct intel_dmc_wl_range xe3lpd_dc3co_wl_ranges[] = {
>> +        { .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
>> +
>> +        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>> +
>> +        /* DBUF_CTL_* */
>> +        { .start = 0x44300, .end = 0x44300 },
>> +        { .start = 0x44304, .end = 0x44304 },
>> +        { .start = 0x44f00, .end = 0x44f00 },
>> +        { .start = 0x44f04, .end = 0x44f04 },
>> +        { .start = 0x44fe8, .end = 0x44fe8 },
>> +        { .start = 0x45008, .end = 0x45008 },
>> +
>> +        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> +        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>> +        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> +        { .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
>> +
>> +        /* Scanline registers */
>> +        { .start = 0x70000, .end = 0x70000 },
>> +        { .start = 0x70004, .end = 0x70004 },
>> +        { .start = 0x70014, .end = 0x70014 },
>> +        { .start = 0x70018, .end = 0x70018 },
>> +        { .start = 0x71000, .end = 0x71000 },
>> +        { .start = 0x71004, .end = 0x71004 },
>> +        { .start = 0x71014, .end = 0x71014 },
>> +        { .start = 0x71018, .end = 0x71018 },
>> +        { .start = 0x72000, .end = 0x72000 },
>> +        { .start = 0x72004, .end = 0x72004 },
>> +        { .start = 0x72014, .end = 0x72014 },
>> +        { .start = 0x72018, .end = 0x72018 },
>> +        { .start = 0x73000, .end = 0x73000 },
>> +        { .start = 0x73004, .end = 0x73004 },
>> +        { .start = 0x73014, .end = 0x73014 },
>> +        { .start = 0x73018, .end = 0x73018 },
>> +        { .start = 0x7b000, .end = 0x7b000 },
>> +        { .start = 0x7b004, .end = 0x7b004 },
>> +        { .start = 0x7b014, .end = 0x7b014 },
>> +        { .start = 0x7b018, .end = 0x7b018 },
>> +        { .start = 0x7c000, .end = 0x7c000 },
>> +        { .start = 0x7c004, .end = 0x7c004 },
>> +        { .start = 0x7c014, .end = 0x7c014 },
>> +        { .start = 0x7c018, .end = 0x7c018 },
>> +
>> +        {},
>> +};
>> +
>>  static void __intel_dmc_wl_release(struct intel_display *display)
>>  {
>>          struct drm_i915_private *i915 = to_i915(display->drm);
>> @@ -106,9 +188,31 @@ static bool intel_dmc_wl_addr_in_range(u32 address,
>>          return false;
>>  }
>>  
>> -static bool intel_dmc_wl_check_range(u32 address)
>> +static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
>>  {
>> -        return intel_dmc_wl_addr_in_range(address, lnl_wl_range);
>> +        const struct intel_dmc_wl_range *ranges;
>> +
>> +        ranges = lnl_wl_range;
>> +
>> +        if (intel_dmc_wl_addr_in_range(address, ranges))
>> +                return true;
>> +
>> +        switch (display->power.domains.dc_state) {
>
>This file has no business looking at power domain guts. Use or add
>interfaces instead of poking at data directly.

Good point. Thanks.

>
>> +        case DC_STATE_EN_DC3CO:
>> +                ranges = xe3lpd_dc3co_wl_ranges;
>> +                break;
>> +        case DC_STATE_EN_UPTO_DC5:
>> +        case DC_STATE_EN_UPTO_DC6:
>> +                ranges = xe3lpd_dc5_dc6_wl_ranges;
>> +                break;
>> +        default:
>> +                ranges = NULL;
>> +        }
>> +
>> +        if (ranges && intel_dmc_wl_addr_in_range(address, ranges))
>> +                return true;
>> +
>> +        return false;
>>  }
>>  
>>  static bool __intel_dmc_wl_supported(struct intel_display *display)
>> @@ -195,7 +299,7 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
>>          if (!__intel_dmc_wl_supported(display))
>>                  return;
>>  
>> -        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
>> +        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
>
>Side note, unrelated to this patch, i915_reg_t is supposed to be opaque,
>nobody should look at reg.reg directly, there's i915_mmio_reg_offset()
>for it.

Ah, cool. I'll add a patch in v2 to have the whole file using
i915_mmio_reg_offset(). Thanks.

--
Gustavo Sousa

>
>>                  return;
>>  
>>          spin_lock_irqsave(&wl->lock, flags);
>> @@ -247,7 +351,7 @@ void intel_dmc_wl_put(struct intel_display *display, i915_reg_t reg)
>>          if (!__intel_dmc_wl_supported(display))
>>                  return;
>>  
>> -        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
>> +        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
>>                  return;
>>  
>>          spin_lock_irqsave(&wl->lock, flags);
>
>-- 
>Jani Nikula, Intel

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

* Re: [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states
  2024-10-22  8:03   ` Jani Nikula
@ 2024-10-22 11:10     ` Gustavo Sousa
  0 siblings, 0 replies; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-22 11:10 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Jani Nikula (2024-10-22 05:03:50-03:00)
>On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>> There are extra registers that require the DMC wakelock when specific
>> dynamic DC states are in place. Add the table ranges for them and use
>> the correct table depending on the allowed DC states.
>>
>> Bspec: 71583
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 112 +++++++++++++++++++-
>>  1 file changed, 108 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> index d597cc825f64..8bf2f32be859 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> @@ -5,6 +5,7 @@
>>  
>>  #include <linux/kernel.h>
>>  
>> +#include "i915_reg.h"
>
>I think you mean i915_reg_defs.h

Not really. I included i915_reg.h because of the DC_STATE_EN_* defines,
which are currently being defined there.

--
Gustavo Sousa

>
>>  #include "intel_de.h"
>>  #include "intel_dmc.h"
>>  #include "intel_dmc_regs.h"
>> @@ -52,6 +53,87 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>>          {},
>>  };
>>  
>> +static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
>> +        { .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
>> +        { .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
>> +        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>> +        { .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
>> +        { .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
>> +
>> +        /* DBUF_CTL_* */
>> +        { .start = 0x44300, .end = 0x44300 },
>> +        { .start = 0x44304, .end = 0x44304 },
>> +        { .start = 0x44f00, .end = 0x44f00 },
>> +        { .start = 0x44f04, .end = 0x44f04 },
>> +        { .start = 0x44fe8, .end = 0x44fe8 },
>> +        { .start = 0x45008, .end = 0x45008 },
>> +
>> +        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> +        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>> +        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> +
>> +        /* TRANS_CMTG_CTL_* */
>> +        { .start = 0x6fa88, .end = 0x6fa88 },
>> +        { .start = 0x6fb88, .end = 0x6fb88 },
>> +
>> +        { .start = 0x46430, .end = 0x46430 }, /* CHICKEN_DCPR_1 */
>> +        { .start = 0x46434, .end = 0x46434 }, /* CHICKEN_DCPR_2 */
>> +        { .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
>> +        { .start = 0x42084, .end = 0x42084 }, /* CHICKEN_MISC_2 */
>> +        { .start = 0x42088, .end = 0x42088 }, /* CHICKEN_MISC_3 */
>> +        { .start = 0x46160, .end = 0x46160 }, /* CMTG_CLK_SEL */
>> +        { .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
>> +
>> +        {},
>> +};
>> +
>> +static struct intel_dmc_wl_range xe3lpd_dc3co_wl_ranges[] = {
>> +        { .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
>> +
>> +        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>> +
>> +        /* DBUF_CTL_* */
>> +        { .start = 0x44300, .end = 0x44300 },
>> +        { .start = 0x44304, .end = 0x44304 },
>> +        { .start = 0x44f00, .end = 0x44f00 },
>> +        { .start = 0x44f04, .end = 0x44f04 },
>> +        { .start = 0x44fe8, .end = 0x44fe8 },
>> +        { .start = 0x45008, .end = 0x45008 },
>> +
>> +        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> +        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>> +        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> +        { .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
>> +
>> +        /* Scanline registers */
>> +        { .start = 0x70000, .end = 0x70000 },
>> +        { .start = 0x70004, .end = 0x70004 },
>> +        { .start = 0x70014, .end = 0x70014 },
>> +        { .start = 0x70018, .end = 0x70018 },
>> +        { .start = 0x71000, .end = 0x71000 },
>> +        { .start = 0x71004, .end = 0x71004 },
>> +        { .start = 0x71014, .end = 0x71014 },
>> +        { .start = 0x71018, .end = 0x71018 },
>> +        { .start = 0x72000, .end = 0x72000 },
>> +        { .start = 0x72004, .end = 0x72004 },
>> +        { .start = 0x72014, .end = 0x72014 },
>> +        { .start = 0x72018, .end = 0x72018 },
>> +        { .start = 0x73000, .end = 0x73000 },
>> +        { .start = 0x73004, .end = 0x73004 },
>> +        { .start = 0x73014, .end = 0x73014 },
>> +        { .start = 0x73018, .end = 0x73018 },
>> +        { .start = 0x7b000, .end = 0x7b000 },
>> +        { .start = 0x7b004, .end = 0x7b004 },
>> +        { .start = 0x7b014, .end = 0x7b014 },
>> +        { .start = 0x7b018, .end = 0x7b018 },
>> +        { .start = 0x7c000, .end = 0x7c000 },
>> +        { .start = 0x7c004, .end = 0x7c004 },
>> +        { .start = 0x7c014, .end = 0x7c014 },
>> +        { .start = 0x7c018, .end = 0x7c018 },
>> +
>> +        {},
>> +};
>> +
>>  static void __intel_dmc_wl_release(struct intel_display *display)
>>  {
>>          struct drm_i915_private *i915 = to_i915(display->drm);
>> @@ -106,9 +188,31 @@ static bool intel_dmc_wl_addr_in_range(u32 address,
>>          return false;
>>  }
>>  
>> -static bool intel_dmc_wl_check_range(u32 address)
>> +static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
>>  {
>> -        return intel_dmc_wl_addr_in_range(address, lnl_wl_range);
>> +        const struct intel_dmc_wl_range *ranges;
>> +
>> +        ranges = lnl_wl_range;
>> +
>> +        if (intel_dmc_wl_addr_in_range(address, ranges))
>> +                return true;
>> +
>> +        switch (display->power.domains.dc_state) {
>> +        case DC_STATE_EN_DC3CO:
>> +                ranges = xe3lpd_dc3co_wl_ranges;
>> +                break;
>> +        case DC_STATE_EN_UPTO_DC5:
>> +        case DC_STATE_EN_UPTO_DC6:
>> +                ranges = xe3lpd_dc5_dc6_wl_ranges;
>> +                break;
>> +        default:
>> +                ranges = NULL;
>> +        }
>> +
>> +        if (ranges && intel_dmc_wl_addr_in_range(address, ranges))
>> +                return true;
>> +
>> +        return false;
>>  }
>>  
>>  static bool __intel_dmc_wl_supported(struct intel_display *display)
>> @@ -195,7 +299,7 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
>>          if (!__intel_dmc_wl_supported(display))
>>                  return;
>>  
>> -        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
>> +        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
>>                  return;
>>  
>>          spin_lock_irqsave(&wl->lock, flags);
>> @@ -247,7 +351,7 @@ void intel_dmc_wl_put(struct intel_display *display, i915_reg_t reg)
>>          if (!__intel_dmc_wl_supported(display))
>>                  return;
>>  
>> -        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
>> +        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
>>                  return;
>>  
>>          spin_lock_irqsave(&wl->lock, flags);
>
>-- 
>Jani Nikula, Intel

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

* Re: [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states
  2024-10-21 22:27 ` [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states Gustavo Sousa
  2024-10-22  8:03   ` Jani Nikula
  2024-10-22  8:03   ` Jani Nikula
@ 2024-10-22 11:14   ` Gustavo Sousa
  2024-11-01 12:51   ` Luca Coelho
  3 siblings, 0 replies; 60+ messages in thread
From: Gustavo Sousa @ 2024-10-22 11:14 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Gustavo Sousa (2024-10-21 19:27:26-03:00)
>There are extra registers that require the DMC wakelock when specific
>dynamic DC states are in place. Add the table ranges for them and use
>the correct table depending on the allowed DC states.
>
>Bspec: 71583

For anyone who is reviewing this and doesn't find the ranges in that
Bspec page: I forgot to mention that the ranges are not yet listed there
and that I got them directly from the display hardware team with a note
that they would be updating the Bspec.

--
Gustavo Sousa

>Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>---
> drivers/gpu/drm/i915/display/intel_dmc_wl.c | 112 +++++++++++++++++++-
> 1 file changed, 108 insertions(+), 4 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>index d597cc825f64..8bf2f32be859 100644
>--- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>+++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>@@ -5,6 +5,7 @@
> 
> #include <linux/kernel.h>
> 
>+#include "i915_reg.h"
> #include "intel_de.h"
> #include "intel_dmc.h"
> #include "intel_dmc_regs.h"
>@@ -52,6 +53,87 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>         {},
> };
> 
>+static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
>+        { .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
>+        { .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
>+        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>+        { .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
>+        { .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
>+
>+        /* DBUF_CTL_* */
>+        { .start = 0x44300, .end = 0x44300 },
>+        { .start = 0x44304, .end = 0x44304 },
>+        { .start = 0x44f00, .end = 0x44f00 },
>+        { .start = 0x44f04, .end = 0x44f04 },
>+        { .start = 0x44fe8, .end = 0x44fe8 },
>+        { .start = 0x45008, .end = 0x45008 },
>+
>+        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>+        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>+        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>+
>+        /* TRANS_CMTG_CTL_* */
>+        { .start = 0x6fa88, .end = 0x6fa88 },
>+        { .start = 0x6fb88, .end = 0x6fb88 },
>+
>+        { .start = 0x46430, .end = 0x46430 }, /* CHICKEN_DCPR_1 */
>+        { .start = 0x46434, .end = 0x46434 }, /* CHICKEN_DCPR_2 */
>+        { .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
>+        { .start = 0x42084, .end = 0x42084 }, /* CHICKEN_MISC_2 */
>+        { .start = 0x42088, .end = 0x42088 }, /* CHICKEN_MISC_3 */
>+        { .start = 0x46160, .end = 0x46160 }, /* CMTG_CLK_SEL */
>+        { .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
>+
>+        {},
>+};
>+
>+static struct intel_dmc_wl_range xe3lpd_dc3co_wl_ranges[] = {
>+        { .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
>+
>+        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>+
>+        /* DBUF_CTL_* */
>+        { .start = 0x44300, .end = 0x44300 },
>+        { .start = 0x44304, .end = 0x44304 },
>+        { .start = 0x44f00, .end = 0x44f00 },
>+        { .start = 0x44f04, .end = 0x44f04 },
>+        { .start = 0x44fe8, .end = 0x44fe8 },
>+        { .start = 0x45008, .end = 0x45008 },
>+
>+        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>+        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>+        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>+        { .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
>+
>+        /* Scanline registers */
>+        { .start = 0x70000, .end = 0x70000 },
>+        { .start = 0x70004, .end = 0x70004 },
>+        { .start = 0x70014, .end = 0x70014 },
>+        { .start = 0x70018, .end = 0x70018 },
>+        { .start = 0x71000, .end = 0x71000 },
>+        { .start = 0x71004, .end = 0x71004 },
>+        { .start = 0x71014, .end = 0x71014 },
>+        { .start = 0x71018, .end = 0x71018 },
>+        { .start = 0x72000, .end = 0x72000 },
>+        { .start = 0x72004, .end = 0x72004 },
>+        { .start = 0x72014, .end = 0x72014 },
>+        { .start = 0x72018, .end = 0x72018 },
>+        { .start = 0x73000, .end = 0x73000 },
>+        { .start = 0x73004, .end = 0x73004 },
>+        { .start = 0x73014, .end = 0x73014 },
>+        { .start = 0x73018, .end = 0x73018 },
>+        { .start = 0x7b000, .end = 0x7b000 },
>+        { .start = 0x7b004, .end = 0x7b004 },
>+        { .start = 0x7b014, .end = 0x7b014 },
>+        { .start = 0x7b018, .end = 0x7b018 },
>+        { .start = 0x7c000, .end = 0x7c000 },
>+        { .start = 0x7c004, .end = 0x7c004 },
>+        { .start = 0x7c014, .end = 0x7c014 },
>+        { .start = 0x7c018, .end = 0x7c018 },
>+
>+        {},
>+};
>+
> static void __intel_dmc_wl_release(struct intel_display *display)
> {
>         struct drm_i915_private *i915 = to_i915(display->drm);
>@@ -106,9 +188,31 @@ static bool intel_dmc_wl_addr_in_range(u32 address,
>         return false;
> }
> 
>-static bool intel_dmc_wl_check_range(u32 address)
>+static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
> {
>-        return intel_dmc_wl_addr_in_range(address, lnl_wl_range);
>+        const struct intel_dmc_wl_range *ranges;
>+
>+        ranges = lnl_wl_range;
>+
>+        if (intel_dmc_wl_addr_in_range(address, ranges))
>+                return true;
>+
>+        switch (display->power.domains.dc_state) {
>+        case DC_STATE_EN_DC3CO:
>+                ranges = xe3lpd_dc3co_wl_ranges;
>+                break;
>+        case DC_STATE_EN_UPTO_DC5:
>+        case DC_STATE_EN_UPTO_DC6:
>+                ranges = xe3lpd_dc5_dc6_wl_ranges;
>+                break;
>+        default:
>+                ranges = NULL;
>+        }
>+
>+        if (ranges && intel_dmc_wl_addr_in_range(address, ranges))
>+                return true;
>+
>+        return false;
> }
> 
> static bool __intel_dmc_wl_supported(struct intel_display *display)
>@@ -195,7 +299,7 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
>         if (!__intel_dmc_wl_supported(display))
>                 return;
> 
>-        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
>+        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
>                 return;
> 
>         spin_lock_irqsave(&wl->lock, flags);
>@@ -247,7 +351,7 @@ void intel_dmc_wl_put(struct intel_display *display, i915_reg_t reg)
>         if (!__intel_dmc_wl_supported(display))
>                 return;
> 
>-        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
>+        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
>                 return;
> 
>         spin_lock_irqsave(&wl->lock, flags);
>-- 
>2.47.0
>

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

* Re: [PATCH 01/13] drm/xe: Mimic i915 behavior for non-sleeping MMIO wait
  2024-10-21 22:27 ` [PATCH 01/13] drm/xe: Mimic i915 behavior for non-sleeping MMIO wait Gustavo Sousa
@ 2024-11-01 10:57   ` Luca Coelho
  2024-11-05 12:17     ` Gustavo Sousa
  0 siblings, 1 reply; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 10:57 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> In upcoming display changes, we will modify the DMC wakelock MMIO
> waiting code to choose a non-sleeping variant implementation, because
> the wakelock is also taking in atomic context.
> 
> While xe provides an explicit parameter (namely "atomic") to prevent
> xe_mmio_wait32() from sleeping, i915 does not and implements that
> behavior when slow_timeout_ms is zero.
> 
> So, for now, let's mimic what i915 does to allow for display to use
> non-sleeping MMIO wait. In the future, we should come up with a better
> and explicit interface for this behavior in i915, at least while display
> code is not an independent entity with proper interfaces between xe and
> i915.
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---

Makes sense.

Reviewed-by: Luca Coelho <luciano.coelho@intel.com>

Just one question/comment below.


>  .../gpu/drm/xe/compat-i915-headers/intel_uncore.h   | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
> index 0382beb4035b..5a57f76c1760 100644
> --- a/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
> +++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
> @@ -117,10 +117,21 @@ __intel_wait_for_register(struct intel_uncore *uncore, i915_reg_t i915_reg,
>  			  unsigned int slow_timeout_ms, u32 *out_value)
>  {
>  	struct xe_reg reg = XE_REG(i915_mmio_reg_offset(i915_reg));
> +	bool atomic;
> +
> +	/*
> +	 * FIXME: We are trying to replicate the behavior from i915 here, in
> +	 * which sleep is not performed if slow_timeout_ms == 0. This hack is
> +	 * necessary because of paths in display code that are executed in
> +	 * atomic context. Setting the atomic flag based on timeout values
> +	 * doesn't feel very robust. Ideally, we should have a proper interface
> +	 * for explicitly choosing non-sleeping behavior.

I think this is just a matter of semantics.  It would look nicer to
have a more intuitive interface, but I don't think the i915
implementation is any less robust per se.  If this behavior is
documented properly, I don't see it as a real issue.

--
Cheers,
Luca.

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

* Re: [PATCH 02/13] drm/i915/dmc_wl: Use non-sleeping variant of MMIO wait
  2024-10-22 10:55     ` Gustavo Sousa
@ 2024-11-01 11:04       ` Luca Coelho
  0 siblings, 0 replies; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 11:04 UTC (permalink / raw)
  To: Gustavo Sousa, Jani Nikula, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Tue, 2024-10-22 at 07:55 -0300, Gustavo Sousa wrote:
> Quoting Jani Nikula (2024-10-22 06:34:44-03:00)
> > On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> > > Some display MMIO transactions for offsets in the range that requires
> > > the DMC wakelock happen in atomic context (this has been confirmed
> > > during tests on PTL). That means that we need to use a non-sleeping
> > > variant of MMIO waiting function.
> > > 
> > > Implement __intel_de_wait_for_register_atomic_nowl() and use it when
> > > waiting for acknowledgment of acquire/release.
> > > 
> > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_de.h     | 11 +++++++++++
> > >  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 20 ++++++++++++--------
> > >  2 files changed, 23 insertions(+), 8 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
> > > index e017cd4a8168..4116783a62dd 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_de.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_de.h
> > > @@ -121,6 +121,17 @@ ____intel_de_wait_for_register_nowl(struct intel_display *display,
> > >  }
> > >  #define __intel_de_wait_for_register_nowl(p,...) ____intel_de_wait_for_register_nowl(__to_intel_display(p), __VA_ARGS__)
> > >  
> > > +static inline int
> > > +____intel_de_wait_for_register_atomic_nowl(struct intel_display *display,
> > > +                                           i915_reg_t reg,
> > > +                                           u32 mask, u32 value,
> > > +                                           unsigned int fast_timeout_us)
> > > +{
> > > +        return __intel_wait_for_register(__to_uncore(display), reg, mask,
> > > +                                         value, fast_timeout_us, 0, NULL);
> > > +}
> > > +#define __intel_de_wait_for_register_atomic_nowl(p,...) ____intel_de_wait_for_register_atomic_nowl(__to_intel_display(p), __VA_ARGS__)
> > > +
> > 
> > There's no need to add the wrapper when all users pass struct
> > intel_display. And we don't want new users that pass i915.
> 
> Ah, okay. Thanks.
> 
> > 
> > And why are we adding new stuff and users with double underscores?
> 
> Well, this is a no-wakelock variant and it shouldn't be used broadly. I
> believe that was the motivation of all "__intel_de_*nowl" variants being
> prefixed with the underscores.

Yes, that's exactly the idea in the code I added earlier.  The double
underscore is used for non-locking functions that are called by their
locking versions.  And should only be used elsewhere in very specific
cases.

--
Cheers,
Luca.

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

* Re: [PATCH 02/13] drm/i915/dmc_wl: Use non-sleeping variant of MMIO wait
  2024-10-21 22:27 ` [PATCH 02/13] drm/i915/dmc_wl: Use non-sleeping variant of " Gustavo Sousa
  2024-10-22  9:34   ` Jani Nikula
@ 2024-11-01 11:18   ` Luca Coelho
  1 sibling, 0 replies; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 11:18 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> Some display MMIO transactions for offsets in the range that requires
> the DMC wakelock happen in atomic context (this has been confirmed
> during tests on PTL). That means that we need to use a non-sleeping
> variant of MMIO waiting function.
> 
> Implement __intel_de_wait_for_register_atomic_nowl() and use it when
> waiting for acknowledgment of acquire/release.
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_de.h     | 11 +++++++++++
>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 20 ++++++++++++--------
>  2 files changed, 23 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_de.h b/drivers/gpu/drm/i915/display/intel_de.h
> index e017cd4a8168..4116783a62dd 100644
> --- a/drivers/gpu/drm/i915/display/intel_de.h
> +++ b/drivers/gpu/drm/i915/display/intel_de.h
> @@ -121,6 +121,17 @@ ____intel_de_wait_for_register_nowl(struct intel_display *display,
>  }
>  #define __intel_de_wait_for_register_nowl(p,...) ____intel_de_wait_for_register_nowl(__to_intel_display(p), __VA_ARGS__)
>  
> +static inline int
> +____intel_de_wait_for_register_atomic_nowl(struct intel_display *display,
> +					   i915_reg_t reg,
> +					   u32 mask, u32 value,
> +					   unsigned int fast_timeout_us)
> +{
> +	return __intel_wait_for_register(__to_uncore(display), reg, mask,
> +					 value, fast_timeout_us, 0, NULL);
> +}
> +#define __intel_de_wait_for_register_atomic_nowl(p,...) ____intel_de_wait_for_register_atomic_nowl(__to_intel_display(p), __VA_ARGS__)
> +
>  static inline int
>  __intel_de_wait(struct intel_display *display, i915_reg_t reg,
>  		u32 mask, u32 value, unsigned int timeout)
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> index 5634ff07269d..8056a3c8666c 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> @@ -39,7 +39,7 @@
>   * potential future use.
>   */
>  
> -#define DMC_WAKELOCK_CTL_TIMEOUT 5
> +#define DMC_WAKELOCK_CTL_TIMEOUT_US 5000

Maybe this deserves a small explanation in the commit message saying
that you need to use the microsecond variant (fast_timeout_us) because
that makes it atomic further down the call chain?

--
Cheers,
Luca.

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

* Re: [PATCH 03/13] drm/i915/dmc_wl: Check for non-zero refcount in release work
  2024-10-21 22:27 ` [PATCH 03/13] drm/i915/dmc_wl: Check for non-zero refcount in release work Gustavo Sousa
@ 2024-11-01 11:48   ` Luca Coelho
  0 siblings, 0 replies; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 11:48 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> When the DMC wakelock refcount reaches zero, we know that there are no
> users and that we can do the actual release operation on the hardware,
> which is queued with a delayed work. The idea of the delayed work is to
> avoid performing the release if a new lock user appears (i.e. refcount
> gets incremented) in a very short period of time.
> 
> Based on the above, the release work should bail out if refcount is
> non-zero (meaning new lock users appeared in the meantime), but our
> current code actually does the opposite: it bails when refcount is zero.
> That means that the wakelock is not released when it should be; and
> that, when the work is not canceled in time, it ends up being releasing
> when it should not.
> 
> Fix that by inverting the condition.
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> index 8056a3c8666c..c298aef89449 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> @@ -72,8 +72,11 @@ static void intel_dmc_wl_work(struct work_struct *work)
>  
>  	spin_lock_irqsave(&wl->lock, flags);
>  
> -	/* Bail out if refcount reached zero while waiting for the spinlock */
> -	if (!refcount_read(&wl->refcount))
> +	/*
> +	 * Bail out if refcount became non-zero while waiting for the spinlock,
> +	 * meaning that the lock is now taken again.
> +	 */
> +	if (refcount_read(&wl->refcount))
>  		goto out_unlock;
>  
>  	__intel_de_rmw_nowl(display, DMC_WAKELOCK1_CTL, DMC_WAKELOCK_CTL_REQ, 0);

Oh, this was probably hard to catch.  I think this is a buggy leftover
from my earlier implementations where I was decreasing the refcount
only here.

Reviewed-by: Luca Coelho <luciano.coelho@intel.com>

--
Cheers,
Luca.

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

* Re: [PATCH 04/13] drm/i915/dmc_wl: Get wakelock when disabling dynamic DC states
  2024-10-21 22:27 ` [PATCH 04/13] drm/i915/dmc_wl: Get wakelock when disabling dynamic DC states Gustavo Sousa
@ 2024-11-01 12:24   ` Luca Coelho
  2024-11-05 12:44     ` Gustavo Sousa
  0 siblings, 1 reply; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 12:24 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> Bspec says that disabling dynamic DC states require taking the DMC
> wakelock to cause an DC exit before writing to DC_STATE_EN. Implement
> that.
> 
> In fact, testing on PTL revealed we end up failing to exit DC5/6 without
> this step.
> 
> Bspec: 71583
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  .../drm/i915/display/intel_display_power_well.c    | 10 +++++++---
>  drivers/gpu/drm/i915/display/intel_dmc_wl.c        | 14 ++++++++++++--
>  drivers/gpu/drm/i915/display/intel_dmc_wl.h        |  2 ++
>  3 files changed, 21 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power_well.c b/drivers/gpu/drm/i915/display/intel_display_power_well.c
> index adaf7cf3a33b..e8946ce86aaa 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power_well.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_power_well.c
> @@ -987,10 +987,14 @@ void gen9_disable_dc_states(struct intel_display *display)
>  		return;
>  	}
>  
> -	gen9_set_dc_state(display, DC_STATE_DISABLE);
> -
> -	if (!HAS_DISPLAY(display))
> +	if (HAS_DISPLAY(display)) {
> +		intel_dmc_wl_get_noreg(display);
> +		gen9_set_dc_state(display, DC_STATE_DISABLE);
> +		intel_dmc_wl_put_noreg(display);
> +	} else {
> +		gen9_set_dc_state(display, DC_STATE_DISABLE);
>  		return;
> +	}

I think intel_dmc_get/put() already protect indirectly on
HAS_DISPLAY(), doesn't it? If that's the case, then the if here is
unnecessary.

--
Cheers,
Luca.

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

* Re: [PATCH 05/13] drm/i915/dmc_wl: Use sentinel item for range tables
  2024-10-21 22:27 ` [PATCH 05/13] drm/i915/dmc_wl: Use sentinel item for range tables Gustavo Sousa
@ 2024-11-01 12:25   ` Luca Coelho
  0 siblings, 0 replies; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 12:25 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> We are currently using ARRAY_SIZE() to iterate address ranges in
> intel_dmc_wl_check_range(). In upcoming changes, we will be using more
> than a single table and will extract the range checking logic into a
> dedicated function that takes a range table as argument. As we will not
> able to use ARRAY_SIZE() then, let's make range tables contain a
> sentinel item at the end and use that instead of having to pass the size
> as parameter in this future function.
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---

Reviewed-by: Luca Coelho <luciano.coelho@intel.com>

--
Cheers,
Luca.

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

* Re: [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states
  2024-10-21 22:27 ` [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states Gustavo Sousa
                     ` (2 preceding siblings ...)
  2024-10-22 11:14   ` Gustavo Sousa
@ 2024-11-01 12:51   ` Luca Coelho
  2024-11-05 13:00     ` Gustavo Sousa
  3 siblings, 1 reply; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 12:51 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> There are extra registers that require the DMC wakelock when specific
> dynamic DC states are in place. Add the table ranges for them and use
> the correct table depending on the allowed DC states.
> 
> Bspec: 71583
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 112 +++++++++++++++++++-
>  1 file changed, 108 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> index d597cc825f64..8bf2f32be859 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> @@ -5,6 +5,7 @@
>  
>  #include <linux/kernel.h>
>  
> +#include "i915_reg.h"
>  #include "intel_de.h"
>  #include "intel_dmc.h"
>  #include "intel_dmc_regs.h"
> @@ -52,6 +53,87 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>  	{},
>  };

Do we still need the lnl_wl_range[]? This was sort of a place-holder
with a very large range just for testing.  I can see that there are at
least some ranges in common between lnl_wl_range[] and the new range
tables defined below.


> +static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
> +	{ .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
> +	{ .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
> +	{ .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
> +	{ .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
> +	{ .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
> +
> +	/* DBUF_CTL_* */
> +	{ .start = 0x44300, .end = 0x44300 },
> +	{ .start = 0x44304, .end = 0x44304 },
> +	{ .start = 0x44f00, .end = 0x44f00 },
> +	{ .start = 0x44f04, .end = 0x44f04 },
> +	{ .start = 0x44fe8, .end = 0x44fe8 },
> +	{ .start = 0x45008, .end = 0x45008 },
> +
> +	{ .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
> +	{ .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
> +	{ .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
> +
> +	/* TRANS_CMTG_CTL_* */
> +	{ .start = 0x6fa88, .end = 0x6fa88 },
> +	{ .start = 0x6fb88, .end = 0x6fb88 },

These, for instance, are part of lnl_wl_range[].


> +
> +	{ .start = 0x46430, .end = 0x46430 }, /* CHICKEN_DCPR_1 */
> +	{ .start = 0x46434, .end = 0x46434 }, /* CHICKEN_DCPR_2 */
> +	{ .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
> +	{ .start = 0x42084, .end = 0x42084 }, /* CHICKEN_MISC_2 */
> +	{ .start = 0x42088, .end = 0x42088 }, /* CHICKEN_MISC_3 */
> +	{ .start = 0x46160, .end = 0x46160 }, /* CMTG_CLK_SEL */
> +	{ .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
> +
> +	{},
> +};
> +
> +static struct intel_dmc_wl_range xe3lpd_dc3co_wl_ranges[] = {
> +	{ .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
> +
> +	{ .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
> +
> +	/* DBUF_CTL_* */
> +	{ .start = 0x44300, .end = 0x44300 },
> +	{ .start = 0x44304, .end = 0x44304 },
> +	{ .start = 0x44f00, .end = 0x44f00 },
> +	{ .start = 0x44f04, .end = 0x44f04 },
> +	{ .start = 0x44fe8, .end = 0x44fe8 },
> +	{ .start = 0x45008, .end = 0x45008 },
> +
> +	{ .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
> +	{ .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
> +	{ .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
> +	{ .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
> +
> +	/* Scanline registers */
> +	{ .start = 0x70000, .end = 0x70000 },
> +	{ .start = 0x70004, .end = 0x70004 },
> +	{ .start = 0x70014, .end = 0x70014 },
> +	{ .start = 0x70018, .end = 0x70018 },
> +	{ .start = 0x71000, .end = 0x71000 },
> +	{ .start = 0x71004, .end = 0x71004 },
> +	{ .start = 0x71014, .end = 0x71014 },
> +	{ .start = 0x71018, .end = 0x71018 },
> +	{ .start = 0x72000, .end = 0x72000 },
> +	{ .start = 0x72004, .end = 0x72004 },
> +	{ .start = 0x72014, .end = 0x72014 },
> +	{ .start = 0x72018, .end = 0x72018 },
> +	{ .start = 0x73000, .end = 0x73000 },
> +	{ .start = 0x73004, .end = 0x73004 },
> +	{ .start = 0x73014, .end = 0x73014 },
> +	{ .start = 0x73018, .end = 0x73018 },
> +	{ .start = 0x7b000, .end = 0x7b000 },
> +	{ .start = 0x7b004, .end = 0x7b004 },
> +	{ .start = 0x7b014, .end = 0x7b014 },
> +	{ .start = 0x7b018, .end = 0x7b018 },
> +	{ .start = 0x7c000, .end = 0x7c000 },
> +	{ .start = 0x7c004, .end = 0x7c004 },
> +	{ .start = 0x7c014, .end = 0x7c014 },
> +	{ .start = 0x7c018, .end = 0x7c018 },

And so are all these.


--
Cheers,
Luca.

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

* Re: [PATCH 08/13] drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables
  2024-10-21 22:27 ` [PATCH 08/13] drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables Gustavo Sousa
@ 2024-11-01 12:58   ` Luca Coelho
  2024-11-05 13:42     ` Gustavo Sousa
  0 siblings, 1 reply; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 12:58 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> Allow simpler syntax for defining entries for single registers in range
> tables. That makes them easier to type as well as to read, allowing one
> to quickly tell whether a range actually refers to a single register or
> a "true range".
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 118 ++++++++++----------
>  1 file changed, 60 insertions(+), 58 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> index 8bf2f32be859..6992ce654e75 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> @@ -54,82 +54,82 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>  };
>  
>  static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
> -	{ .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
> +	{ .start = 0x45500 }, /* DC_STATE_SEL */
>  	{ .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
> -	{ .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
> +	{ .start = 0x45504 }, /* DC_STATE_EN */
>  	{ .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
> -	{ .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
> +	{ .start = 0x454f0 }, /* RETENTION_CTRL */
>  
>  	/* DBUF_CTL_* */
> -	{ .start = 0x44300, .end = 0x44300 },
> -	{ .start = 0x44304, .end = 0x44304 },
> -	{ .start = 0x44f00, .end = 0x44f00 },
> -	{ .start = 0x44f04, .end = 0x44f04 },
> -	{ .start = 0x44fe8, .end = 0x44fe8 },
> -	{ .start = 0x45008, .end = 0x45008 },
> +	{ .start = 0x44300 },
> +	{ .start = 0x44304 },
> +	{ .start = 0x44f00 },
> +	{ .start = 0x44f04 },
> +	{ .start = 0x44fe8 },
> +	{ .start = 0x45008 },
>  
> -	{ .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
> -	{ .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
> -	{ .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
> +	{ .start = 0x46070 }, /* CDCLK_PLL_ENABLE */
> +	{ .start = 0x46000 }, /* CDCLK_CTL */
> +	{ .start = 0x46008 }, /* CDCLK_SQUASH_CTL */

Many of these are probably actually ranges.  I'm not a HW guy, but
these are probably blocks that need the wakelock and it just happens
that many of those addresses are actually not used, but would need a
wakelock if they were used?

IOW, e.g. all these DBUF_CTL registers are probably in the same range
that needs wakelocks (i.e. 0x44300-0x46fff)? Do we really need to
define many of these individually?

This is related to the previous patch as well, but I decided to comment
it here because it becomes clearer.

--
Cheers,
Luca.

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

* Re: [PATCH 09/13] drm/i915/dmc_wl: Deal with existing references when disabling
  2024-10-21 22:27 ` [PATCH 09/13] drm/i915/dmc_wl: Deal with existing references when disabling Gustavo Sousa
@ 2024-11-01 14:17   ` Luca Coelho
  0 siblings, 0 replies; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 14:17 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> It is possible that there are active wakelock references at the time we
> are disabling the DMC wakelock mechanism. We need to deal with that in
> two ways:
> 
> (A) Implement the missing step from Bspec:
> 
>     The Bspec instructs us to clear any existing wakelock request bit
>     after disabling the mechanism. That gives a clue that it is okay to
>     disable while there are locks held and we do not need to wait for
>     them. However, since the spec is not explicit about it, we need
>     still to get confirmation with the hardware team. Let's thus
>     implement the spec and add a TODO note.
> 
> (B) Ensure a consistent driver state:
> 
>     The enable/disable logic would be problematic if the following
>     sequence of events would happen:
> 
>     1. Function A calls intel_dmc_wl_get();
>     2. Some function calls intel_dmc_wl_disable();
>     3. Some function calls intel_dmc_wl_enable();
>     4. Function A is done and calls intel_dmc_wl_put().
> 
>     At (2), the refcount becomes zero and then (4) causes an invalid
>     decrement to the refcount. That would cause some issues:
> 
>         - At the time between (3) and (4), function A would think that
>           the hardware lock is held but it could not be really held
>           until intel_dmc_wl_get() is called by something else.
>         - The call made to (4) could cause the refcount to become zero
>           and consequently the hardware lock to be released while there
>           could be innocent paths trusting they still have the lock.
> 
>     To fix that, we need to keep the refcount correctly in sync with
>     intel_dmc_wl_{get,put}() calls and retake the hardware lock when
>     enabling the DMC wakelock with a non-zero refcount.
> 
>     One missing piece left to be handled here is the following scenario:
> 
>     1. Function A calls intel_dmc_wl_get();
>     2. Some function calls intel_dmc_wl_disable();
>     3. Some function calls intel_dmc_wl_enable();
>     4. Concurrently with (3), function A performs the MMIO in between
>        setting DMC_WAKELOCK_CFG_ENABLE and asserting the lock with
>        __intel_dmc_wl_take().
> 
>     I'm mostly sure this would cause issues future display IPs if DMC
>     trap implementation was completely removed. We need to check with
>     the hardware team whether it would be safe to assert the hardware
>     lock before setting DMC_WAKELOCK_CFG_ENABLE to avoid this scenario.
>     If not, then we would have to deal with that via software
>     synchronization.
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---

Reviewed-by: Luca Coelho <luciano.coelho@intel.com>

--
Cheers,
Luca.

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

* Re: [PATCH 10/13] drm/i915/dmc_wl: Couple enable/disable with dynamic DC states
  2024-10-21 22:27 ` [PATCH 10/13] drm/i915/dmc_wl: Couple enable/disable with dynamic DC states Gustavo Sousa
@ 2024-11-01 14:19   ` Luca Coelho
  0 siblings, 0 replies; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 14:19 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> Enabling and disabling the DMC wakelock should be done as part of
> enabling and disabling of dynamic DC states, respectively. We should not
> enable or disable DMC wakelock independently of DC states, otherwise we
> would risk ending up with an inconsistent state where dynamic DC states
> are enabled and the DMC wakelock is disabled, going against current
> recommendations and making MMIO transactions potentially slower. In
> future display IPs that could have a worse outcome if DMC trap
> implementation is completely removed.
> 
> So, let's make things safer by tying stuff together, removing the
> independent calls, and also put warnings in place to detect inconsistent
> calls.
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---

Reviewed-by: Luca Coelho <luciano.coelho@intel.com>

--
Cheers,
Luca.

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

* Re: [PATCH 12/13] drm/i915/dmc_wl: Sanitize enable_dmc_wl according to hardware support
  2024-10-21 22:27 ` [PATCH 12/13] drm/i915/dmc_wl: Sanitize enable_dmc_wl according to hardware support Gustavo Sousa
@ 2024-11-01 14:25   ` Luca Coelho
  0 siblings, 0 replies; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 14:25 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> Instead of checking for HAS_DMC_WAKELOCK() multiple times, let's use it
> to sanitize the enable_dmc_wl parameter and use that variable when
> necessary.
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---

Reviewed-by: Luca Coelho <luciano.coelho@intel.com>

--
Cheers,
Luca.

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

* Re: [PATCH 13/13] drm/i915/xe3lpd: Use DMC wakelock by default
  2024-10-21 22:27 ` [PATCH 13/13] drm/i915/xe3lpd: Use DMC wakelock by default Gustavo Sousa
@ 2024-11-01 14:27   ` Luca Coelho
  2024-11-05 13:46     ` Gustavo Sousa
  0 siblings, 1 reply; 60+ messages in thread
From: Luca Coelho @ 2024-11-01 14:27 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> Although Bspec doesn't explicitly mentions that, as of Xe3_LPD, using
> DMC wakelock is the officially recommended way of accessing registers
> that would be off during DC5/DC6 and the legacy method (where the DMC
> intercepts MMIO to wake up the hardware) is to be avoided.
> 
> As such, update the driver to use the DMC wakelock by default starting
> with Xe3_LPD. Since the feature is somewhat new to the driver, also
> allow disabling it via a module parameter for debugging purposes.
> 
> For that, make the existing parameter allow values -1 (per-chip
> default), 0 (disabled) and 1 (enabled), similarly to what is done for
> other parameters.
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display_params.c | 4 ++--
>  drivers/gpu/drm/i915/display/intel_display_params.h | 2 +-
>  drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 6 +++++-
>  3 files changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
> index 024de8abcb1a..bf00e5f1f145 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_params.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_params.c
> @@ -123,10 +123,10 @@ intel_display_param_named_unsafe(enable_psr2_sel_fetch, bool, 0400,
>  	"(0=disabled, 1=enabled) "
>  	"Default: 1");
>  
> -intel_display_param_named_unsafe(enable_dmc_wl, bool, 0400,
> +intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
>  	"Enable DMC wakelock "
>  	"(0=disabled, 1=enabled) "
> -	"Default: 0");
> +	"Default: -1 (use per-chip default)");

We're already explaining the possible values in the previous
parentheses, so maybe the -1 should also be explained there?

--
Cheers,
Luca.

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

* Re: [PATCH 01/13] drm/xe: Mimic i915 behavior for non-sleeping MMIO wait
  2024-11-01 10:57   ` Luca Coelho
@ 2024-11-05 12:17     ` Gustavo Sousa
  0 siblings, 0 replies; 60+ messages in thread
From: Gustavo Sousa @ 2024-11-05 12:17 UTC (permalink / raw)
  To: Luca Coelho, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Luca Coelho (2024-11-01 07:57:58-03:00)
>On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
>> In upcoming display changes, we will modify the DMC wakelock MMIO
>> waiting code to choose a non-sleeping variant implementation, because
>> the wakelock is also taking in atomic context.
>> 
>> While xe provides an explicit parameter (namely "atomic") to prevent
>> xe_mmio_wait32() from sleeping, i915 does not and implements that
>> behavior when slow_timeout_ms is zero.
>> 
>> So, for now, let's mimic what i915 does to allow for display to use
>> non-sleeping MMIO wait. In the future, we should come up with a better
>> and explicit interface for this behavior in i915, at least while display
>> code is not an independent entity with proper interfaces between xe and
>> i915.
>> 
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>
>Makes sense.
>
>Reviewed-by: Luca Coelho <luciano.coelho@intel.com>

Thanks!

>
>Just one question/comment below.
>
>
>>  .../gpu/drm/xe/compat-i915-headers/intel_uncore.h   | 13 ++++++++++++-
>>  1 file changed, 12 insertions(+), 1 deletion(-)
>> 
>> diff --git a/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h b/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
>> index 0382beb4035b..5a57f76c1760 100644
>> --- a/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
>> +++ b/drivers/gpu/drm/xe/compat-i915-headers/intel_uncore.h
>> @@ -117,10 +117,21 @@ __intel_wait_for_register(struct intel_uncore *uncore, i915_reg_t i915_reg,
>>                            unsigned int slow_timeout_ms, u32 *out_value)
>>  {
>>          struct xe_reg reg = XE_REG(i915_mmio_reg_offset(i915_reg));
>> +        bool atomic;
>> +
>> +        /*
>> +         * FIXME: We are trying to replicate the behavior from i915 here, in
>> +         * which sleep is not performed if slow_timeout_ms == 0. This hack is
>> +         * necessary because of paths in display code that are executed in
>> +         * atomic context. Setting the atomic flag based on timeout values
>> +         * doesn't feel very robust. Ideally, we should have a proper interface
>> +         * for explicitly choosing non-sleeping behavior.
>
>I think this is just a matter of semantics.  It would look nicer to
>have a more intuitive interface, but I don't think the i915
>implementation is any less robust per se.  If this behavior is
>documented properly, I don't see it as a real issue.

Ah, well... Yeah, I guess I was too hard on i915. I'll replace this
comment with a quick note only mentioning that we are replicating the
behavior then.

Thanks!

--
Gustavo Sousa

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

* Re: [PATCH 04/13] drm/i915/dmc_wl: Get wakelock when disabling dynamic DC states
  2024-11-01 12:24   ` Luca Coelho
@ 2024-11-05 12:44     ` Gustavo Sousa
  2024-11-06 11:37       ` Luca Coelho
  0 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-11-05 12:44 UTC (permalink / raw)
  To: Luca Coelho, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Luca Coelho (2024-11-01 09:24:08-03:00)
>On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
>> Bspec says that disabling dynamic DC states require taking the DMC
>> wakelock to cause an DC exit before writing to DC_STATE_EN. Implement
>> that.
>> 
>> In fact, testing on PTL revealed we end up failing to exit DC5/6 without
>> this step.
>> 
>> Bspec: 71583
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  .../drm/i915/display/intel_display_power_well.c    | 10 +++++++---
>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c        | 14 ++++++++++++--
>>  drivers/gpu/drm/i915/display/intel_dmc_wl.h        |  2 ++
>>  3 files changed, 21 insertions(+), 5 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_power_well.c b/drivers/gpu/drm/i915/display/intel_display_power_well.c
>> index adaf7cf3a33b..e8946ce86aaa 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_power_well.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_power_well.c
>> @@ -987,10 +987,14 @@ void gen9_disable_dc_states(struct intel_display *display)
>>                  return;
>>          }
>>  
>> -        gen9_set_dc_state(display, DC_STATE_DISABLE);
>> -
>> -        if (!HAS_DISPLAY(display))
>> +        if (HAS_DISPLAY(display)) {
>> +                intel_dmc_wl_get_noreg(display);
>> +                gen9_set_dc_state(display, DC_STATE_DISABLE);
>> +                intel_dmc_wl_put_noreg(display);
>> +        } else {
>> +                gen9_set_dc_state(display, DC_STATE_DISABLE);
>>                  return;
>> +        }
>
>I think intel_dmc_get/put() already protect indirectly on
>HAS_DISPLAY(), doesn't it? If that's the case, then the if here is
>unnecessary.

Actually, intel_dmc_wl_init() gets called only when HAS_DISPLAY() is
true, so I think using intel_dmc_wl_{get,put}_noreg() for the
!HAS_DISPLAY() case would not be right, at least not with the current
state of the code.

--
Gustavo Sousa

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

* Re: [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states
  2024-11-01 12:51   ` Luca Coelho
@ 2024-11-05 13:00     ` Gustavo Sousa
  2024-11-06 11:47       ` Luca Coelho
  0 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-11-05 13:00 UTC (permalink / raw)
  To: Luca Coelho, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Luca Coelho (2024-11-01 09:51:48-03:00)
>On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
>> There are extra registers that require the DMC wakelock when specific
>> dynamic DC states are in place. Add the table ranges for them and use
>> the correct table depending on the allowed DC states.
>> 
>> Bspec: 71583
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 112 +++++++++++++++++++-
>>  1 file changed, 108 insertions(+), 4 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> index d597cc825f64..8bf2f32be859 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> @@ -5,6 +5,7 @@
>>  
>>  #include <linux/kernel.h>
>>  
>> +#include "i915_reg.h"
>>  #include "intel_de.h"
>>  #include "intel_dmc.h"
>>  #include "intel_dmc_regs.h"
>> @@ -52,6 +53,87 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>>          {},
>>  };
>
>Do we still need the lnl_wl_range[]? This was sort of a place-holder
>with a very large range just for testing.  I can see that there are at
>least some ranges in common between lnl_wl_range[] and the new range
>tables defined below.

Yes, although we could do some homework to get a more accurate set of
ranges.

Now, about the different tables:

 - lnl_wl_range should be about ranges of registers that are powered
   down during DC states and that the HW requires DC exit for proper
   access.
 - xe3lpd_{dc5_dc6,dc3co}_wl_ranges are registers that are touched by
   the DMC and need the wakelock for properly restoring the correct
   value before accessing them.

Maybe a comment in the code explaining the above is warranted?

>
>
>> +static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
>> +        { .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
>> +        { .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
>> +        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>> +        { .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
>> +        { .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
>> +
>> +        /* DBUF_CTL_* */
>> +        { .start = 0x44300, .end = 0x44300 },
>> +        { .start = 0x44304, .end = 0x44304 },
>> +        { .start = 0x44f00, .end = 0x44f00 },
>> +        { .start = 0x44f04, .end = 0x44f04 },
>> +        { .start = 0x44fe8, .end = 0x44fe8 },
>> +        { .start = 0x45008, .end = 0x45008 },
>> +
>> +        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> +        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>> +        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> +
>> +        /* TRANS_CMTG_CTL_* */
>> +        { .start = 0x6fa88, .end = 0x6fa88 },
>> +        { .start = 0x6fb88, .end = 0x6fb88 },
>
>These, for instance, are part of lnl_wl_range[].

Given my clarification above about the different purposes of the ranges,
I think we should stick to keeping the same values from the (soon to
be?) documented tables, even if there is some small redundancy.
Otherwise we would require the programmer to remember to check ranges in
the "more general" table every time a DC state-specific one needs to be
added or updated.

--
Gustavo Sousa

>
>
>> +
>> +        { .start = 0x46430, .end = 0x46430 }, /* CHICKEN_DCPR_1 */
>> +        { .start = 0x46434, .end = 0x46434 }, /* CHICKEN_DCPR_2 */
>> +        { .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
>> +        { .start = 0x42084, .end = 0x42084 }, /* CHICKEN_MISC_2 */
>> +        { .start = 0x42088, .end = 0x42088 }, /* CHICKEN_MISC_3 */
>> +        { .start = 0x46160, .end = 0x46160 }, /* CMTG_CLK_SEL */
>> +        { .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
>> +
>> +        {},
>> +};
>> +
>> +static struct intel_dmc_wl_range xe3lpd_dc3co_wl_ranges[] = {
>> +        { .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
>> +
>> +        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>> +
>> +        /* DBUF_CTL_* */
>> +        { .start = 0x44300, .end = 0x44300 },
>> +        { .start = 0x44304, .end = 0x44304 },
>> +        { .start = 0x44f00, .end = 0x44f00 },
>> +        { .start = 0x44f04, .end = 0x44f04 },
>> +        { .start = 0x44fe8, .end = 0x44fe8 },
>> +        { .start = 0x45008, .end = 0x45008 },
>> +
>> +        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> +        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>> +        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> +        { .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
>> +
>> +        /* Scanline registers */
>> +        { .start = 0x70000, .end = 0x70000 },
>> +        { .start = 0x70004, .end = 0x70004 },
>> +        { .start = 0x70014, .end = 0x70014 },
>> +        { .start = 0x70018, .end = 0x70018 },
>> +        { .start = 0x71000, .end = 0x71000 },
>> +        { .start = 0x71004, .end = 0x71004 },
>> +        { .start = 0x71014, .end = 0x71014 },
>> +        { .start = 0x71018, .end = 0x71018 },
>> +        { .start = 0x72000, .end = 0x72000 },
>> +        { .start = 0x72004, .end = 0x72004 },
>> +        { .start = 0x72014, .end = 0x72014 },
>> +        { .start = 0x72018, .end = 0x72018 },
>> +        { .start = 0x73000, .end = 0x73000 },
>> +        { .start = 0x73004, .end = 0x73004 },
>> +        { .start = 0x73014, .end = 0x73014 },
>> +        { .start = 0x73018, .end = 0x73018 },
>> +        { .start = 0x7b000, .end = 0x7b000 },
>> +        { .start = 0x7b004, .end = 0x7b004 },
>> +        { .start = 0x7b014, .end = 0x7b014 },
>> +        { .start = 0x7b018, .end = 0x7b018 },
>> +        { .start = 0x7c000, .end = 0x7c000 },
>> +        { .start = 0x7c004, .end = 0x7c004 },
>> +        { .start = 0x7c014, .end = 0x7c014 },
>> +        { .start = 0x7c018, .end = 0x7c018 },
>
>And so are all these.
>
>
>--
>Cheers,
>Luca.

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

* Re: [PATCH 08/13] drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables
  2024-11-01 12:58   ` Luca Coelho
@ 2024-11-05 13:42     ` Gustavo Sousa
  2024-11-06 12:23       ` Luca Coelho
  0 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-11-05 13:42 UTC (permalink / raw)
  To: Luca Coelho, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Luca Coelho (2024-11-01 09:58:33-03:00)
>On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
>> Allow simpler syntax for defining entries for single registers in range
>> tables. That makes them easier to type as well as to read, allowing one
>> to quickly tell whether a range actually refers to a single register or
>> a "true range".
>> 
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 118 ++++++++++----------
>>  1 file changed, 60 insertions(+), 58 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> index 8bf2f32be859..6992ce654e75 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> @@ -54,82 +54,82 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>>  };
>>  
>>  static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
>> -        { .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
>> +        { .start = 0x45500 }, /* DC_STATE_SEL */
>>          { .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
>> -        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>> +        { .start = 0x45504 }, /* DC_STATE_EN */
>>          { .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
>> -        { .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
>> +        { .start = 0x454f0 }, /* RETENTION_CTRL */
>>  
>>          /* DBUF_CTL_* */
>> -        { .start = 0x44300, .end = 0x44300 },
>> -        { .start = 0x44304, .end = 0x44304 },
>> -        { .start = 0x44f00, .end = 0x44f00 },
>> -        { .start = 0x44f04, .end = 0x44f04 },
>> -        { .start = 0x44fe8, .end = 0x44fe8 },
>> -        { .start = 0x45008, .end = 0x45008 },
>> +        { .start = 0x44300 },
>> +        { .start = 0x44304 },
>> +        { .start = 0x44f00 },
>> +        { .start = 0x44f04 },
>> +        { .start = 0x44fe8 },
>> +        { .start = 0x45008 },
>>  
>> -        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> -        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>> -        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> +        { .start = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> +        { .start = 0x46000 }, /* CDCLK_CTL */
>> +        { .start = 0x46008 }, /* CDCLK_SQUASH_CTL */
>
>Many of these are probably actually ranges.  I'm not a HW guy, but
>these are probably blocks that need the wakelock and it just happens
>that many of those addresses are actually not used, but would need a
>wakelock if they were used?
>
>IOW, e.g. all these DBUF_CTL registers are probably in the same range
>that needs wakelocks (i.e. 0x44300-0x46fff)? Do we really need to
>define many of these individually?
>
>This is related to the previous patch as well, but I decided to comment
>it here because it becomes clearer.

Maybe my reply on the previous patch clarifies this? I.e., these
offset or offset ranges represent offsets that the DMC touches when on
specific DC states.

--
Gustavo Sousa

>
>--
>Cheers,
>Luca.

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

* Re: [PATCH 13/13] drm/i915/xe3lpd: Use DMC wakelock by default
  2024-11-01 14:27   ` Luca Coelho
@ 2024-11-05 13:46     ` Gustavo Sousa
  2024-11-05 21:12       ` Gustavo Sousa
  0 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-11-05 13:46 UTC (permalink / raw)
  To: Luca Coelho, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Luca Coelho (2024-11-01 11:27:10-03:00)
>On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
>> Although Bspec doesn't explicitly mentions that, as of Xe3_LPD, using
>> DMC wakelock is the officially recommended way of accessing registers
>> that would be off during DC5/DC6 and the legacy method (where the DMC
>> intercepts MMIO to wake up the hardware) is to be avoided.
>> 
>> As such, update the driver to use the DMC wakelock by default starting
>> with Xe3_LPD. Since the feature is somewhat new to the driver, also
>> allow disabling it via a module parameter for debugging purposes.
>> 
>> For that, make the existing parameter allow values -1 (per-chip
>> default), 0 (disabled) and 1 (enabled), similarly to what is done for
>> other parameters.
>> 
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_display_params.c | 4 ++--
>>  drivers/gpu/drm/i915/display/intel_display_params.h | 2 +-
>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 6 +++++-
>>  3 files changed, 8 insertions(+), 4 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
>> index 024de8abcb1a..bf00e5f1f145 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_params.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_params.c
>> @@ -123,10 +123,10 @@ intel_display_param_named_unsafe(enable_psr2_sel_fetch, bool, 0400,
>>          "(0=disabled, 1=enabled) "
>>          "Default: 1");
>>  
>> -intel_display_param_named_unsafe(enable_dmc_wl, bool, 0400,
>> +intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
>>          "Enable DMC wakelock "
>>          "(0=disabled, 1=enabled) "
>> -        "Default: 0");
>> +        "Default: -1 (use per-chip default)");
>
>We're already explaining the possible values in the previous
>parentheses, so maybe the -1 should also be explained there?

Yep that makes sense. I was following the trend of what was done for
enable_fbc and enable_psr, but I guess following other examples in this
same file where we tag the default one with "[default]" is better.

Thanks! I'll update this on the next version.

--
Gustavo Sousa

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

* Re: [PATCH 11/13] drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK()
  2024-10-22 11:03     ` Gustavo Sousa
@ 2024-11-05 13:56       ` Gustavo Sousa
  2024-11-06  9:25         ` Jani Nikula
  0 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-11-05 13:56 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Gustavo Sousa (2024-10-22 08:03:39-03:00)
>Quoting Jani Nikula (2024-10-22 06:37:51-03:00)
>>On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>>> In order to be able to use the DMC wakelock, we also need to know that
>>> the display hardware has support for DMC, which is a runtime info.
>>> Define HAS_DMC_WAKELOCK(), which checks for both DMC availability and IP
>>> version, and use it in place of directly checking the display version.
>>>
>>> Since we depend on runtime info, also make sure to call
>>> intel_dmc_wl_init() only after we have probed the hardware for such info
>>> (i.e. after intel_display_device_info_runtime_init()).
>>
>>Non-functional changes combined with functional changes. Please split.
>
>Do you mean changing the call site of intel_dmc_wl_init() as being
>non-functional? Or is it something else?

Jani, I'll send a v2 soon-ish. I'll go ahead and assume the anwser for
the above is the former. Please stop me if otherwise :-)

--
Gustavo Sousa

>
>If this is about the former, I would argue that's not really
>non-functional, because we are changing the order of how things are
>done... But if making that a standalone patch is preferred, I can do
>that.
>
>--
>Gustavo Sousa
>
>>
>>BR,
>>Jani.
>>
>>>
>>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>>> ---
>>>  drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
>>>  drivers/gpu/drm/i915/display/intel_display_driver.c | 2 +-
>>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 4 ++--
>>>  3 files changed, 4 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
>>> index 071a36b51f79..5f78fd127fe0 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
>>> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
>>> @@ -128,6 +128,7 @@ enum intel_display_subplatform {
>>>  #define HAS_DDI(i915)                        (DISPLAY_INFO(i915)->has_ddi)
>>>  #define HAS_DISPLAY(i915)                (DISPLAY_RUNTIME_INFO(i915)->pipe_mask != 0)
>>>  #define HAS_DMC(i915)                        (DISPLAY_RUNTIME_INFO(i915)->has_dmc)
>>> +#define HAS_DMC_WAKELOCK(i915)                (HAS_DMC(i915) && DISPLAY_VER(i915) >= 20)
>>>  #define HAS_DOUBLE_BUFFERED_M_N(i915)        (DISPLAY_VER(i915) >= 9 || IS_BROADWELL(i915))
>>>  #define HAS_DP_MST(i915)                (DISPLAY_INFO(i915)->has_dp_mst)
>>>  #define HAS_DP20(i915)                        (IS_DG2(i915) || DISPLAY_VER(i915) >= 14)
>>> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
>>> index 673f9b965494..8afaa9cb89d2 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
>>> @@ -200,7 +200,6 @@ void intel_display_driver_early_probe(struct drm_i915_private *i915)
>>>          intel_dpll_init_clock_hook(i915);
>>>          intel_init_display_hooks(i915);
>>>          intel_fdi_init_hook(i915);
>>> -        intel_dmc_wl_init(&i915->display);
>>>  }
>>>  
>>>  /* part #1: call before irq install */
>>> @@ -238,6 +237,7 @@ int intel_display_driver_probe_noirq(struct drm_i915_private *i915)
>>>                  return 0;
>>>  
>>>          intel_dmc_init(display);
>>> +        intel_dmc_wl_init(display);
>>>  
>>>          i915->display.wq.modeset = alloc_ordered_workqueue("i915_modeset", 0);
>>>          i915->display.wq.flip = alloc_workqueue("i915_flip", WQ_HIGHPRI |
>>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>>> index 8283b607aac4..f6ec79b0e39d 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>>> @@ -250,7 +250,7 @@ static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
>>>  
>>>  static bool __intel_dmc_wl_supported(struct intel_display *display)
>>>  {
>>> -        if (DISPLAY_VER(display) < 20 ||
>>> +        if (!HAS_DMC_WAKELOCK(display) ||
>>>              !intel_dmc_has_payload(display) ||
>>>              !display->params.enable_dmc_wl)
>>>                  return false;
>>> @@ -263,7 +263,7 @@ void intel_dmc_wl_init(struct intel_display *display)
>>>          struct intel_dmc_wl *wl = &display->wl;
>>>  
>>>          /* don't call __intel_dmc_wl_supported(), DMC is not loaded yet */
>>> -        if (DISPLAY_VER(display) < 20 || !display->params.enable_dmc_wl)
>>> +        if (!HAS_DMC_WAKELOCK(display) || !display->params.enable_dmc_wl)
>>>                  return;
>>>  
>>>          INIT_DELAYED_WORK(&wl->work, intel_dmc_wl_work);
>>
>>-- 
>>Jani Nikula, Intel

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

* Re: [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states
  2024-10-22  8:03   ` Jani Nikula
  2024-10-22 11:06     ` Gustavo Sousa
@ 2024-11-05 19:54     ` Gustavo Sousa
  1 sibling, 0 replies; 60+ messages in thread
From: Gustavo Sousa @ 2024-11-05 19:54 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Jani Nikula (2024-10-22 05:03:21-03:00)
>On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>> There are extra registers that require the DMC wakelock when specific
>> dynamic DC states are in place. Add the table ranges for them and use
>> the correct table depending on the allowed DC states.
>>
>> Bspec: 71583
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 112 +++++++++++++++++++-
>>  1 file changed, 108 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> index d597cc825f64..8bf2f32be859 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> @@ -5,6 +5,7 @@
>>  
>>  #include <linux/kernel.h>
>>  
>> +#include "i915_reg.h"
>>  #include "intel_de.h"
>>  #include "intel_dmc.h"
>>  #include "intel_dmc_regs.h"
>> @@ -52,6 +53,87 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>>          {},
>>  };
>>  
>> +static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
>> +        { .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
>> +        { .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
>> +        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>> +        { .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
>> +        { .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
>> +
>> +        /* DBUF_CTL_* */
>> +        { .start = 0x44300, .end = 0x44300 },
>> +        { .start = 0x44304, .end = 0x44304 },
>> +        { .start = 0x44f00, .end = 0x44f00 },
>> +        { .start = 0x44f04, .end = 0x44f04 },
>> +        { .start = 0x44fe8, .end = 0x44fe8 },
>> +        { .start = 0x45008, .end = 0x45008 },
>> +
>> +        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> +        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>> +        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> +
>> +        /* TRANS_CMTG_CTL_* */
>> +        { .start = 0x6fa88, .end = 0x6fa88 },
>> +        { .start = 0x6fb88, .end = 0x6fb88 },
>> +
>> +        { .start = 0x46430, .end = 0x46430 }, /* CHICKEN_DCPR_1 */
>> +        { .start = 0x46434, .end = 0x46434 }, /* CHICKEN_DCPR_2 */
>> +        { .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
>> +        { .start = 0x42084, .end = 0x42084 }, /* CHICKEN_MISC_2 */
>> +        { .start = 0x42088, .end = 0x42088 }, /* CHICKEN_MISC_3 */
>> +        { .start = 0x46160, .end = 0x46160 }, /* CMTG_CLK_SEL */
>> +        { .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
>> +
>> +        {},
>> +};
>> +
>> +static struct intel_dmc_wl_range xe3lpd_dc3co_wl_ranges[] = {
>> +        { .start = 0x454a0, .end = 0x454a0 }, /* CHICKEN_DCPR_4 */
>> +
>> +        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>> +
>> +        /* DBUF_CTL_* */
>> +        { .start = 0x44300, .end = 0x44300 },
>> +        { .start = 0x44304, .end = 0x44304 },
>> +        { .start = 0x44f00, .end = 0x44f00 },
>> +        { .start = 0x44f04, .end = 0x44f04 },
>> +        { .start = 0x44fe8, .end = 0x44fe8 },
>> +        { .start = 0x45008, .end = 0x45008 },
>> +
>> +        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> +        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>> +        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> +        { .start = 0x8f000, .end = 0x8ffff }, /* Main DMC registers */
>> +
>> +        /* Scanline registers */
>> +        { .start = 0x70000, .end = 0x70000 },
>> +        { .start = 0x70004, .end = 0x70004 },
>> +        { .start = 0x70014, .end = 0x70014 },
>> +        { .start = 0x70018, .end = 0x70018 },
>> +        { .start = 0x71000, .end = 0x71000 },
>> +        { .start = 0x71004, .end = 0x71004 },
>> +        { .start = 0x71014, .end = 0x71014 },
>> +        { .start = 0x71018, .end = 0x71018 },
>> +        { .start = 0x72000, .end = 0x72000 },
>> +        { .start = 0x72004, .end = 0x72004 },
>> +        { .start = 0x72014, .end = 0x72014 },
>> +        { .start = 0x72018, .end = 0x72018 },
>> +        { .start = 0x73000, .end = 0x73000 },
>> +        { .start = 0x73004, .end = 0x73004 },
>> +        { .start = 0x73014, .end = 0x73014 },
>> +        { .start = 0x73018, .end = 0x73018 },
>> +        { .start = 0x7b000, .end = 0x7b000 },
>> +        { .start = 0x7b004, .end = 0x7b004 },
>> +        { .start = 0x7b014, .end = 0x7b014 },
>> +        { .start = 0x7b018, .end = 0x7b018 },
>> +        { .start = 0x7c000, .end = 0x7c000 },
>> +        { .start = 0x7c004, .end = 0x7c004 },
>> +        { .start = 0x7c014, .end = 0x7c014 },
>> +        { .start = 0x7c018, .end = 0x7c018 },
>> +
>> +        {},
>> +};
>> +
>>  static void __intel_dmc_wl_release(struct intel_display *display)
>>  {
>>          struct drm_i915_private *i915 = to_i915(display->drm);
>> @@ -106,9 +188,31 @@ static bool intel_dmc_wl_addr_in_range(u32 address,
>>          return false;
>>  }
>>  
>> -static bool intel_dmc_wl_check_range(u32 address)
>> +static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
>>  {
>> -        return intel_dmc_wl_addr_in_range(address, lnl_wl_range);
>> +        const struct intel_dmc_wl_range *ranges;
>> +
>> +        ranges = lnl_wl_range;
>> +
>> +        if (intel_dmc_wl_addr_in_range(address, ranges))
>> +                return true;
>> +
>> +        switch (display->power.domains.dc_state) {
>
>This file has no business looking at power domain guts. Use or add
>interfaces instead of poking at data directly.

I started adding a function intel_display_power_get_current_dc_state()
here, but then realized that display->power.domains is protected by a
mutex and we do not want to use it in an atomic context.

So, in v2, to avoid rewriting the whole power domains code to use
spinlocks, I decided to go with having a copy of dc_state struct
intel_dmc_wl, which is set by intel_dmc_wl_enable().

--
Gustavo Sousa

>
>> +        case DC_STATE_EN_DC3CO:
>> +                ranges = xe3lpd_dc3co_wl_ranges;
>> +                break;
>> +        case DC_STATE_EN_UPTO_DC5:
>> +        case DC_STATE_EN_UPTO_DC6:
>> +                ranges = xe3lpd_dc5_dc6_wl_ranges;
>> +                break;
>> +        default:
>> +                ranges = NULL;
>> +        }
>> +
>> +        if (ranges && intel_dmc_wl_addr_in_range(address, ranges))
>> +                return true;
>> +
>> +        return false;
>>  }
>>  
>>  static bool __intel_dmc_wl_supported(struct intel_display *display)
>> @@ -195,7 +299,7 @@ void intel_dmc_wl_get(struct intel_display *display, i915_reg_t reg)
>>          if (!__intel_dmc_wl_supported(display))
>>                  return;
>>  
>> -        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
>> +        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
>
>Side note, unrelated to this patch, i915_reg_t is supposed to be opaque,
>nobody should look at reg.reg directly, there's i915_mmio_reg_offset()
>for it.
>
>>                  return;
>>  
>>          spin_lock_irqsave(&wl->lock, flags);
>> @@ -247,7 +351,7 @@ void intel_dmc_wl_put(struct intel_display *display, i915_reg_t reg)
>>          if (!__intel_dmc_wl_supported(display))
>>                  return;
>>  
>> -        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(reg.reg))
>> +        if (i915_mmio_reg_valid(reg) && !intel_dmc_wl_check_range(display, reg.reg))
>>                  return;
>>  
>>          spin_lock_irqsave(&wl->lock, flags);
>
>-- 
>Jani Nikula, Intel

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

* Re: [PATCH 13/13] drm/i915/xe3lpd: Use DMC wakelock by default
  2024-11-05 13:46     ` Gustavo Sousa
@ 2024-11-05 21:12       ` Gustavo Sousa
  2024-11-06 12:27         ` Luca Coelho
  0 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-11-05 21:12 UTC (permalink / raw)
  To: Luca Coelho, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Gustavo Sousa (2024-11-05 10:46:52-03:00)
>Quoting Luca Coelho (2024-11-01 11:27:10-03:00)
>>On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
>>> Although Bspec doesn't explicitly mentions that, as of Xe3_LPD, using
>>> DMC wakelock is the officially recommended way of accessing registers
>>> that would be off during DC5/DC6 and the legacy method (where the DMC
>>> intercepts MMIO to wake up the hardware) is to be avoided.
>>> 
>>> As such, update the driver to use the DMC wakelock by default starting
>>> with Xe3_LPD. Since the feature is somewhat new to the driver, also
>>> allow disabling it via a module parameter for debugging purposes.
>>> 
>>> For that, make the existing parameter allow values -1 (per-chip
>>> default), 0 (disabled) and 1 (enabled), similarly to what is done for
>>> other parameters.
>>> 
>>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>>> ---
>>>  drivers/gpu/drm/i915/display/intel_display_params.c | 4 ++--
>>>  drivers/gpu/drm/i915/display/intel_display_params.h | 2 +-
>>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 6 +++++-
>>>  3 files changed, 8 insertions(+), 4 deletions(-)
>>> 
>>> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
>>> index 024de8abcb1a..bf00e5f1f145 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_display_params.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_display_params.c
>>> @@ -123,10 +123,10 @@ intel_display_param_named_unsafe(enable_psr2_sel_fetch, bool, 0400,
>>>          "(0=disabled, 1=enabled) "
>>>          "Default: 1");
>>>  
>>> -intel_display_param_named_unsafe(enable_dmc_wl, bool, 0400,
>>> +intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
>>>          "Enable DMC wakelock "
>>>          "(0=disabled, 1=enabled) "
>>> -        "Default: 0");
>>> +        "Default: -1 (use per-chip default)");
>>
>>We're already explaining the possible values in the previous
>>parentheses, so maybe the -1 should also be explained there?
>
>Yep that makes sense. I was following the trend of what was done for
>enable_fbc and enable_psr, but I guess following other examples in this
>same file where we tag the default one with "[default]" is better.

Ended up simply doing this:

    diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
    index bf00e5f1f145..dc666aefa362 100644
    --- a/drivers/gpu/drm/i915/display/intel_display_params.c
    +++ b/drivers/gpu/drm/i915/display/intel_display_params.c
    @@ -125,8 +125,8 @@ intel_display_param_named_unsafe(enable_psr2_sel_fetch, bool, 0400,
     
     intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
     	"Enable DMC wakelock "
    -	"(0=disabled, 1=enabled) "
    -	"Default: -1 (use per-chip default)");
    +	"(-1=use per-chip default, 0=disabled, 1=enabled) "
    +	"Default: -1");
     
     __maybe_unused
     static void _param_print_bool(struct drm_printer *p, const char *driver_name,

, because repeating the word "default" in "(-1=use per-chip default
[default], 0=disabled, 1=enabled)" looked weird.

--
Gustavo Sousa

>
>Thanks! I'll update this on the next version.
>
>--
>Gustavo Sousa

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

* Re: [PATCH 11/13] drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK()
  2024-11-05 13:56       ` Gustavo Sousa
@ 2024-11-06  9:25         ` Jani Nikula
  2024-11-06 13:24           ` Gustavo Sousa
  0 siblings, 1 reply; 60+ messages in thread
From: Jani Nikula @ 2024-11-06  9:25 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Tue, 05 Nov 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> Quoting Gustavo Sousa (2024-10-22 08:03:39-03:00)
>>Quoting Jani Nikula (2024-10-22 06:37:51-03:00)
>>>On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>>>> In order to be able to use the DMC wakelock, we also need to know that
>>>> the display hardware has support for DMC, which is a runtime info.
>>>> Define HAS_DMC_WAKELOCK(), which checks for both DMC availability and IP
>>>> version, and use it in place of directly checking the display version.
>>>>
>>>> Since we depend on runtime info, also make sure to call
>>>> intel_dmc_wl_init() only after we have probed the hardware for such info
>>>> (i.e. after intel_display_device_info_runtime_init()).
>>>
>>>Non-functional changes combined with functional changes. Please split.
>>
>>Do you mean changing the call site of intel_dmc_wl_init() as being
>>non-functional? Or is it something else?
>
> Jani, I'll send a v2 soon-ish. I'll go ahead and assume the anwser for
> the above is the former. Please stop me if otherwise :-)

Sorry, inbox overflowing. I think I meant that adding HAS_DMC_WAKELOCK()
is a non-functional change.

BR,
Jani.

>
> --
> Gustavo Sousa
>
>>
>>If this is about the former, I would argue that's not really
>>non-functional, because we are changing the order of how things are
>>done... But if making that a standalone patch is preferred, I can do
>>that.
>>
>>--
>>Gustavo Sousa
>>
>>>
>>>BR,
>>>Jani.
>>>
>>>>
>>>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>>>> ---
>>>>  drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
>>>>  drivers/gpu/drm/i915/display/intel_display_driver.c | 2 +-
>>>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 4 ++--
>>>>  3 files changed, 4 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
>>>> index 071a36b51f79..5f78fd127fe0 100644
>>>> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
>>>> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
>>>> @@ -128,6 +128,7 @@ enum intel_display_subplatform {
>>>>  #define HAS_DDI(i915)                        (DISPLAY_INFO(i915)->has_ddi)
>>>>  #define HAS_DISPLAY(i915)                (DISPLAY_RUNTIME_INFO(i915)->pipe_mask != 0)
>>>>  #define HAS_DMC(i915)                        (DISPLAY_RUNTIME_INFO(i915)->has_dmc)
>>>> +#define HAS_DMC_WAKELOCK(i915)                (HAS_DMC(i915) && DISPLAY_VER(i915) >= 20)
>>>>  #define HAS_DOUBLE_BUFFERED_M_N(i915)        (DISPLAY_VER(i915) >= 9 || IS_BROADWELL(i915))
>>>>  #define HAS_DP_MST(i915)                (DISPLAY_INFO(i915)->has_dp_mst)
>>>>  #define HAS_DP20(i915)                        (IS_DG2(i915) || DISPLAY_VER(i915) >= 14)
>>>> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
>>>> index 673f9b965494..8afaa9cb89d2 100644
>>>> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
>>>> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
>>>> @@ -200,7 +200,6 @@ void intel_display_driver_early_probe(struct drm_i915_private *i915)
>>>>          intel_dpll_init_clock_hook(i915);
>>>>          intel_init_display_hooks(i915);
>>>>          intel_fdi_init_hook(i915);
>>>> -        intel_dmc_wl_init(&i915->display);
>>>>  }
>>>>  
>>>>  /* part #1: call before irq install */
>>>> @@ -238,6 +237,7 @@ int intel_display_driver_probe_noirq(struct drm_i915_private *i915)
>>>>                  return 0;
>>>>  
>>>>          intel_dmc_init(display);
>>>> +        intel_dmc_wl_init(display);
>>>>  
>>>>          i915->display.wq.modeset = alloc_ordered_workqueue("i915_modeset", 0);
>>>>          i915->display.wq.flip = alloc_workqueue("i915_flip", WQ_HIGHPRI |
>>>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>>>> index 8283b607aac4..f6ec79b0e39d 100644
>>>> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>>>> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>>>> @@ -250,7 +250,7 @@ static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
>>>>  
>>>>  static bool __intel_dmc_wl_supported(struct intel_display *display)
>>>>  {
>>>> -        if (DISPLAY_VER(display) < 20 ||
>>>> +        if (!HAS_DMC_WAKELOCK(display) ||
>>>>              !intel_dmc_has_payload(display) ||
>>>>              !display->params.enable_dmc_wl)
>>>>                  return false;
>>>> @@ -263,7 +263,7 @@ void intel_dmc_wl_init(struct intel_display *display)
>>>>          struct intel_dmc_wl *wl = &display->wl;
>>>>  
>>>>          /* don't call __intel_dmc_wl_supported(), DMC is not loaded yet */
>>>> -        if (DISPLAY_VER(display) < 20 || !display->params.enable_dmc_wl)
>>>> +        if (!HAS_DMC_WAKELOCK(display) || !display->params.enable_dmc_wl)
>>>>                  return;
>>>>  
>>>>          INIT_DELAYED_WORK(&wl->work, intel_dmc_wl_work);
>>>
>>>-- 
>>>Jani Nikula, Intel

-- 
Jani Nikula, Intel

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

* Re: [PATCH 04/13] drm/i915/dmc_wl: Get wakelock when disabling dynamic DC states
  2024-11-05 12:44     ` Gustavo Sousa
@ 2024-11-06 11:37       ` Luca Coelho
  0 siblings, 0 replies; 60+ messages in thread
From: Luca Coelho @ 2024-11-06 11:37 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Tue, 2024-11-05 at 09:44 -0300, Gustavo Sousa wrote:
> Quoting Luca Coelho (2024-11-01 09:24:08-03:00)
> > On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> > > Bspec says that disabling dynamic DC states require taking the DMC
> > > wakelock to cause an DC exit before writing to DC_STATE_EN. Implement
> > > that.
> > > 
> > > In fact, testing on PTL revealed we end up failing to exit DC5/6 without
> > > this step.
> > > 
> > > Bspec: 71583
> > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > > ---
> > >  .../drm/i915/display/intel_display_power_well.c    | 10 +++++++---
> > >  drivers/gpu/drm/i915/display/intel_dmc_wl.c        | 14 ++++++++++++--
> > >  drivers/gpu/drm/i915/display/intel_dmc_wl.h        |  2 ++
> > >  3 files changed, 21 insertions(+), 5 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_power_well.c b/drivers/gpu/drm/i915/display/intel_display_power_well.c
> > > index adaf7cf3a33b..e8946ce86aaa 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_power_well.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_power_well.c
> > > @@ -987,10 +987,14 @@ void gen9_disable_dc_states(struct intel_display *display)
> > >                  return;
> > >          }
> > >  
> > > -        gen9_set_dc_state(display, DC_STATE_DISABLE);
> > > -
> > > -        if (!HAS_DISPLAY(display))
> > > +        if (HAS_DISPLAY(display)) {
> > > +                intel_dmc_wl_get_noreg(display);
> > > +                gen9_set_dc_state(display, DC_STATE_DISABLE);
> > > +                intel_dmc_wl_put_noreg(display);
> > > +        } else {
> > > +                gen9_set_dc_state(display, DC_STATE_DISABLE);
> > >                  return;
> > > +        }
> > 
> > I think intel_dmc_get/put() already protect indirectly on
> > HAS_DISPLAY(), doesn't it? If that's the case, then the if here is
> > unnecessary.
> 
> Actually, intel_dmc_wl_init() gets called only when HAS_DISPLAY() is
> true, so I think using intel_dmc_wl_{get,put}_noreg() for the
> !HAS_DISPLAY() case would not be right, at least not with the current
> state of the code.

Okay, fair enough.

--
Cheers,
Luca.

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

* Re: [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states
  2024-11-05 13:00     ` Gustavo Sousa
@ 2024-11-06 11:47       ` Luca Coelho
  2024-11-06 13:56         ` Gustavo Sousa
  0 siblings, 1 reply; 60+ messages in thread
From: Luca Coelho @ 2024-11-06 11:47 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Tue, 2024-11-05 at 10:00 -0300, Gustavo Sousa wrote:
> Quoting Luca Coelho (2024-11-01 09:51:48-03:00)
> > On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> > > There are extra registers that require the DMC wakelock when specific
> > > dynamic DC states are in place. Add the table ranges for them and use
> > > the correct table depending on the allowed DC states.
> > > 
> > > Bspec: 71583
> > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 112 +++++++++++++++++++-
> > >  1 file changed, 108 insertions(+), 4 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> > > index d597cc825f64..8bf2f32be859 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> > > @@ -5,6 +5,7 @@
> > >  
> > >  #include <linux/kernel.h>
> > >  
> > > +#include "i915_reg.h"
> > >  #include "intel_de.h"
> > >  #include "intel_dmc.h"
> > >  #include "intel_dmc_regs.h"
> > > @@ -52,6 +53,87 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
> > >          {},
> > >  };
> > 
> > Do we still need the lnl_wl_range[]? This was sort of a place-holder
> > with a very large range just for testing.  I can see that there are at
> > least some ranges in common between lnl_wl_range[] and the new range
> > tables defined below.
> 
> Yes, although we could do some homework to get a more accurate set of
> ranges.
> 
> Now, about the different tables:
> 
>  - lnl_wl_range should be about ranges of registers that are powered
>    down during DC states and that the HW requires DC exit for proper
>    access.
>  - xe3lpd_{dc5_dc6,dc3co}_wl_ranges are registers that are touched by
>    the DMC and need the wakelock for properly restoring the correct
>    value before accessing them.
> 
> Maybe a comment in the code explaining the above is warranted?

I think a better naming for the arrays is warranted. :) Wouldn't
changing lnl_wl_range to base_wl_range or so be better? My point is
that LNL is not related at all here (anymore).


> > > +static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
> > > +        { .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
> > > +        { .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
> > > +        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
> > > +        { .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
> > > +        { .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
> > > +
> > > +        /* DBUF_CTL_* */
> > > +        { .start = 0x44300, .end = 0x44300 },
> > > +        { .start = 0x44304, .end = 0x44304 },
> > > +        { .start = 0x44f00, .end = 0x44f00 },
> > > +        { .start = 0x44f04, .end = 0x44f04 },
> > > +        { .start = 0x44fe8, .end = 0x44fe8 },
> > > +        { .start = 0x45008, .end = 0x45008 },
> > > +
> > > +        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
> > > +        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
> > > +        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
> > > +
> > > +        /* TRANS_CMTG_CTL_* */
> > > +        { .start = 0x6fa88, .end = 0x6fa88 },
> > > +        { .start = 0x6fb88, .end = 0x6fb88 },
> > 
> > These, for instance, are part of lnl_wl_range[].
> 
> Given my clarification above about the different purposes of the ranges,
> I think we should stick to keeping the same values from the (soon to
> be?) documented tables, even if there is some small redundancy.
> Otherwise we would require the programmer to remember to check ranges in
> the "more general" table every time a DC state-specific one needs to be
> added or updated.

Makes sense, I guess it's okay that the base table and the specialized
tables are slightly redundant then.

--
Cheers,
Luca.

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

* Re: [PATCH 08/13] drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables
  2024-11-05 13:42     ` Gustavo Sousa
@ 2024-11-06 12:23       ` Luca Coelho
  2024-11-06 12:29         ` Gustavo Sousa
  0 siblings, 1 reply; 60+ messages in thread
From: Luca Coelho @ 2024-11-06 12:23 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Tue, 2024-11-05 at 10:42 -0300, Gustavo Sousa wrote:
> Quoting Luca Coelho (2024-11-01 09:58:33-03:00)
> > On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> > > Allow simpler syntax for defining entries for single registers in range
> > > tables. That makes them easier to type as well as to read, allowing one
> > > to quickly tell whether a range actually refers to a single register or
> > > a "true range".
> > > 
> > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 118 ++++++++++----------
> > >  1 file changed, 60 insertions(+), 58 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> > > index 8bf2f32be859..6992ce654e75 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> > > @@ -54,82 +54,82 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
> > >  };
> > >  
> > >  static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
> > > -        { .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
> > > +        { .start = 0x45500 }, /* DC_STATE_SEL */
> > >          { .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
> > > -        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
> > > +        { .start = 0x45504 }, /* DC_STATE_EN */
> > >          { .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
> > > -        { .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
> > > +        { .start = 0x454f0 }, /* RETENTION_CTRL */
> > >  
> > >          /* DBUF_CTL_* */
> > > -        { .start = 0x44300, .end = 0x44300 },
> > > -        { .start = 0x44304, .end = 0x44304 },
> > > -        { .start = 0x44f00, .end = 0x44f00 },
> > > -        { .start = 0x44f04, .end = 0x44f04 },
> > > -        { .start = 0x44fe8, .end = 0x44fe8 },
> > > -        { .start = 0x45008, .end = 0x45008 },
> > > +        { .start = 0x44300 },
> > > +        { .start = 0x44304 },
> > > +        { .start = 0x44f00 },
> > > +        { .start = 0x44f04 },
> > > +        { .start = 0x44fe8 },
> > > +        { .start = 0x45008 },
> > >  
> > > -        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
> > > -        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
> > > -        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
> > > +        { .start = 0x46070 }, /* CDCLK_PLL_ENABLE */
> > > +        { .start = 0x46000 }, /* CDCLK_CTL */
> > > +        { .start = 0x46008 }, /* CDCLK_SQUASH_CTL */
> > 
> > Many of these are probably actually ranges.  I'm not a HW guy, but
> > these are probably blocks that need the wakelock and it just happens
> > that many of those addresses are actually not used, but would need a
> > wakelock if they were used?
> > 
> > IOW, e.g. all these DBUF_CTL registers are probably in the same range
> > that needs wakelocks (i.e. 0x44300-0x46fff)? Do we really need to
> > define many of these individually?
> > 
> > This is related to the previous patch as well, but I decided to comment
> > it here because it becomes clearer.
> 
> Maybe my reply on the previous patch clarifies this? I.e., these
> offset or offset ranges represent offsets that the DMC touches when on
> specific DC states.

Yeah, but I think this idea of blocks is still valid.  I think it's
very unlikely that only certain _addresses_ and not full blocks of
addresses are affected in the HW.

For instance:

         /* DBUF_CTL_* */
-        { .start = 0x44300, .end = 0x44300 },
-        { .start = 0x44304, .end = 0x44304 },
-        { .start = 0x44f00, .end = 0x44f00 },
-        { .start = 0x44f04, .end = 0x44f04 },
-        { .start = 0x44fe8, .end = 0x44fe8 },

This probably means that _all_ the block, from at least 0x44300 till
0x44fff, needs to be protected.  What I'm trying to say is that even
though we don't access e.g. 0x44400, if we did, it would most likely
also have to be protected, because it's in the same block of addresses.

I guess this doesn't matter _that_ much, but it would be just cleaner
to know the actual ranges where the wakelocks are _potentially_ needed.

--
Cheers,
Luca.

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

* Re: [PATCH 13/13] drm/i915/xe3lpd: Use DMC wakelock by default
  2024-11-05 21:12       ` Gustavo Sousa
@ 2024-11-06 12:27         ` Luca Coelho
  0 siblings, 0 replies; 60+ messages in thread
From: Luca Coelho @ 2024-11-06 12:27 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Tue, 2024-11-05 at 18:12 -0300, Gustavo Sousa wrote:
> Quoting Gustavo Sousa (2024-11-05 10:46:52-03:00)
> > Quoting Luca Coelho (2024-11-01 11:27:10-03:00)
> > > On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> > > > Although Bspec doesn't explicitly mentions that, as of Xe3_LPD, using
> > > > DMC wakelock is the officially recommended way of accessing registers
> > > > that would be off during DC5/DC6 and the legacy method (where the DMC
> > > > intercepts MMIO to wake up the hardware) is to be avoided.
> > > > 
> > > > As such, update the driver to use the DMC wakelock by default starting
> > > > with Xe3_LPD. Since the feature is somewhat new to the driver, also
> > > > allow disabling it via a module parameter for debugging purposes.
> > > > 
> > > > For that, make the existing parameter allow values -1 (per-chip
> > > > default), 0 (disabled) and 1 (enabled), similarly to what is done for
> > > > other parameters.
> > > > 
> > > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/display/intel_display_params.c | 4 ++--
> > > >  drivers/gpu/drm/i915/display/intel_display_params.h | 2 +-
> > > >  drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 6 +++++-
> > > >  3 files changed, 8 insertions(+), 4 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
> > > > index 024de8abcb1a..bf00e5f1f145 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_display_params.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_display_params.c
> > > > @@ -123,10 +123,10 @@ intel_display_param_named_unsafe(enable_psr2_sel_fetch, bool, 0400,
> > > >          "(0=disabled, 1=enabled) "
> > > >          "Default: 1");
> > > >  
> > > > -intel_display_param_named_unsafe(enable_dmc_wl, bool, 0400,
> > > > +intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
> > > >          "Enable DMC wakelock "
> > > >          "(0=disabled, 1=enabled) "
> > > > -        "Default: 0");
> > > > +        "Default: -1 (use per-chip default)");
> > > 
> > > We're already explaining the possible values in the previous
> > > parentheses, so maybe the -1 should also be explained there?
> > 
> > Yep that makes sense. I was following the trend of what was done for
> > enable_fbc and enable_psr, but I guess following other examples in this
> > same file where we tag the default one with "[default]" is better.
> 
> Ended up simply doing this:
> 
>     diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
>     index bf00e5f1f145..dc666aefa362 100644
>     --- a/drivers/gpu/drm/i915/display/intel_display_params.c
>     +++ b/drivers/gpu/drm/i915/display/intel_display_params.c
>     @@ -125,8 +125,8 @@ intel_display_param_named_unsafe(enable_psr2_sel_fetch, bool, 0400,
>      
>      intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
>      	"Enable DMC wakelock "
>     -	"(0=disabled, 1=enabled) "
>     -	"Default: -1 (use per-chip default)");
>     +	"(-1=use per-chip default, 0=disabled, 1=enabled) "
>     +	"Default: -1");
>      
>      __maybe_unused
>      static void _param_print_bool(struct drm_printer *p, const char *driver_name,
> 
> , because repeating the word "default" in "(-1=use per-chip default
> [default], 0=disabled, 1=enabled)" looked weird.

Yep, this looks good!

--
Cheers,
Luca.

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

* Re: [PATCH 08/13] drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables
  2024-11-06 12:23       ` Luca Coelho
@ 2024-11-06 12:29         ` Gustavo Sousa
  2024-11-06 12:35           ` Luca Coelho
  0 siblings, 1 reply; 60+ messages in thread
From: Gustavo Sousa @ 2024-11-06 12:29 UTC (permalink / raw)
  To: Luca Coelho, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Luca Coelho (2024-11-06 09:23:32-03:00)
>On Tue, 2024-11-05 at 10:42 -0300, Gustavo Sousa wrote:
>> Quoting Luca Coelho (2024-11-01 09:58:33-03:00)
>> > On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
>> > > Allow simpler syntax for defining entries for single registers in range
>> > > tables. That makes them easier to type as well as to read, allowing one
>> > > to quickly tell whether a range actually refers to a single register or
>> > > a "true range".
>> > > 
>> > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> > > ---
>> > >  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 118 ++++++++++----------
>> > >  1 file changed, 60 insertions(+), 58 deletions(-)
>> > > 
>> > > diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> > > index 8bf2f32be859..6992ce654e75 100644
>> > > --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> > > +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> > > @@ -54,82 +54,82 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>> > >  };
>> > >  
>> > >  static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
>> > > -        { .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
>> > > +        { .start = 0x45500 }, /* DC_STATE_SEL */
>> > >          { .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
>> > > -        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>> > > +        { .start = 0x45504 }, /* DC_STATE_EN */
>> > >          { .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
>> > > -        { .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
>> > > +        { .start = 0x454f0 }, /* RETENTION_CTRL */
>> > >  
>> > >          /* DBUF_CTL_* */
>> > > -        { .start = 0x44300, .end = 0x44300 },
>> > > -        { .start = 0x44304, .end = 0x44304 },
>> > > -        { .start = 0x44f00, .end = 0x44f00 },
>> > > -        { .start = 0x44f04, .end = 0x44f04 },
>> > > -        { .start = 0x44fe8, .end = 0x44fe8 },
>> > > -        { .start = 0x45008, .end = 0x45008 },
>> > > +        { .start = 0x44300 },
>> > > +        { .start = 0x44304 },
>> > > +        { .start = 0x44f00 },
>> > > +        { .start = 0x44f04 },
>> > > +        { .start = 0x44fe8 },
>> > > +        { .start = 0x45008 },
>> > >  
>> > > -        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> > > -        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>> > > -        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> > > +        { .start = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> > > +        { .start = 0x46000 }, /* CDCLK_CTL */
>> > > +        { .start = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> > 
>> > Many of these are probably actually ranges.  I'm not a HW guy, but
>> > these are probably blocks that need the wakelock and it just happens
>> > that many of those addresses are actually not used, but would need a
>> > wakelock if they were used?
>> > 
>> > IOW, e.g. all these DBUF_CTL registers are probably in the same range
>> > that needs wakelocks (i.e. 0x44300-0x46fff)? Do we really need to
>> > define many of these individually?
>> > 
>> > This is related to the previous patch as well, but I decided to comment
>> > it here because it becomes clearer.
>> 
>> Maybe my reply on the previous patch clarifies this? I.e., these
>> offset or offset ranges represent offsets that the DMC touches when on
>> specific DC states.
>
>Yeah, but I think this idea of blocks is still valid.  I think it's
>very unlikely that only certain _addresses_ and not full blocks of
>addresses are affected in the HW.

Except that this is not about the hardware per se, this is about
registers that are touched by the *DMC* during DC states and that need
DC exit for properly accessing them from the driver. So, I think blocks
are not applicable here.

--
Gustavo Sousa

>
>For instance:
>
>         /* DBUF_CTL_* */
>-        { .start = 0x44300, .end = 0x44300 },
>-        { .start = 0x44304, .end = 0x44304 },
>-        { .start = 0x44f00, .end = 0x44f00 },
>-        { .start = 0x44f04, .end = 0x44f04 },
>-        { .start = 0x44fe8, .end = 0x44fe8 },
>
>This probably means that _all_ the block, from at least 0x44300 till
>0x44fff, needs to be protected.  What I'm trying to say is that even
>though we don't access e.g. 0x44400, if we did, it would most likely
>also have to be protected, because it's in the same block of addresses.
>
>I guess this doesn't matter _that_ much, but it would be just cleaner
>to know the actual ranges where the wakelocks are _potentially_ needed.
>
>--
>Cheers,
>Luca.

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

* Re: [PATCH 08/13] drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables
  2024-11-06 12:29         ` Gustavo Sousa
@ 2024-11-06 12:35           ` Luca Coelho
  0 siblings, 0 replies; 60+ messages in thread
From: Luca Coelho @ 2024-11-06 12:35 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

On Wed, 2024-11-06 at 09:29 -0300, Gustavo Sousa wrote:
> Quoting Luca Coelho (2024-11-06 09:23:32-03:00)
> > On Tue, 2024-11-05 at 10:42 -0300, Gustavo Sousa wrote:
> > > Quoting Luca Coelho (2024-11-01 09:58:33-03:00)
> > > > On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
> > > > > Allow simpler syntax for defining entries for single registers in range
> > > > > tables. That makes them easier to type as well as to read, allowing one
> > > > > to quickly tell whether a range actually refers to a single register or
> > > > > a "true range".
> > > > > 
> > > > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > > > > ---
> > > > >  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 118 ++++++++++----------
> > > > >  1 file changed, 60 insertions(+), 58 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> > > > > index 8bf2f32be859..6992ce654e75 100644
> > > > > --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> > > > > +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
> > > > > @@ -54,82 +54,82 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
> > > > >  };
> > > > >  
> > > > >  static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
> > > > > -        { .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
> > > > > +        { .start = 0x45500 }, /* DC_STATE_SEL */
> > > > >          { .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
> > > > > -        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
> > > > > +        { .start = 0x45504 }, /* DC_STATE_EN */
> > > > >          { .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
> > > > > -        { .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
> > > > > +        { .start = 0x454f0 }, /* RETENTION_CTRL */
> > > > >  
> > > > >          /* DBUF_CTL_* */
> > > > > -        { .start = 0x44300, .end = 0x44300 },
> > > > > -        { .start = 0x44304, .end = 0x44304 },
> > > > > -        { .start = 0x44f00, .end = 0x44f00 },
> > > > > -        { .start = 0x44f04, .end = 0x44f04 },
> > > > > -        { .start = 0x44fe8, .end = 0x44fe8 },
> > > > > -        { .start = 0x45008, .end = 0x45008 },
> > > > > +        { .start = 0x44300 },
> > > > > +        { .start = 0x44304 },
> > > > > +        { .start = 0x44f00 },
> > > > > +        { .start = 0x44f04 },
> > > > > +        { .start = 0x44fe8 },
> > > > > +        { .start = 0x45008 },
> > > > >  
> > > > > -        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
> > > > > -        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
> > > > > -        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
> > > > > +        { .start = 0x46070 }, /* CDCLK_PLL_ENABLE */
> > > > > +        { .start = 0x46000 }, /* CDCLK_CTL */
> > > > > +        { .start = 0x46008 }, /* CDCLK_SQUASH_CTL */
> > > > 
> > > > Many of these are probably actually ranges.  I'm not a HW guy, but
> > > > these are probably blocks that need the wakelock and it just happens
> > > > that many of those addresses are actually not used, but would need a
> > > > wakelock if they were used?
> > > > 
> > > > IOW, e.g. all these DBUF_CTL registers are probably in the same range
> > > > that needs wakelocks (i.e. 0x44300-0x46fff)? Do we really need to
> > > > define many of these individually?
> > > > 
> > > > This is related to the previous patch as well, but I decided to comment
> > > > it here because it becomes clearer.
> > > 
> > > Maybe my reply on the previous patch clarifies this? I.e., these
> > > offset or offset ranges represent offsets that the DMC touches when on
> > > specific DC states.
> > 
> > Yeah, but I think this idea of blocks is still valid.  I think it's
> > very unlikely that only certain _addresses_ and not full blocks of
> > addresses are affected in the HW.
> 
> Except that this is not about the hardware per se, this is about
> registers that are touched by the *DMC* during DC states and that need
> DC exit for properly accessing them from the driver. So, I think blocks
> are not applicable here.

Ah, okay, makes sense now. This could be explained in the awesome
comment you're planning to add, as discussed in the previous patch.

--
Cheers,
Luca.

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

* Re: [PATCH 11/13] drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK()
  2024-11-06  9:25         ` Jani Nikula
@ 2024-11-06 13:24           ` Gustavo Sousa
  0 siblings, 0 replies; 60+ messages in thread
From: Gustavo Sousa @ 2024-11-06 13:24 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Jani Nikula (2024-11-06 06:25:52-03:00)
>On Tue, 05 Nov 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>> Quoting Gustavo Sousa (2024-10-22 08:03:39-03:00)
>>>Quoting Jani Nikula (2024-10-22 06:37:51-03:00)
>>>>On Mon, 21 Oct 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>>>>> In order to be able to use the DMC wakelock, we also need to know that
>>>>> the display hardware has support for DMC, which is a runtime info.
>>>>> Define HAS_DMC_WAKELOCK(), which checks for both DMC availability and IP
>>>>> version, and use it in place of directly checking the display version.
>>>>>
>>>>> Since we depend on runtime info, also make sure to call
>>>>> intel_dmc_wl_init() only after we have probed the hardware for such info
>>>>> (i.e. after intel_display_device_info_runtime_init()).
>>>>
>>>>Non-functional changes combined with functional changes. Please split.
>>>
>>>Do you mean changing the call site of intel_dmc_wl_init() as being
>>>non-functional? Or is it something else?
>>
>> Jani, I'll send a v2 soon-ish. I'll go ahead and assume the anwser for
>> the above is the former. Please stop me if otherwise :-)
>
>Sorry, inbox overflowing. I think I meant that adding HAS_DMC_WAKELOCK()
>is a non-functional change.

Ah, okay.

Well, I think the use of HAS_DMC() in the definition of
HAS_DMC_WAKELOCK() makes it a functional change when intel_dmc_wl.c uses
it (because we were not checking HAS_DMC() before). So, for an earlier
"non-functional" patch, maybe the way to go is something like the
following then?

- A patch defining HAS_DMC_WAKELOCK() with only DISPLAY_VER(i915) >=
  20 and use that macro in the DMC wakelock code.
- A modified version of this patch discarding stuff already done in the
  patch above.

Is that what you meant?

--
Gustavo Sousa

>
>BR,
>Jani.
>
>>
>> --
>> Gustavo Sousa
>>
>>>
>>>If this is about the former, I would argue that's not really
>>>non-functional, because we are changing the order of how things are
>>>done... But if making that a standalone patch is preferred, I can do
>>>that.
>>>
>>>--
>>>Gustavo Sousa
>>>
>>>>
>>>>BR,
>>>>Jani.
>>>>
>>>>>
>>>>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>>>>> ---
>>>>>  drivers/gpu/drm/i915/display/intel_display_device.h | 1 +
>>>>>  drivers/gpu/drm/i915/display/intel_display_driver.c | 2 +-
>>>>>  drivers/gpu/drm/i915/display/intel_dmc_wl.c         | 4 ++--
>>>>>  3 files changed, 4 insertions(+), 3 deletions(-)
>>>>>
>>>>> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.h b/drivers/gpu/drm/i915/display/intel_display_device.h
>>>>> index 071a36b51f79..5f78fd127fe0 100644
>>>>> --- a/drivers/gpu/drm/i915/display/intel_display_device.h
>>>>> +++ b/drivers/gpu/drm/i915/display/intel_display_device.h
>>>>> @@ -128,6 +128,7 @@ enum intel_display_subplatform {
>>>>>  #define HAS_DDI(i915)                        (DISPLAY_INFO(i915)->has_ddi)
>>>>>  #define HAS_DISPLAY(i915)                (DISPLAY_RUNTIME_INFO(i915)->pipe_mask != 0)
>>>>>  #define HAS_DMC(i915)                        (DISPLAY_RUNTIME_INFO(i915)->has_dmc)
>>>>> +#define HAS_DMC_WAKELOCK(i915)                (HAS_DMC(i915) && DISPLAY_VER(i915) >= 20)
>>>>>  #define HAS_DOUBLE_BUFFERED_M_N(i915)        (DISPLAY_VER(i915) >= 9 || IS_BROADWELL(i915))
>>>>>  #define HAS_DP_MST(i915)                (DISPLAY_INFO(i915)->has_dp_mst)
>>>>>  #define HAS_DP20(i915)                        (IS_DG2(i915) || DISPLAY_VER(i915) >= 14)
>>>>> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
>>>>> index 673f9b965494..8afaa9cb89d2 100644
>>>>> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
>>>>> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
>>>>> @@ -200,7 +200,6 @@ void intel_display_driver_early_probe(struct drm_i915_private *i915)
>>>>>          intel_dpll_init_clock_hook(i915);
>>>>>          intel_init_display_hooks(i915);
>>>>>          intel_fdi_init_hook(i915);
>>>>> -        intel_dmc_wl_init(&i915->display);
>>>>>  }
>>>>>  
>>>>>  /* part #1: call before irq install */
>>>>> @@ -238,6 +237,7 @@ int intel_display_driver_probe_noirq(struct drm_i915_private *i915)
>>>>>                  return 0;
>>>>>  
>>>>>          intel_dmc_init(display);
>>>>> +        intel_dmc_wl_init(display);
>>>>>  
>>>>>          i915->display.wq.modeset = alloc_ordered_workqueue("i915_modeset", 0);
>>>>>          i915->display.wq.flip = alloc_workqueue("i915_flip", WQ_HIGHPRI |
>>>>> diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>>>>> index 8283b607aac4..f6ec79b0e39d 100644
>>>>> --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>>>>> +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>>>>> @@ -250,7 +250,7 @@ static bool intel_dmc_wl_check_range(struct intel_display *display, u32 address)
>>>>>  
>>>>>  static bool __intel_dmc_wl_supported(struct intel_display *display)
>>>>>  {
>>>>> -        if (DISPLAY_VER(display) < 20 ||
>>>>> +        if (!HAS_DMC_WAKELOCK(display) ||
>>>>>              !intel_dmc_has_payload(display) ||
>>>>>              !display->params.enable_dmc_wl)
>>>>>                  return false;
>>>>> @@ -263,7 +263,7 @@ void intel_dmc_wl_init(struct intel_display *display)
>>>>>          struct intel_dmc_wl *wl = &display->wl;
>>>>>  
>>>>>          /* don't call __intel_dmc_wl_supported(), DMC is not loaded yet */
>>>>> -        if (DISPLAY_VER(display) < 20 || !display->params.enable_dmc_wl)
>>>>> +        if (!HAS_DMC_WAKELOCK(display) || !display->params.enable_dmc_wl)
>>>>>                  return;
>>>>>  
>>>>>          INIT_DELAYED_WORK(&wl->work, intel_dmc_wl_work);
>>>>
>>>>-- 
>>>>Jani Nikula, Intel
>
>-- 
>Jani Nikula, Intel

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

* Re: [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states
  2024-11-06 11:47       ` Luca Coelho
@ 2024-11-06 13:56         ` Gustavo Sousa
  0 siblings, 0 replies; 60+ messages in thread
From: Gustavo Sousa @ 2024-11-06 13:56 UTC (permalink / raw)
  To: Luca Coelho, intel-gfx, intel-xe; +Cc: Luca Coelho, Rodrigo Vivi

Quoting Luca Coelho (2024-11-06 08:47:07-03:00)
>On Tue, 2024-11-05 at 10:00 -0300, Gustavo Sousa wrote:
>> Quoting Luca Coelho (2024-11-01 09:51:48-03:00)
>> > On Mon, 2024-10-21 at 19:27 -0300, Gustavo Sousa wrote:
>> > > There are extra registers that require the DMC wakelock when specific
>> > > dynamic DC states are in place. Add the table ranges for them and use
>> > > the correct table depending on the allowed DC states.
>> > > 
>> > > Bspec: 71583
>> > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> > > ---
>> > >  drivers/gpu/drm/i915/display/intel_dmc_wl.c | 112 +++++++++++++++++++-
>> > >  1 file changed, 108 insertions(+), 4 deletions(-)
>> > > 
>> > > diff --git a/drivers/gpu/drm/i915/display/intel_dmc_wl.c b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> > > index d597cc825f64..8bf2f32be859 100644
>> > > --- a/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> > > +++ b/drivers/gpu/drm/i915/display/intel_dmc_wl.c
>> > > @@ -5,6 +5,7 @@
>> > >  
>> > >  #include <linux/kernel.h>
>> > >  
>> > > +#include "i915_reg.h"
>> > >  #include "intel_de.h"
>> > >  #include "intel_dmc.h"
>> > >  #include "intel_dmc_regs.h"
>> > > @@ -52,6 +53,87 @@ static struct intel_dmc_wl_range lnl_wl_range[] = {
>> > >          {},
>> > >  };
>> > 
>> > Do we still need the lnl_wl_range[]? This was sort of a place-holder
>> > with a very large range just for testing.  I can see that there are at
>> > least some ranges in common between lnl_wl_range[] and the new range
>> > tables defined below.
>> 
>> Yes, although we could do some homework to get a more accurate set of
>> ranges.
>> 
>> Now, about the different tables:
>> 
>>  - lnl_wl_range should be about ranges of registers that are powered
>>    down during DC states and that the HW requires DC exit for proper
>>    access.
>>  - xe3lpd_{dc5_dc6,dc3co}_wl_ranges are registers that are touched by
>>    the DMC and need the wakelock for properly restoring the correct
>>    value before accessing them.
>> 
>> Maybe a comment in the code explaining the above is warranted?
>
>I think a better naming for the arrays is warranted. :) Wouldn't
>changing lnl_wl_range to base_wl_range or so be better? My point is
>that LNL is not related at all here (anymore).

Yep, we could come up with better names for those variables. I went
with:

    s/lnl_wl_range/powered_off_ranges/
    s/xe3lpd_dc3co_wl_ranges/xe3lpd_dc3co_dmc_ranges/
    s/xe3lpd_dc5_dc6_wl_ranges/xe3lpd_dc5_dc6_dmc_ranges/

And also added comments to differentiate their purposes.

--
Gustavo Sousa

>
>
>> > > +static struct intel_dmc_wl_range xe3lpd_dc5_dc6_wl_ranges[] = {
>> > > +        { .start = 0x45500, .end = 0x45500 }, /* DC_STATE_SEL */
>> > > +        { .start = 0x457a0, .end = 0x457b0 }, /* DC*_RESIDENCY_COUNTER */
>> > > +        { .start = 0x45504, .end = 0x45504 }, /* DC_STATE_EN */
>> > > +        { .start = 0x45400, .end = 0x4540c }, /* PWR_WELL_CTL_* */
>> > > +        { .start = 0x454f0, .end = 0x454f0 }, /* RETENTION_CTRL */
>> > > +
>> > > +        /* DBUF_CTL_* */
>> > > +        { .start = 0x44300, .end = 0x44300 },
>> > > +        { .start = 0x44304, .end = 0x44304 },
>> > > +        { .start = 0x44f00, .end = 0x44f00 },
>> > > +        { .start = 0x44f04, .end = 0x44f04 },
>> > > +        { .start = 0x44fe8, .end = 0x44fe8 },
>> > > +        { .start = 0x45008, .end = 0x45008 },
>> > > +
>> > > +        { .start = 0x46070, .end = 0x46070 }, /* CDCLK_PLL_ENABLE */
>> > > +        { .start = 0x46000, .end = 0x46000 }, /* CDCLK_CTL */
>> > > +        { .start = 0x46008, .end = 0x46008 }, /* CDCLK_SQUASH_CTL */
>> > > +
>> > > +        /* TRANS_CMTG_CTL_* */
>> > > +        { .start = 0x6fa88, .end = 0x6fa88 },
>> > > +        { .start = 0x6fb88, .end = 0x6fb88 },
>> > 
>> > These, for instance, are part of lnl_wl_range[].
>> 
>> Given my clarification above about the different purposes of the ranges,
>> I think we should stick to keeping the same values from the (soon to
>> be?) documented tables, even if there is some small redundancy.
>> Otherwise we would require the programmer to remember to check ranges in
>> the "more general" table every time a DC state-specific one needs to be
>> added or updated.
>
>Makes sense, I guess it's okay that the base table and the specialized
>tables are slightly redundant then.
>
>--
>Cheers,
>Luca.

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

end of thread, other threads:[~2024-11-06 14:00 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-21 22:27 [PATCH 00/13] drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Gustavo Sousa
2024-10-21 22:27 ` [PATCH 01/13] drm/xe: Mimic i915 behavior for non-sleeping MMIO wait Gustavo Sousa
2024-11-01 10:57   ` Luca Coelho
2024-11-05 12:17     ` Gustavo Sousa
2024-10-21 22:27 ` [PATCH 02/13] drm/i915/dmc_wl: Use non-sleeping variant of " Gustavo Sousa
2024-10-22  9:34   ` Jani Nikula
2024-10-22 10:55     ` Gustavo Sousa
2024-11-01 11:04       ` Luca Coelho
2024-11-01 11:18   ` Luca Coelho
2024-10-21 22:27 ` [PATCH 03/13] drm/i915/dmc_wl: Check for non-zero refcount in release work Gustavo Sousa
2024-11-01 11:48   ` Luca Coelho
2024-10-21 22:27 ` [PATCH 04/13] drm/i915/dmc_wl: Get wakelock when disabling dynamic DC states Gustavo Sousa
2024-11-01 12:24   ` Luca Coelho
2024-11-05 12:44     ` Gustavo Sousa
2024-11-06 11:37       ` Luca Coelho
2024-10-21 22:27 ` [PATCH 05/13] drm/i915/dmc_wl: Use sentinel item for range tables Gustavo Sousa
2024-11-01 12:25   ` Luca Coelho
2024-10-21 22:27 ` [PATCH 06/13] drm/i915/dmc_wl: Extract intel_dmc_wl_addr_in_range() Gustavo Sousa
2024-10-21 22:27 ` [PATCH 07/13] drm/i915/dmc_wl: Check ranges specific to DC states Gustavo Sousa
2024-10-22  8:03   ` Jani Nikula
2024-10-22 11:06     ` Gustavo Sousa
2024-11-05 19:54     ` Gustavo Sousa
2024-10-22  8:03   ` Jani Nikula
2024-10-22 11:10     ` Gustavo Sousa
2024-10-22 11:14   ` Gustavo Sousa
2024-11-01 12:51   ` Luca Coelho
2024-11-05 13:00     ` Gustavo Sousa
2024-11-06 11:47       ` Luca Coelho
2024-11-06 13:56         ` Gustavo Sousa
2024-10-21 22:27 ` [PATCH 08/13] drm/i915/dmc_wl: Allow simpler syntax for single reg in range tables Gustavo Sousa
2024-11-01 12:58   ` Luca Coelho
2024-11-05 13:42     ` Gustavo Sousa
2024-11-06 12:23       ` Luca Coelho
2024-11-06 12:29         ` Gustavo Sousa
2024-11-06 12:35           ` Luca Coelho
2024-10-21 22:27 ` [PATCH 09/13] drm/i915/dmc_wl: Deal with existing references when disabling Gustavo Sousa
2024-11-01 14:17   ` Luca Coelho
2024-10-21 22:27 ` [PATCH 10/13] drm/i915/dmc_wl: Couple enable/disable with dynamic DC states Gustavo Sousa
2024-11-01 14:19   ` Luca Coelho
2024-10-21 22:27 ` [PATCH 11/13] drm/i915/dmc_wl: Add and use HAS_DMC_WAKELOCK() Gustavo Sousa
2024-10-22  9:37   ` Jani Nikula
2024-10-22 11:03     ` Gustavo Sousa
2024-11-05 13:56       ` Gustavo Sousa
2024-11-06  9:25         ` Jani Nikula
2024-11-06 13:24           ` Gustavo Sousa
2024-10-21 22:27 ` [PATCH 12/13] drm/i915/dmc_wl: Sanitize enable_dmc_wl according to hardware support Gustavo Sousa
2024-11-01 14:25   ` Luca Coelho
2024-10-21 22:27 ` [PATCH 13/13] drm/i915/xe3lpd: Use DMC wakelock by default Gustavo Sousa
2024-11-01 14:27   ` Luca Coelho
2024-11-05 13:46     ` Gustavo Sousa
2024-11-05 21:12       ` Gustavo Sousa
2024-11-06 12:27         ` Luca Coelho
2024-10-21 23:47 ` ✓ CI.Patch_applied: success for drm/i915/dmc_wl: Fixes and enablement for Xe3_LPD Patchwork
2024-10-21 23:48 ` ✗ CI.checkpatch: warning " Patchwork
2024-10-21 23:49 ` ✓ CI.KUnit: success " Patchwork
2024-10-22  0:01 ` ✓ CI.Build: " Patchwork
2024-10-22  0:03 ` ✓ CI.Hooks: " Patchwork
2024-10-22  0:04 ` ✗ CI.checksparse: warning " Patchwork
2024-10-22  0:29 ` ✓ CI.BAT: success " Patchwork
2024-10-22  8:23 ` ✗ CI.FULL: failure " Patchwork

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