* [PATCH v3 1/6] drm/xe: Only have a single drmm release action.
2025-08-19 10:11 [PATCH v3 0/6] drm/xe: Make struct xe_ggtt private Maarten Lankhorst
@ 2025-08-19 10:11 ` Maarten Lankhorst
2025-08-22 20:25 ` Rodrigo Vivi
2025-08-22 20:38 ` Michal Wajdeczko
2025-08-19 10:11 ` [PATCH v3 2/6] drm/mm: Introduce address space shifting Maarten Lankhorst
` (9 subsequent siblings)
10 siblings, 2 replies; 16+ messages in thread
From: Maarten Lankhorst @ 2025-08-19 10:11 UTC (permalink / raw)
To: intel-xe; +Cc: Maarten Lankhorst, Michal Wajdeczko, Rodrigo Vivi
The broken action happened after ggtt_early_fini, so
it's safe to put the drain_workqueue in there instead of
creating a new place.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Fixes: 89d2835c3680 ("drm/xe: Process deferred GGTT node removals on device unwind")
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/xe_ggtt.c | 12 +-----------
1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index e03222f5ac5a1..0c6aa3126b43a 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -178,6 +178,7 @@ static void ggtt_fini_early(struct drm_device *drm, void *arg)
{
struct xe_ggtt *ggtt = arg;
+ drain_workqueue(ggtt->wq);
destroy_workqueue(ggtt->wq);
mutex_destroy(&ggtt->lock);
drm_mm_takedown(&ggtt->mm);
@@ -238,13 +239,6 @@ int xe_ggtt_init_kunit(struct xe_ggtt *ggtt, u32 reserved, u32 size)
}
EXPORT_SYMBOL_IF_KUNIT(xe_ggtt_init_kunit);
-static void dev_fini_ggtt(void *arg)
-{
- struct xe_ggtt *ggtt = arg;
-
- drain_workqueue(ggtt->wq);
-}
-
/**
* xe_ggtt_init_early - Early GGTT initialization
* @ggtt: the &xe_ggtt to be initialized
@@ -297,10 +291,6 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
if (err)
return err;
- err = devm_add_action_or_reset(xe->drm.dev, dev_fini_ggtt, ggtt);
- if (err)
- return err;
-
if (IS_SRIOV_VF(xe)) {
err = xe_tile_sriov_vf_prepare_ggtt(ggtt->tile);
if (err)
--
2.50.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH v3 1/6] drm/xe: Only have a single drmm release action.
2025-08-19 10:11 ` [PATCH v3 1/6] drm/xe: Only have a single drmm release action Maarten Lankhorst
@ 2025-08-22 20:25 ` Rodrigo Vivi
2025-08-22 20:38 ` Michal Wajdeczko
1 sibling, 0 replies; 16+ messages in thread
From: Rodrigo Vivi @ 2025-08-22 20:25 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe, Michal Wajdeczko
On Tue, Aug 19, 2025 at 12:11:19PM +0200, Maarten Lankhorst wrote:
> The broken action happened after ggtt_early_fini, so
> it's safe to put the drain_workqueue in there instead of
> creating a new place.
>
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
> Fixes: 89d2835c3680 ("drm/xe: Process deferred GGTT node removals on device unwind")
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_ggtt.c | 12 +-----------
> 1 file changed, 1 insertion(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index e03222f5ac5a1..0c6aa3126b43a 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -178,6 +178,7 @@ static void ggtt_fini_early(struct drm_device *drm, void *arg)
> {
> struct xe_ggtt *ggtt = arg;
>
> + drain_workqueue(ggtt->wq);
> destroy_workqueue(ggtt->wq);
> mutex_destroy(&ggtt->lock);
> drm_mm_takedown(&ggtt->mm);
> @@ -238,13 +239,6 @@ int xe_ggtt_init_kunit(struct xe_ggtt *ggtt, u32 reserved, u32 size)
> }
> EXPORT_SYMBOL_IF_KUNIT(xe_ggtt_init_kunit);
>
> -static void dev_fini_ggtt(void *arg)
> -{
> - struct xe_ggtt *ggtt = arg;
> -
> - drain_workqueue(ggtt->wq);
> -}
> -
> /**
> * xe_ggtt_init_early - Early GGTT initialization
> * @ggtt: the &xe_ggtt to be initialized
> @@ -297,10 +291,6 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
> if (err)
> return err;
>
> - err = devm_add_action_or_reset(xe->drm.dev, dev_fini_ggtt, ggtt);
> - if (err)
> - return err;
> -
> if (IS_SRIOV_VF(xe)) {
> err = xe_tile_sriov_vf_prepare_ggtt(ggtt->tile);
> if (err)
> --
> 2.50.0
>
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH v3 1/6] drm/xe: Only have a single drmm release action.
2025-08-19 10:11 ` [PATCH v3 1/6] drm/xe: Only have a single drmm release action Maarten Lankhorst
2025-08-22 20:25 ` Rodrigo Vivi
@ 2025-08-22 20:38 ` Michal Wajdeczko
1 sibling, 0 replies; 16+ messages in thread
From: Michal Wajdeczko @ 2025-08-22 20:38 UTC (permalink / raw)
To: Maarten Lankhorst, intel-xe, Rodrigo Vivi
On 8/19/2025 12:11 PM, Maarten Lankhorst wrote:
> The broken action happened after ggtt_early_fini, so
> it's safe to put the drain_workqueue in there instead of
> creating a new place.
can you share a log with that broken action?
the whole point of having separate devm action here was to
make sure that we will not have any pending work behind
left for the drmm unwind phase, as devm actions, where we
unmap GGTT, will be run before drmm unwind phase
>
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
> Fixes: 89d2835c3680 ("drm/xe: Process deferred GGTT node removals on device unwind")
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_ggtt.c | 12 +-----------
> 1 file changed, 1 insertion(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index e03222f5ac5a1..0c6aa3126b43a 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -178,6 +178,7 @@ static void ggtt_fini_early(struct drm_device *drm, void *arg)
> {
> struct xe_ggtt *ggtt = arg;
>
> + drain_workqueue(ggtt->wq);
btw, that's redundant since drain_workqueue() is called
implicitly by the below destroy_workqueue()
> destroy_workqueue(ggtt->wq);
> mutex_destroy(&ggtt->lock);
> drm_mm_takedown(&ggtt->mm);
> @@ -238,13 +239,6 @@ int xe_ggtt_init_kunit(struct xe_ggtt *ggtt, u32 reserved, u32 size)
> }
> EXPORT_SYMBOL_IF_KUNIT(xe_ggtt_init_kunit);
>
> -static void dev_fini_ggtt(void *arg)
> -{
> - struct xe_ggtt *ggtt = arg;
> -
> - drain_workqueue(ggtt->wq);
> -}
> -
> /**
> * xe_ggtt_init_early - Early GGTT initialization
> * @ggtt: the &xe_ggtt to be initialized
> @@ -297,10 +291,6 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
> if (err)
> return err;
>
> - err = devm_add_action_or_reset(xe->drm.dev, dev_fini_ggtt, ggtt);
> - if (err)
> - return err;
> -
> if (IS_SRIOV_VF(xe)) {
> err = xe_tile_sriov_vf_prepare_ggtt(ggtt->tile);
> if (err)
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v3 2/6] drm/mm: Introduce address space shifting
2025-08-19 10:11 [PATCH v3 0/6] drm/xe: Make struct xe_ggtt private Maarten Lankhorst
2025-08-19 10:11 ` [PATCH v3 1/6] drm/xe: Only have a single drmm release action Maarten Lankhorst
@ 2025-08-19 10:11 ` Maarten Lankhorst
2025-10-08 21:58 ` Matthew Brost
2025-08-19 10:11 ` [PATCH v3 3/6] drm/xe: Start using ggtt->start in preparation of balloon removal Maarten Lankhorst
` (8 subsequent siblings)
10 siblings, 1 reply; 16+ messages in thread
From: Maarten Lankhorst @ 2025-08-19 10:11 UTC (permalink / raw)
To: intel-xe; +Cc: Tomasz Lis, Maarten Lankhorst
From: Tomasz Lis <tomasz.lis@intel.com>
Due to resource reprovisioning, sometimes a need arises to move
a living address space to a new area, preserving all the nodes
and holes stored within.
It is possible to do that by removing all nodes to a temporary list,
reiniting the drm_mm instance and re-adding everything while applying
a shift to each node. But that is a lot of extra work for a task
which could be done internally without any node shuffle operations.
This change introduces an interface which allows to shift the range
without pruning the whole drm_mm instance.
Having a drm_mm interface for such shift significantly simplifies
the code required to adjust a KMD for a change in base address
of a space managed by drm_mm instance.
Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
Link: https://lore.kernel.org/r/20250204224136.3183710-2-tomasz.lis@intel.com
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/drm_mm.c | 24 ++++++++++++++++++++++++
include/drm/drm_mm.h | 1 +
2 files changed, 25 insertions(+)
diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c
index ca254611b3823..ce3bd8b5e41f0 100644
--- a/drivers/gpu/drm/drm_mm.c
+++ b/drivers/gpu/drm/drm_mm.c
@@ -917,6 +917,30 @@ struct drm_mm_node *drm_mm_scan_color_evict(struct drm_mm_scan *scan)
}
EXPORT_SYMBOL(drm_mm_scan_color_evict);
+/**
+ * drm_mm_shift - move the range of addresses managed by this @mm
+ * @mm: the drm_mm structure instance to shift
+ * @shift: the shift value to be added to addresses of all nodes
+ *
+ * The function shifts all nodes by given offset, moving the address space
+ * range managed by this @mm.
+ */
+void drm_mm_shift(struct drm_mm *mm, s64 shift)
+{
+ struct drm_mm_node *node;
+
+ /*
+ * Head node represents a hole, with negative size and start at the end
+ * of addressable area. This means it is never present within nodes
+ * list - needs to be shifted separately.
+ */
+ mm->head_node.start += shift;
+
+ drm_mm_for_each_node(node, mm)
+ node->start += shift;
+}
+EXPORT_SYMBOL(drm_mm_shift);
+
/**
* drm_mm_init - initialize a drm-mm allocator
* @mm: the drm_mm structure to initialize
diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
index f654874c4ce67..798e5a4f07add 100644
--- a/include/drm/drm_mm.h
+++ b/include/drm/drm_mm.h
@@ -465,6 +465,7 @@ static inline int drm_mm_insert_node(struct drm_mm *mm,
void drm_mm_remove_node(struct drm_mm_node *node);
void drm_mm_init(struct drm_mm *mm, u64 start, u64 size);
void drm_mm_takedown(struct drm_mm *mm);
+void drm_mm_shift(struct drm_mm *mm, s64 shift);
/**
* drm_mm_clean - checks whether an allocator is clean
--
2.50.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH v3 2/6] drm/mm: Introduce address space shifting
2025-08-19 10:11 ` [PATCH v3 2/6] drm/mm: Introduce address space shifting Maarten Lankhorst
@ 2025-10-08 21:58 ` Matthew Brost
0 siblings, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2025-10-08 21:58 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe, Tomasz Lis
On Tue, Aug 19, 2025 at 12:11:20PM +0200, Maarten Lankhorst wrote:
> From: Tomasz Lis <tomasz.lis@intel.com>
>
> Due to resource reprovisioning, sometimes a need arises to move
> a living address space to a new area, preserving all the nodes
> and holes stored within.
>
> It is possible to do that by removing all nodes to a temporary list,
> reiniting the drm_mm instance and re-adding everything while applying
> a shift to each node. But that is a lot of extra work for a task
> which could be done internally without any node shuffle operations.
>
> This change introduces an interface which allows to shift the range
> without pruning the whole drm_mm instance.
>
> Having a drm_mm interface for such shift significantly simplifies
> the code required to adjust a KMD for a change in base address
> of a space managed by drm_mm instance.
>
> Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
> Link: https://lore.kernel.org/r/20250204224136.3183710-2-tomasz.lis@intel.com
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
> ---
> drivers/gpu/drm/drm_mm.c | 24 ++++++++++++++++++++++++
> include/drm/drm_mm.h | 1 +
> 2 files changed, 25 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c
> index ca254611b3823..ce3bd8b5e41f0 100644
> --- a/drivers/gpu/drm/drm_mm.c
> +++ b/drivers/gpu/drm/drm_mm.c
> @@ -917,6 +917,30 @@ struct drm_mm_node *drm_mm_scan_color_evict(struct drm_mm_scan *scan)
> }
> EXPORT_SYMBOL(drm_mm_scan_color_evict);
>
> +/**
> + * drm_mm_shift - move the range of addresses managed by this @mm
> + * @mm: the drm_mm structure instance to shift
> + * @shift: the shift value to be added to addresses of all nodes
> + *
> + * The function shifts all nodes by given offset, moving the address space
> + * range managed by this @mm.
> + */
> +void drm_mm_shift(struct drm_mm *mm, s64 shift)
> +{
> + struct drm_mm_node *node;
> +
> + /*
> + * Head node represents a hole, with negative size and start at the end
> + * of addressable area. This means it is never present within nodes
> + * list - needs to be shifted separately.
> + */
> + mm->head_node.start += shift;
> +
> + drm_mm_for_each_node(node, mm)
> + node->start += shift;
> +}
> +EXPORT_SYMBOL(drm_mm_shift);
> +
> /**
> * drm_mm_init - initialize a drm-mm allocator
> * @mm: the drm_mm structure to initialize
> diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
> index f654874c4ce67..798e5a4f07add 100644
> --- a/include/drm/drm_mm.h
> +++ b/include/drm/drm_mm.h
> @@ -465,6 +465,7 @@ static inline int drm_mm_insert_node(struct drm_mm *mm,
> void drm_mm_remove_node(struct drm_mm_node *node);
> void drm_mm_init(struct drm_mm *mm, u64 start, u64 size);
> void drm_mm_takedown(struct drm_mm *mm);
> +void drm_mm_shift(struct drm_mm *mm, s64 shift);
>
> /**
> * drm_mm_clean - checks whether an allocator is clean
> --
> 2.50.0
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v3 3/6] drm/xe: Start using ggtt->start in preparation of balloon removal
2025-08-19 10:11 [PATCH v3 0/6] drm/xe: Make struct xe_ggtt private Maarten Lankhorst
2025-08-19 10:11 ` [PATCH v3 1/6] drm/xe: Only have a single drmm release action Maarten Lankhorst
2025-08-19 10:11 ` [PATCH v3 2/6] drm/mm: Introduce address space shifting Maarten Lankhorst
@ 2025-08-19 10:11 ` Maarten Lankhorst
2025-08-19 10:11 ` [PATCH v3 4/6] drm/xe: Rewrite GGTT VF initialisation Maarten Lankhorst
` (7 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Maarten Lankhorst @ 2025-08-19 10:11 UTC (permalink / raw)
To: intel-xe; +Cc: Maarten Lankhorst, Stuart Summers
Instead of having ggtt->size point to the end of ggtt, have ggtt->size
be the actual size of the GGTT, and introduce ggtt->start to point to
the beginning of GGTT.
This will allow a massive cleanup of GGTT in case of SRIOV-VF.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Reviewed-by: Stuart Summers <stuart.summers@intel.com>
---
drivers/gpu/drm/xe/tests/xe_guc_buf_kunit.c | 2 +-
drivers/gpu/drm/xe/xe_ggtt.c | 70 ++++++++++++---------
drivers/gpu/drm/xe/xe_ggtt.h | 2 +
drivers/gpu/drm/xe/xe_ggtt_types.h | 4 +-
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 4 +-
5 files changed, 48 insertions(+), 34 deletions(-)
diff --git a/drivers/gpu/drm/xe/tests/xe_guc_buf_kunit.c b/drivers/gpu/drm/xe/tests/xe_guc_buf_kunit.c
index d266882adc0e0..acddbedcf17cb 100644
--- a/drivers/gpu/drm/xe/tests/xe_guc_buf_kunit.c
+++ b/drivers/gpu/drm/xe/tests/xe_guc_buf_kunit.c
@@ -67,7 +67,7 @@ static int guc_buf_test_init(struct kunit *test)
KUNIT_ASSERT_EQ(test, 0,
xe_ggtt_init_kunit(ggtt, DUT_GGTT_START,
- DUT_GGTT_START + DUT_GGTT_SIZE));
+ DUT_GGTT_SIZE));
kunit_activate_static_stub(test, xe_managed_bo_create_pin_map,
replacement_xe_managed_bo_create_pin_map);
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 0c6aa3126b43a..b502aae5a57eb 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -123,10 +123,20 @@ static void ggtt_update_access_counter(struct xe_ggtt *ggtt)
}
}
+u64 xe_ggtt_start(struct xe_ggtt *ggtt)
+{
+ return ggtt->start;
+}
+
+u64 xe_ggtt_size(struct xe_ggtt *ggtt)
+{
+ return ggtt->size;
+}
+
static void xe_ggtt_set_pte(struct xe_ggtt *ggtt, u64 addr, u64 pte)
{
xe_tile_assert(ggtt->tile, !(addr & XE_PTE_MASK));
- xe_tile_assert(ggtt->tile, addr < ggtt->size);
+ xe_tile_assert(ggtt->tile, addr < ggtt->start + ggtt->size);
writeq(pte, &ggtt->gsm[addr >> XE_PTE_SHIFT]);
}
@@ -223,18 +233,18 @@ static const struct xe_ggtt_pt_ops xelpg_pt_wa_ops = {
.ggtt_set_pte = xe_ggtt_set_pte_and_flush,
};
-static void __xe_ggtt_init_early(struct xe_ggtt *ggtt, u32 reserved)
+static void __xe_ggtt_init_early(struct xe_ggtt *ggtt, u64 start, u64 size)
{
- drm_mm_init(&ggtt->mm, reserved,
- ggtt->size - reserved);
+ ggtt->start = start;
+ ggtt->size = size;
+ drm_mm_init(&ggtt->mm, start, ggtt->size);
mutex_init(&ggtt->lock);
primelockdep(ggtt);
}
-int xe_ggtt_init_kunit(struct xe_ggtt *ggtt, u32 reserved, u32 size)
+int xe_ggtt_init_kunit(struct xe_ggtt *ggtt, u32 start, u32 size)
{
- ggtt->size = size;
- __xe_ggtt_init_early(ggtt, reserved);
+ __xe_ggtt_init_early(ggtt, start, size);
return 0;
}
EXPORT_SYMBOL_IF_KUNIT(xe_ggtt_init_kunit);
@@ -255,26 +265,32 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
struct xe_device *xe = tile_to_xe(ggtt->tile);
struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
unsigned int gsm_size;
+ u64 ggtt_start, wopcm = xe_wopcm_size(xe), ggtt_size;
int err;
- if (IS_SRIOV_VF(xe) || GRAPHICS_VERx100(xe) >= 1250)
- gsm_size = SZ_8M; /* GGTT is expected to be 4GiB */
- else
- gsm_size = probe_gsm_size(pdev);
-
- if (gsm_size == 0) {
- drm_err(&xe->drm, "Hardware reported no preallocated GSM\n");
- return -ENOMEM;
+ if (!IS_SRIOV_VF(xe)) {
+ if (GRAPHICS_VERx100(xe) >= 1250)
+ gsm_size = SZ_8M; /* GGTT is expected to be 4GiB */
+ else
+ gsm_size = probe_gsm_size(pdev);
+ if (gsm_size == 0) {
+ drm_err(&xe->drm, "Hardware reported no preallocated GSM\n");
+ return -ENOMEM;
+ }
+ ggtt_start = wopcm;
+ ggtt_size = (gsm_size / 8) * (u64) XE_PAGE_SIZE - ggtt_start;
+ } else {
+ /* GGTT is expected to be 4GiB */
+ ggtt_start = wopcm;
+ ggtt_size = SZ_4G - ggtt_start;
}
ggtt->gsm = ggtt->tile->mmio.regs + SZ_8M;
- ggtt->size = (gsm_size / 8) * (u64) XE_PAGE_SIZE;
-
if (IS_DGFX(xe) && xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
ggtt->flags |= XE_GGTT_FLAGS_64K;
- if (ggtt->size > GUC_GGTT_TOP)
- ggtt->size = GUC_GGTT_TOP;
+ if (ggtt_size + ggtt_start > GUC_GGTT_TOP)
+ ggtt_size = GUC_GGTT_TOP - ggtt_start;
if (GRAPHICS_VERx100(xe) >= 1270)
ggtt->pt_ops = (ggtt->tile->media_gt &&
@@ -285,7 +301,7 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
ggtt->pt_ops = &xelp_pt_ops;
ggtt->wq = alloc_workqueue("xe-ggtt-wq", 0, WQ_MEM_RECLAIM);
- __xe_ggtt_init_early(ggtt, xe_wopcm_size(xe));
+ __xe_ggtt_init_early(ggtt, ggtt_start, ggtt_size);
err = drmm_add_action_or_reset(&xe->drm, ggtt_fini_early, ggtt);
if (err)
@@ -520,11 +536,9 @@ void xe_ggtt_node_remove_balloon_locked(struct xe_ggtt_node *node)
static void xe_ggtt_assert_fit(struct xe_ggtt *ggtt, u64 start, u64 size)
{
struct xe_tile *tile = ggtt->tile;
- struct xe_device *xe = tile_to_xe(tile);
- u64 __maybe_unused wopcm = xe_wopcm_size(xe);
- xe_tile_assert(tile, start >= wopcm);
- xe_tile_assert(tile, start + size < ggtt->size - wopcm);
+ xe_tile_assert(tile, start >= ggtt->start);
+ xe_tile_assert(tile, start + size <= ggtt->start + ggtt->size);
}
/**
@@ -830,14 +844,12 @@ u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare)
{
const struct drm_mm *mm = &ggtt->mm;
const struct drm_mm_node *entry;
- u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
u64 hole_start, hole_end, hole_size;
u64 max_hole = 0;
mutex_lock(&ggtt->lock);
-
drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
- hole_start = max(hole_start, hole_min_start);
+ hole_start = max(hole_start, ggtt->start);
hole_start = ALIGN(hole_start, alignment);
hole_end = ALIGN_DOWN(hole_end, alignment);
if (hole_start >= hole_end)
@@ -930,15 +942,13 @@ u64 xe_ggtt_print_holes(struct xe_ggtt *ggtt, u64 alignment, struct drm_printer
{
const struct drm_mm *mm = &ggtt->mm;
const struct drm_mm_node *entry;
- u64 hole_min_start = xe_wopcm_size(tile_to_xe(ggtt->tile));
u64 hole_start, hole_end, hole_size;
u64 total = 0;
char buf[10];
mutex_lock(&ggtt->lock);
-
drm_mm_for_each_hole(entry, mm, hole_start, hole_end) {
- hole_start = max(hole_start, hole_min_start);
+ hole_start = max(hole_start, ggtt->start);
hole_start = ALIGN(hole_start, alignment);
hole_end = ALIGN_DOWN(hole_end, alignment);
if (hole_start >= hole_end)
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index fbe1e397d05d6..70cbca788b6c6 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -22,6 +22,8 @@ int xe_ggtt_node_insert_balloon_locked(struct xe_ggtt_node *node,
u64 start, u64 size);
void xe_ggtt_node_remove_balloon_locked(struct xe_ggtt_node *node);
void xe_ggtt_shift_nodes_locked(struct xe_ggtt *ggtt, s64 shift);
+u64 xe_ggtt_start(struct xe_ggtt *ggtt);
+u64 xe_ggtt_size(struct xe_ggtt *ggtt);
int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32 align);
int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
index c5e999d58ff2a..a27919302d6b2 100644
--- a/drivers/gpu/drm/xe/xe_ggtt_types.h
+++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
@@ -22,7 +22,9 @@ struct xe_gt;
struct xe_ggtt {
/** @tile: Back pointer to tile where this GGTT belongs */
struct xe_tile *tile;
- /** @size: Total size of this GGTT */
+ /** @start: Start offset of GGTT */
+ u64 start;
+ /** @size: Total usable size of this GGTT */
u64 size;
#define XE_GGTT_FLAGS_64K BIT(0)
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index c8f0320d032fc..1de9acff1e883 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -343,8 +343,8 @@ static int pf_push_full_vf_config(struct xe_gt *gt, unsigned int vfid)
xe_gt_assert(gt, num_dwords <= max_cfg_dwords);
if (vfid == PFID) {
- u64 ggtt_start = xe_wopcm_size(gt_to_xe(gt));
- u64 ggtt_size = gt_to_tile(gt)->mem.ggtt->size - ggtt_start;
+ u64 ggtt_start = xe_ggtt_start(gt_to_tile(gt)->mem.ggtt);
+ u64 ggtt_size = xe_ggtt_size(gt_to_tile(gt)->mem.ggtt);
/* plain PF config data will never include a real GGTT region */
xe_gt_assert(gt, !encode_config_ggtt(cfg + num_dwords, config, true));
--
2.50.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v3 4/6] drm/xe: Rewrite GGTT VF initialisation
2025-08-19 10:11 [PATCH v3 0/6] drm/xe: Make struct xe_ggtt private Maarten Lankhorst
` (2 preceding siblings ...)
2025-08-19 10:11 ` [PATCH v3 3/6] drm/xe: Start using ggtt->start in preparation of balloon removal Maarten Lankhorst
@ 2025-08-19 10:11 ` Maarten Lankhorst
2025-10-08 22:00 ` Matthew Brost
2025-08-19 10:11 ` [PATCH v3 5/6] drm/xe: Convert xe_fb_pin to use a callback for insertion into GGTT Maarten Lankhorst
` (6 subsequent siblings)
10 siblings, 1 reply; 16+ messages in thread
From: Maarten Lankhorst @ 2025-08-19 10:11 UTC (permalink / raw)
To: intel-xe; +Cc: Maarten Lankhorst
The previous code was using a complicated system with 2 balloons to
set GGTT size and adjust GGTT offset. While it works, it's overly
complicated.
A better approach is to set the offset and size when initialising GGTT,
this removes the need for adding balloons. The resize function only
needs to re-initialise GGTT at the new offset.
We use the newly created drm_mm_shift to shift the nodes.
This removes the need to manipulate the internals of xe_ggtt outside
of xe_ggtt, and cleans up a lot of now unneeded code.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/xe/Makefile | 3 +-
drivers/gpu/drm/xe/xe_ggtt.c | 144 +++------------
drivers/gpu/drm/xe/xe_ggtt.h | 5 +-
drivers/gpu/drm/xe/xe_sriov_vf.c | 4 +-
drivers/gpu/drm/xe/xe_tile_sriov_vf.c | 254 --------------------------
drivers/gpu/drm/xe/xe_tile_sriov_vf.h | 18 --
6 files changed, 29 insertions(+), 399 deletions(-)
delete mode 100644 drivers/gpu/drm/xe/xe_tile_sriov_vf.c
delete mode 100644 drivers/gpu/drm/xe/xe_tile_sriov_vf.h
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 8e0c3412a757c..d7ded8ec53166 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -152,8 +152,7 @@ xe-y += \
xe_memirq.o \
xe_sriov.o \
xe_sriov_vf.o \
- xe_sriov_vf_ccs.o \
- xe_tile_sriov_vf.o
+ xe_sriov_vf_ccs.o
xe-$(CONFIG_PCI_IOV) += \
xe_gt_sriov_pf.o \
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index b502aae5a57eb..18bf9fc7fde73 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -29,7 +29,7 @@
#include "xe_pm.h"
#include "xe_res_cursor.h"
#include "xe_sriov.h"
-#include "xe_tile_sriov_vf.h"
+#include "xe_gt_sriov_vf.h"
#include "xe_wa.h"
#include "xe_wopcm.h"
@@ -266,7 +266,6 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
unsigned int gsm_size;
u64 ggtt_start, wopcm = xe_wopcm_size(xe), ggtt_size;
- int err;
if (!IS_SRIOV_VF(xe)) {
if (GRAPHICS_VERx100(xe) >= 1250)
@@ -280,9 +279,15 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
ggtt_start = wopcm;
ggtt_size = (gsm_size / 8) * (u64) XE_PAGE_SIZE - ggtt_start;
} else {
- /* GGTT is expected to be 4GiB */
- ggtt_start = wopcm;
- ggtt_size = SZ_4G - ggtt_start;
+ ggtt_start = xe_gt_sriov_vf_ggtt_base(ggtt->tile->primary_gt);
+ ggtt_size = xe_gt_sriov_vf_ggtt(ggtt->tile->primary_gt);
+
+ if (ggtt_start < wopcm || ggtt_start > GUC_GGTT_TOP ||
+ ggtt_size > GUC_GGTT_TOP - ggtt_start) {
+ drm_err(&xe->drm, "tile%u: Invalid GGTT configuration: %#llx-%#llx\n",
+ ggtt->tile->id, ggtt_start, ggtt_start + ggtt_size - 1);
+ return -ERANGE;
+ }
}
ggtt->gsm = ggtt->tile->mmio.regs + SZ_8M;
@@ -303,17 +308,7 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
ggtt->wq = alloc_workqueue("xe-ggtt-wq", 0, WQ_MEM_RECLAIM);
__xe_ggtt_init_early(ggtt, ggtt_start, ggtt_size);
- err = drmm_add_action_or_reset(&xe->drm, ggtt_fini_early, ggtt);
- if (err)
- return err;
-
- if (IS_SRIOV_VF(xe)) {
- err = xe_tile_sriov_vf_prepare_ggtt(ggtt->tile);
- if (err)
- return err;
- }
-
- return 0;
+ return drmm_add_action_or_reset(&xe->drm, ggtt_fini_early, ggtt);
}
ALLOW_ERROR_INJECTION(xe_ggtt_init_early, ERRNO); /* See xe_pci_probe() */
@@ -465,84 +460,8 @@ static void xe_ggtt_invalidate(struct xe_ggtt *ggtt)
ggtt_invalidate_gt_tlb(ggtt->tile->media_gt);
}
-static void xe_ggtt_dump_node(struct xe_ggtt *ggtt,
- const struct drm_mm_node *node, const char *description)
-{
- char buf[10];
-
- if (IS_ENABLED(CONFIG_DRM_XE_DEBUG)) {
- string_get_size(node->size, 1, STRING_UNITS_2, buf, sizeof(buf));
- xe_gt_dbg(ggtt->tile->primary_gt, "GGTT %#llx-%#llx (%s) %s\n",
- node->start, node->start + node->size, buf, description);
- }
-}
-
-/**
- * xe_ggtt_node_insert_balloon_locked - prevent allocation of specified GGTT addresses
- * @node: the &xe_ggtt_node to hold reserved GGTT node
- * @start: the starting GGTT address of the reserved region
- * @end: then end GGTT address of the reserved region
- *
- * To be used in cases where ggtt->lock is already taken.
- * Use xe_ggtt_node_remove_balloon_locked() to release a reserved GGTT node.
- *
- * Return: 0 on success or a negative error code on failure.
- */
-int xe_ggtt_node_insert_balloon_locked(struct xe_ggtt_node *node, u64 start, u64 end)
-{
- struct xe_ggtt *ggtt = node->ggtt;
- int err;
-
- xe_tile_assert(ggtt->tile, start < end);
- xe_tile_assert(ggtt->tile, IS_ALIGNED(start, XE_PAGE_SIZE));
- xe_tile_assert(ggtt->tile, IS_ALIGNED(end, XE_PAGE_SIZE));
- xe_tile_assert(ggtt->tile, !drm_mm_node_allocated(&node->base));
- lockdep_assert_held(&ggtt->lock);
-
- node->base.color = 0;
- node->base.start = start;
- node->base.size = end - start;
-
- err = drm_mm_reserve_node(&ggtt->mm, &node->base);
-
- if (xe_gt_WARN(ggtt->tile->primary_gt, err,
- "Failed to balloon GGTT %#llx-%#llx (%pe)\n",
- node->base.start, node->base.start + node->base.size, ERR_PTR(err)))
- return err;
-
- xe_ggtt_dump_node(ggtt, &node->base, "balloon");
- return 0;
-}
-
/**
- * xe_ggtt_node_remove_balloon_locked - release a reserved GGTT region
- * @node: the &xe_ggtt_node with reserved GGTT region
- *
- * To be used in cases where ggtt->lock is already taken.
- * See xe_ggtt_node_insert_balloon_locked() for details.
- */
-void xe_ggtt_node_remove_balloon_locked(struct xe_ggtt_node *node)
-{
- if (!xe_ggtt_node_allocated(node))
- return;
-
- lockdep_assert_held(&node->ggtt->lock);
-
- xe_ggtt_dump_node(node->ggtt, &node->base, "remove-balloon");
-
- drm_mm_remove_node(&node->base);
-}
-
-static void xe_ggtt_assert_fit(struct xe_ggtt *ggtt, u64 start, u64 size)
-{
- struct xe_tile *tile = ggtt->tile;
-
- xe_tile_assert(tile, start >= ggtt->start);
- xe_tile_assert(tile, start + size <= ggtt->start + ggtt->size);
-}
-
-/**
- * xe_ggtt_shift_nodes_locked - Shift GGTT nodes to adjust for a change in usable address range.
+ * xe_ggtt_shift_nodes - Shift GGTT nodes to adjust for a change in usable address range.
* @ggtt: the &xe_ggtt struct instance
* @shift: change to the location of area provisioned for current VF
*
@@ -556,29 +475,18 @@ static void xe_ggtt_assert_fit(struct xe_ggtt *ggtt, u64 start, u64 size)
* the list of nodes was either already damaged, or that the shift brings the address range
* outside of valid bounds. Both cases justify an assert rather than error code.
*/
-void xe_ggtt_shift_nodes_locked(struct xe_ggtt *ggtt, s64 shift)
+void xe_ggtt_shift_nodes(struct xe_ggtt *ggtt, s64 shift)
{
- struct xe_tile *tile __maybe_unused = ggtt->tile;
- struct drm_mm_node *node, *tmpn;
- LIST_HEAD(temp_list_head);
+ s64 new_start;
- lockdep_assert_held(&ggtt->lock);
+ mutex_lock(&ggtt->lock);
- if (IS_ENABLED(CONFIG_DRM_XE_DEBUG))
- drm_mm_for_each_node_safe(node, tmpn, &ggtt->mm)
- xe_ggtt_assert_fit(ggtt, node->start + shift, node->size);
+ new_start = ggtt->start + shift;
+ xe_tile_assert(ggtt->tile, new_start >= xe_wopcm_size(tile_to_xe(ggtt->tile)));
+ xe_tile_assert(ggtt->tile, new_start + ggtt->size <= GUC_GGTT_TOP);
- drm_mm_for_each_node_safe(node, tmpn, &ggtt->mm) {
- drm_mm_remove_node(node);
- list_add(&node->node_list, &temp_list_head);
- }
-
- list_for_each_entry_safe(node, tmpn, &temp_list_head, node_list) {
- list_del(&node->node_list);
- node->start += shift;
- drm_mm_reserve_node(&ggtt->mm, node);
- xe_tile_assert(tile, drm_mm_node_allocated(node));
- }
+ drm_mm_shift(&ggtt->mm, shift);
+ mutex_unlock(&ggtt->lock);
}
/**
@@ -630,11 +538,9 @@ int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32 align)
* @ggtt: the &xe_ggtt where the new node will later be inserted/reserved.
*
* This function will allocate the struct %xe_ggtt_node and return its pointer.
- * This struct will then be freed after the node removal upon xe_ggtt_node_remove()
- * or xe_ggtt_node_remove_balloon_locked().
+ * This struct will then be freed after the node removal upon xe_ggtt_node_remove().
* Having %xe_ggtt_node struct allocated doesn't mean that the node is already allocated
- * in GGTT. Only the xe_ggtt_node_insert(), xe_ggtt_node_insert_locked(),
- * xe_ggtt_node_insert_balloon_locked() will ensure the node is inserted or reserved in GGTT.
+ * in GGTT. Only xe_ggtt_node_insert() will ensure the node is inserted or reserved in GGTT.
*
* Return: A pointer to %xe_ggtt_node struct on success. An ERR_PTR otherwise.
**/
@@ -655,9 +561,9 @@ struct xe_ggtt_node *xe_ggtt_node_init(struct xe_ggtt *ggtt)
* xe_ggtt_node_fini - Forcebly finalize %xe_ggtt_node struct
* @node: the &xe_ggtt_node to be freed
*
- * If anything went wrong with either xe_ggtt_node_insert(), xe_ggtt_node_insert_locked(),
- * or xe_ggtt_node_insert_balloon_locked(); and this @node is not going to be reused, then,
- * this function needs to be called to free the %xe_ggtt_node struct
+ * If anything went wrong with either xe_ggtt_node_insert() and this @node is
+ * not going to be reused, then this function needs to be called to free the
+ * %xe_ggtt_node struct
**/
void xe_ggtt_node_fini(struct xe_ggtt_node *node)
{
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 70cbca788b6c6..4241159eae9ad 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -18,10 +18,7 @@ int xe_ggtt_init(struct xe_ggtt *ggtt);
struct xe_ggtt_node *xe_ggtt_node_init(struct xe_ggtt *ggtt);
void xe_ggtt_node_fini(struct xe_ggtt_node *node);
-int xe_ggtt_node_insert_balloon_locked(struct xe_ggtt_node *node,
- u64 start, u64 size);
-void xe_ggtt_node_remove_balloon_locked(struct xe_ggtt_node *node);
-void xe_ggtt_shift_nodes_locked(struct xe_ggtt *ggtt, s64 shift);
+void xe_ggtt_shift_nodes(struct xe_ggtt *ggtt, s64 shift);
u64 xe_ggtt_start(struct xe_ggtt *ggtt);
u64 xe_ggtt_size(struct xe_ggtt *ggtt);
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
index 5de81f213d83e..ebe5cafbe2ba2 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
@@ -7,6 +7,7 @@
#include "xe_assert.h"
#include "xe_device.h"
+#include "xe_ggtt.h"
#include "xe_gt.h"
#include "xe_gt_sriov_printk.h"
#include "xe_gt_sriov_vf.h"
@@ -18,7 +19,6 @@
#include "xe_sriov.h"
#include "xe_sriov_printk.h"
#include "xe_sriov_vf.h"
-#include "xe_tile_sriov_vf.h"
/**
* DOC: VF restore procedure in PF KMD and VF KMD
@@ -279,7 +279,7 @@ static int gt_vf_post_migration_fixups(struct xe_gt *gt)
shift = xe_gt_sriov_vf_ggtt_shift(gt);
if (shift) {
- xe_tile_sriov_vf_fixup_ggtt_nodes(gt_to_tile(gt), shift);
+ xe_ggtt_shift_nodes(gt_to_tile(gt)->mem.ggtt, shift);
xe_gt_sriov_vf_default_lrcs_hwsp_rebase(gt);
err = xe_guc_contexts_hwsp_rebase(>->uc.guc, buf);
if (err)
diff --git a/drivers/gpu/drm/xe/xe_tile_sriov_vf.c b/drivers/gpu/drm/xe/xe_tile_sriov_vf.c
deleted file mode 100644
index f221dbed16f09..0000000000000
--- a/drivers/gpu/drm/xe/xe_tile_sriov_vf.c
+++ /dev/null
@@ -1,254 +0,0 @@
-// SPDX-License-Identifier: MIT
-/*
- * Copyright © 2025 Intel Corporation
- */
-
-#include <drm/drm_managed.h>
-
-#include "regs/xe_gtt_defs.h"
-
-#include "xe_assert.h"
-#include "xe_ggtt.h"
-#include "xe_gt_sriov_vf.h"
-#include "xe_sriov.h"
-#include "xe_sriov_printk.h"
-#include "xe_tile_sriov_vf.h"
-#include "xe_wopcm.h"
-
-static int vf_init_ggtt_balloons(struct xe_tile *tile)
-{
- struct xe_ggtt *ggtt = tile->mem.ggtt;
-
- xe_tile_assert(tile, IS_SRIOV_VF(tile_to_xe(tile)));
-
- tile->sriov.vf.ggtt_balloon[0] = xe_ggtt_node_init(ggtt);
- if (IS_ERR(tile->sriov.vf.ggtt_balloon[0]))
- return PTR_ERR(tile->sriov.vf.ggtt_balloon[0]);
-
- tile->sriov.vf.ggtt_balloon[1] = xe_ggtt_node_init(ggtt);
- if (IS_ERR(tile->sriov.vf.ggtt_balloon[1])) {
- xe_ggtt_node_fini(tile->sriov.vf.ggtt_balloon[0]);
- return PTR_ERR(tile->sriov.vf.ggtt_balloon[1]);
- }
-
- return 0;
-}
-
-/**
- * xe_tile_sriov_vf_balloon_ggtt_locked - Insert balloon nodes to limit used GGTT address range.
- * @tile: the &xe_tile struct instance
- *
- * Return: 0 on success or a negative error code on failure.
- */
-int xe_tile_sriov_vf_balloon_ggtt_locked(struct xe_tile *tile)
-{
- u64 ggtt_base = xe_gt_sriov_vf_ggtt_base(tile->primary_gt);
- u64 ggtt_size = xe_gt_sriov_vf_ggtt(tile->primary_gt);
- struct xe_device *xe = tile_to_xe(tile);
- u64 wopcm = xe_wopcm_size(xe);
- u64 start, end;
- int err;
-
- xe_tile_assert(tile, IS_SRIOV_VF(xe));
- xe_tile_assert(tile, ggtt_size);
- lockdep_assert_held(&tile->mem.ggtt->lock);
-
- /*
- * VF can only use part of the GGTT as allocated by the PF:
- *
- * WOPCM GUC_GGTT_TOP
- * |<------------ Total GGTT size ------------------>|
- *
- * VF GGTT base -->|<- size ->|
- *
- * +--------------------+----------+-----------------+
- * |////////////////////| block |\\\\\\\\\\\\\\\\\|
- * +--------------------+----------+-----------------+
- *
- * |<--- balloon[0] --->|<-- VF -->|<-- balloon[1] ->|
- */
-
- if (ggtt_base < wopcm || ggtt_base > GUC_GGTT_TOP ||
- ggtt_size > GUC_GGTT_TOP - ggtt_base) {
- xe_sriov_err(xe, "tile%u: Invalid GGTT configuration: %#llx-%#llx\n",
- tile->id, ggtt_base, ggtt_base + ggtt_size - 1);
- return -ERANGE;
- }
-
- start = wopcm;
- end = ggtt_base;
- if (end != start) {
- err = xe_ggtt_node_insert_balloon_locked(tile->sriov.vf.ggtt_balloon[0],
- start, end);
- if (err)
- return err;
- }
-
- start = ggtt_base + ggtt_size;
- end = GUC_GGTT_TOP;
- if (end != start) {
- err = xe_ggtt_node_insert_balloon_locked(tile->sriov.vf.ggtt_balloon[1],
- start, end);
- if (err) {
- xe_ggtt_node_remove_balloon_locked(tile->sriov.vf.ggtt_balloon[0]);
- return err;
- }
- }
-
- return 0;
-}
-
-static int vf_balloon_ggtt(struct xe_tile *tile)
-{
- struct xe_ggtt *ggtt = tile->mem.ggtt;
- int err;
-
- mutex_lock(&ggtt->lock);
- err = xe_tile_sriov_vf_balloon_ggtt_locked(tile);
- mutex_unlock(&ggtt->lock);
-
- return err;
-}
-
-/**
- * xe_tile_sriov_vf_deballoon_ggtt_locked - Remove balloon nodes.
- * @tile: the &xe_tile struct instance
- */
-void xe_tile_sriov_vf_deballoon_ggtt_locked(struct xe_tile *tile)
-{
- xe_tile_assert(tile, IS_SRIOV_VF(tile_to_xe(tile)));
-
- xe_ggtt_node_remove_balloon_locked(tile->sriov.vf.ggtt_balloon[1]);
- xe_ggtt_node_remove_balloon_locked(tile->sriov.vf.ggtt_balloon[0]);
-}
-
-static void vf_deballoon_ggtt(struct xe_tile *tile)
-{
- mutex_lock(&tile->mem.ggtt->lock);
- xe_tile_sriov_vf_deballoon_ggtt_locked(tile);
- mutex_unlock(&tile->mem.ggtt->lock);
-}
-
-static void vf_fini_ggtt_balloons(struct xe_tile *tile)
-{
- xe_tile_assert(tile, IS_SRIOV_VF(tile_to_xe(tile)));
-
- xe_ggtt_node_fini(tile->sriov.vf.ggtt_balloon[1]);
- xe_ggtt_node_fini(tile->sriov.vf.ggtt_balloon[0]);
-}
-
-static void cleanup_ggtt(struct drm_device *drm, void *arg)
-{
- struct xe_tile *tile = arg;
-
- vf_deballoon_ggtt(tile);
- vf_fini_ggtt_balloons(tile);
-}
-
-/**
- * xe_tile_sriov_vf_prepare_ggtt - Prepare a VF's GGTT configuration.
- * @tile: the &xe_tile
- *
- * This function is for VF use only.
- *
- * Return: 0 on success or a negative error code on failure.
- */
-int xe_tile_sriov_vf_prepare_ggtt(struct xe_tile *tile)
-{
- struct xe_device *xe = tile_to_xe(tile);
- int err;
-
- err = vf_init_ggtt_balloons(tile);
- if (err)
- return err;
-
- err = vf_balloon_ggtt(tile);
- if (err) {
- vf_fini_ggtt_balloons(tile);
- return err;
- }
-
- return drmm_add_action_or_reset(&xe->drm, cleanup_ggtt, tile);
-}
-
-/**
- * DOC: GGTT nodes shifting during VF post-migration recovery
- *
- * The first fixup applied to the VF KMD structures as part of post-migration
- * recovery is shifting nodes within &xe_ggtt instance. The nodes are moved
- * from range previously assigned to this VF, into newly provisioned area.
- * The changes include balloons, which are resized accordingly.
- *
- * The balloon nodes are there to eliminate unavailable ranges from use: one
- * reserves the GGTT area below the range for current VF, and another one
- * reserves area above.
- *
- * Below is a GGTT layout of example VF, with a certain address range assigned to
- * said VF, and inaccessible areas above and below:
- *
- * 0 4GiB
- * |<--------------------------- Total GGTT size ----------------------------->|
- * WOPCM GUC_TOP
- * |<-------------- Area mappable by xe_ggtt instance ---------------->|
- *
- * +---+---------------------------------+----------+----------------------+---+
- * |\\\|/////////////////////////////////| VF mem |//////////////////////|\\\|
- * +---+---------------------------------+----------+----------------------+---+
- *
- * Hardware enforced access rules before migration:
- *
- * |<------- inaccessible for VF ------->|<VF owned>|<-- inaccessible for VF ->|
- *
- * GGTT nodes used for tracking allocations:
- *
- * |<---------- balloon ------------>|<- nodes->|<----- balloon ------>|
- *
- * After the migration, GGTT area assigned to the VF might have shifted, either
- * to lower or to higher address. But we expect the total size and extra areas to
- * be identical, as migration can only happen between matching platforms.
- * Below is an example of GGTT layout of the VF after migration. Content of the
- * GGTT for VF has been moved to a new area, and we receive its address from GuC:
- *
- * +---+----------------------+----------+---------------------------------+---+
- * |\\\|//////////////////////| VF mem |/////////////////////////////////|\\\|
- * +---+----------------------+----------+---------------------------------+---+
- *
- * Hardware enforced access rules after migration:
- *
- * |<- inaccessible for VF -->|<VF owned>|<------- inaccessible for VF ------->|
- *
- * So the VF has a new slice of GGTT assigned, and during migration process, the
- * memory content was copied to that new area. But the &xe_ggtt nodes are still
- * tracking allocations using the old addresses. The nodes within VF owned area
- * have to be shifted, and balloon nodes need to be resized to properly mask out
- * areas not owned by the VF.
- *
- * Fixed &xe_ggtt nodes used for tracking allocations:
- *
- * |<------ balloon ------>|<- nodes->|<----------- balloon ----------->|
- *
- * Due to use of GPU profiles, we do not expect the old and new GGTT ares to
- * overlap; but our node shifting will fix addresses properly regardless.
- */
-
-/**
- * xe_tile_sriov_vf_fixup_ggtt_nodes - Shift GGTT allocations to match assigned range.
- * @tile: the &xe_tile struct instance
- * @shift: the shift value
- *
- * Since Global GTT is not virtualized, each VF has an assigned range
- * within the global space. This range might have changed during migration,
- * which requires all memory addresses pointing to GGTT to be shifted.
- */
-void xe_tile_sriov_vf_fixup_ggtt_nodes(struct xe_tile *tile, s64 shift)
-{
- struct xe_ggtt *ggtt = tile->mem.ggtt;
-
- mutex_lock(&ggtt->lock);
-
- xe_tile_sriov_vf_deballoon_ggtt_locked(tile);
- xe_ggtt_shift_nodes_locked(ggtt, shift);
- xe_tile_sriov_vf_balloon_ggtt_locked(tile);
-
- mutex_unlock(&ggtt->lock);
-}
diff --git a/drivers/gpu/drm/xe/xe_tile_sriov_vf.h b/drivers/gpu/drm/xe/xe_tile_sriov_vf.h
deleted file mode 100644
index 93eb043171e83..0000000000000
--- a/drivers/gpu/drm/xe/xe_tile_sriov_vf.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-/*
- * Copyright © 2025 Intel Corporation
- */
-
-#ifndef _XE_TILE_SRIOV_VF_H_
-#define _XE_TILE_SRIOV_VF_H_
-
-#include <linux/types.h>
-
-struct xe_tile;
-
-int xe_tile_sriov_vf_prepare_ggtt(struct xe_tile *tile);
-int xe_tile_sriov_vf_balloon_ggtt_locked(struct xe_tile *tile);
-void xe_tile_sriov_vf_deballoon_ggtt_locked(struct xe_tile *tile);
-void xe_tile_sriov_vf_fixup_ggtt_nodes(struct xe_tile *tile, s64 shift);
-
-#endif
--
2.50.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* Re: [PATCH v3 4/6] drm/xe: Rewrite GGTT VF initialisation
2025-08-19 10:11 ` [PATCH v3 4/6] drm/xe: Rewrite GGTT VF initialisation Maarten Lankhorst
@ 2025-10-08 22:00 ` Matthew Brost
0 siblings, 0 replies; 16+ messages in thread
From: Matthew Brost @ 2025-10-08 22:00 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
On Tue, Aug 19, 2025 at 12:11:22PM +0200, Maarten Lankhorst wrote:
> The previous code was using a complicated system with 2 balloons to
> set GGTT size and adjust GGTT offset. While it works, it's overly
> complicated.
>
> A better approach is to set the offset and size when initialising GGTT,
> this removes the need for adding balloons. The resize function only
> needs to re-initialise GGTT at the new offset.
>
> We use the newly created drm_mm_shift to shift the nodes.
>
> This removes the need to manipulate the internals of xe_ggtt outside
> of xe_ggtt, and cleans up a lot of now unneeded code.
>
[1] should be merged by the time you are online.
Do you want rebase on that and repost? I'll pull, test, and review.
A brief look, all of this looks sane enough btw.
Matt
[1] https://patchwork.freedesktop.org/series/139778/
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
> ---
> drivers/gpu/drm/xe/Makefile | 3 +-
> drivers/gpu/drm/xe/xe_ggtt.c | 144 +++------------
> drivers/gpu/drm/xe/xe_ggtt.h | 5 +-
> drivers/gpu/drm/xe/xe_sriov_vf.c | 4 +-
> drivers/gpu/drm/xe/xe_tile_sriov_vf.c | 254 --------------------------
> drivers/gpu/drm/xe/xe_tile_sriov_vf.h | 18 --
> 6 files changed, 29 insertions(+), 399 deletions(-)
> delete mode 100644 drivers/gpu/drm/xe/xe_tile_sriov_vf.c
> delete mode 100644 drivers/gpu/drm/xe/xe_tile_sriov_vf.h
>
> diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
> index 8e0c3412a757c..d7ded8ec53166 100644
> --- a/drivers/gpu/drm/xe/Makefile
> +++ b/drivers/gpu/drm/xe/Makefile
> @@ -152,8 +152,7 @@ xe-y += \
> xe_memirq.o \
> xe_sriov.o \
> xe_sriov_vf.o \
> - xe_sriov_vf_ccs.o \
> - xe_tile_sriov_vf.o
> + xe_sriov_vf_ccs.o
>
> xe-$(CONFIG_PCI_IOV) += \
> xe_gt_sriov_pf.o \
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index b502aae5a57eb..18bf9fc7fde73 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -29,7 +29,7 @@
> #include "xe_pm.h"
> #include "xe_res_cursor.h"
> #include "xe_sriov.h"
> -#include "xe_tile_sriov_vf.h"
> +#include "xe_gt_sriov_vf.h"
> #include "xe_wa.h"
> #include "xe_wopcm.h"
>
> @@ -266,7 +266,6 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
> struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
> unsigned int gsm_size;
> u64 ggtt_start, wopcm = xe_wopcm_size(xe), ggtt_size;
> - int err;
>
> if (!IS_SRIOV_VF(xe)) {
> if (GRAPHICS_VERx100(xe) >= 1250)
> @@ -280,9 +279,15 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
> ggtt_start = wopcm;
> ggtt_size = (gsm_size / 8) * (u64) XE_PAGE_SIZE - ggtt_start;
> } else {
> - /* GGTT is expected to be 4GiB */
> - ggtt_start = wopcm;
> - ggtt_size = SZ_4G - ggtt_start;
> + ggtt_start = xe_gt_sriov_vf_ggtt_base(ggtt->tile->primary_gt);
> + ggtt_size = xe_gt_sriov_vf_ggtt(ggtt->tile->primary_gt);
> +
> + if (ggtt_start < wopcm || ggtt_start > GUC_GGTT_TOP ||
> + ggtt_size > GUC_GGTT_TOP - ggtt_start) {
> + drm_err(&xe->drm, "tile%u: Invalid GGTT configuration: %#llx-%#llx\n",
> + ggtt->tile->id, ggtt_start, ggtt_start + ggtt_size - 1);
> + return -ERANGE;
> + }
> }
>
> ggtt->gsm = ggtt->tile->mmio.regs + SZ_8M;
> @@ -303,17 +308,7 @@ int xe_ggtt_init_early(struct xe_ggtt *ggtt)
> ggtt->wq = alloc_workqueue("xe-ggtt-wq", 0, WQ_MEM_RECLAIM);
> __xe_ggtt_init_early(ggtt, ggtt_start, ggtt_size);
>
> - err = drmm_add_action_or_reset(&xe->drm, ggtt_fini_early, ggtt);
> - if (err)
> - return err;
> -
> - if (IS_SRIOV_VF(xe)) {
> - err = xe_tile_sriov_vf_prepare_ggtt(ggtt->tile);
> - if (err)
> - return err;
> - }
> -
> - return 0;
> + return drmm_add_action_or_reset(&xe->drm, ggtt_fini_early, ggtt);
> }
> ALLOW_ERROR_INJECTION(xe_ggtt_init_early, ERRNO); /* See xe_pci_probe() */
>
> @@ -465,84 +460,8 @@ static void xe_ggtt_invalidate(struct xe_ggtt *ggtt)
> ggtt_invalidate_gt_tlb(ggtt->tile->media_gt);
> }
>
> -static void xe_ggtt_dump_node(struct xe_ggtt *ggtt,
> - const struct drm_mm_node *node, const char *description)
> -{
> - char buf[10];
> -
> - if (IS_ENABLED(CONFIG_DRM_XE_DEBUG)) {
> - string_get_size(node->size, 1, STRING_UNITS_2, buf, sizeof(buf));
> - xe_gt_dbg(ggtt->tile->primary_gt, "GGTT %#llx-%#llx (%s) %s\n",
> - node->start, node->start + node->size, buf, description);
> - }
> -}
> -
> -/**
> - * xe_ggtt_node_insert_balloon_locked - prevent allocation of specified GGTT addresses
> - * @node: the &xe_ggtt_node to hold reserved GGTT node
> - * @start: the starting GGTT address of the reserved region
> - * @end: then end GGTT address of the reserved region
> - *
> - * To be used in cases where ggtt->lock is already taken.
> - * Use xe_ggtt_node_remove_balloon_locked() to release a reserved GGTT node.
> - *
> - * Return: 0 on success or a negative error code on failure.
> - */
> -int xe_ggtt_node_insert_balloon_locked(struct xe_ggtt_node *node, u64 start, u64 end)
> -{
> - struct xe_ggtt *ggtt = node->ggtt;
> - int err;
> -
> - xe_tile_assert(ggtt->tile, start < end);
> - xe_tile_assert(ggtt->tile, IS_ALIGNED(start, XE_PAGE_SIZE));
> - xe_tile_assert(ggtt->tile, IS_ALIGNED(end, XE_PAGE_SIZE));
> - xe_tile_assert(ggtt->tile, !drm_mm_node_allocated(&node->base));
> - lockdep_assert_held(&ggtt->lock);
> -
> - node->base.color = 0;
> - node->base.start = start;
> - node->base.size = end - start;
> -
> - err = drm_mm_reserve_node(&ggtt->mm, &node->base);
> -
> - if (xe_gt_WARN(ggtt->tile->primary_gt, err,
> - "Failed to balloon GGTT %#llx-%#llx (%pe)\n",
> - node->base.start, node->base.start + node->base.size, ERR_PTR(err)))
> - return err;
> -
> - xe_ggtt_dump_node(ggtt, &node->base, "balloon");
> - return 0;
> -}
> -
> /**
> - * xe_ggtt_node_remove_balloon_locked - release a reserved GGTT region
> - * @node: the &xe_ggtt_node with reserved GGTT region
> - *
> - * To be used in cases where ggtt->lock is already taken.
> - * See xe_ggtt_node_insert_balloon_locked() for details.
> - */
> -void xe_ggtt_node_remove_balloon_locked(struct xe_ggtt_node *node)
> -{
> - if (!xe_ggtt_node_allocated(node))
> - return;
> -
> - lockdep_assert_held(&node->ggtt->lock);
> -
> - xe_ggtt_dump_node(node->ggtt, &node->base, "remove-balloon");
> -
> - drm_mm_remove_node(&node->base);
> -}
> -
> -static void xe_ggtt_assert_fit(struct xe_ggtt *ggtt, u64 start, u64 size)
> -{
> - struct xe_tile *tile = ggtt->tile;
> -
> - xe_tile_assert(tile, start >= ggtt->start);
> - xe_tile_assert(tile, start + size <= ggtt->start + ggtt->size);
> -}
> -
> -/**
> - * xe_ggtt_shift_nodes_locked - Shift GGTT nodes to adjust for a change in usable address range.
> + * xe_ggtt_shift_nodes - Shift GGTT nodes to adjust for a change in usable address range.
> * @ggtt: the &xe_ggtt struct instance
> * @shift: change to the location of area provisioned for current VF
> *
> @@ -556,29 +475,18 @@ static void xe_ggtt_assert_fit(struct xe_ggtt *ggtt, u64 start, u64 size)
> * the list of nodes was either already damaged, or that the shift brings the address range
> * outside of valid bounds. Both cases justify an assert rather than error code.
> */
> -void xe_ggtt_shift_nodes_locked(struct xe_ggtt *ggtt, s64 shift)
> +void xe_ggtt_shift_nodes(struct xe_ggtt *ggtt, s64 shift)
> {
> - struct xe_tile *tile __maybe_unused = ggtt->tile;
> - struct drm_mm_node *node, *tmpn;
> - LIST_HEAD(temp_list_head);
> + s64 new_start;
>
> - lockdep_assert_held(&ggtt->lock);
> + mutex_lock(&ggtt->lock);
>
> - if (IS_ENABLED(CONFIG_DRM_XE_DEBUG))
> - drm_mm_for_each_node_safe(node, tmpn, &ggtt->mm)
> - xe_ggtt_assert_fit(ggtt, node->start + shift, node->size);
> + new_start = ggtt->start + shift;
> + xe_tile_assert(ggtt->tile, new_start >= xe_wopcm_size(tile_to_xe(ggtt->tile)));
> + xe_tile_assert(ggtt->tile, new_start + ggtt->size <= GUC_GGTT_TOP);
>
> - drm_mm_for_each_node_safe(node, tmpn, &ggtt->mm) {
> - drm_mm_remove_node(node);
> - list_add(&node->node_list, &temp_list_head);
> - }
> -
> - list_for_each_entry_safe(node, tmpn, &temp_list_head, node_list) {
> - list_del(&node->node_list);
> - node->start += shift;
> - drm_mm_reserve_node(&ggtt->mm, node);
> - xe_tile_assert(tile, drm_mm_node_allocated(node));
> - }
> + drm_mm_shift(&ggtt->mm, shift);
> + mutex_unlock(&ggtt->lock);
> }
>
> /**
> @@ -630,11 +538,9 @@ int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32 align)
> * @ggtt: the &xe_ggtt where the new node will later be inserted/reserved.
> *
> * This function will allocate the struct %xe_ggtt_node and return its pointer.
> - * This struct will then be freed after the node removal upon xe_ggtt_node_remove()
> - * or xe_ggtt_node_remove_balloon_locked().
> + * This struct will then be freed after the node removal upon xe_ggtt_node_remove().
> * Having %xe_ggtt_node struct allocated doesn't mean that the node is already allocated
> - * in GGTT. Only the xe_ggtt_node_insert(), xe_ggtt_node_insert_locked(),
> - * xe_ggtt_node_insert_balloon_locked() will ensure the node is inserted or reserved in GGTT.
> + * in GGTT. Only xe_ggtt_node_insert() will ensure the node is inserted or reserved in GGTT.
> *
> * Return: A pointer to %xe_ggtt_node struct on success. An ERR_PTR otherwise.
> **/
> @@ -655,9 +561,9 @@ struct xe_ggtt_node *xe_ggtt_node_init(struct xe_ggtt *ggtt)
> * xe_ggtt_node_fini - Forcebly finalize %xe_ggtt_node struct
> * @node: the &xe_ggtt_node to be freed
> *
> - * If anything went wrong with either xe_ggtt_node_insert(), xe_ggtt_node_insert_locked(),
> - * or xe_ggtt_node_insert_balloon_locked(); and this @node is not going to be reused, then,
> - * this function needs to be called to free the %xe_ggtt_node struct
> + * If anything went wrong with either xe_ggtt_node_insert() and this @node is
> + * not going to be reused, then this function needs to be called to free the
> + * %xe_ggtt_node struct
> **/
> void xe_ggtt_node_fini(struct xe_ggtt_node *node)
> {
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
> index 70cbca788b6c6..4241159eae9ad 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.h
> +++ b/drivers/gpu/drm/xe/xe_ggtt.h
> @@ -18,10 +18,7 @@ int xe_ggtt_init(struct xe_ggtt *ggtt);
>
> struct xe_ggtt_node *xe_ggtt_node_init(struct xe_ggtt *ggtt);
> void xe_ggtt_node_fini(struct xe_ggtt_node *node);
> -int xe_ggtt_node_insert_balloon_locked(struct xe_ggtt_node *node,
> - u64 start, u64 size);
> -void xe_ggtt_node_remove_balloon_locked(struct xe_ggtt_node *node);
> -void xe_ggtt_shift_nodes_locked(struct xe_ggtt *ggtt, s64 shift);
> +void xe_ggtt_shift_nodes(struct xe_ggtt *ggtt, s64 shift);
> u64 xe_ggtt_start(struct xe_ggtt *ggtt);
> u64 xe_ggtt_size(struct xe_ggtt *ggtt);
>
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
> index 5de81f213d83e..ebe5cafbe2ba2 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf.c
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
> @@ -7,6 +7,7 @@
>
> #include "xe_assert.h"
> #include "xe_device.h"
> +#include "xe_ggtt.h"
> #include "xe_gt.h"
> #include "xe_gt_sriov_printk.h"
> #include "xe_gt_sriov_vf.h"
> @@ -18,7 +19,6 @@
> #include "xe_sriov.h"
> #include "xe_sriov_printk.h"
> #include "xe_sriov_vf.h"
> -#include "xe_tile_sriov_vf.h"
>
> /**
> * DOC: VF restore procedure in PF KMD and VF KMD
> @@ -279,7 +279,7 @@ static int gt_vf_post_migration_fixups(struct xe_gt *gt)
>
> shift = xe_gt_sriov_vf_ggtt_shift(gt);
> if (shift) {
> - xe_tile_sriov_vf_fixup_ggtt_nodes(gt_to_tile(gt), shift);
> + xe_ggtt_shift_nodes(gt_to_tile(gt)->mem.ggtt, shift);
> xe_gt_sriov_vf_default_lrcs_hwsp_rebase(gt);
> err = xe_guc_contexts_hwsp_rebase(>->uc.guc, buf);
> if (err)
> diff --git a/drivers/gpu/drm/xe/xe_tile_sriov_vf.c b/drivers/gpu/drm/xe/xe_tile_sriov_vf.c
> deleted file mode 100644
> index f221dbed16f09..0000000000000
> --- a/drivers/gpu/drm/xe/xe_tile_sriov_vf.c
> +++ /dev/null
> @@ -1,254 +0,0 @@
> -// SPDX-License-Identifier: MIT
> -/*
> - * Copyright © 2025 Intel Corporation
> - */
> -
> -#include <drm/drm_managed.h>
> -
> -#include "regs/xe_gtt_defs.h"
> -
> -#include "xe_assert.h"
> -#include "xe_ggtt.h"
> -#include "xe_gt_sriov_vf.h"
> -#include "xe_sriov.h"
> -#include "xe_sriov_printk.h"
> -#include "xe_tile_sriov_vf.h"
> -#include "xe_wopcm.h"
> -
> -static int vf_init_ggtt_balloons(struct xe_tile *tile)
> -{
> - struct xe_ggtt *ggtt = tile->mem.ggtt;
> -
> - xe_tile_assert(tile, IS_SRIOV_VF(tile_to_xe(tile)));
> -
> - tile->sriov.vf.ggtt_balloon[0] = xe_ggtt_node_init(ggtt);
> - if (IS_ERR(tile->sriov.vf.ggtt_balloon[0]))
> - return PTR_ERR(tile->sriov.vf.ggtt_balloon[0]);
> -
> - tile->sriov.vf.ggtt_balloon[1] = xe_ggtt_node_init(ggtt);
> - if (IS_ERR(tile->sriov.vf.ggtt_balloon[1])) {
> - xe_ggtt_node_fini(tile->sriov.vf.ggtt_balloon[0]);
> - return PTR_ERR(tile->sriov.vf.ggtt_balloon[1]);
> - }
> -
> - return 0;
> -}
> -
> -/**
> - * xe_tile_sriov_vf_balloon_ggtt_locked - Insert balloon nodes to limit used GGTT address range.
> - * @tile: the &xe_tile struct instance
> - *
> - * Return: 0 on success or a negative error code on failure.
> - */
> -int xe_tile_sriov_vf_balloon_ggtt_locked(struct xe_tile *tile)
> -{
> - u64 ggtt_base = xe_gt_sriov_vf_ggtt_base(tile->primary_gt);
> - u64 ggtt_size = xe_gt_sriov_vf_ggtt(tile->primary_gt);
> - struct xe_device *xe = tile_to_xe(tile);
> - u64 wopcm = xe_wopcm_size(xe);
> - u64 start, end;
> - int err;
> -
> - xe_tile_assert(tile, IS_SRIOV_VF(xe));
> - xe_tile_assert(tile, ggtt_size);
> - lockdep_assert_held(&tile->mem.ggtt->lock);
> -
> - /*
> - * VF can only use part of the GGTT as allocated by the PF:
> - *
> - * WOPCM GUC_GGTT_TOP
> - * |<------------ Total GGTT size ------------------>|
> - *
> - * VF GGTT base -->|<- size ->|
> - *
> - * +--------------------+----------+-----------------+
> - * |////////////////////| block |\\\\\\\\\\\\\\\\\|
> - * +--------------------+----------+-----------------+
> - *
> - * |<--- balloon[0] --->|<-- VF -->|<-- balloon[1] ->|
> - */
> -
> - if (ggtt_base < wopcm || ggtt_base > GUC_GGTT_TOP ||
> - ggtt_size > GUC_GGTT_TOP - ggtt_base) {
> - xe_sriov_err(xe, "tile%u: Invalid GGTT configuration: %#llx-%#llx\n",
> - tile->id, ggtt_base, ggtt_base + ggtt_size - 1);
> - return -ERANGE;
> - }
> -
> - start = wopcm;
> - end = ggtt_base;
> - if (end != start) {
> - err = xe_ggtt_node_insert_balloon_locked(tile->sriov.vf.ggtt_balloon[0],
> - start, end);
> - if (err)
> - return err;
> - }
> -
> - start = ggtt_base + ggtt_size;
> - end = GUC_GGTT_TOP;
> - if (end != start) {
> - err = xe_ggtt_node_insert_balloon_locked(tile->sriov.vf.ggtt_balloon[1],
> - start, end);
> - if (err) {
> - xe_ggtt_node_remove_balloon_locked(tile->sriov.vf.ggtt_balloon[0]);
> - return err;
> - }
> - }
> -
> - return 0;
> -}
> -
> -static int vf_balloon_ggtt(struct xe_tile *tile)
> -{
> - struct xe_ggtt *ggtt = tile->mem.ggtt;
> - int err;
> -
> - mutex_lock(&ggtt->lock);
> - err = xe_tile_sriov_vf_balloon_ggtt_locked(tile);
> - mutex_unlock(&ggtt->lock);
> -
> - return err;
> -}
> -
> -/**
> - * xe_tile_sriov_vf_deballoon_ggtt_locked - Remove balloon nodes.
> - * @tile: the &xe_tile struct instance
> - */
> -void xe_tile_sriov_vf_deballoon_ggtt_locked(struct xe_tile *tile)
> -{
> - xe_tile_assert(tile, IS_SRIOV_VF(tile_to_xe(tile)));
> -
> - xe_ggtt_node_remove_balloon_locked(tile->sriov.vf.ggtt_balloon[1]);
> - xe_ggtt_node_remove_balloon_locked(tile->sriov.vf.ggtt_balloon[0]);
> -}
> -
> -static void vf_deballoon_ggtt(struct xe_tile *tile)
> -{
> - mutex_lock(&tile->mem.ggtt->lock);
> - xe_tile_sriov_vf_deballoon_ggtt_locked(tile);
> - mutex_unlock(&tile->mem.ggtt->lock);
> -}
> -
> -static void vf_fini_ggtt_balloons(struct xe_tile *tile)
> -{
> - xe_tile_assert(tile, IS_SRIOV_VF(tile_to_xe(tile)));
> -
> - xe_ggtt_node_fini(tile->sriov.vf.ggtt_balloon[1]);
> - xe_ggtt_node_fini(tile->sriov.vf.ggtt_balloon[0]);
> -}
> -
> -static void cleanup_ggtt(struct drm_device *drm, void *arg)
> -{
> - struct xe_tile *tile = arg;
> -
> - vf_deballoon_ggtt(tile);
> - vf_fini_ggtt_balloons(tile);
> -}
> -
> -/**
> - * xe_tile_sriov_vf_prepare_ggtt - Prepare a VF's GGTT configuration.
> - * @tile: the &xe_tile
> - *
> - * This function is for VF use only.
> - *
> - * Return: 0 on success or a negative error code on failure.
> - */
> -int xe_tile_sriov_vf_prepare_ggtt(struct xe_tile *tile)
> -{
> - struct xe_device *xe = tile_to_xe(tile);
> - int err;
> -
> - err = vf_init_ggtt_balloons(tile);
> - if (err)
> - return err;
> -
> - err = vf_balloon_ggtt(tile);
> - if (err) {
> - vf_fini_ggtt_balloons(tile);
> - return err;
> - }
> -
> - return drmm_add_action_or_reset(&xe->drm, cleanup_ggtt, tile);
> -}
> -
> -/**
> - * DOC: GGTT nodes shifting during VF post-migration recovery
> - *
> - * The first fixup applied to the VF KMD structures as part of post-migration
> - * recovery is shifting nodes within &xe_ggtt instance. The nodes are moved
> - * from range previously assigned to this VF, into newly provisioned area.
> - * The changes include balloons, which are resized accordingly.
> - *
> - * The balloon nodes are there to eliminate unavailable ranges from use: one
> - * reserves the GGTT area below the range for current VF, and another one
> - * reserves area above.
> - *
> - * Below is a GGTT layout of example VF, with a certain address range assigned to
> - * said VF, and inaccessible areas above and below:
> - *
> - * 0 4GiB
> - * |<--------------------------- Total GGTT size ----------------------------->|
> - * WOPCM GUC_TOP
> - * |<-------------- Area mappable by xe_ggtt instance ---------------->|
> - *
> - * +---+---------------------------------+----------+----------------------+---+
> - * |\\\|/////////////////////////////////| VF mem |//////////////////////|\\\|
> - * +---+---------------------------------+----------+----------------------+---+
> - *
> - * Hardware enforced access rules before migration:
> - *
> - * |<------- inaccessible for VF ------->|<VF owned>|<-- inaccessible for VF ->|
> - *
> - * GGTT nodes used for tracking allocations:
> - *
> - * |<---------- balloon ------------>|<- nodes->|<----- balloon ------>|
> - *
> - * After the migration, GGTT area assigned to the VF might have shifted, either
> - * to lower or to higher address. But we expect the total size and extra areas to
> - * be identical, as migration can only happen between matching platforms.
> - * Below is an example of GGTT layout of the VF after migration. Content of the
> - * GGTT for VF has been moved to a new area, and we receive its address from GuC:
> - *
> - * +---+----------------------+----------+---------------------------------+---+
> - * |\\\|//////////////////////| VF mem |/////////////////////////////////|\\\|
> - * +---+----------------------+----------+---------------------------------+---+
> - *
> - * Hardware enforced access rules after migration:
> - *
> - * |<- inaccessible for VF -->|<VF owned>|<------- inaccessible for VF ------->|
> - *
> - * So the VF has a new slice of GGTT assigned, and during migration process, the
> - * memory content was copied to that new area. But the &xe_ggtt nodes are still
> - * tracking allocations using the old addresses. The nodes within VF owned area
> - * have to be shifted, and balloon nodes need to be resized to properly mask out
> - * areas not owned by the VF.
> - *
> - * Fixed &xe_ggtt nodes used for tracking allocations:
> - *
> - * |<------ balloon ------>|<- nodes->|<----------- balloon ----------->|
> - *
> - * Due to use of GPU profiles, we do not expect the old and new GGTT ares to
> - * overlap; but our node shifting will fix addresses properly regardless.
> - */
> -
> -/**
> - * xe_tile_sriov_vf_fixup_ggtt_nodes - Shift GGTT allocations to match assigned range.
> - * @tile: the &xe_tile struct instance
> - * @shift: the shift value
> - *
> - * Since Global GTT is not virtualized, each VF has an assigned range
> - * within the global space. This range might have changed during migration,
> - * which requires all memory addresses pointing to GGTT to be shifted.
> - */
> -void xe_tile_sriov_vf_fixup_ggtt_nodes(struct xe_tile *tile, s64 shift)
> -{
> - struct xe_ggtt *ggtt = tile->mem.ggtt;
> -
> - mutex_lock(&ggtt->lock);
> -
> - xe_tile_sriov_vf_deballoon_ggtt_locked(tile);
> - xe_ggtt_shift_nodes_locked(ggtt, shift);
> - xe_tile_sriov_vf_balloon_ggtt_locked(tile);
> -
> - mutex_unlock(&ggtt->lock);
> -}
> diff --git a/drivers/gpu/drm/xe/xe_tile_sriov_vf.h b/drivers/gpu/drm/xe/xe_tile_sriov_vf.h
> deleted file mode 100644
> index 93eb043171e83..0000000000000
> --- a/drivers/gpu/drm/xe/xe_tile_sriov_vf.h
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -/* SPDX-License-Identifier: MIT */
> -/*
> - * Copyright © 2025 Intel Corporation
> - */
> -
> -#ifndef _XE_TILE_SRIOV_VF_H_
> -#define _XE_TILE_SRIOV_VF_H_
> -
> -#include <linux/types.h>
> -
> -struct xe_tile;
> -
> -int xe_tile_sriov_vf_prepare_ggtt(struct xe_tile *tile);
> -int xe_tile_sriov_vf_balloon_ggtt_locked(struct xe_tile *tile);
> -void xe_tile_sriov_vf_deballoon_ggtt_locked(struct xe_tile *tile);
> -void xe_tile_sriov_vf_fixup_ggtt_nodes(struct xe_tile *tile, s64 shift);
> -
> -#endif
> --
> 2.50.0
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v3 5/6] drm/xe: Convert xe_fb_pin to use a callback for insertion into GGTT
2025-08-19 10:11 [PATCH v3 0/6] drm/xe: Make struct xe_ggtt private Maarten Lankhorst
` (3 preceding siblings ...)
2025-08-19 10:11 ` [PATCH v3 4/6] drm/xe: Rewrite GGTT VF initialisation Maarten Lankhorst
@ 2025-08-19 10:11 ` Maarten Lankhorst
2025-08-19 10:11 ` [PATCH v3 6/6] drm/xe: Move struct xe_ggtt to xe_ggtt.c Maarten Lankhorst
` (5 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Maarten Lankhorst @ 2025-08-19 10:11 UTC (permalink / raw)
To: intel-xe; +Cc: Maarten Lankhorst, Matthew Brost, Juha-Pekka Heikkila
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
The rotation details belong in xe_fb_pin.c, while the operations involving
GGTT belong to xe_ggtt.c. As directly locking xe_ggtt etc results in
exposing all of xe_ggtt details anyway, create a special function that
allocates a ggtt_node, and allow display to populate it using a callback
as a compromise.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
drivers/gpu/drm/xe/display/xe_fb_pin.c | 111 ++++++++++++-------------
drivers/gpu/drm/xe/xe_ggtt.c | 92 ++++++++++++++------
drivers/gpu/drm/xe/xe_ggtt.h | 9 +-
drivers/gpu/drm/xe/xe_ggtt_types.h | 8 +-
4 files changed, 132 insertions(+), 88 deletions(-)
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index f1f8b5ab53ef4..24bb05173fb57 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -171,12 +171,13 @@ static int __xe_pin_fb_vma_dpt(const struct intel_framebuffer *fb,
}
static void
-write_ggtt_rotated(struct xe_bo *bo, struct xe_ggtt *ggtt, u32 *ggtt_ofs, u32 bo_ofs,
+write_ggtt_rotated(struct xe_ggtt *ggtt, u32 *ggtt_ofs,
+ u64 pte_flags,
+ xe_ggtt_set_pte_fn write_pte,
+ struct xe_bo *bo, u32 bo_ofs,
u32 width, u32 height, u32 src_stride, u32 dst_stride)
{
- struct xe_device *xe = xe_bo_device(bo);
u32 column, row;
- u64 pte = ggtt->pt_ops->pte_encode_flags(bo, xe->pat.idx[XE_CACHE_NONE]);
for (column = 0; column < width; column++) {
u32 src_idx = src_stride * (height - 1) + column + bo_ofs;
@@ -184,7 +185,7 @@ write_ggtt_rotated(struct xe_bo *bo, struct xe_ggtt *ggtt, u32 *ggtt_ofs, u32 bo
for (row = 0; row < height; row++) {
u64 addr = xe_bo_addr(bo, src_idx * XE_PAGE_SIZE, XE_PAGE_SIZE);
- ggtt->pt_ops->ggtt_set_pte(ggtt, *ggtt_ofs, pte | addr);
+ write_pte(ggtt, *ggtt_ofs, pte_flags | addr);
*ggtt_ofs += XE_PAGE_SIZE;
src_idx -= src_stride;
}
@@ -194,6 +195,28 @@ write_ggtt_rotated(struct xe_bo *bo, struct xe_ggtt *ggtt, u32 *ggtt_ofs, u32 bo
}
}
+struct fb_rotate_args {
+ const struct i915_gtt_view *view;
+ struct xe_bo *bo;
+};
+
+static void write_ggtt_rotated_node(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+ u64 pte_flags, xe_ggtt_set_pte_fn write_pte, void *data)
+{
+ struct fb_rotate_args *args = data;
+ struct xe_bo *bo = args->bo;
+ const struct intel_rotation_info *rot_info = &args->view->rotated;
+ u32 ggtt_ofs = node->base.start;
+
+ for (u32 i = 0; i < ARRAY_SIZE(rot_info->plane); i++)
+ write_ggtt_rotated(ggtt, &ggtt_ofs, pte_flags, write_pte,
+ bo, rot_info->plane[i].offset,
+ rot_info->plane[i].width,
+ rot_info->plane[i].height,
+ rot_info->plane[i].src_stride,
+ rot_info->plane[i].dst_stride);
+}
+
static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
const struct i915_gtt_view *view,
struct i915_vma *vma,
@@ -204,70 +227,40 @@ static int __xe_pin_fb_vma_ggtt(const struct intel_framebuffer *fb,
struct xe_device *xe = to_xe_device(fb->base.dev);
struct xe_tile *tile0 = xe_device_get_root_tile(xe);
struct xe_ggtt *ggtt = tile0->mem.ggtt;
+ u64 pte, size;
u32 align;
- int ret;
-
- /* TODO: Consider sharing framebuffer mapping?
- * embed i915_vma inside intel_framebuffer
- */
- xe_pm_runtime_get_noresume(xe);
- ret = mutex_lock_interruptible(&ggtt->lock);
- if (ret)
- goto out;
+ int ret = 0;
align = XE_PAGE_SIZE;
- if (xe_bo_is_vram(bo) && ggtt->flags & XE_GGTT_FLAGS_64K)
- align = max_t(u32, align, SZ_64K);
+ if (xe_bo_is_vram(bo) && xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K)
+ align = max(align, SZ_64K);
+ /* Fast case, preallocated GGTT view? */
if (bo->ggtt_node[tile0->id] && view->type == I915_GTT_VIEW_NORMAL) {
vma->node = bo->ggtt_node[tile0->id];
- } else if (view->type == I915_GTT_VIEW_NORMAL) {
- vma->node = xe_ggtt_node_init(ggtt);
- if (IS_ERR(vma->node)) {
- ret = PTR_ERR(vma->node);
- goto out_unlock;
- }
-
- ret = xe_ggtt_node_insert_locked(vma->node, xe_bo_size(bo), align, 0);
- if (ret) {
- xe_ggtt_node_fini(vma->node);
- goto out_unlock;
- }
-
- xe_ggtt_map_bo(ggtt, vma->node, bo, xe->pat.idx[XE_CACHE_NONE]);
- } else {
- u32 i, ggtt_ofs;
- const struct intel_rotation_info *rot_info = &view->rotated;
-
- /* display seems to use tiles instead of bytes here, so convert it back.. */
- u32 size = intel_rotation_info_size(rot_info) * XE_PAGE_SIZE;
-
- vma->node = xe_ggtt_node_init(ggtt);
- if (IS_ERR(vma->node)) {
- ret = PTR_ERR(vma->node);
- goto out_unlock;
- }
-
- ret = xe_ggtt_node_insert_locked(vma->node, size, align, 0);
- if (ret) {
- xe_ggtt_node_fini(vma->node);
- goto out_unlock;
- }
+ return 0;
+ }
- ggtt_ofs = vma->node->base.start;
+ /* TODO: Consider sharing framebuffer mapping?
+ * embed i915_vma inside intel_framebuffer
+ */
+ xe_pm_runtime_get_noresume(xe);
- for (i = 0; i < ARRAY_SIZE(rot_info->plane); i++)
- write_ggtt_rotated(bo, ggtt, &ggtt_ofs,
- rot_info->plane[i].offset,
- rot_info->plane[i].width,
- rot_info->plane[i].height,
- rot_info->plane[i].src_stride,
- rot_info->plane[i].dst_stride);
- }
+ if (view->type == I915_GTT_VIEW_NORMAL)
+ size = xe_bo_size(bo);
+ else
+ /* display uses tiles instead of bytes here, so convert it back.. */
+ size = intel_rotation_info_size(&view->rotated) * XE_PAGE_SIZE;
+
+ pte = xe_ggtt_encode_pte_flags(ggtt, bo, xe->pat.idx[XE_CACHE_NONE]);
+ vma->node = xe_ggtt_node_insert_transform(ggtt, bo, pte,
+ ALIGN(size, align), align,
+ view->type == I915_GTT_VIEW_NORMAL ?
+ NULL : write_ggtt_rotated_node,
+ &(struct fb_rotate_args){view, bo});
+ if (IS_ERR(vma->node))
+ ret = PTR_ERR(vma->node);
-out_unlock:
- mutex_unlock(&ggtt->lock);
-out:
xe_pm_runtime_put(xe);
return ret;
}
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 18bf9fc7fde73..ea5b77a859bfd 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -489,19 +489,7 @@ void xe_ggtt_shift_nodes(struct xe_ggtt *ggtt, s64 shift)
mutex_unlock(&ggtt->lock);
}
-/**
- * xe_ggtt_node_insert_locked - Locked version to insert a &xe_ggtt_node into the GGTT
- * @node: the &xe_ggtt_node to be inserted
- * @size: size of the node
- * @align: alignment constrain of the node
- * @mm_flags: flags to control the node behavior
- *
- * It cannot be called without first having called xe_ggtt_init() once.
- * To be used in cases where ggtt->lock is already taken.
- *
- * Return: 0 on success or a negative error code on failure.
- */
-int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
+static int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
u32 size, u32 align, u32 mm_flags)
{
return drm_mm_insert_node_generic(&node->ggtt->mm, &node->base, size, align, 0,
@@ -538,9 +526,13 @@ int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32 align)
* @ggtt: the &xe_ggtt where the new node will later be inserted/reserved.
*
* This function will allocate the struct %xe_ggtt_node and return its pointer.
- * This struct will then be freed after the node removal upon xe_ggtt_node_remove().
- * Having %xe_ggtt_node struct allocated doesn't mean that the node is already allocated
- * in GGTT. Only xe_ggtt_node_insert() will ensure the node is inserted or reserved in GGTT.
+ * This struct will then be freed after the node removal upon
+ * xe_ggtt_node_remove().
+ *
+ * Having %xe_ggtt_node struct allocated doesn't mean that the node is already
+ * allocated in GGTT. Only xe_ggtt_node_insert() or allocation through
+ * xe_ggtt_node_insert_transform() will ensure the node is inserted or reserved
+ * in GGTT.
*
* Return: A pointer to %xe_ggtt_node struct on success. An ERR_PTR otherwise.
**/
@@ -589,13 +581,12 @@ bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node)
* @ggtt: the &xe_ggtt where node will be mapped
* @node: the &xe_ggtt_node where this BO is mapped
* @bo: the &xe_bo to be mapped
- * @pat_index: Which pat_index to use.
+ * @pte: The pte flags to append.
*/
-void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
- struct xe_bo *bo, u16 pat_index)
+static void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
+ struct xe_bo *bo, u64 pte)
{
-
- u64 start, pte, end;
+ u64 start, end;
struct xe_res_cursor cur;
if (XE_WARN_ON(!node))
@@ -604,7 +595,6 @@ void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
start = node->base.start;
end = start + xe_bo_size(bo);
- pte = ggtt->pt_ops->pte_encode_flags(bo, pat_index);
if (!xe_bo_is_vram(bo) && !xe_bo_is_stolen(bo)) {
xe_assert(xe_bo_device(bo), bo->ttm.ttm);
@@ -634,12 +624,65 @@ void xe_ggtt_map_bo_unlocked(struct xe_ggtt *ggtt, struct xe_bo *bo)
{
u16 cache_mode = bo->flags & XE_BO_FLAG_NEEDS_UC ? XE_CACHE_NONE : XE_CACHE_WB;
u16 pat_index = tile_to_xe(ggtt->tile)->pat.idx[cache_mode];
+ u64 pte;
mutex_lock(&ggtt->lock);
- xe_ggtt_map_bo(ggtt, bo->ggtt_node[ggtt->tile->id], bo, pat_index);
+ pte = ggtt->pt_ops->pte_encode_flags(bo, pat_index);
+ xe_ggtt_map_bo(ggtt, bo->ggtt_node[ggtt->tile->id], bo, pte);
mutex_unlock(&ggtt->lock);
}
+/**
+ * xe_ggtt_node_insert_transform - Insert a newly allocated &xe_ggtt_node into the GGTT
+ * @ggtt: the &xe_ggtt where the node will inserted/reserved.
+ * @bo: The bo to be transformed
+ * @pte_flags: The extra GGTT flags to add to mapping.
+ * @size: size of the node
+ * @align: required alignment for node
+ * @transform: transformation function that will populate the GGTT node, or NULL for linear mapping.
+ * @arg: Extra argument to pass to the transformation function.
+ *
+ * This function allows inserting a GGTT node with a custom transformation function.
+ * This is useful for display to allow inserting rotated framebuffers to GGTT.
+ *
+ * Return: A pointer to %xe_ggtt_node struct on success. An ERR_PTR otherwise.
+ */
+struct xe_ggtt_node *xe_ggtt_node_insert_transform(struct xe_ggtt *ggtt,
+ struct xe_bo *bo, u64 pte_flags,
+ u64 size, u32 align,
+ xe_ggtt_transform_cb transform, void *arg)
+{
+ struct xe_ggtt_node *node;
+ int ret;
+
+ node = xe_ggtt_node_init(ggtt);
+ if (IS_ERR(node))
+ return ERR_CAST(node);
+
+ if (mutex_lock_interruptible(&ggtt->lock) < 0) {
+ ret = -ERESTARTSYS;
+ goto err;
+ }
+
+ ret = xe_ggtt_node_insert_locked(node, size, align, 0);
+ if (ret)
+ goto err_unlock;
+
+ if (transform)
+ transform(ggtt, node, pte_flags, ggtt->pt_ops->ggtt_set_pte, arg);
+ else
+ xe_ggtt_map_bo(ggtt, node, bo, pte_flags);
+
+ mutex_unlock(&ggtt->lock);
+ return node;
+
+err_unlock:
+ mutex_unlock(&ggtt->lock);
+err:
+ xe_ggtt_node_fini(node);
+ return ERR_PTR(ret);
+}
+
static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
u64 start, u64 end)
{
@@ -678,8 +721,9 @@ static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
} else {
u16 cache_mode = bo->flags & XE_BO_FLAG_NEEDS_UC ? XE_CACHE_NONE : XE_CACHE_WB;
u16 pat_index = tile_to_xe(ggtt->tile)->pat.idx[cache_mode];
+ u64 pte = ggtt->pt_ops->pte_encode_flags(bo, pat_index);
- xe_ggtt_map_bo(ggtt, bo->ggtt_node[tile_id], bo, pat_index);
+ xe_ggtt_map_bo(ggtt, bo->ggtt_node[tile_id], bo, pte);
}
mutex_unlock(&ggtt->lock);
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 4241159eae9ad..0ec7d12be8e5b 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -23,12 +23,13 @@ u64 xe_ggtt_start(struct xe_ggtt *ggtt);
u64 xe_ggtt_size(struct xe_ggtt *ggtt);
int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32 align);
-int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
- u32 size, u32 align, u32 mm_flags);
+struct xe_ggtt_node *
+xe_ggtt_node_insert_transform(struct xe_ggtt *ggtt,
+ struct xe_bo *bo, u64 pte,
+ u64 size, u32 align,
+ xe_ggtt_transform_cb transform, void *arg);
void xe_ggtt_node_remove(struct xe_ggtt_node *node, bool invalidate);
bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node);
-void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_ggtt_node *node,
- struct xe_bo *bo, u16 pat_index);
void xe_ggtt_map_bo_unlocked(struct xe_ggtt *ggtt, struct xe_bo *bo);
int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
index a27919302d6b2..f4aa5671cb3e3 100644
--- a/drivers/gpu/drm/xe/xe_ggtt_types.h
+++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
@@ -71,6 +71,11 @@ struct xe_ggtt_node {
bool invalidate_on_remove;
};
+typedef void (*xe_ggtt_set_pte_fn)(struct xe_ggtt *ggtt, u64 addr, u64 pte);
+typedef void (*xe_ggtt_transform_cb)(struct xe_ggtt *ggtt,
+ struct xe_ggtt_node *node,
+ u64 pte_flags,
+ xe_ggtt_set_pte_fn set_pte, void *arg);
/**
* struct xe_ggtt_pt_ops - GGTT Page table operations
* Which can vary from platform to platform.
@@ -78,8 +83,9 @@ struct xe_ggtt_node {
struct xe_ggtt_pt_ops {
/** @pte_encode_flags: Encode PTE flags for a given BO */
u64 (*pte_encode_flags)(struct xe_bo *bo, u16 pat_index);
+
/** @ggtt_set_pte: Directly write into GGTT's PTE */
- void (*ggtt_set_pte)(struct xe_ggtt *ggtt, u64 addr, u64 pte);
+ xe_ggtt_set_pte_fn ggtt_set_pte;
};
#endif
--
2.50.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v3 6/6] drm/xe: Move struct xe_ggtt to xe_ggtt.c
2025-08-19 10:11 [PATCH v3 0/6] drm/xe: Make struct xe_ggtt private Maarten Lankhorst
` (4 preceding siblings ...)
2025-08-19 10:11 ` [PATCH v3 5/6] drm/xe: Convert xe_fb_pin to use a callback for insertion into GGTT Maarten Lankhorst
@ 2025-08-19 10:11 ` Maarten Lankhorst
2025-08-19 14:29 ` ✗ CI.checkpatch: warning for drm/xe: Make struct xe_ggtt private. (rev3) Patchwork
` (4 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Maarten Lankhorst @ 2025-08-19 10:11 UTC (permalink / raw)
To: intel-xe; +Cc: Maarten Lankhorst, Matthew Brost
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
No users left outside of xe_ggtt.c, so we can make the struct private.
This prevents us from accidentally touching it before init.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/xe_ggtt.c | 52 ++++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_ggtt_types.h | 51 -----------------------------
2 files changed, 52 insertions(+), 51 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index ea5b77a859bfd..9d80f09b7f97b 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -66,6 +66,58 @@
* give us the correct placement for free.
*/
+/**
+ * struct xe_ggtt_pt_ops - GGTT Page table operations
+ * Which can vary from platform to platform.
+ */
+struct xe_ggtt_pt_ops {
+ /** @pte_encode_flags: Encode PTE flags for a given BO */
+ u64 (*pte_encode_flags)(struct xe_bo *bo, u16 pat_index);
+
+ /** @ggtt_set_pte: Directly write into GGTT's PTE */
+ xe_ggtt_set_pte_fn ggtt_set_pte;
+};
+
+/**
+ * struct xe_ggtt - Main GGTT struct
+ *
+ * In general, each tile can contains its own Global Graphics Translation Table
+ * (GGTT) instance.
+ */
+struct xe_ggtt {
+ /** @tile: Back pointer to tile where this GGTT belongs */
+ struct xe_tile *tile;
+ /** @start: Start offset of GGTT */
+ u64 start;
+ /** @size: Total usable size of this GGTT */
+ u64 size;
+
+#define XE_GGTT_FLAGS_64K BIT(0)
+ /**
+ * @flags: Flags for this GGTT
+ * Acceptable flags:
+ * - %XE_GGTT_FLAGS_64K - if PTE size is 64K. Otherwise, regular is 4K.
+ */
+ unsigned int flags;
+ /** @scratch: Internal object allocation used as a scratch page */
+ struct xe_bo *scratch;
+ /** @lock: Mutex lock to protect GGTT data */
+ struct mutex lock;
+ /**
+ * @gsm: The iomem pointer to the actual location of the translation
+ * table located in the GSM for easy PTE manipulation
+ */
+ u64 __iomem *gsm;
+ /** @pt_ops: Page Table operations per platform */
+ const struct xe_ggtt_pt_ops *pt_ops;
+ /** @mm: The memory manager used to manage individual GGTT allocations */
+ struct drm_mm mm;
+ /** @access_count: counts GGTT writes */
+ unsigned int access_count;
+ /** @wq: Dedicated unordered work queue to process node removals */
+ struct workqueue_struct *wq;
+};
+
static u64 xelp_ggtt_pte_flags(struct xe_bo *bo, u16 pat_index)
{
u64 pte = XE_PAGE_PRESENT;
diff --git a/drivers/gpu/drm/xe/xe_ggtt_types.h b/drivers/gpu/drm/xe/xe_ggtt_types.h
index f4aa5671cb3e3..4f1fd3c456a3b 100644
--- a/drivers/gpu/drm/xe/xe_ggtt_types.h
+++ b/drivers/gpu/drm/xe/xe_ggtt_types.h
@@ -13,46 +13,6 @@
struct xe_bo;
struct xe_gt;
-/**
- * struct xe_ggtt - Main GGTT struct
- *
- * In general, each tile can contains its own Global Graphics Translation Table
- * (GGTT) instance.
- */
-struct xe_ggtt {
- /** @tile: Back pointer to tile where this GGTT belongs */
- struct xe_tile *tile;
- /** @start: Start offset of GGTT */
- u64 start;
- /** @size: Total usable size of this GGTT */
- u64 size;
-
-#define XE_GGTT_FLAGS_64K BIT(0)
- /**
- * @flags: Flags for this GGTT
- * Acceptable flags:
- * - %XE_GGTT_FLAGS_64K - if PTE size is 64K. Otherwise, regular is 4K.
- */
- unsigned int flags;
- /** @scratch: Internal object allocation used as a scratch page */
- struct xe_bo *scratch;
- /** @lock: Mutex lock to protect GGTT data */
- struct mutex lock;
- /**
- * @gsm: The iomem pointer to the actual location of the translation
- * table located in the GSM for easy PTE manipulation
- */
- u64 __iomem *gsm;
- /** @pt_ops: Page Table operations per platform */
- const struct xe_ggtt_pt_ops *pt_ops;
- /** @mm: The memory manager used to manage individual GGTT allocations */
- struct drm_mm mm;
- /** @access_count: counts GGTT writes */
- unsigned int access_count;
- /** @wq: Dedicated unordered work queue to process node removals */
- struct workqueue_struct *wq;
-};
-
/**
* struct xe_ggtt_node - A node in GGTT.
*
@@ -76,16 +36,5 @@ typedef void (*xe_ggtt_transform_cb)(struct xe_ggtt *ggtt,
struct xe_ggtt_node *node,
u64 pte_flags,
xe_ggtt_set_pte_fn set_pte, void *arg);
-/**
- * struct xe_ggtt_pt_ops - GGTT Page table operations
- * Which can vary from platform to platform.
- */
-struct xe_ggtt_pt_ops {
- /** @pte_encode_flags: Encode PTE flags for a given BO */
- u64 (*pte_encode_flags)(struct xe_bo *bo, u16 pat_index);
-
- /** @ggtt_set_pte: Directly write into GGTT's PTE */
- xe_ggtt_set_pte_fn ggtt_set_pte;
-};
#endif
--
2.50.0
^ permalink raw reply related [flat|nested] 16+ messages in thread* ✗ CI.checkpatch: warning for drm/xe: Make struct xe_ggtt private. (rev3)
2025-08-19 10:11 [PATCH v3 0/6] drm/xe: Make struct xe_ggtt private Maarten Lankhorst
` (5 preceding siblings ...)
2025-08-19 10:11 ` [PATCH v3 6/6] drm/xe: Move struct xe_ggtt to xe_ggtt.c Maarten Lankhorst
@ 2025-08-19 14:29 ` Patchwork
2025-08-19 14:30 ` ✓ CI.KUnit: success " Patchwork
` (3 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-08-19 14:29 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
== Series Details ==
Series: drm/xe: Make struct xe_ggtt private. (rev3)
URL : https://patchwork.freedesktop.org/series/139778/
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
553439844b6500767ce8aef522cfe9fbb7ece541
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 1304e690ced266da6cd7bc7dddea67c8b968ecc5
Author: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Date: Tue Aug 19 12:11:24 2025 +0200
drm/xe: Move struct xe_ggtt to xe_ggtt.c
No users left outside of xe_ggtt.c, so we can make the struct private.
This prevents us from accidentally touching it before init.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
+ /mt/dim checkpatch deb6c5d08f8b84ea7e019b7682631c6375cc17aa drm-intel
9447e6e7b940 drm/xe: Only have a single drmm release action.
3430200a2894 drm/mm: Introduce address space shifting
1e4625ad93c0 drm/xe: Start using ggtt->start in preparation of balloon removal
-:105: CHECK:SPACING: No space is necessary after a cast
#105: FILE: drivers/gpu/drm/xe/xe_ggtt.c:281:
+ ggtt_size = (gsm_size / 8) * (u64) XE_PAGE_SIZE - ggtt_start;
total: 0 errors, 0 warnings, 1 checks, 177 lines checked
96365837692f drm/xe: Rewrite GGTT VF initialisation
-:69: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#69: FILE: drivers/gpu/drm/xe/xe_ggtt.c:288:
+ drm_err(&xe->drm, "tile%u: Invalid GGTT configuration: %#llx-%#llx\n",
+ ggtt->tile->id, ggtt_start, ggtt_start + ggtt_size - 1);
-:291: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#291:
deleted file mode 100644
total: 0 errors, 1 warnings, 1 checks, 240 lines checked
a091c4101ff4 drm/xe: Convert xe_fb_pin to use a callback for insertion into GGTT
-:194: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#194: FILE: drivers/gpu/drm/xe/xe_ggtt.c:493:
+static int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
u32 size, u32 align, u32 mm_flags)
total: 0 errors, 0 warnings, 1 checks, 321 lines checked
1304e690ced2 drm/xe: Move struct xe_ggtt to xe_ggtt.c
-:42: ERROR:CODE_INDENT: code indent should use tabs where possible
#42: FILE: drivers/gpu/drm/xe/xe_ggtt.c:90:
+ /** @start: Start offset of GGTT */$
total: 1 errors, 0 warnings, 0 checks, 120 lines checked
^ permalink raw reply [flat|nested] 16+ messages in thread* ✓ CI.KUnit: success for drm/xe: Make struct xe_ggtt private. (rev3)
2025-08-19 10:11 [PATCH v3 0/6] drm/xe: Make struct xe_ggtt private Maarten Lankhorst
` (6 preceding siblings ...)
2025-08-19 14:29 ` ✗ CI.checkpatch: warning for drm/xe: Make struct xe_ggtt private. (rev3) Patchwork
@ 2025-08-19 14:30 ` Patchwork
2025-08-19 14:45 ` ✗ CI.checksparse: warning " Patchwork
` (2 subsequent siblings)
10 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-08-19 14:30 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
== Series Details ==
Series: drm/xe: Make struct xe_ggtt private. (rev3)
URL : https://patchwork.freedesktop.org/series/139778/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[14:29:19] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:29:23] 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
[14:29:52] Starting KUnit Kernel (1/1)...
[14:29:52] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:29:52] ================== guc_buf (11 subtests) ===================
[14:29:52] [PASSED] test_smallest
[14:29:52] [PASSED] test_largest
[14:29:52] [PASSED] test_granular
[14:29:52] [PASSED] test_unique
[14:29:52] [PASSED] test_overlap
[14:29:52] [PASSED] test_reusable
[14:29:52] [PASSED] test_too_big
[14:29:52] [PASSED] test_flush
[14:29:52] [PASSED] test_lookup
[14:29:52] [PASSED] test_data
[14:29:52] [PASSED] test_class
[14:29:52] ===================== [PASSED] guc_buf =====================
[14:29:52] =================== guc_dbm (7 subtests) ===================
[14:29:52] [PASSED] test_empty
[14:29:52] [PASSED] test_default
[14:29:52] ======================== test_size ========================
[14:29:52] [PASSED] 4
[14:29:52] [PASSED] 8
[14:29:52] [PASSED] 32
[14:29:52] [PASSED] 256
[14:29:52] ==================== [PASSED] test_size ====================
[14:29:52] ======================= test_reuse ========================
[14:29:52] [PASSED] 4
[14:29:52] [PASSED] 8
[14:29:52] [PASSED] 32
[14:29:52] [PASSED] 256
[14:29:52] =================== [PASSED] test_reuse ====================
[14:29:52] =================== test_range_overlap ====================
[14:29:52] [PASSED] 4
[14:29:52] [PASSED] 8
[14:29:52] [PASSED] 32
[14:29:52] [PASSED] 256
[14:29:52] =============== [PASSED] test_range_overlap ================
[14:29:52] =================== test_range_compact ====================
[14:29:52] [PASSED] 4
[14:29:52] [PASSED] 8
[14:29:52] [PASSED] 32
[14:29:52] [PASSED] 256
[14:29:52] =============== [PASSED] test_range_compact ================
[14:29:52] ==================== test_range_spare =====================
[14:29:52] [PASSED] 4
[14:29:52] [PASSED] 8
[14:29:52] [PASSED] 32
[14:29:52] [PASSED] 256
[14:29:52] ================ [PASSED] test_range_spare =================
[14:29:52] ===================== [PASSED] guc_dbm =====================
[14:29:52] =================== guc_idm (6 subtests) ===================
[14:29:52] [PASSED] bad_init
[14:29:52] [PASSED] no_init
[14:29:52] [PASSED] init_fini
[14:29:52] [PASSED] check_used
[14:29:52] [PASSED] check_quota
[14:29:52] [PASSED] check_all
[14:29:52] ===================== [PASSED] guc_idm =====================
[14:29:52] ================== no_relay (3 subtests) ===================
[14:29:52] [PASSED] xe_drops_guc2pf_if_not_ready
[14:29:52] [PASSED] xe_drops_guc2vf_if_not_ready
[14:29:52] [PASSED] xe_rejects_send_if_not_ready
[14:29:52] ==================== [PASSED] no_relay =====================
[14:29:52] ================== pf_relay (14 subtests) ==================
[14:29:52] [PASSED] pf_rejects_guc2pf_too_short
[14:29:52] [PASSED] pf_rejects_guc2pf_too_long
[14:29:52] [PASSED] pf_rejects_guc2pf_no_payload
[14:29:52] [PASSED] pf_fails_no_payload
[14:29:52] [PASSED] pf_fails_bad_origin
[14:29:52] [PASSED] pf_fails_bad_type
[14:29:52] [PASSED] pf_txn_reports_error
[14:29:52] [PASSED] pf_txn_sends_pf2guc
[14:29:52] [PASSED] pf_sends_pf2guc
[14:29:52] [SKIPPED] pf_loopback_nop
[14:29:52] [SKIPPED] pf_loopback_echo
[14:29:52] [SKIPPED] pf_loopback_fail
[14:29:52] [SKIPPED] pf_loopback_busy
[14:29:52] [SKIPPED] pf_loopback_retry
[14:29:52] ==================== [PASSED] pf_relay =====================
[14:29:52] ================== vf_relay (3 subtests) ===================
[14:29:52] [PASSED] vf_rejects_guc2vf_too_short
[14:29:52] [PASSED] vf_rejects_guc2vf_too_long
[14:29:52] [PASSED] vf_rejects_guc2vf_no_payload
[14:29:52] ==================== [PASSED] vf_relay =====================
[14:29:52] ===================== lmtt (1 subtest) =====================
[14:29:52] ======================== test_ops =========================
[14:29:52] [PASSED] 2-level
[14:29:52] [PASSED] multi-level
[14:29:52] ==================== [PASSED] test_ops =====================
[14:29:52] ====================== [PASSED] lmtt =======================
[14:29:52] ================= pf_service (11 subtests) =================
[14:29:52] [PASSED] pf_negotiate_any
[14:29:52] [PASSED] pf_negotiate_base_match
[14:29:52] [PASSED] pf_negotiate_base_newer
[14:29:52] [PASSED] pf_negotiate_base_next
[14:29:52] [SKIPPED] pf_negotiate_base_older
[14:29:52] [PASSED] pf_negotiate_base_prev
[14:29:52] [PASSED] pf_negotiate_latest_match
[14:29:52] [PASSED] pf_negotiate_latest_newer
[14:29:52] [PASSED] pf_negotiate_latest_next
[14:29:52] [SKIPPED] pf_negotiate_latest_older
[14:29:52] [SKIPPED] pf_negotiate_latest_prev
[14:29:52] =================== [PASSED] pf_service ====================
[14:29:52] =================== xe_mocs (2 subtests) ===================
[14:29:52] ================ xe_live_mocs_kernel_kunit ================
[14:29:52] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[14:29:52] ================ xe_live_mocs_reset_kunit =================
[14:29:52] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[14:29:52] ==================== [SKIPPED] xe_mocs =====================
[14:29:52] ================= xe_migrate (2 subtests) ==================
[14:29:52] ================= xe_migrate_sanity_kunit =================
[14:29:52] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[14:29:52] ================== xe_validate_ccs_kunit ==================
[14:29:52] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[14:29:52] =================== [SKIPPED] xe_migrate ===================
[14:29:52] ================== xe_dma_buf (1 subtest) ==================
[14:29:52] ==================== xe_dma_buf_kunit =====================
[14:29:52] ================ [SKIPPED] xe_dma_buf_kunit ================
[14:29:52] =================== [SKIPPED] xe_dma_buf ===================
[14:29:52] ================= xe_bo_shrink (1 subtest) =================
[14:29:52] =================== xe_bo_shrink_kunit ====================
[14:29:52] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[14:29:52] ================== [SKIPPED] xe_bo_shrink ==================
[14:29:52] ==================== xe_bo (2 subtests) ====================
[14:29:52] ================== xe_ccs_migrate_kunit ===================
[14:29:52] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[14:29:52] ==================== xe_bo_evict_kunit ====================
[14:29:52] =============== [SKIPPED] xe_bo_evict_kunit ================
[14:29:52] ===================== [SKIPPED] xe_bo ======================
[14:29:52] ==================== args (11 subtests) ====================
[14:29:52] [PASSED] count_args_test
[14:29:52] [PASSED] call_args_example
[14:29:52] [PASSED] call_args_test
[14:29:52] [PASSED] drop_first_arg_example
[14:29:52] [PASSED] drop_first_arg_test
[14:29:52] [PASSED] first_arg_example
[14:29:52] [PASSED] first_arg_test
[14:29:52] [PASSED] last_arg_example
[14:29:52] [PASSED] last_arg_test
[14:29:52] [PASSED] pick_arg_example
[14:29:52] [PASSED] sep_comma_example
[14:29:52] ====================== [PASSED] args =======================
[14:29:52] =================== xe_pci (3 subtests) ====================
[14:29:52] ==================== check_graphics_ip ====================
[14:29:52] [PASSED] 12.70 Xe_LPG
[14:29:52] [PASSED] 12.71 Xe_LPG
[14:29:52] [PASSED] 12.74 Xe_LPG+
[14:29:52] [PASSED] 20.01 Xe2_HPG
[14:29:52] [PASSED] 20.02 Xe2_HPG
[14:29:52] [PASSED] 20.04 Xe2_LPG
[14:29:52] [PASSED] 30.00 Xe3_LPG
[14:29:52] [PASSED] 30.01 Xe3_LPG
[14:29:52] [PASSED] 30.03 Xe3_LPG
[14:29:52] ================ [PASSED] check_graphics_ip ================
[14:29:52] ===================== check_media_ip ======================
[14:29:52] [PASSED] 13.00 Xe_LPM+
[14:29:52] [PASSED] 13.01 Xe2_HPM
[14:29:52] [PASSED] 20.00 Xe2_LPM
[14:29:52] [PASSED] 30.00 Xe3_LPM
[14:29:52] [PASSED] 30.02 Xe3_LPM
[14:29:52] ================= [PASSED] check_media_ip ==================
[14:29:52] ================= check_platform_gt_count =================
[14:29:52] [PASSED] 0x9A60 (TIGERLAKE)
[14:29:52] [PASSED] 0x9A68 (TIGERLAKE)
[14:29:52] [PASSED] 0x9A70 (TIGERLAKE)
[14:29:52] [PASSED] 0x9A40 (TIGERLAKE)
[14:29:52] [PASSED] 0x9A49 (TIGERLAKE)
[14:29:52] [PASSED] 0x9A59 (TIGERLAKE)
[14:29:52] [PASSED] 0x9A78 (TIGERLAKE)
[14:29:52] [PASSED] 0x9AC0 (TIGERLAKE)
[14:29:52] [PASSED] 0x9AC9 (TIGERLAKE)
[14:29:52] [PASSED] 0x9AD9 (TIGERLAKE)
[14:29:52] [PASSED] 0x9AF8 (TIGERLAKE)
[14:29:52] [PASSED] 0x4C80 (ROCKETLAKE)
[14:29:52] [PASSED] 0x4C8A (ROCKETLAKE)
[14:29:52] [PASSED] 0x4C8B (ROCKETLAKE)
[14:29:52] [PASSED] 0x4C8C (ROCKETLAKE)
[14:29:52] [PASSED] 0x4C90 (ROCKETLAKE)
[14:29:52] [PASSED] 0x4C9A (ROCKETLAKE)
[14:29:52] [PASSED] 0x4680 (ALDERLAKE_S)
[14:29:52] [PASSED] 0x4682 (ALDERLAKE_S)
[14:29:52] [PASSED] 0x4688 (ALDERLAKE_S)
[14:29:52] [PASSED] 0x468A (ALDERLAKE_S)
[14:29:52] [PASSED] 0x468B (ALDERLAKE_S)
[14:29:52] [PASSED] 0x4690 (ALDERLAKE_S)
[14:29:52] [PASSED] 0x4692 (ALDERLAKE_S)
[14:29:52] [PASSED] 0x4693 (ALDERLAKE_S)
[14:29:52] [PASSED] 0x46A0 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46A1 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46A2 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46A3 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46A6 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46A8 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46AA (ALDERLAKE_P)
[14:29:52] [PASSED] 0x462A (ALDERLAKE_P)
[14:29:52] [PASSED] 0x4626 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x4628 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46B0 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46B1 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46B2 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46B3 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46C0 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46C1 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46C2 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46C3 (ALDERLAKE_P)
[14:29:52] [PASSED] 0x46D0 (ALDERLAKE_N)
[14:29:52] [PASSED] 0x46D1 (ALDERLAKE_N)
[14:29:52] [PASSED] 0x46D2 (ALDERLAKE_N)
[14:29:52] [PASSED] 0x46D3 (ALDERLAKE_N)
[14:29:52] [PASSED] 0x46D4 (ALDERLAKE_N)
[14:29:52] [PASSED] 0xA721 (ALDERLAKE_P)
[14:29:52] [PASSED] 0xA7A1 (ALDERLAKE_P)
[14:29:52] [PASSED] 0xA7A9 (ALDERLAKE_P)
[14:29:52] [PASSED] 0xA7AC (ALDERLAKE_P)
[14:29:52] [PASSED] 0xA7AD (ALDERLAKE_P)
[14:29:52] [PASSED] 0xA720 (ALDERLAKE_P)
[14:29:52] [PASSED] 0xA7A0 (ALDERLAKE_P)
[14:29:52] [PASSED] 0xA7A8 (ALDERLAKE_P)
[14:29:52] [PASSED] 0xA7AA (ALDERLAKE_P)
[14:29:52] [PASSED] 0xA7AB (ALDERLAKE_P)
[14:29:52] [PASSED] 0xA780 (ALDERLAKE_S)
[14:29:52] [PASSED] 0xA781 (ALDERLAKE_S)
[14:29:52] [PASSED] 0xA782 (ALDERLAKE_S)
[14:29:52] [PASSED] 0xA783 (ALDERLAKE_S)
[14:29:52] [PASSED] 0xA788 (ALDERLAKE_S)
[14:29:52] [PASSED] 0xA789 (ALDERLAKE_S)
[14:29:52] [PASSED] 0xA78A (ALDERLAKE_S)
[14:29:52] [PASSED] 0xA78B (ALDERLAKE_S)
[14:29:52] [PASSED] 0x4905 (DG1)
[14:29:52] [PASSED] 0x4906 (DG1)
[14:29:52] [PASSED] 0x4907 (DG1)
[14:29:52] [PASSED] 0x4908 (DG1)
[14:29:52] [PASSED] 0x4909 (DG1)
[14:29:52] [PASSED] 0x56C0 (DG2)
[14:29:52] [PASSED] 0x56C2 (DG2)
[14:29:52] [PASSED] 0x56C1 (DG2)
[14:29:52] [PASSED] 0x7D51 (METEORLAKE)
[14:29:52] [PASSED] 0x7DD1 (METEORLAKE)
[14:29:52] [PASSED] 0x7D41 (METEORLAKE)
[14:29:52] [PASSED] 0x7D67 (METEORLAKE)
[14:29:52] [PASSED] 0xB640 (METEORLAKE)
[14:29:52] [PASSED] 0x56A0 (DG2)
[14:29:52] [PASSED] 0x56A1 (DG2)
[14:29:52] [PASSED] 0x56A2 (DG2)
[14:29:52] [PASSED] 0x56BE (DG2)
[14:29:52] [PASSED] 0x56BF (DG2)
[14:29:52] [PASSED] 0x5690 (DG2)
[14:29:52] [PASSED] 0x5691 (DG2)
[14:29:52] [PASSED] 0x5692 (DG2)
[14:29:52] [PASSED] 0x56A5 (DG2)
[14:29:52] [PASSED] 0x56A6 (DG2)
[14:29:52] [PASSED] 0x56B0 (DG2)
[14:29:52] [PASSED] 0x56B1 (DG2)
[14:29:52] [PASSED] 0x56BA (DG2)
[14:29:52] [PASSED] 0x56BB (DG2)
[14:29:52] [PASSED] 0x56BC (DG2)
[14:29:52] [PASSED] 0x56BD (DG2)
[14:29:52] [PASSED] 0x5693 (DG2)
[14:29:52] [PASSED] 0x5694 (DG2)
[14:29:52] [PASSED] 0x5695 (DG2)
[14:29:52] [PASSED] 0x56A3 (DG2)
[14:29:52] [PASSED] 0x56A4 (DG2)
[14:29:52] [PASSED] 0x56B2 (DG2)
[14:29:52] [PASSED] 0x56B3 (DG2)
[14:29:52] [PASSED] 0x5696 (DG2)
[14:29:52] [PASSED] 0x5697 (DG2)
[14:29:52] [PASSED] 0xB69 (PVC)
[14:29:52] [PASSED] 0xB6E (PVC)
[14:29:52] [PASSED] 0xBD4 (PVC)
[14:29:52] [PASSED] 0xBD5 (PVC)
[14:29:52] [PASSED] 0xBD6 (PVC)
[14:29:52] [PASSED] 0xBD7 (PVC)
[14:29:52] [PASSED] 0xBD8 (PVC)
[14:29:52] [PASSED] 0xBD9 (PVC)
[14:29:52] [PASSED] 0xBDA (PVC)
[14:29:52] [PASSED] 0xBDB (PVC)
[14:29:52] [PASSED] 0xBE0 (PVC)
[14:29:52] [PASSED] 0xBE1 (PVC)
[14:29:52] [PASSED] 0xBE5 (PVC)
[14:29:52] [PASSED] 0x7D40 (METEORLAKE)
[14:29:52] [PASSED] 0x7D45 (METEORLAKE)
[14:29:52] [PASSED] 0x7D55 (METEORLAKE)
[14:29:52] [PASSED] 0x7D60 (METEORLAKE)
[14:29:52] [PASSED] 0x7DD5 (METEORLAKE)
[14:29:52] [PASSED] 0x6420 (LUNARLAKE)
[14:29:52] [PASSED] 0x64A0 (LUNARLAKE)
[14:29:52] [PASSED] 0x64B0 (LUNARLAKE)
[14:29:52] [PASSED] 0xE202 (BATTLEMAGE)
[14:29:52] [PASSED] 0xE209 (BATTLEMAGE)
[14:29:52] [PASSED] 0xE20B (BATTLEMAGE)
[14:29:52] [PASSED] 0xE20C (BATTLEMAGE)
[14:29:52] [PASSED] 0xE20D (BATTLEMAGE)
[14:29:52] [PASSED] 0xE210 (BATTLEMAGE)
[14:29:52] [PASSED] 0xE211 (BATTLEMAGE)
[14:29:52] [PASSED] 0xE212 (BATTLEMAGE)
[14:29:52] [PASSED] 0xE216 (BATTLEMAGE)
[14:29:52] [PASSED] 0xE220 (BATTLEMAGE)
[14:29:52] [PASSED] 0xE221 (BATTLEMAGE)
[14:29:52] [PASSED] 0xE222 (BATTLEMAGE)
[14:29:52] [PASSED] 0xE223 (BATTLEMAGE)
[14:29:52] [PASSED] 0xB080 (PANTHERLAKE)
[14:29:52] [PASSED] 0xB081 (PANTHERLAKE)
[14:29:52] [PASSED] 0xB082 (PANTHERLAKE)
[14:29:52] [PASSED] 0xB083 (PANTHERLAKE)
[14:29:52] [PASSED] 0xB084 (PANTHERLAKE)
[14:29:52] [PASSED] 0xB085 (PANTHERLAKE)
[14:29:52] [PASSED] 0xB086 (PANTHERLAKE)
[14:29:52] [PASSED] 0xB087 (PANTHERLAKE)
[14:29:52] [PASSED] 0xB08F (PANTHERLAKE)
[14:29:52] [PASSED] 0xB090 (PANTHERLAKE)
[14:29:52] [PASSED] 0xB0A0 (PANTHERLAKE)
[14:29:52] [PASSED] 0xB0B0 (PANTHERLAKE)
[14:29:52] [PASSED] 0xFD80 (PANTHERLAKE)
[14:29:52] [PASSED] 0xFD81 (PANTHERLAKE)
[14:29:52] ============= [PASSED] check_platform_gt_count =============
[14:29:52] ===================== [PASSED] xe_pci ======================
[14:29:52] =================== xe_rtp (2 subtests) ====================
[14:29:52] =============== xe_rtp_process_to_sr_tests ================
[14:29:52] [PASSED] coalesce-same-reg
[14:29:52] [PASSED] no-match-no-add
[14:29:52] [PASSED] match-or
[14:29:52] [PASSED] match-or-xfail
[14:29:52] [PASSED] no-match-no-add-multiple-rules
[14:29:52] [PASSED] two-regs-two-entries
[14:29:52] [PASSED] clr-one-set-other
[14:29:52] [PASSED] set-field
[14:29:52] [PASSED] conflict-duplicate
[14:29:52] [PASSED] conflict-not-disjoint
[14:29:52] [PASSED] conflict-reg-type
[14:29:52] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[14:29:52] ================== xe_rtp_process_tests ===================
[14:29:52] [PASSED] active1
[14:29:52] [PASSED] active2
[14:29:52] [PASSED] active-inactive
[14:29:52] [PASSED] inactive-active
[14:29:52] [PASSED] inactive-1st_or_active-inactive
[14:29:52] [PASSED] inactive-2nd_or_active-inactive
[14:29:52] [PASSED] inactive-last_or_active-inactive
[14:29:52] [PASSED] inactive-no_or_active-inactive
[14:29:52] ============== [PASSED] xe_rtp_process_tests ===============
[14:29:52] ===================== [PASSED] xe_rtp ======================
[14:29:52] ==================== xe_wa (1 subtest) =====================
[14:29:52] ======================== xe_wa_gt =========================
[14:29:52] [PASSED] TIGERLAKE (B0)
[14:29:52] [PASSED] DG1 (A0)
[14:29:52] [PASSED] DG1 (B0)
[14:29:52] [PASSED] ALDERLAKE_S (A0)
[14:29:52] [PASSED] ALDERLAKE_S (B0)
[14:29:52] [PASSED] ALDERLAKE_S (C0)
[14:29:52] [PASSED] ALDERLAKE_S (D0)
[14:29:52] [PASSED] ALDERLAKE_P (A0)
[14:29:52] [PASSED] ALDERLAKE_P (B0)
[14:29:52] [PASSED] ALDERLAKE_P (C0)
[14:29:52] [PASSED] ALDERLAKE_S_RPLS (D0)
[14:29:52] [PASSED] ALDERLAKE_P_RPLU (E0)
[14:29:52] [PASSED] DG2_G10 (C0)
[14:29:52] [PASSED] DG2_G11 (B1)
[14:29:52] [PASSED] DG2_G12 (A1)
[14:29:52] [PASSED] METEORLAKE (g:A0, m:A0)
[14:29:52] [PASSED] METEORLAKE (g:A0, m:A0)
[14:29:52] [PASSED] METEORLAKE (g:A0, m:A0)
[14:29:52] [PASSED] LUNARLAKE (g:A0, m:A0)
[14:29:52] [PASSED] LUNARLAKE (g:B0, m:A0)
stty: 'standard input': Inappropriate ioctl for device
[14:29:52] [PASSED] BATTLEMAGE (g:A0, m:A1)
[14:29:52] ==================== [PASSED] xe_wa_gt =====================
[14:29:52] ====================== [PASSED] xe_wa ======================
[14:29:52] ============================================================
[14:29:52] Testing complete. Ran 297 tests: passed: 281, skipped: 16
[14:29:53] Elapsed time: 33.844s total, 4.147s configuring, 29.330s building, 0.320s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[14:29:53] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:29:54] 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
[14:30:17] Starting KUnit Kernel (1/1)...
[14:30:17] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:30:17] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[14:30:17] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[14:30:17] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[14:30:17] =========== drm_validate_clone_mode (2 subtests) ===========
[14:30:17] ============== drm_test_check_in_clone_mode ===============
[14:30:17] [PASSED] in_clone_mode
[14:30:17] [PASSED] not_in_clone_mode
[14:30:17] ========== [PASSED] drm_test_check_in_clone_mode ===========
[14:30:17] =============== drm_test_check_valid_clones ===============
[14:30:17] [PASSED] not_in_clone_mode
[14:30:17] [PASSED] valid_clone
[14:30:17] [PASSED] invalid_clone
[14:30:17] =========== [PASSED] drm_test_check_valid_clones ===========
[14:30:17] ============= [PASSED] drm_validate_clone_mode =============
[14:30:17] ============= drm_validate_modeset (1 subtest) =============
[14:30:17] [PASSED] drm_test_check_connector_changed_modeset
[14:30:17] ============== [PASSED] drm_validate_modeset ===============
[14:30:17] ====== drm_test_bridge_get_current_state (2 subtests) ======
[14:30:17] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[14:30:17] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[14:30:17] ======== [PASSED] drm_test_bridge_get_current_state ========
[14:30:17] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[14:30:17] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[14:30:17] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[14:30:17] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[14:30:17] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[14:30:17] ============== drm_bridge_alloc (2 subtests) ===============
[14:30:17] [PASSED] drm_test_drm_bridge_alloc_basic
[14:30:17] [PASSED] drm_test_drm_bridge_alloc_get_put
[14:30:17] ================ [PASSED] drm_bridge_alloc =================
[14:30:17] ================== drm_buddy (7 subtests) ==================
[14:30:17] [PASSED] drm_test_buddy_alloc_limit
[14:30:17] [PASSED] drm_test_buddy_alloc_optimistic
[14:30:17] [PASSED] drm_test_buddy_alloc_pessimistic
[14:30:17] [PASSED] drm_test_buddy_alloc_pathological
[14:30:18] [PASSED] drm_test_buddy_alloc_contiguous
[14:30:18] [PASSED] drm_test_buddy_alloc_clear
[14:30:18] [PASSED] drm_test_buddy_alloc_range_bias
[14:30:18] ==================== [PASSED] drm_buddy ====================
[14:30:18] ============= drm_cmdline_parser (40 subtests) =============
[14:30:18] [PASSED] drm_test_cmdline_force_d_only
[14:30:18] [PASSED] drm_test_cmdline_force_D_only_dvi
[14:30:18] [PASSED] drm_test_cmdline_force_D_only_hdmi
[14:30:18] [PASSED] drm_test_cmdline_force_D_only_not_digital
[14:30:18] [PASSED] drm_test_cmdline_force_e_only
[14:30:18] [PASSED] drm_test_cmdline_res
[14:30:18] [PASSED] drm_test_cmdline_res_vesa
[14:30:18] [PASSED] drm_test_cmdline_res_vesa_rblank
[14:30:18] [PASSED] drm_test_cmdline_res_rblank
[14:30:18] [PASSED] drm_test_cmdline_res_bpp
[14:30:18] [PASSED] drm_test_cmdline_res_refresh
[14:30:18] [PASSED] drm_test_cmdline_res_bpp_refresh
[14:30:18] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[14:30:18] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[14:30:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[14:30:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[14:30:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[14:30:18] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[14:30:18] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[14:30:18] [PASSED] drm_test_cmdline_res_margins_force_on
[14:30:18] [PASSED] drm_test_cmdline_res_vesa_margins
[14:30:18] [PASSED] drm_test_cmdline_name
[14:30:18] [PASSED] drm_test_cmdline_name_bpp
[14:30:18] [PASSED] drm_test_cmdline_name_option
[14:30:18] [PASSED] drm_test_cmdline_name_bpp_option
[14:30:18] [PASSED] drm_test_cmdline_rotate_0
[14:30:18] [PASSED] drm_test_cmdline_rotate_90
[14:30:18] [PASSED] drm_test_cmdline_rotate_180
[14:30:18] [PASSED] drm_test_cmdline_rotate_270
[14:30:18] [PASSED] drm_test_cmdline_hmirror
[14:30:18] [PASSED] drm_test_cmdline_vmirror
[14:30:18] [PASSED] drm_test_cmdline_margin_options
[14:30:18] [PASSED] drm_test_cmdline_multiple_options
[14:30:18] [PASSED] drm_test_cmdline_bpp_extra_and_option
[14:30:18] [PASSED] drm_test_cmdline_extra_and_option
[14:30:18] [PASSED] drm_test_cmdline_freestanding_options
[14:30:18] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[14:30:18] [PASSED] drm_test_cmdline_panel_orientation
[14:30:18] ================ drm_test_cmdline_invalid =================
[14:30:18] [PASSED] margin_only
[14:30:18] [PASSED] interlace_only
[14:30:18] [PASSED] res_missing_x
[14:30:18] [PASSED] res_missing_y
[14:30:18] [PASSED] res_bad_y
[14:30:18] [PASSED] res_missing_y_bpp
[14:30:18] [PASSED] res_bad_bpp
[14:30:18] [PASSED] res_bad_refresh
[14:30:18] [PASSED] res_bpp_refresh_force_on_off
[14:30:18] [PASSED] res_invalid_mode
[14:30:18] [PASSED] res_bpp_wrong_place_mode
[14:30:18] [PASSED] name_bpp_refresh
[14:30:18] [PASSED] name_refresh
[14:30:18] [PASSED] name_refresh_wrong_mode
[14:30:18] [PASSED] name_refresh_invalid_mode
[14:30:18] [PASSED] rotate_multiple
[14:30:18] [PASSED] rotate_invalid_val
[14:30:18] [PASSED] rotate_truncated
[14:30:18] [PASSED] invalid_option
[14:30:18] [PASSED] invalid_tv_option
[14:30:18] [PASSED] truncated_tv_option
[14:30:18] ============ [PASSED] drm_test_cmdline_invalid =============
[14:30:18] =============== drm_test_cmdline_tv_options ===============
[14:30:18] [PASSED] NTSC
[14:30:18] [PASSED] NTSC_443
[14:30:18] [PASSED] NTSC_J
[14:30:18] [PASSED] PAL
[14:30:18] [PASSED] PAL_M
[14:30:18] [PASSED] PAL_N
[14:30:18] [PASSED] SECAM
[14:30:18] [PASSED] MONO_525
[14:30:18] [PASSED] MONO_625
[14:30:18] =========== [PASSED] drm_test_cmdline_tv_options ===========
[14:30:18] =============== [PASSED] drm_cmdline_parser ================
[14:30:18] ========== drmm_connector_hdmi_init (20 subtests) ==========
[14:30:18] [PASSED] drm_test_connector_hdmi_init_valid
[14:30:18] [PASSED] drm_test_connector_hdmi_init_bpc_8
[14:30:18] [PASSED] drm_test_connector_hdmi_init_bpc_10
[14:30:18] [PASSED] drm_test_connector_hdmi_init_bpc_12
[14:30:18] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[14:30:18] [PASSED] drm_test_connector_hdmi_init_bpc_null
[14:30:18] [PASSED] drm_test_connector_hdmi_init_formats_empty
[14:30:18] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[14:30:18] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[14:30:18] [PASSED] supported_formats=0x9 yuv420_allowed=1
[14:30:18] [PASSED] supported_formats=0x9 yuv420_allowed=0
[14:30:18] [PASSED] supported_formats=0x3 yuv420_allowed=1
[14:30:18] [PASSED] supported_formats=0x3 yuv420_allowed=0
[14:30:18] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[14:30:18] [PASSED] drm_test_connector_hdmi_init_null_ddc
[14:30:18] [PASSED] drm_test_connector_hdmi_init_null_product
[14:30:18] [PASSED] drm_test_connector_hdmi_init_null_vendor
[14:30:18] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[14:30:18] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[14:30:18] [PASSED] drm_test_connector_hdmi_init_product_valid
[14:30:18] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[14:30:18] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[14:30:18] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[14:30:18] ========= drm_test_connector_hdmi_init_type_valid =========
[14:30:18] [PASSED] HDMI-A
[14:30:18] [PASSED] HDMI-B
[14:30:18] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[14:30:18] ======== drm_test_connector_hdmi_init_type_invalid ========
[14:30:18] [PASSED] Unknown
[14:30:18] [PASSED] VGA
[14:30:18] [PASSED] DVI-I
[14:30:18] [PASSED] DVI-D
[14:30:18] [PASSED] DVI-A
[14:30:18] [PASSED] Composite
[14:30:18] [PASSED] SVIDEO
[14:30:18] [PASSED] LVDS
[14:30:18] [PASSED] Component
[14:30:18] [PASSED] DIN
[14:30:18] [PASSED] DP
[14:30:18] [PASSED] TV
[14:30:18] [PASSED] eDP
[14:30:18] [PASSED] Virtual
[14:30:18] [PASSED] DSI
[14:30:18] [PASSED] DPI
[14:30:18] [PASSED] Writeback
[14:30:18] [PASSED] SPI
[14:30:18] [PASSED] USB
[14:30:18] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[14:30:18] ============ [PASSED] drmm_connector_hdmi_init =============
[14:30:18] ============= drmm_connector_init (3 subtests) =============
[14:30:18] [PASSED] drm_test_drmm_connector_init
[14:30:18] [PASSED] drm_test_drmm_connector_init_null_ddc
[14:30:18] ========= drm_test_drmm_connector_init_type_valid =========
[14:30:18] [PASSED] Unknown
[14:30:18] [PASSED] VGA
[14:30:18] [PASSED] DVI-I
[14:30:18] [PASSED] DVI-D
[14:30:18] [PASSED] DVI-A
[14:30:18] [PASSED] Composite
[14:30:18] [PASSED] SVIDEO
[14:30:18] [PASSED] LVDS
[14:30:18] [PASSED] Component
[14:30:18] [PASSED] DIN
[14:30:18] [PASSED] DP
[14:30:18] [PASSED] HDMI-A
[14:30:18] [PASSED] HDMI-B
[14:30:18] [PASSED] TV
[14:30:18] [PASSED] eDP
[14:30:18] [PASSED] Virtual
[14:30:18] [PASSED] DSI
[14:30:18] [PASSED] DPI
[14:30:18] [PASSED] Writeback
[14:30:18] [PASSED] SPI
[14:30:18] [PASSED] USB
[14:30:18] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[14:30:18] =============== [PASSED] drmm_connector_init ===============
[14:30:18] ========= drm_connector_dynamic_init (6 subtests) ==========
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_init
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_init_properties
[14:30:18] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[14:30:18] [PASSED] Unknown
[14:30:18] [PASSED] VGA
[14:30:18] [PASSED] DVI-I
[14:30:18] [PASSED] DVI-D
[14:30:18] [PASSED] DVI-A
[14:30:18] [PASSED] Composite
[14:30:18] [PASSED] SVIDEO
[14:30:18] [PASSED] LVDS
[14:30:18] [PASSED] Component
[14:30:18] [PASSED] DIN
[14:30:18] [PASSED] DP
[14:30:18] [PASSED] HDMI-A
[14:30:18] [PASSED] HDMI-B
[14:30:18] [PASSED] TV
[14:30:18] [PASSED] eDP
[14:30:18] [PASSED] Virtual
[14:30:18] [PASSED] DSI
[14:30:18] [PASSED] DPI
[14:30:18] [PASSED] Writeback
[14:30:18] [PASSED] SPI
[14:30:18] [PASSED] USB
[14:30:18] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[14:30:18] ======== drm_test_drm_connector_dynamic_init_name =========
[14:30:18] [PASSED] Unknown
[14:30:18] [PASSED] VGA
[14:30:18] [PASSED] DVI-I
[14:30:18] [PASSED] DVI-D
[14:30:18] [PASSED] DVI-A
[14:30:18] [PASSED] Composite
[14:30:18] [PASSED] SVIDEO
[14:30:18] [PASSED] LVDS
[14:30:18] [PASSED] Component
[14:30:18] [PASSED] DIN
[14:30:18] [PASSED] DP
[14:30:18] [PASSED] HDMI-A
[14:30:18] [PASSED] HDMI-B
[14:30:18] [PASSED] TV
[14:30:18] [PASSED] eDP
[14:30:18] [PASSED] Virtual
[14:30:18] [PASSED] DSI
[14:30:18] [PASSED] DPI
[14:30:18] [PASSED] Writeback
[14:30:18] [PASSED] SPI
[14:30:18] [PASSED] USB
[14:30:18] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[14:30:18] =========== [PASSED] drm_connector_dynamic_init ============
[14:30:18] ==== drm_connector_dynamic_register_early (4 subtests) =====
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[14:30:18] ====== [PASSED] drm_connector_dynamic_register_early =======
[14:30:18] ======= drm_connector_dynamic_register (7 subtests) ========
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[14:30:18] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[14:30:18] ========= [PASSED] drm_connector_dynamic_register ==========
[14:30:18] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[14:30:18] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[14:30:18] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[14:30:18] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[14:30:18] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[14:30:18] ========== drm_test_get_tv_mode_from_name_valid ===========
[14:30:18] [PASSED] NTSC
[14:30:18] [PASSED] NTSC-443
[14:30:18] [PASSED] NTSC-J
[14:30:18] [PASSED] PAL
[14:30:18] [PASSED] PAL-M
[14:30:18] [PASSED] PAL-N
[14:30:18] [PASSED] SECAM
[14:30:18] [PASSED] Mono
[14:30:18] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[14:30:18] [PASSED] drm_test_get_tv_mode_from_name_truncated
[14:30:18] ============ [PASSED] drm_get_tv_mode_from_name ============
[14:30:18] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[14:30:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[14:30:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[14:30:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[14:30:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[14:30:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[14:30:18] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[14:30:18] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[14:30:18] [PASSED] VIC 96
[14:30:18] [PASSED] VIC 97
[14:30:18] [PASSED] VIC 101
[14:30:18] [PASSED] VIC 102
[14:30:18] [PASSED] VIC 106
[14:30:18] [PASSED] VIC 107
[14:30:18] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[14:30:18] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[14:30:18] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[14:30:18] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[14:30:18] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[14:30:18] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[14:30:18] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[14:30:18] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[14:30:18] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[14:30:18] [PASSED] Automatic
[14:30:18] [PASSED] Full
[14:30:18] [PASSED] Limited 16:235
[14:30:18] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[14:30:18] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[14:30:18] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[14:30:18] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[14:30:18] === drm_test_drm_hdmi_connector_get_output_format_name ====
[14:30:18] [PASSED] RGB
[14:30:18] [PASSED] YUV 4:2:0
[14:30:18] [PASSED] YUV 4:2:2
[14:30:18] [PASSED] YUV 4:4:4
[14:30:18] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[14:30:18] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[14:30:18] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[14:30:18] ============= drm_damage_helper (21 subtests) ==============
[14:30:18] [PASSED] drm_test_damage_iter_no_damage
[14:30:18] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[14:30:18] [PASSED] drm_test_damage_iter_no_damage_src_moved
[14:30:18] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[14:30:18] [PASSED] drm_test_damage_iter_no_damage_not_visible
[14:30:18] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[14:30:18] [PASSED] drm_test_damage_iter_no_damage_no_fb
[14:30:18] [PASSED] drm_test_damage_iter_simple_damage
[14:30:18] [PASSED] drm_test_damage_iter_single_damage
[14:30:18] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[14:30:18] [PASSED] drm_test_damage_iter_single_damage_outside_src
[14:30:18] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[14:30:18] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[14:30:18] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[14:30:18] [PASSED] drm_test_damage_iter_single_damage_src_moved
[14:30:18] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[14:30:18] [PASSED] drm_test_damage_iter_damage
[14:30:18] [PASSED] drm_test_damage_iter_damage_one_intersect
[14:30:18] [PASSED] drm_test_damage_iter_damage_one_outside
[14:30:18] [PASSED] drm_test_damage_iter_damage_src_moved
[14:30:18] [PASSED] drm_test_damage_iter_damage_not_visible
[14:30:18] ================ [PASSED] drm_damage_helper ================
[14:30:18] ============== drm_dp_mst_helper (3 subtests) ==============
[14:30:18] ============== drm_test_dp_mst_calc_pbn_mode ==============
[14:30:18] [PASSED] Clock 154000 BPP 30 DSC disabled
[14:30:18] [PASSED] Clock 234000 BPP 30 DSC disabled
[14:30:18] [PASSED] Clock 297000 BPP 24 DSC disabled
[14:30:18] [PASSED] Clock 332880 BPP 24 DSC enabled
[14:30:18] [PASSED] Clock 324540 BPP 24 DSC enabled
[14:30:18] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[14:30:18] ============== drm_test_dp_mst_calc_pbn_div ===============
[14:30:18] [PASSED] Link rate 2000000 lane count 4
[14:30:18] [PASSED] Link rate 2000000 lane count 2
[14:30:18] [PASSED] Link rate 2000000 lane count 1
[14:30:18] [PASSED] Link rate 1350000 lane count 4
[14:30:18] [PASSED] Link rate 1350000 lane count 2
[14:30:18] [PASSED] Link rate 1350000 lane count 1
[14:30:18] [PASSED] Link rate 1000000 lane count 4
[14:30:18] [PASSED] Link rate 1000000 lane count 2
[14:30:18] [PASSED] Link rate 1000000 lane count 1
[14:30:18] [PASSED] Link rate 810000 lane count 4
[14:30:18] [PASSED] Link rate 810000 lane count 2
[14:30:18] [PASSED] Link rate 810000 lane count 1
[14:30:18] [PASSED] Link rate 540000 lane count 4
[14:30:18] [PASSED] Link rate 540000 lane count 2
[14:30:18] [PASSED] Link rate 540000 lane count 1
[14:30:18] [PASSED] Link rate 270000 lane count 4
[14:30:18] [PASSED] Link rate 270000 lane count 2
[14:30:18] [PASSED] Link rate 270000 lane count 1
[14:30:18] [PASSED] Link rate 162000 lane count 4
[14:30:18] [PASSED] Link rate 162000 lane count 2
[14:30:18] [PASSED] Link rate 162000 lane count 1
[14:30:18] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[14:30:18] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[14:30:18] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[14:30:18] [PASSED] DP_POWER_UP_PHY with port number
[14:30:18] [PASSED] DP_POWER_DOWN_PHY with port number
[14:30:18] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[14:30:18] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[14:30:18] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[14:30:18] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[14:30:18] [PASSED] DP_QUERY_PAYLOAD with port number
[14:30:18] [PASSED] DP_QUERY_PAYLOAD with VCPI
[14:30:18] [PASSED] DP_REMOTE_DPCD_READ with port number
[14:30:18] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[14:30:18] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[14:30:18] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[14:30:18] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[14:30:18] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[14:30:18] [PASSED] DP_REMOTE_I2C_READ with port number
[14:30:18] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[14:30:18] [PASSED] DP_REMOTE_I2C_READ with transactions array
[14:30:18] [PASSED] DP_REMOTE_I2C_WRITE with port number
[14:30:18] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[14:30:18] [PASSED] DP_REMOTE_I2C_WRITE with data array
[14:30:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[14:30:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[14:30:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[14:30:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[14:30:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[14:30:18] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[14:30:18] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[14:30:18] ================ [PASSED] drm_dp_mst_helper ================
[14:30:18] ================== drm_exec (7 subtests) ===================
[14:30:18] [PASSED] sanitycheck
[14:30:18] [PASSED] test_lock
[14:30:18] [PASSED] test_lock_unlock
[14:30:18] [PASSED] test_duplicates
[14:30:18] [PASSED] test_prepare
[14:30:18] [PASSED] test_prepare_array
[14:30:18] [PASSED] test_multiple_loops
[14:30:18] ==================== [PASSED] drm_exec =====================
[14:30:18] =========== drm_format_helper_test (17 subtests) ===========
[14:30:18] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[14:30:18] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[14:30:18] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[14:30:18] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[14:30:18] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[14:30:18] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[14:30:18] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[14:30:18] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[14:30:18] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[14:30:18] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[14:30:18] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[14:30:18] ============== drm_test_fb_xrgb8888_to_mono ===============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[14:30:18] ==================== drm_test_fb_swab =====================
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ================ [PASSED] drm_test_fb_swab =================
[14:30:18] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[14:30:18] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[14:30:18] [PASSED] single_pixel_source_buffer
[14:30:18] [PASSED] single_pixel_clip_rectangle
[14:30:18] [PASSED] well_known_colors
[14:30:18] [PASSED] destination_pitch
[14:30:18] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[14:30:18] ================= drm_test_fb_clip_offset =================
[14:30:18] [PASSED] pass through
[14:30:18] [PASSED] horizontal offset
[14:30:18] [PASSED] vertical offset
[14:30:18] [PASSED] horizontal and vertical offset
[14:30:18] [PASSED] horizontal offset (custom pitch)
[14:30:18] [PASSED] vertical offset (custom pitch)
[14:30:18] [PASSED] horizontal and vertical offset (custom pitch)
[14:30:18] ============= [PASSED] drm_test_fb_clip_offset =============
[14:30:18] =================== drm_test_fb_memcpy ====================
[14:30:18] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[14:30:18] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[14:30:18] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[14:30:18] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[14:30:18] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[14:30:18] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[14:30:18] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[14:30:18] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[14:30:18] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[14:30:18] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[14:30:18] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[14:30:18] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[14:30:18] =============== [PASSED] drm_test_fb_memcpy ================
[14:30:18] ============= [PASSED] drm_format_helper_test ==============
[14:30:18] ================= drm_format (18 subtests) =================
[14:30:18] [PASSED] drm_test_format_block_width_invalid
[14:30:18] [PASSED] drm_test_format_block_width_one_plane
[14:30:18] [PASSED] drm_test_format_block_width_two_plane
[14:30:18] [PASSED] drm_test_format_block_width_three_plane
[14:30:18] [PASSED] drm_test_format_block_width_tiled
[14:30:18] [PASSED] drm_test_format_block_height_invalid
[14:30:18] [PASSED] drm_test_format_block_height_one_plane
[14:30:18] [PASSED] drm_test_format_block_height_two_plane
[14:30:18] [PASSED] drm_test_format_block_height_three_plane
[14:30:18] [PASSED] drm_test_format_block_height_tiled
[14:30:18] [PASSED] drm_test_format_min_pitch_invalid
[14:30:18] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[14:30:18] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[14:30:18] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[14:30:18] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[14:30:18] [PASSED] drm_test_format_min_pitch_two_plane
[14:30:18] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[14:30:18] [PASSED] drm_test_format_min_pitch_tiled
[14:30:18] =================== [PASSED] drm_format ====================
[14:30:18] ============== drm_framebuffer (10 subtests) ===============
[14:30:18] ========== drm_test_framebuffer_check_src_coords ==========
[14:30:18] [PASSED] Success: source fits into fb
[14:30:18] [PASSED] Fail: overflowing fb with x-axis coordinate
[14:30:18] [PASSED] Fail: overflowing fb with y-axis coordinate
[14:30:18] [PASSED] Fail: overflowing fb with source width
[14:30:18] [PASSED] Fail: overflowing fb with source height
[14:30:18] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[14:30:18] [PASSED] drm_test_framebuffer_cleanup
[14:30:18] =============== drm_test_framebuffer_create ===============
[14:30:18] [PASSED] ABGR8888 normal sizes
[14:30:18] [PASSED] ABGR8888 max sizes
[14:30:18] [PASSED] ABGR8888 pitch greater than min required
[14:30:18] [PASSED] ABGR8888 pitch less than min required
[14:30:18] [PASSED] ABGR8888 Invalid width
[14:30:18] [PASSED] ABGR8888 Invalid buffer handle
[14:30:18] [PASSED] No pixel format
[14:30:18] [PASSED] ABGR8888 Width 0
[14:30:18] [PASSED] ABGR8888 Height 0
[14:30:18] [PASSED] ABGR8888 Out of bound height * pitch combination
[14:30:18] [PASSED] ABGR8888 Large buffer offset
[14:30:18] [PASSED] ABGR8888 Buffer offset for inexistent plane
[14:30:18] [PASSED] ABGR8888 Invalid flag
[14:30:18] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[14:30:18] [PASSED] ABGR8888 Valid buffer modifier
[14:30:18] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[14:30:18] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[14:30:18] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[14:30:18] [PASSED] NV12 Normal sizes
[14:30:18] [PASSED] NV12 Max sizes
[14:30:18] [PASSED] NV12 Invalid pitch
[14:30:18] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[14:30:18] [PASSED] NV12 different modifier per-plane
[14:30:18] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[14:30:18] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[14:30:18] [PASSED] NV12 Modifier for inexistent plane
[14:30:18] [PASSED] NV12 Handle for inexistent plane
[14:30:18] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[14:30:18] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[14:30:18] [PASSED] YVU420 Normal sizes
[14:30:18] [PASSED] YVU420 Max sizes
[14:30:18] [PASSED] YVU420 Invalid pitch
[14:30:18] [PASSED] YVU420 Different pitches
[14:30:18] [PASSED] YVU420 Different buffer offsets/pitches
[14:30:18] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[14:30:18] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[14:30:18] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[14:30:18] [PASSED] YVU420 Valid modifier
[14:30:18] [PASSED] YVU420 Different modifiers per plane
[14:30:18] [PASSED] YVU420 Modifier for inexistent plane
[14:30:18] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[14:30:18] [PASSED] X0L2 Normal sizes
[14:30:18] [PASSED] X0L2 Max sizes
[14:30:18] [PASSED] X0L2 Invalid pitch
[14:30:18] [PASSED] X0L2 Pitch greater than minimum required
[14:30:18] [PASSED] X0L2 Handle for inexistent plane
[14:30:18] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[14:30:18] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[14:30:18] [PASSED] X0L2 Valid modifier
[14:30:18] [PASSED] X0L2 Modifier for inexistent plane
[14:30:18] =========== [PASSED] drm_test_framebuffer_create ===========
[14:30:18] [PASSED] drm_test_framebuffer_free
[14:30:18] [PASSED] drm_test_framebuffer_init
[14:30:18] [PASSED] drm_test_framebuffer_init_bad_format
[14:30:18] [PASSED] drm_test_framebuffer_init_dev_mismatch
[14:30:18] [PASSED] drm_test_framebuffer_lookup
[14:30:18] [PASSED] drm_test_framebuffer_lookup_inexistent
[14:30:18] [PASSED] drm_test_framebuffer_modifiers_not_supported
[14:30:18] ================= [PASSED] drm_framebuffer =================
[14:30:18] ================ drm_gem_shmem (8 subtests) ================
[14:30:18] [PASSED] drm_gem_shmem_test_obj_create
[14:30:18] [PASSED] drm_gem_shmem_test_obj_create_private
[14:30:18] [PASSED] drm_gem_shmem_test_pin_pages
[14:30:18] [PASSED] drm_gem_shmem_test_vmap
[14:30:18] [PASSED] drm_gem_shmem_test_get_pages_sgt
[14:30:18] [PASSED] drm_gem_shmem_test_get_sg_table
[14:30:18] [PASSED] drm_gem_shmem_test_madvise
[14:30:18] [PASSED] drm_gem_shmem_test_purge
[14:30:18] ================== [PASSED] drm_gem_shmem ==================
[14:30:18] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[14:30:18] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[14:30:18] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[14:30:18] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[14:30:18] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[14:30:18] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[14:30:18] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[14:30:18] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[14:30:18] [PASSED] Automatic
[14:30:18] [PASSED] Full
[14:30:18] [PASSED] Limited 16:235
[14:30:18] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[14:30:18] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[14:30:18] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[14:30:18] [PASSED] drm_test_check_disable_connector
[14:30:18] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[14:30:18] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[14:30:18] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[14:30:18] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[14:30:18] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[14:30:18] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[14:30:18] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[14:30:18] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[14:30:18] [PASSED] drm_test_check_output_bpc_dvi
[14:30:18] [PASSED] drm_test_check_output_bpc_format_vic_1
[14:30:18] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[14:30:18] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[14:30:18] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[14:30:18] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[14:30:18] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[14:30:18] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[14:30:18] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[14:30:18] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[14:30:18] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[14:30:18] [PASSED] drm_test_check_broadcast_rgb_value
[14:30:18] [PASSED] drm_test_check_bpc_8_value
[14:30:18] [PASSED] drm_test_check_bpc_10_value
[14:30:18] [PASSED] drm_test_check_bpc_12_value
[14:30:18] [PASSED] drm_test_check_format_value
[14:30:18] [PASSED] drm_test_check_tmds_char_value
[14:30:18] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[14:30:18] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[14:30:18] [PASSED] drm_test_check_mode_valid
[14:30:18] [PASSED] drm_test_check_mode_valid_reject
[14:30:18] [PASSED] drm_test_check_mode_valid_reject_rate
[14:30:18] [PASSED] drm_test_check_mode_valid_reject_max_clock
[14:30:18] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[14:30:18] ================= drm_managed (2 subtests) =================
[14:30:18] [PASSED] drm_test_managed_release_action
[14:30:18] [PASSED] drm_test_managed_run_action
[14:30:18] =================== [PASSED] drm_managed ===================
[14:30:18] =================== drm_mm (6 subtests) ====================
[14:30:18] [PASSED] drm_test_mm_init
[14:30:18] [PASSED] drm_test_mm_debug
[14:30:18] [PASSED] drm_test_mm_align32
[14:30:18] [PASSED] drm_test_mm_align64
[14:30:18] [PASSED] drm_test_mm_lowest
[14:30:18] [PASSED] drm_test_mm_highest
[14:30:18] ===================== [PASSED] drm_mm ======================
[14:30:18] ============= drm_modes_analog_tv (5 subtests) =============
[14:30:18] [PASSED] drm_test_modes_analog_tv_mono_576i
[14:30:18] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[14:30:18] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[14:30:18] [PASSED] drm_test_modes_analog_tv_pal_576i
[14:30:18] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[14:30:18] =============== [PASSED] drm_modes_analog_tv ===============
[14:30:18] ============== drm_plane_helper (2 subtests) ===============
[14:30:18] =============== drm_test_check_plane_state ================
[14:30:18] [PASSED] clipping_simple
[14:30:18] [PASSED] clipping_rotate_reflect
[14:30:18] [PASSED] positioning_simple
[14:30:18] [PASSED] upscaling
[14:30:18] [PASSED] downscaling
[14:30:18] [PASSED] rounding1
[14:30:18] [PASSED] rounding2
[14:30:18] [PASSED] rounding3
[14:30:18] [PASSED] rounding4
[14:30:18] =========== [PASSED] drm_test_check_plane_state ============
[14:30:18] =========== drm_test_check_invalid_plane_state ============
[14:30:18] [PASSED] positioning_invalid
[14:30:18] [PASSED] upscaling_invalid
[14:30:18] [PASSED] downscaling_invalid
[14:30:18] ======= [PASSED] drm_test_check_invalid_plane_state ========
[14:30:18] ================ [PASSED] drm_plane_helper =================
[14:30:18] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[14:30:18] ====== drm_test_connector_helper_tv_get_modes_check =======
[14:30:18] [PASSED] None
[14:30:18] [PASSED] PAL
[14:30:18] [PASSED] NTSC
[14:30:18] [PASSED] Both, NTSC Default
[14:30:18] [PASSED] Both, PAL Default
[14:30:18] [PASSED] Both, NTSC Default, with PAL on command-line
[14:30:18] [PASSED] Both, PAL Default, with NTSC on command-line
[14:30:18] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[14:30:18] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[14:30:18] ================== drm_rect (9 subtests) ===================
[14:30:18] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[14:30:18] [PASSED] drm_test_rect_clip_scaled_not_clipped
[14:30:18] [PASSED] drm_test_rect_clip_scaled_clipped
[14:30:18] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[14:30:18] ================= drm_test_rect_intersect =================
[14:30:18] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[14:30:18] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[14:30:18] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[14:30:18] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[14:30:18] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[14:30:18] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[14:30:18] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[14:30:18] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[14:30:18] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[14:30:18] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[14:30:18] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[14:30:18] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[14:30:18] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[14:30:18] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[14:30:18] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[14:30:18] ============= [PASSED] drm_test_rect_intersect =============
[14:30:18] ================ drm_test_rect_calc_hscale ================
[14:30:18] [PASSED] normal use
[14:30:18] [PASSED] out of max range
[14:30:18] [PASSED] out of min range
[14:30:18] [PASSED] zero dst
[14:30:18] [PASSED] negative src
[14:30:18] [PASSED] negative dst
[14:30:18] ============ [PASSED] drm_test_rect_calc_hscale ============
[14:30:18] ================ drm_test_rect_calc_vscale ================
[14:30:18] [PASSED] normal use
[14:30:18] [PASSED] out of max range
[14:30:18] [PASSED] out of min range
[14:30:18] [PASSED] zero dst
[14:30:18] [PASSED] negative src
[14:30:18] [PASSED] negative dst
[14:30:18] ============ [PASSED] drm_test_rect_calc_vscale ============
[14:30:18] ================== drm_test_rect_rotate ===================
[14:30:18] [PASSED] reflect-x
[14:30:18] [PASSED] reflect-y
[14:30:18] [PASSED] rotate-0
[14:30:18] [PASSED] rotate-90
[14:30:18] [PASSED] rotate-180
[14:30:18] [PASSED] rotate-270
stty: 'standard input': Inappropriate ioctl for device
[14:30:18] ============== [PASSED] drm_test_rect_rotate ===============
[14:30:18] ================ drm_test_rect_rotate_inv =================
[14:30:18] [PASSED] reflect-x
[14:30:18] [PASSED] reflect-y
[14:30:18] [PASSED] rotate-0
[14:30:18] [PASSED] rotate-90
[14:30:18] [PASSED] rotate-180
[14:30:18] [PASSED] rotate-270
[14:30:18] ============ [PASSED] drm_test_rect_rotate_inv =============
[14:30:18] ==================== [PASSED] drm_rect =====================
[14:30:18] ============ drm_sysfb_modeset_test (1 subtest) ============
[14:30:18] ============ drm_test_sysfb_build_fourcc_list =============
[14:30:18] [PASSED] no native formats
[14:30:18] [PASSED] XRGB8888 as native format
[14:30:18] [PASSED] remove duplicates
[14:30:18] [PASSED] convert alpha formats
[14:30:18] [PASSED] random formats
[14:30:18] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[14:30:18] ============= [PASSED] drm_sysfb_modeset_test ==============
[14:30:18] ============================================================
[14:30:18] Testing complete. Ran 616 tests: passed: 616
[14:30:18] Elapsed time: 24.974s total, 1.730s configuring, 23.025s building, 0.188s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[14:30:18] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[14:30:19] 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
[14:30:27] Starting KUnit Kernel (1/1)...
[14:30:27] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[14:30:27] ================= ttm_device (5 subtests) ==================
[14:30:27] [PASSED] ttm_device_init_basic
[14:30:27] [PASSED] ttm_device_init_multiple
[14:30:27] [PASSED] ttm_device_fini_basic
[14:30:27] [PASSED] ttm_device_init_no_vma_man
[14:30:27] ================== ttm_device_init_pools ==================
[14:30:28] [PASSED] No DMA allocations, no DMA32 required
[14:30:28] [PASSED] DMA allocations, DMA32 required
[14:30:28] [PASSED] No DMA allocations, DMA32 required
[14:30:28] [PASSED] DMA allocations, no DMA32 required
[14:30:28] ============== [PASSED] ttm_device_init_pools ==============
[14:30:28] =================== [PASSED] ttm_device ====================
[14:30:28] ================== ttm_pool (8 subtests) ===================
[14:30:28] ================== ttm_pool_alloc_basic ===================
[14:30:28] [PASSED] One page
[14:30:28] [PASSED] More than one page
[14:30:28] [PASSED] Above the allocation limit
[14:30:28] [PASSED] One page, with coherent DMA mappings enabled
[14:30:28] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[14:30:28] ============== [PASSED] ttm_pool_alloc_basic ===============
[14:30:28] ============== ttm_pool_alloc_basic_dma_addr ==============
[14:30:28] [PASSED] One page
[14:30:28] [PASSED] More than one page
[14:30:28] [PASSED] Above the allocation limit
[14:30:28] [PASSED] One page, with coherent DMA mappings enabled
[14:30:28] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[14:30:28] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[14:30:28] [PASSED] ttm_pool_alloc_order_caching_match
[14:30:28] [PASSED] ttm_pool_alloc_caching_mismatch
[14:30:28] [PASSED] ttm_pool_alloc_order_mismatch
[14:30:28] [PASSED] ttm_pool_free_dma_alloc
[14:30:28] [PASSED] ttm_pool_free_no_dma_alloc
[14:30:28] [PASSED] ttm_pool_fini_basic
[14:30:28] ==================== [PASSED] ttm_pool =====================
[14:30:28] ================ ttm_resource (8 subtests) =================
[14:30:28] ================= ttm_resource_init_basic =================
[14:30:28] [PASSED] Init resource in TTM_PL_SYSTEM
[14:30:28] [PASSED] Init resource in TTM_PL_VRAM
[14:30:28] [PASSED] Init resource in a private placement
[14:30:28] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[14:30:28] ============= [PASSED] ttm_resource_init_basic =============
[14:30:28] [PASSED] ttm_resource_init_pinned
[14:30:28] [PASSED] ttm_resource_fini_basic
[14:30:28] [PASSED] ttm_resource_manager_init_basic
[14:30:28] [PASSED] ttm_resource_manager_usage_basic
[14:30:28] [PASSED] ttm_resource_manager_set_used_basic
[14:30:28] [PASSED] ttm_sys_man_alloc_basic
[14:30:28] [PASSED] ttm_sys_man_free_basic
[14:30:28] ================== [PASSED] ttm_resource ===================
[14:30:28] =================== ttm_tt (15 subtests) ===================
[14:30:28] ==================== ttm_tt_init_basic ====================
[14:30:28] [PASSED] Page-aligned size
[14:30:28] [PASSED] Extra pages requested
[14:30:28] ================ [PASSED] ttm_tt_init_basic ================
[14:30:28] [PASSED] ttm_tt_init_misaligned
[14:30:28] [PASSED] ttm_tt_fini_basic
[14:30:28] [PASSED] ttm_tt_fini_sg
[14:30:28] [PASSED] ttm_tt_fini_shmem
[14:30:28] [PASSED] ttm_tt_create_basic
[14:30:28] [PASSED] ttm_tt_create_invalid_bo_type
[14:30:28] [PASSED] ttm_tt_create_ttm_exists
[14:30:28] [PASSED] ttm_tt_create_failed
[14:30:28] [PASSED] ttm_tt_destroy_basic
[14:30:28] [PASSED] ttm_tt_populate_null_ttm
[14:30:28] [PASSED] ttm_tt_populate_populated_ttm
[14:30:28] [PASSED] ttm_tt_unpopulate_basic
[14:30:28] [PASSED] ttm_tt_unpopulate_empty_ttm
[14:30:28] [PASSED] ttm_tt_swapin_basic
[14:30:28] ===================== [PASSED] ttm_tt ======================
[14:30:28] =================== ttm_bo (14 subtests) ===================
[14:30:28] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[14:30:28] [PASSED] Cannot be interrupted and sleeps
[14:30:28] [PASSED] Cannot be interrupted, locks straight away
[14:30:28] [PASSED] Can be interrupted, sleeps
[14:30:28] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[14:30:28] [PASSED] ttm_bo_reserve_locked_no_sleep
[14:30:28] [PASSED] ttm_bo_reserve_no_wait_ticket
[14:30:28] [PASSED] ttm_bo_reserve_double_resv
[14:30:28] [PASSED] ttm_bo_reserve_interrupted
[14:30:28] [PASSED] ttm_bo_reserve_deadlock
[14:30:28] [PASSED] ttm_bo_unreserve_basic
[14:30:28] [PASSED] ttm_bo_unreserve_pinned
[14:30:28] [PASSED] ttm_bo_unreserve_bulk
[14:30:28] [PASSED] ttm_bo_put_basic
[14:30:28] [PASSED] ttm_bo_put_shared_resv
[14:30:28] [PASSED] ttm_bo_pin_basic
[14:30:28] [PASSED] ttm_bo_pin_unpin_resource
[14:30:28] [PASSED] ttm_bo_multiple_pin_one_unpin
[14:30:28] ===================== [PASSED] ttm_bo ======================
[14:30:28] ============== ttm_bo_validate (21 subtests) ===============
[14:30:28] ============== ttm_bo_init_reserved_sys_man ===============
[14:30:28] [PASSED] Buffer object for userspace
[14:30:28] [PASSED] Kernel buffer object
[14:30:28] [PASSED] Shared buffer object
[14:30:28] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[14:30:28] ============== ttm_bo_init_reserved_mock_man ==============
[14:30:28] [PASSED] Buffer object for userspace
[14:30:28] [PASSED] Kernel buffer object
[14:30:28] [PASSED] Shared buffer object
[14:30:28] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[14:30:28] [PASSED] ttm_bo_init_reserved_resv
[14:30:28] ================== ttm_bo_validate_basic ==================
[14:30:28] [PASSED] Buffer object for userspace
[14:30:28] [PASSED] Kernel buffer object
[14:30:28] [PASSED] Shared buffer object
[14:30:28] ============== [PASSED] ttm_bo_validate_basic ==============
[14:30:28] [PASSED] ttm_bo_validate_invalid_placement
[14:30:28] ============= ttm_bo_validate_same_placement ==============
[14:30:28] [PASSED] System manager
[14:30:28] [PASSED] VRAM manager
[14:30:28] ========= [PASSED] ttm_bo_validate_same_placement ==========
[14:30:28] [PASSED] ttm_bo_validate_failed_alloc
[14:30:28] [PASSED] ttm_bo_validate_pinned
[14:30:28] [PASSED] ttm_bo_validate_busy_placement
[14:30:28] ================ ttm_bo_validate_multihop =================
[14:30:28] [PASSED] Buffer object for userspace
[14:30:28] [PASSED] Kernel buffer object
[14:30:28] [PASSED] Shared buffer object
[14:30:28] ============ [PASSED] ttm_bo_validate_multihop =============
[14:30:28] ========== ttm_bo_validate_no_placement_signaled ==========
[14:30:28] [PASSED] Buffer object in system domain, no page vector
[14:30:28] [PASSED] Buffer object in system domain with an existing page vector
[14:30:28] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[14:30:28] ======== ttm_bo_validate_no_placement_not_signaled ========
[14:30:28] [PASSED] Buffer object for userspace
[14:30:28] [PASSED] Kernel buffer object
[14:30:28] [PASSED] Shared buffer object
[14:30:28] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[14:30:28] [PASSED] ttm_bo_validate_move_fence_signaled
[14:30:28] ========= ttm_bo_validate_move_fence_not_signaled =========
[14:30:28] [PASSED] Waits for GPU
[14:30:28] [PASSED] Tries to lock straight away
[14:30:28] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[14:30:28] [PASSED] ttm_bo_validate_happy_evict
[14:30:28] [PASSED] ttm_bo_validate_all_pinned_evict
[14:30:28] [PASSED] ttm_bo_validate_allowed_only_evict
[14:30:28] [PASSED] ttm_bo_validate_deleted_evict
[14:30:28] [PASSED] ttm_bo_validate_busy_domain_evict
[14:30:28] [PASSED] ttm_bo_validate_evict_gutting
[14:30:28] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[14:30:28] ================= [PASSED] ttm_bo_validate =================
[14:30:28] ============================================================
[14:30:28] Testing complete. Ran 101 tests: passed: 101
[14:30:28] Elapsed time: 9.945s total, 1.715s configuring, 8.014s building, 0.185s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 16+ messages in thread* ✗ CI.checksparse: warning for drm/xe: Make struct xe_ggtt private. (rev3)
2025-08-19 10:11 [PATCH v3 0/6] drm/xe: Make struct xe_ggtt private Maarten Lankhorst
` (7 preceding siblings ...)
2025-08-19 14:30 ` ✓ CI.KUnit: success " Patchwork
@ 2025-08-19 14:45 ` Patchwork
2025-08-19 15:37 ` ✓ Xe.CI.BAT: success " Patchwork
2025-08-20 10:06 ` ✗ Xe.CI.Full: failure " Patchwork
10 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-08-19 14:45 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
== Series Details ==
Series: drm/xe: Make struct xe_ggtt private. (rev3)
URL : https://patchwork.freedesktop.org/series/139778/
State : warning
== Summary ==
+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast deb6c5d08f8b84ea7e019b7682631c6375cc17aa
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_hotplug.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file:
+drivers/gpu/drm/i915/gt/intel_reset.c:1572:12: warning: context imbalance in '_intel_gt_reset_lock' - different lock contexts for basic block
+drivers/gpu/drm/i915/gt/intel_sseu.c:598:17: error: too long token expansion
+drivers/gpu/drm/i915/i915_active.c:1062:16: warning: context imbalance in '__i915_active_fence_set' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: expected struct list_head const *list
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: got struct list_head [noderef] __rcu *pos
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/i915/i915_irq.c:492:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:492:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:500:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:500:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:505:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:505:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:505:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:543:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:543:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:551:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:551:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:556:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:556:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:556:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:600:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:600:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:603:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:603:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:607:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:607:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/intel_uncore.c:1927:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1928:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1929:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1930:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1995:1: warning: context imbalance in 'gen6_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1996:1: warning: context imbalance in 'gen6_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1997:1: warning: context imbalance in 'gen6_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2017:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2018:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2019:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_wakeref.c:146:19: warning: context imbalance in 'wakeref_auto_timeout' - unexpected unlock
+drivers/gpu/drm/ttm/ttm_bo.c:1199:31: warning: symbol 'ttm_swap_ops' was not declared. Should it be static?
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:467:28: expected void volatile [noderef] __iomem *addr
+drivers/gpu/drm/ttm/ttm_bo_util.c:467:28: got void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:467:28: warning: incorrect type in argument 1 (different address spaces)
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 16+ messages in thread* ✓ Xe.CI.BAT: success for drm/xe: Make struct xe_ggtt private. (rev3)
2025-08-19 10:11 [PATCH v3 0/6] drm/xe: Make struct xe_ggtt private Maarten Lankhorst
` (8 preceding siblings ...)
2025-08-19 14:45 ` ✗ CI.checksparse: warning " Patchwork
@ 2025-08-19 15:37 ` Patchwork
2025-08-20 10:06 ` ✗ Xe.CI.Full: failure " Patchwork
10 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-08-19 15:37 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 918 bytes --]
== Series Details ==
Series: drm/xe: Make struct xe_ggtt private. (rev3)
URL : https://patchwork.freedesktop.org/series/139778/
State : success
== Summary ==
CI Bug Log - changes from xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa_BAT -> xe-pw-139778v3_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (11 -> 9)
------------------------------
Missing (2): bat-adlp-vm bat-ptl-vm
Changes
-------
No changes found
Build changes
-------------
* IGT: IGT_8497 -> IGT_8498
* Linux: xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa -> xe-pw-139778v3
IGT_8497: 8497
IGT_8498: 8498
xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa: deb6c5d08f8b84ea7e019b7682631c6375cc17aa
xe-pw-139778v3: 139778v3
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/index.html
[-- Attachment #2: Type: text/html, Size: 1480 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread* ✗ Xe.CI.Full: failure for drm/xe: Make struct xe_ggtt private. (rev3)
2025-08-19 10:11 [PATCH v3 0/6] drm/xe: Make struct xe_ggtt private Maarten Lankhorst
` (9 preceding siblings ...)
2025-08-19 15:37 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2025-08-20 10:06 ` Patchwork
10 siblings, 0 replies; 16+ messages in thread
From: Patchwork @ 2025-08-20 10:06 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 73296 bytes --]
== Series Details ==
Series: drm/xe: Make struct xe_ggtt private. (rev3)
URL : https://patchwork.freedesktop.org/series/139778/
State : failure
== Summary ==
CI Bug Log - changes from xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa_FULL -> xe-pw-139778v3_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-139778v3_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-139778v3_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-139778v3_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_exec_compute_mode@many-execqueues-bindexecqueue-rebind:
- shard-lnl: [PASS][1] -> [FAIL][2] +3 other tests fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-lnl-5/igt@xe_exec_compute_mode@many-execqueues-bindexecqueue-rebind.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-8/igt@xe_exec_compute_mode@many-execqueues-bindexecqueue-rebind.html
* igt@xe_exec_fault_mode@many-bindexecqueue-userptr-rebind-imm:
- shard-bmg: [PASS][3] -> [FAIL][4] +2 other tests fail
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-8/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-rebind-imm.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@xe_exec_fault_mode@many-bindexecqueue-userptr-rebind-imm.html
Known issues
------------
Here are the changes found in xe-pw-139778v3_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_async_flips@alternate-sync-async-flip:
- shard-adlp: [PASS][5] -> [FAIL][6] ([Intel XE#827]) +3 other tests fail
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-3/igt@kms_async_flips@alternate-sync-async-flip.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-3/igt@kms_async_flips@alternate-sync-async-flip.html
- shard-bmg: [PASS][7] -> [FAIL][8] ([Intel XE#827]) +3 other tests fail
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-6/igt@kms_async_flips@alternate-sync-async-flip.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_async_flips@alternate-sync-async-flip.html
* igt@kms_big_fb@linear-32bpp-rotate-270:
- shard-dg2-set2: NOTRUN -> [SKIP][9] ([Intel XE#316])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-432/igt@kms_big_fb@linear-32bpp-rotate-270.html
* igt@kms_big_fb@x-tiled-8bpp-rotate-90:
- shard-lnl: NOTRUN -> [SKIP][10] ([Intel XE#1407])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-7/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#2327])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-4/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-lnl: [PASS][12] -> [FAIL][13] ([Intel XE#1231])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-lnl-7/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-4/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
- shard-adlp: NOTRUN -> [DMESG-FAIL][14] ([Intel XE#4543])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-4/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip.html
* igt@kms_big_fb@y-tiled-16bpp-rotate-180:
- shard-lnl: NOTRUN -> [SKIP][15] ([Intel XE#1124])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-5/igt@kms_big_fb@y-tiled-16bpp-rotate-180.html
* igt@kms_big_fb@yf-tiled-addfb:
- shard-adlp: NOTRUN -> [SKIP][16] ([Intel XE#619])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-4/igt@kms_big_fb@yf-tiled-addfb.html
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#2328]) +1 other test skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-2/igt@kms_big_fb@yf-tiled-addfb.html
- shard-dg2-set2: NOTRUN -> [SKIP][18] ([Intel XE#619])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-463/igt@kms_big_fb@yf-tiled-addfb.html
- shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#1467]) +1 other test skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-5/igt@kms_big_fb@yf-tiled-addfb.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#1124]) +6 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-7/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
- shard-dg2-set2: NOTRUN -> [SKIP][21] ([Intel XE#1124]) +5 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-435/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p:
- shard-dg2-set2: NOTRUN -> [SKIP][22] ([Intel XE#2191]) +2 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-433/igt@kms_bw@connected-linear-tiling-4-displays-3840x2160p.html
* igt@kms_bw@linear-tiling-1-displays-2160x1440p:
- shard-adlp: NOTRUN -> [SKIP][23] ([Intel XE#367])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-8/igt@kms_bw@linear-tiling-1-displays-2160x1440p.html
- shard-dg2-set2: NOTRUN -> [SKIP][24] ([Intel XE#367])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-433/igt@kms_bw@linear-tiling-1-displays-2160x1440p.html
* igt@kms_bw@linear-tiling-2-displays-2160x1440p:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#367])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-3/igt@kms_bw@linear-tiling-2-displays-2160x1440p.html
* igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-6:
- shard-dg2-set2: NOTRUN -> [SKIP][26] ([Intel XE#787]) +202 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-435/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc@pipe-a-hdmi-a-6.html
* igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs:
- shard-lnl: NOTRUN -> [SKIP][27] ([Intel XE#2887]) +2 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-8/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs.html
* igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs@pipe-c-edp-1:
- shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#2669]) +3 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-7/igt@kms_ccs@crc-primary-basic-4-tiled-bmg-ccs@pipe-c-edp-1.html
* igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs:
- shard-adlp: NOTRUN -> [SKIP][29] ([Intel XE#455] / [Intel XE#787]) +3 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-2/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs.html
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#2887]) +7 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-2/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs.html
* igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs@pipe-c-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][31] ([Intel XE#787]) +5 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-2/igt@kms_ccs@crc-primary-rotation-180-y-tiled-gen12-rc-ccs@pipe-c-hdmi-a-1.html
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#2652] / [Intel XE#787]) +12 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-7/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2.html
* igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-d-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][33] ([Intel XE#455] / [Intel XE#787]) +34 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-434/igt@kms_ccs@random-ccs-data-yf-tiled-ccs@pipe-d-dp-4.html
* igt@kms_chamelium_color@degamma:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#2325]) +2 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@kms_chamelium_color@degamma.html
- shard-adlp: NOTRUN -> [SKIP][35] ([Intel XE#306])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-1/igt@kms_chamelium_color@degamma.html
- shard-dg2-set2: NOTRUN -> [SKIP][36] ([Intel XE#306]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-433/igt@kms_chamelium_color@degamma.html
- shard-lnl: NOTRUN -> [SKIP][37] ([Intel XE#306]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-3/igt@kms_chamelium_color@degamma.html
* igt@kms_chamelium_hpd@common-hpd-after-suspend:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#2252]) +3 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
- shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#373])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-4/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
- shard-adlp: NOTRUN -> [SKIP][40] ([Intel XE#373])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-8/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
* igt@kms_chamelium_hpd@dp-hpd-fast:
- shard-dg2-set2: NOTRUN -> [SKIP][41] ([Intel XE#373]) +3 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-464/igt@kms_chamelium_hpd@dp-hpd-fast.html
* igt@kms_content_protection@lic-type-0@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][42] ([Intel XE#1178])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-8/igt@kms_content_protection@lic-type-0@pipe-a-dp-2.html
* igt@kms_content_protection@uevent@pipe-a-dp-2:
- shard-dg2-set2: NOTRUN -> [FAIL][43] ([Intel XE#1188])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-432/igt@kms_content_protection@uevent@pipe-a-dp-2.html
* igt@kms_cursor_crc@cursor-offscreen-32x10:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#2320]) +1 other test skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-2/igt@kms_cursor_crc@cursor-offscreen-32x10.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-dg2-set2: NOTRUN -> [SKIP][45] ([Intel XE#308])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-435/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-rapid-movement-128x42:
- shard-lnl: NOTRUN -> [SKIP][46] ([Intel XE#1424])
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-5/igt@kms_cursor_crc@cursor-rapid-movement-128x42.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
- shard-bmg: [PASS][47] -> [SKIP][48] ([Intel XE#2291])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-8/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
- shard-adlp: NOTRUN -> [SKIP][49] ([Intel XE#309])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-2/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size:
- shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#2291])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@cursorb-vs-flipb-toggle:
- shard-lnl: NOTRUN -> [SKIP][51] ([Intel XE#309]) +1 other test skip
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-3/igt@kms_cursor_legacy@cursorb-vs-flipb-toggle.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [PASS][52] -> [FAIL][53] ([Intel XE#1475])
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-6/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-1/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_cursor_legacy@torture-bo:
- shard-bmg: [PASS][54] -> [DMESG-WARN][55] ([Intel XE#5354]) +2 other tests dmesg-warn
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-5/igt@kms_cursor_legacy@torture-bo.html
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-7/igt@kms_cursor_legacy@torture-bo.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc:
- shard-bmg: [PASS][56] -> [SKIP][57] ([Intel XE#1340])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-8/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_dither@fb-8bpc-vs-panel-6bpc.html
* igt@kms_dp_link_training@uhbr-mst:
- shard-lnl: NOTRUN -> [SKIP][58] ([Intel XE#4354])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-3/igt@kms_dp_link_training@uhbr-mst.html
- shard-adlp: NOTRUN -> [SKIP][59] ([Intel XE#4356])
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-6/igt@kms_dp_link_training@uhbr-mst.html
- shard-bmg: NOTRUN -> [SKIP][60] ([Intel XE#4354])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@kms_dp_link_training@uhbr-mst.html
- shard-dg2-set2: NOTRUN -> [SKIP][61] ([Intel XE#4356])
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-435/igt@kms_dp_link_training@uhbr-mst.html
* igt@kms_dsc@dsc-with-output-formats:
- shard-bmg: NOTRUN -> [SKIP][62] ([Intel XE#2244])
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_dsc@dsc-with-output-formats.html
- shard-lnl: NOTRUN -> [SKIP][63] ([Intel XE#2244])
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-8/igt@kms_dsc@dsc-with-output-formats.html
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests:
- shard-bmg: NOTRUN -> [SKIP][64] ([Intel XE#4422])
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-3/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-bmg: NOTRUN -> [SKIP][65] ([Intel XE#5425])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_fbcon_fbt@psr:
- shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#776])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@kms_fbcon_fbt@psr.html
* igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3:
- shard-bmg: [PASS][67] -> [FAIL][68] ([Intel XE#3321]) +1 other test fail
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-1/igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3.html
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-7/igt@kms_flip@2x-flip-vs-expired-vblank@ac-dp2-hdmi-a3.html
* igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
- shard-bmg: NOTRUN -> [SKIP][69] ([Intel XE#2316])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
- shard-lnl: NOTRUN -> [SKIP][70] ([Intel XE#1421]) +1 other test skip
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-4/igt@kms_flip@2x-plain-flip-fb-recreate-interruptible.html
* igt@kms_flip@2x-plain-flip-interruptible:
- shard-bmg: [PASS][71] -> [SKIP][72] ([Intel XE#2316]) +4 other tests skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-5/igt@kms_flip@2x-plain-flip-interruptible.html
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_flip@2x-plain-flip-interruptible.html
* igt@kms_flip@2x-wf_vblank-ts-check-interruptible:
- shard-adlp: NOTRUN -> [SKIP][73] ([Intel XE#310])
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-4/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html
* igt@kms_flip@basic-plain-flip@b-hdmi-a1:
- shard-adlp: [PASS][74] -> [DMESG-WARN][75] ([Intel XE#4543]) +7 other tests dmesg-warn
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-4/igt@kms_flip@basic-plain-flip@b-hdmi-a1.html
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-3/igt@kms_flip@basic-plain-flip@b-hdmi-a1.html
* igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a1:
- shard-adlp: [PASS][76] -> [DMESG-WARN][77] ([Intel XE#2953] / [Intel XE#4173]) +1 other test dmesg-warn
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-8/igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a1.html
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-3/igt@kms_flip@flip-vs-suspend-interruptible@c-hdmi-a1.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode:
- shard-bmg: NOTRUN -> [SKIP][78] ([Intel XE#2293]) +2 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling:
- shard-lnl: NOTRUN -> [SKIP][79] ([Intel XE#1397] / [Intel XE#1745])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][80] ([Intel XE#1397])
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-linear-to-64bpp-linear-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-upscaling:
- shard-lnl: NOTRUN -> [FAIL][81] ([Intel XE#4683]) +3 other tests fail
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-3/igt@kms_flip_scaled_crc@flip-32bpp-xtile-to-64bpp-xtile-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][82] ([Intel XE#1401] / [Intel XE#1745])
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][83] ([Intel XE#1401])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-downscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
- shard-bmg: NOTRUN -> [SKIP][84] ([Intel XE#2380]) +1 other test skip
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
- shard-bmg: NOTRUN -> [SKIP][85] ([Intel XE#2293] / [Intel XE#2380]) +2 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode:
- shard-adlp: [PASS][86] -> [DMESG-FAIL][87] ([Intel XE#4543] / [Intel XE#4921]) +3 other tests dmesg-fail
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode.html
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-plflip-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][88] ([Intel XE#651]) +10 other tests skip
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-436/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-plflip-blt:
- shard-lnl: NOTRUN -> [SKIP][89] ([Intel XE#656]) +5 other tests skip
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-4/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary:
- shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#651]) +5 other tests skip
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-2/igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary.html
* igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
- shard-adlp: [PASS][91] -> [DMESG-FAIL][92] ([Intel XE#4543]) +8 other tests dmesg-fail
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-4/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt:
- shard-bmg: NOTRUN -> [SKIP][93] ([Intel XE#5390]) +8 other tests skip
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][94] ([Intel XE#2312]) +5 other tests skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-onoff:
- shard-adlp: NOTRUN -> [SKIP][95] ([Intel XE#651]) +2 other tests skip
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-4/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-onoff.html
- shard-bmg: NOTRUN -> [SKIP][96] ([Intel XE#2311]) +12 other tests skip
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrs-1p-primscrn-cur-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-blt:
- shard-adlp: NOTRUN -> [SKIP][97] ([Intel XE#656]) +3 other tests skip
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-8/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-linear:
- shard-dg2-set2: NOTRUN -> [SKIP][98] ([Intel XE#653]) +16 other tests skip
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcpsr-tiling-linear.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][99] ([Intel XE#2313]) +14 other tests skip
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render:
- shard-adlp: NOTRUN -> [SKIP][100] ([Intel XE#653]) +2 other tests skip
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render.html
* igt@kms_hdr@static-toggle:
- shard-bmg: [PASS][101] -> [SKIP][102] ([Intel XE#1503])
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-5/igt@kms_hdr@static-toggle.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_hdr@static-toggle.html
* igt@kms_invalid_mode@clock-too-high@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][103] ([Intel XE#1450]) +1 other test skip
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-8/igt@kms_invalid_mode@clock-too-high@pipe-a-edp-1.html
* igt@kms_invalid_mode@clock-too-high@pipe-c-edp-1:
- shard-lnl: NOTRUN -> [SKIP][104] ([Intel XE#1450] / [Intel XE#2568]) +1 other test skip
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-8/igt@kms_invalid_mode@clock-too-high@pipe-c-edp-1.html
* igt@kms_joiner@basic-force-big-joiner:
- shard-bmg: [PASS][105] -> [SKIP][106] ([Intel XE#3012])
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-1/igt@kms_joiner@basic-force-big-joiner.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_joiner@basic-force-big-joiner.html
* igt@kms_joiner@basic-ultra-joiner:
- shard-dg2-set2: NOTRUN -> [SKIP][107] ([Intel XE#2927])
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-434/igt@kms_joiner@basic-ultra-joiner.html
* igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
- shard-bmg: NOTRUN -> [SKIP][108] ([Intel XE#4090])
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-8/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-bmg: NOTRUN -> [SKIP][109] ([Intel XE#2501])
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-2/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
- shard-dg2-set2: NOTRUN -> [SKIP][110] ([Intel XE#356])
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-463/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_pipe_stress@stress-xrgb8888-ytiled:
- shard-bmg: NOTRUN -> [SKIP][111] ([Intel XE#4329])
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-4/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html
* igt@kms_plane_multiple@2x-tiling-none:
- shard-lnl: NOTRUN -> [SKIP][112] ([Intel XE#4596])
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-4/igt@kms_plane_multiple@2x-tiling-none.html
- shard-adlp: NOTRUN -> [SKIP][113] ([Intel XE#4596])
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-8/igt@kms_plane_multiple@2x-tiling-none.html
- shard-bmg: NOTRUN -> [SKIP][114] ([Intel XE#4596])
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-none.html
* igt@kms_plane_multiple@2x-tiling-x:
- shard-bmg: [PASS][115] -> [SKIP][116] ([Intel XE#4596])
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-5/igt@kms_plane_multiple@2x-tiling-x.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-x.html
* igt@kms_pm_dc@dc5-dpms:
- shard-lnl: [PASS][117] -> [FAIL][118] ([Intel XE#718]) +1 other test fail
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-lnl-2/igt@kms_pm_dc@dc5-dpms.html
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-1/igt@kms_pm_dc@dc5-dpms.html
* igt@kms_pm_dc@dc5-retention-flops:
- shard-dg2-set2: NOTRUN -> [SKIP][119] ([Intel XE#3309])
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-433/igt@kms_pm_dc@dc5-retention-flops.html
- shard-bmg: NOTRUN -> [SKIP][120] ([Intel XE#3309])
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@kms_pm_dc@dc5-retention-flops.html
* igt@kms_pm_lpsp@kms-lpsp:
- shard-bmg: NOTRUN -> [SKIP][121] ([Intel XE#2499])
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_pm_lpsp@kms-lpsp.html
* igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf:
- shard-adlp: NOTRUN -> [SKIP][122] ([Intel XE#1489] / [Intel XE#5899]) +1 other test skip
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-1/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf.html
- shard-bmg: NOTRUN -> [SKIP][123] ([Intel XE#1489] / [Intel XE#5899]) +4 other tests skip
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-1/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-lnl: NOTRUN -> [SKIP][124] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#5899])
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1:
- shard-lnl: NOTRUN -> [SKIP][125] ([Intel XE#4608] / [Intel XE#5899]) +2 other tests skip
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-1/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-exceed-fully-sf@pipe-b-edp-1.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf:
- shard-dg2-set2: NOTRUN -> [SKIP][126] ([Intel XE#1489] / [Intel XE#5899]) +5 other tests skip
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-466/igt@kms_psr2_sf@fbc-psr2-overlay-plane-update-continuous-sf.html
* igt@kms_psr2_sf@pr-plane-move-sf-dmg-area:
- shard-lnl: NOTRUN -> [SKIP][127] ([Intel XE#2893] / [Intel XE#5899]) +1 other test skip
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-5/igt@kms_psr2_sf@pr-plane-move-sf-dmg-area.html
* igt@kms_psr2_su@page_flip-nv12:
- shard-dg2-set2: NOTRUN -> [SKIP][128] ([Intel XE#1122] / [Intel XE#5899]) +1 other test skip
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-463/igt@kms_psr2_su@page_flip-nv12.html
* igt@kms_psr2_su@page_flip-p010:
- shard-bmg: NOTRUN -> [SKIP][129] ([Intel XE#2387] / [Intel XE#5899]) +1 other test skip
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-2/igt@kms_psr2_su@page_flip-p010.html
- shard-lnl: NOTRUN -> [SKIP][130] ([Intel XE#1128] / [Intel XE#5899])
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-5/igt@kms_psr2_su@page_flip-p010.html
* igt@kms_psr@fbc-pr-cursor-blt:
- shard-bmg: NOTRUN -> [SKIP][131] ([Intel XE#2234] / [Intel XE#2850] / [Intel XE#5899]) +7 other tests skip
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_psr@fbc-pr-cursor-blt.html
* igt@kms_psr@fbc-psr2-cursor-blt:
- shard-lnl: NOTRUN -> [SKIP][132] ([Intel XE#5784] / [Intel XE#5899])
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-7/igt@kms_psr@fbc-psr2-cursor-blt.html
* igt@kms_psr@fbc-psr2-dpms:
- shard-dg2-set2: NOTRUN -> [SKIP][133] ([Intel XE#2850] / [Intel XE#5899] / [Intel XE#929]) +6 other tests skip
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-433/igt@kms_psr@fbc-psr2-dpms.html
* igt@kms_psr@pr-primary-blt:
- shard-lnl: NOTRUN -> [SKIP][134] ([Intel XE#1406] / [Intel XE#5899])
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-7/igt@kms_psr@pr-primary-blt.html
* igt@kms_psr@psr2-sprite-blt:
- shard-adlp: NOTRUN -> [SKIP][135] ([Intel XE#2850] / [Intel XE#5899] / [Intel XE#929]) +2 other tests skip
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-3/igt@kms_psr@psr2-sprite-blt.html
* igt@kms_rotation_crc@primary-rotation-90:
- shard-bmg: NOTRUN -> [SKIP][136] ([Intel XE#3414] / [Intel XE#3904])
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@kms_rotation_crc@primary-rotation-90.html
- shard-dg2-set2: NOTRUN -> [SKIP][137] ([Intel XE#3414])
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-433/igt@kms_rotation_crc@primary-rotation-90.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
- shard-bmg: NOTRUN -> [SKIP][138] ([Intel XE#2330])
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
- shard-lnl: NOTRUN -> [SKIP][139] ([Intel XE#3414] / [Intel XE#3904])
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-8/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html
* igt@kms_setmode@basic:
- shard-bmg: [PASS][140] -> [FAIL][141] ([Intel XE#2883]) +6 other tests fail
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-3/igt@kms_setmode@basic.html
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-7/igt@kms_setmode@basic.html
* igt@kms_setmode@basic@pipe-b-edp-1:
- shard-lnl: [PASS][142] -> [FAIL][143] ([Intel XE#2883]) +2 other tests fail
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-lnl-7/igt@kms_setmode@basic@pipe-b-edp-1.html
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-2/igt@kms_setmode@basic@pipe-b-edp-1.html
* igt@kms_setmode@invalid-clone-single-crtc:
- shard-lnl: NOTRUN -> [SKIP][144] ([Intel XE#1435])
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-3/igt@kms_setmode@invalid-clone-single-crtc.html
- shard-adlp: NOTRUN -> [SKIP][145] ([Intel XE#455])
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-3/igt@kms_setmode@invalid-clone-single-crtc.html
* igt@kms_vrr@flip-dpms:
- shard-bmg: NOTRUN -> [SKIP][146] ([Intel XE#1499])
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-4/igt@kms_vrr@flip-dpms.html
* igt@kms_vrr@flipline:
- shard-dg2-set2: NOTRUN -> [SKIP][147] ([Intel XE#455]) +8 other tests skip
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-434/igt@kms_vrr@flipline.html
* igt@xe_copy_basic@mem-copy-linear-0xfd:
- shard-dg2-set2: NOTRUN -> [SKIP][148] ([Intel XE#1123])
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-464/igt@xe_copy_basic@mem-copy-linear-0xfd.html
* igt@xe_eu_stall@invalid-event-report-count:
- shard-dg2-set2: NOTRUN -> [SKIP][149] ([Intel XE#5626])
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-433/igt@xe_eu_stall@invalid-event-report-count.html
* igt@xe_eudebug@read-metadata:
- shard-adlp: NOTRUN -> [SKIP][150] ([Intel XE#4837] / [Intel XE#5565]) +1 other test skip
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-1/igt@xe_eudebug@read-metadata.html
* igt@xe_eudebug@vm-bind-clear-faultable:
- shard-lnl: NOTRUN -> [SKIP][151] ([Intel XE#4837]) +3 other tests skip
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-7/igt@xe_eudebug@vm-bind-clear-faultable.html
* igt@xe_eudebug_online@writes-caching-vram-bb-vram-target-vram:
- shard-bmg: NOTRUN -> [SKIP][152] ([Intel XE#4837]) +6 other tests skip
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-2/igt@xe_eudebug_online@writes-caching-vram-bb-vram-target-vram.html
* igt@xe_evict@evict-beng-small:
- shard-adlp: NOTRUN -> [SKIP][153] ([Intel XE#261] / [Intel XE#5564] / [Intel XE#688])
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-3/igt@xe_evict@evict-beng-small.html
- shard-lnl: NOTRUN -> [SKIP][154] ([Intel XE#688]) +2 other tests skip
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-5/igt@xe_evict@evict-beng-small.html
* igt@xe_evict@evict-large-multi-vm:
- shard-adlp: NOTRUN -> [SKIP][155] ([Intel XE#261] / [Intel XE#5564])
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-3/igt@xe_evict@evict-large-multi-vm.html
* igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap:
- shard-dg2-set2: [PASS][156] -> [SKIP][157] ([Intel XE#1392]) +4 other tests skip
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-dg2-436/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-basic-defer-mmap.html
* igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate:
- shard-lnl: NOTRUN -> [SKIP][158] ([Intel XE#1392]) +3 other tests skip
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-7/igt@xe_exec_basic@multigpu-no-exec-userptr-invalidate.html
* igt@xe_exec_basic@multigpu-once-basic-defer-mmap:
- shard-dg2-set2: NOTRUN -> [SKIP][159] ([Intel XE#1392]) +1 other test skip
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-432/igt@xe_exec_basic@multigpu-once-basic-defer-mmap.html
* igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind:
- shard-adlp: NOTRUN -> [SKIP][160] ([Intel XE#1392] / [Intel XE#5575]) +1 other test skip
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-2/igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind.html
- shard-bmg: NOTRUN -> [SKIP][161] ([Intel XE#2322]) +8 other tests skip
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-4/igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind.html
* igt@xe_exec_fault_mode@many-bindexecqueue-rebind-imm:
- shard-adlp: NOTRUN -> [SKIP][162] ([Intel XE#288] / [Intel XE#5561]) +1 other test skip
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-4/igt@xe_exec_fault_mode@many-bindexecqueue-rebind-imm.html
* igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch:
- shard-dg2-set2: NOTRUN -> [SKIP][163] ([Intel XE#288]) +9 other tests skip
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-433/igt@xe_exec_fault_mode@twice-bindexecqueue-userptr-rebind-prefetch.html
* igt@xe_exec_reset@parallel-gt-reset:
- shard-bmg: [PASS][164] -> [DMESG-WARN][165] ([Intel XE#3876])
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-6/igt@xe_exec_reset@parallel-gt-reset.html
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@xe_exec_reset@parallel-gt-reset.html
* igt@xe_exec_sip_eudebug@wait-writesip-nodebug:
- shard-dg2-set2: NOTRUN -> [SKIP][166] ([Intel XE#4837]) +7 other tests skip
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-434/igt@xe_exec_sip_eudebug@wait-writesip-nodebug.html
* igt@xe_exec_system_allocator@many-execqueues-mmap-new-huge:
- shard-dg2-set2: NOTRUN -> [SKIP][167] ([Intel XE#4915]) +127 other tests skip
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-432/igt@xe_exec_system_allocator@many-execqueues-mmap-new-huge.html
* igt@xe_exec_system_allocator@many-mmap-shared:
- shard-adlp: NOTRUN -> [SKIP][168] ([Intel XE#4915]) +43 other tests skip
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-3/igt@xe_exec_system_allocator@many-mmap-shared.html
* igt@xe_exec_system_allocator@process-many-large-mmap-huge:
- shard-bmg: NOTRUN -> [SKIP][169] ([Intel XE#4943]) +16 other tests skip
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@xe_exec_system_allocator@process-many-large-mmap-huge.html
* igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-free-huge-nomemset:
- shard-lnl: NOTRUN -> [SKIP][170] ([Intel XE#4943]) +5 other tests skip
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-7/igt@xe_exec_system_allocator@threads-shared-vm-many-stride-mmap-free-huge-nomemset.html
* igt@xe_huc_copy@huc_copy:
- shard-dg2-set2: NOTRUN -> [SKIP][171] ([Intel XE#255])
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-435/igt@xe_huc_copy@huc_copy.html
* igt@xe_oa@invalid-oa-metric-set-id:
- shard-adlp: NOTRUN -> [SKIP][172] ([Intel XE#3573]) +1 other test skip
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-6/igt@xe_oa@invalid-oa-metric-set-id.html
* igt@xe_oa@non-privileged-map-oa-buffer:
- shard-dg2-set2: NOTRUN -> [SKIP][173] ([Intel XE#3573]) +5 other tests skip
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-434/igt@xe_oa@non-privileged-map-oa-buffer.html
* igt@xe_peer2peer@read@read-gpua-vram01-gpub-system-p2p:
- shard-dg2-set2: NOTRUN -> [FAIL][174] ([Intel XE#1173]) +1 other test fail
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-436/igt@xe_peer2peer@read@read-gpua-vram01-gpub-system-p2p.html
* igt@xe_pm@s3-multiple-execs:
- shard-lnl: NOTRUN -> [SKIP][175] ([Intel XE#584])
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-7/igt@xe_pm@s3-multiple-execs.html
* igt@xe_pxp@pxp-termination-key-update-post-termination-irq:
- shard-bmg: NOTRUN -> [SKIP][176] ([Intel XE#4733])
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-2/igt@xe_pxp@pxp-termination-key-update-post-termination-irq.html
* igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
- shard-bmg: NOTRUN -> [SKIP][177] ([Intel XE#944])
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-1/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html
* igt@xe_sriov_auto_provisioning@fair-allocation:
- shard-dg2-set2: NOTRUN -> [SKIP][178] ([Intel XE#4130])
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-433/igt@xe_sriov_auto_provisioning@fair-allocation.html
#### Possible fixes ####
* igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-adlp: [DMESG-FAIL][179] ([Intel XE#4543]) -> [PASS][180] +11 other tests pass
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-2/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-6/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-b-dp-4:
- shard-dg2-set2: [INCOMPLETE][181] ([Intel XE#2705] / [Intel XE#4212] / [Intel XE#4345]) -> [PASS][182] +1 other test pass
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-dg2-436/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-b-dp-4.html
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-b-dp-4.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs:
- shard-dg2-set2: [INCOMPLETE][183] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4345] / [Intel XE#4522]) -> [PASS][184]
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs.html
* igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-dp-4:
- shard-dg2-set2: [INCOMPLETE][185] ([Intel XE#1727] / [Intel XE#2705] / [Intel XE#3113] / [Intel XE#4212] / [Intel XE#4522]) -> [PASS][186]
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-dg2-466/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-dp-4.html
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-464/igt@kms_ccs@random-ccs-data-4-tiled-dg2-rc-ccs@pipe-a-dp-4.html
* igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
- shard-bmg: [SKIP][187] ([Intel XE#2291]) -> [PASS][188]
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-6/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-7/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html
* igt@kms_cursor_legacy@flip-vs-cursor-legacy:
- shard-bmg: [FAIL][189] ([Intel XE#4633]) -> [PASS][190]
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-2/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
* igt@kms_flip@2x-plain-flip-ts-check-interruptible:
- shard-bmg: [SKIP][191] ([Intel XE#2316]) -> [PASS][192] +3 other tests pass
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-6/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-3/igt@kms_flip@2x-plain-flip-ts-check-interruptible.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1:
- shard-adlp: [DMESG-WARN][193] ([Intel XE#4543]) -> [PASS][194] +16 other tests pass
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1.html
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-4/igt@kms_flip@flip-vs-expired-vblank-interruptible@d-hdmi-a1.html
* igt@kms_flip@flip-vs-expired-vblank@c-edp1:
- shard-lnl: [FAIL][195] ([Intel XE#301] / [Intel XE#3149]) -> [PASS][196] +1 other test pass
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
* igt@kms_flip@flip-vs-panning-interruptible:
- shard-adlp: [DMESG-WARN][197] ([Intel XE#4543] / [Intel XE#5208]) -> [PASS][198] +2 other tests pass
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-9/igt@kms_flip@flip-vs-panning-interruptible.html
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-8/igt@kms_flip@flip-vs-panning-interruptible.html
* igt@kms_flip@flip-vs-suspend-interruptible:
- shard-bmg: [INCOMPLETE][199] ([Intel XE#2049] / [Intel XE#2597]) -> [PASS][200] +1 other test pass
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-2/igt@kms_flip@flip-vs-suspend-interruptible.html
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-3/igt@kms_flip@flip-vs-suspend-interruptible.html
* igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1:
- shard-adlp: [DMESG-WARN][201] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][202] +7 other tests pass
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-8/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1.html
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-3/igt@kms_flip@flip-vs-suspend-interruptible@a-hdmi-a1.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt:
- shard-adlp: [FAIL][203] ([Intel XE#5671]) -> [PASS][204]
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-9/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt.html
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-msflip-blt.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [SKIP][205] ([Intel XE#1503]) -> [PASS][206]
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-1/igt@kms_hdr@invalid-hdr.html
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-8/igt@kms_hdr@invalid-hdr.html
* igt@kms_plane_cursor@viewport:
- shard-dg2-set2: [FAIL][207] ([Intel XE#616]) -> [PASS][208] +1 other test pass
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-dg2-434/igt@kms_plane_cursor@viewport.html
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-433/igt@kms_plane_cursor@viewport.html
* igt@kms_plane_multiple@2x-tiling-4:
- shard-bmg: [SKIP][209] ([Intel XE#4596]) -> [PASS][210]
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-6/igt@kms_plane_multiple@2x-tiling-4.html
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-4/igt@kms_plane_multiple@2x-tiling-4.html
* igt@kms_plane_scaling@2x-scaler-multi-pipe:
- shard-bmg: [SKIP][211] ([Intel XE#2571]) -> [PASS][212]
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-6/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-2/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
* igt@kms_pm_dc@dc6-dpms:
- shard-adlp: [FAIL][213] ([Intel XE#718]) -> [PASS][214] +1 other test pass
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-1/igt@kms_pm_dc@dc6-dpms.html
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-8/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_dc@dc6-psr:
- shard-lnl: [FAIL][215] ([Intel XE#718]) -> [PASS][216]
[215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-lnl-5/igt@kms_pm_dc@dc6-psr.html
[216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-5/igt@kms_pm_dc@dc6-psr.html
* igt@kms_pm_rpm@universal-planes:
- shard-adlp: [DMESG-WARN][217] ([Intel XE#2953] / [Intel XE#4173] / [Intel XE#5750]) -> [PASS][218]
[217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-8/igt@kms_pm_rpm@universal-planes.html
[218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-2/igt@kms_pm_rpm@universal-planes.html
* igt@xe_exec_basic@multigpu-no-exec-rebind:
- shard-dg2-set2: [SKIP][219] ([Intel XE#1392]) -> [PASS][220] +4 other tests pass
[219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-rebind.html
[220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-434/igt@xe_exec_basic@multigpu-no-exec-rebind.html
* igt@xe_exec_fault_mode@many-bindexecqueue-rebind:
- shard-bmg: [FAIL][221] ([Intel XE#5536]) -> [PASS][222]
[221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-8/igt@xe_exec_fault_mode@many-bindexecqueue-rebind.html
[222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@xe_exec_fault_mode@many-bindexecqueue-rebind.html
* igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind:
- shard-lnl: [FAIL][223] ([Intel XE#5536]) -> [PASS][224] +1 other test pass
[223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-lnl-1/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind.html
[224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-lnl-4/igt@xe_exec_fault_mode@many-execqueues-bindexecqueue-userptr-rebind.html
* igt@xe_pmu@gt-frequency:
- shard-dg2-set2: [FAIL][225] ([Intel XE#5841]) -> [PASS][226] +1 other test pass
[225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-dg2-432/igt@xe_pmu@gt-frequency.html
[226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-464/igt@xe_pmu@gt-frequency.html
#### Warnings ####
* igt@kms_content_protection@lic-type-0:
- shard-bmg: [SKIP][227] ([Intel XE#2341]) -> [FAIL][228] ([Intel XE#1178])
[227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-6/igt@kms_content_protection@lic-type-0.html
[228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-8/igt@kms_content_protection@lic-type-0.html
* igt@kms_content_protection@uevent:
- shard-bmg: [FAIL][229] ([Intel XE#1188]) -> [SKIP][230] ([Intel XE#2341])
[229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-4/igt@kms_content_protection@uevent.html
[230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_content_protection@uevent.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt:
- shard-bmg: [SKIP][231] ([Intel XE#2312]) -> [SKIP][232] ([Intel XE#2311]) +5 other tests skip
[231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-6/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt.html
[232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen:
- shard-bmg: [SKIP][233] ([Intel XE#2312]) -> [SKIP][234] ([Intel XE#5390]) +4 other tests skip
[233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
[234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render:
- shard-bmg: [SKIP][235] ([Intel XE#5390]) -> [SKIP][236] ([Intel XE#2312]) +3 other tests skip
[235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html
[236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render:
- shard-bmg: [SKIP][237] ([Intel XE#2311]) -> [SKIP][238] ([Intel XE#2312]) +8 other tests skip
[237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render.html
[238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-blt:
- shard-bmg: [SKIP][239] ([Intel XE#2312]) -> [SKIP][240] ([Intel XE#2313]) +9 other tests skip
[239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-blt.html
[240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt:
- shard-bmg: [SKIP][241] ([Intel XE#2313]) -> [SKIP][242] ([Intel XE#2312]) +10 other tests skip
[241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
[242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
* igt@kms_pm_dc@dc9-dpms:
- shard-adlp: [FAIL][243] ([Intel XE#3325]) -> [SKIP][244] ([Intel XE#734])
[243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-adlp-8/igt@kms_pm_dc@dc9-dpms.html
[244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-adlp-6/igt@kms_pm_dc@dc9-dpms.html
* igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
- shard-bmg: [SKIP][245] ([Intel XE#1439] / [Intel XE#3141] / [Intel XE#836]) -> [ABORT][246] ([Intel XE#4760] / [Intel XE#5545])
[245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-5/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
[246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-5/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-dg2-set2: [SKIP][247] ([Intel XE#362]) -> [FAIL][248] ([Intel XE#1729])
[247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern.html
[248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-464/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][249] ([Intel XE#2509]) -> [SKIP][250] ([Intel XE#2426])
[249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
- shard-dg2-set2: [SKIP][251] ([Intel XE#362]) -> [SKIP][252] ([Intel XE#1500])
[251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-dg2-463/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-dg2-466/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@xe_pmu@fn-engine-activity-sched-if-idle:
- shard-bmg: [DMESG-WARN][253] ([Intel XE#3876]) -> [ABORT][254] ([Intel XE#3970])
[253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa/shard-bmg-7/igt@xe_pmu@fn-engine-activity-sched-if-idle.html
[254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/shard-bmg-3/igt@xe_pmu@fn-engine-activity-sched-if-idle.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
[Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
[Intel XE#1173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1173
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1188]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1188
[Intel XE#1231]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1231
[Intel XE#1340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1340
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
[Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
[Intel XE#1450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1450
[Intel XE#1467]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1467
[Intel XE#1475]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1475
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[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#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2328
[Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
[Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
[Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
[Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2499
[Intel XE#2501]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2501
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#255]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/255
[Intel XE#2568]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2568
[Intel XE#2571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2571
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
[Intel XE#2705]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2705
[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#2883]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2883
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#2927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2927
[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#3012]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3012
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
[Intel XE#3113]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3113
[Intel XE#3141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3141
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#3309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3309
[Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
[Intel XE#3325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3325
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/356
[Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[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#3970]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3970
[Intel XE#4090]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4090
[Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
[Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
[Intel XE#4212]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4212
[Intel XE#4329]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4329
[Intel XE#4345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4345
[Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4356
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4522]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4522
[Intel XE#4543]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4543
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#4596]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4596
[Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
[Intel XE#4633]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4633
[Intel XE#4683]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4683
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#4760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4760
[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#4921]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4921
[Intel XE#4943]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4943
[Intel XE#5208]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5208
[Intel XE#5300]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5300
[Intel XE#5354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5354
[Intel XE#5390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5390
[Intel XE#5425]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5425
[Intel XE#5536]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5536
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#5561]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5561
[Intel XE#5564]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5564
[Intel XE#5565]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5565
[Intel XE#5575]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5575
[Intel XE#5626]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5626
[Intel XE#5671]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5671
[Intel XE#5745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5745
[Intel XE#5750]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5750
[Intel XE#5784]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5784
[Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
[Intel XE#5841]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5841
[Intel XE#5899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5899
[Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
[Intel XE#619]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/619
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
[Intel XE#734]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/734
[Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#827]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/827
[Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* IGT: IGT_8497 -> IGT_8498
* Linux: xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa -> xe-pw-139778v3
IGT_8497: 8497
IGT_8498: 8498
xe-3576-deb6c5d08f8b84ea7e019b7682631c6375cc17aa: deb6c5d08f8b84ea7e019b7682631c6375cc17aa
xe-pw-139778v3: 139778v3
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-139778v3/index.html
[-- Attachment #2: Type: text/html, Size: 85421 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread