* [PATCH v2 1/6] drm/xe/ggtt: Add xe_ggtt_insert_node_at
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
@ 2026-07-15 11:05 ` Maarten Lankhorst
2026-07-17 14:24 ` Ville Syrjälä
2026-07-15 11:05 ` [PATCH v2 2/6] drm/xe/ggtt: Add xe_ggtt_node_remove_noclear Maarten Lankhorst
` (10 subsequent siblings)
11 siblings, 1 reply; 19+ messages in thread
From: Maarten Lankhorst @ 2026-07-15 11:05 UTC (permalink / raw)
To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst
Create a new function xe_ggtt_insert_node_at() which will be used
for reserving the part of GGTT where the initial framebuffer was
allocated.
This will allow us to either take over the initial mapping, or
reserve it to have the newly allocated GGTT mapping not overwriting
the initial mapping, which would cause flickering.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/xe/xe_ggtt.c | 35 +++++++++++++++++++++++++++++++----
drivers/gpu/drm/xe/xe_ggtt.h | 2 ++
2 files changed, 33 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 8ec23862477fc..c9f84db3bfecd 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -636,14 +636,17 @@ static struct xe_ggtt_node *ggtt_node_init(struct xe_ggtt *ggtt)
}
/**
- * xe_ggtt_insert_node - Insert a &xe_ggtt_node into the GGTT
+ * xe_ggtt_insert_node_at - Insert a &xe_ggtt_node into the GGTT
* @ggtt: the &xe_ggtt into which the node should be inserted.
* @size: size of the node
* @align: alignment constrain of the node
+ * @start: Starting offset of range to insert node
+ * @end: Last offset for node insertion
*
* Return: &xe_ggtt_node on success or a ERR_PTR on failure.
*/
-struct xe_ggtt_node *xe_ggtt_insert_node(struct xe_ggtt *ggtt, u32 size, u32 align)
+struct xe_ggtt_node *xe_ggtt_insert_node_at(struct xe_ggtt *ggtt, u32 size,
+ u32 align, u64 start, u64 end)
{
struct xe_ggtt_node *node;
int ret;
@@ -653,8 +656,19 @@ struct xe_ggtt_node *xe_ggtt_insert_node(struct xe_ggtt *ggtt, u32 size, u32 ali
return node;
guard(mutex)(&ggtt->lock);
- ret = xe_ggtt_insert_node_locked(node, size, align,
- DRM_MM_INSERT_HIGH);
+ if (start >= ggtt->start)
+ start -= ggtt->start;
+ else
+ start = 0;
+
+ /* Should never happen, but since we handle start, fail graciously for end */
+ if (end >= ggtt->start)
+ end -= ggtt->start;
+ else
+ end = 0;
+
+ ret = drm_mm_insert_node_in_range(&ggtt->mm, &node->base, size, align,
+ 0, start, end, DRM_MM_INSERT_HIGH);
if (ret) {
ggtt_node_fini(node);
return ERR_PTR(ret);
@@ -663,6 +677,19 @@ struct xe_ggtt_node *xe_ggtt_insert_node(struct xe_ggtt *ggtt, u32 size, u32 ali
return node;
}
+/**
+ * xe_ggtt_insert_node - Insert a &xe_ggtt_node into the GGTT
+ * @ggtt: the &xe_ggtt into which the node should be inserted.
+ * @size: size of the node
+ * @align: alignment constrain of the node
+ *
+ * Return: &xe_ggtt_node on success or a ERR_PTR on failure.
+ */
+struct xe_ggtt_node *xe_ggtt_insert_node(struct xe_ggtt *ggtt, u32 size, u32 align)
+{
+ return xe_ggtt_insert_node_at(ggtt, size, align, 0, ~0ULL);
+}
+
/**
* xe_ggtt_node_pt_size() - Get the size of page table entries needed to map a GGTT node.
* @node: the &xe_ggtt_node
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index c864cc975a695..69974da523f74 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -22,6 +22,8 @@ void xe_ggtt_shift_nodes(struct xe_ggtt *ggtt, u64 new_base);
u64 xe_ggtt_start(struct xe_ggtt *ggtt);
u64 xe_ggtt_size(struct xe_ggtt *ggtt);
+struct xe_ggtt_node *
+xe_ggtt_insert_node_at(struct xe_ggtt *ggtt, u32 size, u32 align, u64 start, u64 end);
struct xe_ggtt_node *
xe_ggtt_insert_node(struct xe_ggtt *ggtt, u32 size, u32 align);
struct xe_ggtt_node *
--
2.53.0
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v2 1/6] drm/xe/ggtt: Add xe_ggtt_insert_node_at
2026-07-15 11:05 ` [PATCH v2 1/6] drm/xe/ggtt: Add xe_ggtt_insert_node_at Maarten Lankhorst
@ 2026-07-17 14:24 ` Ville Syrjälä
0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2026-07-17 14:24 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx
On Wed, Jul 15, 2026 at 01:05:52PM +0200, Maarten Lankhorst wrote:
> Create a new function xe_ggtt_insert_node_at() which will be used
> for reserving the part of GGTT where the initial framebuffer was
> allocated.
>
> This will allow us to either take over the initial mapping, or
> reserve it to have the newly allocated GGTT mapping not overwriting
> the initial mapping, which would cause flickering.
>
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
> ---
> drivers/gpu/drm/xe/xe_ggtt.c | 35 +++++++++++++++++++++++++++++++----
> drivers/gpu/drm/xe/xe_ggtt.h | 2 ++
> 2 files changed, 33 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index 8ec23862477fc..c9f84db3bfecd 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -636,14 +636,17 @@ static struct xe_ggtt_node *ggtt_node_init(struct xe_ggtt *ggtt)
> }
>
> /**
> - * xe_ggtt_insert_node - Insert a &xe_ggtt_node into the GGTT
> + * xe_ggtt_insert_node_at - Insert a &xe_ggtt_node into the GGTT
> * @ggtt: the &xe_ggtt into which the node should be inserted.
> * @size: size of the node
> * @align: alignment constrain of the node
> + * @start: Starting offset of range to insert node
> + * @end: Last offset for node insertion
> *
> * Return: &xe_ggtt_node on success or a ERR_PTR on failure.
> */
> -struct xe_ggtt_node *xe_ggtt_insert_node(struct xe_ggtt *ggtt, u32 size, u32 align)
> +struct xe_ggtt_node *xe_ggtt_insert_node_at(struct xe_ggtt *ggtt, u32 size,
> + u32 align, u64 start, u64 end)
> {
> struct xe_ggtt_node *node;
> int ret;
> @@ -653,8 +656,19 @@ struct xe_ggtt_node *xe_ggtt_insert_node(struct xe_ggtt *ggtt, u32 size, u32 ali
> return node;
>
> guard(mutex)(&ggtt->lock);
> - ret = xe_ggtt_insert_node_locked(node, size, align,
> - DRM_MM_INSERT_HIGH);
> + if (start >= ggtt->start)
> + start -= ggtt->start;
> + else
> + start = 0;
> +
> + /* Should never happen, but since we handle start, fail graciously for end */
I remember seeing this weird comment in the existing code as well.
I confused me then and still does. Which should never happen, the
'if' or the 'else'? And both cases seem entirely possible to me.
The default end==~0ull is certainly going to hit the 'if', and the
initial fb can certainly be fully below ggtt->start so 'else' seems
possible as well.
> + if (end >= ggtt->start)
> + end -= ggtt->start;
> + else
> + end = 0;
> +
> + ret = drm_mm_insert_node_in_range(&ggtt->mm, &node->base, size, align,
> + 0, start, end, DRM_MM_INSERT_HIGH);
That is going to fail if the size matches the original range, and
then we reduce the range due to ggtt_start/end.
Can I presume the drm_mm code can deal with the start/end > ggtt_end case?
Hmm, I now see that you handle those cases in the caller in the
later patch. But that just makes just this whole function feel
rather strange; Why do we even allow start/end that aren't within
the valid range for the mm if the caller has to handle that anyway?
OTOH I guess the 0/~0ull stuff does need this here :/
> if (ret) {
> ggtt_node_fini(node);
> return ERR_PTR(ret);
> @@ -663,6 +677,19 @@ struct xe_ggtt_node *xe_ggtt_insert_node(struct xe_ggtt *ggtt, u32 size, u32 ali
> return node;
> }
>
> +/**
> + * xe_ggtt_insert_node - Insert a &xe_ggtt_node into the GGTT
> + * @ggtt: the &xe_ggtt into which the node should be inserted.
> + * @size: size of the node
> + * @align: alignment constrain of the node
> + *
> + * Return: &xe_ggtt_node on success or a ERR_PTR on failure.
> + */
> +struct xe_ggtt_node *xe_ggtt_insert_node(struct xe_ggtt *ggtt, u32 size, u32 align)
> +{
> + return xe_ggtt_insert_node_at(ggtt, size, align, 0, ~0ULL);
> +}
> +
> /**
> * xe_ggtt_node_pt_size() - Get the size of page table entries needed to map a GGTT node.
> * @node: the &xe_ggtt_node
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
> index c864cc975a695..69974da523f74 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.h
> +++ b/drivers/gpu/drm/xe/xe_ggtt.h
> @@ -22,6 +22,8 @@ void xe_ggtt_shift_nodes(struct xe_ggtt *ggtt, u64 new_base);
> u64 xe_ggtt_start(struct xe_ggtt *ggtt);
> u64 xe_ggtt_size(struct xe_ggtt *ggtt);
>
> +struct xe_ggtt_node *
> +xe_ggtt_insert_node_at(struct xe_ggtt *ggtt, u32 size, u32 align, u64 start, u64 end);
> struct xe_ggtt_node *
> xe_ggtt_insert_node(struct xe_ggtt *ggtt, u32 size, u32 align);
> struct xe_ggtt_node *
> --
> 2.53.0
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 2/6] drm/xe/ggtt: Add xe_ggtt_node_remove_noclear
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
2026-07-15 11:05 ` [PATCH v2 1/6] drm/xe/ggtt: Add xe_ggtt_insert_node_at Maarten Lankhorst
@ 2026-07-15 11:05 ` Maarten Lankhorst
2026-07-17 14:35 ` Ville Syrjälä
2026-07-15 11:05 ` [PATCH v2 3/6] drm/xe/display: Reserve the original GGTT space before creating a bo Maarten Lankhorst
` (9 subsequent siblings)
11 siblings, 1 reply; 19+ messages in thread
From: Maarten Lankhorst @ 2026-07-15 11:05 UTC (permalink / raw)
To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst
The last bit required for handling fb takeover is
ensuring we can release the old live framebuffer
without keeping track. The display code can then
safely perform the flip.
It's unfortunately a workaround for how display
is structured through callbacks instead of being
a midlayer.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/xe/xe_ggtt.c | 30 +++++++++++++++++++++++-------
drivers/gpu/drm/xe/xe_ggtt.h | 1 +
2 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index c9f84db3bfecd..ff479e0a9f3b3 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -470,24 +470,40 @@ static void ggtt_node_fini(struct xe_ggtt_node *node)
kfree(node);
}
-static void ggtt_node_remove(struct xe_ggtt_node *node)
+static void ggtt_node_remove(struct xe_ggtt_node *node, bool clear)
{
struct xe_ggtt *ggtt = node->ggtt;
- bool bound;
mutex_lock(&ggtt->lock);
- bound = ggtt->flags & XE_GGTT_FLAGS_ONLINE;
- if (bound)
+ if (clear)
+ clear = ggtt->flags & XE_GGTT_FLAGS_ONLINE;
+ if (clear)
xe_ggtt_clear(ggtt, xe_ggtt_node_addr(node), xe_ggtt_node_size(node));
drm_mm_remove_node(&node->base);
node->base.size = 0;
- if (bound && node->invalidate_on_remove)
+ if (clear && node->invalidate_on_remove)
xe_ggtt_invalidate(ggtt);
mutex_unlock(&ggtt->lock);
ggtt_node_fini(node);
}
+/**
+ * xe_ggtt_node_remove_noclear - Remove a &xe_ggtt_node from the GGTT without clearing entries
+ * @node: the &xe_ggtt_node to be removed
+ *
+ * This function is similar to xe_ggtt_node_remove(), but doesn't clear
+ * the entries. It's used to release the live FB mapping without
+ * clearing it.
+ *
+ * This function should only be called before xe_ggtt_init() in
+ * the bios FB takeover code.
+ */
+void xe_ggtt_node_remove_noclear(struct xe_ggtt_node *node)
+{
+ ggtt_node_remove(node, false);
+}
+
static void ggtt_node_remove_work_func(struct work_struct *work)
{
struct xe_ggtt_node *node = container_of(work, typeof(*node),
@@ -495,7 +511,7 @@ static void ggtt_node_remove_work_func(struct work_struct *work)
struct xe_device *xe = tile_to_xe(node->ggtt->tile);
guard(xe_pm_runtime)(xe);
- ggtt_node_remove(node);
+ ggtt_node_remove(node, true);
}
/**
@@ -517,7 +533,7 @@ void xe_ggtt_node_remove(struct xe_ggtt_node *node, bool invalidate)
node->invalidate_on_remove = invalidate;
if (xe_pm_runtime_get_if_active(xe)) {
- ggtt_node_remove(node);
+ ggtt_node_remove(node, true);
xe_pm_runtime_put(xe);
} else {
queue_work(ggtt->wq, &node->delayed_removal_work);
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 69974da523f74..83654544feb6d 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -32,6 +32,7 @@ xe_ggtt_insert_node_transform(struct xe_ggtt *ggtt,
u64 size, u32 align,
xe_ggtt_transform_cb transform, void *arg);
void xe_ggtt_node_remove(struct xe_ggtt_node *node, bool invalidate);
+void xe_ggtt_node_remove_noclear(struct xe_ggtt_node *node);
size_t xe_ggtt_node_pt_size(const struct xe_ggtt_node *node);
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, struct drm_exec *exec);
--
2.53.0
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v2 2/6] drm/xe/ggtt: Add xe_ggtt_node_remove_noclear
2026-07-15 11:05 ` [PATCH v2 2/6] drm/xe/ggtt: Add xe_ggtt_node_remove_noclear Maarten Lankhorst
@ 2026-07-17 14:35 ` Ville Syrjälä
0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2026-07-17 14:35 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx
On Wed, Jul 15, 2026 at 01:05:53PM +0200, Maarten Lankhorst wrote:
> The last bit required for handling fb takeover is
> ensuring we can release the old live framebuffer
> without keeping track. The display code can then
> safely perform the flip.
>
> It's unfortunately a workaround for how display
> is structured through callbacks instead of being
> a midlayer.
>
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/xe/xe_ggtt.c | 30 +++++++++++++++++++++++-------
> drivers/gpu/drm/xe/xe_ggtt.h | 1 +
> 2 files changed, 24 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index c9f84db3bfecd..ff479e0a9f3b3 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -470,24 +470,40 @@ static void ggtt_node_fini(struct xe_ggtt_node *node)
> kfree(node);
> }
>
> -static void ggtt_node_remove(struct xe_ggtt_node *node)
> +static void ggtt_node_remove(struct xe_ggtt_node *node, bool clear)
> {
> struct xe_ggtt *ggtt = node->ggtt;
> - bool bound;
>
> mutex_lock(&ggtt->lock);
> - bound = ggtt->flags & XE_GGTT_FLAGS_ONLINE;
> - if (bound)
> + if (clear)
> + clear = ggtt->flags & XE_GGTT_FLAGS_ONLINE;
> + if (clear)
> xe_ggtt_clear(ggtt, xe_ggtt_node_addr(node), xe_ggtt_node_size(node));
> drm_mm_remove_node(&node->base);
> node->base.size = 0;
> - if (bound && node->invalidate_on_remove)
> + if (clear && node->invalidate_on_remove)
> xe_ggtt_invalidate(ggtt);
> mutex_unlock(&ggtt->lock);
>
> ggtt_node_fini(node);
> }
>
> +/**
> + * xe_ggtt_node_remove_noclear - Remove a &xe_ggtt_node from the GGTT without clearing entries
> + * @node: the &xe_ggtt_node to be removed
> + *
> + * This function is similar to xe_ggtt_node_remove(), but doesn't clear
> + * the entries. It's used to release the live FB mapping without
> + * clearing it.
> + *
> + * This function should only be called before xe_ggtt_init() in
> + * the bios FB takeover code.
> + */
> +void xe_ggtt_node_remove_noclear(struct xe_ggtt_node *node)
> +{
> + ggtt_node_remove(node, false);
> +}
> +
> static void ggtt_node_remove_work_func(struct work_struct *work)
> {
> struct xe_ggtt_node *node = container_of(work, typeof(*node),
> @@ -495,7 +511,7 @@ static void ggtt_node_remove_work_func(struct work_struct *work)
> struct xe_device *xe = tile_to_xe(node->ggtt->tile);
>
> guard(xe_pm_runtime)(xe);
> - ggtt_node_remove(node);
> + ggtt_node_remove(node, true);
> }
>
> /**
> @@ -517,7 +533,7 @@ void xe_ggtt_node_remove(struct xe_ggtt_node *node, bool invalidate)
> node->invalidate_on_remove = invalidate;
>
> if (xe_pm_runtime_get_if_active(xe)) {
> - ggtt_node_remove(node);
> + ggtt_node_remove(node, true);
> xe_pm_runtime_put(xe);
> } else {
> queue_work(ggtt->wq, &node->delayed_removal_work);
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
> index 69974da523f74..83654544feb6d 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.h
> +++ b/drivers/gpu/drm/xe/xe_ggtt.h
> @@ -32,6 +32,7 @@ xe_ggtt_insert_node_transform(struct xe_ggtt *ggtt,
> u64 size, u32 align,
> xe_ggtt_transform_cb transform, void *arg);
> void xe_ggtt_node_remove(struct xe_ggtt_node *node, bool invalidate);
> +void xe_ggtt_node_remove_noclear(struct xe_ggtt_node *node);
> size_t xe_ggtt_node_pt_size(const struct xe_ggtt_node *node);
> 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, struct drm_exec *exec);
> --
> 2.53.0
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 3/6] drm/xe/display: Reserve the original GGTT space before creating a bo
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
2026-07-15 11:05 ` [PATCH v2 1/6] drm/xe/ggtt: Add xe_ggtt_insert_node_at Maarten Lankhorst
2026-07-15 11:05 ` [PATCH v2 2/6] drm/xe/ggtt: Add xe_ggtt_node_remove_noclear Maarten Lankhorst
@ 2026-07-15 11:05 ` Maarten Lankhorst
2026-07-17 14:28 ` Ville Syrjälä
2026-07-15 11:05 ` [PATCH v2 4/6] drm/xe/display: Use the correct calculation for phys_base on integrated Maarten Lankhorst
` (8 subsequent siblings)
11 siblings, 1 reply; 19+ messages in thread
From: Maarten Lankhorst @ 2026-07-15 11:05 UTC (permalink / raw)
To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst
Annotate the original area of the framebuffer as reserved in the GGTT
before creating a new GGTT entry. This allows us to remove the
range restrictions of GGTT in xe_bo_create_pin_map_at_novm().
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/xe/display/xe_initial_plane.c | 27 +++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
index 0f86b73036d03..f49dda8e28255 100644
--- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
+++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
@@ -37,6 +37,25 @@ static bool need_pte_local(struct xe_device *xe)
return IS_DGFX(xe) || has_lmembar(xe);
}
+static struct xe_ggtt_node *reserve_original_node(struct xe_ggtt *ggtt, u32 base, u32 size, u64 page_size)
+{
+ u64 ggtt_start = xe_ggtt_start(ggtt), ggtt_end = ggtt_start + xe_ggtt_size(ggtt);
+
+ /* Completely truncated? */
+ if (base + size <= ggtt_start || base >= ggtt_end)
+ return NULL;
+
+ /* Partially truncated? */
+ if (base <= ggtt_start) {
+ size -= ggtt_start - base;
+ base = ggtt_start;
+ } else if (base + size >= ggtt_end) {
+ size = ggtt_end - base;
+ }
+
+ return xe_ggtt_insert_node_at(ggtt, size, page_size, base, base + size);
+}
+
static struct xe_bo *
initial_plane_bo(struct xe_device *xe,
struct intel_initial_plane_config *plane_config)
@@ -46,6 +65,7 @@ initial_plane_bo(struct xe_device *xe,
resource_size_t phys_base;
u32 base, size, flags;
u64 page_size = xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K ? SZ_64K : SZ_4K;
+ struct xe_ggtt_node *original_ggtt_node;
if (plane_config->size == 0)
return NULL;
@@ -111,8 +131,15 @@ initial_plane_bo(struct xe_device *xe,
}
}
+ original_ggtt_node = reserve_original_node(tile0->mem.ggtt, base, size, page_size);
+ if (IS_ERR(original_ggtt_node))
+ return NULL;
+
bo = xe_bo_create_pin_map_at_novm(xe, tile0, size, phys_base,
ttm_bo_type_kernel, flags, 0, false);
+ if (original_ggtt_node)
+ xe_ggtt_node_remove_noclear(original_ggtt_node);
+
if (IS_ERR(bo)) {
drm_dbg_kms(&xe->drm,
"Failed to create bo phys_base=%pa size %u with flags %x: %li\n",
--
2.53.0
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v2 3/6] drm/xe/display: Reserve the original GGTT space before creating a bo
2026-07-15 11:05 ` [PATCH v2 3/6] drm/xe/display: Reserve the original GGTT space before creating a bo Maarten Lankhorst
@ 2026-07-17 14:28 ` Ville Syrjälä
0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2026-07-17 14:28 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx
On Wed, Jul 15, 2026 at 01:05:54PM +0200, Maarten Lankhorst wrote:
> Annotate the original area of the framebuffer as reserved in the GGTT
> before creating a new GGTT entry. This allows us to remove the
> range restrictions of GGTT in xe_bo_create_pin_map_at_novm().
>
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
> ---
> drivers/gpu/drm/xe/display/xe_initial_plane.c | 27 +++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
> index 0f86b73036d03..f49dda8e28255 100644
> --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
> +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
> @@ -37,6 +37,25 @@ static bool need_pte_local(struct xe_device *xe)
> return IS_DGFX(xe) || has_lmembar(xe);
> }
>
> +static struct xe_ggtt_node *reserve_original_node(struct xe_ggtt *ggtt, u32 base, u32 size, u64 page_size)
> +{
> + u64 ggtt_start = xe_ggtt_start(ggtt), ggtt_end = ggtt_start + xe_ggtt_size(ggtt);
> +
> + /* Completely truncated? */
> + if (base + size <= ggtt_start || base >= ggtt_end)
> + return NULL;
> +
> + /* Partially truncated? */
> + if (base <= ggtt_start) {
> + size -= ggtt_start - base;
> + base = ggtt_start;
> + } else if (base + size >= ggtt_end) {
> + size = ggtt_end - base;
> + }
This is exactly what I didn't want to have in the display code.
These are xe_ggtt.c implementation details that we shouldn't
have to know. So IMO either xe_ggtt_insert_node_at() should handle
all of it, or this reserve_original_node() wrapper should live in
xe_ggtt.c.
> +
> + return xe_ggtt_insert_node_at(ggtt, size, page_size, base, base + size);
> +}
> +
> static struct xe_bo *
> initial_plane_bo(struct xe_device *xe,
> struct intel_initial_plane_config *plane_config)
> @@ -46,6 +65,7 @@ initial_plane_bo(struct xe_device *xe,
> resource_size_t phys_base;
> u32 base, size, flags;
> u64 page_size = xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K ? SZ_64K : SZ_4K;
> + struct xe_ggtt_node *original_ggtt_node;
>
> if (plane_config->size == 0)
> return NULL;
> @@ -111,8 +131,15 @@ initial_plane_bo(struct xe_device *xe,
> }
> }
>
> + original_ggtt_node = reserve_original_node(tile0->mem.ggtt, base, size, page_size);
> + if (IS_ERR(original_ggtt_node))
> + return NULL;
> +
> bo = xe_bo_create_pin_map_at_novm(xe, tile0, size, phys_base,
> ttm_bo_type_kernel, flags, 0, false);
> + if (original_ggtt_node)
> + xe_ggtt_node_remove_noclear(original_ggtt_node);
> +
> if (IS_ERR(bo)) {
> drm_dbg_kms(&xe->drm,
> "Failed to create bo phys_base=%pa size %u with flags %x: %li\n",
> --
> 2.53.0
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 4/6] drm/xe/display: Use the correct calculation for phys_base on integrated
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
` (2 preceding siblings ...)
2026-07-15 11:05 ` [PATCH v2 3/6] drm/xe/display: Reserve the original GGTT space before creating a bo Maarten Lankhorst
@ 2026-07-15 11:05 ` Maarten Lankhorst
2026-07-15 11:05 ` [PATCH v2 5/6] drm/xe/display: Remove duplicated code Maarten Lankhorst
` (7 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Maarten Lankhorst @ 2026-07-15 11:05 UTC (permalink / raw)
To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst, Ville Syrjälä
The code originally assumed there was a 1:1 mapping between
stolen and GGTT offset. This is no longer true as of MTL, so
perform the correct calculations, similar to how they're
performed for the DGFX case.
Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/xe/display/xe_initial_plane.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
index f49dda8e28255..5540b0fca392a 100644
--- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
+++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
@@ -120,7 +120,7 @@ initial_plane_bo(struct xe_device *xe,
return NULL;
}
- phys_base = base;
+ phys_base = (pte & ~(page_size - 1)) - xe_ttm_stolen_gpu_offset(xe);
flags |= XE_BO_FLAG_STOLEN;
if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) &&
--
2.53.0
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH v2 5/6] drm/xe/display: Remove duplicated code
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
` (3 preceding siblings ...)
2026-07-15 11:05 ` [PATCH v2 4/6] drm/xe/display: Use the correct calculation for phys_base on integrated Maarten Lankhorst
@ 2026-07-15 11:05 ` Maarten Lankhorst
2026-07-15 11:34 ` Maarten Lankhorst
2026-07-15 11:05 ` [PATCH v2 6/6] drm/xe/ggtt: Remove xe_ggtt_insert_bo_at Maarten Lankhorst
` (6 subsequent siblings)
11 siblings, 1 reply; 19+ messages in thread
From: Maarten Lankhorst @ 2026-07-15 11:05 UTC (permalink / raw)
To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst
The order of pte vs checks isn't important, so read the pte
outside the if block. This makes it slightly more readable.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/xe/display/xe_initial_plane.c | 35 ++++++-------------
1 file changed, 11 insertions(+), 24 deletions(-)
diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
index 5540b0fca392a..e16a6a1e6288a 100644
--- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
+++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
@@ -64,7 +64,7 @@ initial_plane_bo(struct xe_device *xe,
struct xe_bo *bo;
resource_size_t phys_base;
u32 base, size, flags;
- u64 page_size = xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K ? SZ_64K : SZ_4K;
+ u64 page_size = xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K ? SZ_64K : SZ_4K, pte;
struct xe_ggtt_node *original_ggtt_node;
if (plane_config->size == 0)
@@ -77,16 +77,14 @@ initial_plane_bo(struct xe_device *xe,
page_size);
size -= base;
- if (IS_DGFX(xe)) {
- u64 pte = xe_ggtt_read_pte(tile0->mem.ggtt, base);
-
- if (is_pte_local(pte) != need_pte_local(xe)) {
- drm_err(&xe->drm, "Initial plane PTE has bad local memory bit\n");
- return NULL;
- }
-
- phys_base = pte & ~(page_size - 1);
+ pte = xe_ggtt_read_pte(tile0->mem.ggtt, base);
+ phys_base = pte & ~(page_size - 1);
+ if (is_pte_local(pte) != need_pte_local(xe)) {
+ drm_err(&xe->drm, "Initial plane PTE has bad local memory bit\n");
+ return NULL;
+ }
+ if (IS_DGFX(xe)) {
flags |= XE_BO_FLAG_VRAM0;
/*
@@ -104,25 +102,14 @@ initial_plane_bo(struct xe_device *xe,
"Using phys_base=%pa, based on initial plane programming\n",
&phys_base);
} else {
- struct ttm_resource_manager *stolen;
- u64 pte;
+ flags |= XE_BO_FLAG_STOLEN;
+ phys_base -= xe_ttm_stolen_gpu_offset(xe);
- stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN);
- if (!stolen) {
+ if (!ttm_manager_type(&xe->ttm, XE_PL_STOLEN)) {
drm_dbg_kms(&xe->drm, "No stolen for initial FB\n");
return NULL;
}
- pte = xe_ggtt_read_pte(tile0->mem.ggtt, base);
-
- if (is_pte_local(pte) != need_pte_local(xe)) {
- drm_err(&xe->drm, "Initial plane PTE has bad local memory bit\n");
- return NULL;
- }
-
- phys_base = (pte & ~(page_size - 1)) - xe_ttm_stolen_gpu_offset(xe);
- flags |= XE_BO_FLAG_STOLEN;
-
if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) &&
IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) &&
!xe_display_bo_fbdev_prefer_stolen(xe, plane_config->size)) {
--
2.53.0
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v2 5/6] drm/xe/display: Remove duplicated code
2026-07-15 11:05 ` [PATCH v2 5/6] drm/xe/display: Remove duplicated code Maarten Lankhorst
@ 2026-07-15 11:34 ` Maarten Lankhorst
2026-07-17 14:46 ` Ville Syrjälä
0 siblings, 1 reply; 19+ messages in thread
From: Maarten Lankhorst @ 2026-07-15 11:34 UTC (permalink / raw)
To: intel-xe; +Cc: intel-gfx
On 7/15/26 13:05, Maarten Lankhorst wrote:
> The order of pte vs checks isn't important, so read the pte
> outside the if block. This makes it slightly more readable.
>
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
> ---
> drivers/gpu/drm/xe/display/xe_initial_plane.c | 35 ++++++-------------
> 1 file changed, 11 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
> index 5540b0fca392a..e16a6a1e6288a 100644
> --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
> +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
> @@ -64,7 +64,7 @@ initial_plane_bo(struct xe_device *xe,
> struct xe_bo *bo;
> resource_size_t phys_base;
> u32 base, size, flags;
> - u64 page_size = xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K ? SZ_64K : SZ_4K;
> + u64 page_size = xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K ? SZ_64K : SZ_4K, pte;
> struct xe_ggtt_node *original_ggtt_node;
>
> if (plane_config->size == 0)
> @@ -77,16 +77,14 @@ initial_plane_bo(struct xe_device *xe,
> page_size);
> size -= base;
>
> - if (IS_DGFX(xe)) {
> - u64 pte = xe_ggtt_read_pte(tile0->mem.ggtt, base);
> -
> - if (is_pte_local(pte) != need_pte_local(xe)) {
> - drm_err(&xe->drm, "Initial plane PTE has bad local memory bit\n");
> - return NULL;
> - }
> -
> - phys_base = pte & ~(page_size - 1);
> + pte = xe_ggtt_read_pte(tile0->mem.ggtt, base);
> + phys_base = pte & ~(page_size - 1);
> + if (is_pte_local(pte) != need_pte_local(xe)) {
> + drm_err(&xe->drm, "Initial plane PTE has bad local memory bit\n");
> + return NULL;
> + }
>
> + if (IS_DGFX(xe)) {
> flags |= XE_BO_FLAG_VRAM0;
>
> /*
> @@ -104,25 +102,14 @@ initial_plane_bo(struct xe_device *xe,
> "Using phys_base=%pa, based on initial plane programming\n",
> &phys_base);
> } else {
> - struct ttm_resource_manager *stolen;
> - u64 pte;
> + flags |= XE_BO_FLAG_STOLEN;
> + phys_base -= xe_ttm_stolen_gpu_offset(xe);
>
> - stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN);
> - if (!stolen) {
> + if (!ttm_manager_type(&xe->ttm, XE_PL_STOLEN)) {
> drm_dbg_kms(&xe->drm, "No stolen for initial FB\n");
> return NULL;
> }
>
Woops, phys_base adjustment should be after !stolen check,
result should be the same though.
> - pte = xe_ggtt_read_pte(tile0->mem.ggtt, base);
> -
> - if (is_pte_local(pte) != need_pte_local(xe)) {
> - drm_err(&xe->drm, "Initial plane PTE has bad local memory bit\n");
> - return NULL;
> - }
> -
> - phys_base = (pte & ~(page_size - 1)) - xe_ttm_stolen_gpu_offset(xe);
> - flags |= XE_BO_FLAG_STOLEN;
> -
> if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) &&
> IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) &&
> !xe_display_bo_fbdev_prefer_stolen(xe, plane_config->size)) {
^ permalink raw reply [flat|nested] 19+ messages in thread* Re: [PATCH v2 5/6] drm/xe/display: Remove duplicated code
2026-07-15 11:34 ` Maarten Lankhorst
@ 2026-07-17 14:46 ` Ville Syrjälä
0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2026-07-17 14:46 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx
On Wed, Jul 15, 2026 at 01:34:28PM +0200, Maarten Lankhorst wrote:
>
>
> On 7/15/26 13:05, Maarten Lankhorst wrote:
> > The order of pte vs checks isn't important, so read the pte
> > outside the if block. This makes it slightly more readable.
> >
> > Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
> > ---
> > drivers/gpu/drm/xe/display/xe_initial_plane.c | 35 ++++++-------------
> > 1 file changed, 11 insertions(+), 24 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/xe/display/xe_initial_plane.c b/drivers/gpu/drm/xe/display/xe_initial_plane.c
> > index 5540b0fca392a..e16a6a1e6288a 100644
> > --- a/drivers/gpu/drm/xe/display/xe_initial_plane.c
> > +++ b/drivers/gpu/drm/xe/display/xe_initial_plane.c
> > @@ -64,7 +64,7 @@ initial_plane_bo(struct xe_device *xe,
> > struct xe_bo *bo;
> > resource_size_t phys_base;
> > u32 base, size, flags;
> > - u64 page_size = xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K ? SZ_64K : SZ_4K;
> > + u64 page_size = xe->info.vram_flags & XE_VRAM_FLAGS_NEED64K ? SZ_64K : SZ_4K, pte;
> > struct xe_ggtt_node *original_ggtt_node;
> >
> > if (plane_config->size == 0)
> > @@ -77,16 +77,14 @@ initial_plane_bo(struct xe_device *xe,
> > page_size);
> > size -= base;
> >
> > - if (IS_DGFX(xe)) {
> > - u64 pte = xe_ggtt_read_pte(tile0->mem.ggtt, base);
> > -
> > - if (is_pte_local(pte) != need_pte_local(xe)) {
> > - drm_err(&xe->drm, "Initial plane PTE has bad local memory bit\n");
> > - return NULL;
> > - }
> > -
> > - phys_base = pte & ~(page_size - 1);
> > + pte = xe_ggtt_read_pte(tile0->mem.ggtt, base);
> > + phys_base = pte & ~(page_size - 1);
> > + if (is_pte_local(pte) != need_pte_local(xe)) {
> > + drm_err(&xe->drm, "Initial plane PTE has bad local memory bit\n");
> > + return NULL;
> > + }
> >
> > + if (IS_DGFX(xe)) {
> > flags |= XE_BO_FLAG_VRAM0;
> >
> > /*
> > @@ -104,25 +102,14 @@ initial_plane_bo(struct xe_device *xe,
> > "Using phys_base=%pa, based on initial plane programming\n",
> > &phys_base);
> > } else {
> > - struct ttm_resource_manager *stolen;
> > - u64 pte;
> > + flags |= XE_BO_FLAG_STOLEN;
> > + phys_base -= xe_ttm_stolen_gpu_offset(xe);
> >
> > - stolen = ttm_manager_type(&xe->ttm, XE_PL_STOLEN);
> > - if (!stolen) {
> > + if (!ttm_manager_type(&xe->ttm, XE_PL_STOLEN)) {
> > drm_dbg_kms(&xe->drm, "No stolen for initial FB\n");
> > return NULL;
> > }
> >
>
> Woops, phys_base adjustment should be after !stolen check,
> result should be the same though.
I would still like to see the dma_addr/phys_base/ggtt offset
(old and new) debug stuff from
https://patchwork.freedesktop.org/patch/724207/?series=166362&rev=1
sucked in as well, as a separate patch. It's useful to see all of
that when debugging this stuff...
But this patch seems fine, with the reordering to avoid oopsing
if stolen isn't there
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> > - pte = xe_ggtt_read_pte(tile0->mem.ggtt, base);
> > -
> > - if (is_pte_local(pte) != need_pte_local(xe)) {
> > - drm_err(&xe->drm, "Initial plane PTE has bad local memory bit\n");
> > - return NULL;
> > - }
> > -
> > - phys_base = (pte & ~(page_size - 1)) - xe_ttm_stolen_gpu_offset(xe);
> > - flags |= XE_BO_FLAG_STOLEN;
> > -
> > if (IS_ENABLED(CONFIG_FRAMEBUFFER_CONSOLE) &&
> > IS_ENABLED(CONFIG_DRM_FBDEV_EMULATION) &&
> > !xe_display_bo_fbdev_prefer_stolen(xe, plane_config->size)) {
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 6/6] drm/xe/ggtt: Remove xe_ggtt_insert_bo_at
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
` (4 preceding siblings ...)
2026-07-15 11:05 ` [PATCH v2 5/6] drm/xe/display: Remove duplicated code Maarten Lankhorst
@ 2026-07-15 11:05 ` Maarten Lankhorst
2026-07-17 14:34 ` Ville Syrjälä
2026-07-15 11:50 ` ✗ CI.checkpatch: warning for drm/xe: More BIOS FB takeover fixes (rev2) Patchwork
` (5 subsequent siblings)
11 siblings, 1 reply; 19+ messages in thread
From: Maarten Lankhorst @ 2026-07-15 11:05 UTC (permalink / raw)
To: intel-xe; +Cc: intel-gfx, Maarten Lankhorst
This code was created specifically for the display handover,
and can be removed now that we temporarily reserve the area
of GGTT that contains the original framebuffer contents.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
---
drivers/gpu/drm/xe/xe_bo.c | 8 +-------
drivers/gpu/drm/xe/xe_ggtt.c | 16 ----------------
drivers/gpu/drm/xe/xe_ggtt.h | 2 --
3 files changed, 1 insertion(+), 25 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index c266fa6bade1b..5d7d91444dce3 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -2560,13 +2560,7 @@ __xe_bo_create_locked(struct xe_device *xe,
if (t != tile && !(bo->flags & XE_BO_FLAG_GGTTx(t)))
continue;
- if (flags & XE_BO_FLAG_FIXED_PLACEMENT) {
- err = xe_ggtt_insert_bo_at(t->mem.ggtt, bo,
- start + xe_bo_size(bo), U64_MAX,
- exec);
- } else {
- err = xe_ggtt_insert_bo(t->mem.ggtt, bo, exec);
- }
+ err = xe_ggtt_insert_bo(t->mem.ggtt, bo, exec);
if (err)
goto err_unlock_put_bo;
}
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index ff479e0a9f3b3..017e7eeeb2c50 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -900,22 +900,6 @@ static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
return err;
}
-/**
- * xe_ggtt_insert_bo_at - Insert BO at a specific GGTT space
- * @ggtt: the &xe_ggtt where bo will be inserted
- * @bo: the &xe_bo to be inserted
- * @start: address where it will be inserted
- * @end: end of the range where it will be inserted
- * @exec: The drm_exec transaction to use for exhaustive eviction.
- *
- * Return: 0 on success or a negative error code on failure.
- */
-int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
- u64 start, u64 end, struct drm_exec *exec)
-{
- return __xe_ggtt_insert_bo_at(ggtt, bo, start, end, exec);
-}
-
/**
* xe_ggtt_insert_bo - Insert BO into GGTT
* @ggtt: the &xe_ggtt where bo will be inserted
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 83654544feb6d..02e72dbae0e58 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -36,8 +36,6 @@ void xe_ggtt_node_remove_noclear(struct xe_ggtt_node *node);
size_t xe_ggtt_node_pt_size(const struct xe_ggtt_node *node);
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, struct drm_exec *exec);
-int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
- u64 start, u64 end, struct drm_exec *exec);
void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
--
2.53.0
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v2 6/6] drm/xe/ggtt: Remove xe_ggtt_insert_bo_at
2026-07-15 11:05 ` [PATCH v2 6/6] drm/xe/ggtt: Remove xe_ggtt_insert_bo_at Maarten Lankhorst
@ 2026-07-17 14:34 ` Ville Syrjälä
0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2026-07-17 14:34 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe, intel-gfx
On Wed, Jul 15, 2026 at 01:05:57PM +0200, Maarten Lankhorst wrote:
> This code was created specifically for the display handover,
> and can be removed now that we temporarily reserve the area
> of GGTT that contains the original framebuffer contents.
>
> Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
> ---
> drivers/gpu/drm/xe/xe_bo.c | 8 +-------
> drivers/gpu/drm/xe/xe_ggtt.c | 16 ----------------
> drivers/gpu/drm/xe/xe_ggtt.h | 2 --
> 3 files changed, 1 insertion(+), 25 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
> index c266fa6bade1b..5d7d91444dce3 100644
> --- a/drivers/gpu/drm/xe/xe_bo.c
> +++ b/drivers/gpu/drm/xe/xe_bo.c
> @@ -2560,13 +2560,7 @@ __xe_bo_create_locked(struct xe_device *xe,
> if (t != tile && !(bo->flags & XE_BO_FLAG_GGTTx(t)))
> continue;
>
> - if (flags & XE_BO_FLAG_FIXED_PLACEMENT) {
> - err = xe_ggtt_insert_bo_at(t->mem.ggtt, bo,
> - start + xe_bo_size(bo), U64_MAX,
> - exec);
The commit message should probable mention that this
ggtt_start==phys_start assumption was nonsense to begin
with.
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> - } else {
> - err = xe_ggtt_insert_bo(t->mem.ggtt, bo, exec);
> - }
> + err = xe_ggtt_insert_bo(t->mem.ggtt, bo, exec);
> if (err)
> goto err_unlock_put_bo;
> }
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index ff479e0a9f3b3..017e7eeeb2c50 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -900,22 +900,6 @@ static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
> return err;
> }
>
> -/**
> - * xe_ggtt_insert_bo_at - Insert BO at a specific GGTT space
> - * @ggtt: the &xe_ggtt where bo will be inserted
> - * @bo: the &xe_bo to be inserted
> - * @start: address where it will be inserted
> - * @end: end of the range where it will be inserted
> - * @exec: The drm_exec transaction to use for exhaustive eviction.
> - *
> - * Return: 0 on success or a negative error code on failure.
> - */
> -int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
> - u64 start, u64 end, struct drm_exec *exec)
> -{
> - return __xe_ggtt_insert_bo_at(ggtt, bo, start, end, exec);
> -}
> -
> /**
> * xe_ggtt_insert_bo - Insert BO into GGTT
> * @ggtt: the &xe_ggtt where bo will be inserted
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
> index 83654544feb6d..02e72dbae0e58 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.h
> +++ b/drivers/gpu/drm/xe/xe_ggtt.h
> @@ -36,8 +36,6 @@ void xe_ggtt_node_remove_noclear(struct xe_ggtt_node *node);
> size_t xe_ggtt_node_pt_size(const struct xe_ggtt_node *node);
> 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, struct drm_exec *exec);
> -int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo,
> - u64 start, u64 end, struct drm_exec *exec);
> void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo);
> u64 xe_ggtt_largest_hole(struct xe_ggtt *ggtt, u64 alignment, u64 *spare);
>
> --
> 2.53.0
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 19+ messages in thread
* ✗ CI.checkpatch: warning for drm/xe: More BIOS FB takeover fixes (rev2)
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
` (5 preceding siblings ...)
2026-07-15 11:05 ` [PATCH v2 6/6] drm/xe/ggtt: Remove xe_ggtt_insert_bo_at Maarten Lankhorst
@ 2026-07-15 11:50 ` Patchwork
2026-07-15 11:51 ` ✓ i915.CI.BAT: success " Patchwork
` (4 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2026-07-15 11:50 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
== Series Details ==
Series: drm/xe: More BIOS FB takeover fixes (rev2)
URL : https://patchwork.freedesktop.org/series/170430/
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
061140b9bc586ae7f40abc1249c97e1cc72d1b9d
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 789f7ded7c8177bae40ec3e41db47f28c3434b81
Author: Maarten Lankhorst <dev@lankhorst.se>
Date: Wed Jul 15 13:05:57 2026 +0200
drm/xe/ggtt: Remove xe_ggtt_insert_bo_at
This code was created specifically for the display handover,
and can be removed now that we temporarily reserve the area
of GGTT that contains the original framebuffer contents.
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
+ /mt/dim checkpatch da96f9b0a90a3d45db3f3d7002783dbcb1eaa92b drm-intel
1dc928e4acb3 drm/xe/ggtt: Add xe_ggtt_insert_node_at
60040b37eeb9 drm/xe/ggtt: Add xe_ggtt_node_remove_noclear
dbb8260efc88 drm/xe/display: Reserve the original GGTT space before creating a bo
-:21: WARNING:LONG_LINE: line length of 106 exceeds 100 columns
#21: FILE: drivers/gpu/drm/xe/display/xe_initial_plane.c:40:
+static struct xe_ggtt_node *reserve_original_node(struct xe_ggtt *ggtt, u32 base, u32 size, u64 page_size)
total: 0 errors, 1 warnings, 0 checks, 47 lines checked
4d44c04b38f1 drm/xe/display: Use the correct calculation for phys_base on integrated
-:15: WARNING:BAD_REPORTED_BY_LINK: Reported-by: should be immediately followed by Closes: or Link: with a URL to the report
#15:
Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
total: 0 errors, 1 warnings, 0 checks, 8 lines checked
e96b82a1640e drm/xe/display: Remove duplicated code
789f7ded7c81 drm/xe/ggtt: Remove xe_ggtt_insert_bo_at
^ permalink raw reply [flat|nested] 19+ messages in thread* ✓ i915.CI.BAT: success for drm/xe: More BIOS FB takeover fixes (rev2)
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
` (6 preceding siblings ...)
2026-07-15 11:50 ` ✗ CI.checkpatch: warning for drm/xe: More BIOS FB takeover fixes (rev2) Patchwork
@ 2026-07-15 11:51 ` Patchwork
2026-07-15 11:51 ` ✓ CI.KUnit: " Patchwork
` (3 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2026-07-15 11:51 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 1092 bytes --]
== Series Details ==
Series: drm/xe: More BIOS FB takeover fixes (rev2)
URL : https://patchwork.freedesktop.org/series/170431/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_18827 -> Patchwork_170431v2
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170431v2/index.html
Participating hosts (41 -> 39)
------------------------------
Missing (2): bat-dg2-13 fi-snb-2520m
Changes
-------
No changes found
Build changes
-------------
* Linux: CI_DRM_18827 -> Patchwork_170431v2
CI-20190529: 20190529
CI_DRM_18827: 6dd678fdc2f39062bed466d7e3c851736e376531 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_9006: 6380a8af26359dd222e22679442272ded836c463 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_170431v2: 6dd678fdc2f39062bed466d7e3c851736e376531 @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170431v2/index.html
[-- Attachment #2: Type: text/html, Size: 1657 bytes --]
^ permalink raw reply [flat|nested] 19+ messages in thread* ✓ CI.KUnit: success for drm/xe: More BIOS FB takeover fixes (rev2)
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
` (7 preceding siblings ...)
2026-07-15 11:51 ` ✓ i915.CI.BAT: success " Patchwork
@ 2026-07-15 11:51 ` Patchwork
2026-07-15 12:28 ` ✓ Xe.CI.BAT: " Patchwork
` (2 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2026-07-15 11:51 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
== Series Details ==
Series: drm/xe: More BIOS FB takeover fixes (rev2)
URL : https://patchwork.freedesktop.org/series/170430/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[11:50:26] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[11:50:30] 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
[11:51:02] Starting KUnit Kernel (1/1)...
[11:51:02] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[11:51:02] ================== guc_buf (11 subtests) ===================
[11:51:02] [PASSED] test_smallest
[11:51:02] [PASSED] test_largest
[11:51:03] [PASSED] test_granular
[11:51:03] [PASSED] test_unique
[11:51:03] [PASSED] test_overlap
[11:51:03] [PASSED] test_reusable
[11:51:03] [PASSED] test_too_big
[11:51:03] [PASSED] test_flush
[11:51:03] [PASSED] test_lookup
[11:51:03] [PASSED] test_data
[11:51:03] [PASSED] test_class
[11:51:03] ===================== [PASSED] guc_buf =====================
[11:51:03] =================== guc_dbm (7 subtests) ===================
[11:51:03] [PASSED] test_empty
[11:51:03] [PASSED] test_default
[11:51:03] ======================== test_size ========================
[11:51:03] [PASSED] 4
[11:51:03] [PASSED] 8
[11:51:03] [PASSED] 32
[11:51:03] [PASSED] 256
[11:51:03] ==================== [PASSED] test_size ====================
[11:51:03] ======================= test_reuse ========================
[11:51:03] [PASSED] 4
[11:51:03] [PASSED] 8
[11:51:03] [PASSED] 32
[11:51:03] [PASSED] 256
[11:51:03] =================== [PASSED] test_reuse ====================
[11:51:03] =================== test_range_overlap ====================
[11:51:03] [PASSED] 4
[11:51:03] [PASSED] 8
[11:51:03] [PASSED] 32
[11:51:03] [PASSED] 256
[11:51:03] =============== [PASSED] test_range_overlap ================
[11:51:03] =================== test_range_compact ====================
[11:51:03] [PASSED] 4
[11:51:03] [PASSED] 8
[11:51:03] [PASSED] 32
[11:51:03] [PASSED] 256
[11:51:03] =============== [PASSED] test_range_compact ================
[11:51:03] ==================== test_range_spare =====================
[11:51:03] [PASSED] 4
[11:51:03] [PASSED] 8
[11:51:03] [PASSED] 32
[11:51:03] [PASSED] 256
[11:51:03] ================ [PASSED] test_range_spare =================
[11:51:03] ===================== [PASSED] guc_dbm =====================
[11:51:03] =================== guc_idm (6 subtests) ===================
[11:51:03] [PASSED] bad_init
[11:51:03] [PASSED] no_init
[11:51:03] [PASSED] init_fini
[11:51:03] [PASSED] check_used
[11:51:03] [PASSED] check_quota
[11:51:03] [PASSED] check_all
[11:51:03] ===================== [PASSED] guc_idm =====================
[11:51:03] =============== guc_klv_helpers (9 subtests) ===============
[11:51:03] [PASSED] test_count
[11:51:03] [PASSED] test_encode_u32
[11:51:03] [PASSED] test_encode_u64
[11:51:03] [PASSED] test_encode_string
[11:51:03] [PASSED] test_encode_object_raw
[11:51:03] [PASSED] test_encode_object_klv
[11:51:03] [PASSED] test_encode_object_nested
[11:51:03] [PASSED] test_encode_object_basic
[11:51:03] [PASSED] test_print
[11:51:03] ================= [PASSED] guc_klv_helpers =================
[11:51:03] ================== no_relay (3 subtests) ===================
[11:51:03] [PASSED] xe_drops_guc2pf_if_not_ready
[11:51:03] [PASSED] xe_drops_guc2vf_if_not_ready
[11:51:03] [PASSED] xe_rejects_send_if_not_ready
[11:51:03] ==================== [PASSED] no_relay =====================
[11:51:03] ================== pf_relay (14 subtests) ==================
[11:51:03] [PASSED] pf_rejects_guc2pf_too_short
[11:51:03] [PASSED] pf_rejects_guc2pf_too_long
[11:51:03] [PASSED] pf_rejects_guc2pf_no_payload
[11:51:03] [PASSED] pf_fails_no_payload
[11:51:03] [PASSED] pf_fails_bad_origin
[11:51:03] [PASSED] pf_fails_bad_type
[11:51:03] [PASSED] pf_txn_reports_error
[11:51:03] [PASSED] pf_txn_sends_pf2guc
[11:51:03] [PASSED] pf_sends_pf2guc
[11:51:03] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[11:51:03] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[11:51:03] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[11:51:03] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[11:51:03] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[11:51:03] ==================== [PASSED] pf_relay =====================
[11:51:03] ================== vf_relay (3 subtests) ===================
[11:51:03] [PASSED] vf_rejects_guc2vf_too_short
[11:51:03] [PASSED] vf_rejects_guc2vf_too_long
[11:51:03] [PASSED] vf_rejects_guc2vf_no_payload
[11:51:03] ==================== [PASSED] vf_relay =====================
[11:51:03] ================ pf_gt_config (9 subtests) =================
[11:51:03] [PASSED] fair_contexts_1vf
[11:51:03] [PASSED] fair_doorbells_1vf
[11:51:03] [PASSED] fair_ggtt_1vf
[11:51:03] ====================== fair_vram_1vf ======================
[11:51:03] [PASSED] 3.50 GiB
[11:51:03] [PASSED] 11.5 GiB
[11:51:03] [PASSED] 15.5 GiB
[11:51:03] [PASSED] 31.5 GiB
[11:51:03] [PASSED] 63.5 GiB
[11:51:03] [PASSED] 1.91 GiB
[11:51:03] ================== [PASSED] fair_vram_1vf ==================
[11:51:03] ================ fair_vram_1vf_admin_only =================
[11:51:03] [PASSED] 3.50 GiB
[11:51:03] [PASSED] 11.5 GiB
[11:51:03] [PASSED] 15.5 GiB
[11:51:03] [PASSED] 31.5 GiB
[11:51:03] [PASSED] 63.5 GiB
[11:51:03] [PASSED] 1.91 GiB
[11:51:03] ============ [PASSED] fair_vram_1vf_admin_only =============
[11:51:03] ====================== fair_contexts ======================
[11:51:03] [PASSED] 1 VF
[11:51:03] [PASSED] 2 VFs
[11:51:03] [PASSED] 3 VFs
[11:51:03] [PASSED] 4 VFs
[11:51:03] [PASSED] 5 VFs
[11:51:03] [PASSED] 6 VFs
[11:51:03] [PASSED] 7 VFs
[11:51:03] [PASSED] 8 VFs
[11:51:03] [PASSED] 9 VFs
[11:51:03] [PASSED] 10 VFs
[11:51:03] [PASSED] 11 VFs
[11:51:03] [PASSED] 12 VFs
[11:51:03] [PASSED] 13 VFs
[11:51:03] [PASSED] 14 VFs
[11:51:03] [PASSED] 15 VFs
[11:51:03] [PASSED] 16 VFs
[11:51:03] [PASSED] 17 VFs
[11:51:03] [PASSED] 18 VFs
[11:51:03] [PASSED] 19 VFs
[11:51:03] [PASSED] 20 VFs
[11:51:03] [PASSED] 21 VFs
[11:51:03] [PASSED] 22 VFs
[11:51:03] [PASSED] 23 VFs
[11:51:03] [PASSED] 24 VFs
[11:51:03] [PASSED] 25 VFs
[11:51:03] [PASSED] 26 VFs
[11:51:03] [PASSED] 27 VFs
[11:51:03] [PASSED] 28 VFs
[11:51:03] [PASSED] 29 VFs
[11:51:03] [PASSED] 30 VFs
[11:51:03] [PASSED] 31 VFs
[11:51:03] [PASSED] 32 VFs
[11:51:03] [PASSED] 33 VFs
[11:51:03] [PASSED] 34 VFs
[11:51:03] [PASSED] 35 VFs
[11:51:03] [PASSED] 36 VFs
[11:51:03] [PASSED] 37 VFs
[11:51:03] [PASSED] 38 VFs
[11:51:03] [PASSED] 39 VFs
[11:51:03] [PASSED] 40 VFs
[11:51:03] [PASSED] 41 VFs
[11:51:03] [PASSED] 42 VFs
[11:51:03] [PASSED] 43 VFs
[11:51:03] [PASSED] 44 VFs
[11:51:03] [PASSED] 45 VFs
[11:51:03] [PASSED] 46 VFs
[11:51:03] [PASSED] 47 VFs
[11:51:03] [PASSED] 48 VFs
[11:51:03] [PASSED] 49 VFs
[11:51:03] [PASSED] 50 VFs
[11:51:03] [PASSED] 51 VFs
[11:51:03] [PASSED] 52 VFs
[11:51:03] [PASSED] 53 VFs
[11:51:03] [PASSED] 54 VFs
[11:51:03] [PASSED] 55 VFs
[11:51:03] [PASSED] 56 VFs
[11:51:03] [PASSED] 57 VFs
[11:51:03] [PASSED] 58 VFs
[11:51:03] [PASSED] 59 VFs
[11:51:03] [PASSED] 60 VFs
[11:51:03] [PASSED] 61 VFs
[11:51:03] [PASSED] 62 VFs
[11:51:03] [PASSED] 63 VFs
[11:51:03] ================== [PASSED] fair_contexts ==================
[11:51:03] ===================== fair_doorbells ======================
[11:51:03] [PASSED] 1 VF
[11:51:03] [PASSED] 2 VFs
[11:51:03] [PASSED] 3 VFs
[11:51:03] [PASSED] 4 VFs
[11:51:03] [PASSED] 5 VFs
[11:51:03] [PASSED] 6 VFs
[11:51:03] [PASSED] 7 VFs
[11:51:03] [PASSED] 8 VFs
[11:51:03] [PASSED] 9 VFs
[11:51:03] [PASSED] 10 VFs
[11:51:03] [PASSED] 11 VFs
[11:51:03] [PASSED] 12 VFs
[11:51:03] [PASSED] 13 VFs
[11:51:03] [PASSED] 14 VFs
[11:51:03] [PASSED] 15 VFs
[11:51:03] [PASSED] 16 VFs
[11:51:03] [PASSED] 17 VFs
[11:51:03] [PASSED] 18 VFs
[11:51:03] [PASSED] 19 VFs
[11:51:03] [PASSED] 20 VFs
[11:51:03] [PASSED] 21 VFs
[11:51:03] [PASSED] 22 VFs
[11:51:03] [PASSED] 23 VFs
[11:51:03] [PASSED] 24 VFs
[11:51:03] [PASSED] 25 VFs
[11:51:03] [PASSED] 26 VFs
[11:51:03] [PASSED] 27 VFs
[11:51:03] [PASSED] 28 VFs
[11:51:03] [PASSED] 29 VFs
[11:51:03] [PASSED] 30 VFs
[11:51:03] [PASSED] 31 VFs
[11:51:03] [PASSED] 32 VFs
[11:51:03] [PASSED] 33 VFs
[11:51:03] [PASSED] 34 VFs
[11:51:03] [PASSED] 35 VFs
[11:51:03] [PASSED] 36 VFs
[11:51:03] [PASSED] 37 VFs
[11:51:03] [PASSED] 38 VFs
[11:51:03] [PASSED] 39 VFs
[11:51:03] [PASSED] 40 VFs
[11:51:03] [PASSED] 41 VFs
[11:51:03] [PASSED] 42 VFs
[11:51:03] [PASSED] 43 VFs
[11:51:03] [PASSED] 44 VFs
[11:51:03] [PASSED] 45 VFs
[11:51:03] [PASSED] 46 VFs
[11:51:03] [PASSED] 47 VFs
[11:51:03] [PASSED] 48 VFs
[11:51:03] [PASSED] 49 VFs
[11:51:03] [PASSED] 50 VFs
[11:51:03] [PASSED] 51 VFs
[11:51:03] [PASSED] 52 VFs
[11:51:03] [PASSED] 53 VFs
[11:51:03] [PASSED] 54 VFs
[11:51:03] [PASSED] 55 VFs
[11:51:03] [PASSED] 56 VFs
[11:51:03] [PASSED] 57 VFs
[11:51:03] [PASSED] 58 VFs
[11:51:03] [PASSED] 59 VFs
[11:51:03] [PASSED] 60 VFs
[11:51:03] [PASSED] 61 VFs
[11:51:03] [PASSED] 62 VFs
[11:51:03] [PASSED] 63 VFs
[11:51:03] ================= [PASSED] fair_doorbells ==================
[11:51:03] ======================== fair_ggtt ========================
[11:51:03] [PASSED] 1 VF
[11:51:03] [PASSED] 2 VFs
[11:51:03] [PASSED] 3 VFs
[11:51:03] [PASSED] 4 VFs
[11:51:03] [PASSED] 5 VFs
[11:51:03] [PASSED] 6 VFs
[11:51:03] [PASSED] 7 VFs
[11:51:03] [PASSED] 8 VFs
[11:51:03] [PASSED] 9 VFs
[11:51:03] [PASSED] 10 VFs
[11:51:03] [PASSED] 11 VFs
[11:51:03] [PASSED] 12 VFs
[11:51:03] [PASSED] 13 VFs
[11:51:03] [PASSED] 14 VFs
[11:51:03] [PASSED] 15 VFs
[11:51:03] [PASSED] 16 VFs
[11:51:03] [PASSED] 17 VFs
[11:51:03] [PASSED] 18 VFs
[11:51:03] [PASSED] 19 VFs
[11:51:03] [PASSED] 20 VFs
[11:51:03] [PASSED] 21 VFs
[11:51:03] [PASSED] 22 VFs
[11:51:03] [PASSED] 23 VFs
[11:51:03] [PASSED] 24 VFs
[11:51:03] [PASSED] 25 VFs
[11:51:03] [PASSED] 26 VFs
[11:51:03] [PASSED] 27 VFs
[11:51:03] [PASSED] 28 VFs
[11:51:03] [PASSED] 29 VFs
[11:51:03] [PASSED] 30 VFs
[11:51:03] [PASSED] 31 VFs
[11:51:03] [PASSED] 32 VFs
[11:51:03] [PASSED] 33 VFs
[11:51:03] [PASSED] 34 VFs
[11:51:03] [PASSED] 35 VFs
[11:51:03] [PASSED] 36 VFs
[11:51:03] [PASSED] 37 VFs
[11:51:03] [PASSED] 38 VFs
[11:51:03] [PASSED] 39 VFs
[11:51:03] [PASSED] 40 VFs
[11:51:03] [PASSED] 41 VFs
[11:51:03] [PASSED] 42 VFs
[11:51:03] [PASSED] 43 VFs
[11:51:03] [PASSED] 44 VFs
[11:51:03] [PASSED] 45 VFs
[11:51:03] [PASSED] 46 VFs
[11:51:03] [PASSED] 47 VFs
[11:51:03] [PASSED] 48 VFs
[11:51:03] [PASSED] 49 VFs
[11:51:03] [PASSED] 50 VFs
[11:51:03] [PASSED] 51 VFs
[11:51:03] [PASSED] 52 VFs
[11:51:03] [PASSED] 53 VFs
[11:51:03] [PASSED] 54 VFs
[11:51:03] [PASSED] 55 VFs
[11:51:03] [PASSED] 56 VFs
[11:51:03] [PASSED] 57 VFs
[11:51:03] [PASSED] 58 VFs
[11:51:03] [PASSED] 59 VFs
[11:51:03] [PASSED] 60 VFs
[11:51:03] [PASSED] 61 VFs
[11:51:03] [PASSED] 62 VFs
[11:51:03] [PASSED] 63 VFs
[11:51:03] ==================== [PASSED] fair_ggtt ====================
[11:51:03] ======================== fair_vram ========================
[11:51:03] [PASSED] 1 VF
[11:51:03] [PASSED] 2 VFs
[11:51:03] [PASSED] 3 VFs
[11:51:03] [PASSED] 4 VFs
[11:51:03] [PASSED] 5 VFs
[11:51:03] [PASSED] 6 VFs
[11:51:03] [PASSED] 7 VFs
[11:51:03] [PASSED] 8 VFs
[11:51:03] [PASSED] 9 VFs
[11:51:03] [PASSED] 10 VFs
[11:51:03] [PASSED] 11 VFs
[11:51:03] [PASSED] 12 VFs
[11:51:03] [PASSED] 13 VFs
[11:51:03] [PASSED] 14 VFs
[11:51:03] [PASSED] 15 VFs
[11:51:03] [PASSED] 16 VFs
[11:51:03] [PASSED] 17 VFs
[11:51:03] [PASSED] 18 VFs
[11:51:03] [PASSED] 19 VFs
[11:51:03] [PASSED] 20 VFs
[11:51:03] [PASSED] 21 VFs
[11:51:03] [PASSED] 22 VFs
[11:51:03] [PASSED] 23 VFs
[11:51:03] [PASSED] 24 VFs
[11:51:03] [PASSED] 25 VFs
[11:51:03] [PASSED] 26 VFs
[11:51:03] [PASSED] 27 VFs
[11:51:03] [PASSED] 28 VFs
[11:51:03] [PASSED] 29 VFs
[11:51:03] [PASSED] 30 VFs
[11:51:03] [PASSED] 31 VFs
[11:51:03] [PASSED] 32 VFs
[11:51:03] [PASSED] 33 VFs
[11:51:03] [PASSED] 34 VFs
[11:51:03] [PASSED] 35 VFs
[11:51:03] [PASSED] 36 VFs
[11:51:03] [PASSED] 37 VFs
[11:51:03] [PASSED] 38 VFs
[11:51:03] [PASSED] 39 VFs
[11:51:03] [PASSED] 40 VFs
[11:51:03] [PASSED] 41 VFs
[11:51:03] [PASSED] 42 VFs
[11:51:03] [PASSED] 43 VFs
[11:51:03] [PASSED] 44 VFs
[11:51:03] [PASSED] 45 VFs
[11:51:03] [PASSED] 46 VFs
[11:51:03] [PASSED] 47 VFs
[11:51:03] [PASSED] 48 VFs
[11:51:03] [PASSED] 49 VFs
[11:51:03] [PASSED] 50 VFs
[11:51:03] [PASSED] 51 VFs
[11:51:03] [PASSED] 52 VFs
[11:51:03] [PASSED] 53 VFs
[11:51:03] [PASSED] 54 VFs
[11:51:03] [PASSED] 55 VFs
[11:51:03] [PASSED] 56 VFs
[11:51:03] [PASSED] 57 VFs
[11:51:03] [PASSED] 58 VFs
[11:51:03] [PASSED] 59 VFs
[11:51:03] [PASSED] 60 VFs
[11:51:03] [PASSED] 61 VFs
[11:51:03] [PASSED] 62 VFs
[11:51:03] [PASSED] 63 VFs
[11:51:03] ==================== [PASSED] fair_vram ====================
[11:51:03] ================== [PASSED] pf_gt_config ===================
[11:51:03] ===================== lmtt (1 subtest) =====================
[11:51:03] ======================== test_ops =========================
[11:51:03] [PASSED] 2-level
[11:51:03] [PASSED] multi-level
[11:51:03] ==================== [PASSED] test_ops =====================
[11:51:03] ====================== [PASSED] lmtt =======================
[11:51:03] ================= sriov_packet (1 subtest) =================
[11:51:03] [PASSED] test_descriptor_init
[11:51:03] ================== [PASSED] sriov_packet ===================
[11:51:03] ================= pf_service (11 subtests) =================
[11:51:03] [PASSED] pf_negotiate_any
[11:51:03] [PASSED] pf_negotiate_base_match
[11:51:03] [PASSED] pf_negotiate_base_newer
[11:51:03] [PASSED] pf_negotiate_base_next
[11:51:03] [SKIPPED] pf_negotiate_base_older (no older minor)
[11:51:03] [PASSED] pf_negotiate_base_prev
[11:51:03] [PASSED] pf_negotiate_latest_match
[11:51:03] [PASSED] pf_negotiate_latest_newer
[11:51:03] [PASSED] pf_negotiate_latest_next
[11:51:03] [SKIPPED] pf_negotiate_latest_older (no older minor)
[11:51:03] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[11:51:03] =================== [PASSED] pf_service ====================
[11:51:03] ================= xe_guc_g2g (2 subtests) ==================
[11:51:03] ============== xe_live_guc_g2g_kunit_default ==============
[11:51:03] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[11:51:03] ============== xe_live_guc_g2g_kunit_allmem ===============
[11:51:03] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[11:51:03] =================== [SKIPPED] xe_guc_g2g ===================
[11:51:03] =================== xe_mocs (2 subtests) ===================
[11:51:03] ================ xe_live_mocs_kernel_kunit ================
[11:51:03] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[11:51:03] ================ xe_live_mocs_reset_kunit =================
[11:51:03] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[11:51:03] ==================== [SKIPPED] xe_mocs =====================
[11:51:03] ================= xe_migrate (2 subtests) ==================
[11:51:03] ================= xe_migrate_sanity_kunit =================
[11:51:03] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[11:51:03] ================== xe_validate_ccs_kunit ==================
[11:51:03] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[11:51:03] =================== [SKIPPED] xe_migrate ===================
[11:51:03] ================== xe_dma_buf (1 subtest) ==================
[11:51:03] ==================== xe_dma_buf_kunit =====================
[11:51:03] ================ [SKIPPED] xe_dma_buf_kunit ================
[11:51:03] =================== [SKIPPED] xe_dma_buf ===================
[11:51:03] ================= xe_bo_shrink (1 subtest) =================
[11:51:03] =================== xe_bo_shrink_kunit ====================
[11:51:03] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[11:51:03] ================== [SKIPPED] xe_bo_shrink ==================
[11:51:03] ==================== xe_bo (2 subtests) ====================
[11:51:03] ================== xe_ccs_migrate_kunit ===================
[11:51:03] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[11:51:03] ==================== xe_bo_evict_kunit ====================
[11:51:03] =============== [SKIPPED] xe_bo_evict_kunit ================
[11:51:03] ===================== [SKIPPED] xe_bo ======================
[11:51:03] ==================== args (13 subtests) ====================
[11:51:03] [PASSED] count_args_test
[11:51:03] [PASSED] call_args_example
[11:51:03] [PASSED] call_args_test
[11:51:03] [PASSED] drop_first_arg_example
[11:51:03] [PASSED] drop_first_arg_test
[11:51:03] [PASSED] first_arg_example
[11:51:03] [PASSED] first_arg_test
[11:51:03] [PASSED] last_arg_example
[11:51:03] [PASSED] last_arg_test
[11:51:03] [PASSED] pick_arg_example
[11:51:03] [PASSED] if_args_example
[11:51:03] [PASSED] if_args_test
[11:51:03] [PASSED] sep_comma_example
[11:51:03] ====================== [PASSED] args =======================
[11:51:03] =================== xe_pci (3 subtests) ====================
[11:51:03] ==================== check_graphics_ip ====================
[11:51:03] [PASSED] 12.00 Xe_LP
[11:51:03] [PASSED] 12.10 Xe_LP+
[11:51:03] [PASSED] 12.55 Xe_HPG
[11:51:03] [PASSED] 12.60 Xe_HPC
[11:51:03] [PASSED] 12.70 Xe_LPG
[11:51:03] [PASSED] 12.71 Xe_LPG
[11:51:03] [PASSED] 12.74 Xe_LPG+
[11:51:03] [PASSED] 20.01 Xe2_HPG
[11:51:03] [PASSED] 20.02 Xe2_HPG
[11:51:03] [PASSED] 20.04 Xe2_LPG
[11:51:03] [PASSED] 30.00 Xe3_LPG
[11:51:03] [PASSED] 30.01 Xe3_LPG
[11:51:03] [PASSED] 30.03 Xe3_LPG
[11:51:03] [PASSED] 30.04 Xe3_LPG
[11:51:03] [PASSED] 30.05 Xe3_LPG
[11:51:03] [PASSED] 35.10 Xe3p_LPG
[11:51:03] [PASSED] 35.11 Xe3p_XPC
[11:51:03] ================ [PASSED] check_graphics_ip ================
[11:51:03] ===================== check_media_ip ======================
[11:51:03] [PASSED] 12.00 Xe_M
[11:51:03] [PASSED] 12.55 Xe_HPM
[11:51:03] [PASSED] 13.00 Xe_LPM+
[11:51:03] [PASSED] 13.01 Xe2_HPM
[11:51:03] [PASSED] 20.00 Xe2_LPM
[11:51:03] [PASSED] 30.00 Xe3_LPM
[11:51:03] [PASSED] 30.02 Xe3_LPM
[11:51:03] [PASSED] 35.00 Xe3p_LPM
[11:51:03] [PASSED] 35.03 Xe3p_HPM
[11:51:03] ================= [PASSED] check_media_ip ==================
[11:51:03] =================== check_platform_desc ===================
[11:51:03] [PASSED] 0x9A60 (TIGERLAKE)
[11:51:03] [PASSED] 0x9A68 (TIGERLAKE)
[11:51:03] [PASSED] 0x9A70 (TIGERLAKE)
[11:51:03] [PASSED] 0x9A40 (TIGERLAKE)
[11:51:03] [PASSED] 0x9A49 (TIGERLAKE)
[11:51:03] [PASSED] 0x9A59 (TIGERLAKE)
[11:51:03] [PASSED] 0x9A78 (TIGERLAKE)
[11:51:03] [PASSED] 0x9AC0 (TIGERLAKE)
[11:51:03] [PASSED] 0x9AC9 (TIGERLAKE)
[11:51:03] [PASSED] 0x9AD9 (TIGERLAKE)
[11:51:03] [PASSED] 0x9AF8 (TIGERLAKE)
[11:51:03] [PASSED] 0x4C80 (ROCKETLAKE)
[11:51:03] [PASSED] 0x4C8A (ROCKETLAKE)
[11:51:03] [PASSED] 0x4C8B (ROCKETLAKE)
[11:51:03] [PASSED] 0x4C8C (ROCKETLAKE)
[11:51:03] [PASSED] 0x4C90 (ROCKETLAKE)
[11:51:03] [PASSED] 0x4C9A (ROCKETLAKE)
[11:51:03] [PASSED] 0x4680 (ALDERLAKE_S)
[11:51:03] [PASSED] 0x4682 (ALDERLAKE_S)
[11:51:03] [PASSED] 0x4688 (ALDERLAKE_S)
[11:51:03] [PASSED] 0x468A (ALDERLAKE_S)
[11:51:03] [PASSED] 0x468B (ALDERLAKE_S)
[11:51:03] [PASSED] 0x4690 (ALDERLAKE_S)
[11:51:03] [PASSED] 0x4692 (ALDERLAKE_S)
[11:51:03] [PASSED] 0x4693 (ALDERLAKE_S)
[11:51:03] [PASSED] 0x46A0 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46A1 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46A2 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46A3 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46A6 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46A8 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46AA (ALDERLAKE_P)
[11:51:03] [PASSED] 0x462A (ALDERLAKE_P)
[11:51:03] [PASSED] 0x4626 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x4628 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46B0 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46B1 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46B2 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46B3 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46C0 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46C1 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46C2 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46C3 (ALDERLAKE_P)
[11:51:03] [PASSED] 0x46D0 (ALDERLAKE_N)
[11:51:03] [PASSED] 0x46D1 (ALDERLAKE_N)
[11:51:03] [PASSED] 0x46D2 (ALDERLAKE_N)
[11:51:03] [PASSED] 0x46D3 (ALDERLAKE_N)
[11:51:03] [PASSED] 0x46D4 (ALDERLAKE_N)
[11:51:03] [PASSED] 0xA721 (ALDERLAKE_P)
[11:51:03] [PASSED] 0xA7A1 (ALDERLAKE_P)
[11:51:03] [PASSED] 0xA7A9 (ALDERLAKE_P)
[11:51:03] [PASSED] 0xA7AC (ALDERLAKE_P)
[11:51:03] [PASSED] 0xA7AD (ALDERLAKE_P)
[11:51:03] [PASSED] 0xA720 (ALDERLAKE_P)
[11:51:03] [PASSED] 0xA7A0 (ALDERLAKE_P)
[11:51:03] [PASSED] 0xA7A8 (ALDERLAKE_P)
[11:51:03] [PASSED] 0xA7AA (ALDERLAKE_P)
[11:51:03] [PASSED] 0xA7AB (ALDERLAKE_P)
[11:51:03] [PASSED] 0xA780 (ALDERLAKE_S)
[11:51:03] [PASSED] 0xA781 (ALDERLAKE_S)
[11:51:03] [PASSED] 0xA782 (ALDERLAKE_S)
[11:51:03] [PASSED] 0xA783 (ALDERLAKE_S)
[11:51:03] [PASSED] 0xA788 (ALDERLAKE_S)
[11:51:03] [PASSED] 0xA789 (ALDERLAKE_S)
[11:51:03] [PASSED] 0xA78A (ALDERLAKE_S)
[11:51:03] [PASSED] 0xA78B (ALDERLAKE_S)
[11:51:03] [PASSED] 0x4905 (DG1)
[11:51:03] [PASSED] 0x4906 (DG1)
[11:51:03] [PASSED] 0x4907 (DG1)
[11:51:03] [PASSED] 0x4908 (DG1)
[11:51:03] [PASSED] 0x4909 (DG1)
[11:51:03] [PASSED] 0x56C0 (DG2)
[11:51:03] [PASSED] 0x56C2 (DG2)
[11:51:03] [PASSED] 0x56C1 (DG2)
[11:51:03] [PASSED] 0x7D51 (METEORLAKE)
[11:51:03] [PASSED] 0x7DD1 (METEORLAKE)
[11:51:03] [PASSED] 0x7D41 (METEORLAKE)
[11:51:03] [PASSED] 0x7D67 (METEORLAKE)
[11:51:03] [PASSED] 0xB640 (METEORLAKE)
[11:51:03] [PASSED] 0x56A0 (DG2)
[11:51:03] [PASSED] 0x56A1 (DG2)
[11:51:03] [PASSED] 0x56A2 (DG2)
[11:51:03] [PASSED] 0x56BE (DG2)
[11:51:03] [PASSED] 0x56BF (DG2)
[11:51:03] [PASSED] 0x5690 (DG2)
[11:51:03] [PASSED] 0x5691 (DG2)
[11:51:03] [PASSED] 0x5692 (DG2)
[11:51:03] [PASSED] 0x56A5 (DG2)
[11:51:03] [PASSED] 0x56A6 (DG2)
[11:51:03] [PASSED] 0x56B0 (DG2)
[11:51:03] [PASSED] 0x56B1 (DG2)
[11:51:03] [PASSED] 0x56BA (DG2)
[11:51:03] [PASSED] 0x56BB (DG2)
[11:51:03] [PASSED] 0x56BC (DG2)
[11:51:03] [PASSED] 0x56BD (DG2)
[11:51:03] [PASSED] 0x5693 (DG2)
[11:51:03] [PASSED] 0x5694 (DG2)
[11:51:03] [PASSED] 0x5695 (DG2)
[11:51:03] [PASSED] 0x56A3 (DG2)
[11:51:03] [PASSED] 0x56A4 (DG2)
[11:51:03] [PASSED] 0x56B2 (DG2)
[11:51:03] [PASSED] 0x56B3 (DG2)
[11:51:03] [PASSED] 0x5696 (DG2)
[11:51:03] [PASSED] 0x5697 (DG2)
[11:51:03] [PASSED] 0xB69 (PVC)
[11:51:03] [PASSED] 0xB6E (PVC)
[11:51:03] [PASSED] 0xBD4 (PVC)
[11:51:03] [PASSED] 0xBD5 (PVC)
[11:51:03] [PASSED] 0xBD6 (PVC)
[11:51:03] [PASSED] 0xBD7 (PVC)
[11:51:03] [PASSED] 0xBD8 (PVC)
[11:51:03] [PASSED] 0xBD9 (PVC)
[11:51:03] [PASSED] 0xBDA (PVC)
[11:51:03] [PASSED] 0xBDB (PVC)
[11:51:03] [PASSED] 0xBE0 (PVC)
[11:51:03] [PASSED] 0xBE1 (PVC)
[11:51:03] [PASSED] 0xBE5 (PVC)
[11:51:03] [PASSED] 0x7D40 (METEORLAKE)
[11:51:03] [PASSED] 0x7D45 (METEORLAKE)
[11:51:03] [PASSED] 0x7D55 (METEORLAKE)
[11:51:03] [PASSED] 0x7D60 (METEORLAKE)
[11:51:03] [PASSED] 0x7DD5 (METEORLAKE)
[11:51:03] [PASSED] 0x6420 (LUNARLAKE)
[11:51:03] [PASSED] 0x64A0 (LUNARLAKE)
[11:51:03] [PASSED] 0x64B0 (LUNARLAKE)
[11:51:03] [PASSED] 0xE202 (BATTLEMAGE)
[11:51:03] [PASSED] 0xE209 (BATTLEMAGE)
[11:51:03] [PASSED] 0xE20B (BATTLEMAGE)
[11:51:03] [PASSED] 0xE20C (BATTLEMAGE)
[11:51:03] [PASSED] 0xE20D (BATTLEMAGE)
[11:51:03] [PASSED] 0xE210 (BATTLEMAGE)
[11:51:03] [PASSED] 0xE211 (BATTLEMAGE)
[11:51:03] [PASSED] 0xE212 (BATTLEMAGE)
[11:51:03] [PASSED] 0xE216 (BATTLEMAGE)
[11:51:03] [PASSED] 0xE220 (BATTLEMAGE)
[11:51:03] [PASSED] 0xE221 (BATTLEMAGE)
[11:51:03] [PASSED] 0xE222 (BATTLEMAGE)
[11:51:03] [PASSED] 0xE223 (BATTLEMAGE)
[11:51:03] [PASSED] 0xB080 (PANTHERLAKE)
[11:51:03] [PASSED] 0xB081 (PANTHERLAKE)
[11:51:03] [PASSED] 0xB082 (PANTHERLAKE)
[11:51:03] [PASSED] 0xB083 (PANTHERLAKE)
[11:51:03] [PASSED] 0xB084 (PANTHERLAKE)
[11:51:03] [PASSED] 0xB085 (PANTHERLAKE)
[11:51:03] [PASSED] 0xB086 (PANTHERLAKE)
[11:51:03] [PASSED] 0xB087 (PANTHERLAKE)
[11:51:03] [PASSED] 0xB08F (PANTHERLAKE)
[11:51:03] [PASSED] 0xB090 (PANTHERLAKE)
[11:51:03] [PASSED] 0xB0A0 (PANTHERLAKE)
[11:51:03] [PASSED] 0xB0B0 (PANTHERLAKE)
[11:51:03] [PASSED] 0xFD80 (PANTHERLAKE)
[11:51:03] [PASSED] 0xFD81 (PANTHERLAKE)
[11:51:03] [PASSED] 0xD740 (NOVALAKE_S)
[11:51:03] [PASSED] 0xD741 (NOVALAKE_S)
[11:51:03] [PASSED] 0xD742 (NOVALAKE_S)
[11:51:03] [PASSED] 0xD743 (NOVALAKE_S)
[11:51:03] [PASSED] 0xD745 (NOVALAKE_S)
[11:51:03] [PASSED] 0xD74A (NOVALAKE_S)
[11:51:03] [PASSED] 0xD74B (NOVALAKE_S)
[11:51:03] [PASSED] 0x674C (CRESCENTISLAND)
[11:51:03] [PASSED] 0x674D (CRESCENTISLAND)
[11:51:03] [PASSED] 0x674E (CRESCENTISLAND)
[11:51:03] [PASSED] 0x674F (CRESCENTISLAND)
[11:51:03] [PASSED] 0x6750 (CRESCENTISLAND)
[11:51:03] [PASSED] 0xD750 (NOVALAKE_P)
[11:51:03] [PASSED] 0xD751 (NOVALAKE_P)
[11:51:03] [PASSED] 0xD752 (NOVALAKE_P)
[11:51:03] [PASSED] 0xD753 (NOVALAKE_P)
[11:51:03] [PASSED] 0xD754 (NOVALAKE_P)
[11:51:03] [PASSED] 0xD755 (NOVALAKE_P)
[11:51:03] [PASSED] 0xD756 (NOVALAKE_P)
[11:51:03] [PASSED] 0xD757 (NOVALAKE_P)
[11:51:03] [PASSED] 0xD75F (NOVALAKE_P)
[11:51:03] =============== [PASSED] check_platform_desc ===============
[11:51:03] ===================== [PASSED] xe_pci ======================
[11:51:03] ============= xe_rtp_tables_test (5 subtests) ==============
[11:51:03] ================== xe_rtp_table_gt_test ===================
[11:51:03] [PASSED] gt_was/14011060649
[11:51:03] [PASSED] gt_was/14011059788
[11:51:03] [PASSED] gt_was/14015795083
[11:51:03] [PASSED] gt_was/16021867713
[11:51:03] [PASSED] gt_was/14019449301
[11:51:03] [PASSED] gt_was/16028005424
[11:51:03] [PASSED] gt_was/14026578760
[11:51:03] [PASSED] gt_was/1409420604
[11:51:03] [PASSED] gt_was/1408615072
[11:51:03] [PASSED] gt_was/22010523718
[11:51:03] [PASSED] gt_was/14011006942
[11:51:03] [PASSED] gt_was/14014830051
[11:51:03] [PASSED] gt_was/18018781329
[11:51:03] [PASSED] gt_was/1509235366
[11:51:03] [PASSED] gt_was/18018781329
[11:51:03] [PASSED] gt_was/16016694945
[11:51:03] [PASSED] gt_was/14018575942
[11:51:03] [PASSED] gt_was/22016670082
[11:51:03] [PASSED] gt_was/22016670082
[11:51:03] [PASSED] gt_was/14017421178
[11:51:03] [PASSED] gt_was/16025250150
[11:51:03] [PASSED] gt_was/14021871409
[11:51:03] [PASSED] gt_was/16021865536
[11:51:03] [PASSED] gt_was/14021486841
[11:51:03] [PASSED] gt_was/14025160223
[11:51:03] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[11:51:03] [PASSED] gt_was/14025635424
[11:51:03] [PASSED] gt_was/16028005424
[11:51:03] ============== [PASSED] xe_rtp_table_gt_test ===============
[11:51:03] ================== xe_rtp_table_gt_test ===================
[11:51:03] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[11:51:03] [PASSED] gt_tunings/Tuning: 32B Access Enable
[11:51:03] [PASSED] gt_tunings/Tuning: L3 cache
[11:51:03] [PASSED] gt_tunings/Tuning: L3 cache - media
[11:51:03] [PASSED] gt_tunings/Tuning: Compression Overfetch
[11:51:03] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[11:51:03] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[11:51:03] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[11:51:03] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[11:51:03] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[11:51:03] [PASSED] gt_tunings/Tuning: Stateless compression control
[11:51:03] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[11:51:03] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[11:51:03] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[11:51:03] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[11:51:03] ============== [PASSED] xe_rtp_table_gt_test ===============
[11:51:03] ================== xe_rtp_table_oob_test ==================
[11:51:03] [PASSED] oob_was/1607983814
[11:51:03] [PASSED] oob_was/16010904313
[11:51:03] [PASSED] oob_was/18022495364
[11:51:03] [PASSED] oob_was/22012773006
[11:51:03] [PASSED] oob_was/14014475959
[11:51:03] [PASSED] oob_was/22011391025
[11:51:03] [PASSED] oob_was/22012727170
[11:51:03] [PASSED] oob_was/22012727685
[11:51:03] [PASSED] oob_was/22016596838
[11:51:03] [PASSED] oob_was/18020744125
[11:51:03] [PASSED] oob_was/1409600907
[11:51:03] [PASSED] oob_was/22014953428
[11:51:03] [PASSED] oob_was/16017236439
[11:51:03] [PASSED] oob_was/14019821291
[11:51:03] [PASSED] oob_was/14015076503
[11:51:03] [PASSED] oob_was/14018913170
[11:51:03] [PASSED] oob_was/14018094691
[11:51:03] [PASSED] oob_was/18024947630
[11:51:03] [PASSED] oob_was/16022287689
[11:51:03] [PASSED] oob_was/13011645652
[11:51:03] [PASSED] oob_was/14022293748
[11:51:03] [PASSED] oob_was/22019794406
[11:51:03] [PASSED] oob_was/22019338487
[11:51:03] [PASSED] oob_was/16023588340
[11:51:03] [PASSED] oob_was/14019789679
[11:51:03] [PASSED] oob_was/14022866841
[11:51:03] [PASSED] oob_was/16021333562
[11:51:03] [PASSED] oob_was/14016712196
[11:51:03] [PASSED] oob_was/14015568240
[11:51:03] [PASSED] oob_was/18013179988
[11:51:03] [PASSED] oob_was/1508761755
[11:51:03] [PASSED] oob_was/16023105232
[11:51:03] [PASSED] oob_was/16026508708
[11:51:03] [PASSED] oob_was/14020001231
[11:51:03] [PASSED] oob_was/16023683509
[11:51:03] [PASSED] oob_was/14025515070
[11:51:03] [PASSED] oob_was/15015404425_disable
[11:51:03] [PASSED] oob_was/16026007364
[11:51:03] [PASSED] oob_was/14020316580
[11:51:03] [PASSED] oob_was/14025883347
[11:51:03] [PASSED] oob_was/16029380221
[11:51:03] [PASSED] oob_was/22022079272
[11:51:03] [PASSED] oob_was/16029897822
[11:51:03] ============== [PASSED] xe_rtp_table_oob_test ==============
[11:51:03] ================ xe_rtp_table_dev_oob_test ================
[11:51:03] [PASSED] device_oob_was/22010954014
[11:51:03] [PASSED] device_oob_was/15015404425
[11:51:03] [PASSED] device_oob_was/22019338487_display
[11:51:03] [PASSED] device_oob_was/14022085890
[11:51:03] [PASSED] device_oob_was/14026539277
[11:51:03] [PASSED] device_oob_was/14026633728
[11:51:03] [PASSED] device_oob_was/14026746987
[11:51:03] [PASSED] device_oob_was/14026779378
[11:51:03] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[11:51:03] ========== xe_rtp_table_missing_upper_bound_test ==========
[11:51:03] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[11:51:03] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[11:51:03] [PASSED] register_whitelist/1806527549
[11:51:03] [PASSED] register_whitelist/allow_read_ctx_timestamp
[11:51:03] [PASSED] register_whitelist/allow_read_queue_timestamp
[11:51:03] [PASSED] register_whitelist/16014440446
[11:51:03] [PASSED] register_whitelist/16017236439
[11:51:03] [PASSED] register_whitelist/16020183090
[11:51:03] [PASSED] register_whitelist/14024997852
[11:51:03] [PASSED] register_whitelist/14024997852
[11:51:03] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[11:51:03] =============== [PASSED] xe_rtp_tables_test ================
[11:51:03] =================== xe_rtp (3 subtests) ====================
[11:51:03] =================== xe_rtp_rules_tests ====================
[11:51:03] [PASSED] no
[11:51:03] [PASSED] yes
[11:51:03] [PASSED] no-and-no
[11:51:03] [PASSED] no-and-yes
[11:51:03] [PASSED] yes-and-no
[11:51:03] [PASSED] yes-and-yes
[11:51:03] [PASSED] no-or-no
[11:51:03] [PASSED] no-or-yes
[11:51:03] [PASSED] yes-or-no
[11:51:03] [PASSED] yes-or-yes
[11:51:03] [PASSED] no-yes-or-yes-no
[11:51:03] [PASSED] no-yes-or-yes-yes
[11:51:03] [PASSED] yes-yes-or-no-yes
[11:51:03] [PASSED] yes-yes-or-yes-yes
[11:51:03] [PASSED] no-no-or-yes-or-no
[11:51:03] [PASSED] or
[11:51:03] [PASSED] or-yes
[11:51:03] [PASSED] or-no
[11:51:03] [PASSED] yes-or
[11:51:03] [PASSED] no-or
[11:51:03] [PASSED] no-or-or-yes
[11:51:03] [PASSED] yes-or-or-no
[11:51:03] [PASSED] no-or-or-no
[11:51:03] [PASSED] missing-context-engine-class
[11:51:03] [PASSED] missing-context-engine-class-or-yes
[11:51:03] [PASSED] missing-context-engine-class-or-or-yes
[11:51:03] =============== [PASSED] xe_rtp_rules_tests ================
[11:51:03] =============== xe_rtp_process_to_sr_tests ================
[11:51:03] [PASSED] coalesce-same-reg
[11:51:03] [PASSED] coalesce-same-reg-literal-and-func
[11:51:03] [PASSED] no-match-no-add
[11:51:03] [PASSED] two-regs-two-entries
[11:51:03] [PASSED] clr-one-set-other
[11:51:03] [PASSED] set-field
[11:51:03] [PASSED] conflict-duplicate
[11:51:03] [PASSED] conflict-not-disjoint
[11:51:03] [PASSED] conflict-not-disjoint-literal-and-func
[11:51:03] [PASSED] conflict-reg-type
[11:51:03] [PASSED] bad-mcr-reg-forced-to-regular
[11:51:03] [PASSED] bad-regular-reg-forced-to-mcr
[11:51:03] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[11:51:03] ================== xe_rtp_process_tests ===================
[11:51:03] [PASSED] active1
[11:51:03] [PASSED] active2
[11:51:03] [PASSED] active-inactive
[11:51:03] [PASSED] inactive-active
[11:51:03] [PASSED] inactive-active-inactive
[11:51:03] [PASSED] inactive-inactive-inactive
[11:51:03] ============== [PASSED] xe_rtp_process_tests ===============
[11:51:03] ===================== [PASSED] xe_rtp ======================
[11:51:03] ==================== xe_wa (1 subtest) =====================
[11:51:03] ======================== xe_wa_gt =========================
[11:51:03] [PASSED] TIGERLAKE B0
[11:51:03] [PASSED] DG1 A0
[11:51:03] [PASSED] DG1 B0
[11:51:03] [PASSED] ALDERLAKE_S A0
[11:51:03] [PASSED] ALDERLAKE_S B0
[11:51:03] [PASSED] ALDERLAKE_S C0
[11:51:03] [PASSED] ALDERLAKE_S D0
[11:51:03] [PASSED] ALDERLAKE_P A0
[11:51:03] [PASSED] ALDERLAKE_P B0
[11:51:03] [PASSED] ALDERLAKE_P C0
[11:51:03] [PASSED] ALDERLAKE_S RPLS D0
[11:51:03] [PASSED] ALDERLAKE_P RPLU E0
[11:51:03] [PASSED] DG2 G10 C0
[11:51:03] [PASSED] DG2 G11 B1
[11:51:03] [PASSED] DG2 G12 A1
[11:51:03] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[11:51:03] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[11:51:03] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[11:51:03] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[11:51:03] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[11:51:03] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[11:51:03] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[11:51:03] ==================== [PASSED] xe_wa_gt =====================
[11:51:03] ====================== [PASSED] xe_wa ======================
[11:51:03] ============================================================
[11:51:03] Testing complete. Ran 741 tests: passed: 723, skipped: 18
[11:51:03] Elapsed time: 37.228s total, 4.229s configuring, 32.333s building, 0.654s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[11:51:03] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[11:51:05] 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
[11:51:30] Starting KUnit Kernel (1/1)...
[11:51:30] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[11:51:30] ============ drm_test_pick_cmdline (2 subtests) ============
[11:51:30] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[11:51:30] =============== drm_test_pick_cmdline_named ===============
[11:51:30] [PASSED] NTSC
[11:51:30] [PASSED] NTSC-J
[11:51:30] [PASSED] PAL
[11:51:30] [PASSED] PAL-M
[11:51:30] =========== [PASSED] drm_test_pick_cmdline_named ===========
[11:51:30] ============== [PASSED] drm_test_pick_cmdline ==============
[11:51:30] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[11:51:30] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[11:51:30] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[11:51:30] =========== drm_validate_clone_mode (2 subtests) ===========
[11:51:30] ============== drm_test_check_in_clone_mode ===============
[11:51:30] [PASSED] in_clone_mode
[11:51:30] [PASSED] not_in_clone_mode
[11:51:30] ========== [PASSED] drm_test_check_in_clone_mode ===========
[11:51:30] =============== drm_test_check_valid_clones ===============
[11:51:30] [PASSED] not_in_clone_mode
[11:51:30] [PASSED] valid_clone
[11:51:30] [PASSED] invalid_clone
[11:51:30] =========== [PASSED] drm_test_check_valid_clones ===========
[11:51:30] ============= [PASSED] drm_validate_clone_mode =============
[11:51:30] ============= drm_validate_modeset (1 subtest) =============
[11:51:30] [PASSED] drm_test_check_connector_changed_modeset
[11:51:30] ============== [PASSED] drm_validate_modeset ===============
[11:51:30] ====== drm_test_bridge_get_current_state (1 subtest) =======
[11:51:30] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[11:51:30] ======== [PASSED] drm_test_bridge_get_current_state ========
[11:51:30] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[11:51:30] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[11:51:30] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[11:51:30] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[11:51:30] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[11:51:30] ============== drm_bridge_alloc (2 subtests) ===============
[11:51:30] [PASSED] drm_test_drm_bridge_alloc_basic
[11:51:30] [PASSED] drm_test_drm_bridge_alloc_get_put
[11:51:30] ================ [PASSED] drm_bridge_alloc =================
[11:51:30] ============= drm_bridge_bus_fmt (5 subtests) ==============
[11:51:30] [PASSED] drm_test_bridge_rgb_yuv_rgb
[11:51:30] [PASSED] drm_test_bridge_must_convert_to_yuv444
[11:51:30] [PASSED] drm_test_bridge_hdmi_auto_rgb
[11:51:30] [PASSED] drm_test_bridge_auto_first
[11:51:30] [PASSED] drm_test_bridge_rgb_yuv_no_path
[11:51:30] =============== [PASSED] drm_bridge_bus_fmt ================
[11:51:30] ============= drm_cmdline_parser (40 subtests) =============
[11:51:30] [PASSED] drm_test_cmdline_force_d_only
[11:51:30] [PASSED] drm_test_cmdline_force_D_only_dvi
[11:51:30] [PASSED] drm_test_cmdline_force_D_only_hdmi
[11:51:30] [PASSED] drm_test_cmdline_force_D_only_not_digital
[11:51:30] [PASSED] drm_test_cmdline_force_e_only
[11:51:30] [PASSED] drm_test_cmdline_res
[11:51:30] [PASSED] drm_test_cmdline_res_vesa
[11:51:30] [PASSED] drm_test_cmdline_res_vesa_rblank
[11:51:30] [PASSED] drm_test_cmdline_res_rblank
[11:51:30] [PASSED] drm_test_cmdline_res_bpp
[11:51:30] [PASSED] drm_test_cmdline_res_refresh
[11:51:30] [PASSED] drm_test_cmdline_res_bpp_refresh
[11:51:30] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[11:51:30] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[11:51:30] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[11:51:30] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[11:51:30] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[11:51:30] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[11:51:30] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[11:51:30] [PASSED] drm_test_cmdline_res_margins_force_on
[11:51:30] [PASSED] drm_test_cmdline_res_vesa_margins
[11:51:30] [PASSED] drm_test_cmdline_name
[11:51:30] [PASSED] drm_test_cmdline_name_bpp
[11:51:30] [PASSED] drm_test_cmdline_name_option
[11:51:30] [PASSED] drm_test_cmdline_name_bpp_option
[11:51:30] [PASSED] drm_test_cmdline_rotate_0
[11:51:30] [PASSED] drm_test_cmdline_rotate_90
[11:51:30] [PASSED] drm_test_cmdline_rotate_180
[11:51:30] [PASSED] drm_test_cmdline_rotate_270
[11:51:30] [PASSED] drm_test_cmdline_hmirror
[11:51:30] [PASSED] drm_test_cmdline_vmirror
[11:51:30] [PASSED] drm_test_cmdline_margin_options
[11:51:30] [PASSED] drm_test_cmdline_multiple_options
[11:51:30] [PASSED] drm_test_cmdline_bpp_extra_and_option
[11:51:30] [PASSED] drm_test_cmdline_extra_and_option
[11:51:30] [PASSED] drm_test_cmdline_freestanding_options
[11:51:30] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[11:51:30] [PASSED] drm_test_cmdline_panel_orientation
[11:51:30] ================ drm_test_cmdline_invalid =================
[11:51:30] [PASSED] margin_only
[11:51:30] [PASSED] interlace_only
[11:51:30] [PASSED] res_missing_x
[11:51:30] [PASSED] res_missing_y
[11:51:30] [PASSED] res_bad_y
[11:51:30] [PASSED] res_missing_y_bpp
[11:51:30] [PASSED] res_bad_bpp
[11:51:30] [PASSED] res_bad_refresh
[11:51:30] [PASSED] res_bpp_refresh_force_on_off
[11:51:30] [PASSED] res_invalid_mode
[11:51:30] [PASSED] res_bpp_wrong_place_mode
[11:51:30] [PASSED] name_bpp_refresh
[11:51:30] [PASSED] name_refresh
[11:51:30] [PASSED] name_refresh_wrong_mode
[11:51:30] [PASSED] name_refresh_invalid_mode
[11:51:30] [PASSED] rotate_multiple
[11:51:30] [PASSED] rotate_invalid_val
[11:51:30] [PASSED] rotate_truncated
[11:51:30] [PASSED] invalid_option
[11:51:30] [PASSED] invalid_tv_option
[11:51:30] [PASSED] truncated_tv_option
[11:51:30] ============ [PASSED] drm_test_cmdline_invalid =============
[11:51:30] =============== drm_test_cmdline_tv_options ===============
[11:51:30] [PASSED] NTSC
[11:51:30] [PASSED] NTSC_443
[11:51:30] [PASSED] NTSC_J
[11:51:30] [PASSED] PAL
[11:51:30] [PASSED] PAL_M
[11:51:30] [PASSED] PAL_N
[11:51:30] [PASSED] SECAM
[11:51:30] [PASSED] MONO_525
[11:51:30] [PASSED] MONO_625
[11:51:30] =========== [PASSED] drm_test_cmdline_tv_options ===========
[11:51:30] =============== [PASSED] drm_cmdline_parser ================
[11:51:30] ========== drmm_connector_hdmi_init (20 subtests) ==========
[11:51:30] [PASSED] drm_test_connector_hdmi_init_valid
[11:51:30] [PASSED] drm_test_connector_hdmi_init_bpc_8
[11:51:30] [PASSED] drm_test_connector_hdmi_init_bpc_10
[11:51:30] [PASSED] drm_test_connector_hdmi_init_bpc_12
[11:51:30] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[11:51:30] [PASSED] drm_test_connector_hdmi_init_bpc_null
[11:51:30] [PASSED] drm_test_connector_hdmi_init_formats_empty
[11:51:30] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[11:51:30] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[11:51:30] [PASSED] supported_formats=0x9 yuv420_allowed=1
[11:51:30] [PASSED] supported_formats=0x9 yuv420_allowed=0
[11:51:30] [PASSED] supported_formats=0x5 yuv420_allowed=1
[11:51:30] [PASSED] supported_formats=0x5 yuv420_allowed=0
[11:51:30] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[11:51:30] [PASSED] drm_test_connector_hdmi_init_null_ddc
[11:51:30] [PASSED] drm_test_connector_hdmi_init_null_product
[11:51:30] [PASSED] drm_test_connector_hdmi_init_null_vendor
[11:51:30] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[11:51:30] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[11:51:30] [PASSED] drm_test_connector_hdmi_init_product_valid
[11:51:30] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[11:51:30] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[11:51:30] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[11:51:30] ========= drm_test_connector_hdmi_init_type_valid =========
[11:51:30] [PASSED] HDMI-A
[11:51:30] [PASSED] HDMI-B
[11:51:30] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[11:51:30] ======== drm_test_connector_hdmi_init_type_invalid ========
[11:51:30] [PASSED] Unknown
[11:51:30] [PASSED] VGA
[11:51:30] [PASSED] DVI-I
[11:51:30] [PASSED] DVI-D
[11:51:30] [PASSED] DVI-A
[11:51:30] [PASSED] Composite
[11:51:30] [PASSED] SVIDEO
[11:51:30] [PASSED] LVDS
[11:51:30] [PASSED] Component
[11:51:30] [PASSED] DIN
[11:51:30] [PASSED] DP
[11:51:30] [PASSED] TV
[11:51:30] [PASSED] eDP
[11:51:30] [PASSED] Virtual
[11:51:30] [PASSED] DSI
[11:51:30] [PASSED] DPI
[11:51:30] [PASSED] Writeback
[11:51:30] [PASSED] SPI
[11:51:30] [PASSED] USB
[11:51:30] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[11:51:30] ============ [PASSED] drmm_connector_hdmi_init =============
[11:51:30] ============= drmm_connector_init (3 subtests) =============
[11:51:30] [PASSED] drm_test_drmm_connector_init
[11:51:30] [PASSED] drm_test_drmm_connector_init_null_ddc
[11:51:30] ========= drm_test_drmm_connector_init_type_valid =========
[11:51:30] [PASSED] Unknown
[11:51:30] [PASSED] VGA
[11:51:30] [PASSED] DVI-I
[11:51:30] [PASSED] DVI-D
[11:51:30] [PASSED] DVI-A
[11:51:30] [PASSED] Composite
[11:51:30] [PASSED] SVIDEO
[11:51:30] [PASSED] LVDS
[11:51:30] [PASSED] Component
[11:51:30] [PASSED] DIN
[11:51:30] [PASSED] DP
[11:51:30] [PASSED] HDMI-A
[11:51:30] [PASSED] HDMI-B
[11:51:30] [PASSED] TV
[11:51:30] [PASSED] eDP
[11:51:30] [PASSED] Virtual
[11:51:30] [PASSED] DSI
[11:51:30] [PASSED] DPI
[11:51:30] [PASSED] Writeback
[11:51:30] [PASSED] SPI
[11:51:30] [PASSED] USB
[11:51:30] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[11:51:30] =============== [PASSED] drmm_connector_init ===============
[11:51:30] ========= drm_connector_dynamic_init (6 subtests) ==========
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_init
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_init_properties
[11:51:30] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[11:51:30] [PASSED] Unknown
[11:51:30] [PASSED] VGA
[11:51:30] [PASSED] DVI-I
[11:51:30] [PASSED] DVI-D
[11:51:30] [PASSED] DVI-A
[11:51:30] [PASSED] Composite
[11:51:30] [PASSED] SVIDEO
[11:51:30] [PASSED] LVDS
[11:51:30] [PASSED] Component
[11:51:30] [PASSED] DIN
[11:51:30] [PASSED] DP
[11:51:30] [PASSED] HDMI-A
[11:51:30] [PASSED] HDMI-B
[11:51:30] [PASSED] TV
[11:51:30] [PASSED] eDP
[11:51:30] [PASSED] Virtual
[11:51:30] [PASSED] DSI
[11:51:30] [PASSED] DPI
[11:51:30] [PASSED] Writeback
[11:51:30] [PASSED] SPI
[11:51:30] [PASSED] USB
[11:51:30] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[11:51:30] ======== drm_test_drm_connector_dynamic_init_name =========
[11:51:30] [PASSED] Unknown
[11:51:30] [PASSED] VGA
[11:51:30] [PASSED] DVI-I
[11:51:30] [PASSED] DVI-D
[11:51:30] [PASSED] DVI-A
[11:51:30] [PASSED] Composite
[11:51:30] [PASSED] SVIDEO
[11:51:30] [PASSED] LVDS
[11:51:30] [PASSED] Component
[11:51:30] [PASSED] DIN
[11:51:30] [PASSED] DP
[11:51:30] [PASSED] HDMI-A
[11:51:30] [PASSED] HDMI-B
[11:51:30] [PASSED] TV
[11:51:30] [PASSED] eDP
[11:51:30] [PASSED] Virtual
[11:51:30] [PASSED] DSI
[11:51:30] [PASSED] DPI
[11:51:30] [PASSED] Writeback
[11:51:30] [PASSED] SPI
[11:51:30] [PASSED] USB
[11:51:30] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[11:51:30] =========== [PASSED] drm_connector_dynamic_init ============
[11:51:30] ==== drm_connector_dynamic_register_early (4 subtests) =====
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[11:51:30] ====== [PASSED] drm_connector_dynamic_register_early =======
[11:51:30] ======= drm_connector_dynamic_register (7 subtests) ========
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[11:51:30] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[11:51:30] ========= [PASSED] drm_connector_dynamic_register ==========
[11:51:30] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[11:51:30] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[11:51:30] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[11:51:30] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[11:51:30] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[11:51:30] ========== drm_test_get_tv_mode_from_name_valid ===========
[11:51:30] [PASSED] NTSC
[11:51:30] [PASSED] NTSC-443
[11:51:30] [PASSED] NTSC-J
[11:51:30] [PASSED] PAL
[11:51:30] [PASSED] PAL-M
[11:51:30] [PASSED] PAL-N
[11:51:30] [PASSED] SECAM
[11:51:30] [PASSED] Mono
[11:51:30] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[11:51:30] [PASSED] drm_test_get_tv_mode_from_name_truncated
[11:51:30] ============ [PASSED] drm_get_tv_mode_from_name ============
[11:51:30] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[11:51:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[11:51:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[11:51:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[11:51:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[11:51:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[11:51:30] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[11:51:30] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[11:51:30] [PASSED] VIC 96
[11:51:30] [PASSED] VIC 97
[11:51:30] [PASSED] VIC 101
[11:51:30] [PASSED] VIC 102
[11:51:30] [PASSED] VIC 106
[11:51:30] [PASSED] VIC 107
[11:51:30] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[11:51:30] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[11:51:30] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[11:51:30] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[11:51:30] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[11:51:30] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[11:51:30] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[11:51:30] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[11:51:30] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[11:51:30] [PASSED] Automatic
[11:51:30] [PASSED] Full
[11:51:30] [PASSED] Limited 16:235
[11:51:30] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[11:51:30] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[11:51:30] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[11:51:30] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[11:51:30] === drm_test_drm_hdmi_connector_get_output_format_name ====
[11:51:30] [PASSED] RGB
[11:51:30] [PASSED] YUV 4:2:0
[11:51:30] [PASSED] YUV 4:2:2
[11:51:30] [PASSED] YUV 4:4:4
[11:51:30] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[11:51:30] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[11:51:30] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[11:51:30] ============= drm_damage_helper (21 subtests) ==============
[11:51:30] [PASSED] drm_test_damage_iter_no_damage
[11:51:30] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[11:51:30] [PASSED] drm_test_damage_iter_no_damage_src_moved
[11:51:30] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[11:51:30] [PASSED] drm_test_damage_iter_no_damage_not_visible
[11:51:30] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[11:51:30] [PASSED] drm_test_damage_iter_no_damage_no_fb
[11:51:30] [PASSED] drm_test_damage_iter_simple_damage
[11:51:30] [PASSED] drm_test_damage_iter_single_damage
[11:51:30] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[11:51:30] [PASSED] drm_test_damage_iter_single_damage_outside_src
[11:51:30] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[11:51:30] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[11:51:30] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[11:51:30] [PASSED] drm_test_damage_iter_single_damage_src_moved
[11:51:30] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[11:51:30] [PASSED] drm_test_damage_iter_damage
[11:51:30] [PASSED] drm_test_damage_iter_damage_one_intersect
[11:51:30] [PASSED] drm_test_damage_iter_damage_one_outside
[11:51:30] [PASSED] drm_test_damage_iter_damage_src_moved
[11:51:30] [PASSED] drm_test_damage_iter_damage_not_visible
[11:51:30] ================ [PASSED] drm_damage_helper ================
[11:51:30] ============== drm_dp_mst_helper (3 subtests) ==============
[11:51:30] ============== drm_test_dp_mst_calc_pbn_mode ==============
[11:51:30] [PASSED] Clock 154000 BPP 30 DSC disabled
[11:51:30] [PASSED] Clock 234000 BPP 30 DSC disabled
[11:51:30] [PASSED] Clock 297000 BPP 24 DSC disabled
[11:51:30] [PASSED] Clock 332880 BPP 24 DSC enabled
[11:51:30] [PASSED] Clock 324540 BPP 24 DSC enabled
[11:51:30] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[11:51:30] ============== drm_test_dp_mst_calc_pbn_div ===============
[11:51:30] [PASSED] Link rate 2000000 lane count 4
[11:51:30] [PASSED] Link rate 2000000 lane count 2
[11:51:30] [PASSED] Link rate 2000000 lane count 1
[11:51:30] [PASSED] Link rate 1350000 lane count 4
[11:51:30] [PASSED] Link rate 1350000 lane count 2
[11:51:30] [PASSED] Link rate 1350000 lane count 1
[11:51:30] [PASSED] Link rate 1000000 lane count 4
[11:51:30] [PASSED] Link rate 1000000 lane count 2
[11:51:30] [PASSED] Link rate 1000000 lane count 1
[11:51:30] [PASSED] Link rate 810000 lane count 4
[11:51:30] [PASSED] Link rate 810000 lane count 2
[11:51:30] [PASSED] Link rate 810000 lane count 1
[11:51:30] [PASSED] Link rate 540000 lane count 4
[11:51:30] [PASSED] Link rate 540000 lane count 2
[11:51:30] [PASSED] Link rate 540000 lane count 1
[11:51:30] [PASSED] Link rate 270000 lane count 4
[11:51:30] [PASSED] Link rate 270000 lane count 2
[11:51:30] [PASSED] Link rate 270000 lane count 1
[11:51:30] [PASSED] Link rate 162000 lane count 4
[11:51:30] [PASSED] Link rate 162000 lane count 2
[11:51:30] [PASSED] Link rate 162000 lane count 1
[11:51:30] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[11:51:30] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[11:51:30] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[11:51:30] [PASSED] DP_POWER_UP_PHY with port number
[11:51:30] [PASSED] DP_POWER_DOWN_PHY with port number
[11:51:30] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[11:51:30] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[11:51:30] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[11:51:30] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[11:51:30] [PASSED] DP_QUERY_PAYLOAD with port number
[11:51:30] [PASSED] DP_QUERY_PAYLOAD with VCPI
[11:51:30] [PASSED] DP_REMOTE_DPCD_READ with port number
[11:51:30] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[11:51:30] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[11:51:30] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[11:51:30] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[11:51:30] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[11:51:30] [PASSED] DP_REMOTE_I2C_READ with port number
[11:51:30] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[11:51:30] [PASSED] DP_REMOTE_I2C_READ with transactions array
[11:51:30] [PASSED] DP_REMOTE_I2C_WRITE with port number
[11:51:30] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[11:51:30] [PASSED] DP_REMOTE_I2C_WRITE with data array
[11:51:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[11:51:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[11:51:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[11:51:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[11:51:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[11:51:30] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[11:51:30] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[11:51:30] ================ [PASSED] drm_dp_mst_helper ================
[11:51:30] ================== drm_exec (7 subtests) ===================
[11:51:30] [PASSED] sanitycheck
[11:51:30] [PASSED] test_lock
[11:51:30] [PASSED] test_lock_unlock
[11:51:30] [PASSED] test_duplicates
[11:51:30] [PASSED] test_prepare
[11:51:30] [PASSED] test_prepare_array
[11:51:30] [PASSED] test_multiple_loops
[11:51:30] ==================== [PASSED] drm_exec =====================
[11:51:30] =========== drm_format_helper_test (17 subtests) ===========
[11:51:30] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[11:51:30] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[11:51:30] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[11:51:30] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[11:51:30] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[11:51:30] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[11:51:30] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[11:51:30] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[11:51:30] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[11:51:30] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[11:51:30] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[11:51:30] ============== drm_test_fb_xrgb8888_to_mono ===============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[11:51:30] ==================== drm_test_fb_swab =====================
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ================ [PASSED] drm_test_fb_swab =================
[11:51:30] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[11:51:30] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[11:51:30] [PASSED] single_pixel_source_buffer
[11:51:30] [PASSED] single_pixel_clip_rectangle
[11:51:30] [PASSED] well_known_colors
[11:51:30] [PASSED] destination_pitch
[11:51:30] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[11:51:30] ================= drm_test_fb_clip_offset =================
[11:51:30] [PASSED] pass through
[11:51:30] [PASSED] horizontal offset
[11:51:30] [PASSED] vertical offset
[11:51:30] [PASSED] horizontal and vertical offset
[11:51:30] [PASSED] horizontal offset (custom pitch)
[11:51:30] [PASSED] vertical offset (custom pitch)
[11:51:30] [PASSED] horizontal and vertical offset (custom pitch)
[11:51:30] ============= [PASSED] drm_test_fb_clip_offset =============
[11:51:30] =================== drm_test_fb_memcpy ====================
[11:51:30] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[11:51:30] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[11:51:30] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[11:51:30] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[11:51:30] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[11:51:30] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[11:51:30] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[11:51:30] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[11:51:30] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[11:51:30] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[11:51:30] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[11:51:30] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[11:51:30] =============== [PASSED] drm_test_fb_memcpy ================
[11:51:30] ============= [PASSED] drm_format_helper_test ==============
[11:51:30] ================= drm_format (18 subtests) =================
[11:51:30] [PASSED] drm_test_format_block_width_invalid
[11:51:30] [PASSED] drm_test_format_block_width_one_plane
[11:51:30] [PASSED] drm_test_format_block_width_two_plane
[11:51:30] [PASSED] drm_test_format_block_width_three_plane
[11:51:30] [PASSED] drm_test_format_block_width_tiled
[11:51:30] [PASSED] drm_test_format_block_height_invalid
[11:51:30] [PASSED] drm_test_format_block_height_one_plane
[11:51:30] [PASSED] drm_test_format_block_height_two_plane
[11:51:30] [PASSED] drm_test_format_block_height_three_plane
[11:51:30] [PASSED] drm_test_format_block_height_tiled
[11:51:30] [PASSED] drm_test_format_min_pitch_invalid
[11:51:30] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[11:51:30] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[11:51:30] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[11:51:30] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[11:51:30] [PASSED] drm_test_format_min_pitch_two_plane
[11:51:30] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[11:51:30] [PASSED] drm_test_format_min_pitch_tiled
[11:51:30] =================== [PASSED] drm_format ====================
[11:51:30] ============== drm_framebuffer (10 subtests) ===============
[11:51:30] ========== drm_test_framebuffer_check_src_coords ==========
[11:51:30] [PASSED] Success: source fits into fb
[11:51:30] [PASSED] Fail: overflowing fb with x-axis coordinate
[11:51:30] [PASSED] Fail: overflowing fb with y-axis coordinate
[11:51:30] [PASSED] Fail: overflowing fb with source width
[11:51:30] [PASSED] Fail: overflowing fb with source height
[11:51:30] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[11:51:30] [PASSED] drm_test_framebuffer_cleanup
[11:51:30] =============== drm_test_framebuffer_create ===============
[11:51:30] [PASSED] ABGR8888 normal sizes
[11:51:30] [PASSED] ABGR8888 max sizes
[11:51:30] [PASSED] ABGR8888 pitch greater than min required
[11:51:30] [PASSED] ABGR8888 pitch less than min required
[11:51:30] [PASSED] ABGR8888 Invalid width
[11:51:30] [PASSED] ABGR8888 Invalid buffer handle
[11:51:30] [PASSED] No pixel format
[11:51:30] [PASSED] ABGR8888 Width 0
[11:51:30] [PASSED] ABGR8888 Height 0
[11:51:30] [PASSED] ABGR8888 Out of bound height * pitch combination
[11:51:30] [PASSED] ABGR8888 Large buffer offset
[11:51:30] [PASSED] ABGR8888 Buffer offset for inexistent plane
[11:51:30] [PASSED] ABGR8888 Invalid flag
[11:51:30] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[11:51:30] [PASSED] ABGR8888 Valid buffer modifier
[11:51:30] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[11:51:30] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[11:51:30] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[11:51:30] [PASSED] NV12 Normal sizes
[11:51:30] [PASSED] NV12 Max sizes
[11:51:30] [PASSED] NV12 Invalid pitch
[11:51:30] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[11:51:30] [PASSED] NV12 different modifier per-plane
[11:51:30] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[11:51:30] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[11:51:30] [PASSED] NV12 Modifier for inexistent plane
[11:51:30] [PASSED] NV12 Handle for inexistent plane
[11:51:30] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[11:51:30] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[11:51:30] [PASSED] YVU420 Normal sizes
[11:51:30] [PASSED] YVU420 Max sizes
[11:51:30] [PASSED] YVU420 Invalid pitch
[11:51:30] [PASSED] YVU420 Different pitches
[11:51:30] [PASSED] YVU420 Different buffer offsets/pitches
[11:51:30] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[11:51:30] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[11:51:30] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[11:51:30] [PASSED] YVU420 Valid modifier
[11:51:30] [PASSED] YVU420 Different modifiers per plane
[11:51:30] [PASSED] YVU420 Modifier for inexistent plane
[11:51:30] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[11:51:30] [PASSED] X0L2 Normal sizes
[11:51:30] [PASSED] X0L2 Max sizes
[11:51:30] [PASSED] X0L2 Invalid pitch
[11:51:30] [PASSED] X0L2 Pitch greater than minimum required
[11:51:30] [PASSED] X0L2 Handle for inexistent plane
[11:51:30] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[11:51:30] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[11:51:30] [PASSED] X0L2 Valid modifier
[11:51:30] [PASSED] X0L2 Modifier for inexistent plane
[11:51:30] =========== [PASSED] drm_test_framebuffer_create ===========
[11:51:30] [PASSED] drm_test_framebuffer_free
[11:51:30] [PASSED] drm_test_framebuffer_init
[11:51:30] [PASSED] drm_test_framebuffer_init_bad_format
[11:51:30] [PASSED] drm_test_framebuffer_init_dev_mismatch
[11:51:30] [PASSED] drm_test_framebuffer_lookup
[11:51:30] [PASSED] drm_test_framebuffer_lookup_inexistent
[11:51:30] [PASSED] drm_test_framebuffer_modifiers_not_supported
[11:51:30] ================= [PASSED] drm_framebuffer =================
[11:51:30] ================ drm_gem_shmem (8 subtests) ================
[11:51:30] [PASSED] drm_gem_shmem_test_obj_create
[11:51:30] [PASSED] drm_gem_shmem_test_obj_create_private
[11:51:30] [PASSED] drm_gem_shmem_test_pin_pages
[11:51:30] [PASSED] drm_gem_shmem_test_vmap
[11:51:30] [PASSED] drm_gem_shmem_test_get_sg_table
[11:51:30] [PASSED] drm_gem_shmem_test_get_pages_sgt
[11:51:30] [PASSED] drm_gem_shmem_test_madvise
[11:51:30] [PASSED] drm_gem_shmem_test_purge
[11:51:30] ================== [PASSED] drm_gem_shmem ==================
[11:51:30] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[11:51:30] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[11:51:30] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[11:51:30] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[11:51:30] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[11:51:30] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[11:51:30] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[11:51:30] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[11:51:30] [PASSED] Automatic
[11:51:30] [PASSED] Full
[11:51:30] [PASSED] Limited 16:235
[11:51:30] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[11:51:30] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[11:51:30] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[11:51:30] [PASSED] drm_test_check_disable_connector
[11:51:30] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[11:51:30] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[11:51:30] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[11:51:30] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[11:51:30] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[11:51:30] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[11:51:30] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[11:51:30] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[11:51:30] [PASSED] drm_test_check_output_bpc_dvi
[11:51:30] [PASSED] drm_test_check_output_bpc_format_vic_1
[11:51:30] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[11:51:30] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[11:51:30] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[11:51:30] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[11:51:30] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[11:51:30] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[11:51:30] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[11:51:30] ============ drm_test_check_hdmi_color_format =============
[11:51:30] [PASSED] AUTO -> RGB
[11:51:30] [PASSED] YCBCR422 -> YUV422
[11:51:30] [PASSED] YCBCR420 -> YUV420
[11:51:30] [PASSED] YCBCR444 -> YUV444
[11:51:30] [PASSED] RGB -> RGB
[11:51:30] ======== [PASSED] drm_test_check_hdmi_color_format =========
[11:51:30] ======== drm_test_check_hdmi_color_format_420_only ========
[11:51:30] [PASSED] RGB should fail
[11:51:30] [PASSED] YUV444 should fail
[11:51:30] [PASSED] YUV422 should fail
[11:51:30] [PASSED] YUV420 should work
[11:51:30] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[11:51:30] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[11:51:30] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[11:51:30] [PASSED] drm_test_check_broadcast_rgb_value
[11:51:30] [PASSED] drm_test_check_bpc_8_value
[11:51:30] [PASSED] drm_test_check_bpc_10_value
[11:51:30] [PASSED] drm_test_check_bpc_12_value
[11:51:30] [PASSED] drm_test_check_format_value
[11:51:30] [PASSED] drm_test_check_tmds_char_value
[11:51:30] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[11:51:30] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[11:51:30] [PASSED] drm_test_check_mode_valid
[11:51:30] [PASSED] drm_test_check_mode_valid_reject
[11:51:30] [PASSED] drm_test_check_mode_valid_reject_rate
[11:51:30] [PASSED] drm_test_check_mode_valid_reject_max_clock
[11:51:30] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[11:51:30] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[11:51:30] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[11:51:30] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[11:51:30] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[11:51:30] [PASSED] drm_test_check_infoframes
[11:51:30] [PASSED] drm_test_check_reject_avi_infoframe
[11:51:30] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[11:51:30] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[11:51:30] [PASSED] drm_test_check_reject_audio_infoframe
[11:51:30] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[11:51:30] ================= drm_managed (2 subtests) =================
[11:51:30] [PASSED] drm_test_managed_release_action
[11:51:30] [PASSED] drm_test_managed_run_action
[11:51:30] =================== [PASSED] drm_managed ===================
[11:51:30] =================== drm_mm (6 subtests) ====================
[11:51:30] [PASSED] drm_test_mm_init
[11:51:30] [PASSED] drm_test_mm_debug
[11:51:30] [PASSED] drm_test_mm_align32
[11:51:30] [PASSED] drm_test_mm_align64
[11:51:30] [PASSED] drm_test_mm_lowest
[11:51:30] [PASSED] drm_test_mm_highest
[11:51:30] ===================== [PASSED] drm_mm ======================
[11:51:30] ============= drm_modes_analog_tv (5 subtests) =============
[11:51:30] [PASSED] drm_test_modes_analog_tv_mono_576i
[11:51:30] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[11:51:30] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[11:51:30] [PASSED] drm_test_modes_analog_tv_pal_576i
[11:51:30] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[11:51:30] =============== [PASSED] drm_modes_analog_tv ===============
[11:51:30] ============== drm_plane_helper (2 subtests) ===============
[11:51:30] =============== drm_test_check_plane_state ================
[11:51:30] [PASSED] clipping_simple
[11:51:30] [PASSED] clipping_rotate_reflect
[11:51:30] [PASSED] positioning_simple
[11:51:30] [PASSED] upscaling
[11:51:30] [PASSED] downscaling
[11:51:30] [PASSED] rounding1
[11:51:30] [PASSED] rounding2
[11:51:30] [PASSED] rounding3
[11:51:30] [PASSED] rounding4
[11:51:30] =========== [PASSED] drm_test_check_plane_state ============
[11:51:30] =========== drm_test_check_invalid_plane_state ============
[11:51:30] [PASSED] positioning_invalid
[11:51:30] [PASSED] upscaling_invalid
[11:51:30] [PASSED] downscaling_invalid
[11:51:30] ======= [PASSED] drm_test_check_invalid_plane_state ========
[11:51:30] ================ [PASSED] drm_plane_helper =================
[11:51:30] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[11:51:30] ====== drm_test_connector_helper_tv_get_modes_check =======
[11:51:30] [PASSED] None
[11:51:30] [PASSED] PAL
[11:51:30] [PASSED] NTSC
[11:51:30] [PASSED] Both, NTSC Default
[11:51:30] [PASSED] Both, PAL Default
[11:51:30] [PASSED] Both, NTSC Default, with PAL on command-line
[11:51:30] [PASSED] Both, PAL Default, with NTSC on command-line
[11:51:30] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[11:51:30] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[11:51:30] ================== drm_rect (9 subtests) ===================
[11:51:30] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[11:51:30] [PASSED] drm_test_rect_clip_scaled_not_clipped
[11:51:30] [PASSED] drm_test_rect_clip_scaled_clipped
[11:51:30] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[11:51:30] ================= drm_test_rect_intersect =================
[11:51:30] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[11:51:30] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[11:51:30] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[11:51:30] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[11:51:30] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[11:51:30] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[11:51:30] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[11:51:30] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[11:51:30] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[11:51:30] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[11:51:30] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[11:51:30] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[11:51:30] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[11:51:30] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[11:51:30] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[11:51:30] ============= [PASSED] drm_test_rect_intersect =============
[11:51:30] ================ drm_test_rect_calc_hscale ================
[11:51:30] [PASSED] normal use
[11:51:30] [PASSED] out of max range
[11:51:30] [PASSED] out of min range
[11:51:30] [PASSED] zero dst
[11:51:30] [PASSED] negative src
[11:51:30] [PASSED] negative dst
[11:51:30] ============ [PASSED] drm_test_rect_calc_hscale ============
[11:51:30] ================ drm_test_rect_calc_vscale ================
[11:51:30] [PASSED] normal use
[11:51:30] [PASSED] out of max range
[11:51:30] [PASSED] out of min range
[11:51:30] [PASSED] zero dst
[11:51:30] [PASSED] negative src
[11:51:30] [PASSED] negative dst
[11:51:30] ============ [PASSED] drm_test_rect_calc_vscale ============
[11:51:30] ================== drm_test_rect_rotate ===================
[11:51:30] [PASSED] reflect-x
[11:51:30] [PASSED] reflect-y
[11:51:30] [PASSED] rotate-0
[11:51:30] [PASSED] rotate-90
[11:51:30] [PASSED] rotate-180
[11:51:30] [PASSED] rotate-270
[11:51:30] ============== [PASSED] drm_test_rect_rotate ===============
[11:51:30] ================ drm_test_rect_rotate_inv =================
[11:51:30] [PASSED] reflect-x
[11:51:30] [PASSED] reflect-y
[11:51:30] [PASSED] rotate-0
[11:51:30] [PASSED] rotate-90
[11:51:30] [PASSED] rotate-180
[11:51:30] [PASSED] rotate-270
[11:51:30] ============ [PASSED] drm_test_rect_rotate_inv =============
[11:51:30] ==================== [PASSED] drm_rect =====================
[11:51:30] ============ drm_sysfb_modeset_test (1 subtest) ============
[11:51:30] ============ drm_test_sysfb_build_fourcc_list =============
[11:51:30] [PASSED] no native formats
[11:51:30] [PASSED] XRGB8888 as native format
[11:51:30] [PASSED] remove duplicates
[11:51:30] [PASSED] convert alpha formats
[11:51:30] [PASSED] random formats
[11:51:30] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[11:51:30] ============= [PASSED] drm_sysfb_modeset_test ==============
[11:51:30] ================== drm_fixp (2 subtests) ===================
[11:51:30] [PASSED] drm_test_int2fixp
[11:51:30] [PASSED] drm_test_sm2fixp
[11:51:30] ==================== [PASSED] drm_fixp =====================
[11:51:30] ============================================================
[11:51:30] Testing complete. Ran 637 tests: passed: 637
[11:51:30] Elapsed time: 26.856s total, 1.828s configuring, 24.860s building, 0.150s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[11:51:30] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[11:51:32] 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
[11:51:42] Starting KUnit Kernel (1/1)...
[11:51:42] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[11:51:42] ================= ttm_device (5 subtests) ==================
[11:51:42] [PASSED] ttm_device_init_basic
[11:51:42] [PASSED] ttm_device_init_multiple
[11:51:42] [PASSED] ttm_device_fini_basic
[11:51:42] [PASSED] ttm_device_init_no_vma_man
[11:51:42] ================== ttm_device_init_pools ==================
[11:51:42] [PASSED] No DMA allocations, no DMA32 required
[11:51:42] [PASSED] DMA allocations, DMA32 required
[11:51:42] [PASSED] No DMA allocations, DMA32 required
[11:51:42] [PASSED] DMA allocations, no DMA32 required
[11:51:42] ============== [PASSED] ttm_device_init_pools ==============
[11:51:42] =================== [PASSED] ttm_device ====================
[11:51:42] ================== ttm_pool (8 subtests) ===================
[11:51:42] ================== ttm_pool_alloc_basic ===================
[11:51:42] [PASSED] One page
[11:51:42] [PASSED] More than one page
[11:51:42] [PASSED] Above the allocation limit
[11:51:42] [PASSED] One page, with coherent DMA mappings enabled
[11:51:42] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[11:51:42] ============== [PASSED] ttm_pool_alloc_basic ===============
[11:51:42] ============== ttm_pool_alloc_basic_dma_addr ==============
[11:51:42] [PASSED] One page
[11:51:42] [PASSED] More than one page
[11:51:42] [PASSED] Above the allocation limit
[11:51:42] [PASSED] One page, with coherent DMA mappings enabled
[11:51:42] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[11:51:42] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[11:51:42] [PASSED] ttm_pool_alloc_order_caching_match
[11:51:42] [PASSED] ttm_pool_alloc_caching_mismatch
[11:51:42] [PASSED] ttm_pool_alloc_order_mismatch
[11:51:42] [PASSED] ttm_pool_free_dma_alloc
[11:51:42] [PASSED] ttm_pool_free_no_dma_alloc
[11:51:42] [PASSED] ttm_pool_fini_basic
[11:51:42] ==================== [PASSED] ttm_pool =====================
[11:51:42] ================ ttm_resource (8 subtests) =================
[11:51:42] ================= ttm_resource_init_basic =================
[11:51:42] [PASSED] Init resource in TTM_PL_SYSTEM
[11:51:42] [PASSED] Init resource in TTM_PL_VRAM
[11:51:42] [PASSED] Init resource in a private placement
[11:51:42] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[11:51:42] ============= [PASSED] ttm_resource_init_basic =============
[11:51:42] [PASSED] ttm_resource_init_pinned
[11:51:42] [PASSED] ttm_resource_fini_basic
[11:51:42] [PASSED] ttm_resource_manager_init_basic
[11:51:42] [PASSED] ttm_resource_manager_usage_basic
[11:51:42] [PASSED] ttm_resource_manager_set_used_basic
[11:51:42] [PASSED] ttm_sys_man_alloc_basic
[11:51:42] [PASSED] ttm_sys_man_free_basic
[11:51:42] ================== [PASSED] ttm_resource ===================
[11:51:42] =================== ttm_tt (15 subtests) ===================
[11:51:42] ==================== ttm_tt_init_basic ====================
[11:51:42] [PASSED] Page-aligned size
[11:51:42] [PASSED] Extra pages requested
[11:51:42] ================ [PASSED] ttm_tt_init_basic ================
[11:51:42] [PASSED] ttm_tt_init_misaligned
[11:51:42] [PASSED] ttm_tt_fini_basic
[11:51:42] [PASSED] ttm_tt_fini_sg
[11:51:42] [PASSED] ttm_tt_fini_shmem
[11:51:42] [PASSED] ttm_tt_create_basic
[11:51:42] [PASSED] ttm_tt_create_invalid_bo_type
[11:51:42] [PASSED] ttm_tt_create_ttm_exists
[11:51:42] [PASSED] ttm_tt_create_failed
[11:51:42] [PASSED] ttm_tt_destroy_basic
[11:51:42] [PASSED] ttm_tt_populate_null_ttm
[11:51:42] [PASSED] ttm_tt_populate_populated_ttm
[11:51:42] [PASSED] ttm_tt_unpopulate_basic
[11:51:42] [PASSED] ttm_tt_unpopulate_empty_ttm
[11:51:42] [PASSED] ttm_tt_swapin_basic
[11:51:42] ===================== [PASSED] ttm_tt ======================
[11:51:42] =================== ttm_bo (14 subtests) ===================
[11:51:42] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[11:51:42] [PASSED] Cannot be interrupted and sleeps
[11:51:42] [PASSED] Cannot be interrupted, locks straight away
[11:51:42] [PASSED] Can be interrupted, sleeps
[11:51:42] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[11:51:42] [PASSED] ttm_bo_reserve_locked_no_sleep
[11:51:42] [PASSED] ttm_bo_reserve_no_wait_ticket
[11:51:42] [PASSED] ttm_bo_reserve_double_resv
[11:51:42] [PASSED] ttm_bo_reserve_interrupted
[11:51:42] [PASSED] ttm_bo_reserve_deadlock
[11:51:42] [PASSED] ttm_bo_unreserve_basic
[11:51:42] [PASSED] ttm_bo_unreserve_pinned
[11:51:42] [PASSED] ttm_bo_unreserve_bulk
[11:51:42] [PASSED] ttm_bo_fini_basic
[11:51:42] [PASSED] ttm_bo_fini_shared_resv
[11:51:42] [PASSED] ttm_bo_pin_basic
[11:51:42] [PASSED] ttm_bo_pin_unpin_resource
[11:51:42] [PASSED] ttm_bo_multiple_pin_one_unpin
[11:51:42] ===================== [PASSED] ttm_bo ======================
[11:51:42] ============== ttm_bo_validate (22 subtests) ===============
[11:51:42] ============== ttm_bo_init_reserved_sys_man ===============
[11:51:42] [PASSED] Buffer object for userspace
[11:51:42] [PASSED] Kernel buffer object
[11:51:42] [PASSED] Shared buffer object
[11:51:42] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[11:51:42] ============== ttm_bo_init_reserved_mock_man ==============
[11:51:42] [PASSED] Buffer object for userspace
[11:51:42] [PASSED] Kernel buffer object
[11:51:42] [PASSED] Shared buffer object
[11:51:42] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[11:51:42] [PASSED] ttm_bo_init_reserved_resv
[11:51:42] ================== ttm_bo_validate_basic ==================
[11:51:42] [PASSED] Buffer object for userspace
[11:51:42] [PASSED] Kernel buffer object
[11:51:42] [PASSED] Shared buffer object
[11:51:42] ============== [PASSED] ttm_bo_validate_basic ==============
[11:51:42] [PASSED] ttm_bo_validate_invalid_placement
[11:51:42] ============= ttm_bo_validate_same_placement ==============
[11:51:42] [PASSED] System manager
[11:51:42] [PASSED] VRAM manager
[11:51:42] ========= [PASSED] ttm_bo_validate_same_placement ==========
[11:51:42] [PASSED] ttm_bo_validate_failed_alloc
[11:51:42] [PASSED] ttm_bo_validate_pinned
[11:51:42] [PASSED] ttm_bo_validate_busy_placement
[11:51:42] ================ ttm_bo_validate_multihop =================
[11:51:42] [PASSED] Buffer object for userspace
[11:51:42] [PASSED] Kernel buffer object
[11:51:42] [PASSED] Shared buffer object
[11:51:42] ============ [PASSED] ttm_bo_validate_multihop =============
[11:51:42] ========== ttm_bo_validate_no_placement_signaled ==========
[11:51:42] [PASSED] Buffer object in system domain, no page vector
[11:51:42] [PASSED] Buffer object in system domain with an existing page vector
[11:51:42] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[11:51:42] ======== ttm_bo_validate_no_placement_not_signaled ========
[11:51:42] [PASSED] Buffer object for userspace
[11:51:42] [PASSED] Kernel buffer object
[11:51:42] [PASSED] Shared buffer object
[11:51:42] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[11:51:42] [PASSED] ttm_bo_validate_move_fence_signaled
[11:51:42] ========= ttm_bo_validate_move_fence_not_signaled =========
[11:51:42] [PASSED] Waits for GPU
[11:51:42] [PASSED] Tries to lock straight away
[11:51:42] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[11:51:42] [PASSED] ttm_bo_validate_swapout
[11:51:42] [PASSED] ttm_bo_validate_happy_evict
[11:51:42] [PASSED] ttm_bo_validate_all_pinned_evict
[11:51:42] [PASSED] ttm_bo_validate_allowed_only_evict
[11:51:42] [PASSED] ttm_bo_validate_deleted_evict
[11:51:42] [PASSED] ttm_bo_validate_busy_domain_evict
[11:51:42] [PASSED] ttm_bo_validate_evict_gutting
[11:51:42] [PASSED] ttm_bo_validate_recrusive_evict
[11:51:42] ================= [PASSED] ttm_bo_validate =================
[11:51:42] ============================================================
[11:51:42] Testing complete. Ran 102 tests: passed: 102
[11:51:42] Elapsed time: 11.939s total, 1.765s configuring, 9.959s building, 0.188s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 19+ messages in thread* ✓ Xe.CI.BAT: success for drm/xe: More BIOS FB takeover fixes (rev2)
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
` (8 preceding siblings ...)
2026-07-15 11:51 ` ✓ CI.KUnit: " Patchwork
@ 2026-07-15 12:28 ` Patchwork
2026-07-15 12:33 ` ✓ i915.CI.Full: " Patchwork
2026-07-15 13:42 ` ✓ Xe.CI.FULL: " Patchwork
11 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2026-07-15 12:28 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 950 bytes --]
== Series Details ==
Series: drm/xe: More BIOS FB takeover fixes (rev2)
URL : https://patchwork.freedesktop.org/series/170430/
State : success
== Summary ==
CI Bug Log - changes from xe-5409-6dd678fdc2f39062bed466d7e3c851736e376531_BAT -> xe-pw-170430v2_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 12)
------------------------------
Missing (1): bat-adlp-7
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-5409-6dd678fdc2f39062bed466d7e3c851736e376531 -> xe-pw-170430v2
IGT_9006: 6380a8af26359dd222e22679442272ded836c463 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5409-6dd678fdc2f39062bed466d7e3c851736e376531: 6dd678fdc2f39062bed466d7e3c851736e376531
xe-pw-170430v2: 170430v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-170430v2/index.html
[-- Attachment #2: Type: text/html, Size: 1498 bytes --]
^ permalink raw reply [flat|nested] 19+ messages in thread* ✓ i915.CI.Full: success for drm/xe: More BIOS FB takeover fixes (rev2)
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
` (9 preceding siblings ...)
2026-07-15 12:28 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-07-15 12:33 ` Patchwork
2026-07-15 13:42 ` ✓ Xe.CI.FULL: " Patchwork
11 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2026-07-15 12:33 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 1106 bytes --]
== Series Details ==
Series: drm/xe: More BIOS FB takeover fixes (rev2)
URL : https://patchwork.freedesktop.org/series/170431/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_18827_full -> Patchwork_170431v2_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (10 -> 10)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: CI_DRM_18827 -> Patchwork_170431v2
CI-20190529: 20190529
CI_DRM_18827: 6dd678fdc2f39062bed466d7e3c851736e376531 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_9006: 6380a8af26359dd222e22679442272ded836c463 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_170431v2: 6dd678fdc2f39062bed466d7e3c851736e376531 @ git://anongit.freedesktop.org/gfx-ci/linux
piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_170431v2/index.html
[-- Attachment #2: Type: text/html, Size: 1669 bytes --]
^ permalink raw reply [flat|nested] 19+ messages in thread* ✓ Xe.CI.FULL: success for drm/xe: More BIOS FB takeover fixes (rev2)
2026-07-15 11:05 [PATCH v2 0/6] drm/xe: More BIOS FB takeover fixes Maarten Lankhorst
` (10 preceding siblings ...)
2026-07-15 12:33 ` ✓ i915.CI.Full: " Patchwork
@ 2026-07-15 13:42 ` Patchwork
11 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2026-07-15 13:42 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 956 bytes --]
== Series Details ==
Series: drm/xe: More BIOS FB takeover fixes (rev2)
URL : https://patchwork.freedesktop.org/series/170430/
State : success
== Summary ==
CI Bug Log - changes from xe-5409-6dd678fdc2f39062bed466d7e3c851736e376531_FULL -> xe-pw-170430v2_FULL
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-5409-6dd678fdc2f39062bed466d7e3c851736e376531 -> xe-pw-170430v2
IGT_9006: 6380a8af26359dd222e22679442272ded836c463 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5409-6dd678fdc2f39062bed466d7e3c851736e376531: 6dd678fdc2f39062bed466d7e3c851736e376531
xe-pw-170430v2: 170430v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-170430v2/index.html
[-- Attachment #2: Type: text/html, Size: 1504 bytes --]
^ permalink raw reply [flat|nested] 19+ messages in thread