* [PATCH v3 1/5] drm/xe/device: Use poll_timeout_us() to wait for lmem
2025-09-11 17:25 [PATCH v3 0/5] drm/xe: Use poll_timeout_us() Lucas De Marchi
@ 2025-09-11 17:25 ` Lucas De Marchi
2025-09-11 17:25 ` [PATCH v3 2/5] drm/xe/guc_pc: Use poll_timeout_us() for waiting Lucas De Marchi
` (7 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Lucas De Marchi @ 2025-09-11 17:25 UTC (permalink / raw)
To: intel-xe
Cc: Lucas De Marchi, Ville Syrjälä, Jani Nikula,
Vinay Belgaumkar, John Harrison, Rodrigo Vivi, Maarten Lankhorst
Now that there's a generic poll_timeout_us(), use it to wait for
LMEM_INIT in GU_CNTL.
Reviewed-by: Maarten Lankhorst <dev@lankhorst.se>
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
v2:
- Handle signal_pending() as it was originally
- Don't mix return from poll_timeout_us() with return from condition
(Maarten)
---
drivers/gpu/drm/xe/xe_device.c | 65 ++++++++++++++++++++++--------------------
1 file changed, 34 insertions(+), 31 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index a4d12ee7d5756..c73d70176f8be 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -8,6 +8,7 @@
#include <linux/aperture.h>
#include <linux/delay.h>
#include <linux/fault-inject.h>
+#include <linux/iopoll.h>
#include <linux/units.h>
#include <drm/drm_atomic_helper.h>
@@ -629,16 +630,22 @@ static int xe_set_dma_info(struct xe_device *xe)
return err;
}
-static bool verify_lmem_ready(struct xe_device *xe)
+static int lmem_initializing(struct xe_device *xe)
{
- u32 val = xe_mmio_read32(xe_root_tile_mmio(xe), GU_CNTL) & LMEM_INIT;
+ if (xe_mmio_read32(xe_root_tile_mmio(xe), GU_CNTL) & LMEM_INIT)
+ return 0;
+
+ if (signal_pending(current))
+ return -EINTR;
- return !!val;
+ return 1;
}
static int wait_for_lmem_ready(struct xe_device *xe)
{
- unsigned long timeout, start;
+ const unsigned long TIMEOUT_SEC = 60;
+ unsigned long prev_jiffies;
+ int initializing;
if (!IS_DGFX(xe))
return 0;
@@ -646,39 +653,35 @@ static int wait_for_lmem_ready(struct xe_device *xe)
if (IS_SRIOV_VF(xe))
return 0;
- if (verify_lmem_ready(xe))
+ if (!lmem_initializing(xe))
return 0;
drm_dbg(&xe->drm, "Waiting for lmem initialization\n");
+ prev_jiffies = jiffies;
- start = jiffies;
- timeout = start + secs_to_jiffies(60); /* 60 sec! */
-
- do {
- if (signal_pending(current))
- return -EINTR;
-
- /*
- * The boot firmware initializes local memory and
- * assesses its health. If memory training fails,
- * the punit will have been instructed to keep the GT powered
- * down.we won't be able to communicate with it
- *
- * If the status check is done before punit updates the register,
- * it can lead to the system being unusable.
- * use a timeout and defer the probe to prevent this.
- */
- if (time_after(jiffies, timeout)) {
- drm_dbg(&xe->drm, "lmem not initialized by firmware\n");
- return -EPROBE_DEFER;
- }
-
- msleep(20);
-
- } while (!verify_lmem_ready(xe));
+ /*
+ * The boot firmware initializes local memory and
+ * assesses its health. If memory training fails,
+ * the punit will have been instructed to keep the GT powered
+ * down.we won't be able to communicate with it
+ *
+ * If the status check is done before punit updates the register,
+ * it can lead to the system being unusable.
+ * use a timeout and defer the probe to prevent this.
+ */
+ poll_timeout_us(initializing = lmem_initializing(xe),
+ initializing <= 0,
+ 20 * USEC_PER_MSEC, TIMEOUT_SEC * USEC_PER_SEC, true);
+ if (initializing < 0)
+ return initializing;
+
+ if (initializing) {
+ drm_dbg(&xe->drm, "lmem not initialized by firmware\n");
+ return -EPROBE_DEFER;
+ }
drm_dbg(&xe->drm, "lmem ready after %ums",
- jiffies_to_msecs(jiffies - start));
+ jiffies_to_msecs(jiffies - prev_jiffies));
return 0;
}
--
2.50.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 2/5] drm/xe/guc_pc: Use poll_timeout_us() for waiting
2025-09-11 17:25 [PATCH v3 0/5] drm/xe: Use poll_timeout_us() Lucas De Marchi
2025-09-11 17:25 ` [PATCH v3 1/5] drm/xe/device: Use poll_timeout_us() to wait for lmem Lucas De Marchi
@ 2025-09-11 17:25 ` Lucas De Marchi
2025-09-11 21:21 ` Belgaumkar, Vinay
2025-09-11 17:25 ` [PATCH v3 3/5] drm/xe/guc: Drop helper to read freq Lucas De Marchi
` (6 subsequent siblings)
8 siblings, 1 reply; 15+ messages in thread
From: Lucas De Marchi @ 2025-09-11 17:25 UTC (permalink / raw)
To: intel-xe
Cc: Lucas De Marchi, Ville Syrjälä, Jani Nikula,
Vinay Belgaumkar, John Harrison, Rodrigo Vivi, Maarten Lankhorst
Convert wait_for_pc_state() and wait_for_act_freq_limit() to
poll_timeout_us(). This brings 2 changes in behavior: Drop the
exponential wait and fix a potential much longer sleep.
usleep_range() will wait anywhere between `wait` and `wait << 1`, so
it's not correct to assume `slept += wait`. This code is not really
accurate. Pairing this with the exponential wait increase, it could be
waiting much longer than intended.
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
v2: Simplify functions by removing helper variables and changing break
condition on poll_timeout_us() call (Maarten)
v3: dial a little bit back from v2: better to have some helper vars
and avoid the weird syntax (Jani)
---
drivers/gpu/drm/xe/xe_guc_pc.c | 42 ++++++++++++------------------------------
1 file changed, 12 insertions(+), 30 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
index 68a5bf8e39462..ecfe37836692f 100644
--- a/drivers/gpu/drm/xe/xe_guc_pc.c
+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
@@ -7,6 +7,7 @@
#include <linux/cleanup.h>
#include <linux/delay.h>
+#include <linux/iopoll.h>
#include <linux/jiffies.h>
#include <linux/ktime.h>
#include <linux/wait_bit.h>
@@ -130,26 +131,16 @@ static struct iosys_map *pc_to_maps(struct xe_guc_pc *pc)
FIELD_PREP(HOST2GUC_PC_SLPC_REQUEST_MSG_1_EVENT_ARGC, count))
static int wait_for_pc_state(struct xe_guc_pc *pc,
- enum slpc_global_state state,
+ enum slpc_global_state target_state,
int timeout_ms)
{
- int timeout_us = 1000 * timeout_ms;
- int slept, wait = 10;
+ enum slpc_global_state state;
xe_device_assert_mem_access(pc_to_xe(pc));
- for (slept = 0; slept < timeout_us;) {
- if (slpc_shared_data_read(pc, header.global_state) == state)
- return 0;
-
- usleep_range(wait, wait << 1);
- slept += wait;
- wait <<= 1;
- if (slept + wait > timeout_us)
- wait = timeout_us - slept;
- }
-
- return -ETIMEDOUT;
+ return poll_timeout_us(state = slpc_shared_data_read(pc, header.global_state),
+ state == target_state,
+ 20, timeout_ms * USEC_PER_MSEC, false);
}
static int wait_for_flush_complete(struct xe_guc_pc *pc)
@@ -164,24 +155,15 @@ static int wait_for_flush_complete(struct xe_guc_pc *pc)
return 0;
}
-static int wait_for_act_freq_limit(struct xe_guc_pc *pc, u32 freq)
+static int wait_for_act_freq_limit(struct xe_guc_pc *pc, u32 max_freq)
{
- int timeout_us = SLPC_ACT_FREQ_TIMEOUT_MS * USEC_PER_MSEC;
- int slept, wait = 10;
-
- for (slept = 0; slept < timeout_us;) {
- if (xe_guc_pc_get_act_freq(pc) <= freq)
- return 0;
-
- usleep_range(wait, wait << 1);
- slept += wait;
- wait <<= 1;
- if (slept + wait > timeout_us)
- wait = timeout_us - slept;
- }
+ u32 freq;
- return -ETIMEDOUT;
+ return poll_timeout_us(freq = xe_guc_pc_get_act_freq(pc),
+ freq <= max_freq,
+ 20, SLPC_ACT_FREQ_TIMEOUT_MS * USEC_PER_MSEC, false);
}
+
static int pc_action_reset(struct xe_guc_pc *pc)
{
struct xe_guc_ct *ct = pc_to_ct(pc);
--
2.50.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH v3 2/5] drm/xe/guc_pc: Use poll_timeout_us() for waiting
2025-09-11 17:25 ` [PATCH v3 2/5] drm/xe/guc_pc: Use poll_timeout_us() for waiting Lucas De Marchi
@ 2025-09-11 21:21 ` Belgaumkar, Vinay
2025-09-12 4:56 ` Lucas De Marchi
0 siblings, 1 reply; 15+ messages in thread
From: Belgaumkar, Vinay @ 2025-09-11 21:21 UTC (permalink / raw)
To: Lucas De Marchi, intel-xe
Cc: Ville Syrjälä, Jani Nikula, John Harrison, Rodrigo Vivi,
Maarten Lankhorst
On 9/11/2025 10:25 AM, Lucas De Marchi wrote:
> Convert wait_for_pc_state() and wait_for_act_freq_limit() to
> poll_timeout_us(). This brings 2 changes in behavior: Drop the
> exponential wait and fix a potential much longer sleep.
>
> usleep_range() will wait anywhere between `wait` and `wait << 1`, so
> it's not correct to assume `slept += wait`. This code is not really
> accurate. Pairing this with the exponential wait increase, it could be
> waiting much longer than intended.
>
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> ---
> v2: Simplify functions by removing helper variables and changing break
> condition on poll_timeout_us() call (Maarten)
> v3: dial a little bit back from v2: better to have some helper vars
> and avoid the weird syntax (Jani)
> ---
> drivers/gpu/drm/xe/xe_guc_pc.c | 42 ++++++++++++------------------------------
> 1 file changed, 12 insertions(+), 30 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
> index 68a5bf8e39462..ecfe37836692f 100644
> --- a/drivers/gpu/drm/xe/xe_guc_pc.c
> +++ b/drivers/gpu/drm/xe/xe_guc_pc.c
> @@ -7,6 +7,7 @@
>
> #include <linux/cleanup.h>
> #include <linux/delay.h>
> +#include <linux/iopoll.h>
> #include <linux/jiffies.h>
> #include <linux/ktime.h>
> #include <linux/wait_bit.h>
> @@ -130,26 +131,16 @@ static struct iosys_map *pc_to_maps(struct xe_guc_pc *pc)
> FIELD_PREP(HOST2GUC_PC_SLPC_REQUEST_MSG_1_EVENT_ARGC, count))
>
> static int wait_for_pc_state(struct xe_guc_pc *pc,
> - enum slpc_global_state state,
> + enum slpc_global_state target_state,
> int timeout_ms)
> {
> - int timeout_us = 1000 * timeout_ms;
> - int slept, wait = 10;
> + enum slpc_global_state state;
>
> xe_device_assert_mem_access(pc_to_xe(pc));
>
> - for (slept = 0; slept < timeout_us;) {
> - if (slpc_shared_data_read(pc, header.global_state) == state)
> - return 0;
> -
> - usleep_range(wait, wait << 1);
> - slept += wait;
> - wait <<= 1;
> - if (slept + wait > timeout_us)
> - wait = timeout_us - slept;
> - }
> -
> - return -ETIMEDOUT;
> + return poll_timeout_us(state = slpc_shared_data_read(pc, header.global_state),
> + state == target_state,
> + 20, timeout_ms * USEC_PER_MSEC, false);
> }
>
> static int wait_for_flush_complete(struct xe_guc_pc *pc)
> @@ -164,24 +155,15 @@ static int wait_for_flush_complete(struct xe_guc_pc *pc)
> return 0;
> }
>
> -static int wait_for_act_freq_limit(struct xe_guc_pc *pc, u32 freq)
> +static int wait_for_act_freq_limit(struct xe_guc_pc *pc, u32 max_freq)
Nit: rename to limit_freq or something instead of max_freq in order to
avoid linking this to gt max freq.
with that,
Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
> {
> - int timeout_us = SLPC_ACT_FREQ_TIMEOUT_MS * USEC_PER_MSEC;
> - int slept, wait = 10;
> -
> - for (slept = 0; slept < timeout_us;) {
> - if (xe_guc_pc_get_act_freq(pc) <= freq)
> - return 0;
> -
> - usleep_range(wait, wait << 1);
> - slept += wait;
> - wait <<= 1;
> - if (slept + wait > timeout_us)
> - wait = timeout_us - slept;
> - }
> + u32 freq;
>
> - return -ETIMEDOUT;
> + return poll_timeout_us(freq = xe_guc_pc_get_act_freq(pc),
> + freq <= max_freq,
> + 20, SLPC_ACT_FREQ_TIMEOUT_MS * USEC_PER_MSEC, false);
> }
> +
> static int pc_action_reset(struct xe_guc_pc *pc)
> {
> struct xe_guc_ct *ct = pc_to_ct(pc);
>
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH v3 2/5] drm/xe/guc_pc: Use poll_timeout_us() for waiting
2025-09-11 21:21 ` Belgaumkar, Vinay
@ 2025-09-12 4:56 ` Lucas De Marchi
2025-09-12 23:55 ` Belgaumkar, Vinay
0 siblings, 1 reply; 15+ messages in thread
From: Lucas De Marchi @ 2025-09-12 4:56 UTC (permalink / raw)
To: Belgaumkar, Vinay
Cc: intel-xe, Ville Syrjälä, Jani Nikula, John Harrison,
Rodrigo Vivi, Maarten Lankhorst
On Thu, Sep 11, 2025 at 02:21:28PM -0700, Belgaumkar, Vinay wrote:
>
>On 9/11/2025 10:25 AM, Lucas De Marchi wrote:
>>Convert wait_for_pc_state() and wait_for_act_freq_limit() to
>>poll_timeout_us(). This brings 2 changes in behavior: Drop the
>>exponential wait and fix a potential much longer sleep.
>>
>>usleep_range() will wait anywhere between `wait` and `wait << 1`, so
>>it's not correct to assume `slept += wait`. This code is not really
>>accurate. Pairing this with the exponential wait increase, it could be
>>waiting much longer than intended.
>>
>>Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>>---
>>v2: Simplify functions by removing helper variables and changing break
>> condition on poll_timeout_us() call (Maarten)
>>v3: dial a little bit back from v2: better to have some helper vars
>> and avoid the weird syntax (Jani)
>>---
>> drivers/gpu/drm/xe/xe_guc_pc.c | 42 ++++++++++++------------------------------
>> 1 file changed, 12 insertions(+), 30 deletions(-)
>>
>>diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
>>index 68a5bf8e39462..ecfe37836692f 100644
>>--- a/drivers/gpu/drm/xe/xe_guc_pc.c
>>+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
>>@@ -7,6 +7,7 @@
>> #include <linux/cleanup.h>
>> #include <linux/delay.h>
>>+#include <linux/iopoll.h>
>> #include <linux/jiffies.h>
>> #include <linux/ktime.h>
>> #include <linux/wait_bit.h>
>>@@ -130,26 +131,16 @@ static struct iosys_map *pc_to_maps(struct xe_guc_pc *pc)
>> FIELD_PREP(HOST2GUC_PC_SLPC_REQUEST_MSG_1_EVENT_ARGC, count))
>> static int wait_for_pc_state(struct xe_guc_pc *pc,
>>- enum slpc_global_state state,
>>+ enum slpc_global_state target_state,
>> int timeout_ms)
>> {
>>- int timeout_us = 1000 * timeout_ms;
>>- int slept, wait = 10;
>>+ enum slpc_global_state state;
>> xe_device_assert_mem_access(pc_to_xe(pc));
>>- for (slept = 0; slept < timeout_us;) {
>>- if (slpc_shared_data_read(pc, header.global_state) == state)
>>- return 0;
>>-
>>- usleep_range(wait, wait << 1);
>>- slept += wait;
>>- wait <<= 1;
>>- if (slept + wait > timeout_us)
>>- wait = timeout_us - slept;
>>- }
>>-
>>- return -ETIMEDOUT;
>>+ return poll_timeout_us(state = slpc_shared_data_read(pc, header.global_state),
>>+ state == target_state,
>>+ 20, timeout_ms * USEC_PER_MSEC, false);
>> }
>> static int wait_for_flush_complete(struct xe_guc_pc *pc)
>>@@ -164,24 +155,15 @@ static int wait_for_flush_complete(struct xe_guc_pc *pc)
>> return 0;
>> }
>>-static int wait_for_act_freq_limit(struct xe_guc_pc *pc, u32 freq)
>>+static int wait_for_act_freq_limit(struct xe_guc_pc *pc, u32 max_freq)
>
>Nit: rename to limit_freq or something instead of max_freq in order to
>avoid linking this to gt max freq.
problem with "limit" is that it gives no clue if it's limiting down or
up. wait_for_act_freq_up_to() or s/max_freq/max_limit/ ?
>
>with that,
>
>Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
thanks
Lucas De Marchi
>
>> {
>>- int timeout_us = SLPC_ACT_FREQ_TIMEOUT_MS * USEC_PER_MSEC;
>>- int slept, wait = 10;
>>-
>>- for (slept = 0; slept < timeout_us;) {
>>- if (xe_guc_pc_get_act_freq(pc) <= freq)
>>- return 0;
>>-
>>- usleep_range(wait, wait << 1);
>>- slept += wait;
>>- wait <<= 1;
>>- if (slept + wait > timeout_us)
>>- wait = timeout_us - slept;
>>- }
>>+ u32 freq;
>>- return -ETIMEDOUT;
>>+ return poll_timeout_us(freq = xe_guc_pc_get_act_freq(pc),
>>+ freq <= max_freq,
>>+ 20, SLPC_ACT_FREQ_TIMEOUT_MS * USEC_PER_MSEC, false);
>> }
>>+
>> static int pc_action_reset(struct xe_guc_pc *pc)
>> {
>> struct xe_guc_ct *ct = pc_to_ct(pc);
>>
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH v3 2/5] drm/xe/guc_pc: Use poll_timeout_us() for waiting
2025-09-12 4:56 ` Lucas De Marchi
@ 2025-09-12 23:55 ` Belgaumkar, Vinay
0 siblings, 0 replies; 15+ messages in thread
From: Belgaumkar, Vinay @ 2025-09-12 23:55 UTC (permalink / raw)
To: Lucas De Marchi
Cc: intel-xe, Ville Syrjälä, Jani Nikula, John Harrison,
Rodrigo Vivi, Maarten Lankhorst
On 9/11/2025 9:56 PM, Lucas De Marchi wrote:
> On Thu, Sep 11, 2025 at 02:21:28PM -0700, Belgaumkar, Vinay wrote:
>>
>> On 9/11/2025 10:25 AM, Lucas De Marchi wrote:
>>> Convert wait_for_pc_state() and wait_for_act_freq_limit() to
>>> poll_timeout_us(). This brings 2 changes in behavior: Drop the
>>> exponential wait and fix a potential much longer sleep.
>>>
>>> usleep_range() will wait anywhere between `wait` and `wait << 1`, so
>>> it's not correct to assume `slept += wait`. This code is not really
>>> accurate. Pairing this with the exponential wait increase, it could be
>>> waiting much longer than intended.
>>>
>>> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
>>> ---
>>> v2: Simplify functions by removing helper variables and changing break
>>> condition on poll_timeout_us() call (Maarten)
>>> v3: dial a little bit back from v2: better to have some helper vars
>>> and avoid the weird syntax (Jani)
>>> ---
>>> drivers/gpu/drm/xe/xe_guc_pc.c | 42
>>> ++++++++++++------------------------------
>>> 1 file changed, 12 insertions(+), 30 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c
>>> b/drivers/gpu/drm/xe/xe_guc_pc.c
>>> index 68a5bf8e39462..ecfe37836692f 100644
>>> --- a/drivers/gpu/drm/xe/xe_guc_pc.c
>>> +++ b/drivers/gpu/drm/xe/xe_guc_pc.c
>>> @@ -7,6 +7,7 @@
>>> #include <linux/cleanup.h>
>>> #include <linux/delay.h>
>>> +#include <linux/iopoll.h>
>>> #include <linux/jiffies.h>
>>> #include <linux/ktime.h>
>>> #include <linux/wait_bit.h>
>>> @@ -130,26 +131,16 @@ static struct iosys_map *pc_to_maps(struct
>>> xe_guc_pc *pc)
>>> FIELD_PREP(HOST2GUC_PC_SLPC_REQUEST_MSG_1_EVENT_ARGC, count))
>>> static int wait_for_pc_state(struct xe_guc_pc *pc,
>>> - enum slpc_global_state state,
>>> + enum slpc_global_state target_state,
>>> int timeout_ms)
>>> {
>>> - int timeout_us = 1000 * timeout_ms;
>>> - int slept, wait = 10;
>>> + enum slpc_global_state state;
>>> xe_device_assert_mem_access(pc_to_xe(pc));
>>> - for (slept = 0; slept < timeout_us;) {
>>> - if (slpc_shared_data_read(pc, header.global_state) == state)
>>> - return 0;
>>> -
>>> - usleep_range(wait, wait << 1);
>>> - slept += wait;
>>> - wait <<= 1;
>>> - if (slept + wait > timeout_us)
>>> - wait = timeout_us - slept;
>>> - }
>>> -
>>> - return -ETIMEDOUT;
>>> + return poll_timeout_us(state = slpc_shared_data_read(pc,
>>> header.global_state),
>>> + state == target_state,
>>> + 20, timeout_ms * USEC_PER_MSEC, false);
>>> }
>>> static int wait_for_flush_complete(struct xe_guc_pc *pc)
>>> @@ -164,24 +155,15 @@ static int wait_for_flush_complete(struct
>>> xe_guc_pc *pc)
>>> return 0;
>>> }
>>> -static int wait_for_act_freq_limit(struct xe_guc_pc *pc, u32 freq)
>>> +static int wait_for_act_freq_limit(struct xe_guc_pc *pc, u32 max_freq)
>>
>> Nit: rename to limit_freq or something instead of max_freq in order
>> to avoid linking this to gt max freq.
>
> problem with "limit" is that it gives no clue if it's limiting down or
> up. wait_for_act_freq_up_to() or s/max_freq/max_limit/ ?
true. Either one should clarify it a little.
Thanks,
Vinay.
>
>>
>> with that,
>>
>> Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
>
> thanks
> Lucas De Marchi
>
>
>>
>>> {
>>> - int timeout_us = SLPC_ACT_FREQ_TIMEOUT_MS * USEC_PER_MSEC;
>>> - int slept, wait = 10;
>>> -
>>> - for (slept = 0; slept < timeout_us;) {
>>> - if (xe_guc_pc_get_act_freq(pc) <= freq)
>>> - return 0;
>>> -
>>> - usleep_range(wait, wait << 1);
>>> - slept += wait;
>>> - wait <<= 1;
>>> - if (slept + wait > timeout_us)
>>> - wait = timeout_us - slept;
>>> - }
>>> + u32 freq;
>>> - return -ETIMEDOUT;
>>> + return poll_timeout_us(freq = xe_guc_pc_get_act_freq(pc),
>>> + freq <= max_freq,
>>> + 20, SLPC_ACT_FREQ_TIMEOUT_MS * USEC_PER_MSEC,
>>> false);
>>> }
>>> +
>>> static int pc_action_reset(struct xe_guc_pc *pc)
>>> {
>>> struct xe_guc_ct *ct = pc_to_ct(pc);
>>>
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 3/5] drm/xe/guc: Drop helper to read freq
2025-09-11 17:25 [PATCH v3 0/5] drm/xe: Use poll_timeout_us() Lucas De Marchi
2025-09-11 17:25 ` [PATCH v3 1/5] drm/xe/device: Use poll_timeout_us() to wait for lmem Lucas De Marchi
2025-09-11 17:25 ` [PATCH v3 2/5] drm/xe/guc_pc: Use poll_timeout_us() for waiting Lucas De Marchi
@ 2025-09-11 17:25 ` Lucas De Marchi
2025-09-11 17:25 ` [PATCH v3 4/5] drm/xe/guc: Extract function to print load error Lucas De Marchi
` (5 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Lucas De Marchi @ 2025-09-11 17:25 UTC (permalink / raw)
To: intel-xe
Cc: Lucas De Marchi, Ville Syrjälä, Jani Nikula,
Vinay Belgaumkar, John Harrison, Rodrigo Vivi, Maarten Lankhorst,
Maarten Lankhorst
As the forcewake is already held during GuC load, there's no need to use
a helper function to call xe_guc_pc_get_cur_freq(). Just call
xe_guc_pc_get_cur_freq_fw() directly.
Suggested-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
drivers/gpu/drm/xe/xe_guc.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index e56c9c5c8845e..d8fc060c9682e 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -1019,14 +1019,6 @@ static int guc_load_done(u32 status)
return 0;
}
-static s32 guc_pc_get_cur_freq(struct xe_guc_pc *guc_pc)
-{
- u32 freq;
- int ret = xe_guc_pc_get_cur_freq(guc_pc, &freq);
-
- return ret ? ret : freq;
-}
-
/*
* Wait for the GuC to start up.
*
@@ -1104,7 +1096,7 @@ static void guc_wait_ucode(struct xe_guc *guc)
xe_gt_dbg(gt, "load still in progress, timeouts = %d, freq = %dMHz (req %dMHz), status = 0x%08X [0x%02X/%02X]\n",
count, xe_guc_pc_get_act_freq(guc_pc),
- guc_pc_get_cur_freq(guc_pc), status,
+ xe_guc_pc_get_cur_freq_fw(guc_pc), status,
REG_FIELD_GET(GS_BOOTROM_MASK, status),
REG_FIELD_GET(GS_UKERNEL_MASK, status));
} while (1);
@@ -1115,7 +1107,7 @@ static void guc_wait_ucode(struct xe_guc *guc)
xe_gt_err(gt, "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz), done = %d\n",
status, delta_ms, xe_guc_pc_get_act_freq(guc_pc),
- guc_pc_get_cur_freq(guc_pc), load_done);
+ xe_guc_pc_get_cur_freq_fw(guc_pc), load_done);
xe_gt_err(gt, "load failed: status: Reset = %d, BootROM = 0x%02X, UKernel = 0x%02X, MIA = 0x%02X, Auth = 0x%02X\n",
REG_FIELD_GET(GS_MIA_IN_RESET, status),
bootrom, ukernel,
@@ -1169,11 +1161,11 @@ static void guc_wait_ucode(struct xe_guc *guc)
xe_gt_warn(gt, "excessive init time: %lldms! [status = 0x%08X, timeouts = %d]\n",
delta_ms, status, count);
xe_gt_warn(gt, "excessive init time: [freq = %dMHz (req = %dMHz), before = %dMHz, perf_limit_reasons = 0x%08X]\n",
- xe_guc_pc_get_act_freq(guc_pc), guc_pc_get_cur_freq(guc_pc),
+ xe_guc_pc_get_act_freq(guc_pc), xe_guc_pc_get_cur_freq_fw(guc_pc),
before_freq, xe_gt_throttle_get_limit_reasons(gt));
} else {
xe_gt_dbg(gt, "init took %lldms, freq = %dMHz (req = %dMHz), before = %dMHz, status = 0x%08X, timeouts = %d\n",
- delta_ms, xe_guc_pc_get_act_freq(guc_pc), guc_pc_get_cur_freq(guc_pc),
+ delta_ms, xe_guc_pc_get_act_freq(guc_pc), xe_guc_pc_get_cur_freq_fw(guc_pc),
before_freq, status, count);
}
}
--
2.50.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH v3 4/5] drm/xe/guc: Extract function to print load error
2025-09-11 17:25 [PATCH v3 0/5] drm/xe: Use poll_timeout_us() Lucas De Marchi
` (2 preceding siblings ...)
2025-09-11 17:25 ` [PATCH v3 3/5] drm/xe/guc: Drop helper to read freq Lucas De Marchi
@ 2025-09-11 17:25 ` Lucas De Marchi
2025-09-16 20:06 ` John Harrison
2025-09-11 17:25 ` [PATCH v3 5/5] drm/xe/guc: Refactor GuC load to use poll_timeout_us() Lucas De Marchi
` (4 subsequent siblings)
8 siblings, 1 reply; 15+ messages in thread
From: Lucas De Marchi @ 2025-09-11 17:25 UTC (permalink / raw)
To: intel-xe
Cc: Lucas De Marchi, Ville Syrjälä, Jani Nikula,
Vinay Belgaumkar, John Harrison, Rodrigo Vivi, Maarten Lankhorst
Move the error parsing and print out of guc_wait_ucode() into a helper
to clean up the wait function.
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
drivers/gpu/drm/xe/xe_guc.c | 81 ++++++++++++++++++++++-----------------------
1 file changed, 39 insertions(+), 42 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index d8fc060c9682e..da1bb4939c6b8 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -1049,6 +1049,44 @@ static int guc_load_done(u32 status)
#endif
#define GUC_LOAD_TIME_WARN_MS 200
+static void print_bootrom_ukernel_err(struct xe_gt *gt, u32 bootrom, u32 ukernel)
+{
+ switch (bootrom) {
+ case XE_BOOTROM_STATUS_NO_KEY_FOUND:
+ xe_gt_err(gt, "invalid key requested, header = 0x%08X\n",
+ xe_mmio_read32(>->mmio, GUC_HEADER_INFO));
+ break;
+ case XE_BOOTROM_STATUS_RSA_FAILED:
+ xe_gt_err(gt, "firmware signature verification failed\n");
+ break;
+ case XE_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
+ xe_gt_err(gt, "firmware production part check failure\n");
+ break;
+ }
+
+ switch (ukernel) {
+ case XE_GUC_LOAD_STATUS_HWCONFIG_START:
+ xe_gt_err(gt, "still extracting hwconfig table.\n");
+ break;
+ case XE_GUC_LOAD_STATUS_EXCEPTION:
+ xe_gt_err(gt, "firmware exception. EIP: %#x\n",
+ xe_mmio_read32(>->mmio, SOFT_SCRATCH(13)));
+ break;
+ case XE_GUC_LOAD_STATUS_INIT_DATA_INVALID:
+ xe_gt_err(gt, "illegal init/ADS data\n");
+ break;
+ case XE_GUC_LOAD_STATUS_INIT_MMIO_SAVE_RESTORE_INVALID:
+ xe_gt_err(gt, "illegal register in save/restore workaround list\n");
+ break;
+ case XE_GUC_LOAD_STATUS_KLV_WORKAROUND_INIT_ERROR:
+ xe_gt_err(gt, "illegal workaround KLV data\n");
+ break;
+ case XE_GUC_LOAD_STATUS_INVALID_FTR_FLAG:
+ xe_gt_err(gt, "illegal feature flag specified\n");
+ break;
+ }
+}
+
static void guc_wait_ucode(struct xe_guc *guc)
{
struct xe_gt *gt = guc_to_gt(guc);
@@ -1114,48 +1152,7 @@ static void guc_wait_ucode(struct xe_guc *guc)
REG_FIELD_GET(GS_MIA_MASK, status),
REG_FIELD_GET(GS_AUTH_STATUS_MASK, status));
- switch (bootrom) {
- case XE_BOOTROM_STATUS_NO_KEY_FOUND:
- xe_gt_err(gt, "invalid key requested, header = 0x%08X\n",
- xe_mmio_read32(mmio, GUC_HEADER_INFO));
- break;
-
- case XE_BOOTROM_STATUS_RSA_FAILED:
- xe_gt_err(gt, "firmware signature verification failed\n");
- break;
-
- case XE_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
- xe_gt_err(gt, "firmware production part check failure\n");
- break;
- }
-
- switch (ukernel) {
- case XE_GUC_LOAD_STATUS_HWCONFIG_START:
- xe_gt_err(gt, "still extracting hwconfig table.\n");
- break;
-
- case XE_GUC_LOAD_STATUS_EXCEPTION:
- xe_gt_err(gt, "firmware exception. EIP: %#x\n",
- xe_mmio_read32(mmio, SOFT_SCRATCH(13)));
- break;
-
- case XE_GUC_LOAD_STATUS_INIT_DATA_INVALID:
- xe_gt_err(gt, "illegal init/ADS data\n");
- break;
-
- case XE_GUC_LOAD_STATUS_INIT_MMIO_SAVE_RESTORE_INVALID:
- xe_gt_err(gt, "illegal register in save/restore workaround list\n");
- break;
-
- case XE_GUC_LOAD_STATUS_KLV_WORKAROUND_INIT_ERROR:
- xe_gt_err(gt, "illegal workaround KLV data\n");
- break;
-
- case XE_GUC_LOAD_STATUS_INVALID_FTR_FLAG:
- xe_gt_err(gt, "illegal feature flag specified\n");
- break;
- }
-
+ print_bootrom_ukernel_err(gt, bootrom, ukernel);
xe_device_declare_wedged(gt_to_xe(gt));
} else if (delta_ms > GUC_LOAD_TIME_WARN_MS) {
xe_gt_warn(gt, "excessive init time: %lldms! [status = 0x%08X, timeouts = %d]\n",
--
2.50.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH v3 4/5] drm/xe/guc: Extract function to print load error
2025-09-11 17:25 ` [PATCH v3 4/5] drm/xe/guc: Extract function to print load error Lucas De Marchi
@ 2025-09-16 20:06 ` John Harrison
0 siblings, 0 replies; 15+ messages in thread
From: John Harrison @ 2025-09-16 20:06 UTC (permalink / raw)
To: Lucas De Marchi, intel-xe
Cc: Ville Syrjälä, Jani Nikula, Vinay Belgaumkar,
Rodrigo Vivi, Maarten Lankhorst
On 9/11/2025 10:25 AM, Lucas De Marchi wrote:
> Move the error parsing and print out of guc_wait_ucode() into a helper
> to clean up the wait function.
>
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
> ---
> drivers/gpu/drm/xe/xe_guc.c | 81 ++++++++++++++++++++++-----------------------
> 1 file changed, 39 insertions(+), 42 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index d8fc060c9682e..da1bb4939c6b8 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -1049,6 +1049,44 @@ static int guc_load_done(u32 status)
> #endif
> #define GUC_LOAD_TIME_WARN_MS 200
>
> +static void print_bootrom_ukernel_err(struct xe_gt *gt, u32 bootrom, u32 ukernel)
> +{
> + switch (bootrom) {
> + case XE_BOOTROM_STATUS_NO_KEY_FOUND:
> + xe_gt_err(gt, "invalid key requested, header = 0x%08X\n",
> + xe_mmio_read32(>->mmio, GUC_HEADER_INFO));
> + break;
> + case XE_BOOTROM_STATUS_RSA_FAILED:
> + xe_gt_err(gt, "firmware signature verification failed\n");
> + break;
> + case XE_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
> + xe_gt_err(gt, "firmware production part check failure\n");
> + break;
> + }
> +
> + switch (ukernel) {
> + case XE_GUC_LOAD_STATUS_HWCONFIG_START:
> + xe_gt_err(gt, "still extracting hwconfig table.\n");
> + break;
> + case XE_GUC_LOAD_STATUS_EXCEPTION:
> + xe_gt_err(gt, "firmware exception. EIP: %#x\n",
> + xe_mmio_read32(>->mmio, SOFT_SCRATCH(13)));
> + break;
> + case XE_GUC_LOAD_STATUS_INIT_DATA_INVALID:
> + xe_gt_err(gt, "illegal init/ADS data\n");
> + break;
> + case XE_GUC_LOAD_STATUS_INIT_MMIO_SAVE_RESTORE_INVALID:
> + xe_gt_err(gt, "illegal register in save/restore workaround list\n");
> + break;
> + case XE_GUC_LOAD_STATUS_KLV_WORKAROUND_INIT_ERROR:
> + xe_gt_err(gt, "illegal workaround KLV data\n");
> + break;
> + case XE_GUC_LOAD_STATUS_INVALID_FTR_FLAG:
> + xe_gt_err(gt, "illegal feature flag specified\n");
> + break;
> + }
> +}
> +
> static void guc_wait_ucode(struct xe_guc *guc)
> {
> struct xe_gt *gt = guc_to_gt(guc);
> @@ -1114,48 +1152,7 @@ static void guc_wait_ucode(struct xe_guc *guc)
> REG_FIELD_GET(GS_MIA_MASK, status),
> REG_FIELD_GET(GS_AUTH_STATUS_MASK, status));
>
> - switch (bootrom) {
> - case XE_BOOTROM_STATUS_NO_KEY_FOUND:
> - xe_gt_err(gt, "invalid key requested, header = 0x%08X\n",
> - xe_mmio_read32(mmio, GUC_HEADER_INFO));
> - break;
> -
> - case XE_BOOTROM_STATUS_RSA_FAILED:
> - xe_gt_err(gt, "firmware signature verification failed\n");
> - break;
> -
> - case XE_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
> - xe_gt_err(gt, "firmware production part check failure\n");
> - break;
> - }
> -
> - switch (ukernel) {
> - case XE_GUC_LOAD_STATUS_HWCONFIG_START:
> - xe_gt_err(gt, "still extracting hwconfig table.\n");
> - break;
> -
> - case XE_GUC_LOAD_STATUS_EXCEPTION:
> - xe_gt_err(gt, "firmware exception. EIP: %#x\n",
> - xe_mmio_read32(mmio, SOFT_SCRATCH(13)));
> - break;
> -
> - case XE_GUC_LOAD_STATUS_INIT_DATA_INVALID:
> - xe_gt_err(gt, "illegal init/ADS data\n");
> - break;
> -
> - case XE_GUC_LOAD_STATUS_INIT_MMIO_SAVE_RESTORE_INVALID:
> - xe_gt_err(gt, "illegal register in save/restore workaround list\n");
> - break;
> -
> - case XE_GUC_LOAD_STATUS_KLV_WORKAROUND_INIT_ERROR:
> - xe_gt_err(gt, "illegal workaround KLV data\n");
> - break;
> -
> - case XE_GUC_LOAD_STATUS_INVALID_FTR_FLAG:
> - xe_gt_err(gt, "illegal feature flag specified\n");
> - break;
> - }
> -
> + print_bootrom_ukernel_err(gt, bootrom, ukernel);
> xe_device_declare_wedged(gt_to_xe(gt));
> } else if (delta_ms > GUC_LOAD_TIME_WARN_MS) {
> xe_gt_warn(gt, "excessive init time: %lldms! [status = 0x%08X, timeouts = %d]\n",
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 5/5] drm/xe/guc: Refactor GuC load to use poll_timeout_us()
2025-09-11 17:25 [PATCH v3 0/5] drm/xe: Use poll_timeout_us() Lucas De Marchi
` (3 preceding siblings ...)
2025-09-11 17:25 ` [PATCH v3 4/5] drm/xe/guc: Extract function to print load error Lucas De Marchi
@ 2025-09-11 17:25 ` Lucas De Marchi
2025-09-16 20:03 ` John Harrison
2025-09-11 17:32 ` ✗ CI.checkpatch: warning for drm/xe: Use poll_timeout_us() (rev4) Patchwork
` (3 subsequent siblings)
8 siblings, 1 reply; 15+ messages in thread
From: Lucas De Marchi @ 2025-09-11 17:25 UTC (permalink / raw)
To: intel-xe
Cc: Lucas De Marchi, Ville Syrjälä, Jani Nikula,
Vinay Belgaumkar, John Harrison, Rodrigo Vivi, Maarten Lankhorst
Currently there are 2 wait loops for loading GuC: one in
xe_mmio_wait32_not() and one guc_wait_ucode(). Now that there's a
generic poll_timeout_us(), refactor the code to use that and be more
readable.
Main change in behavior is that there's no exponential wait anymore:
that is now replaced by a 10msec retry.
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
---
v2: Fix typos and leftover comment (John Harrison)
v3: Leave the addition of print_bootrom_ukernel_err() to another commit
---
drivers/gpu/drm/xe/xe_guc.c | 213 +++++++++++++++++++-------------------------
1 file changed, 93 insertions(+), 120 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index da1bb4939c6b8..389576055cc5d 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -5,6 +5,7 @@
#include "xe_guc.h"
+#include <linux/iopoll.h>
#include <drm/drm_managed.h>
#include <generated/xe_wa_oob.h>
@@ -972,82 +973,27 @@ static int guc_xfer_rsa(struct xe_guc *guc)
return 0;
}
-/*
- * Check a previously read GuC status register (GUC_STATUS) looking for
- * known terminal states (either completion or failure) of either the
- * microkernel status field or the boot ROM status field. Returns +1 for
- * successful completion, -1 for failure and 0 for any intermediate state.
- */
-static int guc_load_done(u32 status)
-{
- u32 uk_val = REG_FIELD_GET(GS_UKERNEL_MASK, status);
- u32 br_val = REG_FIELD_GET(GS_BOOTROM_MASK, status);
-
- switch (uk_val) {
- case XE_GUC_LOAD_STATUS_READY:
- return 1;
-
- case XE_GUC_LOAD_STATUS_ERROR_DEVID_BUILD_MISMATCH:
- case XE_GUC_LOAD_STATUS_GUC_PREPROD_BUILD_MISMATCH:
- case XE_GUC_LOAD_STATUS_ERROR_DEVID_INVALID_GUCTYPE:
- case XE_GUC_LOAD_STATUS_HWCONFIG_ERROR:
- case XE_GUC_LOAD_STATUS_BOOTROM_VERSION_MISMATCH:
- case XE_GUC_LOAD_STATUS_DPC_ERROR:
- case XE_GUC_LOAD_STATUS_EXCEPTION:
- case XE_GUC_LOAD_STATUS_INIT_DATA_INVALID:
- case XE_GUC_LOAD_STATUS_MPU_DATA_INVALID:
- case XE_GUC_LOAD_STATUS_INIT_MMIO_SAVE_RESTORE_INVALID:
- case XE_GUC_LOAD_STATUS_KLV_WORKAROUND_INIT_ERROR:
- case XE_GUC_LOAD_STATUS_INVALID_FTR_FLAG:
- return -1;
- }
-
- switch (br_val) {
- case XE_BOOTROM_STATUS_NO_KEY_FOUND:
- case XE_BOOTROM_STATUS_RSA_FAILED:
- case XE_BOOTROM_STATUS_PAVPC_FAILED:
- case XE_BOOTROM_STATUS_WOPCM_FAILED:
- case XE_BOOTROM_STATUS_LOADLOC_FAILED:
- case XE_BOOTROM_STATUS_JUMP_FAILED:
- case XE_BOOTROM_STATUS_RC6CTXCONFIG_FAILED:
- case XE_BOOTROM_STATUS_MPUMAP_INCORRECT:
- case XE_BOOTROM_STATUS_EXCEPTION:
- case XE_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
- return -1;
- }
-
- return 0;
-}
-
/*
* Wait for the GuC to start up.
*
* Measurements indicate this should take no more than 20ms (assuming the GT
* clock is at maximum frequency). However, thermal throttling and other issues
* can prevent the clock hitting max and thus making the load take significantly
- * longer. Allow up to 200ms as a safety margin for real world worst case situations.
- *
- * However, bugs anywhere from KMD to GuC to PCODE to fan failure in a CI farm can
- * lead to even longer times. E.g. if the GT is clamped to minimum frequency then
- * the load times can be in the seconds range. So the timeout is increased for debug
- * builds to ensure that problems can be correctly analysed. For release builds, the
- * timeout is kept short so that users don't wait forever to find out that there is a
- * problem. In either case, if the load took longer than is reasonable even with some
- * 'sensible' throttling, then flag a warning because something is not right.
+ * longer. Allow up to 3s as a safety margin in normal builds. For
+ * CONFIG_DRM_XE_DEBUG allow up to 10s to account for slower execution, issues
+ * in PCODE, driver, fan, etc.
*
- * Note that there is a limit on how long an individual usleep_range() can wait for,
- * hence longer waits require wrapping a shorter wait in a loop.
- *
- * Note that the only reason an end user should hit the shorter timeout is in case of
- * extreme thermal throttling. And a system that is that hot during boot is probably
- * dead anyway!
+ * Keep checking the GUC_STATUS every 10ms with a debug message every 100
+ * attempts as a "I'm slow, but alive" message. Regardless, if it takes more
+ * than 200ms, emit a warning.
*/
+
#if IS_ENABLED(CONFIG_DRM_XE_DEBUG)
-#define GUC_LOAD_RETRY_LIMIT 20
+#define GUC_LOAD_TIMEOUT_SEC 10
#else
-#define GUC_LOAD_RETRY_LIMIT 3
+#define GUC_LOAD_TIMEOUT_SEC 3
#endif
-#define GUC_LOAD_TIME_WARN_MS 200
+#define GUC_LOAD_TIME_WARN_MSEC 200
static void print_bootrom_ukernel_err(struct xe_gt *gt, u32 bootrom, u32 ukernel)
{
@@ -1087,66 +1033,94 @@ static void print_bootrom_ukernel_err(struct xe_gt *gt, u32 bootrom, u32 ukernel
}
}
+/*
+ * Check GUC_STATUS looking for known terminal states (either completion or
+ * failure) of either the microkernel status field or the boot ROM status field.
+ *
+ * Returns 1 for successful completion, -1 for failure and 0 for any
+ * intermediate state.
+ */
+static int guc_load_done(struct xe_gt *gt, u32 *status, u32 *tries)
+{
+ u32 ukernel, bootrom;
+
+ *status = xe_mmio_read32(>->mmio, GUC_STATUS);
+ ukernel = REG_FIELD_GET(GS_UKERNEL_MASK, *status);
+ bootrom = REG_FIELD_GET(GS_BOOTROM_MASK, *status);
+
+ switch (ukernel) {
+ case XE_GUC_LOAD_STATUS_READY:
+ return 1;
+ case XE_GUC_LOAD_STATUS_ERROR_DEVID_BUILD_MISMATCH:
+ case XE_GUC_LOAD_STATUS_GUC_PREPROD_BUILD_MISMATCH:
+ case XE_GUC_LOAD_STATUS_ERROR_DEVID_INVALID_GUCTYPE:
+ case XE_GUC_LOAD_STATUS_HWCONFIG_ERROR:
+ case XE_GUC_LOAD_STATUS_BOOTROM_VERSION_MISMATCH:
+ case XE_GUC_LOAD_STATUS_DPC_ERROR:
+ case XE_GUC_LOAD_STATUS_EXCEPTION:
+ case XE_GUC_LOAD_STATUS_INIT_DATA_INVALID:
+ case XE_GUC_LOAD_STATUS_MPU_DATA_INVALID:
+ case XE_GUC_LOAD_STATUS_INIT_MMIO_SAVE_RESTORE_INVALID:
+ case XE_GUC_LOAD_STATUS_KLV_WORKAROUND_INIT_ERROR:
+ case XE_GUC_LOAD_STATUS_INVALID_FTR_FLAG:
+ return -1;
+ }
+
+ switch (bootrom) {
+ case XE_BOOTROM_STATUS_NO_KEY_FOUND:
+ case XE_BOOTROM_STATUS_RSA_FAILED:
+ case XE_BOOTROM_STATUS_PAVPC_FAILED:
+ case XE_BOOTROM_STATUS_WOPCM_FAILED:
+ case XE_BOOTROM_STATUS_LOADLOC_FAILED:
+ case XE_BOOTROM_STATUS_JUMP_FAILED:
+ case XE_BOOTROM_STATUS_RC6CTXCONFIG_FAILED:
+ case XE_BOOTROM_STATUS_MPUMAP_INCORRECT:
+ case XE_BOOTROM_STATUS_EXCEPTION:
+ case XE_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
+ return -1;
+ }
+
+ if (++*tries >= 100) {
+ struct xe_guc_pc *guc_pc = >->uc.guc.pc;
+
+ *tries = 0;
+ xe_gt_dbg(gt, "GuC load still in progress, freq = %dMHz (req %dMHz), status = 0x%08X [0x%02X/%02X]\n",
+ xe_guc_pc_get_act_freq(guc_pc),
+ xe_guc_pc_get_cur_freq_fw(guc_pc),
+ *status, ukernel, bootrom);
+ }
+
+ return 0;
+}
+
static void guc_wait_ucode(struct xe_guc *guc)
{
struct xe_gt *gt = guc_to_gt(guc);
- struct xe_mmio *mmio = >->mmio;
struct xe_guc_pc *guc_pc = >->uc.guc.pc;
- ktime_t before, after, delta;
- int load_done;
- u32 status = 0;
- int count = 0;
+ u32 before_freq, act_freq, cur_freq;
+ u32 status = 0, tries = 0;
+ ktime_t before;
u64 delta_ms;
- u32 before_freq;
+ int ret;
before_freq = xe_guc_pc_get_act_freq(guc_pc);
before = ktime_get();
- /*
- * Note, can't use any kind of timing information from the call to xe_mmio_wait.
- * It could return a thousand intermediate stages at random times. Instead, must
- * manually track the total time taken and locally implement the timeout.
- */
- do {
- u32 last_status = status & (GS_UKERNEL_MASK | GS_BOOTROM_MASK);
- int ret;
- /*
- * Wait for any change (intermediate or terminal) in the status register.
- * Note, the return value is a don't care. The only failure code is timeout
- * but the timeouts need to be accumulated over all the intermediate partial
- * timeouts rather than allowing a huge timeout each time. So basically, need
- * to treat a timeout no different to a value change.
- */
- ret = xe_mmio_wait32_not(mmio, GUC_STATUS, GS_UKERNEL_MASK | GS_BOOTROM_MASK,
- last_status, 1000 * 1000, &status, false);
- if (ret < 0)
- count++;
- after = ktime_get();
- delta = ktime_sub(after, before);
- delta_ms = ktime_to_ms(delta);
-
- load_done = guc_load_done(status);
- if (load_done != 0)
- break;
+ ret = poll_timeout_us(ret = guc_load_done(gt, &status, &tries), ret,
+ 10 * USEC_PER_MSEC,
+ GUC_LOAD_TIMEOUT_SEC * USEC_PER_SEC, false);
- if (delta_ms >= (GUC_LOAD_RETRY_LIMIT * 1000))
- break;
-
- xe_gt_dbg(gt, "load still in progress, timeouts = %d, freq = %dMHz (req %dMHz), status = 0x%08X [0x%02X/%02X]\n",
- count, xe_guc_pc_get_act_freq(guc_pc),
- xe_guc_pc_get_cur_freq_fw(guc_pc), status,
- REG_FIELD_GET(GS_BOOTROM_MASK, status),
- REG_FIELD_GET(GS_UKERNEL_MASK, status));
- } while (1);
+ delta_ms = ktime_to_ms(ktime_sub(ktime_get(), before));
+ act_freq = xe_guc_pc_get_act_freq(guc_pc);
+ cur_freq = xe_guc_pc_get_cur_freq_fw(guc_pc);
- if (load_done != 1) {
+ if (ret) {
u32 ukernel = REG_FIELD_GET(GS_UKERNEL_MASK, status);
u32 bootrom = REG_FIELD_GET(GS_BOOTROM_MASK, status);
- xe_gt_err(gt, "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz), done = %d\n",
- status, delta_ms, xe_guc_pc_get_act_freq(guc_pc),
- xe_guc_pc_get_cur_freq_fw(guc_pc), load_done);
- xe_gt_err(gt, "load failed: status: Reset = %d, BootROM = 0x%02X, UKernel = 0x%02X, MIA = 0x%02X, Auth = 0x%02X\n",
+ xe_gt_err(gt, "GuC load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz)\n",
+ status, delta_ms, act_freq, cur_freq);
+ xe_gt_err(gt, "GuC load failed: status: Reset = %d, BootROM = 0x%02X, UKernel = 0x%02X, MIA = 0x%02X, Auth = 0x%02X\n",
REG_FIELD_GET(GS_MIA_IN_RESET, status),
bootrom, ukernel,
REG_FIELD_GET(GS_MIA_MASK, status),
@@ -1154,16 +1128,15 @@ static void guc_wait_ucode(struct xe_guc *guc)
print_bootrom_ukernel_err(gt, bootrom, ukernel);
xe_device_declare_wedged(gt_to_xe(gt));
- } else if (delta_ms > GUC_LOAD_TIME_WARN_MS) {
- xe_gt_warn(gt, "excessive init time: %lldms! [status = 0x%08X, timeouts = %d]\n",
- delta_ms, status, count);
- xe_gt_warn(gt, "excessive init time: [freq = %dMHz (req = %dMHz), before = %dMHz, perf_limit_reasons = 0x%08X]\n",
- xe_guc_pc_get_act_freq(guc_pc), xe_guc_pc_get_cur_freq_fw(guc_pc),
- before_freq, xe_gt_throttle_get_limit_reasons(gt));
+ } else if (delta_ms > GUC_LOAD_TIME_WARN_MSEC) {
+ xe_gt_warn(gt, "GuC load: excessive init time: %lldms! [status = 0x%08X]\n",
+ delta_ms, status);
+ xe_gt_warn(gt, "GuC load: excessive init time: [freq = %dMHz (req = %dMHz), before = %dMHz, perf_limit_reasons = 0x%08X]\n",
+ act_freq, cur_freq, before_freq,
+ xe_gt_throttle_get_limit_reasons(gt));
} else {
- xe_gt_dbg(gt, "init took %lldms, freq = %dMHz (req = %dMHz), before = %dMHz, status = 0x%08X, timeouts = %d\n",
- delta_ms, xe_guc_pc_get_act_freq(guc_pc), xe_guc_pc_get_cur_freq_fw(guc_pc),
- before_freq, status, count);
+ xe_gt_dbg(gt, "GuC load: init took %lldms, freq = %dMHz (req = %dMHz), before = %dMHz, status = 0x%08X\n",
+ delta_ms, act_freq, cur_freq, before_freq, status);
}
}
--
2.50.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH v3 5/5] drm/xe/guc: Refactor GuC load to use poll_timeout_us()
2025-09-11 17:25 ` [PATCH v3 5/5] drm/xe/guc: Refactor GuC load to use poll_timeout_us() Lucas De Marchi
@ 2025-09-16 20:03 ` John Harrison
0 siblings, 0 replies; 15+ messages in thread
From: John Harrison @ 2025-09-16 20:03 UTC (permalink / raw)
To: Lucas De Marchi, intel-xe
Cc: Ville Syrjälä, Jani Nikula, Vinay Belgaumkar,
Rodrigo Vivi, Maarten Lankhorst
On 9/11/2025 10:25 AM, Lucas De Marchi wrote:
> Currently there are 2 wait loops for loading GuC: one in
> xe_mmio_wait32_not() and one guc_wait_ucode(). Now that there's a
> generic poll_timeout_us(), refactor the code to use that and be more
> readable.
>
> Main change in behavior is that there's no exponential wait anymore:
> that is now replaced by a 10msec retry.
>
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> ---
> v2: Fix typos and leftover comment (John Harrison)
> v3: Leave the addition of print_bootrom_ukernel_err() to another commit
> ---
> drivers/gpu/drm/xe/xe_guc.c | 213 +++++++++++++++++++-------------------------
> 1 file changed, 93 insertions(+), 120 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
> index da1bb4939c6b8..389576055cc5d 100644
> --- a/drivers/gpu/drm/xe/xe_guc.c
> +++ b/drivers/gpu/drm/xe/xe_guc.c
> @@ -5,6 +5,7 @@
>
> #include "xe_guc.h"
>
> +#include <linux/iopoll.h>
> #include <drm/drm_managed.h>
>
> #include <generated/xe_wa_oob.h>
> @@ -972,82 +973,27 @@ static int guc_xfer_rsa(struct xe_guc *guc)
> return 0;
> }
>
> -/*
> - * Check a previously read GuC status register (GUC_STATUS) looking for
> - * known terminal states (either completion or failure) of either the
> - * microkernel status field or the boot ROM status field. Returns +1 for
> - * successful completion, -1 for failure and 0 for any intermediate state.
> - */
> -static int guc_load_done(u32 status)
> -{
> - u32 uk_val = REG_FIELD_GET(GS_UKERNEL_MASK, status);
> - u32 br_val = REG_FIELD_GET(GS_BOOTROM_MASK, status);
> -
> - switch (uk_val) {
> - case XE_GUC_LOAD_STATUS_READY:
> - return 1;
> -
> - case XE_GUC_LOAD_STATUS_ERROR_DEVID_BUILD_MISMATCH:
> - case XE_GUC_LOAD_STATUS_GUC_PREPROD_BUILD_MISMATCH:
> - case XE_GUC_LOAD_STATUS_ERROR_DEVID_INVALID_GUCTYPE:
> - case XE_GUC_LOAD_STATUS_HWCONFIG_ERROR:
> - case XE_GUC_LOAD_STATUS_BOOTROM_VERSION_MISMATCH:
> - case XE_GUC_LOAD_STATUS_DPC_ERROR:
> - case XE_GUC_LOAD_STATUS_EXCEPTION:
> - case XE_GUC_LOAD_STATUS_INIT_DATA_INVALID:
> - case XE_GUC_LOAD_STATUS_MPU_DATA_INVALID:
> - case XE_GUC_LOAD_STATUS_INIT_MMIO_SAVE_RESTORE_INVALID:
> - case XE_GUC_LOAD_STATUS_KLV_WORKAROUND_INIT_ERROR:
> - case XE_GUC_LOAD_STATUS_INVALID_FTR_FLAG:
> - return -1;
> - }
> -
> - switch (br_val) {
> - case XE_BOOTROM_STATUS_NO_KEY_FOUND:
> - case XE_BOOTROM_STATUS_RSA_FAILED:
> - case XE_BOOTROM_STATUS_PAVPC_FAILED:
> - case XE_BOOTROM_STATUS_WOPCM_FAILED:
> - case XE_BOOTROM_STATUS_LOADLOC_FAILED:
> - case XE_BOOTROM_STATUS_JUMP_FAILED:
> - case XE_BOOTROM_STATUS_RC6CTXCONFIG_FAILED:
> - case XE_BOOTROM_STATUS_MPUMAP_INCORRECT:
> - case XE_BOOTROM_STATUS_EXCEPTION:
> - case XE_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
> - return -1;
> - }
> -
> - return 0;
> -}
> -
> /*
> * Wait for the GuC to start up.
> *
> * Measurements indicate this should take no more than 20ms (assuming the GT
> * clock is at maximum frequency). However, thermal throttling and other issues
> * can prevent the clock hitting max and thus making the load take significantly
> - * longer. Allow up to 200ms as a safety margin for real world worst case situations.
> - *
> - * However, bugs anywhere from KMD to GuC to PCODE to fan failure in a CI farm can
> - * lead to even longer times. E.g. if the GT is clamped to minimum frequency then
> - * the load times can be in the seconds range. So the timeout is increased for debug
> - * builds to ensure that problems can be correctly analysed. For release builds, the
> - * timeout is kept short so that users don't wait forever to find out that there is a
> - * problem. In either case, if the load took longer than is reasonable even with some
> - * 'sensible' throttling, then flag a warning because something is not right.
> + * longer. Allow up to 3s as a safety margin in normal builds. For
> + * CONFIG_DRM_XE_DEBUG allow up to 10s to account for slower execution, issues
> + * in PCODE, driver, fan, etc.
> *
> - * Note that there is a limit on how long an individual usleep_range() can wait for,
> - * hence longer waits require wrapping a shorter wait in a loop.
> - *
> - * Note that the only reason an end user should hit the shorter timeout is in case of
> - * extreme thermal throttling. And a system that is that hot during boot is probably
> - * dead anyway!
> + * Keep checking the GUC_STATUS every 10ms with a debug message every 100
> + * attempts as a "I'm slow, but alive" message. Regardless, if it takes more
> + * than 200ms, emit a warning.
> */
> +
> #if IS_ENABLED(CONFIG_DRM_XE_DEBUG)
> -#define GUC_LOAD_RETRY_LIMIT 20
> +#define GUC_LOAD_TIMEOUT_SEC 10
The old code was 20s because we did once see 11s or some such in a CI
run. Would prefer to keep that.
With that reverted:
Reviewed-by: John Harrison <John.C.Harrison@Intel.com>
> #else
> -#define GUC_LOAD_RETRY_LIMIT 3
> +#define GUC_LOAD_TIMEOUT_SEC 3
> #endif
> -#define GUC_LOAD_TIME_WARN_MS 200
> +#define GUC_LOAD_TIME_WARN_MSEC 200
>
> static void print_bootrom_ukernel_err(struct xe_gt *gt, u32 bootrom, u32 ukernel)
> {
> @@ -1087,66 +1033,94 @@ static void print_bootrom_ukernel_err(struct xe_gt *gt, u32 bootrom, u32 ukernel
> }
> }
>
> +/*
> + * Check GUC_STATUS looking for known terminal states (either completion or
> + * failure) of either the microkernel status field or the boot ROM status field.
> + *
> + * Returns 1 for successful completion, -1 for failure and 0 for any
> + * intermediate state.
> + */
> +static int guc_load_done(struct xe_gt *gt, u32 *status, u32 *tries)
> +{
> + u32 ukernel, bootrom;
> +
> + *status = xe_mmio_read32(>->mmio, GUC_STATUS);
> + ukernel = REG_FIELD_GET(GS_UKERNEL_MASK, *status);
> + bootrom = REG_FIELD_GET(GS_BOOTROM_MASK, *status);
> +
> + switch (ukernel) {
> + case XE_GUC_LOAD_STATUS_READY:
> + return 1;
> + case XE_GUC_LOAD_STATUS_ERROR_DEVID_BUILD_MISMATCH:
> + case XE_GUC_LOAD_STATUS_GUC_PREPROD_BUILD_MISMATCH:
> + case XE_GUC_LOAD_STATUS_ERROR_DEVID_INVALID_GUCTYPE:
> + case XE_GUC_LOAD_STATUS_HWCONFIG_ERROR:
> + case XE_GUC_LOAD_STATUS_BOOTROM_VERSION_MISMATCH:
> + case XE_GUC_LOAD_STATUS_DPC_ERROR:
> + case XE_GUC_LOAD_STATUS_EXCEPTION:
> + case XE_GUC_LOAD_STATUS_INIT_DATA_INVALID:
> + case XE_GUC_LOAD_STATUS_MPU_DATA_INVALID:
> + case XE_GUC_LOAD_STATUS_INIT_MMIO_SAVE_RESTORE_INVALID:
> + case XE_GUC_LOAD_STATUS_KLV_WORKAROUND_INIT_ERROR:
> + case XE_GUC_LOAD_STATUS_INVALID_FTR_FLAG:
> + return -1;
> + }
> +
> + switch (bootrom) {
> + case XE_BOOTROM_STATUS_NO_KEY_FOUND:
> + case XE_BOOTROM_STATUS_RSA_FAILED:
> + case XE_BOOTROM_STATUS_PAVPC_FAILED:
> + case XE_BOOTROM_STATUS_WOPCM_FAILED:
> + case XE_BOOTROM_STATUS_LOADLOC_FAILED:
> + case XE_BOOTROM_STATUS_JUMP_FAILED:
> + case XE_BOOTROM_STATUS_RC6CTXCONFIG_FAILED:
> + case XE_BOOTROM_STATUS_MPUMAP_INCORRECT:
> + case XE_BOOTROM_STATUS_EXCEPTION:
> + case XE_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
> + return -1;
> + }
> +
> + if (++*tries >= 100) {
> + struct xe_guc_pc *guc_pc = >->uc.guc.pc;
> +
> + *tries = 0;
> + xe_gt_dbg(gt, "GuC load still in progress, freq = %dMHz (req %dMHz), status = 0x%08X [0x%02X/%02X]\n",
> + xe_guc_pc_get_act_freq(guc_pc),
> + xe_guc_pc_get_cur_freq_fw(guc_pc),
> + *status, ukernel, bootrom);
> + }
> +
> + return 0;
> +}
> +
> static void guc_wait_ucode(struct xe_guc *guc)
> {
> struct xe_gt *gt = guc_to_gt(guc);
> - struct xe_mmio *mmio = >->mmio;
> struct xe_guc_pc *guc_pc = >->uc.guc.pc;
> - ktime_t before, after, delta;
> - int load_done;
> - u32 status = 0;
> - int count = 0;
> + u32 before_freq, act_freq, cur_freq;
> + u32 status = 0, tries = 0;
> + ktime_t before;
> u64 delta_ms;
> - u32 before_freq;
> + int ret;
>
> before_freq = xe_guc_pc_get_act_freq(guc_pc);
> before = ktime_get();
> - /*
> - * Note, can't use any kind of timing information from the call to xe_mmio_wait.
> - * It could return a thousand intermediate stages at random times. Instead, must
> - * manually track the total time taken and locally implement the timeout.
> - */
> - do {
> - u32 last_status = status & (GS_UKERNEL_MASK | GS_BOOTROM_MASK);
> - int ret;
>
> - /*
> - * Wait for any change (intermediate or terminal) in the status register.
> - * Note, the return value is a don't care. The only failure code is timeout
> - * but the timeouts need to be accumulated over all the intermediate partial
> - * timeouts rather than allowing a huge timeout each time. So basically, need
> - * to treat a timeout no different to a value change.
> - */
> - ret = xe_mmio_wait32_not(mmio, GUC_STATUS, GS_UKERNEL_MASK | GS_BOOTROM_MASK,
> - last_status, 1000 * 1000, &status, false);
> - if (ret < 0)
> - count++;
> - after = ktime_get();
> - delta = ktime_sub(after, before);
> - delta_ms = ktime_to_ms(delta);
> -
> - load_done = guc_load_done(status);
> - if (load_done != 0)
> - break;
> + ret = poll_timeout_us(ret = guc_load_done(gt, &status, &tries), ret,
> + 10 * USEC_PER_MSEC,
> + GUC_LOAD_TIMEOUT_SEC * USEC_PER_SEC, false);
>
> - if (delta_ms >= (GUC_LOAD_RETRY_LIMIT * 1000))
> - break;
> -
> - xe_gt_dbg(gt, "load still in progress, timeouts = %d, freq = %dMHz (req %dMHz), status = 0x%08X [0x%02X/%02X]\n",
> - count, xe_guc_pc_get_act_freq(guc_pc),
> - xe_guc_pc_get_cur_freq_fw(guc_pc), status,
> - REG_FIELD_GET(GS_BOOTROM_MASK, status),
> - REG_FIELD_GET(GS_UKERNEL_MASK, status));
> - } while (1);
> + delta_ms = ktime_to_ms(ktime_sub(ktime_get(), before));
> + act_freq = xe_guc_pc_get_act_freq(guc_pc);
> + cur_freq = xe_guc_pc_get_cur_freq_fw(guc_pc);
>
> - if (load_done != 1) {
> + if (ret) {
> u32 ukernel = REG_FIELD_GET(GS_UKERNEL_MASK, status);
> u32 bootrom = REG_FIELD_GET(GS_BOOTROM_MASK, status);
>
> - xe_gt_err(gt, "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz), done = %d\n",
> - status, delta_ms, xe_guc_pc_get_act_freq(guc_pc),
> - xe_guc_pc_get_cur_freq_fw(guc_pc), load_done);
> - xe_gt_err(gt, "load failed: status: Reset = %d, BootROM = 0x%02X, UKernel = 0x%02X, MIA = 0x%02X, Auth = 0x%02X\n",
> + xe_gt_err(gt, "GuC load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz)\n",
> + status, delta_ms, act_freq, cur_freq);
> + xe_gt_err(gt, "GuC load failed: status: Reset = %d, BootROM = 0x%02X, UKernel = 0x%02X, MIA = 0x%02X, Auth = 0x%02X\n",
> REG_FIELD_GET(GS_MIA_IN_RESET, status),
> bootrom, ukernel,
> REG_FIELD_GET(GS_MIA_MASK, status),
> @@ -1154,16 +1128,15 @@ static void guc_wait_ucode(struct xe_guc *guc)
>
> print_bootrom_ukernel_err(gt, bootrom, ukernel);
> xe_device_declare_wedged(gt_to_xe(gt));
> - } else if (delta_ms > GUC_LOAD_TIME_WARN_MS) {
> - xe_gt_warn(gt, "excessive init time: %lldms! [status = 0x%08X, timeouts = %d]\n",
> - delta_ms, status, count);
> - xe_gt_warn(gt, "excessive init time: [freq = %dMHz (req = %dMHz), before = %dMHz, perf_limit_reasons = 0x%08X]\n",
> - xe_guc_pc_get_act_freq(guc_pc), xe_guc_pc_get_cur_freq_fw(guc_pc),
> - before_freq, xe_gt_throttle_get_limit_reasons(gt));
> + } else if (delta_ms > GUC_LOAD_TIME_WARN_MSEC) {
> + xe_gt_warn(gt, "GuC load: excessive init time: %lldms! [status = 0x%08X]\n",
> + delta_ms, status);
> + xe_gt_warn(gt, "GuC load: excessive init time: [freq = %dMHz (req = %dMHz), before = %dMHz, perf_limit_reasons = 0x%08X]\n",
> + act_freq, cur_freq, before_freq,
> + xe_gt_throttle_get_limit_reasons(gt));
> } else {
> - xe_gt_dbg(gt, "init took %lldms, freq = %dMHz (req = %dMHz), before = %dMHz, status = 0x%08X, timeouts = %d\n",
> - delta_ms, xe_guc_pc_get_act_freq(guc_pc), xe_guc_pc_get_cur_freq_fw(guc_pc),
> - before_freq, status, count);
> + xe_gt_dbg(gt, "GuC load: init took %lldms, freq = %dMHz (req = %dMHz), before = %dMHz, status = 0x%08X\n",
> + delta_ms, act_freq, cur_freq, before_freq, status);
> }
> }
>
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* ✗ CI.checkpatch: warning for drm/xe: Use poll_timeout_us() (rev4)
2025-09-11 17:25 [PATCH v3 0/5] drm/xe: Use poll_timeout_us() Lucas De Marchi
` (4 preceding siblings ...)
2025-09-11 17:25 ` [PATCH v3 5/5] drm/xe/guc: Refactor GuC load to use poll_timeout_us() Lucas De Marchi
@ 2025-09-11 17:32 ` Patchwork
2025-09-11 17:33 ` ✓ CI.KUnit: success " Patchwork
` (2 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2025-09-11 17:32 UTC (permalink / raw)
To: Lucas De Marchi; +Cc: intel-xe
== Series Details ==
Series: drm/xe: Use poll_timeout_us() (rev4)
URL : https://patchwork.freedesktop.org/series/153671/
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
fbd08a78c3a3bb17964db2a326514c69c1dca660
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 5050b0c9ca9a3a4936b2744d4020184293b02eb8
Author: Lucas De Marchi <lucas.demarchi@intel.com>
Date: Thu Sep 11 10:25:23 2025 -0700
drm/xe/guc: Refactor GuC load to use poll_timeout_us()
Currently there are 2 wait loops for loading GuC: one in
xe_mmio_wait32_not() and one guc_wait_ucode(). Now that there's a
generic poll_timeout_us(), refactor the code to use that and be more
readable.
Main change in behavior is that there's no exponential wait anymore:
that is now replaced by a 10msec retry.
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
+ /mt/dim checkpatch 89a1fbdb7a718191d0c935fcf0a495e4a6480183 drm-intel
0caf0efa9039 drm/xe/device: Use poll_timeout_us() to wait for lmem
a3fb4300d6e1 drm/xe/guc_pc: Use poll_timeout_us() for waiting
815e119c0494 drm/xe/guc: Drop helper to read freq
-:61: WARNING:LONG_LINE: line length of 102 exceeds 100 columns
#61: FILE: drivers/gpu/drm/xe/xe_guc.c:1166:
+ delta_ms, xe_guc_pc_get_act_freq(guc_pc), xe_guc_pc_get_cur_freq_fw(guc_pc),
total: 0 errors, 1 warnings, 0 checks, 43 lines checked
e57331d01c89 drm/xe/guc: Extract function to print load error
5050b0c9ca9a drm/xe/guc: Refactor GuC load to use poll_timeout_us()
^ permalink raw reply [flat|nested] 15+ messages in thread* ✓ CI.KUnit: success for drm/xe: Use poll_timeout_us() (rev4)
2025-09-11 17:25 [PATCH v3 0/5] drm/xe: Use poll_timeout_us() Lucas De Marchi
` (5 preceding siblings ...)
2025-09-11 17:32 ` ✗ CI.checkpatch: warning for drm/xe: Use poll_timeout_us() (rev4) Patchwork
@ 2025-09-11 17:33 ` Patchwork
2025-09-11 18:08 ` ✓ Xe.CI.BAT: " Patchwork
2025-09-11 23:37 ` ✗ Xe.CI.Full: failure " Patchwork
8 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2025-09-11 17:33 UTC (permalink / raw)
To: Lucas De Marchi; +Cc: intel-xe
== Series Details ==
Series: drm/xe: Use poll_timeout_us() (rev4)
URL : https://patchwork.freedesktop.org/series/153671/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[17:32:08] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:32:12] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[17:32:41] Starting KUnit Kernel (1/1)...
[17:32:41] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:32:41] ================== guc_buf (11 subtests) ===================
[17:32:41] [PASSED] test_smallest
[17:32:41] [PASSED] test_largest
[17:32:41] [PASSED] test_granular
[17:32:41] [PASSED] test_unique
[17:32:41] [PASSED] test_overlap
[17:32:41] [PASSED] test_reusable
[17:32:41] [PASSED] test_too_big
[17:32:41] [PASSED] test_flush
[17:32:41] [PASSED] test_lookup
[17:32:41] [PASSED] test_data
[17:32:41] [PASSED] test_class
[17:32:41] ===================== [PASSED] guc_buf =====================
[17:32:41] =================== guc_dbm (7 subtests) ===================
[17:32:41] [PASSED] test_empty
[17:32:41] [PASSED] test_default
[17:32:41] ======================== test_size ========================
[17:32:41] [PASSED] 4
[17:32:41] [PASSED] 8
[17:32:41] [PASSED] 32
[17:32:41] [PASSED] 256
[17:32:41] ==================== [PASSED] test_size ====================
[17:32:41] ======================= test_reuse ========================
[17:32:41] [PASSED] 4
[17:32:41] [PASSED] 8
[17:32:41] [PASSED] 32
[17:32:41] [PASSED] 256
[17:32:41] =================== [PASSED] test_reuse ====================
[17:32:41] =================== test_range_overlap ====================
[17:32:41] [PASSED] 4
[17:32:41] [PASSED] 8
[17:32:41] [PASSED] 32
[17:32:41] [PASSED] 256
[17:32:41] =============== [PASSED] test_range_overlap ================
[17:32:41] =================== test_range_compact ====================
[17:32:41] [PASSED] 4
[17:32:41] [PASSED] 8
[17:32:41] [PASSED] 32
[17:32:41] [PASSED] 256
[17:32:41] =============== [PASSED] test_range_compact ================
[17:32:41] ==================== test_range_spare =====================
[17:32:41] [PASSED] 4
[17:32:41] [PASSED] 8
[17:32:41] [PASSED] 32
[17:32:41] [PASSED] 256
[17:32:41] ================ [PASSED] test_range_spare =================
[17:32:41] ===================== [PASSED] guc_dbm =====================
[17:32:41] =================== guc_idm (6 subtests) ===================
[17:32:41] [PASSED] bad_init
[17:32:41] [PASSED] no_init
[17:32:41] [PASSED] init_fini
[17:32:41] [PASSED] check_used
[17:32:41] [PASSED] check_quota
[17:32:41] [PASSED] check_all
[17:32:41] ===================== [PASSED] guc_idm =====================
[17:32:41] ================== no_relay (3 subtests) ===================
[17:32:41] [PASSED] xe_drops_guc2pf_if_not_ready
[17:32:41] [PASSED] xe_drops_guc2vf_if_not_ready
[17:32:41] [PASSED] xe_rejects_send_if_not_ready
[17:32:41] ==================== [PASSED] no_relay =====================
[17:32:41] ================== pf_relay (14 subtests) ==================
[17:32:41] [PASSED] pf_rejects_guc2pf_too_short
[17:32:41] [PASSED] pf_rejects_guc2pf_too_long
[17:32:41] [PASSED] pf_rejects_guc2pf_no_payload
[17:32:41] [PASSED] pf_fails_no_payload
[17:32:41] [PASSED] pf_fails_bad_origin
[17:32:41] [PASSED] pf_fails_bad_type
[17:32:41] [PASSED] pf_txn_reports_error
[17:32:41] [PASSED] pf_txn_sends_pf2guc
[17:32:41] [PASSED] pf_sends_pf2guc
[17:32:41] [SKIPPED] pf_loopback_nop
[17:32:41] [SKIPPED] pf_loopback_echo
[17:32:41] [SKIPPED] pf_loopback_fail
[17:32:41] [SKIPPED] pf_loopback_busy
[17:32:41] [SKIPPED] pf_loopback_retry
[17:32:41] ==================== [PASSED] pf_relay =====================
[17:32:41] ================== vf_relay (3 subtests) ===================
[17:32:41] [PASSED] vf_rejects_guc2vf_too_short
[17:32:41] [PASSED] vf_rejects_guc2vf_too_long
[17:32:41] [PASSED] vf_rejects_guc2vf_no_payload
[17:32:41] ==================== [PASSED] vf_relay =====================
[17:32:41] ===================== lmtt (1 subtest) =====================
[17:32:41] ======================== test_ops =========================
[17:32:41] [PASSED] 2-level
[17:32:41] [PASSED] multi-level
[17:32:41] ==================== [PASSED] test_ops =====================
[17:32:41] ====================== [PASSED] lmtt =======================
[17:32:41] ================= pf_service (11 subtests) =================
[17:32:41] [PASSED] pf_negotiate_any
[17:32:41] [PASSED] pf_negotiate_base_match
[17:32:41] [PASSED] pf_negotiate_base_newer
[17:32:41] [PASSED] pf_negotiate_base_next
[17:32:41] [SKIPPED] pf_negotiate_base_older
[17:32:41] [PASSED] pf_negotiate_base_prev
[17:32:41] [PASSED] pf_negotiate_latest_match
[17:32:41] [PASSED] pf_negotiate_latest_newer
[17:32:41] [PASSED] pf_negotiate_latest_next
[17:32:41] [SKIPPED] pf_negotiate_latest_older
[17:32:41] [SKIPPED] pf_negotiate_latest_prev
[17:32:41] =================== [PASSED] pf_service ====================
[17:32:41] =================== xe_mocs (2 subtests) ===================
[17:32:41] ================ xe_live_mocs_kernel_kunit ================
[17:32:41] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[17:32:41] ================ xe_live_mocs_reset_kunit =================
[17:32:41] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[17:32:41] ==================== [SKIPPED] xe_mocs =====================
[17:32:41] ================= xe_migrate (2 subtests) ==================
[17:32:41] ================= xe_migrate_sanity_kunit =================
[17:32:41] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[17:32:41] ================== xe_validate_ccs_kunit ==================
[17:32:41] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[17:32:41] =================== [SKIPPED] xe_migrate ===================
[17:32:41] ================== xe_dma_buf (1 subtest) ==================
[17:32:41] ==================== xe_dma_buf_kunit =====================
[17:32:41] ================ [SKIPPED] xe_dma_buf_kunit ================
[17:32:41] =================== [SKIPPED] xe_dma_buf ===================
[17:32:41] ================= xe_bo_shrink (1 subtest) =================
[17:32:41] =================== xe_bo_shrink_kunit ====================
[17:32:41] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[17:32:41] ================== [SKIPPED] xe_bo_shrink ==================
[17:32:41] ==================== xe_bo (2 subtests) ====================
[17:32:41] ================== xe_ccs_migrate_kunit ===================
[17:32:41] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[17:32:41] ==================== xe_bo_evict_kunit ====================
[17:32:41] =============== [SKIPPED] xe_bo_evict_kunit ================
[17:32:41] ===================== [SKIPPED] xe_bo ======================
[17:32:41] ==================== args (11 subtests) ====================
[17:32:41] [PASSED] count_args_test
[17:32:41] [PASSED] call_args_example
[17:32:41] [PASSED] call_args_test
[17:32:41] [PASSED] drop_first_arg_example
[17:32:41] [PASSED] drop_first_arg_test
[17:32:41] [PASSED] first_arg_example
[17:32:41] [PASSED] first_arg_test
[17:32:41] [PASSED] last_arg_example
[17:32:41] [PASSED] last_arg_test
[17:32:41] [PASSED] pick_arg_example
[17:32:41] [PASSED] sep_comma_example
[17:32:41] ====================== [PASSED] args =======================
[17:32:41] =================== xe_pci (3 subtests) ====================
[17:32:41] ==================== check_graphics_ip ====================
[17:32:41] [PASSED] 12.70 Xe_LPG
[17:32:41] [PASSED] 12.71 Xe_LPG
[17:32:41] [PASSED] 12.74 Xe_LPG+
[17:32:41] [PASSED] 20.01 Xe2_HPG
[17:32:41] [PASSED] 20.02 Xe2_HPG
[17:32:41] [PASSED] 20.04 Xe2_LPG
[17:32:41] [PASSED] 30.00 Xe3_LPG
[17:32:41] [PASSED] 30.01 Xe3_LPG
[17:32:41] [PASSED] 30.03 Xe3_LPG
[17:32:41] ================ [PASSED] check_graphics_ip ================
[17:32:41] ===================== check_media_ip ======================
[17:32:41] [PASSED] 13.00 Xe_LPM+
[17:32:41] [PASSED] 13.01 Xe2_HPM
[17:32:41] [PASSED] 20.00 Xe2_LPM
[17:32:41] [PASSED] 30.00 Xe3_LPM
[17:32:41] [PASSED] 30.02 Xe3_LPM
[17:32:41] ================= [PASSED] check_media_ip ==================
[17:32:41] ================= check_platform_gt_count =================
[17:32:41] [PASSED] 0x9A60 (TIGERLAKE)
[17:32:41] [PASSED] 0x9A68 (TIGERLAKE)
[17:32:41] [PASSED] 0x9A70 (TIGERLAKE)
[17:32:41] [PASSED] 0x9A40 (TIGERLAKE)
[17:32:41] [PASSED] 0x9A49 (TIGERLAKE)
[17:32:41] [PASSED] 0x9A59 (TIGERLAKE)
[17:32:41] [PASSED] 0x9A78 (TIGERLAKE)
[17:32:41] [PASSED] 0x9AC0 (TIGERLAKE)
[17:32:41] [PASSED] 0x9AC9 (TIGERLAKE)
[17:32:41] [PASSED] 0x9AD9 (TIGERLAKE)
[17:32:41] [PASSED] 0x9AF8 (TIGERLAKE)
[17:32:41] [PASSED] 0x4C80 (ROCKETLAKE)
[17:32:41] [PASSED] 0x4C8A (ROCKETLAKE)
[17:32:41] [PASSED] 0x4C8B (ROCKETLAKE)
[17:32:41] [PASSED] 0x4C8C (ROCKETLAKE)
[17:32:41] [PASSED] 0x4C90 (ROCKETLAKE)
[17:32:41] [PASSED] 0x4C9A (ROCKETLAKE)
[17:32:41] [PASSED] 0x4680 (ALDERLAKE_S)
[17:32:41] [PASSED] 0x4682 (ALDERLAKE_S)
[17:32:41] [PASSED] 0x4688 (ALDERLAKE_S)
[17:32:41] [PASSED] 0x468A (ALDERLAKE_S)
[17:32:41] [PASSED] 0x468B (ALDERLAKE_S)
[17:32:41] [PASSED] 0x4690 (ALDERLAKE_S)
[17:32:41] [PASSED] 0x4692 (ALDERLAKE_S)
[17:32:41] [PASSED] 0x4693 (ALDERLAKE_S)
[17:32:41] [PASSED] 0x46A0 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46A1 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46A2 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46A3 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46A6 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46A8 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46AA (ALDERLAKE_P)
[17:32:41] [PASSED] 0x462A (ALDERLAKE_P)
[17:32:41] [PASSED] 0x4626 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x4628 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46B0 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46B1 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46B2 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46B3 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46C0 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46C1 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46C2 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46C3 (ALDERLAKE_P)
[17:32:41] [PASSED] 0x46D0 (ALDERLAKE_N)
[17:32:41] [PASSED] 0x46D1 (ALDERLAKE_N)
[17:32:41] [PASSED] 0x46D2 (ALDERLAKE_N)
[17:32:41] [PASSED] 0x46D3 (ALDERLAKE_N)
[17:32:41] [PASSED] 0x46D4 (ALDERLAKE_N)
[17:32:41] [PASSED] 0xA721 (ALDERLAKE_P)
[17:32:41] [PASSED] 0xA7A1 (ALDERLAKE_P)
[17:32:41] [PASSED] 0xA7A9 (ALDERLAKE_P)
[17:32:41] [PASSED] 0xA7AC (ALDERLAKE_P)
[17:32:41] [PASSED] 0xA7AD (ALDERLAKE_P)
[17:32:41] [PASSED] 0xA720 (ALDERLAKE_P)
[17:32:41] [PASSED] 0xA7A0 (ALDERLAKE_P)
[17:32:41] [PASSED] 0xA7A8 (ALDERLAKE_P)
[17:32:41] [PASSED] 0xA7AA (ALDERLAKE_P)
[17:32:41] [PASSED] 0xA7AB (ALDERLAKE_P)
[17:32:41] [PASSED] 0xA780 (ALDERLAKE_S)
[17:32:41] [PASSED] 0xA781 (ALDERLAKE_S)
[17:32:41] [PASSED] 0xA782 (ALDERLAKE_S)
[17:32:41] [PASSED] 0xA783 (ALDERLAKE_S)
[17:32:41] [PASSED] 0xA788 (ALDERLAKE_S)
[17:32:41] [PASSED] 0xA789 (ALDERLAKE_S)
[17:32:41] [PASSED] 0xA78A (ALDERLAKE_S)
[17:32:41] [PASSED] 0xA78B (ALDERLAKE_S)
[17:32:41] [PASSED] 0x4905 (DG1)
[17:32:41] [PASSED] 0x4906 (DG1)
[17:32:41] [PASSED] 0x4907 (DG1)
[17:32:41] [PASSED] 0x4908 (DG1)
[17:32:41] [PASSED] 0x4909 (DG1)
[17:32:41] [PASSED] 0x56C0 (DG2)
[17:32:41] [PASSED] 0x56C2 (DG2)
[17:32:41] [PASSED] 0x56C1 (DG2)
[17:32:41] [PASSED] 0x7D51 (METEORLAKE)
[17:32:41] [PASSED] 0x7DD1 (METEORLAKE)
[17:32:41] [PASSED] 0x7D41 (METEORLAKE)
[17:32:41] [PASSED] 0x7D67 (METEORLAKE)
[17:32:41] [PASSED] 0xB640 (METEORLAKE)
[17:32:41] [PASSED] 0x56A0 (DG2)
[17:32:41] [PASSED] 0x56A1 (DG2)
[17:32:41] [PASSED] 0x56A2 (DG2)
[17:32:41] [PASSED] 0x56BE (DG2)
[17:32:41] [PASSED] 0x56BF (DG2)
[17:32:41] [PASSED] 0x5690 (DG2)
[17:32:41] [PASSED] 0x5691 (DG2)
[17:32:41] [PASSED] 0x5692 (DG2)
[17:32:41] [PASSED] 0x56A5 (DG2)
[17:32:41] [PASSED] 0x56A6 (DG2)
[17:32:41] [PASSED] 0x56B0 (DG2)
[17:32:41] [PASSED] 0x56B1 (DG2)
[17:32:41] [PASSED] 0x56BA (DG2)
[17:32:41] [PASSED] 0x56BB (DG2)
[17:32:41] [PASSED] 0x56BC (DG2)
[17:32:41] [PASSED] 0x56BD (DG2)
[17:32:41] [PASSED] 0x5693 (DG2)
[17:32:41] [PASSED] 0x5694 (DG2)
[17:32:41] [PASSED] 0x5695 (DG2)
[17:32:41] [PASSED] 0x56A3 (DG2)
[17:32:41] [PASSED] 0x56A4 (DG2)
[17:32:41] [PASSED] 0x56B2 (DG2)
[17:32:41] [PASSED] 0x56B3 (DG2)
[17:32:41] [PASSED] 0x5696 (DG2)
[17:32:41] [PASSED] 0x5697 (DG2)
[17:32:41] [PASSED] 0xB69 (PVC)
[17:32:41] [PASSED] 0xB6E (PVC)
[17:32:41] [PASSED] 0xBD4 (PVC)
[17:32:41] [PASSED] 0xBD5 (PVC)
[17:32:41] [PASSED] 0xBD6 (PVC)
[17:32:41] [PASSED] 0xBD7 (PVC)
[17:32:41] [PASSED] 0xBD8 (PVC)
[17:32:41] [PASSED] 0xBD9 (PVC)
[17:32:41] [PASSED] 0xBDA (PVC)
[17:32:41] [PASSED] 0xBDB (PVC)
[17:32:41] [PASSED] 0xBE0 (PVC)
[17:32:41] [PASSED] 0xBE1 (PVC)
[17:32:41] [PASSED] 0xBE5 (PVC)
[17:32:41] [PASSED] 0x7D40 (METEORLAKE)
[17:32:41] [PASSED] 0x7D45 (METEORLAKE)
[17:32:41] [PASSED] 0x7D55 (METEORLAKE)
[17:32:41] [PASSED] 0x7D60 (METEORLAKE)
[17:32:41] [PASSED] 0x7DD5 (METEORLAKE)
[17:32:41] [PASSED] 0x6420 (LUNARLAKE)
[17:32:41] [PASSED] 0x64A0 (LUNARLAKE)
[17:32:41] [PASSED] 0x64B0 (LUNARLAKE)
[17:32:41] [PASSED] 0xE202 (BATTLEMAGE)
[17:32:41] [PASSED] 0xE209 (BATTLEMAGE)
[17:32:41] [PASSED] 0xE20B (BATTLEMAGE)
[17:32:41] [PASSED] 0xE20C (BATTLEMAGE)
[17:32:41] [PASSED] 0xE20D (BATTLEMAGE)
[17:32:41] [PASSED] 0xE210 (BATTLEMAGE)
[17:32:41] [PASSED] 0xE211 (BATTLEMAGE)
[17:32:41] [PASSED] 0xE212 (BATTLEMAGE)
[17:32:41] [PASSED] 0xE216 (BATTLEMAGE)
[17:32:41] [PASSED] 0xE220 (BATTLEMAGE)
[17:32:41] [PASSED] 0xE221 (BATTLEMAGE)
[17:32:41] [PASSED] 0xE222 (BATTLEMAGE)
[17:32:41] [PASSED] 0xE223 (BATTLEMAGE)
[17:32:41] [PASSED] 0xB080 (PANTHERLAKE)
[17:32:41] [PASSED] 0xB081 (PANTHERLAKE)
[17:32:41] [PASSED] 0xB082 (PANTHERLAKE)
[17:32:41] [PASSED] 0xB083 (PANTHERLAKE)
[17:32:41] [PASSED] 0xB084 (PANTHERLAKE)
[17:32:41] [PASSED] 0xB085 (PANTHERLAKE)
[17:32:41] [PASSED] 0xB086 (PANTHERLAKE)
[17:32:41] [PASSED] 0xB087 (PANTHERLAKE)
[17:32:41] [PASSED] 0xB08F (PANTHERLAKE)
[17:32:41] [PASSED] 0xB090 (PANTHERLAKE)
[17:32:41] [PASSED] 0xB0A0 (PANTHERLAKE)
[17:32:41] [PASSED] 0xB0B0 (PANTHERLAKE)
[17:32:41] [PASSED] 0xFD80 (PANTHERLAKE)
[17:32:41] [PASSED] 0xFD81 (PANTHERLAKE)
[17:32:41] ============= [PASSED] check_platform_gt_count =============
[17:32:41] ===================== [PASSED] xe_pci ======================
[17:32:41] =================== xe_rtp (2 subtests) ====================
[17:32:41] =============== xe_rtp_process_to_sr_tests ================
[17:32:41] [PASSED] coalesce-same-reg
[17:32:41] [PASSED] no-match-no-add
[17:32:41] [PASSED] match-or
[17:32:41] [PASSED] match-or-xfail
[17:32:41] [PASSED] no-match-no-add-multiple-rules
[17:32:41] [PASSED] two-regs-two-entries
[17:32:41] [PASSED] clr-one-set-other
[17:32:41] [PASSED] set-field
[17:32:41] [PASSED] conflict-duplicate
[17:32:41] [PASSED] conflict-not-disjoint
[17:32:41] [PASSED] conflict-reg-type
[17:32:41] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[17:32:41] ================== xe_rtp_process_tests ===================
[17:32:41] [PASSED] active1
[17:32:41] [PASSED] active2
[17:32:41] [PASSED] active-inactive
[17:32:41] [PASSED] inactive-active
[17:32:41] [PASSED] inactive-1st_or_active-inactive
[17:32:41] [PASSED] inactive-2nd_or_active-inactive
[17:32:41] [PASSED] inactive-last_or_active-inactive
[17:32:41] [PASSED] inactive-no_or_active-inactive
[17:32:41] ============== [PASSED] xe_rtp_process_tests ===============
[17:32:41] ===================== [PASSED] xe_rtp ======================
[17:32:41] ==================== xe_wa (1 subtest) =====================
[17:32:41] ======================== xe_wa_gt =========================
[17:32:41] [PASSED] TIGERLAKE B0
[17:32:41] [PASSED] DG1 A0
[17:32:41] [PASSED] DG1 B0
[17:32:41] [PASSED] ALDERLAKE_S A0
[17:32:41] [PASSED] ALDERLAKE_S B0
[17:32:41] [PASSED] ALDERLAKE_S C0
[17:32:41] [PASSED] ALDERLAKE_S D0
[17:32:41] [PASSED] ALDERLAKE_P A0
[17:32:41] [PASSED] ALDERLAKE_P B0
[17:32:41] [PASSED] ALDERLAKE_P C0
[17:32:41] [PASSED] ALDERLAKE_S RPLS D0
[17:32:41] [PASSED] ALDERLAKE_P RPLU E0
[17:32:41] [PASSED] DG2 G10 C0
[17:32:41] [PASSED] DG2 G11 B1
[17:32:41] [PASSED] DG2 G12 A1
[17:32:41] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[17:32:41] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[17:32:41] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[17:32:41] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
stty: 'standard input': Inappropriate ioctl for device
[17:32:41] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[17:32:41] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[17:32:41] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[17:32:41] ==================== [PASSED] xe_wa_gt =====================
[17:32:41] ====================== [PASSED] xe_wa ======================
[17:32:41] ============================================================
[17:32:41] Testing complete. Ran 298 tests: passed: 282, skipped: 16
[17:32:41] Elapsed time: 33.507s total, 4.221s configuring, 28.920s building, 0.321s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[17:32:41] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:32:43] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[17:33:06] Starting KUnit Kernel (1/1)...
[17:33:06] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:33:06] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[17:33:06] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[17:33:06] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[17:33:06] =========== drm_validate_clone_mode (2 subtests) ===========
[17:33:06] ============== drm_test_check_in_clone_mode ===============
[17:33:06] [PASSED] in_clone_mode
[17:33:06] [PASSED] not_in_clone_mode
[17:33:06] ========== [PASSED] drm_test_check_in_clone_mode ===========
[17:33:06] =============== drm_test_check_valid_clones ===============
[17:33:06] [PASSED] not_in_clone_mode
[17:33:06] [PASSED] valid_clone
[17:33:06] [PASSED] invalid_clone
[17:33:06] =========== [PASSED] drm_test_check_valid_clones ===========
[17:33:06] ============= [PASSED] drm_validate_clone_mode =============
[17:33:06] ============= drm_validate_modeset (1 subtest) =============
[17:33:06] [PASSED] drm_test_check_connector_changed_modeset
[17:33:06] ============== [PASSED] drm_validate_modeset ===============
[17:33:06] ====== drm_test_bridge_get_current_state (2 subtests) ======
[17:33:06] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[17:33:06] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[17:33:06] ======== [PASSED] drm_test_bridge_get_current_state ========
[17:33:06] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[17:33:06] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[17:33:06] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[17:33:06] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[17:33:06] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[17:33:06] ============== drm_bridge_alloc (2 subtests) ===============
[17:33:06] [PASSED] drm_test_drm_bridge_alloc_basic
[17:33:06] [PASSED] drm_test_drm_bridge_alloc_get_put
[17:33:06] ================ [PASSED] drm_bridge_alloc =================
[17:33:06] ================== drm_buddy (7 subtests) ==================
[17:33:06] [PASSED] drm_test_buddy_alloc_limit
[17:33:06] [PASSED] drm_test_buddy_alloc_optimistic
[17:33:06] [PASSED] drm_test_buddy_alloc_pessimistic
[17:33:06] [PASSED] drm_test_buddy_alloc_pathological
[17:33:06] [PASSED] drm_test_buddy_alloc_contiguous
[17:33:06] [PASSED] drm_test_buddy_alloc_clear
[17:33:06] [PASSED] drm_test_buddy_alloc_range_bias
[17:33:06] ==================== [PASSED] drm_buddy ====================
[17:33:06] ============= drm_cmdline_parser (40 subtests) =============
[17:33:06] [PASSED] drm_test_cmdline_force_d_only
[17:33:06] [PASSED] drm_test_cmdline_force_D_only_dvi
[17:33:06] [PASSED] drm_test_cmdline_force_D_only_hdmi
[17:33:06] [PASSED] drm_test_cmdline_force_D_only_not_digital
[17:33:06] [PASSED] drm_test_cmdline_force_e_only
[17:33:06] [PASSED] drm_test_cmdline_res
[17:33:06] [PASSED] drm_test_cmdline_res_vesa
[17:33:06] [PASSED] drm_test_cmdline_res_vesa_rblank
[17:33:06] [PASSED] drm_test_cmdline_res_rblank
[17:33:06] [PASSED] drm_test_cmdline_res_bpp
[17:33:06] [PASSED] drm_test_cmdline_res_refresh
[17:33:06] [PASSED] drm_test_cmdline_res_bpp_refresh
[17:33:06] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[17:33:06] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[17:33:06] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[17:33:06] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[17:33:06] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[17:33:06] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[17:33:06] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[17:33:06] [PASSED] drm_test_cmdline_res_margins_force_on
[17:33:06] [PASSED] drm_test_cmdline_res_vesa_margins
[17:33:06] [PASSED] drm_test_cmdline_name
[17:33:06] [PASSED] drm_test_cmdline_name_bpp
[17:33:06] [PASSED] drm_test_cmdline_name_option
[17:33:06] [PASSED] drm_test_cmdline_name_bpp_option
[17:33:06] [PASSED] drm_test_cmdline_rotate_0
[17:33:06] [PASSED] drm_test_cmdline_rotate_90
[17:33:06] [PASSED] drm_test_cmdline_rotate_180
[17:33:06] [PASSED] drm_test_cmdline_rotate_270
[17:33:06] [PASSED] drm_test_cmdline_hmirror
[17:33:06] [PASSED] drm_test_cmdline_vmirror
[17:33:06] [PASSED] drm_test_cmdline_margin_options
[17:33:06] [PASSED] drm_test_cmdline_multiple_options
[17:33:06] [PASSED] drm_test_cmdline_bpp_extra_and_option
[17:33:06] [PASSED] drm_test_cmdline_extra_and_option
[17:33:06] [PASSED] drm_test_cmdline_freestanding_options
[17:33:06] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[17:33:06] [PASSED] drm_test_cmdline_panel_orientation
[17:33:06] ================ drm_test_cmdline_invalid =================
[17:33:06] [PASSED] margin_only
[17:33:06] [PASSED] interlace_only
[17:33:06] [PASSED] res_missing_x
[17:33:06] [PASSED] res_missing_y
[17:33:06] [PASSED] res_bad_y
[17:33:06] [PASSED] res_missing_y_bpp
[17:33:06] [PASSED] res_bad_bpp
[17:33:06] [PASSED] res_bad_refresh
[17:33:06] [PASSED] res_bpp_refresh_force_on_off
[17:33:06] [PASSED] res_invalid_mode
[17:33:06] [PASSED] res_bpp_wrong_place_mode
[17:33:06] [PASSED] name_bpp_refresh
[17:33:06] [PASSED] name_refresh
[17:33:06] [PASSED] name_refresh_wrong_mode
[17:33:06] [PASSED] name_refresh_invalid_mode
[17:33:06] [PASSED] rotate_multiple
[17:33:06] [PASSED] rotate_invalid_val
[17:33:06] [PASSED] rotate_truncated
[17:33:06] [PASSED] invalid_option
[17:33:06] [PASSED] invalid_tv_option
[17:33:06] [PASSED] truncated_tv_option
[17:33:06] ============ [PASSED] drm_test_cmdline_invalid =============
[17:33:06] =============== drm_test_cmdline_tv_options ===============
[17:33:06] [PASSED] NTSC
[17:33:06] [PASSED] NTSC_443
[17:33:06] [PASSED] NTSC_J
[17:33:06] [PASSED] PAL
[17:33:06] [PASSED] PAL_M
[17:33:06] [PASSED] PAL_N
[17:33:06] [PASSED] SECAM
[17:33:06] [PASSED] MONO_525
[17:33:06] [PASSED] MONO_625
[17:33:06] =========== [PASSED] drm_test_cmdline_tv_options ===========
[17:33:06] =============== [PASSED] drm_cmdline_parser ================
[17:33:06] ========== drmm_connector_hdmi_init (20 subtests) ==========
[17:33:06] [PASSED] drm_test_connector_hdmi_init_valid
[17:33:06] [PASSED] drm_test_connector_hdmi_init_bpc_8
[17:33:06] [PASSED] drm_test_connector_hdmi_init_bpc_10
[17:33:06] [PASSED] drm_test_connector_hdmi_init_bpc_12
[17:33:06] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[17:33:06] [PASSED] drm_test_connector_hdmi_init_bpc_null
[17:33:06] [PASSED] drm_test_connector_hdmi_init_formats_empty
[17:33:06] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[17:33:06] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[17:33:06] [PASSED] supported_formats=0x9 yuv420_allowed=1
[17:33:06] [PASSED] supported_formats=0x9 yuv420_allowed=0
[17:33:06] [PASSED] supported_formats=0x3 yuv420_allowed=1
[17:33:06] [PASSED] supported_formats=0x3 yuv420_allowed=0
[17:33:06] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[17:33:06] [PASSED] drm_test_connector_hdmi_init_null_ddc
[17:33:06] [PASSED] drm_test_connector_hdmi_init_null_product
[17:33:06] [PASSED] drm_test_connector_hdmi_init_null_vendor
[17:33:06] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[17:33:06] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[17:33:06] [PASSED] drm_test_connector_hdmi_init_product_valid
[17:33:06] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[17:33:06] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[17:33:06] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[17:33:06] ========= drm_test_connector_hdmi_init_type_valid =========
[17:33:06] [PASSED] HDMI-A
[17:33:06] [PASSED] HDMI-B
[17:33:06] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[17:33:06] ======== drm_test_connector_hdmi_init_type_invalid ========
[17:33:06] [PASSED] Unknown
[17:33:06] [PASSED] VGA
[17:33:06] [PASSED] DVI-I
[17:33:06] [PASSED] DVI-D
[17:33:06] [PASSED] DVI-A
[17:33:06] [PASSED] Composite
[17:33:06] [PASSED] SVIDEO
[17:33:06] [PASSED] LVDS
[17:33:06] [PASSED] Component
[17:33:06] [PASSED] DIN
[17:33:06] [PASSED] DP
[17:33:06] [PASSED] TV
[17:33:06] [PASSED] eDP
[17:33:06] [PASSED] Virtual
[17:33:06] [PASSED] DSI
[17:33:06] [PASSED] DPI
[17:33:06] [PASSED] Writeback
[17:33:06] [PASSED] SPI
[17:33:06] [PASSED] USB
[17:33:06] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[17:33:06] ============ [PASSED] drmm_connector_hdmi_init =============
[17:33:06] ============= drmm_connector_init (3 subtests) =============
[17:33:06] [PASSED] drm_test_drmm_connector_init
[17:33:06] [PASSED] drm_test_drmm_connector_init_null_ddc
[17:33:06] ========= drm_test_drmm_connector_init_type_valid =========
[17:33:06] [PASSED] Unknown
[17:33:06] [PASSED] VGA
[17:33:06] [PASSED] DVI-I
[17:33:06] [PASSED] DVI-D
[17:33:06] [PASSED] DVI-A
[17:33:06] [PASSED] Composite
[17:33:06] [PASSED] SVIDEO
[17:33:06] [PASSED] LVDS
[17:33:06] [PASSED] Component
[17:33:06] [PASSED] DIN
[17:33:06] [PASSED] DP
[17:33:06] [PASSED] HDMI-A
[17:33:06] [PASSED] HDMI-B
[17:33:06] [PASSED] TV
[17:33:06] [PASSED] eDP
[17:33:06] [PASSED] Virtual
[17:33:06] [PASSED] DSI
[17:33:06] [PASSED] DPI
[17:33:06] [PASSED] Writeback
[17:33:06] [PASSED] SPI
[17:33:06] [PASSED] USB
[17:33:06] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[17:33:06] =============== [PASSED] drmm_connector_init ===============
[17:33:06] ========= drm_connector_dynamic_init (6 subtests) ==========
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_init
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_init_properties
[17:33:06] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[17:33:06] [PASSED] Unknown
[17:33:06] [PASSED] VGA
[17:33:06] [PASSED] DVI-I
[17:33:06] [PASSED] DVI-D
[17:33:06] [PASSED] DVI-A
[17:33:06] [PASSED] Composite
[17:33:06] [PASSED] SVIDEO
[17:33:06] [PASSED] LVDS
[17:33:06] [PASSED] Component
[17:33:06] [PASSED] DIN
[17:33:06] [PASSED] DP
[17:33:06] [PASSED] HDMI-A
[17:33:06] [PASSED] HDMI-B
[17:33:06] [PASSED] TV
[17:33:06] [PASSED] eDP
[17:33:06] [PASSED] Virtual
[17:33:06] [PASSED] DSI
[17:33:06] [PASSED] DPI
[17:33:06] [PASSED] Writeback
[17:33:06] [PASSED] SPI
[17:33:06] [PASSED] USB
[17:33:06] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[17:33:06] ======== drm_test_drm_connector_dynamic_init_name =========
[17:33:06] [PASSED] Unknown
[17:33:06] [PASSED] VGA
[17:33:06] [PASSED] DVI-I
[17:33:06] [PASSED] DVI-D
[17:33:06] [PASSED] DVI-A
[17:33:06] [PASSED] Composite
[17:33:06] [PASSED] SVIDEO
[17:33:06] [PASSED] LVDS
[17:33:06] [PASSED] Component
[17:33:06] [PASSED] DIN
[17:33:06] [PASSED] DP
[17:33:06] [PASSED] HDMI-A
[17:33:06] [PASSED] HDMI-B
[17:33:06] [PASSED] TV
[17:33:06] [PASSED] eDP
[17:33:06] [PASSED] Virtual
[17:33:06] [PASSED] DSI
[17:33:06] [PASSED] DPI
[17:33:06] [PASSED] Writeback
[17:33:06] [PASSED] SPI
[17:33:06] [PASSED] USB
[17:33:06] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[17:33:06] =========== [PASSED] drm_connector_dynamic_init ============
[17:33:06] ==== drm_connector_dynamic_register_early (4 subtests) =====
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[17:33:06] ====== [PASSED] drm_connector_dynamic_register_early =======
[17:33:06] ======= drm_connector_dynamic_register (7 subtests) ========
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[17:33:06] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[17:33:06] ========= [PASSED] drm_connector_dynamic_register ==========
[17:33:06] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[17:33:06] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[17:33:06] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[17:33:06] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[17:33:06] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[17:33:06] ========== drm_test_get_tv_mode_from_name_valid ===========
[17:33:06] [PASSED] NTSC
[17:33:06] [PASSED] NTSC-443
[17:33:06] [PASSED] NTSC-J
[17:33:06] [PASSED] PAL
[17:33:06] [PASSED] PAL-M
[17:33:06] [PASSED] PAL-N
[17:33:06] [PASSED] SECAM
[17:33:06] [PASSED] Mono
[17:33:06] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[17:33:06] [PASSED] drm_test_get_tv_mode_from_name_truncated
[17:33:06] ============ [PASSED] drm_get_tv_mode_from_name ============
[17:33:06] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[17:33:06] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[17:33:06] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[17:33:06] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[17:33:06] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[17:33:06] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[17:33:06] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[17:33:06] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[17:33:06] [PASSED] VIC 96
[17:33:06] [PASSED] VIC 97
[17:33:06] [PASSED] VIC 101
[17:33:06] [PASSED] VIC 102
[17:33:06] [PASSED] VIC 106
[17:33:06] [PASSED] VIC 107
[17:33:06] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[17:33:06] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[17:33:06] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[17:33:06] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[17:33:06] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[17:33:06] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[17:33:06] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[17:33:06] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[17:33:06] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[17:33:06] [PASSED] Automatic
[17:33:06] [PASSED] Full
[17:33:06] [PASSED] Limited 16:235
[17:33:06] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[17:33:06] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[17:33:06] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[17:33:06] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[17:33:06] === drm_test_drm_hdmi_connector_get_output_format_name ====
[17:33:06] [PASSED] RGB
[17:33:06] [PASSED] YUV 4:2:0
[17:33:06] [PASSED] YUV 4:2:2
[17:33:06] [PASSED] YUV 4:4:4
[17:33:06] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[17:33:06] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[17:33:06] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[17:33:06] ============= drm_damage_helper (21 subtests) ==============
[17:33:06] [PASSED] drm_test_damage_iter_no_damage
[17:33:06] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[17:33:06] [PASSED] drm_test_damage_iter_no_damage_src_moved
[17:33:06] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[17:33:06] [PASSED] drm_test_damage_iter_no_damage_not_visible
[17:33:06] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[17:33:06] [PASSED] drm_test_damage_iter_no_damage_no_fb
[17:33:06] [PASSED] drm_test_damage_iter_simple_damage
[17:33:06] [PASSED] drm_test_damage_iter_single_damage
[17:33:06] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[17:33:06] [PASSED] drm_test_damage_iter_single_damage_outside_src
[17:33:06] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[17:33:06] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[17:33:06] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[17:33:06] [PASSED] drm_test_damage_iter_single_damage_src_moved
[17:33:06] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[17:33:06] [PASSED] drm_test_damage_iter_damage
[17:33:06] [PASSED] drm_test_damage_iter_damage_one_intersect
[17:33:06] [PASSED] drm_test_damage_iter_damage_one_outside
[17:33:06] [PASSED] drm_test_damage_iter_damage_src_moved
[17:33:06] [PASSED] drm_test_damage_iter_damage_not_visible
[17:33:06] ================ [PASSED] drm_damage_helper ================
[17:33:06] ============== drm_dp_mst_helper (3 subtests) ==============
[17:33:06] ============== drm_test_dp_mst_calc_pbn_mode ==============
[17:33:06] [PASSED] Clock 154000 BPP 30 DSC disabled
[17:33:06] [PASSED] Clock 234000 BPP 30 DSC disabled
[17:33:06] [PASSED] Clock 297000 BPP 24 DSC disabled
[17:33:06] [PASSED] Clock 332880 BPP 24 DSC enabled
[17:33:06] [PASSED] Clock 324540 BPP 24 DSC enabled
[17:33:06] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[17:33:06] ============== drm_test_dp_mst_calc_pbn_div ===============
[17:33:06] [PASSED] Link rate 2000000 lane count 4
[17:33:06] [PASSED] Link rate 2000000 lane count 2
[17:33:06] [PASSED] Link rate 2000000 lane count 1
[17:33:06] [PASSED] Link rate 1350000 lane count 4
[17:33:06] [PASSED] Link rate 1350000 lane count 2
[17:33:06] [PASSED] Link rate 1350000 lane count 1
[17:33:06] [PASSED] Link rate 1000000 lane count 4
[17:33:06] [PASSED] Link rate 1000000 lane count 2
[17:33:06] [PASSED] Link rate 1000000 lane count 1
[17:33:06] [PASSED] Link rate 810000 lane count 4
[17:33:06] [PASSED] Link rate 810000 lane count 2
[17:33:06] [PASSED] Link rate 810000 lane count 1
[17:33:06] [PASSED] Link rate 540000 lane count 4
[17:33:06] [PASSED] Link rate 540000 lane count 2
[17:33:06] [PASSED] Link rate 540000 lane count 1
[17:33:06] [PASSED] Link rate 270000 lane count 4
[17:33:06] [PASSED] Link rate 270000 lane count 2
[17:33:06] [PASSED] Link rate 270000 lane count 1
[17:33:06] [PASSED] Link rate 162000 lane count 4
[17:33:06] [PASSED] Link rate 162000 lane count 2
[17:33:06] [PASSED] Link rate 162000 lane count 1
[17:33:06] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[17:33:06] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[17:33:06] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[17:33:06] [PASSED] DP_POWER_UP_PHY with port number
[17:33:06] [PASSED] DP_POWER_DOWN_PHY with port number
[17:33:06] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[17:33:06] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[17:33:06] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[17:33:06] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[17:33:06] [PASSED] DP_QUERY_PAYLOAD with port number
[17:33:06] [PASSED] DP_QUERY_PAYLOAD with VCPI
[17:33:06] [PASSED] DP_REMOTE_DPCD_READ with port number
[17:33:06] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[17:33:06] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[17:33:06] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[17:33:06] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[17:33:06] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[17:33:06] [PASSED] DP_REMOTE_I2C_READ with port number
[17:33:06] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[17:33:06] [PASSED] DP_REMOTE_I2C_READ with transactions array
[17:33:06] [PASSED] DP_REMOTE_I2C_WRITE with port number
[17:33:06] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[17:33:06] [PASSED] DP_REMOTE_I2C_WRITE with data array
[17:33:06] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[17:33:06] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[17:33:06] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[17:33:06] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[17:33:06] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[17:33:06] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[17:33:06] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[17:33:06] ================ [PASSED] drm_dp_mst_helper ================
[17:33:06] ================== drm_exec (7 subtests) ===================
[17:33:06] [PASSED] sanitycheck
[17:33:06] [PASSED] test_lock
[17:33:06] [PASSED] test_lock_unlock
[17:33:06] [PASSED] test_duplicates
[17:33:06] [PASSED] test_prepare
[17:33:06] [PASSED] test_prepare_array
[17:33:06] [PASSED] test_multiple_loops
[17:33:06] ==================== [PASSED] drm_exec =====================
[17:33:06] =========== drm_format_helper_test (17 subtests) ===========
[17:33:06] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[17:33:06] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[17:33:06] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[17:33:06] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[17:33:06] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[17:33:06] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[17:33:06] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[17:33:06] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[17:33:06] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[17:33:06] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[17:33:06] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[17:33:06] ============== drm_test_fb_xrgb8888_to_mono ===============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[17:33:06] ==================== drm_test_fb_swab =====================
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ================ [PASSED] drm_test_fb_swab =================
[17:33:06] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[17:33:06] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[17:33:06] [PASSED] single_pixel_source_buffer
[17:33:06] [PASSED] single_pixel_clip_rectangle
[17:33:06] [PASSED] well_known_colors
[17:33:06] [PASSED] destination_pitch
[17:33:06] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[17:33:06] ================= drm_test_fb_clip_offset =================
[17:33:06] [PASSED] pass through
[17:33:06] [PASSED] horizontal offset
[17:33:06] [PASSED] vertical offset
[17:33:06] [PASSED] horizontal and vertical offset
[17:33:06] [PASSED] horizontal offset (custom pitch)
[17:33:06] [PASSED] vertical offset (custom pitch)
[17:33:06] [PASSED] horizontal and vertical offset (custom pitch)
[17:33:06] ============= [PASSED] drm_test_fb_clip_offset =============
[17:33:06] =================== drm_test_fb_memcpy ====================
[17:33:06] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[17:33:06] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[17:33:06] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[17:33:06] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[17:33:06] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[17:33:06] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[17:33:06] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[17:33:06] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[17:33:06] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[17:33:06] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[17:33:06] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[17:33:06] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[17:33:06] =============== [PASSED] drm_test_fb_memcpy ================
[17:33:06] ============= [PASSED] drm_format_helper_test ==============
[17:33:06] ================= drm_format (18 subtests) =================
[17:33:06] [PASSED] drm_test_format_block_width_invalid
[17:33:06] [PASSED] drm_test_format_block_width_one_plane
[17:33:06] [PASSED] drm_test_format_block_width_two_plane
[17:33:06] [PASSED] drm_test_format_block_width_three_plane
[17:33:06] [PASSED] drm_test_format_block_width_tiled
[17:33:06] [PASSED] drm_test_format_block_height_invalid
[17:33:06] [PASSED] drm_test_format_block_height_one_plane
[17:33:06] [PASSED] drm_test_format_block_height_two_plane
[17:33:06] [PASSED] drm_test_format_block_height_three_plane
[17:33:06] [PASSED] drm_test_format_block_height_tiled
[17:33:06] [PASSED] drm_test_format_min_pitch_invalid
[17:33:06] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[17:33:06] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[17:33:06] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[17:33:06] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[17:33:06] [PASSED] drm_test_format_min_pitch_two_plane
[17:33:06] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[17:33:06] [PASSED] drm_test_format_min_pitch_tiled
[17:33:06] =================== [PASSED] drm_format ====================
[17:33:06] ============== drm_framebuffer (10 subtests) ===============
[17:33:06] ========== drm_test_framebuffer_check_src_coords ==========
[17:33:06] [PASSED] Success: source fits into fb
[17:33:06] [PASSED] Fail: overflowing fb with x-axis coordinate
[17:33:06] [PASSED] Fail: overflowing fb with y-axis coordinate
[17:33:06] [PASSED] Fail: overflowing fb with source width
[17:33:06] [PASSED] Fail: overflowing fb with source height
[17:33:06] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[17:33:06] [PASSED] drm_test_framebuffer_cleanup
[17:33:06] =============== drm_test_framebuffer_create ===============
[17:33:06] [PASSED] ABGR8888 normal sizes
[17:33:06] [PASSED] ABGR8888 max sizes
[17:33:06] [PASSED] ABGR8888 pitch greater than min required
[17:33:06] [PASSED] ABGR8888 pitch less than min required
[17:33:06] [PASSED] ABGR8888 Invalid width
[17:33:06] [PASSED] ABGR8888 Invalid buffer handle
[17:33:06] [PASSED] No pixel format
[17:33:06] [PASSED] ABGR8888 Width 0
[17:33:06] [PASSED] ABGR8888 Height 0
[17:33:06] [PASSED] ABGR8888 Out of bound height * pitch combination
[17:33:06] [PASSED] ABGR8888 Large buffer offset
[17:33:06] [PASSED] ABGR8888 Buffer offset for inexistent plane
[17:33:06] [PASSED] ABGR8888 Invalid flag
[17:33:06] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[17:33:06] [PASSED] ABGR8888 Valid buffer modifier
[17:33:06] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[17:33:06] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[17:33:06] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[17:33:06] [PASSED] NV12 Normal sizes
[17:33:06] [PASSED] NV12 Max sizes
[17:33:06] [PASSED] NV12 Invalid pitch
[17:33:06] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[17:33:06] [PASSED] NV12 different modifier per-plane
[17:33:06] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[17:33:06] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[17:33:06] [PASSED] NV12 Modifier for inexistent plane
[17:33:06] [PASSED] NV12 Handle for inexistent plane
[17:33:06] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[17:33:06] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[17:33:06] [PASSED] YVU420 Normal sizes
[17:33:06] [PASSED] YVU420 Max sizes
[17:33:06] [PASSED] YVU420 Invalid pitch
[17:33:06] [PASSED] YVU420 Different pitches
[17:33:06] [PASSED] YVU420 Different buffer offsets/pitches
[17:33:06] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[17:33:06] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[17:33:06] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[17:33:06] [PASSED] YVU420 Valid modifier
[17:33:06] [PASSED] YVU420 Different modifiers per plane
[17:33:06] [PASSED] YVU420 Modifier for inexistent plane
[17:33:06] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[17:33:06] [PASSED] X0L2 Normal sizes
[17:33:06] [PASSED] X0L2 Max sizes
[17:33:06] [PASSED] X0L2 Invalid pitch
[17:33:06] [PASSED] X0L2 Pitch greater than minimum required
[17:33:06] [PASSED] X0L2 Handle for inexistent plane
[17:33:06] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[17:33:06] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[17:33:06] [PASSED] X0L2 Valid modifier
[17:33:06] [PASSED] X0L2 Modifier for inexistent plane
[17:33:06] =========== [PASSED] drm_test_framebuffer_create ===========
[17:33:06] [PASSED] drm_test_framebuffer_free
[17:33:06] [PASSED] drm_test_framebuffer_init
[17:33:06] [PASSED] drm_test_framebuffer_init_bad_format
[17:33:06] [PASSED] drm_test_framebuffer_init_dev_mismatch
[17:33:06] [PASSED] drm_test_framebuffer_lookup
[17:33:06] [PASSED] drm_test_framebuffer_lookup_inexistent
[17:33:06] [PASSED] drm_test_framebuffer_modifiers_not_supported
[17:33:06] ================= [PASSED] drm_framebuffer =================
[17:33:06] ================ drm_gem_shmem (8 subtests) ================
[17:33:06] [PASSED] drm_gem_shmem_test_obj_create
[17:33:06] [PASSED] drm_gem_shmem_test_obj_create_private
[17:33:06] [PASSED] drm_gem_shmem_test_pin_pages
[17:33:06] [PASSED] drm_gem_shmem_test_vmap
[17:33:06] [PASSED] drm_gem_shmem_test_get_pages_sgt
[17:33:06] [PASSED] drm_gem_shmem_test_get_sg_table
[17:33:06] [PASSED] drm_gem_shmem_test_madvise
[17:33:06] [PASSED] drm_gem_shmem_test_purge
[17:33:06] ================== [PASSED] drm_gem_shmem ==================
[17:33:06] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[17:33:06] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[17:33:06] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[17:33:06] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[17:33:06] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[17:33:06] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[17:33:06] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[17:33:06] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[17:33:06] [PASSED] Automatic
[17:33:06] [PASSED] Full
[17:33:06] [PASSED] Limited 16:235
[17:33:06] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[17:33:06] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[17:33:06] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[17:33:06] [PASSED] drm_test_check_disable_connector
[17:33:06] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[17:33:06] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[17:33:06] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[17:33:06] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[17:33:06] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[17:33:06] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[17:33:06] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[17:33:06] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[17:33:06] [PASSED] drm_test_check_output_bpc_dvi
[17:33:06] [PASSED] drm_test_check_output_bpc_format_vic_1
[17:33:06] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[17:33:06] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[17:33:06] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[17:33:06] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[17:33:06] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[17:33:06] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[17:33:06] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[17:33:06] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[17:33:06] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[17:33:06] [PASSED] drm_test_check_broadcast_rgb_value
[17:33:06] [PASSED] drm_test_check_bpc_8_value
[17:33:06] [PASSED] drm_test_check_bpc_10_value
[17:33:06] [PASSED] drm_test_check_bpc_12_value
[17:33:06] [PASSED] drm_test_check_format_value
[17:33:06] [PASSED] drm_test_check_tmds_char_value
[17:33:06] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[17:33:06] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[17:33:06] [PASSED] drm_test_check_mode_valid
[17:33:06] [PASSED] drm_test_check_mode_valid_reject
[17:33:06] [PASSED] drm_test_check_mode_valid_reject_rate
[17:33:06] [PASSED] drm_test_check_mode_valid_reject_max_clock
[17:33:06] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[17:33:06] ================= drm_managed (2 subtests) =================
[17:33:06] [PASSED] drm_test_managed_release_action
[17:33:06] [PASSED] drm_test_managed_run_action
[17:33:06] =================== [PASSED] drm_managed ===================
[17:33:06] =================== drm_mm (6 subtests) ====================
[17:33:06] [PASSED] drm_test_mm_init
[17:33:06] [PASSED] drm_test_mm_debug
[17:33:06] [PASSED] drm_test_mm_align32
[17:33:06] [PASSED] drm_test_mm_align64
[17:33:06] [PASSED] drm_test_mm_lowest
[17:33:06] [PASSED] drm_test_mm_highest
[17:33:06] ===================== [PASSED] drm_mm ======================
[17:33:06] ============= drm_modes_analog_tv (5 subtests) =============
[17:33:06] [PASSED] drm_test_modes_analog_tv_mono_576i
[17:33:06] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[17:33:06] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[17:33:06] [PASSED] drm_test_modes_analog_tv_pal_576i
[17:33:06] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[17:33:06] =============== [PASSED] drm_modes_analog_tv ===============
[17:33:06] ============== drm_plane_helper (2 subtests) ===============
[17:33:06] =============== drm_test_check_plane_state ================
[17:33:06] [PASSED] clipping_simple
[17:33:06] [PASSED] clipping_rotate_reflect
[17:33:06] [PASSED] positioning_simple
[17:33:06] [PASSED] upscaling
[17:33:06] [PASSED] downscaling
[17:33:06] [PASSED] rounding1
[17:33:06] [PASSED] rounding2
[17:33:06] [PASSED] rounding3
[17:33:06] [PASSED] rounding4
[17:33:06] =========== [PASSED] drm_test_check_plane_state ============
[17:33:06] =========== drm_test_check_invalid_plane_state ============
[17:33:06] [PASSED] positioning_invalid
[17:33:06] [PASSED] upscaling_invalid
[17:33:06] [PASSED] downscaling_invalid
[17:33:06] ======= [PASSED] drm_test_check_invalid_plane_state ========
[17:33:06] ================ [PASSED] drm_plane_helper =================
[17:33:06] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[17:33:06] ====== drm_test_connector_helper_tv_get_modes_check =======
[17:33:06] [PASSED] None
[17:33:06] [PASSED] PAL
[17:33:06] [PASSED] NTSC
[17:33:06] [PASSED] Both, NTSC Default
[17:33:06] [PASSED] Both, PAL Default
[17:33:06] [PASSED] Both, NTSC Default, with PAL on command-line
[17:33:06] [PASSED] Both, PAL Default, with NTSC on command-line
[17:33:06] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[17:33:06] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[17:33:06] ================== drm_rect (9 subtests) ===================
[17:33:06] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[17:33:06] [PASSED] drm_test_rect_clip_scaled_not_clipped
[17:33:06] [PASSED] drm_test_rect_clip_scaled_clipped
[17:33:06] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[17:33:06] ================= drm_test_rect_intersect =================
[17:33:06] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[17:33:06] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[17:33:06] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[17:33:06] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[17:33:06] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[17:33:06] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[17:33:06] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[17:33:06] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[17:33:06] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[17:33:06] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[17:33:06] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[17:33:06] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[17:33:06] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[17:33:06] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[17:33:06] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[17:33:06] ============= [PASSED] drm_test_rect_intersect =============
[17:33:06] ================ drm_test_rect_calc_hscale ================
[17:33:06] [PASSED] normal use
[17:33:06] [PASSED] out of max range
[17:33:06] [PASSED] out of min range
[17:33:06] [PASSED] zero dst
[17:33:06] [PASSED] negative src
[17:33:06] [PASSED] negative dst
[17:33:06] ============ [PASSED] drm_test_rect_calc_hscale ============
[17:33:06] ================ drm_test_rect_calc_vscale ================
[17:33:06] [PASSED] normal use
[17:33:06] [PASSED] out of max range
[17:33:06] [PASSED] out of min range
[17:33:06] [PASSED] zero dst
[17:33:06] [PASSED] negative src
[17:33:06] [PASSED] negative dst
[17:33:06] ============ [PASSED] drm_test_rect_calc_vscale ============
[17:33:06] ================== drm_test_rect_rotate ===================
[17:33:06] [PASSED] reflect-x
[17:33:06] [PASSED] reflect-y
[17:33:06] [PASSED] rotate-0
[17:33:06] [PASSED] rotate-90
[17:33:06] [PASSED] rotate-180
[17:33:06] [PASSED] rotate-270
stty: 'standard input': Inappropriate ioctl for device
[17:33:06] ============== [PASSED] drm_test_rect_rotate ===============
[17:33:06] ================ drm_test_rect_rotate_inv =================
[17:33:06] [PASSED] reflect-x
[17:33:06] [PASSED] reflect-y
[17:33:06] [PASSED] rotate-0
[17:33:06] [PASSED] rotate-90
[17:33:06] [PASSED] rotate-180
[17:33:06] [PASSED] rotate-270
[17:33:06] ============ [PASSED] drm_test_rect_rotate_inv =============
[17:33:06] ==================== [PASSED] drm_rect =====================
[17:33:06] ============ drm_sysfb_modeset_test (1 subtest) ============
[17:33:06] ============ drm_test_sysfb_build_fourcc_list =============
[17:33:06] [PASSED] no native formats
[17:33:06] [PASSED] XRGB8888 as native format
[17:33:06] [PASSED] remove duplicates
[17:33:06] [PASSED] convert alpha formats
[17:33:06] [PASSED] random formats
[17:33:06] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[17:33:06] ============= [PASSED] drm_sysfb_modeset_test ==============
[17:33:06] ============================================================
[17:33:06] Testing complete. Ran 616 tests: passed: 616
[17:33:06] Elapsed time: 24.944s total, 1.644s configuring, 23.129s building, 0.144s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[17:33:06] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:33:08] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[17:33:16] Starting KUnit Kernel (1/1)...
[17:33:16] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:33:16] ================= ttm_device (5 subtests) ==================
[17:33:16] [PASSED] ttm_device_init_basic
[17:33:16] [PASSED] ttm_device_init_multiple
[17:33:16] [PASSED] ttm_device_fini_basic
[17:33:16] [PASSED] ttm_device_init_no_vma_man
[17:33:16] ================== ttm_device_init_pools ==================
[17:33:16] [PASSED] No DMA allocations, no DMA32 required
[17:33:16] [PASSED] DMA allocations, DMA32 required
[17:33:16] [PASSED] No DMA allocations, DMA32 required
[17:33:16] [PASSED] DMA allocations, no DMA32 required
[17:33:16] ============== [PASSED] ttm_device_init_pools ==============
[17:33:16] =================== [PASSED] ttm_device ====================
[17:33:16] ================== ttm_pool (8 subtests) ===================
[17:33:16] ================== ttm_pool_alloc_basic ===================
[17:33:16] [PASSED] One page
[17:33:16] [PASSED] More than one page
[17:33:16] [PASSED] Above the allocation limit
[17:33:16] [PASSED] One page, with coherent DMA mappings enabled
[17:33:16] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[17:33:16] ============== [PASSED] ttm_pool_alloc_basic ===============
[17:33:16] ============== ttm_pool_alloc_basic_dma_addr ==============
[17:33:16] [PASSED] One page
[17:33:16] [PASSED] More than one page
[17:33:16] [PASSED] Above the allocation limit
[17:33:16] [PASSED] One page, with coherent DMA mappings enabled
[17:33:16] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[17:33:16] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[17:33:16] [PASSED] ttm_pool_alloc_order_caching_match
[17:33:16] [PASSED] ttm_pool_alloc_caching_mismatch
[17:33:16] [PASSED] ttm_pool_alloc_order_mismatch
[17:33:16] [PASSED] ttm_pool_free_dma_alloc
[17:33:16] [PASSED] ttm_pool_free_no_dma_alloc
[17:33:16] [PASSED] ttm_pool_fini_basic
[17:33:16] ==================== [PASSED] ttm_pool =====================
[17:33:16] ================ ttm_resource (8 subtests) =================
[17:33:16] ================= ttm_resource_init_basic =================
[17:33:16] [PASSED] Init resource in TTM_PL_SYSTEM
[17:33:16] [PASSED] Init resource in TTM_PL_VRAM
[17:33:16] [PASSED] Init resource in a private placement
[17:33:16] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[17:33:16] ============= [PASSED] ttm_resource_init_basic =============
[17:33:16] [PASSED] ttm_resource_init_pinned
[17:33:16] [PASSED] ttm_resource_fini_basic
[17:33:16] [PASSED] ttm_resource_manager_init_basic
[17:33:16] [PASSED] ttm_resource_manager_usage_basic
[17:33:16] [PASSED] ttm_resource_manager_set_used_basic
[17:33:16] [PASSED] ttm_sys_man_alloc_basic
[17:33:16] [PASSED] ttm_sys_man_free_basic
[17:33:16] ================== [PASSED] ttm_resource ===================
[17:33:16] =================== ttm_tt (15 subtests) ===================
[17:33:16] ==================== ttm_tt_init_basic ====================
[17:33:16] [PASSED] Page-aligned size
[17:33:16] [PASSED] Extra pages requested
[17:33:16] ================ [PASSED] ttm_tt_init_basic ================
[17:33:16] [PASSED] ttm_tt_init_misaligned
[17:33:16] [PASSED] ttm_tt_fini_basic
[17:33:16] [PASSED] ttm_tt_fini_sg
[17:33:16] [PASSED] ttm_tt_fini_shmem
[17:33:16] [PASSED] ttm_tt_create_basic
[17:33:16] [PASSED] ttm_tt_create_invalid_bo_type
[17:33:16] [PASSED] ttm_tt_create_ttm_exists
[17:33:16] [PASSED] ttm_tt_create_failed
[17:33:16] [PASSED] ttm_tt_destroy_basic
[17:33:16] [PASSED] ttm_tt_populate_null_ttm
[17:33:16] [PASSED] ttm_tt_populate_populated_ttm
[17:33:16] [PASSED] ttm_tt_unpopulate_basic
[17:33:16] [PASSED] ttm_tt_unpopulate_empty_ttm
[17:33:16] [PASSED] ttm_tt_swapin_basic
[17:33:16] ===================== [PASSED] ttm_tt ======================
[17:33:16] =================== ttm_bo (14 subtests) ===================
[17:33:16] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[17:33:16] [PASSED] Cannot be interrupted and sleeps
[17:33:16] [PASSED] Cannot be interrupted, locks straight away
[17:33:16] [PASSED] Can be interrupted, sleeps
[17:33:16] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[17:33:16] [PASSED] ttm_bo_reserve_locked_no_sleep
[17:33:16] [PASSED] ttm_bo_reserve_no_wait_ticket
[17:33:16] [PASSED] ttm_bo_reserve_double_resv
[17:33:16] [PASSED] ttm_bo_reserve_interrupted
[17:33:16] [PASSED] ttm_bo_reserve_deadlock
[17:33:16] [PASSED] ttm_bo_unreserve_basic
[17:33:16] [PASSED] ttm_bo_unreserve_pinned
[17:33:16] [PASSED] ttm_bo_unreserve_bulk
[17:33:16] [PASSED] ttm_bo_put_basic
[17:33:16] [PASSED] ttm_bo_put_shared_resv
[17:33:16] [PASSED] ttm_bo_pin_basic
[17:33:16] [PASSED] ttm_bo_pin_unpin_resource
[17:33:16] [PASSED] ttm_bo_multiple_pin_one_unpin
[17:33:16] ===================== [PASSED] ttm_bo ======================
[17:33:16] ============== ttm_bo_validate (21 subtests) ===============
[17:33:16] ============== ttm_bo_init_reserved_sys_man ===============
[17:33:16] [PASSED] Buffer object for userspace
[17:33:16] [PASSED] Kernel buffer object
[17:33:16] [PASSED] Shared buffer object
[17:33:16] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[17:33:16] ============== ttm_bo_init_reserved_mock_man ==============
[17:33:16] [PASSED] Buffer object for userspace
[17:33:16] [PASSED] Kernel buffer object
[17:33:16] [PASSED] Shared buffer object
[17:33:16] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[17:33:16] [PASSED] ttm_bo_init_reserved_resv
[17:33:16] ================== ttm_bo_validate_basic ==================
[17:33:16] [PASSED] Buffer object for userspace
[17:33:16] [PASSED] Kernel buffer object
[17:33:16] [PASSED] Shared buffer object
[17:33:16] ============== [PASSED] ttm_bo_validate_basic ==============
[17:33:16] [PASSED] ttm_bo_validate_invalid_placement
[17:33:16] ============= ttm_bo_validate_same_placement ==============
[17:33:16] [PASSED] System manager
[17:33:16] [PASSED] VRAM manager
[17:33:16] ========= [PASSED] ttm_bo_validate_same_placement ==========
[17:33:16] [PASSED] ttm_bo_validate_failed_alloc
[17:33:16] [PASSED] ttm_bo_validate_pinned
[17:33:16] [PASSED] ttm_bo_validate_busy_placement
[17:33:16] ================ ttm_bo_validate_multihop =================
[17:33:16] [PASSED] Buffer object for userspace
[17:33:16] [PASSED] Kernel buffer object
[17:33:16] [PASSED] Shared buffer object
[17:33:16] ============ [PASSED] ttm_bo_validate_multihop =============
[17:33:16] ========== ttm_bo_validate_no_placement_signaled ==========
[17:33:16] [PASSED] Buffer object in system domain, no page vector
[17:33:16] [PASSED] Buffer object in system domain with an existing page vector
[17:33:16] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[17:33:16] ======== ttm_bo_validate_no_placement_not_signaled ========
[17:33:16] [PASSED] Buffer object for userspace
[17:33:16] [PASSED] Kernel buffer object
[17:33:16] [PASSED] Shared buffer object
[17:33:16] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[17:33:16] [PASSED] ttm_bo_validate_move_fence_signaled
[17:33:16] ========= ttm_bo_validate_move_fence_not_signaled =========
[17:33:16] [PASSED] Waits for GPU
[17:33:16] [PASSED] Tries to lock straight away
[17:33:16] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[17:33:16] [PASSED] ttm_bo_validate_happy_evict
[17:33:16] [PASSED] ttm_bo_validate_all_pinned_evict
[17:33:16] [PASSED] ttm_bo_validate_allowed_only_evict
[17:33:16] [PASSED] ttm_bo_validate_deleted_evict
[17:33:16] [PASSED] ttm_bo_validate_busy_domain_evict
[17:33:16] [PASSED] ttm_bo_validate_evict_gutting
[17:33:16] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[17:33:16] ================= [PASSED] ttm_bo_validate =================
[17:33:16] ============================================================
[17:33:16] Testing complete. Ran 101 tests: passed: 101
[17:33:16] Elapsed time: 9.861s total, 1.621s configuring, 8.024s building, 0.178s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 15+ messages in thread* ✓ Xe.CI.BAT: success for drm/xe: Use poll_timeout_us() (rev4)
2025-09-11 17:25 [PATCH v3 0/5] drm/xe: Use poll_timeout_us() Lucas De Marchi
` (6 preceding siblings ...)
2025-09-11 17:33 ` ✓ CI.KUnit: success " Patchwork
@ 2025-09-11 18:08 ` Patchwork
2025-09-11 23:37 ` ✗ Xe.CI.Full: failure " Patchwork
8 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2025-09-11 18:08 UTC (permalink / raw)
To: Lucas De Marchi; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1587 bytes --]
== Series Details ==
Series: drm/xe: Use poll_timeout_us() (rev4)
URL : https://patchwork.freedesktop.org/series/153671/
State : success
== Summary ==
CI Bug Log - changes from xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8_BAT -> xe-pw-153671v4_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (11 -> 11)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-153671v4_BAT that come from known issues:
### IGT changes ###
#### Possible fixes ####
* igt@xe_vm@bind-execqueues-independent:
- {bat-ptl-1}: [FAIL][1] ([Intel XE#5783]) -> [PASS][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/bat-ptl-1/igt@xe_vm@bind-execqueues-independent.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/bat-ptl-1/igt@xe_vm@bind-execqueues-independent.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#5783]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5783
Build changes
-------------
* Linux: xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8 -> xe-pw-153671v4
IGT_8535: 8535
xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8: 6383690b59fb31f52a5932aab3a9963265e86fc8
xe-pw-153671v4: 153671v4
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/index.html
[-- Attachment #2: Type: text/html, Size: 2162 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread* ✗ Xe.CI.Full: failure for drm/xe: Use poll_timeout_us() (rev4)
2025-09-11 17:25 [PATCH v3 0/5] drm/xe: Use poll_timeout_us() Lucas De Marchi
` (7 preceding siblings ...)
2025-09-11 18:08 ` ✓ Xe.CI.BAT: " Patchwork
@ 2025-09-11 23:37 ` Patchwork
8 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2025-09-11 23:37 UTC (permalink / raw)
To: Lucas De Marchi; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 23795 bytes --]
== Series Details ==
Series: drm/xe: Use poll_timeout_us() (rev4)
URL : https://patchwork.freedesktop.org/series/153671/
State : failure
== Summary ==
CI Bug Log - changes from xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8_FULL -> xe-pw-153671v4_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-153671v4_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-153671v4_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-153671v4_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
- shard-dg2-set2: NOTRUN -> [ABORT][1]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
* igt@xe_pm@d3hot-mmap-vram:
- shard-bmg: NOTRUN -> [ABORT][2]
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-1/igt@xe_pm@d3hot-mmap-vram.html
#### Suppressed ####
The following results come from untrusted machines, tests, or statuses.
They do not affect the overall result.
* {igt@kms_async_flips@async-flip-dpms@pipe-a-dp-2}:
- shard-bmg: NOTRUN -> [ABORT][3] +1 other test abort
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_async_flips@async-flip-dpms@pipe-a-dp-2.html
* {igt@xe_fault_injection@inject-fault-probe-function-guc_wait_ucode}:
- shard-dg2-set2: NOTRUN -> [FAIL][4]
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@xe_fault_injection@inject-fault-probe-function-guc_wait_ucode.html
Known issues
------------
Here are the changes found in xe-pw-153671v4_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@linear-32bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#2327]) +2 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_big_fb@linear-32bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-32bpp-rotate-90:
- shard-dg2-set2: NOTRUN -> [SKIP][6] ([Intel XE#316])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@kms_big_fb@x-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
- shard-bmg: NOTRUN -> [SKIP][7] ([Intel XE#1124]) +2 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html
* igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#2887]) +3 other tests skip
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_ccs@crc-sprite-planes-basic-y-tiled-gen12-rc-ccs-cc.html
* igt@kms_chamelium_hpd@dp-hpd-after-hibernate:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2252]) +2 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_chamelium_hpd@dp-hpd-after-hibernate.html
* igt@kms_cursor_crc@cursor-offscreen-32x32:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#2320])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_cursor_crc@cursor-offscreen-32x32.html
* igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size:
- shard-bmg: [PASS][11] -> [SKIP][12] ([Intel XE#2291]) +1 other test skip
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-3/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-6/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [PASS][13] -> [FAIL][14] ([Intel XE#4633])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-3/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-6/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_fbcon_fbt@psr-suspend:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#776])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-1/igt@kms_fbcon_fbt@psr-suspend.html
* igt@kms_flip@2x-plain-flip-fb-recreate:
- shard-bmg: [PASS][16] -> [SKIP][17] ([Intel XE#2316]) +3 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-3/igt@kms_flip@2x-plain-flip-fb-recreate.html
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-6/igt@kms_flip@2x-plain-flip-fb-recreate.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1:
- shard-adlp: [PASS][18] -> [FAIL][19] ([Intel XE#301]) +1 other test fail
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-adlp-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1.html
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-adlp-4/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#2293] / [Intel XE#2380]) +1 other test skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#2293]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-x-to-y:
- shard-adlp: [PASS][22] -> [FAIL][23] ([Intel XE#1874]) +1 other test fail
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-adlp-4/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-x-to-y.html
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-adlp-3/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-x-to-y.html
* igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-y-to-y:
- shard-adlp: [PASS][24] -> [DMESG-FAIL][25] ([Intel XE#4543]) +1 other test dmesg-fail
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-adlp-4/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-y-to-y.html
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-adlp-3/igt@kms_flip_tiling@flip-change-tiling@pipe-b-hdmi-a-1-y-to-y.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen:
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#2311]) +7 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#5390]) +2 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][28] ([Intel XE#651]) +1 other test skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-move:
- shard-dg2-set2: NOTRUN -> [SKIP][29] ([Intel XE#653]) +1 other test skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#2313]) +5 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-indfb-scaledprimary.html
* igt@kms_joiner@basic-force-ultra-joiner:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#2934])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_joiner@basic-force-ultra-joiner.html
* igt@kms_plane_multiple@tiling-y:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#5020])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_plane_multiple@tiling-y.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area:
- shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#1406] / [Intel XE#1489])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-sf-dmg-area.html
* igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf:
- shard-dg2-set2: NOTRUN -> [SKIP][34] ([Intel XE#1406] / [Intel XE#1489])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-sf.html
* igt@kms_psr@fbc-psr2-sprite-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][35] ([Intel XE#1406] / [Intel XE#2850] / [Intel XE#929])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@kms_psr@fbc-psr2-sprite-blt.html
* igt@kms_psr@fbc-psr2-sprite-render:
- shard-bmg: NOTRUN -> [SKIP][36] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_psr@fbc-psr2-sprite-render.html
* igt@kms_rotation_crc@bad-tiling:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#3414] / [Intel XE#3904])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@kms_rotation_crc@bad-tiling.html
* igt@xe_eudebug@basic-vm-bind-ufence-delay-ack:
- shard-dg2-set2: NOTRUN -> [SKIP][38] ([Intel XE#4837]) +1 other test skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@xe_eudebug@basic-vm-bind-ufence-delay-ack.html
* igt@xe_eudebug@discovery-race:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#4837]) +1 other test skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@xe_eudebug@discovery-race.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap:
- shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#2322])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null-defer-mmap.html
* igt@xe_exec_basic@multigpu-no-exec-null:
- shard-dg2-set2: NOTRUN -> [SKIP][41] ([Intel XE#1392])
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-null.html
* igt@xe_exec_fault_mode@many-userptr-rebind-imm:
- shard-dg2-set2: NOTRUN -> [SKIP][42] ([Intel XE#288]) +1 other test skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@xe_exec_fault_mode@many-userptr-rebind-imm.html
* igt@xe_exec_system_allocator@many-large-execqueues-mmap-file-mlock-nomemset:
- shard-dg2-set2: NOTRUN -> [SKIP][43] ([Intel XE#4915]) +22 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@xe_exec_system_allocator@many-large-execqueues-mmap-file-mlock-nomemset.html
* igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-free-huge:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#4943]) +2 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@xe_exec_system_allocator@process-many-large-execqueues-mmap-free-huge.html
* igt@xe_oa@non-sampling-read-error:
- shard-dg2-set2: NOTRUN -> [SKIP][45] ([Intel XE#3573])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@xe_oa@non-sampling-read-error.html
* igt@xe_pat@pat-index-xe2:
- shard-dg2-set2: NOTRUN -> [SKIP][46] ([Intel XE#977])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@xe_pat@pat-index-xe2.html
* igt@xe_pxp@display-black-pxp-fb:
- shard-dg2-set2: NOTRUN -> [SKIP][47] ([Intel XE#4733])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-dg2-432/igt@xe_pxp@display-black-pxp-fb.html
* igt@xe_pxp@pxp-stale-bo-bind-post-rpm:
- shard-bmg: NOTRUN -> [SKIP][48] ([Intel XE#4733])
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-8/igt@xe_pxp@pxp-stale-bo-bind-post-rpm.html
#### Possible fixes ####
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
- shard-adlp: [DMESG-FAIL][49] ([Intel XE#4543]) -> [PASS][50]
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-adlp-6/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-adlp-9/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
- shard-bmg: [SKIP][51] ([Intel XE#2291]) -> [PASS][52] +1 other test pass
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-5/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
* igt@kms_flip@2x-flip-vs-dpms-on-nop:
- shard-bmg: [SKIP][53] ([Intel XE#2316]) -> [PASS][54] +4 other tests pass
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-6/igt@kms_flip@2x-flip-vs-dpms-on-nop.html
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-5/igt@kms_flip@2x-flip-vs-dpms-on-nop.html
* igt@kms_setmode@invalid-clone-single-crtc:
- shard-bmg: [SKIP][55] ([Intel XE#1435]) -> [PASS][56]
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-6/igt@kms_setmode@invalid-clone-single-crtc.html
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-5/igt@kms_setmode@invalid-clone-single-crtc.html
* igt@xe_exec_reset@parallel-gt-reset:
- shard-adlp: [DMESG-WARN][57] ([Intel XE#3876]) -> [PASS][58]
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-adlp-4/igt@xe_exec_reset@parallel-gt-reset.html
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-adlp-3/igt@xe_exec_reset@parallel-gt-reset.html
* igt@xe_exec_threads@threads-bal-mixed-fd-userptr:
- shard-adlp: [DMESG-FAIL][59] ([Intel XE#3876]) -> [PASS][60] +2 other tests pass
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-adlp-4/igt@xe_exec_threads@threads-bal-mixed-fd-userptr.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-adlp-3/igt@xe_exec_threads@threads-bal-mixed-fd-userptr.html
* igt@xe_pat@pat-index-xe2:
- shard-bmg: [FAIL][61] ([Intel XE#5507]) -> [PASS][62] +1 other test pass
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-2/igt@xe_pat@pat-index-xe2.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-6/igt@xe_pat@pat-index-xe2.html
#### Warnings ####
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move:
- shard-bmg: [SKIP][63] ([Intel XE#5390]) -> [SKIP][64] ([Intel XE#2312]) +3 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move.html
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-move.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
- shard-bmg: [SKIP][65] ([Intel XE#2312]) -> [SKIP][66] ([Intel XE#5390]) +1 other test skip
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-plflip-blt:
- shard-bmg: [SKIP][67] ([Intel XE#2312]) -> [SKIP][68] ([Intel XE#2311]) +5 other tests skip
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-plflip-blt.html
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][69] ([Intel XE#2311]) -> [SKIP][70] ([Intel XE#2312]) +5 other tests skip
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt:
- shard-bmg: [SKIP][71] ([Intel XE#2312]) -> [SKIP][72] ([Intel XE#2313]) +4 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt.html
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen:
- shard-bmg: [SKIP][73] ([Intel XE#2313]) -> [SKIP][74] ([Intel XE#2312]) +8 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-bmg-7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen.html
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-bmg-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen.html
* igt@kms_pm_rpm@modeset-lpsp-stress:
- shard-adlp: [ABORT][75] -> [ABORT][76] ([Intel XE#2953])
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8/shard-adlp-1/igt@kms_pm_rpm@modeset-lpsp-stress.html
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/shard-adlp-4/igt@kms_pm_rpm@modeset-lpsp-stress.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
[Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
[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#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2934]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2934
[Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
[Intel XE#3876]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3876
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
[Intel XE#4633]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4633
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#4915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4915
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
[Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
[Intel XE#5507]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5507
[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#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
Build changes
-------------
* Linux: xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8 -> xe-pw-153671v4
IGT_8535: 8535
xe-3727-6383690b59fb31f52a5932aab3a9963265e86fc8: 6383690b59fb31f52a5932aab3a9963265e86fc8
xe-pw-153671v4: 153671v4
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-153671v4/index.html
[-- Attachment #2: Type: text/html, Size: 27316 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread