* [PATCH v4 1/3] drm/drm_mm: Safe macro for iterating through nodes in range
2024-12-20 23:34 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
@ 2024-12-20 23:34 ` Tomasz Lis
0 siblings, 0 replies; 23+ messages in thread
From: Tomasz Lis @ 2024-12-20 23:34 UTC (permalink / raw)
To: intel-xe
Cc: Michał Winiarski, Michał Wajdeczko,
Piotr Piórkowski, dri-devel
Benefits of drm_mm_for_each_node_safe and drm_mm_for_each_node_in_range
squished together into one macro.
Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
---
Cc: dri-devel@lists.freedesktop.org
include/drm/drm_mm.h | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
index f654874c4ce6..43e99441f6ba 100644
--- a/include/drm/drm_mm.h
+++ b/include/drm/drm_mm.h
@@ -504,6 +504,25 @@ __drm_mm_interval_first(const struct drm_mm *mm, u64 start, u64 last);
node__->start < (end__); \
node__ = list_next_entry(node__, node_list))
+/**
+ * drm_mm_for_each_node_in_range_safe - iterator to walk over a range of
+ * allocated nodes
+ * @node__: drm_mm_node structure to assign to in each iteration step
+ * @next__: &struct drm_mm_node to store the next step
+ * @mm__: drm_mm allocator to walk
+ * @start__: starting offset, the first node will overlap this
+ * @end__: ending offset, the last node will start before this (but may overlap)
+ *
+ * This iterator walks over all nodes in the range allocator that lie
+ * between @start and @end. It is implemented similarly to list_for_each_safe(),
+ * so safe against removal of elements.
+ */
+#define drm_mm_for_each_node_in_range_safe(node__, next__, mm__, start__, end__) \
+ for (node__ = __drm_mm_interval_first((mm__), (start__), (end__)-1), \
+ next__ = list_next_entry(node__, node_list); \
+ node__->start < (end__); \
+ node__ = next__, next__ = list_next_entry(next__, node_list))
+
void drm_mm_scan_init_with_range(struct drm_mm_scan *scan,
struct drm_mm *mm,
u64 size, u64 alignment, unsigned long color,
--
2.25.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB
@ 2025-03-06 22:21 Tomasz Lis
2025-03-06 22:21 ` [PATCH v4 1/3] drm/drm_mm: Safe macro for iterating through nodes in range Tomasz Lis
` (10 more replies)
0 siblings, 11 replies; 23+ messages in thread
From: Tomasz Lis @ 2025-03-06 22:21 UTC (permalink / raw)
To: intel-xe
Cc: Michał Winiarski, Michał Wajdeczko,
Piotr Piórkowski
To support VF Migration, it is necessary to do fixups to any
non-virtualized resources. These fixups need to be applied within
VM, on the KMD working with VF.
This series adds two fixup functions to the recovery worker:
* for fixing drm_mm nodes which represent GGTT allocations
* for fixing content of outgoing CTB buffer
v2: Fixed missing include, made checkpatch happy
v3: Moved some functs to xe_ggtt.c; moved shift computation to just
after querying; improved documentation; switched some warns to asserts;
skipping fixups when GGTT shift eq 0; iterating through tiles rather
than gts; fixes in log messages
v4: Updated kerneldocs, removed unused funct, properly allocate
balloning nodes if non existent, removed inline keywords, enums for
offsets in CTB messages, less error messages, if return unused then
made functs void
Tomasz Lis (3):
drm/drm_mm: Safe macro for iterating through nodes in range
drm/xe/sriov: Shifting GGTT area post migration
drm/xe/vf: Fixup CTB send buffer messages after migration
drivers/gpu/drm/xe/abi/guc_actions_abi.h | 7 +
drivers/gpu/drm/xe/xe_ggtt.c | 163 ++++++++++++++++++++++
drivers/gpu/drm/xe/xe_ggtt.h | 2 +
drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 26 ++++
drivers/gpu/drm/xe/xe_gt_sriov_vf.h | 1 +
drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h | 2 +
drivers/gpu/drm/xe/xe_guc_ct.c | 147 +++++++++++++++++++
drivers/gpu/drm/xe/xe_guc_ct.h | 2 +
drivers/gpu/drm/xe/xe_guc_submit.c | 4 +
drivers/gpu/drm/xe/xe_sriov_vf.c | 40 ++++++
include/drm/drm_mm.h | 19 +++
11 files changed, 413 insertions(+)
--
2.25.1
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v4 1/3] drm/drm_mm: Safe macro for iterating through nodes in range
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
@ 2025-03-06 22:21 ` Tomasz Lis
2025-03-07 9:59 ` Christian König
2025-03-06 22:21 ` [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration Tomasz Lis
` (9 subsequent siblings)
10 siblings, 1 reply; 23+ messages in thread
From: Tomasz Lis @ 2025-03-06 22:21 UTC (permalink / raw)
To: intel-xe
Cc: Michał Winiarski, Michał Wajdeczko,
Piotr Piórkowski, dri-devel, Christian König,
Arun R Murthy, Matthew Brost
Benefits of drm_mm_for_each_node_safe and drm_mm_for_each_node_in_range
squished together into one macro.
Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
---
Cc: dri-devel@lists.freedesktop.org
Cc: Christian König <christian.koenig@amd.com>
Cc: Arun R Murthy <arun.r.murthy@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
include/drm/drm_mm.h | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
index f654874c4ce6..43e99441f6ba 100644
--- a/include/drm/drm_mm.h
+++ b/include/drm/drm_mm.h
@@ -504,6 +504,25 @@ __drm_mm_interval_first(const struct drm_mm *mm, u64 start, u64 last);
node__->start < (end__); \
node__ = list_next_entry(node__, node_list))
+/**
+ * drm_mm_for_each_node_in_range_safe - iterator to walk over a range of
+ * allocated nodes
+ * @node__: drm_mm_node structure to assign to in each iteration step
+ * @next__: &struct drm_mm_node to store the next step
+ * @mm__: drm_mm allocator to walk
+ * @start__: starting offset, the first node will overlap this
+ * @end__: ending offset, the last node will start before this (but may overlap)
+ *
+ * This iterator walks over all nodes in the range allocator that lie
+ * between @start and @end. It is implemented similarly to list_for_each_safe(),
+ * so safe against removal of elements.
+ */
+#define drm_mm_for_each_node_in_range_safe(node__, next__, mm__, start__, end__) \
+ for (node__ = __drm_mm_interval_first((mm__), (start__), (end__)-1), \
+ next__ = list_next_entry(node__, node_list); \
+ node__->start < (end__); \
+ node__ = next__, next__ = list_next_entry(next__, node_list))
+
void drm_mm_scan_init_with_range(struct drm_mm_scan *scan,
struct drm_mm *mm,
u64 size, u64 alignment, unsigned long color,
--
2.25.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
2025-03-06 22:21 ` [PATCH v4 1/3] drm/drm_mm: Safe macro for iterating through nodes in range Tomasz Lis
@ 2025-03-06 22:21 ` Tomasz Lis
2025-03-14 18:22 ` Michal Wajdeczko
2025-03-24 5:58 ` Dan Carpenter
2025-03-06 22:21 ` [PATCH v4 3/3] drm/xe/vf: Fixup CTB send buffer messages after migration Tomasz Lis
` (8 subsequent siblings)
10 siblings, 2 replies; 23+ messages in thread
From: Tomasz Lis @ 2025-03-06 22:21 UTC (permalink / raw)
To: intel-xe
Cc: Michał Winiarski, Michał Wajdeczko,
Piotr Piórkowski
We have only one GGTT for all IOV functions, with each VF having assigned
a range of addresses for its use. After migration, a VF can receive a
different range of addresses than it had initially.
This implements shifting GGTT addresses within drm_mm nodes, so that
VMAs stay valid after migration. This will make the driver use new
addresses when accessing GGTT from the moment the shifting ends.
By taking the ggtt->lock for the period of VMA fixups, this change
also adds constraint on that mutex. Any locks used during the recovery
cannot ever wait for hardware response - because after migration,
the hardware will not do anything until fixups are finished.
v2: Moved some functs to xe_ggtt.c; moved shift computation to just
after querying; improved documentation; switched some warns to asserts;
skipping fixups when GGTT shift eq 0; iterating through tiles (Michal)
v3: Updated kerneldocs, removed unused funct, properly allocate
balloning nodes if non existent
Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
---
drivers/gpu/drm/xe/xe_ggtt.c | 163 ++++++++++++++++++++++
drivers/gpu/drm/xe/xe_ggtt.h | 2 +
drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 26 ++++
drivers/gpu/drm/xe/xe_gt_sriov_vf.h | 1 +
drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h | 2 +
drivers/gpu/drm/xe/xe_sriov_vf.c | 22 +++
6 files changed, 216 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 5fcb2b4c2c13..6865d1cdd676 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -489,6 +489,169 @@ void xe_ggtt_node_remove_balloon(struct xe_ggtt_node *node)
xe_ggtt_node_fini(node);
}
+static u64 drm_mm_node_end(struct drm_mm_node *node)
+{
+ return node->start + node->size;
+}
+
+static void xe_ggtt_mm_shift_nodes(struct xe_ggtt *ggtt, struct drm_mm_node *balloon_beg,
+ struct drm_mm_node *balloon_fin, s64 shift)
+{
+ struct drm_mm_node *node, *tmpn;
+ LIST_HEAD(temp_list_head);
+ int err;
+
+ lockdep_assert_held(&ggtt->lock);
+
+ /*
+ * Move nodes, from range previously assigned to this VF, into temp list.
+ *
+ * The balloon_beg and balloon_fin nodes are there to eliminate unavailable
+ * ranges from use: first reserves the GGTT area below the range for current VF,
+ * and second reserves area above.
+ *
+ * Below is a GGTT layout of example VF, with a certain address range assigned to
+ * said VF, and inaccessible areas above and below:
+ *
+ * 0 4GiB
+ * |<--------------------------- Total GGTT size ----------------------------->|
+ * WOPCM GUC_TOP
+ * |<-------------- Area mappable by xe_ggtt instance ---------------->|
+ *
+ * +---+---------------------------------+----------+----------------------+---+
+ * |\\\|/////////////////////////////////| VF mem |//////////////////////|\\\|
+ * +---+---------------------------------+----------+----------------------+---+
+ *
+ * Hardware enforced access rules before migration:
+ *
+ * |<------- inaccessible for VF ------->|<VF owned>|<-- inaccessible for VF ->|
+ *
+ * drm_mm nodes used for tracking allocations:
+ *
+ * |<----------- balloon ------------>|<- nodes->|<----- balloon ------>|
+ *
+ * After the migration, GGTT area assigned to the VF might have shifted, either
+ * to lower or to higher address. But we expect the total size and extra areas to
+ * be identical, as migration can only happen between matching platforms.
+ * Below is an example of GGTT layout of the VF after migration. Content of the
+ * GGTT for VF has been moved to a new area, and we receive its address from GuC:
+ *
+ * +---+----------------------+----------+---------------------------------+---+
+ * |\\\|//////////////////////| VF mem |/////////////////////////////////|\\\|
+ * +---+----------------------+----------+---------------------------------+---+
+ *
+ * Hardware enforced access rules after migration:
+ *
+ * |<- inaccessible for VF -->|<VF owned>|<------- inaccessible for VF ------->|
+ *
+ * So the VF has a new slice of GGTT assigned, and during migration process, the
+ * memory content was copied to that new area. But the drm_mm nodes within xe kmd
+ * are still tracking allocations using the old addresses. The nodes within VF
+ * owned area have to be shifted, and balloon nodes need to be resized to
+ * properly mask out areas not owned by the VF.
+ *
+ * Fixed drm_mm nodes used for tracking allocations:
+ *
+ * |<------ balloon ------>|<- nodes->|<----------- balloon ----------->|
+ *
+ * Due to use of GPU profiles, we do not expect the old and new GGTT ares to
+ * overlap; but our node shifting will fix addresses properly regardless.
+ *
+ */
+ drm_mm_for_each_node_in_range_safe(node, tmpn, &ggtt->mm,
+ drm_mm_node_end(balloon_beg),
+ balloon_fin->start) {
+ drm_mm_remove_node(node);
+ list_add(&node->node_list, &temp_list_head);
+ }
+
+ /* shift and re-add ballooning nodes */
+ if (drm_mm_node_allocated(balloon_beg))
+ drm_mm_remove_node(balloon_beg);
+ if (drm_mm_node_allocated(balloon_fin))
+ drm_mm_remove_node(balloon_fin);
+ balloon_beg->size += shift;
+ balloon_fin->start += shift;
+ balloon_fin->size -= shift;
+ if (balloon_beg->size != 0) {
+ err = drm_mm_reserve_node(&ggtt->mm, balloon_beg);
+ xe_tile_assert(ggtt->tile, !err);
+ }
+ if (balloon_fin->size != 0) {
+ err = drm_mm_reserve_node(&ggtt->mm, balloon_fin);
+ xe_tile_assert(ggtt->tile, !err);
+ }
+
+ /*
+ * Now the GGTT VM contains only nodes outside of area assigned to this VF.
+ * We can re-add all VF nodes with shifted offsets.
+ */
+ list_for_each_entry_safe(node, tmpn, &temp_list_head, node_list) {
+ list_del(&node->node_list);
+ node->start += shift;
+ err = drm_mm_reserve_node(&ggtt->mm, node);
+ xe_tile_assert(ggtt->tile, !err);
+ }
+}
+
+/**
+ * xe_ggtt_node_shift_nodes - Shift GGTT nodes to adjust for a change in usable address range.
+ * @ggtt: the &xe_ggtt struct instance
+ * @balloon_beg: ggtt balloon node which preceds the area provisioned for current VF
+ * @balloon_fin: ggtt balloon node which follows the area provisioned for current VF
+ * @shift: change to the location of area provisioned for current VF
+ */
+void xe_ggtt_node_shift_nodes(struct xe_ggtt *ggtt, struct xe_ggtt_node **balloon_beg,
+ struct xe_ggtt_node **balloon_fin, s64 shift)
+{
+ struct drm_mm_node *balloon_mm_beg, *balloon_mm_end;
+ struct xe_ggtt_node *node;
+
+ if (!*balloon_beg)
+ {
+ node = xe_ggtt_node_init(ggtt);
+ if (IS_ERR(node))
+ goto out;
+ node->base.color = 0;
+ node->base.flags = 0;
+ node->base.start = xe_wopcm_size(ggtt->tile->xe);
+ node->base.size = 0;
+ *balloon_beg = node;
+ }
+ balloon_mm_beg = &(*balloon_beg)->base;
+
+ if (!*balloon_fin)
+ {
+ node = xe_ggtt_node_init(ggtt);
+ if (IS_ERR(node))
+ goto out;
+ node->base.color = 0;
+ node->base.flags = 0;
+ node->base.start = GUC_GGTT_TOP;
+ node->base.size = 0;
+ *balloon_fin = node;
+ }
+ balloon_mm_end = &(*balloon_fin)->base;
+
+ xe_tile_assert(ggtt->tile, (*balloon_beg)->ggtt);
+ xe_tile_assert(ggtt->tile, (*balloon_fin)->ggtt);
+
+ xe_ggtt_mm_shift_nodes(ggtt, balloon_mm_beg, balloon_mm_end, shift);
+out:
+ if (*balloon_beg && !xe_ggtt_node_allocated(*balloon_beg))
+ {
+ node = *balloon_beg;
+ *balloon_beg = NULL;
+ xe_ggtt_node_fini(node);
+ }
+ if (*balloon_fin && !xe_ggtt_node_allocated(*balloon_fin))
+ {
+ node = *balloon_fin;
+ *balloon_fin = NULL;
+ xe_ggtt_node_fini(node);
+ }
+}
+
/**
* xe_ggtt_node_insert_locked - Locked version to insert a &xe_ggtt_node into the GGTT
* @node: the &xe_ggtt_node to be inserted
diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
index 27e7d67de004..d9e133a155e6 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.h
+++ b/drivers/gpu/drm/xe/xe_ggtt.h
@@ -18,6 +18,8 @@ void xe_ggtt_node_fini(struct xe_ggtt_node *node);
int xe_ggtt_node_insert_balloon(struct xe_ggtt_node *node,
u64 start, u64 size);
void xe_ggtt_node_remove_balloon(struct xe_ggtt_node *node);
+void xe_ggtt_node_shift_nodes(struct xe_ggtt *ggtt, struct xe_ggtt_node **balloon_beg,
+ struct xe_ggtt_node **balloon_fin, s64 shift);
int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32 align);
int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
index a439261bf4d7..dbd7010f0117 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
@@ -415,6 +415,7 @@ static int vf_get_ggtt_info(struct xe_gt *gt)
xe_gt_sriov_dbg_verbose(gt, "GGTT %#llx-%#llx = %lluK\n",
start, start + size - 1, size / SZ_1K);
+ config->ggtt_shift = start - (s64)config->ggtt_base;
config->ggtt_base = start;
config->ggtt_size = size;
@@ -938,6 +939,31 @@ int xe_gt_sriov_vf_query_runtime(struct xe_gt *gt)
return err;
}
+/**
+ * xe_gt_sriov_vf_fixup_ggtt_nodes - Shift GGTT allocations to match assigned range.
+ * @gt: the &xe_gt struct instance
+ * Return: 0 on success, ENODATA if fixups are unnecessary
+ *
+ * Since Global GTT is not virtualized, each VF has an assigned range
+ * within the global space. This range might have changed during migration,
+ * which requires all memory addresses pointing to GGTT to be shifted.
+ */
+int xe_gt_sriov_vf_fixup_ggtt_nodes(struct xe_gt *gt)
+{
+ struct xe_gt_sriov_vf_selfconfig *config = >->sriov.vf.self_config;
+ struct xe_tile *tile = gt_to_tile(gt);
+ struct xe_ggtt *ggtt = tile->mem.ggtt;
+ s64 ggtt_shift;
+
+ mutex_lock(&ggtt->lock);
+ ggtt_shift = config->ggtt_shift;
+ if (ggtt_shift)
+ xe_ggtt_node_shift_nodes(ggtt, &tile->sriov.vf.ggtt_balloon[0],
+ &tile->sriov.vf.ggtt_balloon[1], ggtt_shift);
+ mutex_unlock(&ggtt->lock);
+ return ggtt_shift ? 0 : ENODATA;
+}
+
static int vf_runtime_reg_cmp(const void *a, const void *b)
{
const struct vf_runtime_reg *ra = a;
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h b/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
index ba6c5d74e326..95a6c9c1dca0 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
@@ -18,6 +18,7 @@ int xe_gt_sriov_vf_query_config(struct xe_gt *gt);
int xe_gt_sriov_vf_connect(struct xe_gt *gt);
int xe_gt_sriov_vf_query_runtime(struct xe_gt *gt);
int xe_gt_sriov_vf_prepare_ggtt(struct xe_gt *gt);
+int xe_gt_sriov_vf_fixup_ggtt_nodes(struct xe_gt *gt);
int xe_gt_sriov_vf_notify_resfix_done(struct xe_gt *gt);
void xe_gt_sriov_vf_migrated_event_handler(struct xe_gt *gt);
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
index a57f13b5afcd..5ccbdf8d08b6 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
@@ -40,6 +40,8 @@ struct xe_gt_sriov_vf_selfconfig {
u64 ggtt_base;
/** @ggtt_size: assigned size of the GGTT region. */
u64 ggtt_size;
+ /** @ggtt_shift: difference in ggtt_base on last migration */
+ s64 ggtt_shift;
/** @lmem_size: assigned size of the LMEM. */
u64 lmem_size;
/** @num_ctxs: assigned number of GuC submission context IDs. */
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
index c1275e64aa9c..4ee8fc70a744 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
@@ -7,6 +7,7 @@
#include "xe_assert.h"
#include "xe_device.h"
+#include "xe_gt.h"
#include "xe_gt_sriov_printk.h"
#include "xe_gt_sriov_vf.h"
#include "xe_pm.h"
@@ -170,6 +171,26 @@ static bool vf_post_migration_imminent(struct xe_device *xe)
work_pending(&xe->sriov.vf.migration.worker);
}
+static int vf_post_migration_fixup_ggtt_nodes(struct xe_device *xe)
+{
+ struct xe_tile *tile;
+ unsigned int id;
+ int err;
+
+ for_each_tile(tile, xe, id) {
+ struct xe_gt *gt = tile->primary_gt;
+ int ret;
+
+ /* media doesn't have its own ggtt */
+ if (xe_gt_is_media_type(gt))
+ continue;
+ ret = xe_gt_sriov_vf_fixup_ggtt_nodes(gt);
+ if (ret != ENODATA)
+ err = ret;
+ }
+ return err;
+}
+
/*
* Notify all GuCs about resource fixups apply finished.
*/
@@ -201,6 +222,7 @@ static void vf_post_migration_recovery(struct xe_device *xe)
if (unlikely(err))
goto fail;
+ err = vf_post_migration_fixup_ggtt_nodes(xe);
/* FIXME: add the recovery steps */
vf_post_migration_notify_resfix_done(xe);
xe_pm_runtime_put(xe);
--
2.25.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH v4 3/3] drm/xe/vf: Fixup CTB send buffer messages after migration
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
2025-03-06 22:21 ` [PATCH v4 1/3] drm/drm_mm: Safe macro for iterating through nodes in range Tomasz Lis
2025-03-06 22:21 ` [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration Tomasz Lis
@ 2025-03-06 22:21 ` Tomasz Lis
2025-03-14 20:46 ` Michal Wajdeczko
2025-03-07 0:22 ` ✓ CI.Patch_applied: success for drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5) Patchwork
` (7 subsequent siblings)
10 siblings, 1 reply; 23+ messages in thread
From: Tomasz Lis @ 2025-03-06 22:21 UTC (permalink / raw)
To: intel-xe
Cc: Michał Winiarski, Michał Wajdeczko,
Piotr Piórkowski
During post-migration recovery of a VF, it is necessary to update
GGTT references included in messages which are going to be sent
to GuC. GuC will start consuming messages after VF KMD will inform
it about fixups being done; before that, the VF KMD is expected
to update any H2G messages which are already in send buffer but
were not consumed by GuC.
Only a small subset of messages allowed for VFs have GGTT references
in them. This patch adds the functionality to parse the CTB send
ring buffer and shift addresses contained within.
While fixing the CTB content, ct->lock is not taken. This means
the only barrier taken remains GGTT address lock - which is ok,
because only requests with GGTT addresses matter, but it also means
tail changes can happen during the CTB fixups execution (which may
be ignored as any new messages will not have anything to fix).
The GGTT address locking will be introduced in a future series.
v2: removed storing shift as that's now done in VMA nodes patch;
macros to inlines; warns to asserts; log messages fixes (Michal)
v3: Removed inline keywords, enums for offsets in CTB messages,
less error messages, if return unused then made functs void (Michal)
v4: Update the cached head before starting fixups
Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
---
drivers/gpu/drm/xe/abi/guc_actions_abi.h | 7 ++
drivers/gpu/drm/xe/xe_guc_ct.c | 147 +++++++++++++++++++++++
drivers/gpu/drm/xe/xe_guc_ct.h | 2 +
drivers/gpu/drm/xe/xe_guc_submit.c | 4 +
drivers/gpu/drm/xe/xe_sriov_vf.c | 18 +++
5 files changed, 178 insertions(+)
diff --git a/drivers/gpu/drm/xe/abi/guc_actions_abi.h b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
index ec516e838ee8..dde6cb5a6be9 100644
--- a/drivers/gpu/drm/xe/abi/guc_actions_abi.h
+++ b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
@@ -160,6 +160,13 @@ enum xe_guc_preempt_options {
XE_GUC_PREEMPT_OPTION_DROP_SUBMIT_Q = 0x8,
};
+enum xe_guc_register_context_multi_lrc_param_offsets {
+ XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC = 5,
+ XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE = 7,
+ XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN = 10,
+ XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA = 11
+};
+
enum xe_guc_report_status {
XE_GUC_REPORT_STATUS_UNKNOWN = 0x0,
XE_GUC_REPORT_STATUS_ACKED = 0x1,
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
index 72ad576fc18e..6f19bf9565ba 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -84,6 +84,8 @@ struct g2h_fence {
bool done;
};
+#define make_u64(hi, lo) ((u64)((u64)(u32)(hi) << 32 | (u32)(lo)))
+
static void g2h_fence_init(struct g2h_fence *g2h_fence, u32 *response_buffer)
{
g2h_fence->response_buffer = response_buffer;
@@ -1622,6 +1624,151 @@ static void g2h_worker_func(struct work_struct *w)
receive_g2h(ct);
}
+static u32 ctb_read32(struct xe_device *xe, struct iosys_map *cmds,
+ u32 head, u32 pos)
+{
+ u32 msg[1];
+
+ xe_map_memcpy_from(xe, msg, cmds, (head + pos) * sizeof(u32),
+ 1 * sizeof(u32));
+ return msg[0];
+}
+
+static void ctb_fixup64(struct xe_device *xe, struct iosys_map *cmds,
+ u32 head, u32 pos, s64 shift)
+{
+ u32 msg[2];
+ u64 offset;
+
+ xe_map_memcpy_from(xe, msg, cmds, (head + pos) * sizeof(u32),
+ 2 * sizeof(u32));
+ offset = make_u64(msg[1], msg[0]);
+ offset += shift;
+ msg[0] = lower_32_bits(offset);
+ msg[1] = upper_32_bits(offset);
+ xe_map_memcpy_to(xe, cmds, (head + pos) * sizeof(u32), msg, 2 * sizeof(u32));
+}
+
+/*
+ * ct_update_addresses_in_message - Shift any GGTT addresses within
+ * a single message left within CTB from before post-migration recovery.
+ * @ct: pointer to CT struct of the target GuC
+ * @cmds: iomap buffer containing CT messages
+ * @head: start of the target message within the buffer
+ * @len: length of the target message
+ * @size: size of the commands buffer
+ * @shift: the address shift to be added to each GGTT reference
+ */
+static void ct_update_addresses_in_message(struct xe_guc_ct *ct,
+ struct iosys_map *cmds, u32 head,
+ u32 len, u32 size, s64 shift)
+{
+ struct xe_device *xe = ct_to_xe(ct);
+ u32 action, i, n;
+ u32 msg[1];
+
+ xe_map_memcpy_from(xe, msg, cmds, head * sizeof(u32),
+ 1 * sizeof(u32));
+ action = FIELD_GET(GUC_HXG_REQUEST_MSG_0_ACTION, msg[0]);
+ switch (action) {
+ case XE_GUC_ACTION_REGISTER_CONTEXT:
+ case XE_GUC_ACTION_REGISTER_CONTEXT_MULTI_LRC:
+ /* field wq_desc */
+ ctb_fixup64(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC, shift);
+ /* field wq_base */
+ ctb_fixup64(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE, shift);
+ if (action == XE_GUC_ACTION_REGISTER_CONTEXT_MULTI_LRC) {
+ /* field number_children */
+ n = ctb_read32(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN);
+ /* field hwlrca and child lrcas */
+ for (i = 0; i < n; i++)
+ ctb_fixup64(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA + 2 * i, shift);
+ } else {
+ /* field hwlrca */
+ ctb_fixup64(xe, cmds, head, 10, shift);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+static int ct_update_addresses_in_buffer(struct xe_guc_ct *ct,
+ struct guc_ctb *h2g,
+ s64 shift, u32 *mhead, s32 avail)
+{
+ struct xe_device *xe = ct_to_xe(ct);
+ u32 head = *mhead;
+ u32 size = h2g->info.size;
+ u32 msg[1];
+ u32 len;
+
+ /* Read header */
+ xe_map_memcpy_from(xe, msg, &h2g->cmds, sizeof(u32) * head,
+ sizeof(u32));
+ len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) + GUC_CTB_MSG_MIN_LEN;
+
+ if (unlikely(len > (u32)avail)) {
+ struct xe_gt *gt = ct_to_gt(ct);
+
+ xe_gt_err(gt, "H2G channel broken on read, avail=%d, len=%d, fixups skipped\n",
+ avail, len);
+ return 0;
+ }
+
+ head = (head + 1) % size;
+ ct_update_addresses_in_message(ct, &h2g->cmds, head, len - 1, size, shift);
+ *mhead = (head + len - 1) % size;
+
+ return avail - len;
+}
+
+/**
+ * xe_guc_ct_fixup_messages_with_ggtt - Fixup any pending H2G CTB messages by updating
+ * GGTT offsets in their payloads.
+ * @ct: pointer to CT struct of the target GuC
+ * @ggtt_shift: shift to be added to all GGTT addresses within the CTB
+ */
+void xe_guc_ct_fixup_messages_with_ggtt(struct xe_guc_ct *ct, s64 ggtt_shift)
+{
+ struct xe_guc *guc = ct_to_guc(ct);
+ struct xe_gt *gt = guc_to_gt(guc);
+ struct guc_ctb *h2g = &ct->ctbs.h2g;
+ u32 head, tail, size;
+ s32 avail;
+
+ if (unlikely(h2g->info.broken))
+ return;
+
+ h2g->info.head = desc_read(ct_to_xe(ct), h2g, head);
+ head = h2g->info.head;
+ tail = READ_ONCE(h2g->info.tail);
+ size = h2g->info.size;
+
+ xe_gt_assert(gt, head <= size);
+
+ if (unlikely(tail >= size))
+ goto corrupted;
+
+ avail = tail - head;
+
+ /* beware of buffer wrap case */
+ if (unlikely(avail < 0))
+ avail += size;
+ xe_gt_dbg(gt, "available %d (%u:%u:%u)\n", avail, head, tail, size);
+ xe_gt_assert(gt, avail >= 0);
+
+ while (avail > 0)
+ avail = ct_update_addresses_in_buffer(ct, h2g, ggtt_shift, &head, avail);
+
+ return;
+
+corrupted:
+ xe_gt_err(gt, "Corrupted H2G descriptor head=%u tail=%u size=%u\n",
+ head, tail, size);
+ h2g->info.broken = true;
+}
+
static struct xe_guc_ct_snapshot *guc_ct_snapshot_alloc(struct xe_guc_ct *ct, bool atomic,
bool want_ctb)
{
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/xe_guc_ct.h
index 82c4ae458dda..5649bda82823 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.h
+++ b/drivers/gpu/drm/xe/xe_guc_ct.h
@@ -22,6 +22,8 @@ void xe_guc_ct_snapshot_print(struct xe_guc_ct_snapshot *snapshot, struct drm_pr
void xe_guc_ct_snapshot_free(struct xe_guc_ct_snapshot *snapshot);
void xe_guc_ct_print(struct xe_guc_ct *ct, struct drm_printer *p, bool want_ctb);
+void xe_guc_ct_fixup_messages_with_ggtt(struct xe_guc_ct *ct, s64 ggtt_shift);
+
static inline bool xe_guc_ct_enabled(struct xe_guc_ct *ct)
{
return ct->state == XE_GUC_CT_STATE_ENABLED;
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index b95934055f72..4442fb00d0aa 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -469,12 +469,16 @@ static void __register_mlrc_exec_queue(struct xe_guc *guc,
action[len++] = info->context_idx;
action[len++] = info->engine_class;
action[len++] = info->engine_submit_mask;
+ xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC);
action[len++] = info->wq_desc_lo;
action[len++] = info->wq_desc_hi;
+ xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE);
action[len++] = info->wq_base_lo;
action[len++] = info->wq_base_hi;
action[len++] = info->wq_size;
+ xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN);
action[len++] = q->width;
+ xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA);
action[len++] = info->hwlrca_lo;
action[len++] = info->hwlrca_hi;
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
index 4ee8fc70a744..cd759579b9b4 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
@@ -10,6 +10,7 @@
#include "xe_gt.h"
#include "xe_gt_sriov_printk.h"
#include "xe_gt_sriov_vf.h"
+#include "xe_guc_ct.h"
#include "xe_pm.h"
#include "xe_sriov.h"
#include "xe_sriov_printk.h"
@@ -158,6 +159,20 @@ static int vf_post_migration_requery_guc(struct xe_device *xe)
return ret;
}
+static void vf_post_migration_fixup_ctb(struct xe_device *xe)
+{
+ struct xe_gt *gt;
+ unsigned int id;
+
+ xe_assert(xe, IS_SRIOV_VF(xe));
+
+ for_each_gt(gt, xe, id) {
+ struct xe_gt_sriov_vf_selfconfig *config = >->sriov.vf.self_config;
+
+ xe_guc_ct_fixup_messages_with_ggtt(>->uc.guc.ct, config->ggtt_shift);
+ }
+}
+
/*
* vf_post_migration_imminent - Check if post-restore recovery is coming.
* @xe: the &xe_device struct instance
@@ -224,6 +239,9 @@ static void vf_post_migration_recovery(struct xe_device *xe)
err = vf_post_migration_fixup_ggtt_nodes(xe);
/* FIXME: add the recovery steps */
+ if (err != ENODATA)
+ vf_post_migration_fixup_ctb(xe);
+
vf_post_migration_notify_resfix_done(xe);
xe_pm_runtime_put(xe);
drm_notice(&xe->drm, "migration recovery ended\n");
--
2.25.1
^ permalink raw reply related [flat|nested] 23+ messages in thread
* ✓ CI.Patch_applied: success for drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
` (2 preceding siblings ...)
2025-03-06 22:21 ` [PATCH v4 3/3] drm/xe/vf: Fixup CTB send buffer messages after migration Tomasz Lis
@ 2025-03-07 0:22 ` Patchwork
2025-03-07 0:22 ` ✗ CI.checkpatch: warning " Patchwork
` (6 subsequent siblings)
10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-03-07 0:22 UTC (permalink / raw)
To: Tomasz Lis; +Cc: intel-xe
== Series Details ==
Series: drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
URL : https://patchwork.freedesktop.org/series/141439/
State : success
== Summary ==
=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: 9796125d0726 drm-tip: 2025y-03m-06d-23h-55m-01s UTC integration manifest
=== git am output follows ===
Applying: drm/drm_mm: Safe macro for iterating through nodes in range
Applying: drm/xe/sriov: Shifting GGTT area post migration
Applying: drm/xe/vf: Fixup CTB send buffer messages after migration
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✗ CI.checkpatch: warning for drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
` (3 preceding siblings ...)
2025-03-07 0:22 ` ✓ CI.Patch_applied: success for drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5) Patchwork
@ 2025-03-07 0:22 ` Patchwork
2025-03-07 0:24 ` ✓ CI.KUnit: success " Patchwork
` (5 subsequent siblings)
10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-03-07 0:22 UTC (permalink / raw)
To: Tomasz Lis; +Cc: intel-xe
== Series Details ==
Series: drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
URL : https://patchwork.freedesktop.org/series/141439/
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
cbb4e4a079d89106c2736adc3c7de6f9dc56da07
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 81a2c420e2efe20adb5b35092e1eb865de57b94d
Author: Tomasz Lis <tomasz.lis@intel.com>
Date: Thu Mar 6 23:21:26 2025 +0100
drm/xe/vf: Fixup CTB send buffer messages after migration
During post-migration recovery of a VF, it is necessary to update
GGTT references included in messages which are going to be sent
to GuC. GuC will start consuming messages after VF KMD will inform
it about fixups being done; before that, the VF KMD is expected
to update any H2G messages which are already in send buffer but
were not consumed by GuC.
Only a small subset of messages allowed for VFs have GGTT references
in them. This patch adds the functionality to parse the CTB send
ring buffer and shift addresses contained within.
While fixing the CTB content, ct->lock is not taken. This means
the only barrier taken remains GGTT address lock - which is ok,
because only requests with GGTT addresses matter, but it also means
tail changes can happen during the CTB fixups execution (which may
be ignored as any new messages will not have anything to fix).
The GGTT address locking will be introduced in a future series.
v2: removed storing shift as that's now done in VMA nodes patch;
macros to inlines; warns to asserts; log messages fixes (Michal)
v3: Removed inline keywords, enums for offsets in CTB messages,
less error messages, if return unused then made functs void (Michal)
v4: Update the cached head before starting fixups
Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
+ /mt/dim checkpatch 9796125d0726448924abdb8c73077c7486e3dd3d drm-intel
b8a96691315e drm/drm_mm: Safe macro for iterating through nodes in range
-:32: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'node__' - possible side-effects?
#32: FILE: include/drm/drm_mm.h:520:
+#define drm_mm_for_each_node_in_range_safe(node__, next__, mm__, start__, end__) \
+ for (node__ = __drm_mm_interval_first((mm__), (start__), (end__)-1), \
+ next__ = list_next_entry(node__, node_list); \
+ node__->start < (end__); \
+ node__ = next__, next__ = list_next_entry(next__, node_list))
-:32: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'next__' - possible side-effects?
#32: FILE: include/drm/drm_mm.h:520:
+#define drm_mm_for_each_node_in_range_safe(node__, next__, mm__, start__, end__) \
+ for (node__ = __drm_mm_interval_first((mm__), (start__), (end__)-1), \
+ next__ = list_next_entry(node__, node_list); \
+ node__->start < (end__); \
+ node__ = next__, next__ = list_next_entry(next__, node_list))
-:32: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'end__' - possible side-effects?
#32: FILE: include/drm/drm_mm.h:520:
+#define drm_mm_for_each_node_in_range_safe(node__, next__, mm__, start__, end__) \
+ for (node__ = __drm_mm_interval_first((mm__), (start__), (end__)-1), \
+ next__ = list_next_entry(node__, node_list); \
+ node__->start < (end__); \
+ node__ = next__, next__ = list_next_entry(next__, node_list))
-:33: CHECK:SPACING: spaces preferred around that '-' (ctx:VxV)
#33: FILE: include/drm/drm_mm.h:521:
+ for (node__ = __drm_mm_interval_first((mm__), (start__), (end__)-1), \
^
total: 0 errors, 0 warnings, 4 checks, 25 lines checked
b0547830000c drm/xe/sriov: Shifting GGTT area post migration
-:41: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#41: FILE: drivers/gpu/drm/xe/xe_ggtt.c:498:
+static void xe_ggtt_mm_shift_nodes(struct xe_ggtt *ggtt, struct drm_mm_node *balloon_beg,
+ struct drm_mm_node *balloon_fin, s64 shift)
-:153: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#153: FILE: drivers/gpu/drm/xe/xe_ggtt.c:610:
+ if (!*balloon_beg)
+ {
-:166: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#166: FILE: drivers/gpu/drm/xe/xe_ggtt.c:623:
+ if (!*balloon_fin)
+ {
-:184: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#184: FILE: drivers/gpu/drm/xe/xe_ggtt.c:641:
+ if (*balloon_beg && !xe_ggtt_node_allocated(*balloon_beg))
+ {
-:190: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#190: FILE: drivers/gpu/drm/xe/xe_ggtt.c:647:
+ if (*balloon_fin && !xe_ggtt_node_allocated(*balloon_fin))
+ {
total: 4 errors, 0 warnings, 1 checks, 270 lines checked
81a2c420e2ef drm/xe/vf: Fixup CTB send buffer messages after migration
-:69: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#69: FILE: drivers/gpu/drm/xe/xe_guc_ct.c:1628:
+static u32 ctb_read32(struct xe_device *xe, struct iosys_map *cmds,
+ u32 head, u32 pos)
-:79: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#79: FILE: drivers/gpu/drm/xe/xe_guc_ct.c:1638:
+static void ctb_fixup64(struct xe_device *xe, struct iosys_map *cmds,
+ u32 head, u32 pos, s64 shift)
-:123: WARNING:LONG_LINE: line length of 106 exceeds 100 columns
#123: FILE: drivers/gpu/drm/xe/xe_guc_ct.c:1682:
+ n = ctb_read32(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN);
-:126: WARNING:LONG_LINE: line length of 122 exceeds 100 columns
#126: FILE: drivers/gpu/drm/xe/xe_guc_ct.c:1685:
+ ctb_fixup64(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA + 2 * i, shift);
-:209: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#209: FILE: drivers/gpu/drm/xe/xe_guc_ct.c:1768:
+ xe_gt_err(gt, "Corrupted H2G descriptor head=%u tail=%u size=%u\n",
+ head, tail, size);
total: 0 errors, 2 warnings, 3 checks, 232 lines checked
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✓ CI.KUnit: success for drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
` (4 preceding siblings ...)
2025-03-07 0:22 ` ✗ CI.checkpatch: warning " Patchwork
@ 2025-03-07 0:24 ` Patchwork
2025-03-07 0:46 ` ✓ CI.Build: " Patchwork
` (4 subsequent siblings)
10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-03-07 0:24 UTC (permalink / raw)
To: Tomasz Lis; +Cc: intel-xe
== Series Details ==
Series: drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
URL : https://patchwork.freedesktop.org/series/141439/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[00:22:56] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[00:23:03] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[00:23:55] Starting KUnit Kernel (1/1)...
[00:23:55] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[00:23:55] ================== guc_buf (11 subtests) ===================
[00:23:55] [PASSED] test_smallest
[00:23:55] [PASSED] test_largest
[00:23:55] [PASSED] test_granular
[00:23:55] [PASSED] test_unique
[00:23:55] [PASSED] test_overlap
[00:23:55] [PASSED] test_reusable
[00:23:55] [PASSED] test_too_big
[00:23:55] [PASSED] test_flush
[00:23:55] [PASSED] test_lookup
[00:23:55] [PASSED] test_data
[00:23:55] [PASSED] test_class
[00:23:55] ===================== [PASSED] guc_buf =====================
[00:23:55] =================== guc_dbm (7 subtests) ===================
[00:23:55] [PASSED] test_empty
[00:23:55] [PASSED] test_default
[00:23:55] ======================== test_size ========================
[00:23:55] [PASSED] 4
[00:23:55] [PASSED] 8
[00:23:55] [PASSED] 32
[00:23:55] [PASSED] 256
[00:23:55] ==================== [PASSED] test_size ====================
[00:23:55] ======================= test_reuse ========================
[00:23:55] [PASSED] 4
[00:23:55] [PASSED] 8
[00:23:55] [PASSED] 32
[00:23:55] [PASSED] 256
[00:23:55] =================== [PASSED] test_reuse ====================
[00:23:55] =================== test_range_overlap ====================
[00:23:55] [PASSED] 4
[00:23:55] [PASSED] 8
[00:23:55] [PASSED] 32
[00:23:55] [PASSED] 256
[00:23:55] =============== [PASSED] test_range_overlap ================
[00:23:55] =================== test_range_compact ====================
[00:23:55] [PASSED] 4
[00:23:55] [PASSED] 8
[00:23:55] [PASSED] 32
[00:23:55] [PASSED] 256
[00:23:55] =============== [PASSED] test_range_compact ================
[00:23:55] ==================== test_range_spare =====================
[00:23:55] [PASSED] 4
[00:23:55] [PASSED] 8
[00:23:55] [PASSED] 32
[00:23:55] [PASSED] 256
[00:23:55] ================ [PASSED] test_range_spare =================
[00:23:55] ===================== [PASSED] guc_dbm =====================
[00:23:55] =================== guc_idm (6 subtests) ===================
[00:23:55] [PASSED] bad_init
[00:23:55] [PASSED] no_init
[00:23:55] [PASSED] init_fini
[00:23:55] [PASSED] check_used
[00:23:55] [PASSED] check_quota
[00:23:55] [PASSED] check_all
[00:23:55] ===================== [PASSED] guc_idm =====================
[00:23:55] ================== no_relay (3 subtests) ===================
[00:23:55] [PASSED] xe_drops_guc2pf_if_not_ready
[00:23:55] [PASSED] xe_drops_guc2vf_if_not_ready
[00:23:55] [PASSED] xe_rejects_send_if_not_ready
[00:23:55] ==================== [PASSED] no_relay =====================
[00:23:55] ================== pf_relay (14 subtests) ==================
[00:23:55] [PASSED] pf_rejects_guc2pf_too_short
[00:23:55] [PASSED] pf_rejects_guc2pf_too_long
[00:23:55] [PASSED] pf_rejects_guc2pf_no_payload
[00:23:55] [PASSED] pf_fails_no_payload
[00:23:55] [PASSED] pf_fails_bad_origin
[00:23:55] [PASSED] pf_fails_bad_type
[00:23:55] [PASSED] pf_txn_reports_error
[00:23:55] [PASSED] pf_txn_sends_pf2guc
[00:23:55] [PASSED] pf_sends_pf2guc
[00:23:55] [SKIPPED] pf_loopback_nop
[00:23:55] [SKIPPED] pf_loopback_echo
[00:23:55] [SKIPPED] pf_loopback_fail
[00:23:55] [SKIPPED] pf_loopback_busy
[00:23:55] [SKIPPED] pf_loopback_retry
[00:23:55] ==================== [PASSED] pf_relay =====================
[00:23:55] ================== vf_relay (3 subtests) ===================
[00:23:55] [PASSED] vf_rejects_guc2vf_too_short
[00:23:55] [PASSED] vf_rejects_guc2vf_too_long
[00:23:55] [PASSED] vf_rejects_guc2vf_no_payload
[00:23:55] ==================== [PASSED] vf_relay =====================
[00:23:55] ================= pf_service (11 subtests) =================
[00:23:55] [PASSED] pf_negotiate_any
[00:23:55] [PASSED] pf_negotiate_base_match
[00:23:55] [PASSED] pf_negotiate_base_newer
[00:23:55] [PASSED] pf_negotiate_base_next
[00:23:55] [SKIPPED] pf_negotiate_base_older
[00:23:55] [PASSED] pf_negotiate_base_prev
[00:23:55] [PASSED] pf_negotiate_latest_match
[00:23:55] [PASSED] pf_negotiate_latest_newer
[00:23:55] [PASSED] pf_negotiate_latest_next
[00:23:55] [SKIPPED] pf_negotiate_latest_older
[00:23:55] [SKIPPED] pf_negotiate_latest_prev
[00:23:55] =================== [PASSED] pf_service ====================
[00:23:55] ===================== lmtt (1 subtest) =====================
[00:23:55] ======================== test_ops =========================
[00:23:55] [PASSED] 2-level
[00:23:55] [PASSED] multi-level
[00:23:55] ==================== [PASSED] test_ops =====================
[00:23:55] ====================== [PASSED] lmtt =======================
[00:23:55] =================== xe_mocs (2 subtests) ===================
[00:23:55] ================ xe_live_mocs_kernel_kunit ================
[00:23:55] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[00:23:55] ================ xe_live_mocs_reset_kunit =================
[00:23:55] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[00:23:55] ==================== [SKIPPED] xe_mocs =====================
[00:23:55] ================= xe_migrate (2 subtests) ==================
[00:23:55] ================= xe_migrate_sanity_kunit =================
[00:23:55] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[00:23:55] ================== xe_validate_ccs_kunit ==================
[00:23:55] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[00:23:55] =================== [SKIPPED] xe_migrate ===================
[00:23:55] ================== xe_dma_buf (1 subtest) ==================
[00:23:55] ==================== xe_dma_buf_kunit =====================
[00:23:55] ================ [SKIPPED] xe_dma_buf_kunit ================
[00:23:55] =================== [SKIPPED] xe_dma_buf ===================
[00:23:55] ================= xe_bo_shrink (1 subtest) =================
[00:23:55] =================== xe_bo_shrink_kunit ====================
[00:23:55] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[00:23:55] ================== [SKIPPED] xe_bo_shrink ==================
[00:23:55] ==================== xe_bo (2 subtests) ====================
[00:23:55] ================== xe_ccs_migrate_kunit ===================
[00:23:55] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
stty: 'standard input': Inappropriate ioctl for device
[00:23:55] ==================== xe_bo_evict_kunit ====================
[00:23:55] =============== [SKIPPED] xe_bo_evict_kunit ================
[00:23:55] ===================== [SKIPPED] xe_bo ======================
[00:23:55] ==================== args (11 subtests) ====================
[00:23:55] [PASSED] count_args_test
[00:23:55] [PASSED] call_args_example
[00:23:55] [PASSED] call_args_test
[00:23:55] [PASSED] drop_first_arg_example
[00:23:55] [PASSED] drop_first_arg_test
[00:23:55] [PASSED] first_arg_example
[00:23:55] [PASSED] first_arg_test
[00:23:55] [PASSED] last_arg_example
[00:23:55] [PASSED] last_arg_test
[00:23:55] [PASSED] pick_arg_example
[00:23:55] [PASSED] sep_comma_example
[00:23:55] ====================== [PASSED] args =======================
[00:23:55] =================== xe_pci (2 subtests) ====================
[00:23:55] [PASSED] xe_gmdid_graphics_ip
[00:23:55] [PASSED] xe_gmdid_media_ip
[00:23:55] ===================== [PASSED] xe_pci ======================
[00:23:55] =================== xe_rtp (2 subtests) ====================
[00:23:55] =============== xe_rtp_process_to_sr_tests ================
[00:23:55] [PASSED] coalesce-same-reg
[00:23:55] [PASSED] no-match-no-add
[00:23:55] [PASSED] match-or
[00:23:55] [PASSED] match-or-xfail
[00:23:55] [PASSED] no-match-no-add-multiple-rules
[00:23:55] [PASSED] two-regs-two-entries
[00:23:55] [PASSED] clr-one-set-other
[00:23:55] [PASSED] set-field
[00:23:55] [PASSED] conflict-duplicate
[00:23:55] [PASSED] conflict-not-disjoint
[00:23:55] [PASSED] conflict-reg-type
[00:23:55] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[00:23:55] ================== xe_rtp_process_tests ===================
[00:23:55] [PASSED] active1
[00:23:55] [PASSED] active2
[00:23:55] [PASSED] active-inactive
[00:23:55] [PASSED] inactive-active
[00:23:55] [PASSED] inactive-1st_or_active-inactive
[00:23:55] [PASSED] inactive-2nd_or_active-inactive
[00:23:55] [PASSED] inactive-last_or_active-inactive
[00:23:55] [PASSED] inactive-no_or_active-inactive
[00:23:55] ============== [PASSED] xe_rtp_process_tests ===============
[00:23:55] ===================== [PASSED] xe_rtp ======================
[00:23:55] ==================== xe_wa (1 subtest) =====================
[00:23:55] ======================== xe_wa_gt =========================
[00:23:55] [PASSED] TIGERLAKE (B0)
[00:23:55] [PASSED] DG1 (A0)
[00:23:55] [PASSED] DG1 (B0)
[00:23:55] [PASSED] ALDERLAKE_S (A0)
[00:23:55] [PASSED] ALDERLAKE_S (B0)
[00:23:55] [PASSED] ALDERLAKE_S (C0)
[00:23:55] [PASSED] ALDERLAKE_S (D0)
[00:23:55] [PASSED] ALDERLAKE_P (A0)
[00:23:55] [PASSED] ALDERLAKE_P (B0)
[00:23:55] [PASSED] ALDERLAKE_P (C0)
[00:23:55] [PASSED] ALDERLAKE_S_RPLS (D0)
[00:23:55] [PASSED] ALDERLAKE_P_RPLU (E0)
[00:23:55] [PASSED] DG2_G10 (C0)
[00:23:55] [PASSED] DG2_G11 (B1)
[00:23:55] [PASSED] DG2_G12 (A1)
[00:23:55] [PASSED] METEORLAKE (g:A0, m:A0)
[00:23:55] [PASSED] METEORLAKE (g:A0, m:A0)
[00:23:55] [PASSED] METEORLAKE (g:A0, m:A0)
[00:23:55] [PASSED] LUNARLAKE (g:A0, m:A0)
[00:23:55] [PASSED] LUNARLAKE (g:B0, m:A0)
[00:23:55] [PASSED] BATTLEMAGE (g:A0, m:A1)
[00:23:55] ==================== [PASSED] xe_wa_gt =====================
[00:23:55] ====================== [PASSED] xe_wa ======================
[00:23:55] ============================================================
[00:23:55] Testing complete. Ran 133 tests: passed: 117, skipped: 16
[00:23:55] Elapsed time: 59.412s total, 6.946s configuring, 51.995s building, 0.417s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[00:23:55] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[00:23:58] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[00:24:38] Starting KUnit Kernel (1/1)...
[00:24:38] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[00:24:38] =========== drm_validate_clone_mode (2 subtests) ===========
[00:24:38] ============== drm_test_check_in_clone_mode ===============
[00:24:38] [PASSED] in_clone_mode
[00:24:38] [PASSED] not_in_clone_mode
[00:24:38] ========== [PASSED] drm_test_check_in_clone_mode ===========
[00:24:38] =============== drm_test_check_valid_clones ===============
[00:24:38] [PASSED] not_in_clone_mode
[00:24:38] [PASSED] valid_clone
[00:24:38] [PASSED] invalid_clone
[00:24:38] =========== [PASSED] drm_test_check_valid_clones ===========
[00:24:38] ============= [PASSED] drm_validate_clone_mode =============
[00:24:38] ============= drm_validate_modeset (1 subtest) =============
[00:24:38] [PASSED] drm_test_check_connector_changed_modeset
[00:24:38] ============== [PASSED] drm_validate_modeset ===============
[00:24:38] ================== drm_buddy (7 subtests) ==================
[00:24:38] [PASSED] drm_test_buddy_alloc_limit
[00:24:38] [PASSED] drm_test_buddy_alloc_optimistic
[00:24:38] [PASSED] drm_test_buddy_alloc_pessimistic
[00:24:38] [PASSED] drm_test_buddy_alloc_pathological
[00:24:38] [PASSED] drm_test_buddy_alloc_contiguous
[00:24:38] [PASSED] drm_test_buddy_alloc_clear
[00:24:38] [PASSED] drm_test_buddy_alloc_range_bias
[00:24:38] ==================== [PASSED] drm_buddy ====================
[00:24:38] ============= drm_cmdline_parser (40 subtests) =============
[00:24:38] [PASSED] drm_test_cmdline_force_d_only
[00:24:38] [PASSED] drm_test_cmdline_force_D_only_dvi
[00:24:38] [PASSED] drm_test_cmdline_force_D_only_hdmi
[00:24:38] [PASSED] drm_test_cmdline_force_D_only_not_digital
[00:24:38] [PASSED] drm_test_cmdline_force_e_only
[00:24:38] [PASSED] drm_test_cmdline_res
[00:24:38] [PASSED] drm_test_cmdline_res_vesa
[00:24:38] [PASSED] drm_test_cmdline_res_vesa_rblank
[00:24:38] [PASSED] drm_test_cmdline_res_rblank
[00:24:38] [PASSED] drm_test_cmdline_res_bpp
[00:24:38] [PASSED] drm_test_cmdline_res_refresh
[00:24:38] [PASSED] drm_test_cmdline_res_bpp_refresh
[00:24:38] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[00:24:38] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[00:24:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[00:24:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[00:24:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[00:24:38] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[00:24:38] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[00:24:38] [PASSED] drm_test_cmdline_res_margins_force_on
[00:24:38] [PASSED] drm_test_cmdline_res_vesa_margins
[00:24:38] [PASSED] drm_test_cmdline_name
[00:24:38] [PASSED] drm_test_cmdline_name_bpp
[00:24:38] [PASSED] drm_test_cmdline_name_option
[00:24:38] [PASSED] drm_test_cmdline_name_bpp_option
[00:24:38] [PASSED] drm_test_cmdline_rotate_0
[00:24:38] [PASSED] drm_test_cmdline_rotate_90
[00:24:38] [PASSED] drm_test_cmdline_rotate_180
[00:24:38] [PASSED] drm_test_cmdline_rotate_270
[00:24:38] [PASSED] drm_test_cmdline_hmirror
[00:24:38] [PASSED] drm_test_cmdline_vmirror
[00:24:38] [PASSED] drm_test_cmdline_margin_options
[00:24:38] [PASSED] drm_test_cmdline_multiple_options
[00:24:38] [PASSED] drm_test_cmdline_bpp_extra_and_option
[00:24:38] [PASSED] drm_test_cmdline_extra_and_option
[00:24:38] [PASSED] drm_test_cmdline_freestanding_options
[00:24:38] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[00:24:38] [PASSED] drm_test_cmdline_panel_orientation
[00:24:38] ================ drm_test_cmdline_invalid =================
[00:24:38] [PASSED] margin_only
[00:24:38] [PASSED] interlace_only
[00:24:38] [PASSED] res_missing_x
[00:24:38] [PASSED] res_missing_y
[00:24:38] [PASSED] res_bad_y
[00:24:38] [PASSED] res_missing_y_bpp
[00:24:38] [PASSED] res_bad_bpp
[00:24:38] [PASSED] res_bad_refresh
[00:24:38] [PASSED] res_bpp_refresh_force_on_off
[00:24:38] [PASSED] res_invalid_mode
[00:24:38] [PASSED] res_bpp_wrong_place_mode
[00:24:38] [PASSED] name_bpp_refresh
[00:24:38] [PASSED] name_refresh
[00:24:38] [PASSED] name_refresh_wrong_mode
[00:24:38] [PASSED] name_refresh_invalid_mode
[00:24:38] [PASSED] rotate_multiple
[00:24:38] [PASSED] rotate_invalid_val
[00:24:38] [PASSED] rotate_truncated
[00:24:38] [PASSED] invalid_option
[00:24:38] [PASSED] invalid_tv_option
[00:24:38] [PASSED] truncated_tv_option
[00:24:38] ============ [PASSED] drm_test_cmdline_invalid =============
[00:24:38] =============== drm_test_cmdline_tv_options ===============
[00:24:38] [PASSED] NTSC
[00:24:38] [PASSED] NTSC_443
[00:24:38] [PASSED] NTSC_J
[00:24:38] [PASSED] PAL
[00:24:38] [PASSED] PAL_M
[00:24:38] [PASSED] PAL_N
[00:24:38] [PASSED] SECAM
[00:24:38] [PASSED] MONO_525
[00:24:38] [PASSED] MONO_625
[00:24:38] =========== [PASSED] drm_test_cmdline_tv_options ===========
[00:24:38] =============== [PASSED] drm_cmdline_parser ================
[00:24:38] ========== drmm_connector_hdmi_init (20 subtests) ==========
[00:24:38] [PASSED] drm_test_connector_hdmi_init_valid
[00:24:38] [PASSED] drm_test_connector_hdmi_init_bpc_8
[00:24:38] [PASSED] drm_test_connector_hdmi_init_bpc_10
[00:24:38] [PASSED] drm_test_connector_hdmi_init_bpc_12
[00:24:38] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[00:24:38] [PASSED] drm_test_connector_hdmi_init_bpc_null
[00:24:38] [PASSED] drm_test_connector_hdmi_init_formats_empty
[00:24:38] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[00:24:38] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[00:24:38] [PASSED] supported_formats=0x9 yuv420_allowed=1
[00:24:38] [PASSED] supported_formats=0x9 yuv420_allowed=0
[00:24:38] [PASSED] supported_formats=0x3 yuv420_allowed=1
[00:24:38] [PASSED] supported_formats=0x3 yuv420_allowed=0
[00:24:38] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[00:24:38] [PASSED] drm_test_connector_hdmi_init_null_ddc
[00:24:38] [PASSED] drm_test_connector_hdmi_init_null_product
[00:24:38] [PASSED] drm_test_connector_hdmi_init_null_vendor
[00:24:38] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[00:24:38] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[00:24:38] [PASSED] drm_test_connector_hdmi_init_product_valid
[00:24:38] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[00:24:38] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[00:24:38] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[00:24:38] ========= drm_test_connector_hdmi_init_type_valid =========
[00:24:38] [PASSED] HDMI-A
[00:24:38] [PASSED] HDMI-B
[00:24:38] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[00:24:38] ======== drm_test_connector_hdmi_init_type_invalid ========
[00:24:38] [PASSED] Unknown
[00:24:38] [PASSED] VGA
[00:24:38] [PASSED] DVI-I
[00:24:38] [PASSED] DVI-D
[00:24:38] [PASSED] DVI-A
[00:24:38] [PASSED] Composite
[00:24:38] [PASSED] SVIDEO
[00:24:38] [PASSED] LVDS
[00:24:38] [PASSED] Component
[00:24:38] [PASSED] DIN
[00:24:38] [PASSED] DP
[00:24:38] [PASSED] TV
[00:24:38] [PASSED] eDP
[00:24:38] [PASSED] Virtual
[00:24:38] [PASSED] DSI
[00:24:38] [PASSED] DPI
[00:24:38] [PASSED] Writeback
[00:24:38] [PASSED] SPI
[00:24:38] [PASSED] USB
[00:24:38] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[00:24:38] ============ [PASSED] drmm_connector_hdmi_init =============
[00:24:38] ============= drmm_connector_init (3 subtests) =============
[00:24:38] [PASSED] drm_test_drmm_connector_init
[00:24:38] [PASSED] drm_test_drmm_connector_init_null_ddc
[00:24:38] ========= drm_test_drmm_connector_init_type_valid =========
[00:24:38] [PASSED] Unknown
[00:24:38] [PASSED] VGA
[00:24:38] [PASSED] DVI-I
[00:24:38] [PASSED] DVI-D
[00:24:38] [PASSED] DVI-A
[00:24:38] [PASSED] Composite
[00:24:38] [PASSED] SVIDEO
[00:24:38] [PASSED] LVDS
[00:24:38] [PASSED] Component
[00:24:38] [PASSED] DIN
[00:24:38] [PASSED] DP
[00:24:38] [PASSED] HDMI-A
[00:24:38] [PASSED] HDMI-B
[00:24:38] [PASSED] TV
[00:24:38] [PASSED] eDP
[00:24:38] [PASSED] Virtual
[00:24:38] [PASSED] DSI
[00:24:38] [PASSED] DPI
[00:24:38] [PASSED] Writeback
[00:24:38] [PASSED] SPI
[00:24:38] [PASSED] USB
[00:24:38] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[00:24:38] =============== [PASSED] drmm_connector_init ===============
[00:24:38] ========= drm_connector_dynamic_init (6 subtests) ==========
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_init
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_init_properties
[00:24:38] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[00:24:38] [PASSED] Unknown
[00:24:38] [PASSED] VGA
[00:24:38] [PASSED] DVI-I
[00:24:38] [PASSED] DVI-D
[00:24:38] [PASSED] DVI-A
[00:24:38] [PASSED] Composite
[00:24:38] [PASSED] SVIDEO
[00:24:38] [PASSED] LVDS
[00:24:38] [PASSED] Component
[00:24:38] [PASSED] DIN
[00:24:38] [PASSED] DP
[00:24:38] [PASSED] HDMI-A
[00:24:38] [PASSED] HDMI-B
[00:24:38] [PASSED] TV
[00:24:38] [PASSED] eDP
[00:24:38] [PASSED] Virtual
[00:24:38] [PASSED] DSI
[00:24:38] [PASSED] DPI
[00:24:38] [PASSED] Writeback
[00:24:38] [PASSED] SPI
[00:24:38] [PASSED] USB
[00:24:38] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[00:24:38] ======== drm_test_drm_connector_dynamic_init_name =========
[00:24:38] [PASSED] Unknown
[00:24:38] [PASSED] VGA
[00:24:38] [PASSED] DVI-I
[00:24:38] [PASSED] DVI-D
[00:24:38] [PASSED] DVI-A
[00:24:38] [PASSED] Composite
[00:24:38] [PASSED] SVIDEO
[00:24:38] [PASSED] LVDS
[00:24:38] [PASSED] Component
[00:24:38] [PASSED] DIN
[00:24:38] [PASSED] DP
[00:24:38] [PASSED] HDMI-A
[00:24:38] [PASSED] HDMI-B
[00:24:38] [PASSED] TV
[00:24:38] [PASSED] eDP
[00:24:38] [PASSED] Virtual
[00:24:38] [PASSED] DSI
[00:24:38] [PASSED] DPI
[00:24:38] [PASSED] Writeback
[00:24:38] [PASSED] SPI
[00:24:38] [PASSED] USB
[00:24:38] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[00:24:38] =========== [PASSED] drm_connector_dynamic_init ============
[00:24:38] ==== drm_connector_dynamic_register_early (4 subtests) =====
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[00:24:38] ====== [PASSED] drm_connector_dynamic_register_early =======
[00:24:38] ======= drm_connector_dynamic_register (7 subtests) ========
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[00:24:38] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[00:24:38] ========= [PASSED] drm_connector_dynamic_register ==========
[00:24:38] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[00:24:38] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[00:24:38] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[00:24:38] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[00:24:38] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[00:24:38] ========== drm_test_get_tv_mode_from_name_valid ===========
[00:24:38] [PASSED] NTSC
[00:24:38] [PASSED] NTSC-443
[00:24:38] [PASSED] NTSC-J
[00:24:38] [PASSED] PAL
[00:24:38] [PASSED] PAL-M
[00:24:38] [PASSED] PAL-N
[00:24:38] [PASSED] SECAM
[00:24:38] [PASSED] Mono
[00:24:38] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[00:24:38] [PASSED] drm_test_get_tv_mode_from_name_truncated
[00:24:38] ============ [PASSED] drm_get_tv_mode_from_name ============
[00:24:38] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[00:24:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[00:24:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[00:24:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[00:24:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[00:24:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[00:24:38] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[00:24:38] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[00:24:38] [PASSED] VIC 96
[00:24:38] [PASSED] VIC 97
[00:24:38] [PASSED] VIC 101
[00:24:38] [PASSED] VIC 102
[00:24:38] [PASSED] VIC 106
[00:24:38] [PASSED] VIC 107
[00:24:38] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[00:24:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[00:24:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[00:24:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[00:24:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[00:24:38] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[00:24:38] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[00:24:38] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[00:24:38] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[00:24:38] [PASSED] Automatic
[00:24:38] [PASSED] Full
[00:24:38] [PASSED] Limited 16:235
[00:24:38] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[00:24:38] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[00:24:38] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[00:24:38] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[00:24:38] === drm_test_drm_hdmi_connector_get_output_format_name ====
[00:24:38] [PASSED] RGB
[00:24:38] [PASSED] YUV 4:2:0
[00:24:38] [PASSED] YUV 4:2:2
[00:24:38] [PASSED] YUV 4:4:4
[00:24:38] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[00:24:38] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[00:24:38] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[00:24:38] ============= drm_damage_helper (21 subtests) ==============
[00:24:38] [PASSED] drm_test_damage_iter_no_damage
[00:24:38] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[00:24:38] [PASSED] drm_test_damage_iter_no_damage_src_moved
[00:24:38] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[00:24:38] [PASSED] drm_test_damage_iter_no_damage_not_visible
[00:24:38] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[00:24:38] [PASSED] drm_test_damage_iter_no_damage_no_fb
[00:24:38] [PASSED] drm_test_damage_iter_simple_damage
[00:24:38] [PASSED] drm_test_damage_iter_single_damage
[00:24:38] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[00:24:38] [PASSED] drm_test_damage_iter_single_damage_outside_src
[00:24:38] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[00:24:38] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[00:24:38] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[00:24:38] [PASSED] drm_test_damage_iter_single_damage_src_moved
[00:24:38] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[00:24:38] [PASSED] drm_test_damage_iter_damage
[00:24:38] [PASSED] drm_test_damage_iter_damage_one_intersect
[00:24:38] [PASSED] drm_test_damage_iter_damage_one_outside
[00:24:38] [PASSED] drm_test_damage_iter_damage_src_moved
[00:24:38] [PASSED] drm_test_damage_iter_damage_not_visible
[00:24:38] ================ [PASSED] drm_damage_helper ================
[00:24:38] ============== drm_dp_mst_helper (3 subtests) ==============
[00:24:38] ============== drm_test_dp_mst_calc_pbn_mode ==============
[00:24:38] [PASSED] Clock 154000 BPP 30 DSC disabled
[00:24:38] [PASSED] Clock 234000 BPP 30 DSC disabled
[00:24:38] [PASSED] Clock 297000 BPP 24 DSC disabled
[00:24:38] [PASSED] Clock 332880 BPP 24 DSC enabled
[00:24:38] [PASSED] Clock 324540 BPP 24 DSC enabled
[00:24:38] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[00:24:38] ============== drm_test_dp_mst_calc_pbn_div ===============
[00:24:38] [PASSED] Link rate 2000000 lane count 4
[00:24:38] [PASSED] Link rate 2000000 lane count 2
[00:24:38] [PASSED] Link rate 2000000 lane count 1
[00:24:38] [PASSED] Link rate 1350000 lane count 4
[00:24:38] [PASSED] Link rate 1350000 lane count 2
[00:24:38] [PASSED] Link rate 1350000 lane count 1
[00:24:38] [PASSED] Link rate 1000000 lane count 4
[00:24:38] [PASSED] Link rate 1000000 lane count 2
[00:24:38] [PASSED] Link rate 1000000 lane count 1
[00:24:38] [PASSED] Link rate 810000 lane count 4
[00:24:38] [PASSED] Link rate 810000 lane count 2
[00:24:38] [PASSED] Link rate 810000 lane count 1
[00:24:38] [PASSED] Link rate 540000 lane count 4
[00:24:38] [PASSED] Link rate 540000 lane count 2
[00:24:38] [PASSED] Link rate 540000 lane count 1
[00:24:38] [PASSED] Link rate 270000 lane count 4
[00:24:38] [PASSED] Link rate 270000 lane count 2
[00:24:38] [PASSED] Link rate 270000 lane count 1
[00:24:38] [PASSED] Link rate 162000 lane count 4
[00:24:38] [PASSED] Link rate 162000 lane count 2
[00:24:38] [PASSED] Link rate 162000 lane count 1
[00:24:38] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[00:24:38] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[00:24:38] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[00:24:38] [PASSED] DP_POWER_UP_PHY with port number
[00:24:38] [PASSED] DP_POWER_DOWN_PHY with port number
[00:24:38] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[00:24:38] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[00:24:38] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[00:24:38] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[00:24:38] [PASSED] DP_QUERY_PAYLOAD with port number
[00:24:38] [PASSED] DP_QUERY_PAYLOAD with VCPI
[00:24:38] [PASSED] DP_REMOTE_DPCD_READ with port number
[00:24:38] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[00:24:38] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[00:24:38] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[00:24:38] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[00:24:38] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[00:24:38] [PASSED] DP_REMOTE_I2C_READ with port number
[00:24:38] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[00:24:38] [PASSED] DP_REMOTE_I2C_READ with transactions array
[00:24:38] [PASSED] DP_REMOTE_I2C_WRITE with port number
[00:24:38] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[00:24:38] [PASSED] DP_REMOTE_I2C_WRITE with data array
[00:24:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[00:24:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[00:24:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[00:24:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[00:24:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[00:24:38] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[00:24:38] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[00:24:38] ================ [PASSED] drm_dp_mst_helper ================
[00:24:38] ================== drm_exec (7 subtests) ===================
[00:24:38] [PASSED] sanitycheck
[00:24:38] [PASSED] test_lock
[00:24:38] [PASSED] test_lock_unlock
[00:24:38] [PASSED] test_duplicates
[00:24:38] [PASSED] test_prepare
[00:24:38] [PASSED] test_prepare_array
[00:24:38] [PASSED] test_multiple_loops
[00:24:38] ==================== [PASSED] drm_exec =====================
[00:24:38] =========== drm_format_helper_test (18 subtests) ===========
[00:24:38] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[00:24:38] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[00:24:38] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[00:24:38] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[00:24:38] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[00:24:38] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[00:24:38] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[00:24:38] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[00:24:38] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[00:24:38] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[00:24:38] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[00:24:38] ============== drm_test_fb_xrgb8888_to_mono ===============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[00:24:38] ==================== drm_test_fb_swab =====================
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ================ [PASSED] drm_test_fb_swab =================
[00:24:38] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[00:24:38] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[00:24:38] [PASSED] single_pixel_source_buffer
[00:24:38] [PASSED] single_pixel_clip_rectangle
[00:24:38] [PASSED] well_known_colors
[00:24:38] [PASSED] destination_pitch
[00:24:38] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[00:24:38] ================= drm_test_fb_clip_offset =================
[00:24:38] [PASSED] pass through
[00:24:38] [PASSED] horizontal offset
[00:24:38] [PASSED] vertical offset
[00:24:38] [PASSED] horizontal and vertical offset
[00:24:38] [PASSED] horizontal offset (custom pitch)
[00:24:38] [PASSED] vertical offset (custom pitch)
[00:24:38] [PASSED] horizontal and vertical offset (custom pitch)
[00:24:38] ============= [PASSED] drm_test_fb_clip_offset =============
[00:24:38] ============== drm_test_fb_build_fourcc_list ==============
[00:24:38] [PASSED] no native formats
[00:24:38] [PASSED] XRGB8888 as native format
[00:24:38] [PASSED] remove duplicates
[00:24:38] [PASSED] convert alpha formats
[00:24:38] [PASSED] random formats
[00:24:38] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[00:24:38] =================== drm_test_fb_memcpy ====================
[00:24:38] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[00:24:38] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[00:24:38] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[00:24:38] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[00:24:38] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[00:24:38] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[00:24:38] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[00:24:38] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[00:24:38] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[00:24:38] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[00:24:38] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[00:24:38] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[00:24:38] =============== [PASSED] drm_test_fb_memcpy ================
[00:24:38] ============= [PASSED] drm_format_helper_test ==============
[00:24:38] ================= drm_format (18 subtests) =================
[00:24:38] [PASSED] drm_test_format_block_width_invalid
[00:24:38] [PASSED] drm_test_format_block_width_one_plane
[00:24:38] [PASSED] drm_test_format_block_width_two_plane
[00:24:38] [PASSED] drm_test_format_block_width_three_plane
[00:24:38] [PASSED] drm_test_format_block_width_tiled
[00:24:38] [PASSED] drm_test_format_block_height_invalid
[00:24:38] [PASSED] drm_test_format_block_height_one_plane
[00:24:38] [PASSED] drm_test_format_block_height_two_plane
[00:24:38] [PASSED] drm_test_format_block_height_three_plane
[00:24:38] [PASSED] drm_test_format_block_height_tiled
[00:24:38] [PASSED] drm_test_format_min_pitch_invalid
[00:24:38] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[00:24:38] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[00:24:38] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[00:24:38] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[00:24:38] [PASSED] drm_test_format_min_pitch_two_plane
[00:24:38] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[00:24:38] [PASSED] drm_test_format_min_pitch_tiled
[00:24:38] =================== [PASSED] drm_format ====================
[00:24:38] ============== drm_framebuffer (10 subtests) ===============
[00:24:38] ========== drm_test_framebuffer_check_src_coords ==========
[00:24:38] [PASSED] Success: source fits into fb
[00:24:38] [PASSED] Fail: overflowing fb with x-axis coordinate
[00:24:38] [PASSED] Fail: overflowing fb with y-axis coordinate
[00:24:38] [PASSED] Fail: overflowing fb with source width
[00:24:38] [PASSED] Fail: overflowing fb with source height
[00:24:38] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[00:24:38] [PASSED] drm_test_framebuffer_cleanup
[00:24:38] =============== drm_test_framebuffer_create ===============
[00:24:38] [PASSED] ABGR8888 normal sizes
[00:24:38] [PASSED] ABGR8888 max sizes
[00:24:38] [PASSED] ABGR8888 pitch greater than min required
[00:24:38] [PASSED] ABGR8888 pitch less than min required
[00:24:38] [PASSED] ABGR8888 Invalid width
[00:24:38] [PASSED] ABGR8888 Invalid buffer handle
[00:24:38] [PASSED] No pixel format
[00:24:38] [PASSED] ABGR8888 Width 0
[00:24:38] [PASSED] ABGR8888 Height 0
[00:24:38] [PASSED] ABGR8888 Out of bound height * pitch combination
[00:24:38] [PASSED] ABGR8888 Large buffer offset
[00:24:38] [PASSED] ABGR8888 Buffer offset for inexistent plane
[00:24:38] [PASSED] ABGR8888 Invalid flag
[00:24:38] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[00:24:38] [PASSED] ABGR8888 Valid buffer modifier
[00:24:38] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[00:24:38] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[00:24:38] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[00:24:38] [PASSED] NV12 Normal sizes
[00:24:38] [PASSED] NV12 Max sizes
[00:24:38] [PASSED] NV12 Invalid pitch
[00:24:38] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[00:24:38] [PASSED] NV12 different modifier per-plane
[00:24:38] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[00:24:38] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[00:24:38] [PASSED] NV12 Modifier for inexistent plane
[00:24:38] [PASSED] NV12 Handle for inexistent plane
[00:24:38] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[00:24:38] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[00:24:38] [PASSED] YVU420 Normal sizes
[00:24:38] [PASSED] YVU420 Max sizes
[00:24:38] [PASSED] YVU420 Invalid pitch
[00:24:38] [PASSED] YVU420 Different pitches
[00:24:38] [PASSED] YVU420 Different buffer offsets/pitches
[00:24:38] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[00:24:38] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[00:24:38] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[00:24:38] [PASSED] YVU420 Valid modifier
[00:24:38] [PASSED] YVU420 Different modifiers per plane
[00:24:38] [PASSED] YVU420 Modifier for inexistent plane
[00:24:38] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[00:24:38] [PASSED] X0L2 Normal sizes
[00:24:38] [PASSED] X0L2 Max sizes
[00:24:38] [PASSED] X0L2 Invalid pitch
[00:24:38] [PASSED] X0L2 Pitch greater than minimum required
[00:24:38] [PASSED] X0L2 Handle for inexistent plane
[00:24:38] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[00:24:38] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[00:24:38] [PASSED] X0L2 Valid modifier
[00:24:38] [PASSED] X0L2 Modifier for inexistent plane
[00:24:38] =========== [PASSED] drm_test_framebuffer_create ===========
[00:24:38] [PASSED] drm_test_framebuffer_free
[00:24:38] [PASSED] drm_test_framebuffer_init
[00:24:38] [PASSED] drm_test_framebuffer_init_bad_format
[00:24:38] [PASSED] drm_test_framebuffer_init_dev_mismatch
[00:24:38] [PASSED] drm_test_framebuffer_lookup
[00:24:38] [PASSED] drm_test_framebuffer_lookup_inexistent
[00:24:38] [PASSED] drm_test_framebuffer_modifiers_not_supported
[00:24:38] ================= [PASSED] drm_framebuffer =================
[00:24:38] ================ drm_gem_shmem (8 subtests) ================
[00:24:38] [PASSED] drm_gem_shmem_test_obj_create
[00:24:38] [PASSED] drm_gem_shmem_test_obj_create_private
[00:24:38] [PASSED] drm_gem_shmem_test_pin_pages
[00:24:38] [PASSED] drm_gem_shmem_test_vmap
[00:24:38] [PASSED] drm_gem_shmem_test_get_pages_sgt
[00:24:38] [PASSED] drm_gem_shmem_test_get_sg_table
[00:24:38] [PASSED] drm_gem_shmem_test_madvise
[00:24:38] [PASSED] drm_gem_shmem_test_purge
[00:24:38] ================== [PASSED] drm_gem_shmem ==================
[00:24:38] === drm_atomic_helper_connector_hdmi_check (23 subtests) ===
[00:24:38] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[00:24:38] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[00:24:38] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[00:24:38] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[00:24:38] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[00:24:38] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[00:24:38] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[00:24:38] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[00:24:38] [PASSED] drm_test_check_disable_connector
[00:24:38] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[00:24:38] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback
[00:24:38] [PASSED] drm_test_check_max_tmds_rate_format_fallback
[00:24:38] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[00:24:38] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[00:24:38] [PASSED] drm_test_check_output_bpc_dvi
[00:24:38] [PASSED] drm_test_check_output_bpc_format_vic_1
[00:24:38] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[00:24:38] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[00:24:38] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[00:24:38] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[00:24:38] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[00:24:38] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[00:24:38] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[00:24:38] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[00:24:38] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[00:24:38] [PASSED] drm_test_check_broadcast_rgb_value
[00:24:38] [PASSED] drm_test_check_bpc_8_value
[00:24:38] [PASSED] drm_test_check_bpc_10_value
[00:24:38] [PASSED] drm_test_check_bpc_12_value
[00:24:38] [PASSED] drm_test_check_format_value
[00:24:38] [PASSED] drm_test_check_tmds_char_value
[00:24:38] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[00:24:38] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[00:24:38] [PASSED] drm_test_check_mode_valid
[00:24:38] [PASSED] drm_test_check_mode_valid_reject
[00:24:38] [PASSED] drm_test_check_mode_valid_reject_rate
[00:24:38] [PASSED] drm_test_check_mode_valid_reject_max_clock
[00:24:38] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[00:24:38] ================= drm_managed (2 subtests) =================
[00:24:38] [PASSED] drm_test_managed_release_action
[00:24:38] [PASSED] drm_test_managed_run_action
[00:24:38] =================== [PASSED] drm_managed ===================
[00:24:38] =================== drm_mm (6 subtests) ====================
[00:24:38] [PASSED] drm_test_mm_init
[00:24:38] [PASSED] drm_test_mm_debug
[00:24:38] [PASSED] drm_test_mm_align32
[00:24:38] [PASSED] drm_test_mm_align64
[00:24:38] [PASSED] drm_test_mm_lowest
[00:24:38] [PASSED] drm_test_mm_highest
[00:24:38] ===================== [PASSED] drm_mm ======================
[00:24:38] ============= drm_modes_analog_tv (5 subtests) =============
[00:24:38] [PASSED] drm_test_modes_analog_tv_mono_576i
[00:24:38] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[00:24:38] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[00:24:38] [PASSED] drm_test_modes_analog_tv_pal_576i
[00:24:38] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[00:24:38] =============== [PASSED] drm_modes_analog_tv ===============
[00:24:38] ============== drm_plane_helper (2 subtests) ===============
[00:24:38] =============== drm_test_check_plane_state ================
[00:24:38] [PASSED] clipping_simple
[00:24:38] [PASSED] clipping_rotate_reflect
[00:24:38] [PASSED] positioning_simple
[00:24:38] [PASSED] upscaling
[00:24:38] [PASSED] downscaling
[00:24:38] [PASSED] rounding1
[00:24:38] [PASSED] rounding2
[00:24:38] [PASSED] rounding3
[00:24:38] [PASSED] rounding4
[00:24:38] =========== [PASSED] drm_test_check_plane_state ============
[00:24:38] =========== drm_test_check_invalid_plane_state ============
[00:24:38] [PASSED] positioning_invalid
[00:24:38] [PASSED] upscaling_invalid
[00:24:38] [PASSED] downscaling_invalid
[00:24:38] ======= [PASSED] drm_test_check_invalid_plane_state ========
[00:24:38] ================ [PASSED] drm_plane_helper =================
[00:24:38] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[00:24:38] ====== drm_test_connector_helper_tv_get_modes_check =======
[00:24:38] [PASSED] None
[00:24:38] [PASSED] PAL
[00:24:38] [PASSED] NTSC
[00:24:38] [PASSED] Both, NTSC Default
[00:24:38] [PASSED] Both, PAL Default
[00:24:38] [PASSED] Both, NTSC Default, with PAL on command-line
[00:24:38] [PASSED] Both, PAL Default, with NTSC on command-line
[00:24:38] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[00:24:38] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[00:24:38] ================== drm_rect (9 subtests) ===================
[00:24:38] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[00:24:38] [PASSED] drm_test_rect_clip_scaled_not_clipped
[00:24:38] [PASSED] drm_test_rect_clip_scaled_clipped
[00:24:38] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[00:24:38] ================= drm_test_rect_intersect =================
[00:24:38] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[00:24:38] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[00:24:38] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[00:24:38] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[00:24:38] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[00:24:38] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[00:24:38] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[00:24:38] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[00:24:38] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[00:24:38] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[00:24:38] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[00:24:38] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[00:24:38] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[00:24:38] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[00:24:38] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[00:24:38] ============= [PASSED] drm_test_rect_intersect =============
[00:24:38] ================ drm_test_rect_calc_hscale ================
[00:24:38] [PASSED] normal use
[00:24:38] [PASSED] out of max range
[00:24:38] [PASSED] out of min range
[00:24:38] [PASSED] zero dst
[00:24:38] [PASSED] negative src
[00:24:38] [PASSED] negative dst
[00:24:38] ============ [PASSED] drm_test_rect_calc_hscale ============
[00:24:38] ================ drm_test_rect_calc_vscale ================
[00:24:38] [PASSED] normal use
[00:24:38] [PASSED] out of max range
[00:24:38] [PASSED] out of min range
[00:24:38] [PASSED] zero dst
[00:24:38] [PASSED] negative src
[00:24:38] [PASSED] negative dst
stty: 'standard input': Inappropriate ioctl for device
[00:24:38] ============ [PASSED] drm_test_rect_calc_vscale ============
[00:24:38] ================== drm_test_rect_rotate ===================
[00:24:38] [PASSED] reflect-x
[00:24:38] [PASSED] reflect-y
[00:24:38] [PASSED] rotate-0
[00:24:38] [PASSED] rotate-90
[00:24:38] [PASSED] rotate-180
[00:24:38] [PASSED] rotate-270
[00:24:38] ============== [PASSED] drm_test_rect_rotate ===============
[00:24:38] ================ drm_test_rect_rotate_inv =================
[00:24:38] [PASSED] reflect-x
[00:24:38] [PASSED] reflect-y
[00:24:38] [PASSED] rotate-0
[00:24:38] [PASSED] rotate-90
[00:24:38] [PASSED] rotate-180
[00:24:38] [PASSED] rotate-270
[00:24:38] ============ [PASSED] drm_test_rect_rotate_inv =============
[00:24:38] ==================== [PASSED] drm_rect =====================
[00:24:38] ============================================================
[00:24:38] Testing complete. Ran 602 tests: passed: 602
[00:24:38] Elapsed time: 42.595s total, 2.603s configuring, 39.724s building, 0.217s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[00:24:38] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[00:24:41] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
[00:24:53] Starting KUnit Kernel (1/1)...
[00:24:53] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[00:24:53] ================= ttm_device (5 subtests) ==================
[00:24:53] [PASSED] ttm_device_init_basic
[00:24:53] [PASSED] ttm_device_init_multiple
[00:24:53] [PASSED] ttm_device_fini_basic
[00:24:53] [PASSED] ttm_device_init_no_vma_man
[00:24:53] ================== ttm_device_init_pools ==================
[00:24:53] [PASSED] No DMA allocations, no DMA32 required
[00:24:53] [PASSED] DMA allocations, DMA32 required
[00:24:53] [PASSED] No DMA allocations, DMA32 required
[00:24:53] [PASSED] DMA allocations, no DMA32 required
[00:24:53] ============== [PASSED] ttm_device_init_pools ==============
[00:24:53] =================== [PASSED] ttm_device ====================
[00:24:53] ================== ttm_pool (8 subtests) ===================
[00:24:53] ================== ttm_pool_alloc_basic ===================
[00:24:53] [PASSED] One page
[00:24:53] [PASSED] More than one page
[00:24:53] [PASSED] Above the allocation limit
[00:24:53] [PASSED] One page, with coherent DMA mappings enabled
[00:24:53] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[00:24:53] ============== [PASSED] ttm_pool_alloc_basic ===============
[00:24:53] ============== ttm_pool_alloc_basic_dma_addr ==============
[00:24:53] [PASSED] One page
[00:24:53] [PASSED] More than one page
[00:24:53] [PASSED] Above the allocation limit
[00:24:53] [PASSED] One page, with coherent DMA mappings enabled
[00:24:53] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[00:24:53] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[00:24:53] [PASSED] ttm_pool_alloc_order_caching_match
[00:24:53] [PASSED] ttm_pool_alloc_caching_mismatch
[00:24:53] [PASSED] ttm_pool_alloc_order_mismatch
[00:24:53] [PASSED] ttm_pool_free_dma_alloc
[00:24:53] [PASSED] ttm_pool_free_no_dma_alloc
[00:24:53] [PASSED] ttm_pool_fini_basic
[00:24:53] ==================== [PASSED] ttm_pool =====================
[00:24:53] ================ ttm_resource (8 subtests) =================
[00:24:53] ================= ttm_resource_init_basic =================
[00:24:53] [PASSED] Init resource in TTM_PL_SYSTEM
[00:24:53] [PASSED] Init resource in TTM_PL_VRAM
[00:24:53] [PASSED] Init resource in a private placement
[00:24:53] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[00:24:53] ============= [PASSED] ttm_resource_init_basic =============
[00:24:53] [PASSED] ttm_resource_init_pinned
[00:24:53] [PASSED] ttm_resource_fini_basic
[00:24:53] [PASSED] ttm_resource_manager_init_basic
[00:24:53] [PASSED] ttm_resource_manager_usage_basic
[00:24:53] [PASSED] ttm_resource_manager_set_used_basic
[00:24:53] [PASSED] ttm_sys_man_alloc_basic
[00:24:53] [PASSED] ttm_sys_man_free_basic
[00:24:53] ================== [PASSED] ttm_resource ===================
[00:24:53] =================== ttm_tt (15 subtests) ===================
[00:24:53] ==================== ttm_tt_init_basic ====================
[00:24:53] [PASSED] Page-aligned size
[00:24:53] [PASSED] Extra pages requested
[00:24:53] ================ [PASSED] ttm_tt_init_basic ================
[00:24:53] [PASSED] ttm_tt_init_misaligned
[00:24:53] [PASSED] ttm_tt_fini_basic
[00:24:53] [PASSED] ttm_tt_fini_sg
[00:24:53] [PASSED] ttm_tt_fini_shmem
[00:24:53] [PASSED] ttm_tt_create_basic
[00:24:53] [PASSED] ttm_tt_create_invalid_bo_type
[00:24:53] [PASSED] ttm_tt_create_ttm_exists
[00:24:53] [PASSED] ttm_tt_create_failed
[00:24:53] [PASSED] ttm_tt_destroy_basic
[00:24:53] [PASSED] ttm_tt_populate_null_ttm
[00:24:53] [PASSED] ttm_tt_populate_populated_ttm
[00:24:53] [PASSED] ttm_tt_unpopulate_basic
[00:24:53] [PASSED] ttm_tt_unpopulate_empty_ttm
[00:24:53] [PASSED] ttm_tt_swapin_basic
[00:24:53] ===================== [PASSED] ttm_tt ======================
[00:24:53] =================== ttm_bo (14 subtests) ===================
[00:24:53] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[00:24:53] [PASSED] Cannot be interrupted and sleeps
[00:24:53] [PASSED] Cannot be interrupted, locks straight away
[00:24:53] [PASSED] Can be interrupted, sleeps
[00:24:53] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[00:24:53] [PASSED] ttm_bo_reserve_locked_no_sleep
[00:24:53] [PASSED] ttm_bo_reserve_no_wait_ticket
[00:24:54] [PASSED] ttm_bo_reserve_double_resv
[00:24:54] [PASSED] ttm_bo_reserve_interrupted
[00:24:54] [PASSED] ttm_bo_reserve_deadlock
[00:24:54] [PASSED] ttm_bo_unreserve_basic
[00:24:54] [PASSED] ttm_bo_unreserve_pinned
[00:24:54] [PASSED] ttm_bo_unreserve_bulk
[00:24:54] [PASSED] ttm_bo_put_basic
[00:24:54] [PASSED] ttm_bo_put_shared_resv
[00:24:54] [PASSED] ttm_bo_pin_basic
[00:24:54] [PASSED] ttm_bo_pin_unpin_resource
[00:24:54] [PASSED] ttm_bo_multiple_pin_one_unpin
[00:24:54] ===================== [PASSED] ttm_bo ======================
[00:24:54] ============== ttm_bo_validate (22 subtests) ===============
[00:24:54] ============== ttm_bo_init_reserved_sys_man ===============
[00:24:54] [PASSED] Buffer object for userspace
[00:24:54] [PASSED] Kernel buffer object
[00:24:54] [PASSED] Shared buffer object
[00:24:54] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[00:24:54] ============== ttm_bo_init_reserved_mock_man ==============
[00:24:54] [PASSED] Buffer object for userspace
[00:24:54] [PASSED] Kernel buffer object
[00:24:54] [PASSED] Shared buffer object
[00:24:54] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[00:24:54] [PASSED] ttm_bo_init_reserved_resv
[00:24:54] ================== ttm_bo_validate_basic ==================
[00:24:54] [PASSED] Buffer object for userspace
[00:24:54] [PASSED] Kernel buffer object
[00:24:54] [PASSED] Shared buffer object
[00:24:54] ============== [PASSED] ttm_bo_validate_basic ==============
[00:24:54] [PASSED] ttm_bo_validate_invalid_placement
[00:24:54] ============= ttm_bo_validate_same_placement ==============
[00:24:54] [PASSED] System manager
[00:24:54] [PASSED] VRAM manager
[00:24:54] ========= [PASSED] ttm_bo_validate_same_placement ==========
[00:24:54] [PASSED] ttm_bo_validate_failed_alloc
[00:24:54] [PASSED] ttm_bo_validate_pinned
[00:24:54] [PASSED] ttm_bo_validate_busy_placement
[00:24:54] ================ ttm_bo_validate_multihop =================
[00:24:54] [PASSED] Buffer object for userspace
[00:24:54] [PASSED] Kernel buffer object
[00:24:54] [PASSED] Shared buffer object
[00:24:54] ============ [PASSED] ttm_bo_validate_multihop =============
[00:24:54] ========== ttm_bo_validate_no_placement_signaled ==========
[00:24:54] [PASSED] Buffer object in system domain, no page vector
[00:24:54] [PASSED] Buffer object in system domain with an existing page vector
[00:24:54] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[00:24:54] ======== ttm_bo_validate_no_placement_not_signaled ========
[00:24:54] [PASSED] Buffer object for userspace
[00:24:54] [PASSED] Kernel buffer object
[00:24:54] [PASSED] Shared buffer object
[00:24:54] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[00:24:54] [PASSED] ttm_bo_validate_move_fence_signaled
[00:24:54] ========= ttm_bo_validate_move_fence_not_signaled =========
[00:24:54] [PASSED] Waits for GPU
[00:24:54] [PASSED] Tries to lock straight away
[00:24:54] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[00:24:54] [PASSED] ttm_bo_validate_swapout
[00:24:54] [PASSED] ttm_bo_validate_happy_evict
[00:24:54] [PASSED] ttm_bo_validate_all_pinned_evict
[00:24:54] [PASSED] ttm_bo_validate_allowed_only_evict
[00:24:54] [PASSED] ttm_bo_validate_deleted_evict
[00:24:54] [PASSED] ttm_bo_validate_busy_domain_evict
[00:24:54] [PASSED] ttm_bo_validate_evict_gutting
[00:24:54] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[00:24:54] ================= [PASSED] ttm_bo_validate =================
[00:24:54] ============================================================
[00:24:54] Testing complete. Ran 102 tests: passed: 102
[00:24:54] Elapsed time: 16.036s total, 2.581s configuring, 12.585s building, 0.696s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✓ CI.Build: success for drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
` (5 preceding siblings ...)
2025-03-07 0:24 ` ✓ CI.KUnit: success " Patchwork
@ 2025-03-07 0:46 ` Patchwork
2025-03-07 0:48 ` ✓ CI.Hooks: " Patchwork
` (3 subsequent siblings)
10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-03-07 0:46 UTC (permalink / raw)
To: Tomasz Lis; +Cc: intel-xe
== Series Details ==
Series: drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
URL : https://patchwork.freedesktop.org/series/141439/
State : success
== Summary ==
lib/modules/6.14.0-rc5-xe+/kernel/arch/x86/events/amd/
lib/modules/6.14.0-rc5-xe+/kernel/arch/x86/events/amd/amd-uncore.ko
lib/modules/6.14.0-rc5-xe+/kernel/arch/x86/events/rapl.ko
lib/modules/6.14.0-rc5-xe+/kernel/arch/x86/kvm/
lib/modules/6.14.0-rc5-xe+/kernel/arch/x86/kvm/kvm.ko
lib/modules/6.14.0-rc5-xe+/kernel/arch/x86/kvm/kvm-intel.ko
lib/modules/6.14.0-rc5-xe+/kernel/arch/x86/kvm/kvm-amd.ko
lib/modules/6.14.0-rc5-xe+/kernel/kernel/
lib/modules/6.14.0-rc5-xe+/kernel/kernel/kheaders.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/
lib/modules/6.14.0-rc5-xe+/kernel/crypto/ecrdsa_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/xcbc.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/serpent_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/aria_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/crypto_simd.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/adiantum.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/tcrypt.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/crypto_engine.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/zstd.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/asymmetric_keys/
lib/modules/6.14.0-rc5-xe+/kernel/crypto/asymmetric_keys/pkcs7_test_key.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/asymmetric_keys/pkcs8_key_parser.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/des_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/xctr.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/authenc.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/sm4_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/camellia_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/sm3.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/pcrypt.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/aegis128.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/af_alg.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/algif_aead.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/cmac.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/sm3_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/aes_ti.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/chacha_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/poly1305_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/nhpoly1305.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/crc32_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/essiv.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/ccm.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/wp512.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/streebog_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/authencesn.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/echainiv.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/lrw.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/cryptd.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/crypto_user.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/algif_hash.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/polyval-generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/hctr2.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/842.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/pcbc.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/ansi_cprng.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/cast6_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/twofish_common.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/twofish_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/lz4hc.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/blowfish_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/md4.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/chacha20poly1305.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/curve25519-generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/lz4.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/rmd160.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/algif_skcipher.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/cast5_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/fcrypt.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/ecdsa_generic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/sm4.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/cast_common.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/blowfish_common.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/michael_mic.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/async_tx/
lib/modules/6.14.0-rc5-xe+/kernel/crypto/async_tx/async_xor.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/async_tx/async_tx.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/async_tx/async_memcpy.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/async_tx/async_pq.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/async_tx/async_raid6_recov.ko
lib/modules/6.14.0-rc5-xe+/kernel/crypto/algif_rng.ko
lib/modules/6.14.0-rc5-xe+/kernel/block/
lib/modules/6.14.0-rc5-xe+/kernel/block/bfq.ko
lib/modules/6.14.0-rc5-xe+/kernel/block/kyber-iosched.ko
lib/modules/6.14.0-rc5-xe+/build
lib/modules/6.14.0-rc5-xe+/modules.alias.bin
lib/modules/6.14.0-rc5-xe+/modules.builtin
lib/modules/6.14.0-rc5-xe+/modules.softdep
lib/modules/6.14.0-rc5-xe+/modules.alias
lib/modules/6.14.0-rc5-xe+/modules.order
lib/modules/6.14.0-rc5-xe+/modules.symbols
lib/modules/6.14.0-rc5-xe+/modules.dep.bin
+ mv kernel-nodebug.tar.gz ..
+ cd ..
+ rm -rf archive
++ date +%s
+ echo -e '\e[0Ksection_end:1741308359:package_x86_64_nodebug\r\e[0K'
^[[0Ksection_end:1741308359:package_x86_64_nodebug
^[[0K
+ sync
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✓ CI.Hooks: success for drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
` (6 preceding siblings ...)
2025-03-07 0:46 ` ✓ CI.Build: " Patchwork
@ 2025-03-07 0:48 ` Patchwork
2025-03-07 0:50 ` ✗ CI.checksparse: warning " Patchwork
` (2 subsequent siblings)
10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-03-07 0:48 UTC (permalink / raw)
To: Tomasz Lis; +Cc: intel-xe
== Series Details ==
Series: drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
URL : https://patchwork.freedesktop.org/series/141439/
State : success
== Summary ==
run-parts: executing /workspace/ci/hooks/00-showenv
+ export
+ grep -Ei '(^|\W)CI_'
declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-default"
declare -x CI_KERNEL_SRC_DIR="/workspace/kernel"
declare -x CI_TOOLS_SRC_DIR="/workspace/ci"
declare -x CI_WORKSPACE_DIR="/workspace"
run-parts: executing /workspace/ci/hooks/10-build-W1
+ SRC_DIR=/workspace/kernel
+ RESTORE_DISPLAY_CONFIG=0
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ cd /workspace/kernel
++ nproc
+ make -j48 O=/workspace/kernel/build64-default modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-default'
GEN Makefile
DESCEND objtool
INSTALL libsubcmd_headers
CALL ../scripts/checksyscalls.sh
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o
LD /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o
AR /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a
CC /workspace/kernel/build64-default/tools/objtool/weak.o
CC /workspace/kernel/build64-default/tools/objtool/check.o
CC /workspace/kernel/build64-default/tools/objtool/special.o
CC /workspace/kernel/build64-default/tools/objtool/builtin-check.o
CC /workspace/kernel/build64-default/tools/objtool/elf.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o
CC /workspace/kernel/build64-default/tools/objtool/objtool.o
CC /workspace/kernel/build64-default/tools/objtool/orc_gen.o
CC /workspace/kernel/build64-default/tools/objtool/orc_dump.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o
CC /workspace/kernel/build64-default/tools/objtool/libstring.o
CC /workspace/kernel/build64-default/tools/objtool/libctype.o
CC /workspace/kernel/build64-default/tools/objtool/str_error_r.o
CC /workspace/kernel/build64-default/tools/objtool/librbtree.o
LD /workspace/kernel/build64-default/tools/objtool/arch/x86/objtool-in.o
LD /workspace/kernel/build64-default/tools/objtool/objtool-in.o
LINK /workspace/kernel/build64-default/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64-default'
++ nproc
+ make -j48 O=/workspace/kernel/build64-default W=1 drivers/gpu/drm/xe
make[1]: Entering directory '/workspace/kernel/build64-default'
make[2]: Nothing to be done for 'drivers/gpu/drm/xe'.
make[1]: Leaving directory '/workspace/kernel/build64-default'
run-parts: executing /workspace/ci/hooks/11-build-32b
+++ realpath /workspace/ci/hooks/11-build-32b
++ dirname /workspace/ci/hooks/11-build-32b
+ THIS_SCRIPT_DIR=/workspace/ci/hooks
+ SRC_DIR=/workspace/kernel
+ TOOLS_SRC_DIR=/workspace/ci
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ BUILD_DIR=/workspace/kernel/build64-default/build32
+ cd /workspace/kernel
+ mkdir -p /workspace/kernel/build64-default/build32
++ nproc
+ make -j48 ARCH=i386 O=/workspace/kernel/build64-default/build32 defconfig
make[1]: Entering directory '/workspace/kernel/build64-default/build32'
GEN Makefile
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/util.o
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTLD scripts/kconfig/conf
*** Default configuration is based on 'i386_defconfig'
#
# configuration written to .config
#
make[1]: Leaving directory '/workspace/kernel/build64-default/build32'
+ cd /workspace/kernel/build64-default/build32
+ /workspace/kernel/scripts/kconfig/merge_config.sh .config /workspace/ci/kernel/fragments/10-xe.fragment
Using .config as base
Merging /workspace/ci/kernel/fragments/10-xe.fragment
Value of CONFIG_DRM_XE is redefined by fragment /workspace/ci/kernel/fragments/10-xe.fragment:
Previous value: # CONFIG_DRM_XE is not set
New value: CONFIG_DRM_XE=m
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
#
# configuration written to .config
#
Value requested for CONFIG_HAVE_UID16 not in final .config
Requested value: CONFIG_HAVE_UID16=y
Actual value:
Value requested for CONFIG_UID16 not in final .config
Requested value: CONFIG_UID16=y
Actual value:
Value requested for CONFIG_X86_32 not in final .config
Requested value: CONFIG_X86_32=y
Actual value:
Value requested for CONFIG_OUTPUT_FORMAT not in final .config
Requested value: CONFIG_OUTPUT_FORMAT="elf32-i386"
Actual value: CONFIG_OUTPUT_FORMAT="elf64-x86-64"
Value requested for CONFIG_ARCH_MMAP_RND_BITS_MIN not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS_MIN=8
Actual value: CONFIG_ARCH_MMAP_RND_BITS_MIN=28
Value requested for CONFIG_ARCH_MMAP_RND_BITS_MAX not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS_MAX=16
Actual value: CONFIG_ARCH_MMAP_RND_BITS_MAX=32
Value requested for CONFIG_PGTABLE_LEVELS not in final .config
Requested value: CONFIG_PGTABLE_LEVELS=2
Actual value: CONFIG_PGTABLE_LEVELS=5
Value requested for CONFIG_X86_BIGSMP not in final .config
Requested value: # CONFIG_X86_BIGSMP is not set
Actual value:
Value requested for CONFIG_X86_INTEL_QUARK not in final .config
Requested value: # CONFIG_X86_INTEL_QUARK is not set
Actual value:
Value requested for CONFIG_X86_RDC321X not in final .config
Requested value: # CONFIG_X86_RDC321X is not set
Actual value:
Value requested for CONFIG_X86_32_NON_STANDARD not in final .config
Requested value: # CONFIG_X86_32_NON_STANDARD is not set
Actual value:
Value requested for CONFIG_X86_32_IRIS not in final .config
Requested value: # CONFIG_X86_32_IRIS is not set
Actual value:
Value requested for CONFIG_M486SX not in final .config
Requested value: # CONFIG_M486SX is not set
Actual value:
Value requested for CONFIG_M486 not in final .config
Requested value: # CONFIG_M486 is not set
Actual value:
Value requested for CONFIG_M586 not in final .config
Requested value: # CONFIG_M586 is not set
Actual value:
Value requested for CONFIG_M586TSC not in final .config
Requested value: # CONFIG_M586TSC is not set
Actual value:
Value requested for CONFIG_M586MMX not in final .config
Requested value: # CONFIG_M586MMX is not set
Actual value:
Value requested for CONFIG_M686 not in final .config
Requested value: CONFIG_M686=y
Actual value:
Value requested for CONFIG_MPENTIUMII not in final .config
Requested value: # CONFIG_MPENTIUMII is not set
Actual value:
Value requested for CONFIG_MPENTIUMIII not in final .config
Requested value: # CONFIG_MPENTIUMIII is not set
Actual value:
Value requested for CONFIG_MPENTIUMM not in final .config
Requested value: # CONFIG_MPENTIUMM is not set
Actual value:
Value requested for CONFIG_MPENTIUM4 not in final .config
Requested value: # CONFIG_MPENTIUM4 is not set
Actual value:
Value requested for CONFIG_MK6 not in final .config
Requested value: # CONFIG_MK6 is not set
Actual value:
Value requested for CONFIG_MK7 not in final .config
Requested value: # CONFIG_MK7 is not set
Actual value:
Value requested for CONFIG_MCRUSOE not in final .config
Requested value: # CONFIG_MCRUSOE is not set
Actual value:
Value requested for CONFIG_MEFFICEON not in final .config
Requested value: # CONFIG_MEFFICEON is not set
Actual value:
Value requested for CONFIG_MWINCHIPC6 not in final .config
Requested value: # CONFIG_MWINCHIPC6 is not set
Actual value:
Value requested for CONFIG_MWINCHIP3D not in final .config
Requested value: # CONFIG_MWINCHIP3D is not set
Actual value:
Value requested for CONFIG_MELAN not in final .config
Requested value: # CONFIG_MELAN is not set
Actual value:
Value requested for CONFIG_MGEODEGX1 not in final .config
Requested value: # CONFIG_MGEODEGX1 is not set
Actual value:
Value requested for CONFIG_MGEODE_LX not in final .config
Requested value: # CONFIG_MGEODE_LX is not set
Actual value:
Value requested for CONFIG_MCYRIXIII not in final .config
Requested value: # CONFIG_MCYRIXIII is not set
Actual value:
Value requested for CONFIG_MVIAC3_2 not in final .config
Requested value: # CONFIG_MVIAC3_2 is not set
Actual value:
Value requested for CONFIG_MVIAC7 not in final .config
Requested value: # CONFIG_MVIAC7 is not set
Actual value:
Value requested for CONFIG_X86_GENERIC not in final .config
Requested value: # CONFIG_X86_GENERIC is not set
Actual value:
Value requested for CONFIG_X86_INTERNODE_CACHE_SHIFT not in final .config
Requested value: CONFIG_X86_INTERNODE_CACHE_SHIFT=5
Actual value: CONFIG_X86_INTERNODE_CACHE_SHIFT=6
Value requested for CONFIG_X86_L1_CACHE_SHIFT not in final .config
Requested value: CONFIG_X86_L1_CACHE_SHIFT=5
Actual value: CONFIG_X86_L1_CACHE_SHIFT=6
Value requested for CONFIG_X86_USE_PPRO_CHECKSUM not in final .config
Requested value: CONFIG_X86_USE_PPRO_CHECKSUM=y
Actual value:
Value requested for CONFIG_X86_MINIMUM_CPU_FAMILY not in final .config
Requested value: CONFIG_X86_MINIMUM_CPU_FAMILY=6
Actual value: CONFIG_X86_MINIMUM_CPU_FAMILY=64
Value requested for CONFIG_CPU_SUP_TRANSMETA_32 not in final .config
Requested value: CONFIG_CPU_SUP_TRANSMETA_32=y
Actual value:
Value requested for CONFIG_CPU_SUP_VORTEX_32 not in final .config
Requested value: CONFIG_CPU_SUP_VORTEX_32=y
Actual value:
Value requested for CONFIG_HPET_TIMER not in final .config
Requested value: # CONFIG_HPET_TIMER is not set
Actual value: CONFIG_HPET_TIMER=y
Value requested for CONFIG_NR_CPUS_RANGE_END not in final .config
Requested value: CONFIG_NR_CPUS_RANGE_END=8
Actual value: CONFIG_NR_CPUS_RANGE_END=512
Value requested for CONFIG_NR_CPUS_DEFAULT not in final .config
Requested value: CONFIG_NR_CPUS_DEFAULT=8
Actual value: CONFIG_NR_CPUS_DEFAULT=64
Value requested for CONFIG_X86_ANCIENT_MCE not in final .config
Requested value: # CONFIG_X86_ANCIENT_MCE is not set
Actual value:
Value requested for CONFIG_X86_LEGACY_VM86 not in final .config
Requested value: # CONFIG_X86_LEGACY_VM86 is not set
Actual value:
Value requested for CONFIG_X86_ESPFIX32 not in final .config
Requested value: CONFIG_X86_ESPFIX32=y
Actual value:
Value requested for CONFIG_TOSHIBA not in final .config
Requested value: # CONFIG_TOSHIBA is not set
Actual value:
Value requested for CONFIG_X86_REBOOTFIXUPS not in final .config
Requested value: # CONFIG_X86_REBOOTFIXUPS is not set
Actual value:
Value requested for CONFIG_MICROCODE_INITRD32 not in final .config
Requested value: CONFIG_MICROCODE_INITRD32=y
Actual value:
Value requested for CONFIG_NOHIGHMEM not in final .config
Requested value: # CONFIG_NOHIGHMEM is not set
Actual value:
Value requested for CONFIG_HIGHMEM4G not in final .config
Requested value: CONFIG_HIGHMEM4G=y
Actual value:
Value requested for CONFIG_HIGHMEM64G not in final .config
Requested value: # CONFIG_HIGHMEM64G is not set
Actual value:
Value requested for CONFIG_VMSPLIT_3G not in final .config
Requested value: CONFIG_VMSPLIT_3G=y
Actual value:
Value requested for CONFIG_VMSPLIT_3G_OPT not in final .config
Requested value: # CONFIG_VMSPLIT_3G_OPT is not set
Actual value:
Value requested for CONFIG_VMSPLIT_2G not in final .config
Requested value: # CONFIG_VMSPLIT_2G is not set
Actual value:
Value requested for CONFIG_VMSPLIT_2G_OPT not in final .config
Requested value: # CONFIG_VMSPLIT_2G_OPT is not set
Actual value:
Value requested for CONFIG_VMSPLIT_1G not in final .config
Requested value: # CONFIG_VMSPLIT_1G is not set
Actual value:
Value requested for CONFIG_PAGE_OFFSET not in final .config
Requested value: CONFIG_PAGE_OFFSET=0xC0000000
Actual value:
Value requested for CONFIG_HIGHMEM not in final .config
Requested value: CONFIG_HIGHMEM=y
Actual value:
Value requested for CONFIG_X86_PAE not in final .config
Requested value: # CONFIG_X86_PAE is not set
Actual value:
Value requested for CONFIG_ARCH_FLATMEM_ENABLE not in final .config
Requested value: CONFIG_ARCH_FLATMEM_ENABLE=y
Actual value:
Value requested for CONFIG_ARCH_SELECT_MEMORY_MODEL not in final .config
Requested value: CONFIG_ARCH_SELECT_MEMORY_MODEL=y
Actual value:
Value requested for CONFIG_ILLEGAL_POINTER_VALUE not in final .config
Requested value: CONFIG_ILLEGAL_POINTER_VALUE=0
Actual value: CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
Value requested for CONFIG_HIGHPTE not in final .config
Requested value: # CONFIG_HIGHPTE is not set
Actual value:
Value requested for CONFIG_COMPAT_VDSO not in final .config
Requested value: # CONFIG_COMPAT_VDSO is not set
Actual value:
Value requested for CONFIG_FUNCTION_PADDING_CFI not in final .config
Requested value: CONFIG_FUNCTION_PADDING_CFI=0
Actual value: CONFIG_FUNCTION_PADDING_CFI=11
Value requested for CONFIG_FUNCTION_PADDING_BYTES not in final .config
Requested value: CONFIG_FUNCTION_PADDING_BYTES=4
Actual value: CONFIG_FUNCTION_PADDING_BYTES=16
Value requested for CONFIG_APM not in final .config
Requested value: # CONFIG_APM is not set
Actual value:
Value requested for CONFIG_X86_POWERNOW_K6 not in final .config
Requested value: # CONFIG_X86_POWERNOW_K6 is not set
Actual value:
Value requested for CONFIG_X86_POWERNOW_K7 not in final .config
Requested value: # CONFIG_X86_POWERNOW_K7 is not set
Actual value:
Value requested for CONFIG_X86_GX_SUSPMOD not in final .config
Requested value: # CONFIG_X86_GX_SUSPMOD is not set
Actual value:
Value requested for CONFIG_X86_SPEEDSTEP_ICH not in final .config
Requested value: # CONFIG_X86_SPEEDSTEP_ICH is not set
Actual value:
Value requested for CONFIG_X86_SPEEDSTEP_SMI not in final .config
Requested value: # CONFIG_X86_SPEEDSTEP_SMI is not set
Actual value:
Value requested for CONFIG_X86_CPUFREQ_NFORCE2 not in final .config
Requested value: # CONFIG_X86_CPUFREQ_NFORCE2 is not set
Actual value:
Value requested for CONFIG_X86_LONGRUN not in final .config
Requested value: # CONFIG_X86_LONGRUN is not set
Actual value:
Value requested for CONFIG_X86_LONGHAUL not in final .config
Requested value: # CONFIG_X86_LONGHAUL is not set
Actual value:
Value requested for CONFIG_X86_E_POWERSAVER not in final .config
Requested value: # CONFIG_X86_E_POWERSAVER is not set
Actual value:
Value requested for CONFIG_PCI_GOBIOS not in final .config
Requested value: # CONFIG_PCI_GOBIOS is not set
Actual value:
Value requested for CONFIG_PCI_GOMMCONFIG not in final .config
Requested value: # CONFIG_PCI_GOMMCONFIG is not set
Actual value:
Value requested for CONFIG_PCI_GODIRECT not in final .config
Requested value: # CONFIG_PCI_GODIRECT is not set
Actual value:
Value requested for CONFIG_PCI_GOANY not in final .config
Requested value: CONFIG_PCI_GOANY=y
Actual value:
Value requested for CONFIG_PCI_BIOS not in final .config
Requested value: CONFIG_PCI_BIOS=y
Actual value:
Value requested for CONFIG_ISA not in final .config
Requested value: # CONFIG_ISA is not set
Actual value:
Value requested for CONFIG_SCx200 not in final .config
Requested value: # CONFIG_SCx200 is not set
Actual value:
Value requested for CONFIG_OLPC not in final .config
Requested value: # CONFIG_OLPC is not set
Actual value:
Value requested for CONFIG_ALIX not in final .config
Requested value: # CONFIG_ALIX is not set
Actual value:
Value requested for CONFIG_NET5501 not in final .config
Requested value: # CONFIG_NET5501 is not set
Actual value:
Value requested for CONFIG_GEOS not in final .config
Requested value: # CONFIG_GEOS is not set
Actual value:
Value requested for CONFIG_COMPAT_32 not in final .config
Requested value: CONFIG_COMPAT_32=y
Actual value:
Value requested for CONFIG_HAVE_ATOMIC_IOMAP not in final .config
Requested value: CONFIG_HAVE_ATOMIC_IOMAP=y
Actual value:
Value requested for CONFIG_ARCH_32BIT_OFF_T not in final .config
Requested value: CONFIG_ARCH_32BIT_OFF_T=y
Actual value:
Value requested for CONFIG_ARCH_WANT_IPC_PARSE_VERSION not in final .config
Requested value: CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
Actual value:
Value requested for CONFIG_MODULES_USE_ELF_REL not in final .config
Requested value: CONFIG_MODULES_USE_ELF_REL=y
Actual value:
Value requested for CONFIG_ARCH_MMAP_RND_BITS not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS=8
Actual value: CONFIG_ARCH_MMAP_RND_BITS=28
Value requested for CONFIG_CLONE_BACKWARDS not in final .config
Requested value: CONFIG_CLONE_BACKWARDS=y
Actual value:
Value requested for CONFIG_OLD_SIGSUSPEND3 not in final .config
Requested value: CONFIG_OLD_SIGSUSPEND3=y
Actual value:
Value requested for CONFIG_OLD_SIGACTION not in final .config
Requested value: CONFIG_OLD_SIGACTION=y
Actual value:
Value requested for CONFIG_ARCH_SPLIT_ARG64 not in final .config
Requested value: CONFIG_ARCH_SPLIT_ARG64=y
Actual value:
Value requested for CONFIG_FUNCTION_ALIGNMENT not in final .config
Requested value: CONFIG_FUNCTION_ALIGNMENT=4
Actual value: CONFIG_FUNCTION_ALIGNMENT=16
Value requested for CONFIG_SELECT_MEMORY_MODEL not in final .config
Requested value: CONFIG_SELECT_MEMORY_MODEL=y
Actual value:
Value requested for CONFIG_FLATMEM_MANUAL not in final .config
Requested value: CONFIG_FLATMEM_MANUAL=y
Actual value:
Value requested for CONFIG_SPARSEMEM_MANUAL not in final .config
Requested value: # CONFIG_SPARSEMEM_MANUAL is not set
Actual value:
Value requested for CONFIG_FLATMEM not in final .config
Requested value: CONFIG_FLATMEM=y
Actual value:
Value requested for CONFIG_SPARSEMEM_STATIC not in final .config
Requested value: CONFIG_SPARSEMEM_STATIC=y
Actual value:
Value requested for CONFIG_BOUNCE not in final .config
Requested value: CONFIG_BOUNCE=y
Actual value:
Value requested for CONFIG_KMAP_LOCAL not in final .config
Requested value: CONFIG_KMAP_LOCAL=y
Actual value:
Value requested for CONFIG_HOTPLUG_PCI_COMPAQ not in final .config
Requested value: # CONFIG_HOTPLUG_PCI_COMPAQ is not set
Actual value:
Value requested for CONFIG_HOTPLUG_PCI_IBM not in final .config
Requested value: # CONFIG_HOTPLUG_PCI_IBM is not set
Actual value:
Value requested for CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH not in final .config
Requested value: CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH=y
Actual value:
Value requested for CONFIG_PCH_PHUB not in final .config
Requested value: # CONFIG_PCH_PHUB is not set
Actual value:
Value requested for CONFIG_SCSI_NSP32 not in final .config
Requested value: # CONFIG_SCSI_NSP32 is not set
Actual value:
Value requested for CONFIG_PATA_CS5520 not in final .config
Requested value: # CONFIG_PATA_CS5520 is not set
Actual value:
Value requested for CONFIG_PATA_CS5530 not in final .config
Requested value: # CONFIG_PATA_CS5530 is not set
Actual value:
Value requested for CONFIG_PATA_CS5535 not in final .config
Requested value: # CONFIG_PATA_CS5535 is not set
Actual value:
Value requested for CONFIG_PATA_CS5536 not in final .config
Requested value: # CONFIG_PATA_CS5536 is not set
Actual value:
Value requested for CONFIG_PATA_SC1200 not in final .config
Requested value: # CONFIG_PATA_SC1200 is not set
Actual value:
Value requested for CONFIG_PCH_GBE not in final .config
Requested value: # CONFIG_PCH_GBE is not set
Actual value:
Value requested for CONFIG_INPUT_WISTRON_BTNS not in final .config
Requested value: # CONFIG_INPUT_WISTRON_BTNS is not set
Actual value:
Value requested for CONFIG_SERIAL_TIMBERDALE not in final .config
Requested value: # CONFIG_SERIAL_TIMBERDALE is not set
Actual value:
Value requested for CONFIG_SERIAL_PCH_UART not in final .config
Requested value: # CONFIG_SERIAL_PCH_UART is not set
Actual value:
Value requested for CONFIG_HW_RANDOM_GEODE not in final .config
Requested value: CONFIG_HW_RANDOM_GEODE=y
Actual value:
Value requested for CONFIG_SONYPI not in final .config
Requested value: # CONFIG_SONYPI is not set
Actual value:
Value requested for CONFIG_PC8736x_GPIO not in final .config
Requested value: # CONFIG_PC8736x_GPIO is not set
Actual value:
Value requested for CONFIG_NSC_GPIO not in final .config
Requested value: # CONFIG_NSC_GPIO is not set
Actual value:
Value requested for CONFIG_I2C_EG20T not in final .config
Requested value: # CONFIG_I2C_EG20T is not set
Actual value:
Value requested for CONFIG_SCx200_ACB not in final .config
Requested value: # CONFIG_SCx200_ACB is not set
Actual value:
Value requested for CONFIG_PTP_1588_CLOCK_PCH not in final .config
Requested value: # CONFIG_PTP_1588_CLOCK_PCH is not set
Actual value:
Value requested for CONFIG_SBC8360_WDT not in final .config
Requested value: # CONFIG_SBC8360_WDT is not set
Actual value:
Value requested for CONFIG_SBC7240_WDT not in final .config
Requested value: # CONFIG_SBC7240_WDT is not set
Actual value:
Value requested for CONFIG_MFD_CS5535 not in final .config
Requested value: # CONFIG_MFD_CS5535 is not set
Actual value:
Value requested for CONFIG_AGP_ALI not in final .config
Requested value: # CONFIG_AGP_ALI is not set
Actual value:
Value requested for CONFIG_AGP_ATI not in final .config
Requested value: # CONFIG_AGP_ATI is not set
Actual value:
Value requested for CONFIG_AGP_AMD not in final .config
Requested value: # CONFIG_AGP_AMD is not set
Actual value:
Value requested for CONFIG_AGP_NVIDIA not in final .config
Requested value: # CONFIG_AGP_NVIDIA is not set
Actual value:
Value requested for CONFIG_AGP_SWORKS not in final .config
Requested value: # CONFIG_AGP_SWORKS is not set
Actual value:
Value requested for CONFIG_AGP_EFFICEON not in final .config
Requested value: # CONFIG_AGP_EFFICEON is not set
Actual value:
Value requested for CONFIG_SND_CS5530 not in final .config
Requested value: # CONFIG_SND_CS5530 is not set
Actual value:
Value requested for CONFIG_SND_CS5535AUDIO not in final .config
Requested value: # CONFIG_SND_CS5535AUDIO is not set
Actual value:
Value requested for CONFIG_SND_SIS7019 not in final .config
Requested value: # CONFIG_SND_SIS7019 is not set
Actual value:
Value requested for CONFIG_LEDS_OT200 not in final .config
Requested value: # CONFIG_LEDS_OT200 is not set
Actual value:
Value requested for CONFIG_PCH_DMA not in final .config
Requested value: # CONFIG_PCH_DMA is not set
Actual value:
Value requested for CONFIG_CLKSRC_I8253 not in final .config
Requested value: CONFIG_CLKSRC_I8253=y
Actual value:
Value requested for CONFIG_MAILBOX not in final .config
Requested value: # CONFIG_MAILBOX is not set
Actual value: CONFIG_MAILBOX=y
Value requested for CONFIG_CRYPTO_SERPENT_SSE2_586 not in final .config
Requested value: # CONFIG_CRYPTO_SERPENT_SSE2_586 is not set
Actual value:
Value requested for CONFIG_CRYPTO_TWOFISH_586 not in final .config
Requested value: # CONFIG_CRYPTO_TWOFISH_586 is not set
Actual value:
Value requested for CONFIG_CRYPTO_DEV_GEODE not in final .config
Requested value: # CONFIG_CRYPTO_DEV_GEODE is not set
Actual value:
Value requested for CONFIG_CRYPTO_DEV_HIFN_795X not in final .config
Requested value: # CONFIG_CRYPTO_DEV_HIFN_795X is not set
Actual value:
Value requested for CONFIG_CRYPTO_LIB_POLY1305_RSIZE not in final .config
Requested value: CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
Actual value: CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
Value requested for CONFIG_AUDIT_GENERIC not in final .config
Requested value: CONFIG_AUDIT_GENERIC=y
Actual value:
Value requested for CONFIG_GENERIC_VDSO_32 not in final .config
Requested value: CONFIG_GENERIC_VDSO_32=y
Actual value:
Value requested for CONFIG_DEBUG_KMAP_LOCAL not in final .config
Requested value: # CONFIG_DEBUG_KMAP_LOCAL is not set
Actual value:
Value requested for CONFIG_DEBUG_HIGHMEM not in final .config
Requested value: # CONFIG_DEBUG_HIGHMEM is not set
Actual value:
Value requested for CONFIG_HAVE_DEBUG_STACKOVERFLOW not in final .config
Requested value: CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
Actual value:
Value requested for CONFIG_DEBUG_STACKOVERFLOW not in final .config
Requested value: # CONFIG_DEBUG_STACKOVERFLOW is not set
Actual value:
Value requested for CONFIG_HAVE_FUNCTION_GRAPH_TRACER not in final .config
Requested value: CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
Actual value:
Value requested for CONFIG_HAVE_FUNCTION_GRAPH_FREGS not in final .config
Requested value: CONFIG_HAVE_FUNCTION_GRAPH_FREGS=y
Actual value:
Value requested for CONFIG_HAVE_FTRACE_GRAPH_FUNC not in final .config
Requested value: CONFIG_HAVE_FTRACE_GRAPH_FUNC=y
Actual value:
Value requested for CONFIG_DRM_KUNIT_TEST not in final .config
Requested value: CONFIG_DRM_KUNIT_TEST=m
Actual value:
Value requested for CONFIG_DRM_XE_WERROR not in final .config
Requested value: CONFIG_DRM_XE_WERROR=y
Actual value:
Value requested for CONFIG_DRM_XE_DEBUG not in final .config
Requested value: CONFIG_DRM_XE_DEBUG=y
Actual value:
Value requested for CONFIG_DRM_XE_DEBUG_MEM not in final .config
Requested value: CONFIG_DRM_XE_DEBUG_MEM=y
Actual value:
Value requested for CONFIG_DRM_XE_KUNIT_TEST not in final .config
Requested value: CONFIG_DRM_XE_KUNIT_TEST=m
Actual value:
++ nproc
+ make -j48 ARCH=i386 olddefconfig
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
#
# configuration written to .config
#
++ nproc
+ make -j48 ARCH=i386
SYNC include/config/auto.conf.cmd
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
GEN Makefile
WRAP arch/x86/include/generated/uapi/asm/bpf_perf_event.h
WRAP arch/x86/include/generated/uapi/asm/fcntl.h
WRAP arch/x86/include/generated/uapi/asm/errno.h
WRAP arch/x86/include/generated/uapi/asm/ioctls.h
WRAP arch/x86/include/generated/uapi/asm/ioctl.h
WRAP arch/x86/include/generated/uapi/asm/ipcbuf.h
UPD include/generated/uapi/linux/version.h
WRAP arch/x86/include/generated/uapi/asm/param.h
WRAP arch/x86/include/generated/uapi/asm/poll.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h
WRAP arch/x86/include/generated/uapi/asm/resource.h
WRAP arch/x86/include/generated/uapi/asm/socket.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.h
SYSTBL arch/x86/include/generated/asm/syscalls_32.h
WRAP arch/x86/include/generated/uapi/asm/sockios.h
WRAP arch/x86/include/generated/uapi/asm/termbits.h
WRAP arch/x86/include/generated/uapi/asm/termios.h
WRAP arch/x86/include/generated/uapi/asm/types.h
HOSTCC arch/x86/tools/relocs_32.o
UPD include/generated/compile.h
HOSTCC arch/x86/tools/relocs_64.o
HOSTCC arch/x86/tools/relocs_common.o
WRAP arch/x86/include/generated/asm/early_ioremap.h
WRAP arch/x86/include/generated/asm/fprobe.h
WRAP arch/x86/include/generated/asm/mcs_spinlock.h
WRAP arch/x86/include/generated/asm/mmzone.h
WRAP arch/x86/include/generated/asm/irq_regs.h
WRAP arch/x86/include/generated/asm/kmap_size.h
WRAP arch/x86/include/generated/asm/local64.h
WRAP arch/x86/include/generated/asm/mmiowb.h
WRAP arch/x86/include/generated/asm/module.lds.h
WRAP arch/x86/include/generated/asm/rwonce.h
HOSTCC scripts/kallsyms
HOSTCC scripts/sorttable
HOSTCC scripts/asn1_compiler
HOSTCC scripts/selinux/mdp/mdp
HOSTLD arch/x86/tools/relocs
UPD include/config/kernel.release
UPD include/generated/utsrelease.h
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
CC scripts/mod/devicetable-offsets.s
UPD scripts/mod/devicetable-offsets.h
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/sumversion.o
HOSTCC scripts/mod/symsearch.o
HOSTLD scripts/mod/modpost
CC kernel/bounds.s
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-arch-fallback.h
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-instrumented.h
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-long.h
UPD include/generated/timeconst.h
UPD include/generated/bounds.h
CC arch/x86/kernel/asm-offsets.s
UPD include/generated/asm-offsets.h
CALL /workspace/kernel/scripts/checksyscalls.sh
LDS scripts/module.lds
HOSTCC usr/gen_init_cpio
CC init/main.o
CC init/do_mounts.o
CC certs/system_keyring.o
CC ipc/util.o
CC init/do_mounts_initrd.o
UPD init/utsversion-tmp.h
CC ipc/msgutil.o
CC init/initramfs.o
CC security/commoncap.o
CC io_uring/io_uring.o
CC ipc/msg.o
CC init/calibrate.o
CC mm/filemap.o
CC ipc/sem.o
CC io_uring/opdef.o
CC security/lsm_syscalls.o
CC init/init_task.o
CC mm/mempool.o
CC block/bdev.o
CC io_uring/kbuf.o
AS arch/x86/lib/atomic64_cx8_32.o
CC security/min_addr.o
CC arch/x86/realmode/init.o
CC arch/x86/power/cpu.o
AR arch/x86/crypto/built-in.a
CC block/fops.o
CC arch/x86/video/video-common.o
AR arch/x86/net/built-in.a
CC arch/x86/pci/i386.o
CC security/keys/gc.o
HOSTCC security/selinux/genheaders
CC security/integrity/iint.o
CC block/partitions/core.o
AR virt/lib/built-in.a
CC security/integrity/integrity_audit.o
CC fs/nfs_common/nfsacl.o
CC arch/x86/events/amd/core.o
AR arch/x86/platform/atom/built-in.a
CC arch/x86/mm/pat/set_memory.o
AR drivers/cache/built-in.a
CC net/core/sock.o
CC lib/math/div64.o
CC arch/x86/kernel/fpu/init.o
CC arch/x86/virt/svm/cmdline.o
AR virt/built-in.a
CC fs/notify/dnotify/dnotify.o
CC arch/x86/events/intel/core.o
CC sound/core/seq/seq.o
CC arch/x86/events/intel/bts.o
AR arch/x86/platform/ce4100/built-in.a
AR drivers/irqchip/built-in.a
AS arch/x86/lib/checksum_32.o
CC arch/x86/entry/vdso/vma.o
CC arch/x86/platform/efi/memmap.o
CC kernel/sched/core.o
AR drivers/bus/mhi/built-in.a
AR drivers/bus/built-in.a
CC arch/x86/lib/cmdline.o
AR drivers/pwm/built-in.a
CC crypto/asymmetric_keys/asymmetric_type.o
AR drivers/leds/trigger/built-in.a
AR drivers/leds/blink/built-in.a
AR arch/x86/virt/svm/built-in.a
AR drivers/leds/simple/built-in.a
CC drivers/leds/led-core.o
AR arch/x86/virt/vmx/built-in.a
AR arch/x86/virt/built-in.a
CC lib/math/gcd.o
AS arch/x86/lib/cmpxchg8b_emu.o
CC drivers/pci/msi/pcidev_msi.o
GEN security/selinux/flask.h security/selinux/av_permissions.h
CC security/selinux/avc.o
CC arch/x86/lib/cpu.o
CC lib/math/lcm.o
CC lib/math/int_log.o
CC drivers/pci/msi/api.o
GEN usr/initramfs_data.cpio
COPY usr/initramfs_inc_data
AS usr/initramfs_data.o
HOSTCC certs/extract-cert
CC lib/math/int_pow.o
AR usr/built-in.a
CC arch/x86/kernel/fpu/bugs.o
CC lib/math/int_sqrt.o
CC drivers/video/console/dummycon.o
CC lib/math/reciprocal_div.o
CC arch/x86/kernel/fpu/core.o
CC lib/math/rational.o
CC sound/core/seq/seq_lock.o
CC arch/x86/lib/delay.o
AS arch/x86/realmode/rm/header.o
AS arch/x86/realmode/rm/trampoline_32.o
AR arch/x86/video/built-in.a
CC drivers/pci/msi/msi.o
AS arch/x86/realmode/rm/stack.o
CERT certs/x509_certificate_list
AR drivers/idle/built-in.a
CERT certs/signing_key.x509
AS arch/x86/realmode/rm/reboot.o
CC arch/x86/platform/efi/quirks.o
AS certs/system_certificates.o
AS arch/x86/realmode/rm/wakeup_asm.o
AR certs/built-in.a
CC arch/x86/platform/efi/efi.o
AR arch/x86/platform/geode/built-in.a
CC fs/nfs_common/grace.o
CC arch/x86/events/zhaoxin/core.o
CC arch/x86/realmode/rm/wakemain.o
CC block/partitions/msdos.o
CC fs/iomap/trace.o
CC drivers/leds/led-class.o
AR security/integrity/built-in.a
CC arch/x86/pci/init.o
CC drivers/leds/led-triggers.o
CC arch/x86/events/amd/lbr.o
CC arch/x86/events/intel/ds.o
CC fs/quota/dquot.o
CC crypto/asymmetric_keys/restrict.o
CC security/keys/key.o
AR fs/notify/dnotify/built-in.a
CC arch/x86/realmode/rm/video-mode.o
CC arch/x86/events/intel/knc.o
CC fs/notify/inotify/inotify_fsnotify.o
CC arch/x86/entry/vdso/extable.o
CC net/ethernet/eth.o
AR net/802/built-in.a
CC arch/x86/platform/efi/efi_32.o
CC arch/x86/power/hibernate_32.o
AS arch/x86/lib/getuser.o
AS arch/x86/realmode/rm/copy.o
AS arch/x86/platform/efi/efi_stub_32.o
AS arch/x86/realmode/rm/bioscall.o
GEN arch/x86/lib/inat-tables.c
CC fs/proc/task_mmu.o
AR lib/math/built-in.a
CC arch/x86/lib/insn-eval.o
CC arch/x86/realmode/rm/regs.o
CC sound/core/seq/seq_clientmgr.o
CC lib/crypto/mpi/generic_mpih-lshift.o
CC fs/kernfs/mount.o
CC arch/x86/realmode/rm/video-vga.o
CC drivers/video/console/vgacon.o
CC fs/sysfs/file.o
CC fs/sysfs/dir.o
CC fs/iomap/iter.o
CC security/keys/keyring.o
CC arch/x86/realmode/rm/video-vesa.o
CC arch/x86/platform/efi/runtime-map.o
CC fs/devpts/inode.o
CC arch/x86/realmode/rm/video-bios.o
CC arch/x86/mm/init.o
CC fs/iomap/buffered-io.o
CC crypto/asymmetric_keys/signature.o
CC arch/x86/events/intel/lbr.o
PASYMS arch/x86/realmode/rm/pasyms.h
CC fs/netfs/buffered_read.o
CC fs/ext4/balloc.o
LDS arch/x86/realmode/rm/realmode.lds
LD arch/x86/realmode/rm/realmode.elf
RELOCS arch/x86/realmode/rm/realmode.relocs
OBJCOPY arch/x86/realmode/rm/realmode.bin
AS arch/x86/realmode/rmpiggy.o
CC fs/notify/inotify/inotify_user.o
AR arch/x86/realmode/built-in.a
CC arch/x86/mm/pat/memtype.o
AR drivers/char/ipmi/built-in.a
CC arch/x86/pci/pcbios.o
AR fs/notify/fanotify/built-in.a
CC fs/netfs/buffered_write.o
CC fs/nfs_common/common.o
CC init/version.o
AR drivers/leds/built-in.a
CC fs/quota/quota_v2.o
CC lib/crypto/mpi/generic_mpih-mul1.o
AS arch/x86/power/hibernate_asm_32.o
CC block/partitions/efi.o
AR sound/i2c/other/built-in.a
CC kernel/locking/mutex.o
LDS arch/x86/entry/vdso/vdso32/vdso32.lds
AR sound/i2c/built-in.a
CC arch/x86/power/hibernate.o
AS arch/x86/entry/vdso/vdso32/note.o
CC fs/ext4/bitmap.o
AR sound/drivers/opl3/built-in.a
AR arch/x86/events/zhaoxin/built-in.a
AR sound/drivers/opl4/built-in.a
AS arch/x86/entry/vdso/vdso32/system_call.o
CC drivers/pci/msi/irqdomain.o
CC ipc/shm.o
CC arch/x86/events/amd/ibs.o
AR sound/drivers/mpu401/built-in.a
CC drivers/video/backlight/backlight.o
AR sound/drivers/vx/built-in.a
AS arch/x86/entry/vdso/vdso32/sigreturn.o
AR sound/drivers/pcsp/built-in.a
AR sound/drivers/built-in.a
AR init/built-in.a
CC arch/x86/entry/vdso/vdso32/vclock_gettime.o
CC arch/x86/lib/insn.o
CC crypto/api.o
CC arch/x86/lib/kaslr.o
CC arch/x86/kernel/fpu/regset.o
CC arch/x86/lib/memcpy_32.o
CC crypto/asymmetric_keys/public_key.o
CC sound/core/seq/seq_memory.o
CC fs/kernfs/inode.o
CC arch/x86/mm/init_32.o
CC fs/sysfs/symlink.o
CC drivers/pci/pcie/portdrv.o
CC kernel/sched/fair.o
CC security/selinux/hooks.o
CC lib/crypto/memneq.o
AR fs/devpts/built-in.a
CC fs/proc/inode.o
AR arch/x86/platform/efi/built-in.a
CC drivers/acpi/acpica/dsargs.o
AR arch/x86/platform/iris/built-in.a
CC arch/x86/platform/intel/iosf_mbi.o
AS arch/x86/lib/memmove_32.o
CC arch/x86/lib/misc.o
AR drivers/video/console/built-in.a
CC arch/x86/lib/pc-conf-reg.o
CC security/selinux/selinuxfs.o
CC arch/x86/pci/mmconfig_32.o
CC lib/crypto/mpi/generic_mpih-mul2.o
AR fs/nfs_common/built-in.a
AR drivers/pci/pwrctrl/built-in.a
CC fs/quota/quota_tree.o
CC arch/x86/mm/pat/memtype_interval.o
AR net/ethernet/built-in.a
CC fs/kernfs/dir.o
CC crypto/cipher.o
AS arch/x86/lib/putuser.o
CC arch/x86/events/intel/p4.o
AS arch/x86/lib/retpoline.o
AR arch/x86/power/built-in.a
CC net/core/request_sock.o
CC arch/x86/lib/string_32.o
AR sound/isa/ad1816a/built-in.a
CC arch/x86/events/core.o
AR sound/isa/ad1848/built-in.a
CC security/keys/keyctl.o
AR sound/isa/cs423x/built-in.a
CC drivers/acpi/acpica/dscontrol.o
CC fs/kernfs/file.o
AR sound/isa/es1688/built-in.a
AR fs/notify/inotify/built-in.a
CC fs/notify/fsnotify.o
CC arch/x86/lib/strstr_32.o
AR sound/isa/galaxy/built-in.a
CC arch/x86/entry/vdso/vdso32/vgetcpu.o
CC kernel/locking/semaphore.o
AR sound/isa/gus/built-in.a
AR sound/isa/msnd/built-in.a
CC arch/x86/lib/usercopy.o
AR sound/isa/opti9xx/built-in.a
AR sound/isa/sb/built-in.a
ASN.1 crypto/asymmetric_keys/x509.asn1.[ch]
AR drivers/pci/msi/built-in.a
ASN.1 crypto/asymmetric_keys/x509_akid.asn1.[ch]
AR sound/isa/wavefront/built-in.a
CC crypto/asymmetric_keys/x509_loader.o
CC crypto/asymmetric_keys/x509_public_key.o
HOSTCC arch/x86/entry/vdso/vdso2c
AR sound/isa/wss/built-in.a
AR sound/isa/built-in.a
AR block/partitions/built-in.a
CC block/bio.o
ASN.1 crypto/asymmetric_keys/pkcs7.asn1.[ch]
CC fs/iomap/direct-io.o
CC arch/x86/kernel/fpu/signal.o
AR drivers/video/backlight/built-in.a
AR drivers/video/fbdev/core/built-in.a
CC fs/sysfs/mount.o
CC arch/x86/entry/vdso/vdso32-setup.o
AR drivers/video/fbdev/omap/built-in.a
AR drivers/video/fbdev/omap2/omapfb/dss/built-in.a
CC fs/netfs/direct_read.o
AR drivers/video/fbdev/omap2/omapfb/displays/built-in.a
CC fs/proc/root.o
AR drivers/video/fbdev/omap2/omapfb/built-in.a
CC drivers/pnp/pnpacpi/core.o
AR drivers/video/fbdev/omap2/built-in.a
CC lib/zlib_inflate/inffast.o
AR drivers/video/fbdev/built-in.a
CC drivers/video/aperture.o
CC sound/core/seq/seq_queue.o
CC drivers/pci/pcie/rcec.o
CC lib/zlib_deflate/deflate.o
CC arch/x86/lib/usercopy_32.o
CC lib/crypto/mpi/generic_mpih-mul3.o
CC lib/lzo/lzo1x_compress.o
CC drivers/acpi/acpica/dsdebug.o
CC arch/x86/pci/direct.o
CC lib/lz4/lz4_decompress.o
AR arch/x86/platform/intel/built-in.a
CC lib/zlib_deflate/deftree.o
CC lib/zlib_inflate/inflate.o
CC lib/zstd/zstd_decompress_module.o
CC lib/zlib_deflate/deflate_syms.o
AR arch/x86/platform/intel-mid/built-in.a
AR arch/x86/mm/pat/built-in.a
AR arch/x86/platform/intel-quark/built-in.a
CC arch/x86/mm/fault.o
AR arch/x86/platform/olpc/built-in.a
AR arch/x86/platform/scx200/built-in.a
CC ipc/syscall.o
CC arch/x86/events/amd/uncore.o
AR arch/x86/platform/ts5500/built-in.a
AR arch/x86/platform/uv/built-in.a
CC security/keys/permission.o
AR arch/x86/platform/built-in.a
VDSO arch/x86/entry/vdso/vdso32.so.dbg
CC arch/x86/mm/ioremap.o
CC mm/oom_kill.o
OBJCOPY arch/x86/entry/vdso/vdso32.so
VDSO2C arch/x86/entry/vdso/vdso-image-32.c
CC arch/x86/entry/vdso/vdso-image-32.o
CC arch/x86/lib/msr-smp.o
CC fs/ext4/block_validity.o
CC crypto/asymmetric_keys/pkcs7_trust.o
CC fs/notify/notification.o
CC drivers/acpi/acpica/dsfield.o
CC kernel/locking/rwsem.o
CC fs/quota/quota.o
CC fs/netfs/direct_write.o
CC drivers/video/cmdline.o
CC lib/zstd/decompress/huf_decompress.o
AR arch/x86/entry/vdso/built-in.a
CC lib/lzo/lzo1x_decompress_safe.o
AS arch/x86/entry/entry.o
CC drivers/pnp/pnpacpi/rsparser.o
AR arch/x86/entry/vsyscall/built-in.a
CC kernel/power/qos.o
CC lib/xz/xz_dec_syms.o
CC net/core/skbuff.o
CC security/security.o
AS arch/x86/entry/entry_32.o
CC lib/crypto/mpi/generic_mpih-rshift.o
CC arch/x86/lib/cache-smp.o
CC arch/x86/entry/syscall_32.o
CC fs/sysfs/group.o
CC drivers/pci/pcie/bwctrl.o
CC security/selinux/netlink.o
CC fs/proc/base.o
CC arch/x86/kernel/fpu/xstate.o
CC crypto/asymmetric_keys/pkcs7_verify.o
CC fs/proc/generic.o
CC mm/fadvise.o
CC lib/zlib_inflate/infutil.o
CC arch/x86/pci/mmconfig-shared.o
CC sound/core/seq/seq_fifo.o
CC arch/x86/lib/crc32-glue.o
CC fs/kernfs/symlink.o
AR drivers/acpi/pmic/built-in.a
AR lib/zlib_deflate/built-in.a
CC drivers/pci/hotplug/pci_hotplug_core.o
CC arch/x86/events/intel/p6.o
CC arch/x86/mm/extable.o
CC drivers/acpi/acpica/dsinit.o
AR drivers/pci/controller/dwc/built-in.a
AR drivers/pci/controller/mobiveil/built-in.a
CC security/keys/process_keys.o
AR drivers/pci/controller/plda/built-in.a
CC fs/iomap/fiemap.o
AR drivers/pci/controller/built-in.a
CC crypto/asymmetric_keys/x509.asn1.o
CC ipc/ipc_sysctl.o
CC lib/xz/xz_dec_stream.o
CC arch/x86/mm/mmap.o
CC fs/notify/group.o
AR lib/lzo/built-in.a
CC fs/netfs/iterator.o
CC arch/x86/entry/common.o
CC lib/zlib_inflate/inftrees.o
CC lib/crypto/mpi/generic_mpih-sub1.o
CC lib/crypto/mpi/generic_mpih-add1.o
CC crypto/asymmetric_keys/x509_akid.asn1.o
AS arch/x86/lib/crc32-pclmul.o
CC fs/ext4/dir.o
CC arch/x86/lib/msr.o
CC crypto/asymmetric_keys/x509_cert_parser.o
CC kernel/locking/percpu-rwsem.o
CC drivers/acpi/acpica/dsmethod.o
CC io_uring/rsrc.o
CC drivers/video/nomodeset.o
CC lib/zlib_inflate/inflate_syms.o
AR fs/sysfs/built-in.a
CC kernel/power/main.o
CC lib/zstd/decompress/zstd_ddict.o
CC drivers/pci/pcie/aspm.o
AR arch/x86/events/amd/built-in.a
AR lib/lz4/built-in.a
CC security/keys/request_key.o
AR sound/pci/ac97/built-in.a
CC block/elevator.o
CC sound/core/seq/seq_prioq.o
AR sound/pci/ali5451/built-in.a
CC ipc/mqueue.o
AR sound/pci/asihpi/built-in.a
AR sound/pci/au88x0/built-in.a
CC lib/xz/xz_dec_lzma2.o
AR sound/pci/aw2/built-in.a
CC block/blk-core.o
AR sound/pci/ctxfi/built-in.a
AR sound/pci/ca0106/built-in.a
CC security/keys/request_key_auth.o
AR drivers/pci/switch/built-in.a
AR sound/pci/cs46xx/built-in.a
CC arch/x86/events/probe.o
AR sound/pci/cs5535audio/built-in.a
AR fs/kernfs/built-in.a
AR drivers/pnp/pnpacpi/built-in.a
CC drivers/pnp/core.o
AR sound/pci/lola/built-in.a
CC kernel/locking/spinlock.o
AR sound/pci/lx6464es/built-in.a
CC kernel/locking/osq_lock.o
AR sound/pci/echoaudio/built-in.a
CC drivers/pci/pcie/pme.o
AR sound/pci/emu10k1/built-in.a
CC crypto/compress.o
CC sound/pci/hda/hda_bind.o
CC fs/iomap/seek.o
CC arch/x86/events/intel/pt.o
CC fs/quota/kqid.o
CC drivers/video/hdmi.o
AR lib/zlib_inflate/built-in.a
CC security/lsm_audit.o
CC arch/x86/events/intel/uncore.o
CC arch/x86/mm/pgtable.o
CC sound/pci/hda/hda_codec.o
CC drivers/pci/hotplug/acpi_pcihp.o
CC drivers/acpi/acpica/dsmthdat.o
CC ipc/namespace.o
CC lib/crypto/mpi/mpicoder.o
CC fs/jbd2/transaction.o
CC fs/notify/mark.o
CC fs/ramfs/inode.o
CC crypto/asymmetric_keys/pkcs7.asn1.o
CC lib/zstd/decompress/zstd_decompress.o
CC crypto/asymmetric_keys/pkcs7_parser.o
CC arch/x86/pci/fixup.o
CC kernel/sched/build_policy.o
CC lib/crypto/utils.o
CC mm/maccess.o
AS arch/x86/entry/thunk.o
AR arch/x86/kernel/fpu/built-in.a
AR arch/x86/entry/built-in.a
CC arch/x86/kernel/cpu/mce/core.o
CC mm/page-writeback.o
CC kernel/locking/qspinlock.o
CC fs/netfs/locking.o
CC sound/core/seq/seq_timer.o
AS arch/x86/lib/msr-reg.o
CC arch/x86/kernel/cpu/mtrr/mtrr.o
CC arch/x86/lib/msr-reg-export.o
CC drivers/acpi/acpica/dsobject.o
CC fs/quota/netlink.o
CC crypto/algapi.o
CC security/keys/user_defined.o
CC ipc/mq_sysctl.o
CC fs/ext4/ext4_jbd2.o
CC drivers/pnp/card.o
CC lib/xz/xz_dec_bcj.o
CC security/keys/proc.o
CC fs/iomap/swapfile.o
CC arch/x86/events/utils.o
AS arch/x86/lib/hweight.o
CC fs/netfs/main.o
CC arch/x86/lib/iomem.o
CC net/sched/sch_generic.o
AR crypto/asymmetric_keys/built-in.a
CC sound/core/seq/seq_system.o
CC net/core/datagram.o
CC kernel/power/console.o
CC kernel/locking/rtmutex_api.o
AR drivers/pci/hotplug/built-in.a
AR drivers/amba/built-in.a
CC drivers/acpi/acpica/dsopcode.o
AR drivers/video/built-in.a
CC arch/x86/mm/physaddr.o
CC lib/crypto/mpi/mpi-add.o
CC arch/x86/kernel/acpi/boot.o
CC arch/x86/kernel/cpu/microcode/core.o
CC fs/ext4/extents.o
CC fs/ramfs/file-mmu.o
CC io_uring/notif.o
CC kernel/sched/build_utility.o
CC arch/x86/kernel/cpu/cacheinfo.o
CC fs/proc/array.o
AR drivers/pci/pcie/built-in.a
CC drivers/pci/access.o
CC fs/notify/fdinfo.o
CC lib/zstd/decompress/zstd_decompress_block.o
CC arch/x86/lib/atomic64_32.o
AR lib/xz/built-in.a
CC sound/pci/hda/hda_jack.o
CC drivers/acpi/acpica/dspkginit.o
CC arch/x86/lib/inat.o
CC arch/x86/pci/acpi.o
CC fs/jbd2/commit.o
CC arch/x86/mm/tlb.o
CC drivers/pnp/driver.o
CC io_uring/tctx.o
CC security/keys/sysctl.o
CC block/blk-sysfs.o
CC arch/x86/kernel/acpi/sleep.o
CC arch/x86/kernel/cpu/mtrr/if.o
AR arch/x86/lib/built-in.a
AR arch/x86/lib/lib.a
CC lib/crypto/chacha.o
AR fs/quota/built-in.a
CC sound/core/seq/seq_ports.o
AR ipc/built-in.a
CC net/sched/sch_mq.o
CC security/selinux/nlmsgtab.o
AR fs/iomap/built-in.a
CC net/netlink/af_netlink.o
AS arch/x86/kernel/acpi/wakeup_32.o
CC block/blk-flush.o
CC net/core/stream.o
AR sound/ppc/built-in.a
CC arch/x86/mm/cpu_entry_area.o
CC arch/x86/kernel/cpu/mtrr/generic.o
CC lib/crypto/mpi/mpi-bit.o
CC kernel/power/process.o
CC drivers/acpi/acpica/dsutils.o
AR fs/ramfs/built-in.a
CC io_uring/filetable.o
CC arch/x86/kernel/cpu/microcode/intel.o
CC arch/x86/kernel/cpu/mtrr/cleanup.o
CC arch/x86/events/intel/uncore_nhmex.o
AR fs/notify/built-in.a
CC mm/folio-compat.o
CC crypto/scatterwalk.o
AR sound/pci/ice1712/built-in.a
AR net/bpf/built-in.a
CC sound/pci/hda/hda_auto_parser.o
CC kernel/locking/qrwlock.o
CC security/keys/keyctl_pkey.o
CC drivers/pnp/resource.o
CC lib/zstd/zstd_common_module.o
CC arch/x86/kernel/apic/apic.o
CC sound/core/sound.o
CC drivers/pci/bus.o
CC arch/x86/kernel/acpi/cstate.o
CC fs/hugetlbfs/inode.o
CC arch/x86/pci/legacy.o
CC drivers/acpi/acpica/dswexec.o
CC fs/netfs/misc.o
CC fs/proc/fd.o
CC arch/x86/kernel/cpu/microcode/amd.o
CC fs/fat/cache.o
CC arch/x86/kernel/cpu/mce/severity.o
CC fs/isofs/namei.o
CC fs/netfs/objects.o
CC net/core/scm.o
CC lib/crypto/mpi/mpi-cmp.o
CC kernel/printk/printk.o
CC sound/core/seq/seq_info.o
CC arch/x86/kernel/cpu/mce/genpool.o
AR kernel/locking/built-in.a
CC security/device_cgroup.o
CC fs/nfs/client.o
CC net/core/gen_stats.o
CC block/blk-settings.o
AR sound/arm/built-in.a
CC arch/x86/events/intel/uncore_snb.o
CC arch/x86/mm/maccess.o
CC crypto/proc.o
CC security/selinux/netif.o
CC fs/proc/proc_tty.o
CC drivers/acpi/acpica/dswload.o
CC sound/core/init.o
CC fs/fat/dir.o
CC io_uring/rw.o
CC fs/jbd2/recovery.o
CC fs/proc/cmdline.o
AR security/keys/built-in.a
CC mm/readahead.o
CC fs/ext4/extents_status.o
CC crypto/aead.o
CC kernel/power/suspend.o
AR arch/x86/kernel/acpi/built-in.a
CC arch/x86/kernel/cpu/mtrr/amd.o
AR sound/pci/korg1212/built-in.a
CC lib/zstd/common/debug.o
CC fs/fat/fatent.o
CC drivers/acpi/acpica/dswload2.o
CC arch/x86/mm/pgprot.o
CC arch/x86/pci/irq.o
CC net/sched/sch_frag.o
CC lib/crypto/mpi/mpi-sub-ui.o
CC drivers/pci/probe.o
CC sound/core/seq/seq_dummy.o
CC fs/isofs/inode.o
CC lib/dim/dim.o
CC kernel/power/hibernate.o
CC arch/x86/kernel/cpu/mce/intel.o
CC drivers/pnp/manager.o
CC drivers/pnp/support.o
CC kernel/printk/printk_safe.o
CC sound/pci/hda/hda_sysfs.o
CC fs/exportfs/expfs.o
AR drivers/clk/actions/built-in.a
AR arch/x86/kernel/cpu/microcode/built-in.a
AR drivers/clk/analogbits/built-in.a
CC drivers/pci/host-bridge.o
CC fs/isofs/dir.o
CC sound/core/memory.o
AR drivers/clk/bcm/built-in.a
AR drivers/clk/imgtec/built-in.a
CC fs/proc/consoles.o
AR drivers/clk/imx/built-in.a
AR drivers/clk/ingenic/built-in.a
CC drivers/acpi/acpica/dswscope.o
AR drivers/clk/mediatek/built-in.a
AR drivers/clk/microchip/built-in.a
AR drivers/clk/mstar/built-in.a
CC fs/netfs/read_collect.o
AR drivers/clk/mvebu/built-in.a
AR drivers/clk/ralink/built-in.a
AR drivers/clk/renesas/built-in.a
CC arch/x86/kernel/cpu/mtrr/cyrix.o
AR drivers/clk/socfpga/built-in.a
AR drivers/clk/sophgo/built-in.a
CC arch/x86/mm/pgtable_32.o
AR drivers/clk/sprd/built-in.a
AR drivers/clk/starfive/built-in.a
AR drivers/clk/sunxi-ng/built-in.a
CC block/blk-ioc.o
AR drivers/clk/ti/built-in.a
AR drivers/clk/versatile/built-in.a
AR drivers/clk/xilinx/built-in.a
AR drivers/clk/built-in.a
CC lib/dim/net_dim.o
CC fs/nfs/dir.o
CC arch/x86/events/intel/uncore_snbep.o
CC lib/zstd/common/entropy_common.o
CC drivers/pci/remove.o
CC lib/crypto/aes.o
CC lib/crypto/mpi/mpi-div.o
CC security/selinux/netnode.o
CC crypto/geniv.o
AR sound/core/seq/built-in.a
CC sound/core/control.o
CC fs/jbd2/checkpoint.o
CC lib/zstd/common/error_private.o
CC drivers/pci/pci.o
CC drivers/acpi/acpica/dswstate.o
CC drivers/acpi/acpica/evevent.o
CC mm/swap.o
CC arch/x86/kernel/cpu/mce/amd.o
CC drivers/pnp/interface.o
CC lib/zstd/common/fse_decompress.o
CC lib/crypto/arc4.o
CC fs/proc/cpuinfo.o
CC sound/pci/hda/hda_controller.o
CC fs/nfs/file.o
AR sound/pci/mixart/built-in.a
AR fs/exportfs/built-in.a
CC arch/x86/kernel/apic/apic_common.o
CC fs/jbd2/revoke.o
CC drivers/acpi/dptf/int340x_thermal.o
AR fs/hugetlbfs/built-in.a
LDS arch/x86/kernel/vmlinux.lds
CC arch/x86/kernel/kprobes/core.o
CC sound/pci/hda/hda_proc.o
CC lib/fonts/fonts.o
CC arch/x86/kernel/cpu/mtrr/centaur.o
CC arch/x86/mm/iomap_32.o
CC sound/core/misc.o
CC arch/x86/pci/common.o
CC net/netlink/genetlink.o
CC net/sched/sch_api.o
CC arch/x86/kernel/kprobes/opt.o
CC arch/x86/kernel/cpu/scattered.o
CC fs/fat/file.o
CC drivers/acpi/acpica/evgpe.o
CC io_uring/net.o
CC arch/x86/kernel/cpu/topology_common.o
CC drivers/pnp/quirks.o
CC kernel/irq/irqdesc.o
CC block/blk-map.o
CC net/core/gen_estimator.o
CC lib/crypto/mpi/mpi-mod.o
CC lib/zstd/common/zstd_common.o
CC kernel/rcu/update.o
CC arch/x86/kernel/apic/apic_noop.o
CC fs/isofs/util.o
CC lib/fonts/font_8x16.o
AR drivers/acpi/dptf/built-in.a
AR kernel/livepatch/built-in.a
CC net/netlink/policy.o
CC fs/proc/devices.o
CC kernel/power/snapshot.o
CC fs/jbd2/journal.o
AR lib/zstd/built-in.a
CC fs/fat/inode.o
CC lib/dim/rdma_dim.o
CC arch/x86/kernel/cpu/mtrr/legacy.o
CC arch/x86/mm/hugetlbpage.o
CC arch/x86/kernel/cpu/mce/threshold.o
CC crypto/lskcipher.o
CC fs/netfs/read_pgpriv2.o
CC kernel/printk/nbcon.o
CC drivers/acpi/acpica/evgpeblk.o
CC net/ethtool/ioctl.o
CC drivers/pnp/system.o
CC net/core/net_namespace.o
AR lib/fonts/built-in.a
CC arch/x86/kernel/apic/ipi.o
CC fs/isofs/rock.o
CC net/netfilter/core.o
CC lib/crypto/mpi/mpi-mul.o
CC arch/x86/kernel/cpu/topology_ext.o
CC net/ethtool/common.o
CC security/selinux/netport.o
AR lib/dim/built-in.a
CC arch/x86/events/intel/uncore_discovery.o
CC fs/netfs/read_retry.o
CC kernel/irq/handle.o
AR arch/x86/kernel/cpu/mtrr/built-in.a
CC kernel/dma/mapping.o
CC arch/x86/pci/early.o
CC kernel/entry/common.o
CC kernel/dma/direct.o
CC mm/truncate.o
AR arch/x86/kernel/kprobes/built-in.a
CC io_uring/poll.o
AR kernel/sched/built-in.a
CC kernel/rcu/sync.o
CC fs/ext4/file.o
CC fs/proc/interrupts.o
CC net/sched/sch_blackhole.o
CC drivers/acpi/acpica/evgpeinit.o
CC sound/core/device.o
CC fs/netfs/read_single.o
CC kernel/irq/manage.o
CC block/blk-merge.o
AR drivers/pnp/built-in.a
CC drivers/pci/pci-driver.o
CC drivers/pci/search.o
CC sound/pci/hda/hda_hwdep.o
CC arch/x86/mm/dump_pagetables.o
CC lib/argv_split.o
CC arch/x86/kernel/apic/vector.o
CC drivers/acpi/acpica/evgpeutil.o
CC lib/crypto/mpi/mpih-cmp.o
CC fs/fat/misc.o
CC security/selinux/status.o
CC net/core/secure_seq.o
CC kernel/printk/printk_ringbuffer.o
CC net/ethtool/netlink.o
CC io_uring/eventfd.o
CC fs/proc/loadavg.o
CC arch/x86/pci/bus_numa.o
CC sound/core/info.o
CC crypto/skcipher.o
CC fs/isofs/export.o
AR arch/x86/kernel/cpu/mce/built-in.a
CC arch/x86/kernel/cpu/topology_amd.o
CC net/ethtool/bitset.o
CC drivers/acpi/acpica/evglock.o
CC arch/x86/pci/amd_bus.o
CC fs/fat/nfs.o
CC fs/ext4/fsmap.o
CC net/netfilter/nf_log.o
AR sound/pci/nm256/built-in.a
AR net/netlink/built-in.a
CC lib/crypto/mpi/mpih-div.o
CC drivers/acpi/acpica/evhandler.o
CC drivers/dma/dw/core.o
CC arch/x86/events/intel/cstate.o
CC sound/pci/hda/hda_intel.o
CC arch/x86/kernel/cpu/common.o
CC kernel/entry/syscall_user_dispatch.o
CC drivers/dma/hsu/hsu.o
CC arch/x86/kernel/cpu/rdrand.o
CC fs/netfs/rolling_buffer.o
CC mm/vmscan.o
CC arch/x86/kernel/cpu/match.o
CC arch/x86/mm/highmem_32.o
CC fs/isofs/joliet.o
CC lib/crypto/mpi/mpih-mul.o
CC kernel/module/main.o
CC kernel/power/swap.o
CC fs/proc/meminfo.o
AR drivers/soc/apple/built-in.a
AR drivers/soc/aspeed/built-in.a
AR drivers/soc/bcm/built-in.a
CC lib/crypto/mpi/mpi-pow.o
AR drivers/soc/fsl/built-in.a
CC io_uring/uring_cmd.o
AR drivers/soc/fujitsu/built-in.a
CC security/selinux/ss/ebitmap.o
CC net/sched/cls_api.o
AR drivers/soc/hisilicon/built-in.a
AR sound/sh/built-in.a
AR drivers/soc/imx/built-in.a
CC lib/crypto/gf128mul.o
AR drivers/soc/ixp4xx/built-in.a
AR drivers/soc/loongson/built-in.a
CC kernel/irq/spurious.o
CC kernel/printk/sysctl.o
AR drivers/soc/mediatek/built-in.a
CC kernel/rcu/srcutree.o
AR drivers/soc/microchip/built-in.a
CC kernel/irq/resend.o
AR drivers/soc/nuvoton/built-in.a
CC drivers/acpi/acpica/evmisc.o
AR drivers/soc/pxa/built-in.a
AR drivers/soc/amlogic/built-in.a
AR drivers/soc/qcom/built-in.a
AR drivers/soc/renesas/built-in.a
AR drivers/soc/rockchip/built-in.a
AR drivers/soc/sunxi/built-in.a
AR drivers/soc/ti/built-in.a
AR drivers/soc/versatile/built-in.a
AR drivers/soc/xilinx/built-in.a
AR drivers/soc/built-in.a
CC drivers/acpi/x86/apple.o
CC block/blk-timeout.o
CC drivers/pci/rom.o
CC sound/core/isadma.o
CC kernel/irq/chip.o
AR sound/synth/emux/built-in.a
CC fs/nfs/getroot.o
AR sound/synth/built-in.a
CC fs/proc/stat.o
AR arch/x86/pci/built-in.a
CC fs/fat/namei_vfat.o
CC block/blk-lib.o
AR kernel/entry/built-in.a
CC drivers/acpi/acpica/evregion.o
AR kernel/printk/built-in.a
CC fs/isofs/compress.o
CC arch/x86/kernel/apic/init.o
CC fs/proc/uptime.o
AR sound/firewire/built-in.a
AR sound/usb/misc/built-in.a
CC net/netfilter/nf_queue.o
CC net/core/flow_dissector.o
AR sound/usb/usx2y/built-in.a
AR arch/x86/mm/built-in.a
AR sound/usb/caiaq/built-in.a
CC lib/crypto/mpi/mpiutil.o
AR sound/usb/6fire/built-in.a
CC drivers/acpi/x86/cmos_rtc.o
CC fs/nfs/inode.o
CC drivers/acpi/tables.o
CC crypto/seqiv.o
CC kernel/power/user.o
AR sound/usb/hiface/built-in.a
CC block/blk-mq.o
AR sound/usb/bcd2000/built-in.a
AR sound/usb/built-in.a
CC drivers/dma/dw/dw.o
AR arch/x86/events/intel/built-in.a
CC drivers/virtio/virtio.o
CC arch/x86/events/rapl.o
CC net/ipv4/netfilter/nf_defrag_ipv4.o
AR fs/jbd2/built-in.a
CC drivers/tty/vt/vt_ioctl.o
CC drivers/tty/hvc/hvc_console.o
AR drivers/dma/hsu/built-in.a
CC kernel/irq/dummychip.o
CC drivers/tty/serial/8250/8250_core.o
CC drivers/tty/serial/serial_core.o
CC drivers/tty/vt/vc_screen.o
CC sound/core/vmaster.o
CC fs/netfs/write_collect.o
CC crypto/echainiv.o
CC net/ipv4/route.o
CC drivers/pci/setup-res.o
CC arch/x86/kernel/apic/hw_nmi.o
AR drivers/dma/idxd/built-in.a
CC drivers/acpi/acpica/evrgnini.o
CC fs/nfs/super.o
CC kernel/dma/ops_helpers.o
CC drivers/virtio/virtio_ring.o
CC kernel/power/poweroff.o
CC fs/fat/namei_msdos.o
CC fs/proc/util.o
CC net/ethtool/strset.o
CC security/selinux/ss/hashtab.o
AR lib/crypto/mpi/built-in.a
CC lib/crypto/blake2s.o
AR sound/sparc/built-in.a
CC io_uring/openclose.o
CC lib/bug.o
CC drivers/acpi/osi.o
CC drivers/acpi/x86/lpss.o
CC kernel/rcu/tree.o
CC kernel/rcu/rcu_segcblist.o
CC drivers/dma/dw/idma32.o
AR fs/isofs/built-in.a
CC net/xfrm/xfrm_policy.o
CC fs/ext4/fsync.o
CC kernel/time/time.o
CC arch/x86/kernel/cpu/bugs.o
AR sound/pci/hda/built-in.a
CC kernel/futex/core.o
CC kernel/irq/devres.o
AR sound/pci/oxygen/built-in.a
CC drivers/acpi/acpica/evsci.o
CC sound/core/ctljack.o
AR sound/pci/pcxhr/built-in.a
AR sound/pci/riptide/built-in.a
AR kernel/power/built-in.a
CC drivers/tty/serial/8250/8250_platform.o
AR sound/pci/rme9652/built-in.a
AR sound/pci/trident/built-in.a
AR sound/pci/ymfpci/built-in.a
CC kernel/futex/syscalls.o
AR sound/pci/vx222/built-in.a
CC fs/netfs/write_issue.o
AR sound/pci/built-in.a
CC crypto/ahash.o
CC fs/proc/version.o
CC io_uring/sqpoll.o
CC arch/x86/kernel/apic/io_apic.o
AR drivers/tty/hvc/built-in.a
CC net/ipv4/netfilter/nf_reject_ipv4.o
CC security/selinux/ss/symtab.o
CC kernel/dma/remap.o
AR drivers/tty/ipwireless/built-in.a
CC lib/crypto/blake2s-generic.o
CC drivers/dma/dw/acpi.o
CC arch/x86/events/msr.o
CC drivers/acpi/osl.o
CC net/sched/act_api.o
CC drivers/pci/irq.o
CC drivers/acpi/acpica/evxface.o
CC net/ipv4/netfilter/ip_tables.o
CC drivers/tty/vt/selection.o
CC sound/core/jack.o
CC net/ethtool/linkinfo.o
CC kernel/time/timer.o
CC arch/x86/kernel/cpu/aperfmperf.o
CC security/selinux/ss/sidtab.o
CC net/netfilter/nf_sockopt.o
CC kernel/irq/kexec.o
CC crypto/shash.o
AR sound/spi/built-in.a
CC drivers/acpi/utils.o
CC kernel/futex/pi.o
AR fs/fat/built-in.a
CC drivers/pci/vpd.o
CC drivers/acpi/x86/s2idle.o
CC fs/proc/softirqs.o
CC lib/crypto/sha1.o
AR drivers/dma/amd/built-in.a
CC lib/buildid.o
CC drivers/tty/serial/8250/8250_pnp.o
CC drivers/tty/tty_io.o
AR kernel/dma/built-in.a
CC block/blk-mq-tag.o
CC kernel/module/strict_rwx.o
CC drivers/acpi/acpica/evxfevnt.o
CC kernel/irq/autoprobe.o
CC kernel/cgroup/cgroup.o
AR drivers/dma/dw/built-in.a
CC fs/ext4/hash.o
AR drivers/dma/mediatek/built-in.a
CC net/ipv4/inetpeer.o
CC block/blk-stat.o
AR drivers/dma/qcom/built-in.a
AR drivers/dma/stm32/built-in.a
AR drivers/dma/ti/built-in.a
AR drivers/dma/xilinx/built-in.a
CC drivers/dma/dmaengine.o
CC kernel/irq/irqdomain.o
AR arch/x86/events/built-in.a
CC fs/lockd/clntlock.o
CC sound/core/hwdep.o
CC fs/ext4/ialloc.o
AS arch/x86/kernel/head_32.o
CC lib/crypto/sha256.o
CC drivers/tty/vt/keyboard.o
CC drivers/tty/serial/serial_base_bus.o
CC drivers/tty/serial/8250/8250_rsa.o
CC fs/proc/namespaces.o
CC net/core/sysctl_net_core.o
CC drivers/acpi/acpica/evxfgpe.o
CC drivers/virtio/virtio_anchor.o
CC kernel/module/kmod.o
CC fs/netfs/write_retry.o
CC kernel/futex/requeue.o
CC net/ethtool/linkmodes.o
CC net/ipv4/protocol.o
CC net/netfilter/utils.o
CC drivers/pci/setup-bus.o
CC net/unix/af_unix.o
CC crypto/akcipher.o
CC crypto/sig.o
CC crypto/kpp.o
CC arch/x86/kernel/head32.o
CC mm/shrinker.o
CC drivers/acpi/x86/utils.o
CC arch/x86/kernel/cpu/cpuid-deps.o
AR sound/parisc/built-in.a
CC net/unix/garbage.o
CC drivers/acpi/x86/blacklist.o
CC net/sched/sch_fifo.o
CC io_uring/xattr.o
AR lib/crypto/built-in.a
CC security/selinux/ss/avtab.o
CC lib/clz_tab.o
CC drivers/acpi/acpica/evxfregn.o
CC lib/cmdline.o
CC fs/lockd/clntproc.o
CC fs/nls/nls_base.o
CC sound/core/timer.o
CC drivers/tty/n_tty.o
CC fs/nfs/io.o
CC drivers/tty/serial/8250/8250_port.o
CC fs/nls/nls_cp437.o
CC arch/x86/kernel/apic/msi.o
CC net/ipv4/netfilter/iptable_filter.o
CC lib/cpumask.o
CC drivers/virtio/virtio_pci_modern_dev.o
CC arch/x86/kernel/cpu/umwait.o
CC net/netfilter/nfnetlink.o
CC fs/proc/self.o
CC kernel/futex/waitwake.o
CC mm/shmem.o
CC kernel/module/tree_lookup.o
CC kernel/module/kallsyms.o
CC drivers/acpi/acpica/exconcat.o
CC fs/nls/nls_ascii.o
CC kernel/irq/proc.o
CC kernel/time/hrtimer.o
AR fs/netfs/built-in.a
CC drivers/dma/virt-dma.o
CC kernel/irq/migration.o
AR drivers/acpi/x86/built-in.a
CC net/ipv4/netfilter/iptable_mangle.o
CC kernel/irq/cpuhotplug.o
CC net/ipv4/netfilter/ipt_REJECT.o
CC io_uring/nop.o
CC kernel/trace/trace_clock.o
CC kernel/trace/ring_buffer.o
CC drivers/tty/serial/8250/8250_dma.o
CC net/ipv6/netfilter/ip6_tables.o
ASN.1 crypto/rsapubkey.asn1.[ch]
ASN.1 crypto/rsaprivkey.asn1.[ch]
CC crypto/rsa.o
CC net/ethtool/rss.o
CC net/ipv6/af_inet6.o
CC net/ipv6/anycast.o
CC drivers/tty/vt/vt.o
CC lib/ctype.o
CC net/ipv6/netfilter/ip6table_filter.o
CC lib/dec_and_lock.o
CC net/core/dev.o
CC fs/nls/nls_iso8859-1.o
CC drivers/acpi/acpica/exconfig.o
CC fs/proc/thread_self.o
MKCAP arch/x86/kernel/cpu/capflags.c
CC block/blk-mq-sysfs.o
CC net/sched/cls_cgroup.o
CC arch/x86/kernel/apic/probe_32.o
CC drivers/virtio/virtio_pci_legacy_dev.o
CC drivers/pci/vc.o
CC drivers/tty/serial/serial_ctrl.o
AR fs/unicode/built-in.a
CC drivers/tty/serial/serial_port.o
CC kernel/time/sleep_timeout.o
CC lib/decompress.o
CC fs/proc/proc_sysctl.o
CC lib/decompress_bunzip2.o
AR kernel/futex/built-in.a
CC drivers/tty/serial/8250/8250_dwlib.o
CC kernel/module/procfs.o
CC drivers/dma/acpi-dma.o
CC fs/nfs/direct.o
CC security/selinux/ss/policydb.o
CC fs/nls/nls_utf8.o
CC net/ipv4/ip_input.o
COPY drivers/tty/vt/defkeymap.c
CC fs/ext4/indirect.o
CC drivers/acpi/acpica/exconvrt.o
CC kernel/irq/pm.o
CC crypto/rsa_helper.o
CC io_uring/fs.o
CC kernel/irq/msi.o
AR arch/x86/kernel/apic/built-in.a
CC fs/ext4/inline.o
CC fs/proc/proc_net.o
CC net/unix/sysctl_net_unix.o
CC fs/nfs/pagelist.o
CC fs/lockd/clntxdr.o
CC net/netfilter/nfnetlink_log.o
CC net/ipv4/ip_fragment.o
CC net/ethtool/linkstate.o
CC net/ipv6/ip6_output.o
CC sound/core/hrtimer.o
AR fs/nls/built-in.a
CC kernel/cgroup/rstat.o
CC net/packet/af_packet.o
CC [M] net/ipv4/netfilter/iptable_nat.o
CC drivers/virtio/virtio_pci_modern.o
CC crypto/rsa-pkcs1pad.o
CC lib/decompress_inflate.o
CC block/blk-mq-cpumap.o
CC drivers/acpi/acpica/excreate.o
CC block/blk-mq-sched.o
CC drivers/pci/mmap.o
CC net/xfrm/xfrm_state.o
CC kernel/module/sysfs.o
CC fs/nfs/read.o
CC drivers/acpi/acpica/exdebug.o
AR kernel/rcu/built-in.a
CC drivers/tty/vt/consolemap.o
CC kernel/time/timekeeping.o
AR drivers/dma/built-in.a
CC arch/x86/kernel/cpu/powerflags.o
CC mm/util.o
CC net/sched/ematch.o
CC sound/core/pcm.o
CC drivers/virtio/virtio_pci_common.o
CC drivers/tty/serial/8250/8250_pcilib.o
CC fs/ext4/inode.o
CC fs/proc/kcore.o
CC drivers/acpi/reboot.o
CC lib/decompress_unlz4.o
CC io_uring/splice.o
CC net/xfrm/xfrm_hash.o
CC net/netfilter/nf_conntrack_core.o
CC drivers/acpi/acpica/exdump.o
CC block/ioctl.o
AR net/unix/built-in.a
CC drivers/acpi/nvs.o
CC crypto/rsassa-pkcs1.o
CC drivers/pci/devres.o
CC drivers/pci/proc.o
CC kernel/irq/affinity.o
CC net/ipv6/netfilter/ip6table_mangle.o
CC kernel/time/ntp.o
CC net/ethtool/debug.o
AR kernel/module/built-in.a
CC drivers/acpi/wakeup.o
CC drivers/acpi/acpica/exfield.o
AR net/dsa/built-in.a
CC fs/lockd/host.o
CC kernel/time/clocksource.o
CC io_uring/sync.o
CC drivers/pci/pci-sysfs.o
CC drivers/tty/serial/8250/8250_early.o
CC lib/decompress_unlzma.o
AR net/ipv4/netfilter/built-in.a
CC lib/decompress_unlzo.o
HOSTCC drivers/tty/vt/conmakehash
CC drivers/acpi/acpica/exfldio.o
AR sound/pcmcia/vx/built-in.a
AR sound/pcmcia/pdaudiocf/built-in.a
AR sound/pcmcia/built-in.a
CC net/ipv4/ip_forward.o
CC mm/mmzone.o
CC drivers/char/hw_random/core.o
CC drivers/char/agp/backend.o
CC drivers/char/mem.o
CC drivers/char/random.o
CC sound/core/pcm_native.o
CC drivers/tty/serial/earlycon.o
CC fs/proc/vmcore.o
CC arch/x86/kernel/cpu/topology.o
CC drivers/tty/tty_ioctl.o
CC drivers/tty/serial/8250/8250_exar.o
CC drivers/virtio/virtio_pci_legacy.o
CC kernel/irq/matrix.o
CC net/ethtool/wol.o
CC block/genhd.o
AR net/sched/built-in.a
CC lib/decompress_unxz.o
CC crypto/acompress.o
AR drivers/iommu/amd/built-in.a
AR drivers/iommu/intel/built-in.a
AR drivers/iommu/arm/arm-smmu/built-in.a
AR drivers/iommu/arm/arm-smmu-v3/built-in.a
AR drivers/iommu/arm/built-in.a
AR drivers/iommu/iommufd/built-in.a
AR drivers/gpu/host1x/built-in.a
AR drivers/iommu/riscv/built-in.a
CC drivers/iommu/iommu.o
CC drivers/acpi/sleep.o
CC drivers/tty/vt/defkeymap.o
CC drivers/char/misc.o
CC drivers/acpi/acpica/exmisc.o
CC fs/lockd/svc.o
AR drivers/gpu/drm/tests/built-in.a
AR drivers/gpu/drm/arm/built-in.a
AR drivers/gpu/drm/clients/built-in.a
CC fs/autofs/init.o
CC fs/9p/vfs_super.o
CC drivers/gpu/drm/display/drm_display_helper_mod.o
CC kernel/trace/trace.o
CONMK drivers/tty/vt/consolemap_deftbl.c
CC drivers/tty/vt/consolemap_deftbl.o
CC fs/9p/vfs_inode.o
CC mm/vmstat.o
CC kernel/cgroup/namespace.o
AR drivers/tty/vt/built-in.a
CC fs/autofs/inode.o
CC net/xfrm/xfrm_input.o
CC io_uring/msg_ring.o
CC arch/x86/kernel/ebda.o
AR sound/mips/built-in.a
CC net/netfilter/nf_conntrack_standalone.o
CC net/core/dev_addr_lists.o
CC kernel/time/jiffies.o
CC fs/nfs/symlink.o
CC security/selinux/ss/services.o
CC lib/decompress_unzstd.o
CC drivers/char/agp/generic.o
CC drivers/char/hw_random/intel-rng.o
CC lib/dump_stack.o
CC drivers/virtio/virtio_pci_admin_legacy_io.o
CC drivers/acpi/acpica/exmutex.o
CC drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
CC drivers/gpu/drm/ttm/ttm_tt.o
CC net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
CC fs/proc/kmsg.o
CC crypto/scompress.o
AR sound/soc/built-in.a
CC fs/9p/vfs_inode_dotl.o
CC crypto/algboss.o
CC net/sunrpc/auth_gss/auth_gss.o
CC kernel/time/timer_list.o
CC drivers/pci/slot.o
CC drivers/tty/serial/8250/8250_lpss.o
CC net/ethtool/features.o
CC kernel/time/timeconv.o
CC mm/backing-dev.o
CC drivers/iommu/iommu-traces.o
CC drivers/acpi/acpica/exnames.o
CC drivers/connector/cn_queue.o
CC drivers/base/power/sysfs.o
CC kernel/cgroup/cgroup-v1.o
CC net/ipv4/ip_options.o
CC net/xfrm/xfrm_output.o
AR kernel/irq/built-in.a
CC fs/autofs/root.o
CC drivers/base/firmware_loader/builtin/main.o
CC block/ioprio.o
CC drivers/char/hw_random/amd-rng.o
CC lib/earlycpio.o
CC drivers/tty/tty_ldisc.o
CC io_uring/advise.o
CC drivers/virtio/virtio_input.o
CC fs/ext4/ioctl.o
CC fs/proc/page.o
CC net/ipv6/netfilter/nf_conntrack_reasm.o
CC lib/extable.o
CC fs/autofs/symlink.o
CC fs/lockd/svclock.o
CC drivers/acpi/acpica/exoparg1.o
AR drivers/base/firmware_loader/builtin/built-in.a
CC drivers/gpu/drm/display/drm_dp_helper.o
CC drivers/base/firmware_loader/main.o
AR net/wireless/tests/built-in.a
CC fs/nfs/unlink.o
CC net/wireless/core.o
CC drivers/char/agp/isoch.o
CC drivers/gpu/drm/ttm/ttm_bo.o
CC net/netfilter/nf_conntrack_expect.o
CC kernel/time/timecounter.o
CC drivers/pci/pci-acpi.o
AR net/packet/built-in.a
CC net/wireless/sysfs.o
CC net/sunrpc/clnt.o
CC drivers/tty/serial/8250/8250_mid.o
CC kernel/time/alarmtimer.o
CC kernel/time/posix-timers.o
CC drivers/base/power/generic_ops.o
AR drivers/gpu/vga/built-in.a
CC lib/flex_proportions.o
CC crypto/testmgr.o
CC drivers/tty/serial/8250/8250_pci.o
CC fs/9p/vfs_addr.o
CC drivers/gpu/drm/display/drm_dp_mst_topology.o
CC drivers/char/hw_random/geode-rng.o
CC drivers/acpi/acpica/exoparg2.o
CC net/ethtool/privflags.o
AR net/mac80211/tests/built-in.a
CC net/mac80211/main.o
CC drivers/char/agp/amd64-agp.o
CC drivers/iommu/iommu-sysfs.o
CC net/core/dst.o
CC mm/mm_init.o
CC block/badblocks.o
CC io_uring/epoll.o
CC drivers/connector/connector.o
CC mm/percpu.o
AR fs/proc/built-in.a
CC drivers/virtio/virtio_dma_buf.o
CC fs/autofs/waitq.o
CC drivers/base/power/common.o
CC net/core/netevent.o
CC net/core/neighbour.o
CC lib/idr.o
CC sound/core/pcm_lib.o
CC drivers/acpi/acpica/exoparg3.o
CC drivers/gpu/drm/i915/i915_config.o
CC net/core/rtnetlink.o
CC crypto/cmac.o
CC net/ipv4/ip_output.o
AR drivers/base/firmware_loader/built-in.a
CC net/mac80211/status.o
CC kernel/cgroup/freezer.o
CC drivers/char/hw_random/via-rng.o
CC fs/9p/vfs_file.o
CC net/xfrm/xfrm_sysctl.o
CC drivers/iommu/dma-iommu.o
CC drivers/base/power/qos.o
CC drivers/gpu/drm/i915/i915_driver.o
AR drivers/virtio/built-in.a
CC block/blk-rq-qos.o
CC drivers/gpu/drm/ttm/ttm_bo_util.o
CC lib/iomem_copy.o
CC drivers/pci/iomap.o
CC net/ipv6/netfilter/nf_reject_ipv6.o
CC drivers/acpi/acpica/exoparg6.o
CC arch/x86/kernel/cpu/proc.o
CC fs/lockd/svcshare.o
CC drivers/char/agp/intel-agp.o
CC block/disk-events.o
CC lib/irq_regs.o
CC fs/autofs/expire.o
CC crypto/hmac.o
CC net/sunrpc/auth_gss/gss_mech_switch.o
CC net/ethtool/rings.o
CC io_uring/statx.o
CC kernel/cgroup/legacy_freezer.o
CC net/netfilter/nf_conntrack_helper.o
CC net/ipv6/netfilter/ip6t_ipv6header.o
CC kernel/time/posix-cpu-timers.o
AR drivers/char/hw_random/built-in.a
CC net/sunrpc/auth_gss/svcauth_gss.o
CC lib/is_single_threaded.o
CC security/selinux/ss/conditional.o
CC drivers/connector/cn_proc.o
CC lib/klist.o
CC drivers/acpi/acpica/exprep.o
CC drivers/tty/serial/8250/8250_pericom.o
CC fs/ext4/mballoc.o
CC fs/nfs/write.o
AR fs/hostfs/built-in.a
CC fs/debugfs/inode.o
CC drivers/tty/tty_buffer.o
CC drivers/pci/quirks.o
CC fs/9p/vfs_dir.o
CC arch/x86/kernel/cpu/feat_ctl.o
AR sound/atmel/built-in.a
CC drivers/base/regmap/regmap.o
CC drivers/char/virtio_console.o
CC lib/kobject.o
CC fs/lockd/svcproc.o
AR drivers/gpu/drm/renesas/rcar-du/built-in.a
AR drivers/gpu/drm/renesas/rz-du/built-in.a
AR drivers/gpu/drm/renesas/built-in.a
CC fs/lockd/svcsubs.o
CC drivers/acpi/acpica/exregion.o
CC block/blk-ia-ranges.o
CC crypto/crypto_null.o
CC drivers/char/agp/intel-gtt.o
CC kernel/cgroup/pids.o
CC block/early-lookup.o
CC net/xfrm/xfrm_replay.o
CC io_uring/timeout.o
CC fs/autofs/dev-ioctl.o
CC drivers/gpu/drm/ttm/ttm_bo_vm.o
CC drivers/base/power/runtime.o
CC mm/slab_common.o
CC sound/core/pcm_misc.o
CC arch/x86/kernel/cpu/intel.o
AR drivers/tty/serial/8250/built-in.a
AR drivers/tty/serial/built-in.a
CC fs/lockd/mon.o
CC net/ethtool/channels.o
CC drivers/acpi/acpica/exresnte.o
CC drivers/iommu/iova.o
CC drivers/tty/tty_port.o
CC lib/kobject_uevent.o
CC drivers/base/power/wakeirq.o
CC kernel/time/posix-clock.o
CC net/ipv6/netfilter/ip6t_REJECT.o
AR drivers/connector/built-in.a
CC drivers/base/power/main.o
CC fs/9p/vfs_dentry.o
CC drivers/tty/tty_mutex.o
CC drivers/gpu/drm/i915/i915_drm_client.o
CC crypto/md5.o
CC net/netfilter/nf_conntrack_proto.o
CC kernel/cgroup/rdma.o
CC kernel/trace/trace_output.o
CC fs/debugfs/file.o
CC security/selinux/ss/mls.o
CC drivers/tty/tty_ldsem.o
CC kernel/bpf/core.o
CC drivers/acpi/acpica/exresolv.o
CC net/wireless/radiotap.o
CC block/bounce.o
CC fs/9p/v9fs.o
AR fs/autofs/built-in.a
CC sound/core/pcm_memory.o
CC sound/core/memalloc.o
CC arch/x86/kernel/cpu/tsx.o
CC drivers/gpu/drm/ttm/ttm_module.o
AR drivers/char/agp/built-in.a
CC net/ethtool/coalesce.o
CC fs/ext4/migrate.o
CC net/ipv4/ip_sockglue.o
CC net/wireless/util.o
CC sound/hda/hda_bus_type.o
CC sound/hda/hdac_bus.o
CC io_uring/fdinfo.o
CC drivers/acpi/acpica/exresop.o
CC crypto/sha256_generic.o
CC net/mac80211/driver-ops.o
CC drivers/char/hpet.o
CC fs/tracefs/inode.o
CC net/sunrpc/auth_gss/gss_rpc_upcall.o
CC net/ipv4/inet_hashtables.o
CC block/bsg.o
CC net/xfrm/xfrm_device.o
AR drivers/gpu/drm/omapdrm/built-in.a
CC block/blk-cgroup.o
CC block/blk-ioprio.o
CC drivers/tty/tty_baudrate.o
CC kernel/time/itimer.o
CC kernel/cgroup/cpuset.o
AR drivers/iommu/built-in.a
CC kernel/cgroup/misc.o
CC block/blk-iolatency.o
CC block/blk-iocost.o
CC arch/x86/kernel/cpu/intel_epb.o
CC fs/lockd/trace.o
CC drivers/gpu/drm/display/drm_dsc_helper.o
CC drivers/gpu/drm/ttm/ttm_execbuf_util.o
CC drivers/acpi/acpica/exserial.o
CC lib/logic_pio.o
CC fs/9p/fid.o
CC fs/lockd/xdr.o
CC drivers/gpu/drm/i915/i915_getparam.o
CC fs/lockd/clnt4xdr.o
CC crypto/sha512_generic.o
CC fs/lockd/xdr4.o
CC mm/compaction.o
AR fs/debugfs/built-in.a
CC net/sunrpc/auth_gss/gss_rpc_xdr.o
CC sound/hda/hdac_device.o
CC sound/core/pcm_timer.o
CC arch/x86/kernel/cpu/amd.o
AR net/ipv6/netfilter/built-in.a
CC net/ipv6/ip6_input.o
CC drivers/pci/pci-label.o
CC drivers/tty/tty_jobctrl.o
CC security/selinux/ss/context.o
CC security/selinux/netlabel.o
CC drivers/acpi/acpica/exstore.o
CC io_uring/cancel.o
CC fs/lockd/svc4proc.o
CC drivers/gpu/drm/i915/i915_ioctl.o
CC [M] fs/efivarfs/inode.o
CC fs/nfs/namespace.o
CC net/netfilter/nf_conntrack_proto_generic.o
CC fs/tracefs/event_inode.o
CC kernel/trace/trace_seq.o
CC drivers/char/nvram.o
CC drivers/gpu/drm/ttm/ttm_range_manager.o
CC drivers/base/power/wakeup.o
CC net/ethtool/pause.o
CC lib/maple_tree.o
CC kernel/time/clockevents.o
CC kernel/trace/trace_stat.o
CC net/xfrm/xfrm_nat_keepalive.o
CC drivers/acpi/acpica/exstoren.o
CC kernel/trace/trace_printk.o
CC drivers/gpu/drm/display/drm_hdcp_helper.o
CC drivers/base/regmap/regcache.o
CC fs/9p/xattr.o
CC sound/core/seq_device.o
CC crypto/sha3_generic.o
CC drivers/tty/n_null.o
CC drivers/pci/vgaarb.o
CC [M] fs/efivarfs/file.o
CC net/sunrpc/auth_gss/trace.o
CC drivers/gpu/drm/i915/i915_irq.o
CC net/core/utils.o
CC sound/hda/hdac_sysfs.o
CC drivers/acpi/acpica/exstorob.o
CC net/ipv4/inet_timewait_sock.o
AR sound/x86/built-in.a
CC drivers/block/loop.o
CC drivers/gpu/drm/ttm/ttm_resource.o
CC io_uring/waitid.o
CC net/netlabel/netlabel_user.o
CC net/rfkill/core.o
CC arch/x86/kernel/cpu/hygon.o
AR drivers/base/test/built-in.a
CC kernel/trace/pid_list.o
CC drivers/acpi/acpica/exsystem.o
AR drivers/gpu/drm/tilcdc/built-in.a
CC drivers/base/regmap/regcache-rbtree.o
CC drivers/block/virtio_blk.o
CC net/rfkill/input.o
CC kernel/time/tick-common.o
AR drivers/char/built-in.a
CC net/wireless/reg.o
CC net/netfilter/nf_conntrack_proto_tcp.o
AR sound/core/built-in.a
CC crypto/ecb.o
AR fs/tracefs/built-in.a
CC net/ethtool/eee.o
CC kernel/cgroup/debug.o
CC net/9p/mod.o
CC net/wireless/scan.o
CC drivers/tty/pty.o
AR fs/9p/built-in.a
CC net/mac80211/sta_info.o
CC io_uring/register.o
CC drivers/gpu/drm/display/drm_hdmi_helper.o
CC fs/lockd/procfs.o
CC sound/hda/hdac_regmap.o
CC drivers/acpi/acpica/extrace.o
CC fs/nfs/mount_clnt.o
AR security/selinux/built-in.a
CC net/netlabel/netlabel_kapi.o
AR security/built-in.a
CC [M] fs/efivarfs/super.o
CC net/netlabel/netlabel_domainhash.o
CC [M] fs/efivarfs/vars.o
CC arch/x86/kernel/cpu/centaur.o
CC net/dns_resolver/dns_key.o
CC sound/hda/hdac_controller.o
CC drivers/base/power/wakeup_stats.o
CC net/xfrm/xfrm_algo.o
AR kernel/bpf/built-in.a
CC net/9p/client.o
CC crypto/cbc.o
CC net/ipv6/addrconf.o
CC kernel/time/tick-broadcast.o
CC drivers/acpi/acpica/exutils.o
CC net/9p/error.o
CC drivers/gpu/drm/virtio/virtgpu_drv.o
CC drivers/base/regmap/regcache-flat.o
AR drivers/gpu/drm/imx/built-in.a
CC net/sunrpc/auth_gss/gss_krb5_mech.o
AR drivers/pci/built-in.a
CC drivers/gpu/drm/display/drm_scdc_helper.o
CC net/netlabel/netlabel_addrlist.o
CC kernel/trace/trace_sched_switch.o
CC drivers/gpu/drm/ttm/ttm_pool.o
CC arch/x86/kernel/cpu/transmeta.o
CC drivers/gpu/drm/i915/i915_mitigations.o
CC fs/ext4/mmp.o
AR net/rfkill/built-in.a
CC io_uring/truncate.o
CC fs/nfs/nfstrace.o
AR fs/lockd/built-in.a
CC net/core/link_watch.o
AR kernel/cgroup/built-in.a
CC net/9p/protocol.o
CC drivers/base/power/trace.o
AR drivers/gpu/drm/panel/built-in.a
CC net/ipv6/addrlabel.o
CC drivers/tty/tty_audit.o
CC block/mq-deadline.o
CC net/ipv4/inet_connection_sock.o
CC drivers/tty/sysrq.o
CC crypto/ctr.o
CC net/ipv6/route.o
CC drivers/acpi/acpica/hwacpi.o
CC drivers/acpi/acpica/hwesleep.o
CC net/ipv6/ip6_fib.o
CC net/dns_resolver/dns_query.o
CC mm/show_mem.o
CC net/ethtool/tsinfo.o
LD [M] fs/efivarfs/efivarfs.o
CC net/wireless/nl80211.o
CC drivers/misc/eeprom/eeprom_93cx6.o
CC drivers/base/regmap/regcache-maple.o
CC kernel/time/tick-broadcast-hrtimer.o
CC sound/hda/hdac_stream.o
CC net/ipv4/tcp.o
AR drivers/misc/cb710/built-in.a
CC arch/x86/kernel/platform-quirks.o
CC net/ipv6/ipv6_sockglue.o
AR drivers/block/built-in.a
CC fs/open.o
CC drivers/gpu/drm/virtio/virtgpu_kms.o
CC drivers/acpi/acpica/hwgpe.o
CC arch/x86/kernel/cpu/zhaoxin.o
CC crypto/gcm.o
CC net/netlabel/netlabel_mgmt.o
CC net/core/filter.o
AR drivers/gpu/drm/display/built-in.a
CC net/9p/trans_common.o
CC drivers/gpu/drm/ttm/ttm_device.o
AR drivers/misc/eeprom/built-in.a
AR drivers/misc/lis3lv02d/built-in.a
AR drivers/misc/cardreader/built-in.a
CC drivers/acpi/device_sysfs.o
AR drivers/misc/keba/built-in.a
AR drivers/misc/built-in.a
CC net/xfrm/xfrm_user.o
AR drivers/base/power/built-in.a
CC mm/interval_tree.o
CC net/core/sock_diag.o
CC kernel/events/core.o
CC kernel/time/tick-oneshot.o
CC fs/ext4/move_extent.o
CC drivers/base/regmap/regmap-debugfs.o
CC net/netfilter/nf_conntrack_proto_udp.o
CC drivers/gpu/drm/i915/i915_module.o
CC drivers/gpu/drm/virtio/virtgpu_gem.o
CC io_uring/memmap.o
CC net/sunrpc/auth_gss/gss_krb5_seal.o
CC net/ipv4/tcp_input.o
AR net/dns_resolver/built-in.a
CC arch/x86/kernel/cpu/vortex.o
CC block/kyber-iosched.o
CC drivers/acpi/acpica/hwregs.o
CC net/core/dev_ioctl.o
CC kernel/trace/trace_nop.o
CC lib/memcat_p.o
CC net/mac80211/wep.o
CC kernel/fork.o
AR drivers/tty/built-in.a
CC net/handshake/alert.o
AR drivers/gpu/drm/bridge/analogix/built-in.a
AR drivers/gpu/drm/bridge/cadence/built-in.a
AR drivers/gpu/drm/bridge/imx/built-in.a
AR drivers/gpu/drm/bridge/synopsys/built-in.a
AR drivers/gpu/drm/bridge/built-in.a
CC sound/hda/array.o
CC kernel/time/tick-sched.o
CC net/netlabel/netlabel_unlabeled.o
CC arch/x86/kernel/process_32.o
CC arch/x86/kernel/cpu/perfctr-watchdog.o
CC fs/nfs/export.o
CC fs/nfs/sysfs.o
CC net/ethtool/cabletest.o
CC net/9p/trans_fd.o
CC net/core/tso.o
CC crypto/ccm.o
CC kernel/events/ring_buffer.o
CC drivers/acpi/acpica/hwsleep.o
CC drivers/gpu/drm/ttm/ttm_sys_manager.o
CC net/wireless/mlme.o
AR drivers/base/regmap/built-in.a
CC drivers/base/component.o
CC io_uring/alloc_cache.o
CC mm/list_lru.o
CC drivers/gpu/drm/virtio/virtgpu_vram.o
CC kernel/trace/blktrace.o
CC drivers/acpi/acpica/hwvalid.o
CC fs/ext4/namei.o
CC sound/hda/hdmi_chmap.o
CC lib/nmi_backtrace.o
CC drivers/gpu/drm/ttm/ttm_backup.o
CC drivers/gpu/drm/i915/i915_params.o
CC net/sunrpc/auth_gss/gss_krb5_unseal.o
CC fs/read_write.o
CC arch/x86/kernel/cpu/vmware.o
CC sound/hda/trace.o
AR drivers/mfd/built-in.a
AR drivers/gpu/drm/hisilicon/built-in.a
CC drivers/acpi/acpica/hwxface.o
AR drivers/gpu/drm/mxsfb/built-in.a
CC block/blk-mq-debugfs.o
CC net/netfilter/nf_conntrack_proto_icmp.o
CC drivers/acpi/device_pm.o
CC kernel/events/callchain.o
CC fs/nfs/fs_context.o
CC kernel/time/timer_migration.o
CC io_uring/io-wq.o
CC crypto/aes_generic.o
CC net/ethtool/tunnels.o
CC kernel/exec_domain.o
CC net/handshake/genl.o
CC drivers/gpu/drm/virtio/virtgpu_display.o
CC drivers/base/core.o
CC net/handshake/netlink.o
CC arch/x86/kernel/signal.o
CC net/netlabel/netlabel_cipso_v4.o
CC mm/workingset.o
AR sound/xen/built-in.a
CC net/devres.o
CC drivers/acpi/acpica/hwxfsleep.o
CC kernel/time/vsyscall.o
CC kernel/panic.o
CC io_uring/futex.o
CC arch/x86/kernel/cpu/hypervisor.o
CC net/9p/trans_virtio.o
CC drivers/gpu/drm/i915/i915_pci.o
CC drivers/gpu/drm/ttm/ttm_agp_backend.o
AR drivers/nfc/built-in.a
CC net/ipv4/tcp_output.o
AR drivers/gpu/drm/tiny/built-in.a
CC arch/x86/kernel/cpu/mshyperv.o
AR drivers/dax/hmem/built-in.a
AR drivers/dax/built-in.a
CC net/mac80211/aead_api.o
CC drivers/base/bus.o
CC net/ethtool/fec.o
CC drivers/acpi/acpica/hwpci.o
CC net/sunrpc/auth_gss/gss_krb5_wrap.o
CC net/core/sock_reuseport.o
CC sound/hda/hdac_component.o
CC net/handshake/request.o
CC crypto/authenc.o
CC block/blk-pm.o
AR sound/virtio/built-in.a
CC net/netfilter/nf_conntrack_extend.o
CC arch/x86/kernel/signal_32.o
CC mm/debug.o
CC drivers/gpu/drm/virtio/virtgpu_vq.o
CC net/sunrpc/xprt.o
CC drivers/acpi/acpica/nsaccess.o
CC kernel/time/timekeeping_debug.o
CC drivers/acpi/proc.o
AR net/xfrm/built-in.a
CC fs/ext4/page-io.o
CC fs/file_table.o
AR drivers/gpu/drm/ttm/built-in.a
CC kernel/trace/trace_events.o
CC sound/sound_core.o
CC kernel/events/hw_breakpoint.o
CC net/wireless/ibss.o
CC drivers/acpi/bus.o
CC net/mac80211/wpa.o
CC fs/ext4/readpage.o
CC fs/nfs/nfsroot.o
CC arch/x86/kernel/cpu/debugfs.o
CC net/netfilter/nf_conntrack_acct.o
CC io_uring/napi.o
CC drivers/dma-buf/dma-buf.o
CC drivers/gpu/drm/i915/i915_scatterlist.o
CC sound/hda/hdac_i915.o
CC block/holder.o
CC net/netlabel/netlabel_calipso.o
CC drivers/gpu/drm/virtio/virtgpu_fence.o
AR drivers/cxl/core/built-in.a
CC drivers/acpi/acpica/nsalloc.o
AR drivers/cxl/built-in.a
CC drivers/gpu/drm/i915/i915_switcheroo.o
CC lib/objpool.o
CC net/core/fib_notifier.o
CC net/ipv4/tcp_timer.o
CC drivers/base/dd.o
CC net/ethtool/eeprom.o
AR net/9p/built-in.a
CC fs/ext4/resize.o
CC kernel/time/namespace.o
CC net/sunrpc/auth_gss/gss_krb5_crypto.o
CC sound/last.o
CC crypto/authencesn.o
CC kernel/events/uprobes.o
CC mm/gup.o
CC net/ethtool/stats.o
CC arch/x86/kernel/cpu/bus_lock.o
CC drivers/acpi/acpica/nsarguments.o
CC lib/plist.o
CC drivers/gpu/drm/i915/i915_sysfs.o
CC drivers/base/syscore.o
CC net/ipv6/ndisc.o
CC fs/super.o
CC drivers/macintosh/mac_hid.o
CC lib/radix-tree.o
CC kernel/cpu.o
CC net/handshake/tlshd.o
AR drivers/gpu/drm/xlnx/built-in.a
AR block/built-in.a
CC net/ethtool/phc_vclocks.o
CC drivers/base/driver.o
CC sound/hda/intel-dsp-config.o
AR drivers/nvme/common/built-in.a
AR drivers/scsi/pcmcia/built-in.a
CC drivers/ata/libata-core.o
CC drivers/scsi/scsi.o
AR drivers/nvme/host/built-in.a
AR drivers/nvme/target/built-in.a
AR drivers/nvme/built-in.a
CC drivers/scsi/hosts.o
CC mm/mmap_lock.o
CC net/ipv4/tcp_ipv4.o
CC drivers/gpu/drm/virtio/virtgpu_object.o
CC drivers/acpi/acpica/nsconvert.o
CC drivers/dma-buf/dma-fence.o
CC fs/nfs/sysctl.o
CC net/netfilter/nf_conntrack_seqadj.o
CC arch/x86/kernel/cpu/capflags.o
CC fs/char_dev.o
CC kernel/trace/trace_export.o
AR kernel/time/built-in.a
CC net/sunrpc/auth_gss/gss_krb5_keys.o
AR drivers/gpu/drm/gud/built-in.a
CC net/wireless/sme.o
AR net/netlabel/built-in.a
CC net/sunrpc/socklib.o
CC net/mac80211/scan.o
CC fs/nfs/nfs3super.o
AR drivers/macintosh/built-in.a
CC net/sunrpc/xprtsock.o
CC drivers/gpu/drm/virtio/virtgpu_debugfs.o
CC arch/x86/kernel/traps.o
CC drivers/acpi/acpica/nsdump.o
CC sound/hda/intel-nhlt.o
CC crypto/lzo.o
AR io_uring/built-in.a
CC crypto/lzo-rle.o
CC lib/ratelimit.o
AR arch/x86/kernel/cpu/built-in.a
CC net/ipv4/tcp_minisocks.o
CC drivers/gpu/drm/i915/i915_utils.o
CC drivers/base/class.o
CC drivers/base/platform.o
CC drivers/acpi/glue.o
CC lib/rbtree.o
CC net/ethtool/mm.o
CC drivers/ata/libata-scsi.o
CC net/core/xdp.o
CC drivers/acpi/acpica/nseval.o
CC net/handshake/trace.o
CC net/ipv6/udp.o
CC drivers/base/cpu.o
CC net/wireless/chan.o
CC drivers/dma-buf/dma-fence-array.o
CC fs/nfs/nfs3client.o
CC kernel/trace/trace_event_perf.o
CC net/mac80211/offchannel.o
AR drivers/net/phy/mediatek/built-in.a
CC sound/hda/intel-sdw-acpi.o
AR drivers/net/phy/qcom/built-in.a
CC drivers/net/phy/realtek/realtek_main.o
CC drivers/gpu/drm/virtio/virtgpu_plane.o
CC lib/seq_buf.o
CC net/ipv4/tcp_cong.o
AR drivers/net/pse-pd/built-in.a
CC crypto/rng.o
CC drivers/net/mdio/acpi_mdio.o
CC net/ethtool/module.o
CC kernel/exit.o
CC drivers/acpi/acpica/nsinit.o
CC net/core/flow_offload.o
CC fs/ext4/super.o
CC drivers/scsi/scsi_ioctl.o
CC drivers/dma-buf/dma-fence-chain.o
CC drivers/firewire/init_ohci1394_dma.o
CC drivers/cdrom/cdrom.o
AR drivers/auxdisplay/built-in.a
CC arch/x86/kernel/idt.o
CC arch/x86/kernel/irq.o
CC net/netfilter/nf_conntrack_proto_icmpv6.o
AR net/sunrpc/auth_gss/built-in.a
CC drivers/net/phy/realtek/realtek_hwmon.o
CC net/socket.o
CC net/ipv4/tcp_metrics.o
CC drivers/net/phy/mdio-boardinfo.o
CC drivers/gpu/drm/i915/intel_clock_gating.o
AR sound/hda/built-in.a
CC drivers/gpu/drm/virtio/virtgpu_ioctl.o
AR sound/built-in.a
CC mm/highmem.o
CC mm/memory.o
CC drivers/acpi/acpica/nsload.o
CC drivers/scsi/scsicam.o
CC lib/siphash.o
CC net/wireless/ethtool.o
CC drivers/base/firmware.o
CC kernel/trace/trace_events_filter.o
CC drivers/ata/libata-eh.o
CC net/ethtool/cmis_fw_update.o
CC drivers/dma-buf/dma-fence-unwrap.o
CC net/sysctl_net.o
AR drivers/firewire/built-in.a
CC fs/ext4/symlink.o
CC fs/nfs/nfs3proc.o
CC crypto/drbg.o
CC drivers/acpi/acpica/nsnames.o
CC drivers/net/mdio/fwnode_mdio.o
AR drivers/gpu/drm/solomon/built-in.a
CC net/mac80211/ht.o
CC net/ipv4/tcp_fastopen.o
CC net/core/gro.o
CC drivers/base/init.o
CC lib/string.o
CC net/wireless/mesh.o
CC drivers/gpu/drm/i915/intel_cpu_info.o
AR net/handshake/built-in.a
CC drivers/dma-buf/dma-resv.o
AR drivers/net/phy/realtek/built-in.a
CC net/ipv4/tcp_rate.o
CC fs/ext4/sysfs.o
CC arch/x86/kernel/irq_32.o
CC mm/mincore.o
CC drivers/net/phy/stubs.o
CC drivers/scsi/scsi_error.o
AR drivers/net/pcs/built-in.a
CC drivers/acpi/acpica/nsobject.o
CC drivers/gpu/drm/virtio/virtgpu_prime.o
CC net/ipv6/udplite.o
CC lib/timerqueue.o
CC drivers/pcmcia/cs.o
CC lib/union_find.o
CC fs/ext4/xattr.o
CC lib/vsprintf.o
CC drivers/gpu/drm/i915/intel_device_info.o
CC net/netfilter/nf_conntrack_netlink.o
AR drivers/net/ethernet/3com/built-in.a
CC drivers/base/map.o
CC drivers/net/ethernet/8390/ne2k-pci.o
AR drivers/net/ethernet/adaptec/built-in.a
CC drivers/dma-buf/sync_file.o
AR kernel/events/built-in.a
CC kernel/trace/trace_events_trigger.o
CC drivers/acpi/acpica/nsparse.o
CC crypto/jitterentropy.o
CC net/wireless/ap.o
AR drivers/net/wireless/admtek/built-in.a
AR drivers/net/wireless/ath/built-in.a
CC net/sunrpc/sched.o
AR drivers/net/wireless/atmel/built-in.a
AR drivers/net/mdio/built-in.a
CC net/ethtool/cmis_cdb.o
CC crypto/jitterentropy-kcapi.o
CC [M] drivers/gpu/drm/scheduler/sched_main.o
AR drivers/net/wireless/broadcom/built-in.a
AR drivers/net/wireless/intel/built-in.a
CC lib/win_minmax.o
AR drivers/net/wireless/intersil/built-in.a
AR drivers/net/wireless/marvell/built-in.a
CC drivers/base/devres.o
CC net/ipv4/tcp_recovery.o
AR drivers/net/wireless/mediatek/built-in.a
AR drivers/net/wireless/microchip/built-in.a
AR drivers/net/wireless/purelifi/built-in.a
AR drivers/net/wireless/quantenna/built-in.a
AR drivers/net/wireless/ralink/built-in.a
CC fs/nfs/nfs3xdr.o
AR drivers/net/wireless/realtek/built-in.a
AR drivers/net/wireless/rsi/built-in.a
AR drivers/net/wireless/silabs/built-in.a
CC arch/x86/kernel/dumpstack_32.o
AR drivers/net/wireless/st/built-in.a
CC fs/nfs/nfs3acl.o
CC kernel/trace/trace_eprobe.o
AR drivers/net/wireless/ti/built-in.a
AR drivers/net/wireless/zydas/built-in.a
CC crypto/ghash-generic.o
AR drivers/net/wireless/virtual/built-in.a
CC [M] drivers/gpu/drm/scheduler/sched_fence.o
AR drivers/net/wireless/built-in.a
AR drivers/cdrom/built-in.a
CC net/core/netdev-genl.o
CC drivers/net/phy/mdio_devres.o
CC [M] drivers/gpu/drm/scheduler/sched_entity.o
CC drivers/gpu/drm/i915/intel_memory_region.o
CC net/ipv4/tcp_ulp.o
CC drivers/acpi/acpica/nspredef.o
CC drivers/gpu/drm/virtio/virtgpu_trace_points.o
CC drivers/gpu/drm/virtio/virtgpu_submit.o
CC fs/nfs/nfs4proc.o
CC drivers/acpi/scan.o
CC drivers/net/ethernet/8390/8390.o
CC fs/ext4/xattr_hurd.o
CC drivers/pcmcia/socket_sysfs.o
CC arch/x86/kernel/time.o
AR drivers/dma-buf/built-in.a
CC drivers/scsi/scsi_lib.o
AR drivers/net/ethernet/agere/built-in.a
CC drivers/gpu/drm/i915/intel_pcode.o
CC drivers/pcmcia/cardbus.o
CC drivers/base/attribute_container.o
CC net/ipv6/raw.o
CC crypto/hash_info.o
CC drivers/acpi/acpica/nsprepkg.o
CC crypto/rsapubkey.asn1.o
CC net/sunrpc/auth.o
CC crypto/rsaprivkey.asn1.o
AR crypto/built-in.a
CC fs/ext4/xattr_trusted.o
CC drivers/net/phy/phy.o
CC drivers/gpu/drm/drm_atomic.o
CC drivers/gpu/drm/i915/intel_region_ttm.o
CC net/core/netdev-genl-gen.o
HOSTCC drivers/gpu/drm/xe/xe_gen_wa_oob
CC drivers/usb/common/common.o
CC drivers/usb/common/debug.o
CC arch/x86/kernel/ioport.o
CC drivers/usb/core/usb.o
CC drivers/gpu/drm/drm_atomic_uapi.o
CC net/ipv6/icmp.o
CC drivers/pcmcia/ds.o
GEN xe_wa_oob.c xe_wa_oob.h
CC [M] drivers/gpu/drm/xe/xe_bb.o
AR drivers/usb/phy/built-in.a
CC drivers/gpu/drm/drm_auth.o
CC net/core/gso.o
CC net/ethtool/pse-pd.o
CC drivers/base/transport_class.o
CC drivers/acpi/acpica/nsrepair.o
CC fs/ext4/xattr_user.o
CC net/core/net-sysfs.o
CC net/ipv4/tcp_offload.o
AR drivers/gpu/drm/virtio/built-in.a
CC drivers/scsi/constants.o
CC drivers/acpi/mipi-disco-img.o
AR drivers/net/ethernet/alacritech/built-in.a
CC net/mac80211/agg-tx.o
CC net/ipv6/mcast.o
CC net/sunrpc/auth_null.o
CC lib/xarray.o
CC arch/x86/kernel/dumpstack.o
LD [M] drivers/gpu/drm/scheduler/gpu-sched.o
CC drivers/acpi/resource.o
CC drivers/scsi/scsi_lib_dma.o
CC kernel/trace/trace_kprobe.o
CC net/wireless/trace.o
AR drivers/net/ethernet/8390/built-in.a
CC drivers/base/topology.o
AR drivers/net/ethernet/alteon/built-in.a
CC drivers/base/container.o
CC drivers/acpi/acpica/nsrepair2.o
AR drivers/net/ethernet/amazon/built-in.a
CC drivers/ata/libata-transport.o
AR drivers/net/ethernet/amd/built-in.a
AR drivers/net/ethernet/aquantia/built-in.a
AR drivers/net/ethernet/arc/built-in.a
AR drivers/usb/common/built-in.a
AR drivers/net/ethernet/asix/built-in.a
AR drivers/net/ethernet/atheros/built-in.a
CC drivers/base/property.o
AR drivers/net/ethernet/cadence/built-in.a
CC drivers/net/ethernet/broadcom/bnx2.o
CC drivers/base/cacheinfo.o
AR drivers/net/ethernet/brocade/built-in.a
CC fs/ext4/fast_commit.o
CC net/wireless/ocb.o
CC drivers/gpu/drm/i915/intel_runtime_pm.o
CC net/sunrpc/auth_tls.o
CC drivers/base/swnode.o
CC fs/stat.o
CC [M] drivers/gpu/drm/xe/xe_bo.o
CC drivers/usb/core/hub.o
CC net/ipv4/tcp_plb.o
AR drivers/net/usb/built-in.a
CC kernel/softirq.o
CC lib/lockref.o
AR drivers/net/ethernet/cavium/common/built-in.a
CC net/netfilter/nf_conntrack_ftp.o
CC mm/mlock.o
AR drivers/net/ethernet/cavium/thunder/built-in.a
AR drivers/net/ethernet/cavium/liquidio/built-in.a
AR drivers/net/ethernet/cavium/octeon/built-in.a
AR drivers/net/ethernet/cavium/built-in.a
CC drivers/acpi/acpica/nssearch.o
CC drivers/net/ethernet/broadcom/tg3.o
CC drivers/pcmcia/pcmcia_resource.o
CC drivers/pcmcia/cistpl.o
CC [M] drivers/gpu/drm/xe/xe_bo_evict.o
CC arch/x86/kernel/nmi.o
CC drivers/ata/libata-trace.o
CC net/ethtool/plca.o
CC net/wireless/pmsr.o
CC [M] drivers/gpu/drm/xe/xe_devcoredump.o
CC drivers/scsi/scsi_scan.o
CC drivers/ata/libata-sata.o
CC drivers/acpi/acpi_processor.o
CC drivers/usb/mon/mon_main.o
CC drivers/usb/mon/mon_stat.o
CC drivers/net/phy/phy-c45.o
CC drivers/pcmcia/pcmcia_cis.o
CC [M] drivers/gpu/drm/xe/xe_device.o
CC drivers/acpi/acpica/nsutils.o
CC drivers/acpi/acpica/nswalk.o
CC fs/ext4/orphan.o
GEN net/wireless/shipped-certs.c
CC drivers/acpi/processor_core.o
CC net/ethtool/phy.o
CC lib/bcd.o
CC lib/sort.o
CC net/mac80211/agg-rx.o
CC lib/parser.o
CC arch/x86/kernel/ldt.o
CC net/ipv4/datagram.o
CC drivers/ata/libata-sff.o
CC drivers/net/phy/phy-core.o
CC drivers/usb/host/pci-quirks.o
CC drivers/acpi/acpica/nsxfeval.o
CC drivers/gpu/drm/i915/intel_sbi.o
CC drivers/base/faux.o
CC drivers/usb/mon/mon_text.o
CC net/core/hotdata.o
CC drivers/base/auxiliary.o
CC drivers/base/devtmpfs.o
CC drivers/base/module.o
CC drivers/net/phy/phy_device.o
CC net/core/netdev_rx_queue.o
CC net/ipv6/reassembly.o
CC kernel/trace/error_report-traces.o
CC lib/debug_locks.o
AR drivers/net/ethernet/chelsio/built-in.a
CC mm/mmap.o
CC drivers/gpu/drm/drm_blend.o
CC net/mac80211/vht.o
CC fs/exec.o
CC net/core/net-procfs.o
CC kernel/trace/power-traces.o
CC lib/random32.o
GEN drivers/scsi/scsi_devinfo_tbl.c
CC drivers/acpi/acpica/nsxfname.o
CC arch/x86/kernel/setup.o
CC drivers/net/phy/linkmode.o
CC net/netfilter/nf_conntrack_irc.o
CC drivers/net/phy/phy_link_topology.o
CC drivers/scsi/scsi_devinfo.o
CC drivers/usb/mon/mon_bin.o
CC net/sunrpc/auth_unix.o
CC drivers/pcmcia/rsrc_mgr.o
CC net/ipv6/tcp_ipv6.o
CC fs/pipe.o
CC net/ethtool/tsconfig.o
CC net/wireless/shipped-certs.o
CC kernel/resource.o
CC net/ipv4/raw.o
CC net/sunrpc/svc.o
CC lib/bust_spinlocks.o
CC drivers/usb/host/ehci-hcd.o
CC drivers/ata/libata-pmp.o
CC drivers/acpi/acpica/nsxfobj.o
CC drivers/usb/class/usblp.o
CC drivers/gpu/drm/i915/intel_step.o
CC drivers/net/mii.o
CC drivers/scsi/scsi_sysctl.o
CC net/mac80211/he.o
CC net/ipv6/ping.o
CC drivers/base/auxiliary_sysfs.o
CC net/sunrpc/svcsock.o
CC [M] drivers/gpu/drm/xe/xe_device_sysfs.o
CC drivers/pcmcia/rsrc_nonstatic.o
CC [M] drivers/gpu/drm/xe/xe_dma_buf.o
CC drivers/pcmcia/yenta_socket.o
AR drivers/net/ethernet/cisco/built-in.a
CC net/netfilter/nf_conntrack_sip.o
CC drivers/acpi/acpica/psargs.o
CC kernel/sysctl.o
CC lib/kasprintf.o
CC mm/mmu_gather.o
CC drivers/base/devcoredump.o
CC arch/x86/kernel/x86_init.o
CC net/core/netpoll.o
CC drivers/usb/host/ehci-pci.o
CC drivers/usb/storage/scsiglue.o
AR drivers/usb/mon/built-in.a
CC fs/ext4/acl.o
CC drivers/scsi/scsi_proc.o
CC fs/ext4/xattr_security.o
CC drivers/usb/core/hcd.o
CC net/core/fib_rules.o
CC fs/namei.o
CC lib/bitmap.o
AR drivers/net/ethernet/cortina/built-in.a
CC net/ipv6/exthdrs.o
CC drivers/acpi/acpica/psloop.o
CC drivers/usb/host/ohci-hcd.o
AR net/ethtool/built-in.a
CC net/mac80211/s1g.o
CC fs/nfs/nfs4xdr.o
CC drivers/base/platform-msi.o
AR drivers/usb/class/built-in.a
CC kernel/trace/rpm-traces.o
CC drivers/gpu/drm/i915/intel_uncore.o
CC drivers/net/loopback.o
CC drivers/ata/libata-acpi.o
CC drivers/input/serio/serio.o
CC net/mac80211/ibss.o
CC arch/x86/kernel/i8259.o
CC drivers/net/phy/mdio_bus.o
AR drivers/usb/misc/built-in.a
CC mm/mprotect.o
CC [M] drivers/gpu/drm/xe/xe_drm_client.o
CC fs/nfs/nfs4state.o
CC drivers/ata/libata-pata-timings.o
CC drivers/gpu/drm/drm_bridge.o
CC drivers/acpi/acpica/psobject.o
CC net/sunrpc/svcauth.o
CC fs/nfs/nfs4renewd.o
CC drivers/base/physical_location.o
CC drivers/scsi/scsi_debugfs.o
CC kernel/trace/trace_dynevent.o
AR drivers/net/ethernet/dec/tulip/built-in.a
AR drivers/net/ethernet/dec/built-in.a
CC drivers/gpu/drm/i915/intel_uncore_trace.o
CC net/ipv4/udp.o
CC drivers/scsi/scsi_trace.o
CC drivers/usb/storage/protocol.o
CC drivers/input/keyboard/atkbd.o
AR drivers/pcmcia/built-in.a
CC lib/scatterlist.o
CC [M] drivers/gpu/drm/xe/xe_eu_stall.o
AR drivers/net/ethernet/dlink/built-in.a
CC drivers/usb/host/ohci-pci.o
CC arch/x86/kernel/irqinit.o
CC drivers/acpi/acpica/psopcode.o
CC drivers/input/serio/i8042.o
CC drivers/base/trace.o
CC drivers/acpi/processor_pdc.o
CC mm/mremap.o
CC drivers/net/phy/mdio_device.o
CC fs/fcntl.o
CC drivers/usb/core/urb.o
CC net/ipv6/datagram.o
CC drivers/acpi/acpica/psopinfo.o
CC drivers/ata/ahci.o
CC drivers/input/mouse/psmouse-base.o
AR drivers/input/joystick/built-in.a
CC mm/msync.o
AR drivers/input/tablet/built-in.a
CC net/sunrpc/svcauth_unix.o
CC net/ipv6/ip6_flowlabel.o
AR drivers/input/touchscreen/built-in.a
CC kernel/trace/trace_probe.o
CC drivers/scsi/scsi_logging.o
CC drivers/usb/storage/transport.o
AR drivers/input/misc/built-in.a
CC drivers/input/serio/serport.o
AR drivers/net/ethernet/emulex/built-in.a
CC kernel/capability.o
CC fs/ioctl.o
CC drivers/usb/core/message.o
CC net/netfilter/nf_nat_core.o
CC drivers/rtc/lib.o
CC kernel/ptrace.o
CC net/core/net-traces.o
CC net/mac80211/iface.o
CC drivers/i2c/algos/i2c-algo-bit.o
CC drivers/input/mouse/synaptics.o
CC drivers/input/mouse/focaltech.o
CC drivers/acpi/acpica/psparse.o
CC drivers/i2c/busses/i2c-i801.o
CC arch/x86/kernel/jump_label.o
AR drivers/input/keyboard/built-in.a
CC fs/readdir.o
AR fs/ext4/built-in.a
CC drivers/gpu/drm/drm_cache.o
AR drivers/base/built-in.a
AR drivers/net/ethernet/engleder/built-in.a
CC drivers/gpu/drm/drm_color_mgmt.o
CC net/netfilter/nf_nat_proto.o
CC drivers/net/netconsole.o
CC lib/list_sort.o
CC lib/uuid.o
AR drivers/net/ethernet/ezchip/built-in.a
AR drivers/net/ethernet/fujitsu/built-in.a
CC drivers/net/phy/swphy.o
CC net/ipv6/inet6_connection_sock.o
CC drivers/usb/host/uhci-hcd.o
CC drivers/acpi/acpica/psscope.o
CC drivers/acpi/acpica/pstree.o
CC fs/nfs/nfs4super.o
CC drivers/rtc/class.o
CC drivers/rtc/interface.o
CC lib/iov_iter.o
CC drivers/rtc/nvmem.o
CC [M] drivers/gpu/drm/xe/xe_exec.o
CC drivers/scsi/scsi_pm.o
CC mm/page_vma_mapped.o
CC drivers/input/input.o
CC lib/clz_ctz.o
CC lib/bsearch.o
CC fs/nfs/nfs4file.o
CC drivers/input/serio/libps2.o
CC [M] drivers/gpu/drm/xe/xe_exec_queue.o
CC net/netfilter/nf_nat_helper.o
CC arch/x86/kernel/irq_work.o
CC drivers/usb/storage/usb.o
CC drivers/net/virtio_net.o
CC drivers/acpi/acpica/psutils.o
CC drivers/rtc/dev.o
CC drivers/ata/libahci.o
CC drivers/gpu/drm/i915/intel_wakeref.o
CC drivers/usb/early/ehci-dbgp.o
AR drivers/i2c/algos/built-in.a
CC drivers/net/net_failover.o
CC arch/x86/kernel/probe_roms.o
CC drivers/usb/host/xhci.o
AR drivers/net/ethernet/fungible/built-in.a
CC drivers/acpi/acpica/pswalk.o
AR drivers/net/ethernet/google/built-in.a
CC drivers/usb/core/driver.o
CC drivers/gpu/drm/i915/vlv_sideband.o
AR drivers/i3c/built-in.a
CC net/sunrpc/addr.o
CC fs/nfs/delegation.o
CC drivers/ata/ata_piix.o
CC kernel/trace/trace_uprobe.o
CC net/ipv4/udplite.o
CC drivers/net/phy/fixed_phy.o
AR drivers/i2c/busses/built-in.a
AR drivers/i2c/muxes/built-in.a
CC drivers/i2c/i2c-boardinfo.o
CC kernel/user.o
CC kernel/trace/rethook.o
CC drivers/input/mouse/alps.o
CC net/sunrpc/rpcb_clnt.o
CC drivers/scsi/scsi_bsg.o
CC mm/pagewalk.o
AR drivers/net/ethernet/hisilicon/built-in.a
CC net/netfilter/nf_nat_masquerade.o
AR drivers/input/serio/built-in.a
CC net/core/selftests.o
CC drivers/acpi/acpica/psxface.o
CC drivers/i2c/i2c-core-base.o
CC [M] drivers/gpu/drm/xe/xe_execlist.o
CC drivers/rtc/proc.o
CC net/ipv6/udp_offload.o
CC mm/pgtable-generic.o
CC drivers/acpi/ec.o
CC arch/x86/kernel/sys_ia32.o
CC net/mac80211/link.o
CC drivers/usb/storage/initializers.o
CC drivers/input/mouse/byd.o
CC drivers/ata/pata_amd.o
CC net/ipv4/udp_offload.o
AR drivers/usb/early/built-in.a
CC drivers/input/input-compat.o
CC net/sunrpc/timer.o
CC drivers/acpi/acpica/rsaddr.o
CC net/mac80211/rate.o
CC drivers/scsi/scsi_common.o
CC [M] drivers/gpu/drm/xe/xe_force_wake.o
CC net/ipv6/seg6.o
AR drivers/net/ethernet/huawei/built-in.a
CC net/netfilter/nf_nat_ftp.o
CC drivers/gpu/drm/drm_connector.o
CC arch/x86/kernel/ksysfs.o
CC drivers/rtc/sysfs.o
CC drivers/gpu/drm/i915/vlv_suspend.o
CC drivers/net/ethernet/intel/e1000/e1000_main.o
CC drivers/net/ethernet/intel/e1000e/82571.o
CC drivers/acpi/acpica/rscalc.o
CC drivers/net/ethernet/intel/e1000/e1000_hw.o
CC fs/select.o
CC drivers/usb/core/config.o
CC kernel/signal.o
CC drivers/usb/host/xhci-mem.o
CC net/core/ptp_classifier.o
AR drivers/net/phy/built-in.a
CC drivers/input/input-mt.o
AR drivers/net/ethernet/i825xx/built-in.a
CC drivers/gpu/drm/drm_crtc.o
CC mm/rmap.o
CC drivers/usb/core/file.o
CC drivers/net/ethernet/intel/e1000/e1000_ethtool.o
CC drivers/acpi/acpica/rscreate.o
CC drivers/usb/storage/sierra_ms.o
CC drivers/scsi/scsi_transport_spi.o
CC drivers/i2c/i2c-core-smbus.o
CC fs/nfs/nfs4idmap.o
CC net/sunrpc/xdr.o
AR drivers/net/ethernet/microsoft/built-in.a
CC lib/find_bit.o
CC drivers/ata/pata_oldpiix.o
CC drivers/net/ethernet/intel/e1000/e1000_param.o
CC arch/x86/kernel/bootflag.o
CC net/core/netprio_cgroup.o
CC mm/vmalloc.o
CC drivers/input/mouse/logips2pp.o
CC drivers/rtc/rtc-mc146818-lib.o
CC drivers/gpu/drm/i915/soc/intel_dram.o
CC drivers/acpi/acpica/rsdumpinfo.o
CC fs/nfs/callback.o
CC drivers/usb/storage/option_ms.o
CC lib/llist.o
CC drivers/usb/core/buffer.o
CC [M] drivers/gpu/drm/xe/xe_ggtt.o
CC net/ipv4/arp.o
CC drivers/usb/host/xhci-ext-caps.o
AR kernel/trace/built-in.a
CC lib/lwq.o
CC drivers/rtc/rtc-cmos.o
CC drivers/gpu/drm/drm_displayid.o
CC net/ipv6/fib6_notifier.o
CC net/netfilter/nf_nat_irc.o
CC drivers/acpi/acpica/rsinfo.o
AR drivers/media/i2c/built-in.a
AR drivers/media/tuners/built-in.a
AR drivers/media/rc/keymaps/built-in.a
AR drivers/media/rc/built-in.a
AR drivers/media/common/b2c2/built-in.a
CC net/core/netclassid_cgroup.o
AR drivers/media/common/saa7146/built-in.a
AR drivers/media/common/siano/built-in.a
AR drivers/media/common/v4l2-tpg/built-in.a
AR drivers/media/common/videobuf2/built-in.a
CC lib/memweight.o
AR drivers/media/common/built-in.a
CC lib/kfifo.o
AR drivers/media/platform/allegro-dvt/built-in.a
CC fs/dcache.o
AR drivers/media/platform/amlogic/meson-ge2d/built-in.a
AR drivers/media/platform/amlogic/built-in.a
AR drivers/media/pci/ttpci/built-in.a
CC drivers/acpi/acpica/rsio.o
AR drivers/media/pci/b2c2/built-in.a
AR drivers/media/platform/amphion/built-in.a
AR drivers/media/pci/pluto2/built-in.a
AR drivers/media/platform/aspeed/built-in.a
CC arch/x86/kernel/e820.o
AR drivers/media/pci/dm1105/built-in.a
AR drivers/media/platform/atmel/built-in.a
AR drivers/media/usb/b2c2/built-in.a
AR drivers/media/pci/pt1/built-in.a
AR drivers/media/platform/broadcom/built-in.a
CC drivers/ata/pata_sch.o
AR drivers/media/usb/dvb-usb/built-in.a
AR drivers/media/pci/pt3/built-in.a
AR drivers/media/usb/dvb-usb-v2/built-in.a
AR drivers/media/platform/cadence/built-in.a
AR drivers/media/pci/mantis/built-in.a
CC net/ipv4/icmp.o
AR drivers/media/usb/s2255/built-in.a
AR drivers/media/platform/chips-media/coda/built-in.a
AR drivers/media/pci/ngene/built-in.a
AR drivers/media/usb/siano/built-in.a
CC drivers/input/mouse/lifebook.o
AR drivers/media/platform/chips-media/wave5/built-in.a
AR drivers/media/pci/ddbridge/built-in.a
AR drivers/media/platform/chips-media/built-in.a
AR drivers/media/usb/ttusb-budget/built-in.a
AR drivers/media/pci/saa7146/built-in.a
AR drivers/media/usb/ttusb-dec/built-in.a
AR drivers/media/usb/built-in.a
AR drivers/media/platform/imagination/built-in.a
AR drivers/media/pci/smipcie/built-in.a
CC net/ipv4/devinet.o
CC [M] drivers/gpu/drm/xe/xe_gpu_scheduler.o
AR drivers/media/platform/intel/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gsc.o
AR drivers/media/pci/netup_unidvb/built-in.a
AR drivers/media/platform/marvell/built-in.a
CC kernel/sys.o
CC net/ipv4/af_inet.o
AR drivers/media/pci/intel/ipu3/built-in.a
CC drivers/usb/host/xhci-ring.o
AR drivers/media/platform/mediatek/jpeg/built-in.a
AR drivers/media/pci/intel/ivsc/built-in.a
CC drivers/net/ethernet/intel/e1000e/ich8lan.o
AR drivers/media/pci/intel/built-in.a
AR drivers/media/platform/mediatek/mdp/built-in.a
AR drivers/media/pci/built-in.a
AR drivers/media/platform/mediatek/vcodec/common/built-in.a
CC drivers/net/ethernet/intel/e1000e/80003es2lan.o
AR drivers/media/platform/mediatek/vcodec/encoder/built-in.a
AR drivers/media/platform/mediatek/vcodec/decoder/built-in.a
AR drivers/media/platform/mediatek/vcodec/built-in.a
AR drivers/media/platform/mediatek/vpu/built-in.a
AR drivers/media/platform/mediatek/mdp3/built-in.a
AR drivers/media/platform/mediatek/built-in.a
AR drivers/media/platform/microchip/built-in.a
AR drivers/media/platform/nuvoton/built-in.a
CC drivers/usb/core/sysfs.o
CC drivers/usb/storage/usual-tables.o
AR drivers/media/platform/nvidia/tegra-vde/built-in.a
AR drivers/media/platform/nvidia/built-in.a
CC drivers/acpi/acpica/rsirq.o
AR drivers/media/platform/nxp/dw100/built-in.a
AR drivers/media/platform/nxp/imx-jpeg/built-in.a
AR drivers/media/platform/nxp/imx8-isi/built-in.a
CC drivers/input/input-poller.o
AR drivers/media/platform/nxp/built-in.a
AR drivers/media/platform/qcom/camss/built-in.a
AR drivers/media/platform/qcom/venus/built-in.a
AR drivers/media/platform/qcom/built-in.a
CC drivers/gpu/drm/drm_drv.o
AR drivers/media/platform/raspberrypi/pisp_be/built-in.a
AR drivers/media/platform/raspberrypi/rp1-cfe/built-in.a
CC drivers/input/mouse/trackpoint.o
AR drivers/media/platform/raspberrypi/built-in.a
CC drivers/scsi/virtio_scsi.o
AR drivers/media/platform/renesas/rcar-vin/built-in.a
AR drivers/media/mmc/siano/built-in.a
AR drivers/media/mmc/built-in.a
AR drivers/media/platform/renesas/rzg2l-cru/built-in.a
AR drivers/media/platform/renesas/vsp1/built-in.a
CC kernel/umh.o
CC drivers/usb/core/endpoint.o
AR drivers/media/platform/renesas/built-in.a
CC drivers/usb/host/xhci-hub.o
AR drivers/media/platform/rockchip/rga/built-in.a
AR drivers/media/platform/rockchip/rkisp1/built-in.a
AR drivers/media/platform/rockchip/built-in.a
AR drivers/media/platform/samsung/exynos-gsc/built-in.a
CC net/ipv4/igmp.o
AR drivers/media/platform/samsung/exynos4-is/built-in.a
AR drivers/media/platform/samsung/s3c-camif/built-in.a
CC drivers/gpu/drm/i915/soc/intel_gmch.o
CC drivers/i2c/i2c-core-acpi.o
AR drivers/net/ethernet/litex/built-in.a
AR drivers/media/platform/samsung/s5p-g2d/built-in.a
CC net/netfilter/nf_nat_sip.o
AR drivers/media/platform/samsung/s5p-jpeg/built-in.a
AR drivers/media/platform/samsung/s5p-mfc/built-in.a
AR drivers/media/platform/samsung/built-in.a
AR drivers/rtc/built-in.a
CC fs/inode.o
CC drivers/acpi/acpica/rslist.o
CC drivers/input/ff-core.o
AR drivers/media/platform/st/sti/bdisp/built-in.a
CC fs/nfs/callback_xdr.o
CC lib/percpu-refcount.o
AR drivers/media/platform/st/sti/c8sectpfe/built-in.a
CC net/ipv6/rpl.o
AR drivers/media/platform/st/sti/delta/built-in.a
CC fs/attr.o
AR drivers/media/platform/st/sti/hva/built-in.a
CC drivers/ata/pata_mpiix.o
AR drivers/media/platform/st/stm32/built-in.a
CC net/sunrpc/sunrpc_syms.o
AR drivers/media/platform/st/built-in.a
CC net/ipv4/fib_frontend.o
CC kernel/workqueue.o
AR drivers/media/platform/sunxi/sun4i-csi/built-in.a
CC net/core/dst_cache.o
AR drivers/media/platform/sunxi/sun6i-csi/built-in.a
AR drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
AR drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
CC drivers/i2c/i2c-smbus.o
AR drivers/media/platform/sunxi/sun8i-di/built-in.a
AR drivers/usb/storage/built-in.a
CC net/mac80211/michael.o
CC drivers/usb/core/devio.o
AR drivers/media/platform/sunxi/sun8i-rotate/built-in.a
AR drivers/media/platform/sunxi/built-in.a
AR drivers/media/platform/ti/am437x/built-in.a
AR drivers/media/platform/ti/cal/built-in.a
AR drivers/media/platform/ti/vpe/built-in.a
AR drivers/media/platform/ti/davinci/built-in.a
AR drivers/media/platform/verisilicon/built-in.a
AR drivers/media/platform/ti/j721e-csi2rx/built-in.a
CC drivers/net/ethernet/intel/e100.o
AR drivers/media/platform/ti/omap/built-in.a
AR drivers/media/platform/ti/omap3isp/built-in.a
AR drivers/media/platform/ti/built-in.a
CC net/ipv6/ioam6.o
AR drivers/media/platform/via/built-in.a
AR drivers/media/platform/xilinx/built-in.a
AR drivers/media/platform/built-in.a
CC drivers/acpi/acpica/rsmemory.o
CC drivers/gpu/drm/drm_dumb_buffers.o
AR drivers/media/firewire/built-in.a
AR drivers/media/spi/built-in.a
AR drivers/media/test-drivers/built-in.a
AR drivers/media/built-in.a
CC drivers/ata/ata_generic.o
CC drivers/acpi/acpica/rsmisc.o
CC drivers/input/mouse/cypress_ps2.o
CC [M] drivers/gpu/drm/xe/xe_gsc_debugfs.o
CC arch/x86/kernel/pci-dma.o
CC drivers/scsi/sd.o
AR drivers/net/ethernet/broadcom/built-in.a
CC fs/bad_inode.o
CC fs/nfs/callback_proc.o
CC kernel/pid.o
CC [M] drivers/gpu/drm/xe/xe_gsc_proxy.o
CC drivers/input/touchscreen.o
CC lib/rhashtable.o
CC lib/base64.o
CC net/netfilter/x_tables.o
CC fs/nfs/nfs4namespace.o
CC drivers/acpi/acpica/rsserial.o
CC net/mac80211/tkip.o
CC drivers/usb/host/xhci-dbg.o
AR drivers/net/ethernet/marvell/octeon_ep/built-in.a
AR drivers/net/ethernet/marvell/octeon_ep_vf/built-in.a
CC drivers/gpu/drm/i915/soc/intel_pch.o
CC drivers/acpi/dock.o
AR drivers/net/ethernet/marvell/octeontx2/built-in.a
AR drivers/net/ethernet/marvell/prestera/built-in.a
CC drivers/net/ethernet/marvell/sky2.o
CC drivers/scsi/sr.o
AR drivers/i2c/built-in.a
CC mm/vma.o
CC [M] drivers/gpu/drm/xe/xe_gsc_submit.o
CC lib/once.o
CC net/netfilter/xt_tcpudp.o
CC drivers/input/ff-memless.o
CC drivers/input/sparse-keymap.o
AR drivers/net/ethernet/intel/e1000/built-in.a
AR drivers/net/ethernet/mellanox/built-in.a
CC drivers/gpu/drm/i915/soc/intel_rom.o
CC drivers/scsi/sr_ioctl.o
CC drivers/input/vivaldi-fmap.o
CC net/sunrpc/cache.o
CC drivers/acpi/acpica/rsutils.o
CC drivers/input/mouse/psmouse-smbus.o
CC net/netfilter/xt_CONNSECMARK.o
CC net/core/gro_cells.o
AR drivers/pps/clients/built-in.a
CC arch/x86/kernel/quirks.o
CC drivers/pps/pps.o
AR drivers/ata/built-in.a
CC net/sunrpc/rpc_pipe.o
CC lib/refcount.o
CC drivers/gpu/drm/i915/i915_memcpy.o
CC net/ipv4/fib_semantics.o
CC fs/file.o
CC drivers/usb/core/notify.o
CC drivers/acpi/acpica/rsxface.o
CC arch/x86/kernel/kdebugfs.o
CC drivers/pps/kapi.o
CC drivers/input/input-leds.o
CC drivers/scsi/sr_vendor.o
CC net/core/failover.o
CC [M] drivers/gpu/drm/xe/xe_gt.o
AR net/wireless/built-in.a
CC net/ipv4/fib_trie.o
CC arch/x86/kernel/alternative.o
CC lib/rcuref.o
CC kernel/task_work.o
CC drivers/scsi/sg.o
CC fs/nfs/nfs4getroot.o
CC drivers/ptp/ptp_clock.o
CC lib/usercopy.o
CC drivers/acpi/acpica/tbdata.o
CC drivers/power/supply/power_supply_core.o
CC drivers/net/ethernet/intel/e1000e/mac.o
CC drivers/hwmon/hwmon.o
CC fs/nfs/nfs4client.o
CC drivers/ptp/ptp_chardev.o
CC drivers/power/supply/power_supply_sysfs.o
CC net/sunrpc/sysfs.o
CC drivers/power/supply/power_supply_leds.o
CC drivers/gpu/drm/i915/i915_mm.o
CC net/ipv6/sysctl_net_ipv6.o
CC arch/x86/kernel/i8253.o
CC drivers/pps/sysfs.o
AR drivers/input/mouse/built-in.a
CC lib/errseq.o
CC drivers/usb/host/xhci-trace.o
CC drivers/net/ethernet/intel/e1000e/manage.o
AR drivers/net/ethernet/meta/built-in.a
CC net/netfilter/xt_NFLOG.o
CC drivers/gpu/drm/drm_edid.o
CC drivers/usb/core/generic.o
CC [M] drivers/gpu/drm/xe/xe_gt_ccs_mode.o
CC drivers/ptp/ptp_sysfs.o
CC drivers/input/evdev.o
CC drivers/net/ethernet/intel/e1000e/nvm.o
CC net/sunrpc/svc_xprt.o
CC lib/bucket_locks.o
CC drivers/gpu/drm/i915/i915_sw_fence.o
CC net/ipv6/xfrm6_policy.o
CC mm/process_vm_access.o
CC drivers/gpu/drm/drm_eld.o
CC net/netfilter/xt_SECMARK.o
CC drivers/ptp/ptp_vclock.o
CC drivers/acpi/acpica/tbfadt.o
AR drivers/thermal/broadcom/built-in.a
AR drivers/thermal/renesas/built-in.a
AR drivers/thermal/samsung/built-in.a
CC net/ipv4/fib_notifier.o
CC drivers/thermal/intel/intel_tcc.o
AR drivers/pps/built-in.a
CC net/mac80211/aes_cmac.o
AR drivers/thermal/st/built-in.a
AR drivers/watchdog/built-in.a
CC drivers/thermal/intel/therm_throt.o
AR net/core/built-in.a
CC drivers/gpu/drm/i915/i915_sw_fence_work.o
CC kernel/extable.o
CC net/sunrpc/xprtmultipath.o
CC drivers/net/ethernet/intel/e1000e/phy.o
CC lib/generic-radix-tree.o
AR drivers/net/ethernet/micrel/built-in.a
CC net/sunrpc/stats.o
CC fs/nfs/nfs4session.o
CC drivers/usb/core/quirks.o
CC drivers/power/supply/power_supply_hwmon.o
CC net/ipv6/xfrm6_state.o
CC drivers/acpi/pci_root.o
CC lib/bitmap-str.o
AR drivers/thermal/qcom/built-in.a
CC drivers/acpi/pci_link.o
CC drivers/acpi/acpica/tbfind.o
CC arch/x86/kernel/hw_breakpoint.o
CC fs/nfs/dns_resolve.o
CC net/sunrpc/sysctl.o
CC net/ipv4/inet_fragment.o
CC drivers/acpi/pci_irq.o
CC [M] drivers/gpu/drm/xe/xe_gt_clock.o
AR drivers/thermal/tegra/built-in.a
CC drivers/gpu/drm/i915/i915_syncmap.o
CC lib/string_helpers.o
CC arch/x86/kernel/tsc.o
AR drivers/thermal/mediatek/built-in.a
CC kernel/params.o
CC drivers/acpi/acpica/tbinstal.o
CC mm/page_alloc.o
CC drivers/thermal/thermal_core.o
CC drivers/gpu/drm/drm_encoder.o
CC drivers/acpi/acpica/tbprint.o
AR drivers/input/built-in.a
CC drivers/ptp/ptp_kvm_x86.o
CC drivers/net/ethernet/intel/e1000e/param.o
CC fs/nfs/nfs4trace.o
CC fs/filesystems.o
CC drivers/gpu/drm/drm_file.o
AR drivers/hwmon/built-in.a
CC drivers/usb/host/xhci-debugfs.o
AR drivers/power/supply/built-in.a
AR drivers/power/built-in.a
CC mm/page_frag_cache.o
CC drivers/ptp/ptp_kvm_common.o
CC drivers/scsi/scsi_sysfs.o
CC net/netfilter/xt_TCPMSS.o
CC drivers/net/ethernet/intel/e1000e/ethtool.o
CC net/ipv4/ping.o
CC kernel/kthread.o
CC drivers/gpu/drm/i915/i915_user_extensions.o
CC [M] drivers/gpu/drm/xe/xe_gt_freq.o
CC lib/hexdump.o
CC drivers/usb/core/devices.o
CC fs/nfs/nfs4sysctl.o
CC net/mac80211/aes_gmac.o
CC net/netfilter/xt_conntrack.o
CC drivers/acpi/acpica/tbutils.o
CC [M] drivers/thermal/intel/x86_pkg_temp_thermal.o
CC drivers/md/md.o
CC drivers/usb/host/xhci-pci.o
CC drivers/cpufreq/cpufreq.o
CC net/ipv4/ip_tunnel_core.o
CC drivers/gpu/drm/drm_fourcc.o
CC net/mac80211/fils_aead.o
CC kernel/sys_ni.o
CC drivers/net/ethernet/intel/e1000e/netdev.o
CC net/netfilter/xt_policy.o
CC drivers/gpu/drm/i915/i915_debugfs.o
CC lib/kstrtox.o
CC drivers/acpi/acpica/tbxface.o
CC drivers/md/md-bitmap.o
CC mm/init-mm.o
CC net/ipv6/xfrm6_input.o
CC drivers/gpu/drm/drm_framebuffer.o
CC net/netfilter/xt_state.o
CC drivers/acpi/acpi_apd.o
AR drivers/net/ethernet/microchip/built-in.a
AR drivers/net/ethernet/marvell/built-in.a
CC drivers/thermal/thermal_sysfs.o
CC drivers/cpuidle/governors/menu.o
CC drivers/cpuidle/cpuidle.o
AR drivers/ptp/built-in.a
CC drivers/cpuidle/driver.o
CC drivers/thermal/thermal_trip.o
CC net/ipv6/xfrm6_output.o
CC mm/memblock.o
AR drivers/mmc/built-in.a
CC net/ipv4/gre_offload.o
CC arch/x86/kernel/tsc_msr.o
CC drivers/gpu/drm/i915/i915_debugfs_params.o
AR drivers/thermal/intel/built-in.a
CC drivers/acpi/acpica/tbxfload.o
CC drivers/acpi/acpi_platform.o
CC drivers/usb/core/phy.o
CC drivers/usb/core/port.o
CC arch/x86/kernel/io_delay.o
CC fs/namespace.o
CC [M] drivers/gpu/drm/xe/xe_gt_idle.o
CC lib/iomap.o
CC drivers/usb/core/hcd-pci.o
AR drivers/ufs/built-in.a
CC kernel/nsproxy.o
CC drivers/cpufreq/freq_table.o
CC net/ipv6/xfrm6_protocol.o
CC [M] net/netfilter/nf_log_syslog.o
CC net/mac80211/cfg.o
AR drivers/scsi/built-in.a
CC drivers/md/md-autodetect.o
CC drivers/cpufreq/cpufreq_performance.o
CC drivers/cpuidle/governors/haltpoll.o
CC fs/seq_file.o
AR net/sunrpc/built-in.a
CC drivers/thermal/thermal_helpers.o
CC arch/x86/kernel/rtc.o
CC drivers/net/ethernet/intel/e1000e/ptp.o
CC drivers/usb/core/usb-acpi.o
CC net/ipv6/netfilter.o
CC drivers/gpu/drm/i915/i915_pmu.o
CC drivers/acpi/acpica/tbxfroot.o
CC [M] net/netfilter/xt_mark.o
CC lib/iomap_copy.o
CC fs/xattr.o
CC drivers/gpu/drm/drm_gem.o
CC net/mac80211/ethtool.o
AR drivers/firmware/arm_ffa/built-in.a
CC drivers/acpi/acpi_pnp.o
AR drivers/firmware/arm_scmi/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_mcr.o
CC [M] net/netfilter/xt_nat.o
AR drivers/firmware/broadcom/built-in.a
CC drivers/gpu/drm/i915/gt/gen2_engine_cs.o
AR drivers/usb/host/built-in.a
AR drivers/firmware/cirrus/test/built-in.a
CC lib/devres.o
AR drivers/firmware/cirrus/built-in.a
CC [M] net/netfilter/xt_LOG.o
AR drivers/firmware/meson/built-in.a
CC drivers/acpi/power.o
AR drivers/firmware/microchip/built-in.a
CC fs/libfs.o
AR drivers/firmware/imx/built-in.a
CC drivers/thermal/thermal_thresholds.o
CC net/ipv4/metrics.o
CC drivers/acpi/acpica/utaddress.o
CC drivers/md/dm.o
CC net/mac80211/rx.o
CC drivers/firmware/efi/libstub/efi-stub-helper.o
CC drivers/cpuidle/governor.o
CC drivers/acpi/event.o
CC fs/fs-writeback.o
CC arch/x86/kernel/resource.o
CC [M] net/netfilter/xt_MASQUERADE.o
AR drivers/crypto/stm32/built-in.a
CC drivers/md/dm-table.o
AR drivers/crypto/xilinx/built-in.a
CC mm/slub.o
AR drivers/crypto/hisilicon/built-in.a
AR drivers/net/ethernet/mscc/built-in.a
AR drivers/crypto/intel/keembay/built-in.a
AR drivers/firmware/psci/built-in.a
AR drivers/crypto/intel/ixp4xx/built-in.a
CC drivers/cpuidle/sysfs.o
AR drivers/crypto/intel/built-in.a
CC drivers/firmware/efi/efi-bgrt.o
AR drivers/crypto/starfive/built-in.a
AR drivers/crypto/built-in.a
CC mm/madvise.o
CC drivers/acpi/acpica/utalloc.o
AR drivers/usb/core/built-in.a
CC drivers/gpu/drm/drm_ioctl.o
AR drivers/usb/built-in.a
AS arch/x86/kernel/irqflags.o
CC [M] net/netfilter/xt_addrtype.o
CC kernel/notifier.o
CC drivers/gpu/drm/i915/gt/gen6_engine_cs.o
CC arch/x86/kernel/static_call.o
AR drivers/cpuidle/governors/built-in.a
CC drivers/md/dm-target.o
CC lib/check_signature.o
CC drivers/md/dm-linear.o
CC drivers/firmware/efi/efi.o
CC drivers/cpufreq/cpufreq_userspace.o
CC drivers/gpu/drm/drm_lease.o
CC drivers/thermal/thermal_netlink.o
CC net/ipv4/netlink.o
CC drivers/clocksource/acpi_pm.o
CC lib/interval_tree.o
CC [M] drivers/gpu/drm/xe/xe_gt_pagefault.o
AR drivers/firmware/qcom/built-in.a
CC drivers/acpi/acpica/utascii.o
CC net/mac80211/spectmgmt.o
CC kernel/ksysfs.o
CC drivers/cpufreq/cpufreq_ondemand.o
CC arch/x86/kernel/process.o
CC drivers/cpuidle/poll_state.o
CC lib/assoc_array.o
CC lib/bitrev.o
CC drivers/firmware/efi/libstub/gop.o
AR drivers/net/ethernet/myricom/built-in.a
CC drivers/clocksource/i8253.o
CC mm/page_io.o
CC net/ipv6/proc.o
CC net/ipv4/nexthop.o
CC drivers/gpu/drm/drm_managed.o
CC arch/x86/kernel/ptrace.o
CC net/ipv6/syncookies.o
CC kernel/cred.o
CC drivers/gpu/drm/i915/gt/gen6_ppgtt.o
CC drivers/cpuidle/cpuidle-haltpoll.o
CC drivers/firmware/efi/libstub/secureboot.o
CC drivers/acpi/acpica/utbuffer.o
CC net/ipv4/udp_tunnel_stub.o
AR drivers/net/ethernet/natsemi/built-in.a
CC drivers/firmware/efi/vars.o
CC arch/x86/kernel/tls.o
CC drivers/gpu/drm/i915/gt/gen7_renderclear.o
CC net/ipv4/ip_tunnel.o
CC drivers/md/dm-stripe.o
CC drivers/acpi/acpica/utcksum.o
CC fs/pnode.o
AR drivers/firmware/smccc/built-in.a
CC drivers/gpu/drm/i915/gt/gen8_engine_cs.o
CC kernel/reboot.o
CC net/ipv4/sysctl_net_ipv4.o
AR drivers/clocksource/built-in.a
CC lib/crc-ccitt.o
CC arch/x86/kernel/step.o
CC drivers/acpi/evged.o
AR fs/nfs/built-in.a
CC fs/splice.o
CC net/ipv4/proc.o
AR drivers/cpuidle/built-in.a
CC drivers/md/dm-ioctl.o
CC net/ipv6/calipso.o
CC drivers/firmware/efi/libstub/tpm.o
CC drivers/cpufreq/cpufreq_governor.o
AR drivers/net/ethernet/neterion/built-in.a
CC net/ipv4/fib_rules.o
AR drivers/net/ethernet/netronome/built-in.a
CC drivers/acpi/acpica/utcopy.o
CC drivers/gpu/drm/drm_mm.o
CC fs/sync.o
CC drivers/hid/usbhid/hid-core.o
AR drivers/platform/x86/amd/built-in.a
AR net/netfilter/built-in.a
AR drivers/platform/x86/intel/built-in.a
CC drivers/platform/x86/wmi.o
CC drivers/mailbox/mailbox.o
AR drivers/perf/built-in.a
CC drivers/firmware/efi/libstub/file.o
AR drivers/hwtracing/intel_th/built-in.a
CC lib/crc16.o
AR drivers/platform/surface/built-in.a
CC drivers/gpu/drm/i915/gt/gen8_ppgtt.o
CC drivers/thermal/thermal_hwmon.o
CC drivers/firmware/efi/libstub/mem.o
CC fs/utimes.o
HOSTCC lib/gen_crc32table
CC drivers/gpu/drm/drm_mode_config.o
AR drivers/firmware/tegra/built-in.a
AR drivers/firmware/xilinx/built-in.a
CC drivers/firmware/efi/reboot.o
CC drivers/platform/x86/wmi-bmof.o
CC drivers/firmware/efi/libstub/random.o
CC [M] drivers/gpu/drm/xe/xe_gt_sysfs.o
CC drivers/platform/x86/eeepc-laptop.o
CC drivers/acpi/sysfs.o
CC net/ipv6/ah6.o
CC mm/swap_state.o
CC drivers/thermal/gov_step_wise.o
CC drivers/hid/usbhid/hiddev.o
CC drivers/acpi/acpica/utexcep.o
CC lib/xxhash.o
CC drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
AR drivers/net/ethernet/ni/built-in.a
CC drivers/cpufreq/cpufreq_governor_attr_set.o
CC arch/x86/kernel/i8237.o
CC net/ipv4/ipmr.o
CC net/mac80211/tx.o
CC drivers/md/dm-io.o
AR drivers/android/built-in.a
CC drivers/net/ethernet/nvidia/forcedeth.o
CC lib/genalloc.o
CC kernel/async.o
CC drivers/mailbox/pcc.o
CC drivers/platform/x86/p2sb.o
CC net/mac80211/key.o
CC mm/swapfile.o
CC drivers/acpi/acpica/utdebug.o
CC arch/x86/kernel/stacktrace.o
CC net/ipv4/ipmr_base.o
AR drivers/thermal/built-in.a
CC drivers/acpi/property.o
CC net/ipv6/esp6.o
CC mm/swap_slots.o
AR drivers/net/ethernet/oki-semi/built-in.a
CC drivers/firmware/efi/libstub/randomalloc.o
CC drivers/firmware/efi/libstub/pci.o
CC drivers/acpi/acpica/utdecode.o
CC net/ipv6/sit.o
CC drivers/cpufreq/acpi-cpufreq.o
CC kernel/range.o
AR drivers/nvmem/layouts/built-in.a
CC drivers/nvmem/core.o
CC net/ipv4/syncookies.o
CC [M] drivers/gpu/drm/xe/xe_gt_throttle.o
CC arch/x86/kernel/reboot.o
CC kernel/smpboot.o
CC net/ipv4/tunnel4.o
CC mm/dmapool.o
CC drivers/md/dm-kcopyd.o
CC net/mac80211/util.o
CC drivers/cpufreq/amd-pstate.o
CC drivers/cpufreq/amd-pstate-trace.o
CC drivers/hid/hid-core.o
CC lib/percpu_counter.o
CC drivers/acpi/acpica/utdelete.o
AR drivers/mailbox/built-in.a
CC drivers/gpu/drm/drm_mode_object.o
CC drivers/md/dm-sysfs.o
CC mm/hugetlb.o
CC fs/d_path.o
CC drivers/cpufreq/intel_pstate.o
CC drivers/hid/usbhid/hid-pidff.o
AR drivers/platform/x86/built-in.a
AR drivers/platform/built-in.a
CC fs/stack.o
CC drivers/gpu/drm/i915/gt/intel_context.o
CC drivers/acpi/debugfs.o
CC net/ipv6/addrconf_core.o
CC drivers/firmware/efi/libstub/skip_spaces.o
AR drivers/net/ethernet/packetengines/built-in.a
CC arch/x86/kernel/msr.o
CC [M] drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
CC net/ipv4/ipconfig.o
CC drivers/firmware/efi/libstub/lib-cmdline.o
CC drivers/md/dm-stats.o
CC kernel/ucount.o
CC fs/fs_struct.o
CC drivers/acpi/acpica/uterror.o
CC drivers/gpu/drm/drm_modes.o
CC drivers/firmware/efi/libstub/lib-ctype.o
CC drivers/firmware/efi/libstub/alignedmem.o
AR drivers/net/ethernet/intel/e1000e/built-in.a
AR drivers/net/ethernet/intel/built-in.a
CC mm/mmu_notifier.o
CC drivers/hid/hid-input.o
CC drivers/firmware/efi/memattr.o
CC drivers/firmware/dmi_scan.o
CC kernel/regset.o
CC lib/audit.o
CC drivers/acpi/acpica/uteval.o
CC [M] drivers/gpu/drm/xe/xe_gt_topology.o
CC drivers/md/dm-rq.o
CC fs/statfs.o
CC drivers/gpu/drm/drm_modeset_lock.o
CC lib/syscall.o
AR drivers/net/ethernet/qlogic/built-in.a
CC drivers/md/dm-io-rewind.o
CC arch/x86/kernel/cpuid.o
CC drivers/hid/hid-quirks.o
CC drivers/firmware/efi/tpm.o
CC net/mac80211/parse.o
CC drivers/gpu/drm/i915/gt/intel_context_sseu.o
CC drivers/firmware/efi/memmap.o
AR drivers/nvmem/built-in.a
CC drivers/gpu/drm/i915/gt/intel_engine_cs.o
CC kernel/ksyms_common.o
CC kernel/groups.o
CC arch/x86/kernel/early-quirks.o
CC arch/x86/kernel/smp.o
CC drivers/acpi/acpica/utglobal.o
CC drivers/firmware/dmi-id.o
CC drivers/acpi/acpica/uthex.o
CC mm/migrate.o
CC drivers/firmware/efi/libstub/relocate.o
CC net/mac80211/wme.o
CC net/ipv6/exthdrs_core.o
CC drivers/firmware/efi/capsule.o
CC mm/page_counter.o
CC drivers/gpu/drm/drm_plane.o
CC lib/errname.o
CC drivers/acpi/acpi_lpat.o
CC lib/nlattr.o
AR drivers/hid/usbhid/built-in.a
CC kernel/kcmp.o
CC drivers/firmware/efi/libstub/printk.o
CC kernel/freezer.o
CC fs/fs_pin.o
CC drivers/acpi/acpica/utids.o
CC drivers/md/dm-builtin.o
CC [M] drivers/gpu/drm/xe/xe_guc.o
CC drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
CC net/ipv4/netfilter.o
CC drivers/gpu/drm/i915/gt/intel_engine_pm.o
CC net/ipv4/tcp_cubic.o
CC fs/nsfs.o
CC drivers/gpu/drm/i915/gt/intel_engine_user.o
CC drivers/net/ethernet/realtek/8139too.o
AR drivers/net/ethernet/qualcomm/emac/built-in.a
AR drivers/net/ethernet/qualcomm/built-in.a
CC lib/cpu_rmap.o
CC net/ipv4/tcp_sigpool.o
CC drivers/firmware/efi/libstub/vsprintf.o
CC kernel/profile.o
CC kernel/stacktrace.o
CC drivers/firmware/memmap.o
CC drivers/net/ethernet/realtek/r8169_main.o
CC lib/dynamic_queue_limits.o
CC mm/hugetlb_cgroup.o
CC drivers/gpu/drm/drm_prime.o
CC drivers/acpi/acpi_pcc.o
CC net/ipv4/cipso_ipv4.o
CC net/ipv6/ip6_checksum.o
CC [M] drivers/gpu/drm/xe/xe_guc_ads.o
CC arch/x86/kernel/smpboot.o
CC drivers/acpi/ac.o
CC drivers/acpi/acpica/utinit.o
CC net/mac80211/chan.o
CC drivers/firmware/efi/esrt.o
AR drivers/net/ethernet/renesas/built-in.a
CC drivers/md/dm-raid1.o
CC drivers/hid/hid-debug.o
AR drivers/net/ethernet/rdc/built-in.a
CC kernel/dma.o
CC mm/early_ioremap.o
CC mm/secretmem.o
CC [M] drivers/gpu/drm/xe/xe_guc_buf.o
CC drivers/firmware/efi/libstub/x86-stub.o
AR drivers/cpufreq/built-in.a
CC net/ipv6/ip6_icmp.o
CC drivers/acpi/button.o
CC drivers/hid/hidraw.o
CC net/ipv4/xfrm4_policy.o
CC drivers/net/ethernet/realtek/r8169_firmware.o
AR drivers/net/ethernet/rocker/built-in.a
CC net/mac80211/trace.o
CC fs/fs_types.o
CC drivers/acpi/acpica/utlock.o
CC drivers/md/dm-log.o
CC drivers/firmware/efi/libstub/smbios.o
CC drivers/gpu/drm/drm_print.o
AR drivers/net/ethernet/nvidia/built-in.a
CC drivers/gpu/drm/i915/gt/intel_execlists_submission.o
CC mm/hmm.o
CC lib/glob.o
CC kernel/smp.o
CC [M] drivers/gpu/drm/xe/xe_guc_capture.o
CC drivers/net/ethernet/realtek/r8169_phy_config.o
CC net/ipv6/output_core.o
CC drivers/hid/hid-generic.o
CC drivers/md/dm-region-hash.o
AR drivers/net/ethernet/samsung/built-in.a
CC drivers/acpi/acpica/utmath.o
CC drivers/firmware/efi/runtime-wrappers.o
CC drivers/md/dm-zero.o
CC drivers/gpu/drm/i915/gt/intel_ggtt.o
CC fs/fs_context.o
STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
CC drivers/hid/hid-a4tech.o
CC net/ipv6/protocol.o
CC drivers/hid/hid-apple.o
CC drivers/gpu/drm/drm_property.o
CC drivers/acpi/acpica/utmisc.o
CC kernel/uid16.o
CC lib/strncpy_from_user.o
STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
CC net/ipv4/xfrm4_state.o
CC [M] drivers/gpu/drm/xe/xe_guc_ct.o
CC net/mac80211/mlme.o
CC drivers/acpi/fan_core.o
STUBCPY drivers/firmware/efi/libstub/file.stub.o
CC net/ipv6/ip6_offload.o
STUBCPY drivers/firmware/efi/libstub/gop.stub.o
STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o
CC kernel/kallsyms.o
STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
CC drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
STUBCPY drivers/firmware/efi/libstub/mem.stub.o
CC drivers/gpu/drm/drm_rect.o
CC net/mac80211/tdls.o
STUBCPY drivers/firmware/efi/libstub/pci.stub.o
STUBCPY drivers/firmware/efi/libstub/printk.stub.o
STUBCPY drivers/firmware/efi/libstub/random.stub.o
CC drivers/firmware/efi/capsule-loader.o
STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
CC net/mac80211/ocb.o
STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
STUBCPY drivers/firmware/efi/libstub/smbios.stub.o
CC net/mac80211/airtime.o
STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
CC arch/x86/kernel/tsc_sync.o
STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
AR drivers/firmware/efi/libstub/lib.a
CC drivers/gpu/drm/i915/gt/intel_gt.o
CC arch/x86/kernel/setup_percpu.o
CC drivers/firmware/efi/earlycon.o
CC net/ipv6/tcpv6_offload.o
CC drivers/acpi/acpica/utmutex.o
CC drivers/acpi/acpica/utnonansi.o
CC fs/fs_parser.o
CC kernel/acct.o
AR drivers/net/ethernet/seeq/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_db_mgr.o
AR drivers/net/ethernet/silan/built-in.a
CC mm/memfd.o
CC arch/x86/kernel/mpparse.o
CC net/ipv4/xfrm4_input.o
CC net/mac80211/eht.o
CC drivers/gpu/drm/drm_syncobj.o
CC lib/strnlen_user.o
CC arch/x86/kernel/trace_clock.o
CC drivers/gpu/drm/drm_sysfs.o
CC kernel/vmcore_info.o
AR drivers/md/built-in.a
CC arch/x86/kernel/trace.o
CC fs/fsopen.o
CC net/ipv6/exthdrs_offload.o
CC drivers/acpi/acpica/utobject.o
CC mm/ptdump.o
CC net/ipv4/xfrm4_output.o
CC drivers/acpi/fan_attr.o
CC drivers/acpi/acpica/utosi.o
CC fs/init.o
CC mm/execmem.o
CC lib/net_utils.o
CC drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
CC drivers/hid/hid-belkin.o
CC [M] drivers/gpu/drm/xe/xe_guc_engine_activity.o
AR drivers/net/ethernet/sis/built-in.a
CC net/ipv4/xfrm4_protocol.o
CC drivers/acpi/fan_hwmon.o
AR drivers/firmware/efi/built-in.a
AR drivers/firmware/built-in.a
CC net/ipv6/inet6_hashtables.o
CC net/mac80211/led.o
CC drivers/acpi/acpica/utownerid.o
CC drivers/acpi/acpica/utpredef.o
CC net/mac80211/pm.o
CC drivers/hid/hid-cherry.o
CC drivers/gpu/drm/drm_trace_points.o
AR drivers/net/ethernet/sfc/built-in.a
AR drivers/net/ethernet/smsc/built-in.a
CC net/ipv6/mcast_snoop.o
AR drivers/net/ethernet/socionext/built-in.a
CC arch/x86/kernel/rethook.o
CC drivers/hid/hid-chicony.o
CC kernel/elfcorehdr.o
CC drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.o
CC [M] drivers/gpu/drm/xe/xe_guc_hwconfig.o
CC drivers/gpu/drm/drm_vblank.o
CC drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
CC fs/kernel_read_file.o
CC drivers/acpi/acpica/utresdecode.o
AR drivers/net/ethernet/stmicro/built-in.a
CC arch/x86/kernel/vmcore_info_32.o
CC [M] drivers/gpu/drm/xe/xe_guc_id_mgr.o
CC drivers/acpi/acpi_video.o
CC drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
CC drivers/acpi/acpica/utresrc.o
CC arch/x86/kernel/machine_kexec_32.o
CC net/mac80211/rc80211_minstrel_ht.o
CC lib/sg_pool.o
AR drivers/net/ethernet/sun/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_klv_helpers.o
CC drivers/gpu/drm/drm_vblank_work.o
AR mm/built-in.a
AR drivers/net/ethernet/tehuti/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_log.o
CC drivers/acpi/acpica/utstate.o
AS arch/x86/kernel/relocate_kernel_32.o
CC drivers/acpi/video_detect.o
CC kernel/crash_reserve.o
CC drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
CC net/mac80211/wbrf.o
AR drivers/net/ethernet/ti/built-in.a
CC lib/stackdepot.o
CC drivers/acpi/acpica/utstring.o
CC drivers/hid/hid-cypress.o
CC arch/x86/kernel/crash_dump_32.o
CC kernel/kexec_core.o
CC drivers/acpi/processor_driver.o
CC fs/mnt_idmapping.o
CC drivers/gpu/drm/drm_vma_manager.o
CC [M] drivers/gpu/drm/xe/xe_guc_pc.o
AR drivers/net/ethernet/realtek/built-in.a
CC fs/remap_range.o
CC fs/pidfs.o
AR drivers/net/ethernet/vertexcom/built-in.a
CC drivers/gpu/drm/drm_writeback.o
AR drivers/net/ethernet/via/built-in.a
AR drivers/net/ethernet/wangxun/built-in.a
AR drivers/net/ethernet/wiznet/built-in.a
CC drivers/gpu/drm/drm_panel.o
CC drivers/acpi/acpica/utstrsuppt.o
AR drivers/net/ethernet/xilinx/built-in.a
AR drivers/net/ethernet/xircom/built-in.a
CC kernel/crash_core.o
AR drivers/net/ethernet/synopsys/built-in.a
CC fs/buffer.o
AR drivers/net/ethernet/pensando/built-in.a
CC drivers/hid/hid-ezkey.o
CC drivers/gpu/drm/i915/gt/intel_gt_irq.o
AR drivers/net/ethernet/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_mcr.o
CC drivers/acpi/processor_thermal.o
AR drivers/net/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_pm.o
CC lib/asn1_decoder.o
AR net/ipv4/built-in.a
CC arch/x86/kernel/crash.o
CC fs/mpage.o
CC [M] drivers/gpu/drm/xe/xe_guc_submit.o
CC drivers/gpu/drm/drm_pci.o
CC fs/proc_namespace.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
CC drivers/gpu/drm/drm_debugfs.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
CC drivers/acpi/acpica/utstrtoul64.o
CC kernel/kexec.o
CC drivers/acpi/processor_idle.o
CC drivers/hid/hid-gyration.o
GEN lib/oid_registry_data.c
CC fs/direct-io.o
CC drivers/gpu/drm/drm_debugfs_crc.o
CC kernel/utsname.o
CC drivers/hid/hid-ite.o
CC drivers/acpi/processor_throttling.o
CC drivers/acpi/acpica/utxface.o
CC lib/ucs2_string.o
CC [M] drivers/gpu/drm/xe/xe_heci_gsc.o
AR net/ipv6/built-in.a
CC kernel/pid_namespace.o
CC fs/eventpoll.o
CC kernel/stop_machine.o
CC lib/sbitmap.o
CC drivers/acpi/acpica/utxfinit.o
CC drivers/acpi/acpica/utxferror.o
CC [M] drivers/gpu/drm/xe/xe_huc.o
CC drivers/gpu/drm/drm_panel_orientation_quirks.o
CC drivers/hid/hid-kensington.o
CC fs/anon_inodes.o
CC lib/group_cpus.o
CC arch/x86/kernel/module.o
CC kernel/audit.o
CC drivers/acpi/acpica/utxfmutex.o
CC [M] drivers/gpu/drm/xe/xe_hw_engine.o
CC [M] drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o
CC lib/fw_table.o
CC fs/signalfd.o
CC fs/timerfd.o
CC drivers/gpu/drm/i915/gt/intel_gt_requests.o
CC drivers/gpu/drm/drm_buddy.o
CC kernel/auditfilter.o
CC [M] drivers/gpu/drm/xe/xe_hw_engine_group.o
CC drivers/hid/hid-lg.o
CC arch/x86/kernel/doublefault_32.o
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
CC drivers/gpu/drm/drm_gem_shmem_helper.o
CC drivers/acpi/processor_perflib.o
CC drivers/gpu/drm/drm_atomic_helper.o
CC arch/x86/kernel/early_printk.o
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
AR lib/lib.a
CC arch/x86/kernel/hpet.o
CC fs/eventfd.o
CC kernel/auditsc.o
AR drivers/acpi/acpica/built-in.a
CC drivers/gpu/drm/drm_atomic_state_helper.o
CC kernel/audit_watch.o
CC fs/aio.o
CC [M] drivers/gpu/drm/xe/xe_hw_fence.o
CC arch/x86/kernel/amd_nb.o
GEN lib/crc32table.h
CC fs/locks.o
CC drivers/hid/hid-lgff.o
CC drivers/gpu/drm/drm_crtc_helper.o
CC kernel/audit_fsnotify.o
CC drivers/gpu/drm/i915/gt/intel_gtt.o
CC fs/binfmt_misc.o
CC [M] drivers/gpu/drm/xe/xe_irq.o
CC kernel/audit_tree.o
CC drivers/gpu/drm/drm_damage_helper.o
CC drivers/acpi/container.o
CC drivers/gpu/drm/i915/gt/intel_llc.o
CC lib/oid_registry.o
CC fs/binfmt_script.o
CC drivers/gpu/drm/drm_flip_work.o
CC fs/binfmt_elf.o
CC drivers/hid/hid-lg4ff.o
CC arch/x86/kernel/amd_node.o
CC kernel/kprobes.o
CC drivers/gpu/drm/i915/gt/intel_lrc.o
CC [M] drivers/gpu/drm/xe/xe_lrc.o
CC drivers/hid/hid-lg-g15.o
CC drivers/gpu/drm/drm_format_helper.o
CC lib/crc32.o
CC kernel/seccomp.o
CC drivers/gpu/drm/i915/gt/intel_migrate.o
CC drivers/hid/hid-microsoft.o
CC drivers/gpu/drm/i915/gt/intel_mocs.o
CC drivers/acpi/thermal_lib.o
CC drivers/gpu/drm/i915/gt/intel_ppgtt.o
CC arch/x86/kernel/kvm.o
CC drivers/gpu/drm/drm_gem_atomic_helper.o
CC drivers/hid/hid-monterey.o
CC kernel/relay.o
CC [M] drivers/gpu/drm/xe/xe_migrate.o
CC drivers/gpu/drm/drm_gem_framebuffer_helper.o
CC [M] drivers/gpu/drm/xe/xe_mmio.o
CC fs/mbcache.o
CC arch/x86/kernel/kvmclock.o
CC kernel/utsname_sysctl.o
CC drivers/acpi/thermal.o
CC drivers/gpu/drm/drm_kms_helper_common.o
CC kernel/delayacct.o
CC drivers/hid/hid-ntrig.o
CC arch/x86/kernel/paravirt.o
AR lib/built-in.a
CC [M] drivers/gpu/drm/xe/xe_mocs.o
CC fs/posix_acl.o
CC drivers/gpu/drm/i915/gt/intel_rc6.o
CC drivers/acpi/nhlt.o
CC drivers/acpi/acpi_memhotplug.o
CC drivers/hid/hid-pl.o
CC [M] drivers/gpu/drm/xe/xe_module.o
CC drivers/gpu/drm/drm_modeset_helper.o
CC kernel/taskstats.o
CC fs/coredump.o
CC [M] drivers/gpu/drm/xe/xe_oa.o
CC drivers/gpu/drm/drm_plane_helper.o
CC kernel/tsacct.o
CC arch/x86/kernel/pvclock.o
CC drivers/hid/hid-petalynx.o
CC fs/drop_caches.o
CC [M] drivers/gpu/drm/xe/xe_observation.o
CC drivers/acpi/ioapic.o
CC kernel/tracepoint.o
CC drivers/acpi/battery.o
CC drivers/hid/hid-redragon.o
CC arch/x86/kernel/pcspeaker.o
CC fs/sysctls.o
CC [M] drivers/gpu/drm/xe/xe_pat.o
CC drivers/gpu/drm/i915/gt/intel_region_lmem.o
CC kernel/irq_work.o
CC arch/x86/kernel/check.o
CC drivers/acpi/bgrt.o
CC fs/fhandle.o
CC drivers/gpu/drm/drm_probe_helper.o
CC arch/x86/kernel/uprobes.o
CC drivers/acpi/spcr.o
CC drivers/gpu/drm/i915/gt/intel_renderstate.o
CC drivers/gpu/drm/drm_self_refresh_helper.o
CC arch/x86/kernel/perf_regs.o
CC [M] drivers/gpu/drm/xe/xe_pci.o
CC drivers/gpu/drm/drm_simple_kms_helper.o
CC kernel/static_call.o
CC [M] drivers/gpu/drm/xe/xe_pcode.o
CC drivers/gpu/drm/i915/gt/intel_reset.o
CC arch/x86/kernel/tracepoint.o
CC drivers/gpu/drm/i915/gt/intel_ring.o
CC drivers/gpu/drm/bridge/panel.o
CC drivers/hid/hid-samsung.o
CC kernel/padata.o
CC [M] drivers/gpu/drm/xe/xe_pm.o
CC arch/x86/kernel/itmt.o
CC drivers/gpu/drm/i915/gt/intel_ring_submission.o
CC arch/x86/kernel/umip.o
CC drivers/hid/hid-sony.o
CC drivers/gpu/drm/drm_mipi_dsi.o
CC [M] drivers/gpu/drm/xe/xe_preempt_fence.o
CC drivers/hid/hid-sunplus.o
CC drivers/gpu/drm/i915/gt/intel_rps.o
CC [M] drivers/gpu/drm/drm_exec.o
CC arch/x86/kernel/unwind_frame.o
CC kernel/jump_label.o
CC drivers/gpu/drm/i915/gt/intel_sa_media.o
CC drivers/hid/hid-topseed.o
CC kernel/context_tracking.o
CC [M] drivers/gpu/drm/xe/xe_pt.o
CC kernel/iomem.o
CC kernel/rseq.o
CC drivers/gpu/drm/i915/gt/intel_sseu.o
CC drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
CC drivers/gpu/drm/i915/gt/intel_timeline.o
CC [M] drivers/gpu/drm/drm_gpuvm.o
CC [M] drivers/gpu/drm/xe/xe_pt_walk.o
CC drivers/gpu/drm/i915/gt/intel_tlb.o
CC [M] drivers/gpu/drm/drm_suballoc.o
AR drivers/acpi/built-in.a
CC [M] drivers/gpu/drm/drm_gem_ttm_helper.o
CC [M] drivers/gpu/drm/xe/xe_pxp.o
CC drivers/gpu/drm/i915/gt/intel_wopcm.o
CC drivers/gpu/drm/i915/gt/intel_workarounds.o
CC [M] drivers/gpu/drm/xe/xe_pxp_debugfs.o
CC [M] drivers/gpu/drm/xe/xe_pxp_submit.o
CC drivers/gpu/drm/i915/gt/shmem_utils.o
CC [M] drivers/gpu/drm/xe/xe_query.o
CC [M] drivers/gpu/drm/xe/xe_range_fence.o
CC drivers/gpu/drm/i915/gt/sysfs_engines.o
AR fs/built-in.a
CC [M] drivers/gpu/drm/xe/xe_reg_sr.o
CC drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
CC [M] drivers/gpu/drm/xe/xe_reg_whitelist.o
CC drivers/gpu/drm/i915/gt/gen6_renderstate.o
CC [M] drivers/gpu/drm/xe/xe_ring_ops.o
CC [M] drivers/gpu/drm/xe/xe_rtp.o
CC [M] drivers/gpu/drm/xe/xe_sa.o
CC drivers/gpu/drm/i915/gt/gen7_renderstate.o
CC [M] drivers/gpu/drm/xe/xe_sched_job.o
CC drivers/gpu/drm/i915/gt/gen8_renderstate.o
AR arch/x86/kernel/built-in.a
CC drivers/gpu/drm/i915/gt/gen9_renderstate.o
AR arch/x86/built-in.a
CC drivers/gpu/drm/i915/gem/i915_gem_busy.o
CC [M] drivers/gpu/drm/xe/xe_shrinker.o
CC drivers/gpu/drm/i915/gem/i915_gem_clflush.o
CC [M] drivers/gpu/drm/xe/xe_step.o
CC drivers/gpu/drm/i915/gem/i915_gem_context.o
CC drivers/gpu/drm/i915/gem/i915_gem_create.o
CC [M] drivers/gpu/drm/xe/xe_survivability_mode.o
CC [M] drivers/gpu/drm/xe/xe_sync.o
CC [M] drivers/gpu/drm/xe/xe_tile.o
CC drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
CC [M] drivers/gpu/drm/xe/xe_tile_sysfs.o
CC drivers/gpu/drm/i915/gem/i915_gem_domain.o
LD [M] drivers/gpu/drm/drm_suballoc_helper.o
CC [M] drivers/gpu/drm/xe/xe_trace.o
CC drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
AR kernel/built-in.a
LD [M] drivers/gpu/drm/drm_ttm_helper.o
CC [M] drivers/gpu/drm/xe/xe_trace_bo.o
CC drivers/gpu/drm/i915/gem/i915_gem_internal.o
CC drivers/gpu/drm/i915/gem/i915_gem_lmem.o
CC [M] drivers/gpu/drm/xe/xe_trace_guc.o
AR drivers/hid/built-in.a
CC drivers/gpu/drm/i915/gem/i915_gem_mman.o
CC drivers/gpu/drm/i915/gem/i915_gem_object.o
CC [M] drivers/gpu/drm/xe/xe_trace_lrc.o
CC [M] drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
CC [M] drivers/gpu/drm/xe/xe_ttm_sys_mgr.o
CC drivers/gpu/drm/i915/gem/i915_gem_pages.o
CC drivers/gpu/drm/i915/gem/i915_gem_phys.o
CC drivers/gpu/drm/i915/gem/i915_gem_pm.o
CC drivers/gpu/drm/i915/gem/i915_gem_region.o
CC [M] drivers/gpu/drm/xe/xe_ttm_vram_mgr.o
CC [M] drivers/gpu/drm/xe/xe_tuning.o
CC drivers/gpu/drm/i915/gem/i915_gem_shmem.o
CC drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
CC drivers/gpu/drm/i915/gem/i915_gem_stolen.o
CC [M] drivers/gpu/drm/xe/xe_uc.o
CC drivers/gpu/drm/i915/gem/i915_gem_throttle.o
CC [M] drivers/gpu/drm/xe/xe_uc_fw.o
CC [M] drivers/gpu/drm/xe/xe_vm.o
CC drivers/gpu/drm/i915/gem/i915_gem_tiling.o
CC [M] drivers/gpu/drm/xe/xe_vram.o
CC [M] drivers/gpu/drm/xe/xe_vram_freq.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm.o
CC [M] drivers/gpu/drm/xe/xe_vsec.o
CC [M] drivers/gpu/drm/xe/xe_wa.o
CC [M] drivers/gpu/drm/xe/xe_wait_user_fence.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
CC [M] drivers/gpu/drm/xe/xe_wopcm.o
CC [M] drivers/gpu/drm/xe/xe_hmm.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
CC [M] drivers/gpu/drm/xe/xe_hwmon.o
CC drivers/gpu/drm/i915/gem/i915_gem_userptr.o
CC drivers/gpu/drm/i915/gem/i915_gem_wait.o
CC [M] drivers/gpu/drm/xe/xe_pmu.o
CC [M] drivers/gpu/drm/xe/xe_gt_sriov_vf.o
AR net/mac80211/built-in.a
AR net/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_relay.o
CC drivers/gpu/drm/i915/gem/i915_gemfs.o
CC [M] drivers/gpu/drm/xe/xe_memirq.o
CC [M] drivers/gpu/drm/xe/xe_sriov.o
CC drivers/gpu/drm/i915/i915_active.o
CC drivers/gpu/drm/i915/i915_cmd_parser.o
CC drivers/gpu/drm/i915/i915_deps.o
CC [M] drivers/gpu/drm/xe/xe_sriov_vf.o
CC drivers/gpu/drm/i915/i915_gem.o
CC [M] drivers/gpu/drm/xe/display/ext/i915_irq.o
CC [M] drivers/gpu/drm/xe/display/ext/i915_utils.o
CC drivers/gpu/drm/i915/i915_gem_evict.o
CC [M] drivers/gpu/drm/xe/display/intel_bo.o
CC [M] drivers/gpu/drm/xe/display/intel_fb_bo.o
CC drivers/gpu/drm/i915/i915_gem_gtt.o
CC [M] drivers/gpu/drm/xe/display/intel_fbdev_fb.o
CC drivers/gpu/drm/i915/i915_gem_ww.o
CC [M] drivers/gpu/drm/xe/display/xe_display.o
CC drivers/gpu/drm/i915/i915_query.o
CC drivers/gpu/drm/i915/i915_request.o
CC [M] drivers/gpu/drm/xe/display/xe_display_misc.o
CC drivers/gpu/drm/i915/i915_scheduler.o
CC [M] drivers/gpu/drm/xe/display/xe_display_rps.o
CC [M] drivers/gpu/drm/xe/display/xe_display_wa.o
CC [M] drivers/gpu/drm/xe/display/xe_dsb_buffer.o
CC drivers/gpu/drm/i915/i915_trace_points.o
CC [M] drivers/gpu/drm/xe/display/xe_fb_pin.o
CC drivers/gpu/drm/i915/i915_ttm_buddy_manager.o
CC drivers/gpu/drm/i915/i915_vma.o
CC [M] drivers/gpu/drm/xe/display/xe_hdcp_gsc.o
CC [M] drivers/gpu/drm/xe/display/xe_plane_initial.o
CC [M] drivers/gpu/drm/xe/display/xe_tdf.o
CC drivers/gpu/drm/i915/i915_vma_resource.o
CC [M] drivers/gpu/drm/xe/i915-soc/intel_dram.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o
CC [M] drivers/gpu/drm/xe/i915-soc/intel_pch.o
CC [M] drivers/gpu/drm/xe/i915-soc/intel_rom.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.o
CC [M] drivers/gpu/drm/xe/i915-display/icl_dsi.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_alpm.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_atomic.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_audio.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_backlight.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_bios.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_bw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_cdclk.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_cmtg.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_color.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_connector.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_crtc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_rc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_crtc_state_dump.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_cursor.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_cx0_phy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_ddi.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_ddi_buf_trans.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_conversion.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc_fw.o
CC drivers/gpu/drm/i915/gt/intel_gsc.o
CC drivers/gpu/drm/i915/i915_hwmon.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_device.o
CC drivers/gpu/drm/i915/display/hsw_ips.o
CC drivers/gpu/drm/i915/display/i9xx_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_driver.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_irq.o
CC drivers/gpu/drm/i915/display/i9xx_display_sr.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_params.o
CC drivers/gpu/drm/i915/display/i9xx_wm.o
CC drivers/gpu/drm/i915/display/intel_alpm.o
CC drivers/gpu/drm/i915/display/intel_atomic.o
CC drivers/gpu/drm/i915/display/intel_atomic_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power_map.o
CC drivers/gpu/drm/i915/display/intel_audio.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power_well.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_trace.o
CC drivers/gpu/drm/i915/display/intel_bios.o
CC drivers/gpu/drm/i915/display/intel_bo.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_wa.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dmc.o
CC drivers/gpu/drm/i915/display/intel_bw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dmc_wl.o
CC drivers/gpu/drm/i915/display/intel_cdclk.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp.o
CC drivers/gpu/drm/i915/display/intel_cmtg.o
CC drivers/gpu/drm/i915/display/intel_color.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_aux.o
CC drivers/gpu/drm/i915/display/intel_combo_phy.o
CC drivers/gpu/drm/i915/display/intel_connector.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.o
CC drivers/gpu/drm/i915/display/intel_crtc.o
CC drivers/gpu/drm/i915/display/intel_crtc_state_dump.o
CC drivers/gpu/drm/i915/display/intel_cursor.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_hdcp.o
CC drivers/gpu/drm/i915/display/intel_display.o
CC drivers/gpu/drm/i915/display/intel_display_conversion.o
CC drivers/gpu/drm/i915/display/intel_display_driver.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_link_training.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_mst.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_test.o
CC drivers/gpu/drm/i915/display/intel_display_irq.o
CC drivers/gpu/drm/i915/display/intel_display_params.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpll.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpt_common.o
CC drivers/gpu/drm/i915/display/intel_display_power.o
CC drivers/gpu/drm/i915/display/intel_display_power_map.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_drrs.o
CC drivers/gpu/drm/i915/display/intel_display_power_well.o
CC drivers/gpu/drm/i915/display/intel_display_reset.o
CC drivers/gpu/drm/i915/display/intel_display_rps.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsb.o
CC drivers/gpu/drm/i915/display/intel_display_snapshot.o
CC drivers/gpu/drm/i915/display/intel_display_wa.o
CC drivers/gpu/drm/i915/display/intel_dmc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi_dcs_backlight.o
CC drivers/gpu/drm/i915/display/intel_dmc_wl.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi_vbt.o
CC drivers/gpu/drm/i915/display/intel_dpio_phy.o
CC drivers/gpu/drm/i915/display/intel_dpll.o
CC drivers/gpu/drm/i915/display/intel_dpll_mgr.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_encoder.o
CC drivers/gpu/drm/i915/display/intel_dpt.o
CC drivers/gpu/drm/i915/display/intel_dpt_common.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fb.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fbc.o
CC drivers/gpu/drm/i915/display/intel_drrs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fdi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
CC drivers/gpu/drm/i915/display/intel_dsb.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
CC drivers/gpu/drm/i915/display/intel_dsb_buffer.o
CC drivers/gpu/drm/i915/display/intel_fb.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_global_state.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_gmbus.o
CC drivers/gpu/drm/i915/display/intel_fb_bo.o
CC drivers/gpu/drm/i915/display/intel_fb_pin.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hdcp.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hdcp_gsc_message.o
CC drivers/gpu/drm/i915/display/intel_fbc.o
CC drivers/gpu/drm/i915/display/intel_fdi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hdmi.o
CC drivers/gpu/drm/i915/display/intel_fifo_underrun.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hotplug.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o
CC drivers/gpu/drm/i915/display/intel_frontbuffer.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hti.o
CC drivers/gpu/drm/i915/display/intel_global_state.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_link_bw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_lspcon.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_lock.o
CC drivers/gpu/drm/i915/display/intel_hdcp.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_setup.o
CC drivers/gpu/drm/i915/display/intel_hdcp_gsc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_verify.o
CC drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.o
CC drivers/gpu/drm/i915/display/intel_hotplug.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_panel.o
CC drivers/gpu/drm/i915/display/intel_hotplug_irq.o
CC drivers/gpu/drm/i915/display/intel_hti.o
CC drivers/gpu/drm/i915/display/intel_link_bw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pfit.o
CC drivers/gpu/drm/i915/display/intel_load_detect.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pmdemand.o
CC drivers/gpu/drm/i915/display/intel_lpe_audio.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pps.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_psr.o
CC drivers/gpu/drm/i915/display/intel_modeset_lock.o
CC drivers/gpu/drm/i915/display/intel_modeset_setup.o
CC drivers/gpu/drm/i915/display/intel_modeset_verify.o
CC drivers/gpu/drm/i915/display/intel_overlay.o
CC drivers/gpu/drm/i915/display/intel_pch_display.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_qp_tables.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_quirks.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_snps_hdmi_pll.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_snps_phy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_tc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vblank.o
CC drivers/gpu/drm/i915/display/intel_pch_refclk.o
CC drivers/gpu/drm/i915/display/intel_plane_initial.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vdsc.o
CC drivers/gpu/drm/i915/display/intel_pmdemand.o
CC drivers/gpu/drm/i915/display/intel_psr.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vga.o
CC drivers/gpu/drm/i915/display/intel_quirks.o
CC drivers/gpu/drm/i915/display/intel_sprite.o
CC drivers/gpu/drm/i915/display/intel_sprite_uapi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vrr.o
CC drivers/gpu/drm/i915/display/intel_tc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_wm.o
CC drivers/gpu/drm/i915/display/intel_vblank.o
CC [M] drivers/gpu/drm/xe/i915-display/skl_scaler.o
CC [M] drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/skl_watermark.o
CC drivers/gpu/drm/i915/display/intel_vga.o
CC drivers/gpu/drm/i915/display/intel_wm.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_acpi.o
CC drivers/gpu/drm/i915/display/skl_scaler.o
CC drivers/gpu/drm/i915/display/skl_universal_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_opregion.o
CC drivers/gpu/drm/i915/display/skl_watermark.o
CC drivers/gpu/drm/i915/display/intel_acpi.o
CC drivers/gpu/drm/i915/display/intel_opregion.o
CC [M] drivers/gpu/drm/xe/xe_debugfs.o
CC drivers/gpu/drm/i915/display/intel_display_debugfs.o
CC drivers/gpu/drm/i915/display/intel_display_debugfs_params.o
CC drivers/gpu/drm/i915/display/intel_pipe_crc.o
CC [M] drivers/gpu/drm/xe/xe_gt_debugfs.o
CC [M] drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.o
CC [M] drivers/gpu/drm/xe/xe_gt_stats.o
CC drivers/gpu/drm/i915/display/dvo_ch7017.o
CC [M] drivers/gpu/drm/xe/xe_guc_debugfs.o
CC drivers/gpu/drm/i915/display/dvo_ch7xxx.o
CC [M] drivers/gpu/drm/xe/xe_huc_debugfs.o
CC [M] drivers/gpu/drm/xe/xe_uc_debugfs.o
CC drivers/gpu/drm/i915/display/dvo_ivch.o
CC drivers/gpu/drm/i915/display/dvo_ns2501.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_debugfs.o
CC drivers/gpu/drm/i915/display/dvo_sil164.o
CC drivers/gpu/drm/i915/display/dvo_tfp410.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_debugfs_params.o
CC drivers/gpu/drm/i915/display/g4x_dp.o
CC drivers/gpu/drm/i915/display/g4x_hdmi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o
CC drivers/gpu/drm/i915/display/icl_dsi.o
CC drivers/gpu/drm/i915/display/intel_backlight.o
CC drivers/gpu/drm/i915/display/intel_crt.o
CC drivers/gpu/drm/i915/display/intel_cx0_phy.o
CC drivers/gpu/drm/i915/display/intel_ddi.o
CC drivers/gpu/drm/i915/display/intel_ddi_buf_trans.o
CC drivers/gpu/drm/i915/display/intel_display_device.o
CC drivers/gpu/drm/i915/display/intel_display_trace.o
CC drivers/gpu/drm/i915/display/intel_dkl_phy.o
CC drivers/gpu/drm/i915/display/intel_dp.o
CC drivers/gpu/drm/i915/display/intel_dp_aux.o
CC drivers/gpu/drm/i915/display/intel_dp_aux_backlight.o
CC drivers/gpu/drm/i915/display/intel_dp_hdcp.o
CC drivers/gpu/drm/i915/display/intel_dp_link_training.o
CC drivers/gpu/drm/i915/display/intel_dp_mst.o
CC drivers/gpu/drm/i915/display/intel_dp_test.o
CC drivers/gpu/drm/i915/display/intel_dsi.o
CC drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.o
CC drivers/gpu/drm/i915/display/intel_dsi_vbt.o
CC drivers/gpu/drm/i915/display/intel_dvo.o
CC drivers/gpu/drm/i915/display/intel_encoder.o
CC drivers/gpu/drm/i915/display/intel_gmbus.o
CC drivers/gpu/drm/i915/display/intel_hdmi.o
CC drivers/gpu/drm/i915/display/intel_lspcon.o
CC drivers/gpu/drm/i915/display/intel_lvds.o
CC drivers/gpu/drm/i915/display/intel_panel.o
CC drivers/gpu/drm/i915/display/intel_pfit.o
CC drivers/gpu/drm/i915/display/intel_pps.o
CC drivers/gpu/drm/i915/display/intel_qp_tables.o
CC drivers/gpu/drm/i915/display/intel_sdvo.o
CC drivers/gpu/drm/i915/display/intel_snps_hdmi_pll.o
CC drivers/gpu/drm/i915/display/intel_snps_phy.o
CC drivers/gpu/drm/i915/display/intel_tv.o
CC drivers/gpu/drm/i915/display/intel_vdsc.o
CC drivers/gpu/drm/i915/display/intel_vrr.o
CC drivers/gpu/drm/i915/display/vlv_dsi.o
CC drivers/gpu/drm/i915/display/vlv_dsi_pll.o
CC drivers/gpu/drm/i915/i915_perf.o
CC drivers/gpu/drm/i915/pxp/intel_pxp.o
CC drivers/gpu/drm/i915/pxp/intel_pxp_huc.o
CC drivers/gpu/drm/i915/pxp/intel_pxp_tee.o
CC drivers/gpu/drm/i915/i915_gpu_error.o
CC drivers/gpu/drm/i915/i915_vgpu.o
LD [M] drivers/gpu/drm/xe/xe.o
AR drivers/gpu/drm/i915/built-in.a
AR drivers/gpu/drm/built-in.a
AR drivers/gpu/built-in.a
AR drivers/built-in.a
AR built-in.a
AR vmlinux.a
LD vmlinux.o
OBJCOPY modules.builtin.modinfo
GEN modules.builtin
MODPOST Module.symvers
CC .vmlinux.export.o
CC [M] fs/efivarfs/efivarfs.mod.o
CC [M] .module-common.o
CC [M] drivers/gpu/drm/drm_exec.mod.o
CC [M] drivers/gpu/drm/drm_gpuvm.mod.o
CC [M] drivers/gpu/drm/drm_suballoc_helper.mod.o
CC [M] drivers/gpu/drm/drm_ttm_helper.mod.o
CC [M] drivers/gpu/drm/scheduler/gpu-sched.mod.o
CC [M] drivers/gpu/drm/xe/xe.mod.o
CC [M] drivers/thermal/intel/x86_pkg_temp_thermal.mod.o
CC [M] net/netfilter/nf_log_syslog.mod.o
CC [M] net/netfilter/xt_mark.mod.o
CC [M] net/netfilter/xt_nat.mod.o
CC [M] net/netfilter/xt_LOG.mod.o
CC [M] net/netfilter/xt_MASQUERADE.mod.o
CC [M] net/netfilter/xt_addrtype.mod.o
CC [M] net/ipv4/netfilter/iptable_nat.mod.o
LD [M] fs/efivarfs/efivarfs.ko
LD [M] drivers/gpu/drm/drm_exec.ko
LD [M] drivers/gpu/drm/drm_gpuvm.ko
LD [M] drivers/gpu/drm/drm_suballoc_helper.ko
LD [M] drivers/thermal/intel/x86_pkg_temp_thermal.ko
LD [M] net/netfilter/xt_LOG.ko
LD [M] drivers/gpu/drm/drm_ttm_helper.ko
LD [M] net/ipv4/netfilter/iptable_nat.ko
LD [M] drivers/gpu/drm/scheduler/gpu-sched.ko
LD [M] net/netfilter/nf_log_syslog.ko
LD [M] net/netfilter/xt_addrtype.ko
LD [M] drivers/gpu/drm/xe/xe.ko
LD [M] net/netfilter/xt_mark.ko
LD [M] net/netfilter/xt_nat.ko
LD [M] net/netfilter/xt_MASQUERADE.ko
UPD include/generated/utsversion.h
CC init/version-timestamp.o
KSYMS .tmp_vmlinux0.kallsyms.S
AS .tmp_vmlinux0.kallsyms.o
LD .tmp_vmlinux1
NM .tmp_vmlinux1.syms
KSYMS .tmp_vmlinux1.kallsyms.S
AS .tmp_vmlinux1.kallsyms.o
LD .tmp_vmlinux2
NM .tmp_vmlinux2.syms
KSYMS .tmp_vmlinux2.kallsyms.S
AS .tmp_vmlinux2.kallsyms.o
LD vmlinux
NM System.map
SORTTAB vmlinux
RELOCS arch/x86/boot/compressed/vmlinux.relocs
RSTRIP vmlinux
CC arch/x86/boot/a20.o
AS arch/x86/boot/bioscall.o
CC arch/x86/boot/cmdline.o
AS arch/x86/boot/copy.o
HOSTCC arch/x86/boot/mkcpustr
CC arch/x86/boot/cpuflags.o
CC arch/x86/boot/cpucheck.o
CC arch/x86/boot/early_serial_console.o
CC arch/x86/boot/edd.o
CC arch/x86/boot/main.o
CC arch/x86/boot/memory.o
CC arch/x86/boot/pm.o
AS arch/x86/boot/pmjump.o
CC arch/x86/boot/printf.o
CC arch/x86/boot/regs.o
CC arch/x86/boot/string.o
CC arch/x86/boot/tty.o
CC arch/x86/boot/video.o
CC arch/x86/boot/video-mode.o
CC arch/x86/boot/version.o
CC arch/x86/boot/video-vga.o
CC arch/x86/boot/video-vesa.o
CC arch/x86/boot/video-bios.o
HOSTCC arch/x86/boot/tools/build
LDS arch/x86/boot/compressed/vmlinux.lds
AS arch/x86/boot/compressed/kernel_info.o
AS arch/x86/boot/compressed/head_32.o
VOFFSET arch/x86/boot/compressed/../voffset.h
CC arch/x86/boot/compressed/string.o
CPUSTR arch/x86/boot/cpustr.h
CC arch/x86/boot/compressed/cmdline.o
CC arch/x86/boot/compressed/error.o
OBJCOPY arch/x86/boot/compressed/vmlinux.bin
HOSTCC arch/x86/boot/compressed/mkpiggy
CC arch/x86/boot/cpu.o
CC arch/x86/boot/compressed/cpuflags.o
CC arch/x86/boot/compressed/early_serial_console.o
CC arch/x86/boot/compressed/kaslr.o
CC arch/x86/boot/compressed/acpi.o
CC arch/x86/boot/compressed/efi.o
GZIP arch/x86/boot/compressed/vmlinux.bin.gz
CC arch/x86/boot/compressed/misc.o
MKPIGGY arch/x86/boot/compressed/piggy.S
AS arch/x86/boot/compressed/piggy.o
LD arch/x86/boot/compressed/vmlinux
ZOFFSET arch/x86/boot/zoffset.h
OBJCOPY arch/x86/boot/vmlinux.bin
AS arch/x86/boot/header.o
LD arch/x86/boot/setup.elf
OBJCOPY arch/x86/boot/setup.bin
BUILD arch/x86/boot/bzImage
Kernel: arch/x86/boot/bzImage is ready (#1)
run-parts: executing /workspace/ci/hooks/20-kernel-doc
+ SRC_DIR=/workspace/kernel
+ cd /workspace/kernel
+ find drivers/gpu/drm/xe/ -name '*.[ch]' -not -path 'drivers/gpu/drm/xe/display/*'
+ xargs ./scripts/kernel-doc -Werror -none include/uapi/drm/xe_drm.h
All hooks done
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✗ CI.checksparse: warning for drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
` (7 preceding siblings ...)
2025-03-07 0:48 ` ✓ CI.Hooks: " Patchwork
@ 2025-03-07 0:50 ` Patchwork
2025-03-07 1:09 ` ✓ Xe.CI.BAT: success " Patchwork
2025-03-07 9:20 ` ✗ Xe.CI.Full: failure " Patchwork
10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-03-07 0:50 UTC (permalink / raw)
To: Tomasz Lis; +Cc: intel-xe
== Series Details ==
Series: drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
URL : https://patchwork.freedesktop.org/series/141439/
State : warning
== Summary ==
+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 9796125d0726448924abdb8c73077c7486e3dd3d
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_ddi.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1978:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1991:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1991:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_hdcp.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_pps.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file:
+drivers/gpu/drm/i915/gt/intel_reset.c:1571:12: warning: context imbalance in '_intel_gt_reset_lock' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_active.c:1063:16: warning: context imbalance in '__i915_active_fence_set' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: expected struct list_head const *list
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: got struct list_head [noderef] __rcu *pos
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/i915/i915_irq.c:490:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:490:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:498:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:498:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:503:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:503:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:503:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:540:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:540:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:548:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:548:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:553:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:553:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:553:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:596:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:596:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:599:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:599:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:603:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:603:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:610:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:610:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:610:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:610:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/intel_uncore.c:1925:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1926:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1927:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1928:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1993:1: warning: context imbalance in 'gen6_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1994:1: warning: context imbalance in 'gen6_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1995:1: warning: context imbalance in 'gen6_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2015:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2016:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2017:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_wakeref.c:145:19: warning: context imbalance in 'wakeref_auto_timeout' - unexpected unlock
+drivers/gpu/drm/ttm/ttm_bo.c:1194:31: warning: symbol 'ttm_swap_ops' was not declared. Should it be static?
+drivers/gpu/drm/ttm/ttm_bo_util.c:324:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:324:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:324:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:327:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:327:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:327:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:330:38: expected void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:330:38: got void [noderef] __iomem *
+drivers/gpu/drm/ttm/ttm_bo_util.c:330:38: warning: incorrect type in assignment (different address spaces)
+drivers/gpu/drm/ttm/ttm_bo_util.c:436:28: expected void volatile [noderef] __iomem *addr
+drivers/gpu/drm/ttm/ttm_bo_util.c:436:28: got void *virtual
+drivers/gpu/drm/ttm/ttm_bo_util.c:436:28: warning: incorrect type in argument 1 (different address spaces)
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✓ Xe.CI.BAT: success for drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
` (8 preceding siblings ...)
2025-03-07 0:50 ` ✗ CI.checksparse: warning " Patchwork
@ 2025-03-07 1:09 ` Patchwork
2025-03-07 9:20 ` ✗ Xe.CI.Full: failure " Patchwork
10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-03-07 1:09 UTC (permalink / raw)
To: Tomasz Lis; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 4676 bytes --]
== Series Details ==
Series: drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
URL : https://patchwork.freedesktop.org/series/141439/
State : success
== Summary ==
CI Bug Log - changes from xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3_BAT -> xe-pw-141439v5_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (10 -> 9)
------------------------------
Missing (1): bat-adlp-vm
Known issues
------------
Here are the changes found in xe-pw-141439v5_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@xe_evict@evict-beng-small-cm:
- bat-adlp-vf: NOTRUN -> [SKIP][1] ([Intel XE#261] / [Intel XE#688]) +9 other tests skip
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/bat-adlp-vf/igt@xe_evict@evict-beng-small-cm.html
* igt@xe_exec_fault_mode@twice-rebind:
- bat-adlp-vf: NOTRUN -> [SKIP][2] ([Intel XE#288]) +32 other tests skip
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/bat-adlp-vf/igt@xe_exec_fault_mode@twice-rebind.html
* igt@xe_live_ktest@xe_bo:
- bat-adlp-vf: NOTRUN -> [SKIP][3] ([Intel XE#2229] / [Intel XE#455]) +2 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/bat-adlp-vf/igt@xe_live_ktest@xe_bo.html
* igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit:
- bat-adlp-vf: NOTRUN -> [SKIP][4] ([Intel XE#2229])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/bat-adlp-vf/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html
* igt@xe_mmap@vram:
- bat-adlp-vf: NOTRUN -> [SKIP][5] ([Intel XE#1008])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/bat-adlp-vf/igt@xe_mmap@vram.html
* igt@xe_pat@pat-index-xe2:
- bat-adlp-vf: NOTRUN -> [SKIP][6] ([Intel XE#977])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/bat-adlp-vf/igt@xe_pat@pat-index-xe2.html
* igt@xe_pat@pat-index-xehpc:
- bat-adlp-vf: NOTRUN -> [SKIP][7] ([Intel XE#2838] / [Intel XE#979])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/bat-adlp-vf/igt@xe_pat@pat-index-xehpc.html
* igt@xe_pat@pat-index-xelpg:
- bat-adlp-vf: NOTRUN -> [SKIP][8] ([Intel XE#979])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/bat-adlp-vf/igt@xe_pat@pat-index-xelpg.html
* igt@xe_pm_residency@gt-c6-on-idle:
- bat-adlp-vf: NOTRUN -> [SKIP][9] ([Intel XE#2468])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/bat-adlp-vf/igt@xe_pm_residency@gt-c6-on-idle.html
* igt@xe_sriov_flr@flr-vf1-clear:
- bat-adlp-vf: NOTRUN -> [SKIP][10] ([Intel XE#3342])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/bat-adlp-vf/igt@xe_sriov_flr@flr-vf1-clear.html
#### Possible fixes ####
* igt@xe_intel_bb@intel-bb-blit-y:
- bat-adlp-vf: [ABORT][11] ([Intel XE#4491]) -> [PASS][12]
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/bat-adlp-vf/igt@xe_intel_bb@intel-bb-blit-y.html
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/bat-adlp-vf/igt@xe_intel_bb@intel-bb-blit-y.html
[Intel XE#1008]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1008
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#2468]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2468
[Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
[Intel XE#2838]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2838
[Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
[Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
[Intel XE#4491]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4491
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#977]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/977
[Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
Build changes
-------------
* IGT: IGT_8263 -> IGT_8264
* Linux: xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3 -> xe-pw-141439v5
IGT_8263: 25f60274b3dd14d35a7f32558b489ab7a02b6223 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8264: 8264
xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3: 6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3
xe-pw-141439v5: 141439v5
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/index.html
[-- Attachment #2: Type: text/html, Size: 5631 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
* ✗ Xe.CI.Full: failure for drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
` (9 preceding siblings ...)
2025-03-07 1:09 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2025-03-07 9:20 ` Patchwork
10 siblings, 0 replies; 23+ messages in thread
From: Patchwork @ 2025-03-07 9:20 UTC (permalink / raw)
To: Tomasz Lis; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 117942 bytes --]
== Series Details ==
Series: drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5)
URL : https://patchwork.freedesktop.org/series/141439/
State : failure
== Summary ==
CI Bug Log - changes from xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3_full -> xe-pw-141439v5_full
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-141439v5_full absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-141439v5_full, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (4 -> 4)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-141439v5_full:
### IGT changes ###
#### Possible regressions ####
* igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind:
- shard-dg2-set2: [PASS][1] -> [DMESG-WARN][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind.html
- shard-lnl: [PASS][3] -> [DMESG-WARN][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-7/igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind.html
- shard-adlp: [PASS][5] -> [DMESG-WARN][6]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-1/igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_fault_injection@vm-create-fail-xe_exec_queue_create_bind.html
New tests
---------
New tests have been introduced between xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3_full and xe-pw-141439v5_full:
### New IGT tests (1) ###
* igt@kms_plane_scaling:
- Statuses :
- Exec time: [None] s
Known issues
------------
Here are the changes found in xe-pw-141439v5_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@core_hotunplug@hotreplug-lateclose:
- shard-adlp: NOTRUN -> [ABORT][7] ([Intel XE#3914]) +1 other test abort
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@core_hotunplug@hotreplug-lateclose.html
* igt@core_hotunplug@hotunplug-rescan:
- shard-lnl: NOTRUN -> [ABORT][8] ([Intel XE#3914]) +1 other test abort
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@core_hotunplug@hotunplug-rescan.html
* igt@intel_hwmon@hwmon-read:
- shard-lnl: NOTRUN -> [SKIP][9] ([Intel XE#1125])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@intel_hwmon@hwmon-read.html
- shard-adlp: NOTRUN -> [SKIP][10] ([Intel XE#1125])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@intel_hwmon@hwmon-read.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#2233])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
- shard-dg2-set2: NOTRUN -> [SKIP][12] ([Intel XE#623])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
- shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#1466])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-linear:
- shard-lnl: [PASS][14] -> [FAIL][15] ([Intel XE#911]) +3 other tests fail
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-7/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-linear.html
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-a-edp-1-linear.html
* igt@kms_async_flips@crc-atomic@pipe-d-hdmi-a-1:
- shard-adlp: [PASS][16] -> [FAIL][17] ([Intel XE#3884]) +1 other test fail
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-8/igt@kms_async_flips@crc-atomic@pipe-d-hdmi-a-1.html
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@kms_async_flips@crc-atomic@pipe-d-hdmi-a-1.html
* igt@kms_async_flips@invalid-async-flip:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#873])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_async_flips@invalid-async-flip.html
* igt@kms_async_flips@invalid-async-flip-atomic@pipe-c-hdmi-a-1:
- shard-adlp: [PASS][19] -> [DMESG-WARN][20] ([Intel XE#4330]) +1 other test dmesg-warn
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-4/igt@kms_async_flips@invalid-async-flip-atomic@pipe-c-hdmi-a-1.html
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@kms_async_flips@invalid-async-flip-atomic@pipe-c-hdmi-a-1.html
* igt@kms_big_fb@4-tiled-16bpp-rotate-270:
- shard-lnl: NOTRUN -> [SKIP][21] ([Intel XE#1407]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@kms_big_fb@4-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@4-tiled-32bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#2327]) +3 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-7/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html
* igt@kms_big_fb@4-tiled-8bpp-rotate-270:
- shard-dg2-set2: NOTRUN -> [SKIP][23] ([Intel XE#316]) +7 other tests skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@kms_big_fb@4-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@linear-32bpp-rotate-90:
- shard-adlp: NOTRUN -> [SKIP][24] ([Intel XE#316])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@kms_big_fb@linear-32bpp-rotate-90.html
* igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-adlp: [PASS][25] -> [DMESG-FAIL][26] ([Intel XE#4330]) +6 other tests dmesg-fail
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-1/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-3/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_big_fb@y-tiled-addfb-size-overflow:
- shard-dg2-set2: NOTRUN -> [SKIP][27] ([Intel XE#610])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@kms_big_fb@y-tiled-addfb-size-overflow.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
- shard-adlp: NOTRUN -> [DMESG-FAIL][28] ([Intel XE#4330]) +2 other tests dmesg-fail
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html
* igt@kms_big_fb@yf-tiled-16bpp-rotate-270:
- shard-adlp: NOTRUN -> [SKIP][29] ([Intel XE#1124]) +9 other tests skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html
- shard-dg2-set2: NOTRUN -> [SKIP][30] ([Intel XE#1124]) +8 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html
- shard-lnl: NOTRUN -> [SKIP][31] ([Intel XE#1124]) +7 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-8/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#1124]) +17 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180.html
* igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p:
- shard-bmg: [PASS][33] -> [SKIP][34] ([Intel XE#2314] / [Intel XE#2894])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-7/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_bw@connected-linear-tiling-2-displays-2160x1440p.html
* igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p:
- shard-dg2-set2: [PASS][35] -> [SKIP][36] ([Intel XE#2191])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-432/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_bw@connected-linear-tiling-2-displays-2560x1440p.html
* igt@kms_bw@connected-linear-tiling-3-displays-2160x1440p:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#2314] / [Intel XE#2894])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_bw@connected-linear-tiling-3-displays-2160x1440p.html
* igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p:
- shard-dg2-set2: NOTRUN -> [SKIP][38] ([Intel XE#2191])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@kms_bw@connected-linear-tiling-4-displays-1920x1080p.html
* igt@kms_bw@linear-tiling-1-displays-1920x1080p:
- shard-dg2-set2: NOTRUN -> [SKIP][39] ([Intel XE#367]) +2 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_bw@linear-tiling-1-displays-1920x1080p.html
- shard-adlp: NOTRUN -> [SKIP][40] ([Intel XE#367])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@kms_bw@linear-tiling-1-displays-1920x1080p.html
* igt@kms_bw@linear-tiling-1-displays-2560x1440p:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#367]) +4 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_bw@linear-tiling-1-displays-2560x1440p.html
* igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4:
- shard-dg2-set2: NOTRUN -> [SKIP][42] ([Intel XE#455] / [Intel XE#787]) +36 other tests skip
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@kms_ccs@bad-aux-stride-y-tiled-gen12-rc-ccs-cc@pipe-d-dp-4.html
* igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs:
- shard-dg2-set2: NOTRUN -> [SKIP][43] ([Intel XE#2907]) +2 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html
* igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][44] ([Intel XE#2669]) +3 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs@pipe-a-edp-1.html
* igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#2652] / [Intel XE#787]) +17 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2.html
* igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-b-dp-2:
- shard-dg2-set2: NOTRUN -> [SKIP][46] ([Intel XE#787]) +163 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@kms_ccs@ccs-on-another-bo-y-tiled-gen12-rc-ccs-cc@pipe-b-dp-2.html
* igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs:
- shard-adlp: NOTRUN -> [SKIP][47] ([Intel XE#2907]) +1 other test skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@kms_ccs@crc-primary-basic-4-tiled-lnl-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
- shard-adlp: NOTRUN -> [SKIP][48] ([Intel XE#3442])
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-a-edp-1:
- shard-lnl: NOTRUN -> [SKIP][49] ([Intel XE#2669] / [Intel XE#3433]) +3 other tests skip
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs@pipe-a-edp-1.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][50] ([Intel XE#3432]) +1 other test skip
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-7/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs.html
* igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs:
- shard-lnl: NOTRUN -> [SKIP][51] ([Intel XE#3432])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs:
- shard-lnl: NOTRUN -> [SKIP][52] ([Intel XE#2887]) +8 other tests skip
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-1:
- shard-adlp: NOTRUN -> [SKIP][53] ([Intel XE#787]) +29 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-1.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
- shard-bmg: NOTRUN -> [SKIP][54] ([Intel XE#2887]) +16 other tests skip
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html
- shard-adlp: NOTRUN -> [SKIP][55] ([Intel XE#455] / [Intel XE#787]) +19 other tests skip
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_chamelium_color@ctm-green-to-red:
- shard-bmg: NOTRUN -> [SKIP][56] ([Intel XE#2325]) +3 other tests skip
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_chamelium_color@ctm-green-to-red.html
* igt@kms_chamelium_color@ctm-limited-range:
- shard-dg2-set2: NOTRUN -> [SKIP][57] ([Intel XE#306]) +2 other tests skip
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@kms_chamelium_color@ctm-limited-range.html
- shard-lnl: NOTRUN -> [SKIP][58] ([Intel XE#306]) +1 other test skip
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-8/igt@kms_chamelium_color@ctm-limited-range.html
- shard-adlp: NOTRUN -> [SKIP][59] ([Intel XE#306]) +1 other test skip
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@kms_chamelium_color@ctm-limited-range.html
* igt@kms_chamelium_edid@dp-edid-resolution-list:
- shard-adlp: NOTRUN -> [SKIP][60] ([Intel XE#373]) +10 other tests skip
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_chamelium_edid@dp-edid-resolution-list.html
- shard-bmg: NOTRUN -> [SKIP][61] ([Intel XE#2252]) +17 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_chamelium_edid@dp-edid-resolution-list.html
* igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode:
- shard-dg2-set2: NOTRUN -> [SKIP][62] ([Intel XE#373]) +12 other tests skip
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode.html
- shard-lnl: NOTRUN -> [SKIP][63] ([Intel XE#373]) +10 other tests skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@kms_chamelium_hpd@vga-hpd-with-enabled-mode.html
* igt@kms_content_protection@atomic:
- shard-bmg: NOTRUN -> [FAIL][64] ([Intel XE#1178]) +1 other test fail
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_content_protection@atomic.html
* igt@kms_content_protection@atomic-dpms@pipe-a-dp-2:
- shard-dg2-set2: NOTRUN -> [FAIL][65] ([Intel XE#1178]) +3 other tests fail
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@kms_content_protection@atomic-dpms@pipe-a-dp-2.html
* igt@kms_content_protection@dp-mst-lic-type-1:
- shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#2390])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-7/igt@kms_content_protection@dp-mst-lic-type-1.html
* igt@kms_content_protection@lic-type-1:
- shard-lnl: NOTRUN -> [SKIP][67] ([Intel XE#3278])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@kms_content_protection@lic-type-1.html
* igt@kms_content_protection@mei-interface:
- shard-bmg: NOTRUN -> [SKIP][68] ([Intel XE#2341]) +1 other test skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_content_protection@mei-interface.html
- shard-lnl: NOTRUN -> [SKIP][69] ([Intel XE#1468])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@kms_content_protection@mei-interface.html
* igt@kms_cursor_crc@cursor-offscreen-512x512:
- shard-lnl: NOTRUN -> [SKIP][70] ([Intel XE#2321]) +1 other test skip
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@kms_cursor_crc@cursor-offscreen-512x512.html
- shard-adlp: NOTRUN -> [SKIP][71] ([Intel XE#308]) +1 other test skip
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@kms_cursor_crc@cursor-offscreen-512x512.html
* igt@kms_cursor_crc@cursor-onscreen-32x32:
- shard-bmg: NOTRUN -> [SKIP][72] ([Intel XE#2320]) +5 other tests skip
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_cursor_crc@cursor-onscreen-32x32.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-dg2-set2: NOTRUN -> [SKIP][73] ([Intel XE#308]) +2 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-rapid-movement-256x85:
- shard-lnl: NOTRUN -> [SKIP][74] ([Intel XE#1424]) +2 other tests skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@kms_cursor_crc@cursor-rapid-movement-256x85.html
* igt@kms_cursor_crc@cursor-sliding-512x512:
- shard-bmg: NOTRUN -> [SKIP][75] ([Intel XE#2321]) +3 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-7/igt@kms_cursor_crc@cursor-sliding-512x512.html
* igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
- shard-dg2-set2: NOTRUN -> [SKIP][76] ([Intel XE#309]) +1 other test skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html
- shard-lnl: NOTRUN -> [SKIP][77] ([Intel XE#309]) +5 other tests skip
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size:
- shard-adlp: NOTRUN -> [SKIP][78] ([Intel XE#323]) +1 other test skip
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
- shard-bmg: NOTRUN -> [SKIP][79] ([Intel XE#2286]) +1 other test skip
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-varying-size.html
* igt@kms_cursor_legacy@cursora-vs-flipb-atomic:
- shard-bmg: [PASS][80] -> [SKIP][81] ([Intel XE#2291])
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-7/igt@kms_cursor_legacy@cursora-vs-flipb-atomic.html
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_cursor_legacy@cursora-vs-flipb-atomic.html
* igt@kms_cursor_legacy@cursora-vs-flipb-varying-size:
- shard-dg2-set2: [PASS][82] -> [SKIP][83] ([Intel XE#309]) +1 other test skip
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-434/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-atomic:
- shard-bmg: NOTRUN -> [SKIP][84] ([Intel XE#2291]) +1 other test skip
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic.html
* igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size:
- shard-adlp: NOTRUN -> [SKIP][85] ([Intel XE#309]) +5 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic-transitions-varying-size.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
- shard-dg2-set2: NOTRUN -> [SKIP][86] ([Intel XE#323]) +1 other test skip
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
- shard-lnl: NOTRUN -> [SKIP][87] ([Intel XE#323]) +1 other test skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3:
- shard-bmg: NOTRUN -> [SKIP][88] ([Intel XE#1340])
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3.html
* igt@kms_dsc@dsc-with-formats:
- shard-lnl: NOTRUN -> [SKIP][89] ([Intel XE#2244]) +1 other test skip
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@kms_dsc@dsc-with-formats.html
* igt@kms_dsc@dsc-with-output-formats:
- shard-bmg: NOTRUN -> [SKIP][90] ([Intel XE#2244]) +2 other tests skip
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_dsc@dsc-with-output-formats.html
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests:
- shard-adlp: NOTRUN -> [SKIP][91] ([Intel XE#4422])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html
- shard-bmg: NOTRUN -> [SKIP][92] ([Intel XE#4422])
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html
- shard-dg2-set2: NOTRUN -> [SKIP][93] ([Intel XE#4422])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html
- shard-lnl: NOTRUN -> [SKIP][94] ([Intel XE#4422])
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html
* igt@kms_feature_discovery@display-3x:
- shard-lnl: NOTRUN -> [SKIP][95] ([Intel XE#703])
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@kms_feature_discovery@display-3x.html
- shard-adlp: NOTRUN -> [SKIP][96] ([Intel XE#703])
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_feature_discovery@display-3x.html
- shard-bmg: NOTRUN -> [SKIP][97] ([Intel XE#2373])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_feature_discovery@display-3x.html
- shard-dg2-set2: NOTRUN -> [SKIP][98] ([Intel XE#703])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@kms_feature_discovery@display-3x.html
* igt@kms_feature_discovery@dp-mst:
- shard-adlp: NOTRUN -> [SKIP][99] ([Intel XE#1137])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@kms_feature_discovery@dp-mst.html
- shard-dg2-set2: NOTRUN -> [SKIP][100] ([Intel XE#1137])
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@kms_feature_discovery@dp-mst.html
- shard-lnl: NOTRUN -> [SKIP][101] ([Intel XE#1137])
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-8/igt@kms_feature_discovery@dp-mst.html
* igt@kms_feature_discovery@psr1:
- shard-adlp: NOTRUN -> [SKIP][102] ([Intel XE#1135])
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@kms_feature_discovery@psr1.html
- shard-bmg: NOTRUN -> [SKIP][103] ([Intel XE#2374])
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_feature_discovery@psr1.html
- shard-dg2-set2: NOTRUN -> [SKIP][104] ([Intel XE#1135])
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_feature_discovery@psr1.html
* igt@kms_flip@2x-dpms-vs-vblank-race-interruptible:
- shard-dg2-set2: [PASS][105] -> [SKIP][106] ([Intel XE#310]) +5 other tests skip
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-463/igt@kms_flip@2x-dpms-vs-vblank-race-interruptible.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_flip@2x-dpms-vs-vblank-race-interruptible.html
* igt@kms_flip@2x-flip-vs-absolute-wf_vblank:
- shard-dg2-set2: NOTRUN -> [SKIP][107] ([Intel XE#310]) +1 other test skip
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_flip@2x-flip-vs-absolute-wf_vblank.html
* igt@kms_flip@2x-flip-vs-panning-vs-hang:
- shard-bmg: NOTRUN -> [SKIP][108] ([Intel XE#2316])
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_flip@2x-flip-vs-panning-vs-hang.html
* igt@kms_flip@2x-flip-vs-rmfb-interruptible:
- shard-lnl: NOTRUN -> [SKIP][109] ([Intel XE#1421]) +3 other tests skip
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@kms_flip@2x-flip-vs-rmfb-interruptible.html
* igt@kms_flip@2x-modeset-vs-vblank-race:
- shard-bmg: [PASS][110] -> [SKIP][111] ([Intel XE#2316]) +3 other tests skip
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-7/igt@kms_flip@2x-modeset-vs-vblank-race.html
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_flip@2x-modeset-vs-vblank-race.html
* igt@kms_flip@2x-nonexisting-fb-interruptible:
- shard-adlp: NOTRUN -> [SKIP][112] ([Intel XE#310]) +3 other tests skip
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@kms_flip@2x-nonexisting-fb-interruptible.html
* igt@kms_flip@dpms-off-confusion-interruptible@b-hdmi-a6:
- shard-dg2-set2: NOTRUN -> [INCOMPLETE][113] ([Intel XE#2049]) +1 other test incomplete
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@kms_flip@dpms-off-confusion-interruptible@b-hdmi-a6.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp4:
- shard-dg2-set2: [PASS][114] -> [FAIL][115] ([Intel XE#301]) +2 other tests fail
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-463/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp4.html
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp4.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
- shard-lnl: [PASS][116] -> [FAIL][117] ([Intel XE#301]) +3 other tests fail
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
* igt@kms_flip@flip-vs-expired-vblank@a-dp2:
- shard-bmg: NOTRUN -> [FAIL][118] ([Intel XE#3321]) +3 other tests fail
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_flip@flip-vs-expired-vblank@a-dp2.html
* igt@kms_flip@flip-vs-expired-vblank@a-edp1:
- shard-lnl: NOTRUN -> [FAIL][119] ([Intel XE#301]) +1 other test fail
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
* igt@kms_flip@flip-vs-expired-vblank@c-edp1:
- shard-lnl: NOTRUN -> [FAIL][120] ([Intel XE#301] / [Intel XE#3149]) +1 other test fail
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
* igt@kms_flip@flip-vs-suspend:
- shard-bmg: [PASS][121] -> [INCOMPLETE][122] ([Intel XE#2049] / [Intel XE#2597])
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-7/igt@kms_flip@flip-vs-suspend.html
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_flip@flip-vs-suspend.html
* igt@kms_flip@flip-vs-suspend@b-dp2:
- shard-bmg: [PASS][123] -> [INCOMPLETE][124] ([Intel XE#2049])
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-7/igt@kms_flip@flip-vs-suspend@b-dp2.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_flip@flip-vs-suspend@b-dp2.html
* igt@kms_flip@plain-flip-fb-recreate:
- shard-adlp: NOTRUN -> [FAIL][125] ([Intel XE#2882]) +1 other test fail
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_flip@plain-flip-fb-recreate.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][126] ([Intel XE#2293] / [Intel XE#2380]) +8 other tests skip
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode:
- shard-bmg: NOTRUN -> [SKIP][127] ([Intel XE#2293]) +8 other tests skip
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][128] ([Intel XE#1401]) +5 other tests skip
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-default-mode.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling:
- shard-dg2-set2: NOTRUN -> [SKIP][129] ([Intel XE#455]) +22 other tests skip
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
- shard-lnl: NOTRUN -> [SKIP][130] ([Intel XE#1401] / [Intel XE#1745]) +5 other tests skip
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-8/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
- shard-adlp: NOTRUN -> [SKIP][131] ([Intel XE#455]) +20 other tests skip
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen:
- shard-adlp: NOTRUN -> [SKIP][132] ([Intel XE#651]) +8 other tests skip
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary:
- shard-dg2-set2: NOTRUN -> [SKIP][133] ([Intel XE#651]) +26 other tests skip
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary.html
- shard-lnl: NOTRUN -> [SKIP][134] ([Intel XE#651]) +8 other tests skip
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-3/igt@kms_frontbuffer_tracking@drrs-indfb-scaledprimary.html
* igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-render:
- shard-bmg: NOTRUN -> [SKIP][135] ([Intel XE#2311]) +26 other tests skip
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-rgb101010-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc:
- shard-lnl: NOTRUN -> [SKIP][136] ([Intel XE#656]) +29 other tests skip
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen:
- shard-bmg: NOTRUN -> [SKIP][137] ([Intel XE#4141]) +19 other tests skip
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
- shard-dg2-set2: [PASS][138] -> [SKIP][139] ([Intel XE#656]) +7 other tests skip
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-433/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-fullscreen.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc:
- shard-adlp: NOTRUN -> [SKIP][140] ([Intel XE#653]) +8 other tests skip
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc.html
- shard-bmg: NOTRUN -> [SKIP][141] ([Intel XE#2313]) +32 other tests skip
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move:
- shard-bmg: NOTRUN -> [SKIP][142] ([Intel XE#2312]) +16 other tests skip
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-blt:
- shard-dg2-set2: NOTRUN -> [SKIP][143] ([Intel XE#656]) +8 other tests skip
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-linear:
- shard-dg2-set2: NOTRUN -> [SKIP][144] ([Intel XE#653]) +20 other tests skip
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@kms_frontbuffer_tracking@fbcpsr-tiling-linear.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-blt:
- shard-adlp: NOTRUN -> [SKIP][145] ([Intel XE#656]) +29 other tests skip
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-blt.html
* igt@kms_getfb@getfb2-accept-ccs:
- shard-bmg: NOTRUN -> [SKIP][146] ([Intel XE#2340])
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_getfb@getfb2-accept-ccs.html
* igt@kms_hdr@static-toggle-dpms:
- shard-lnl: NOTRUN -> [SKIP][147] ([Intel XE#1503])
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@kms_hdr@static-toggle-dpms.html
* igt@kms_joiner@invalid-modeset-force-big-joiner:
- shard-dg2-set2: [PASS][148] -> [SKIP][149] ([Intel XE#4328])
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-433/igt@kms_joiner@invalid-modeset-force-big-joiner.html
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_joiner@invalid-modeset-force-big-joiner.html
* igt@kms_joiner@invalid-modeset-force-ultra-joiner:
- shard-bmg: NOTRUN -> [SKIP][150] ([Intel XE#2934])
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html
* igt@kms_joiner@invalid-modeset-ultra-joiner:
- shard-dg2-set2: NOTRUN -> [SKIP][151] ([Intel XE#2927])
[151]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@kms_joiner@invalid-modeset-ultra-joiner.html
- shard-lnl: NOTRUN -> [SKIP][152] ([Intel XE#2927])
[152]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@kms_joiner@invalid-modeset-ultra-joiner.html
- shard-adlp: NOTRUN -> [SKIP][153] ([Intel XE#2927])
[153]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@kms_joiner@invalid-modeset-ultra-joiner.html
- shard-bmg: NOTRUN -> [SKIP][154] ([Intel XE#2927])
[154]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_joiner@invalid-modeset-ultra-joiner.html
* igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
- shard-dg2-set2: NOTRUN -> [SKIP][155] ([Intel XE#356])
[155]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
* igt@kms_plane@plane-position-hole-dpms@pipe-b-plane-3:
- shard-lnl: NOTRUN -> [DMESG-WARN][156] ([Intel XE#324]) +10 other tests dmesg-warn
[156]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@kms_plane@plane-position-hole-dpms@pipe-b-plane-3.html
* igt@kms_plane_cursor@overlay@pipe-a-hdmi-a-1-size-64:
- shard-adlp: [PASS][157] -> [FAIL][158] ([Intel XE#1471]) +1 other test fail
[157]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-8/igt@kms_plane_cursor@overlay@pipe-a-hdmi-a-1-size-64.html
[158]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_plane_cursor@overlay@pipe-a-hdmi-a-1-size-64.html
* igt@kms_plane_cursor@viewport:
- shard-adlp: NOTRUN -> [FAIL][159] ([Intel XE#1471]) +1 other test fail
[159]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@kms_plane_cursor@viewport.html
- shard-dg2-set2: NOTRUN -> [FAIL][160] ([Intel XE#616]) +1 other test fail
[160]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_plane_cursor@viewport.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25:
- shard-adlp: NOTRUN -> [SKIP][161] ([Intel XE#2763] / [Intel XE#455]) +1 other test skip
[161]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_plane_scaling@planes-downscale-factor-0-25.html
* igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-b:
- shard-adlp: NOTRUN -> [SKIP][162] ([Intel XE#2763]) +2 other tests skip
[162]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_plane_scaling@planes-downscale-factor-0-25@pipe-b.html
* igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a:
- shard-lnl: NOTRUN -> [SKIP][163] ([Intel XE#2763]) +19 other tests skip
[163]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25@pipe-a.html
* igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b:
- shard-bmg: NOTRUN -> [SKIP][164] ([Intel XE#2763]) +14 other tests skip
[164]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-5@pipe-b.html
* igt@kms_pm_backlight@bad-brightness:
- shard-bmg: NOTRUN -> [SKIP][165] ([Intel XE#870]) +1 other test skip
[165]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_pm_backlight@bad-brightness.html
- shard-dg2-set2: NOTRUN -> [SKIP][166] ([Intel XE#870])
[166]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@kms_pm_backlight@bad-brightness.html
* igt@kms_pm_dc@dc3co-vpb-simulation:
- shard-bmg: NOTRUN -> [SKIP][167] ([Intel XE#2391])
[167]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_pm_dc@dc3co-vpb-simulation.html
- shard-adlp: NOTRUN -> [SKIP][168] ([Intel XE#1122])
[168]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@kms_pm_dc@dc3co-vpb-simulation.html
- shard-dg2-set2: NOTRUN -> [SKIP][169] ([Intel XE#1122])
[169]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@kms_pm_dc@dc3co-vpb-simulation.html
- shard-lnl: NOTRUN -> [SKIP][170] ([Intel XE#736])
[170]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-3/igt@kms_pm_dc@dc3co-vpb-simulation.html
* igt@kms_pm_dc@dc5-psr:
- shard-bmg: NOTRUN -> [SKIP][171] ([Intel XE#2392])
[171]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-7/igt@kms_pm_dc@dc5-psr.html
* igt@kms_pm_dc@dc6-dpms:
- shard-dg2-set2: NOTRUN -> [SKIP][172] ([Intel XE#908]) +1 other test skip
[172]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_pm_rpm@dpms-mode-unset-lpsp:
- shard-bmg: NOTRUN -> [SKIP][173] ([Intel XE#1439] / [Intel XE#836])
[173]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html
* igt@kms_psr2_sf@pr-cursor-plane-update-sf:
- shard-dg2-set2: NOTRUN -> [SKIP][174] ([Intel XE#1489]) +8 other tests skip
[174]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_psr2_sf@pr-cursor-plane-update-sf.html
- shard-lnl: NOTRUN -> [SKIP][175] ([Intel XE#2893]) +1 other test skip
[175]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-1/igt@kms_psr2_sf@pr-cursor-plane-update-sf.html
* igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf:
- shard-adlp: NOTRUN -> [SKIP][176] ([Intel XE#1489]) +5 other tests skip
[176]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html
- shard-bmg: NOTRUN -> [SKIP][177] ([Intel XE#1489]) +8 other tests skip
[177]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-fully-sf.html
* igt@kms_psr@fbc-psr2-cursor-plane-onoff:
- shard-dg2-set2: NOTRUN -> [SKIP][178] ([Intel XE#2850] / [Intel XE#929]) +18 other tests skip
[178]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_psr@fbc-psr2-cursor-plane-onoff.html
* igt@kms_psr@pr-no-drrs:
- shard-lnl: NOTRUN -> [SKIP][179] ([Intel XE#1406]) +5 other tests skip
[179]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@kms_psr@pr-no-drrs.html
* igt@kms_psr@psr-basic:
- shard-adlp: NOTRUN -> [SKIP][180] ([Intel XE#2850] / [Intel XE#929]) +8 other tests skip
[180]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@kms_psr@psr-basic.html
- shard-bmg: NOTRUN -> [SKIP][181] ([Intel XE#2234] / [Intel XE#2850]) +16 other tests skip
[181]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_psr@psr-basic.html
* igt@kms_psr@psr2-primary-render:
- shard-bmg: NOTRUN -> [SKIP][182] ([Intel XE#2234])
[182]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-7/igt@kms_psr@psr2-primary-render.html
* igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
- shard-bmg: NOTRUN -> [SKIP][183] ([Intel XE#2414])
[183]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
- shard-adlp: NOTRUN -> [SKIP][184] ([Intel XE#2939])
[184]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
- shard-dg2-set2: NOTRUN -> [SKIP][185] ([Intel XE#2939])
[185]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
* igt@kms_rotation_crc@multiplane-rotation-cropping-top:
- shard-adlp: NOTRUN -> [FAIL][186] ([Intel XE#1874])
[186]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@kms_rotation_crc@multiplane-rotation-cropping-top.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
- shard-lnl: NOTRUN -> [SKIP][187] ([Intel XE#1127])
[187]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-3/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
- shard-adlp: NOTRUN -> [SKIP][188] ([Intel XE#1127])
[188]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
- shard-bmg: NOTRUN -> [SKIP][189] ([Intel XE#2330])
[189]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
- shard-dg2-set2: NOTRUN -> [SKIP][190] ([Intel XE#1127])
[190]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
- shard-bmg: NOTRUN -> [SKIP][191] ([Intel XE#3414] / [Intel XE#3904])
[191]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html
* igt@kms_setmode@basic@pipe-b-edp-1:
- shard-lnl: [PASS][192] -> [FAIL][193] ([Intel XE#2883]) +2 other tests fail
[192]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-1/igt@kms_setmode@basic@pipe-b-edp-1.html
[193]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@kms_setmode@basic@pipe-b-edp-1.html
* igt@kms_setmode@clone-exclusive-crtc:
- shard-bmg: NOTRUN -> [SKIP][194] ([Intel XE#1435]) +1 other test skip
[194]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_setmode@clone-exclusive-crtc.html
- shard-lnl: NOTRUN -> [SKIP][195] ([Intel XE#1435])
[195]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-1/igt@kms_setmode@clone-exclusive-crtc.html
* igt@kms_setmode@invalid-clone-single-crtc:
- shard-dg2-set2: [PASS][196] -> [SKIP][197] ([Intel XE#455])
[196]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-433/igt@kms_setmode@invalid-clone-single-crtc.html
[197]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_setmode@invalid-clone-single-crtc.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-adlp: NOTRUN -> [SKIP][198] ([Intel XE#362])
[198]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
- shard-bmg: NOTRUN -> [SKIP][199] ([Intel XE#2426])
[199]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
- shard-dg2-set2: NOTRUN -> [SKIP][200] ([Intel XE#1500])
[200]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
- shard-lnl: NOTRUN -> [SKIP][201] ([Intel XE#362])
[201]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_universal_plane@cursor-fb-leak:
- shard-adlp: [PASS][202] -> [FAIL][203] ([Intel XE#771] / [Intel XE#899])
[202]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-4/igt@kms_universal_plane@cursor-fb-leak.html
[203]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_universal_plane@cursor-fb-leak.html
* igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1:
- shard-adlp: [PASS][204] -> [FAIL][205] ([Intel XE#899])
[204]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-4/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
[205]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_universal_plane@cursor-fb-leak@pipe-a-hdmi-a-1.html
* igt@kms_vrr@flip-suspend:
- shard-bmg: NOTRUN -> [SKIP][206] ([Intel XE#1499]) +3 other tests skip
[206]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_vrr@flip-suspend.html
* igt@kms_writeback@writeback-fb-id:
- shard-lnl: NOTRUN -> [SKIP][207] ([Intel XE#756]) +1 other test skip
[207]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@kms_writeback@writeback-fb-id.html
* igt@kms_writeback@writeback-invalid-parameters:
- shard-adlp: NOTRUN -> [SKIP][208] ([Intel XE#756]) +1 other test skip
[208]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@kms_writeback@writeback-invalid-parameters.html
- shard-bmg: NOTRUN -> [SKIP][209] ([Intel XE#756]) +1 other test skip
[209]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_writeback@writeback-invalid-parameters.html
- shard-dg2-set2: NOTRUN -> [SKIP][210] ([Intel XE#756])
[210]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@kms_writeback@writeback-invalid-parameters.html
* igt@xe_ccs@block-multicopy-inplace:
- shard-adlp: NOTRUN -> [SKIP][211] ([Intel XE#455] / [Intel XE#488])
[211]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_ccs@block-multicopy-inplace.html
* igt@xe_copy_basic@mem-copy-linear-0x3fff:
- shard-dg2-set2: NOTRUN -> [SKIP][212] ([Intel XE#1123])
[212]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@xe_copy_basic@mem-copy-linear-0x3fff.html
- shard-adlp: NOTRUN -> [SKIP][213] ([Intel XE#1123])
[213]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_copy_basic@mem-copy-linear-0x3fff.html
* igt@xe_create@create-big-vram:
- shard-adlp: NOTRUN -> [SKIP][214] ([Intel XE#1062])
[214]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@xe_create@create-big-vram.html
- shard-lnl: NOTRUN -> [SKIP][215] ([Intel XE#1062])
[215]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-1/igt@xe_create@create-big-vram.html
* igt@xe_eudebug@basic-close:
- shard-dg2-set2: NOTRUN -> [SKIP][216] ([Intel XE#2905]) +10 other tests skip
[216]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@xe_eudebug@basic-close.html
- shard-lnl: NOTRUN -> [SKIP][217] ([Intel XE#2905]) +6 other tests skip
[217]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@xe_eudebug@basic-close.html
* igt@xe_eudebug@basic-vm-access-parameters-userptr:
- shard-adlp: NOTRUN -> [SKIP][218] ([Intel XE#3889])
[218]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_eudebug@basic-vm-access-parameters-userptr.html
- shard-bmg: NOTRUN -> [SKIP][219] ([Intel XE#3889])
[219]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@xe_eudebug@basic-vm-access-parameters-userptr.html
- shard-dg2-set2: NOTRUN -> [SKIP][220] ([Intel XE#3889])
[220]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@xe_eudebug@basic-vm-access-parameters-userptr.html
- shard-lnl: NOTRUN -> [SKIP][221] ([Intel XE#3889])
[221]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-1/igt@xe_eudebug@basic-vm-access-parameters-userptr.html
* igt@xe_eudebug@basic-vm-bind-metadata-discovery:
- shard-adlp: NOTRUN -> [SKIP][222] ([Intel XE#2905]) +6 other tests skip
[222]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@xe_eudebug@basic-vm-bind-metadata-discovery.html
* igt@xe_eudebug@discovery-race-vmbind:
- shard-bmg: NOTRUN -> [SKIP][223] ([Intel XE#2905]) +10 other tests skip
[223]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@xe_eudebug@discovery-race-vmbind.html
* igt@xe_evict@evict-large-cm:
- shard-adlp: NOTRUN -> [SKIP][224] ([Intel XE#261] / [Intel XE#688]) +2 other tests skip
[224]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@xe_evict@evict-large-cm.html
* igt@xe_evict@evict-large-external:
- shard-lnl: NOTRUN -> [SKIP][225] ([Intel XE#688]) +2 other tests skip
[225]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@xe_evict@evict-large-external.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null:
- shard-dg2-set2: NOTRUN -> [SKIP][226] ([Intel XE#1392]) +1 other test skip
[226]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-null.html
* igt@xe_exec_basic@multigpu-no-exec-null-defer-bind:
- shard-dg2-set2: [PASS][227] -> [SKIP][228] ([Intel XE#1392]) +7 other tests skip
[227]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-463/igt@xe_exec_basic@multigpu-no-exec-null-defer-bind.html
[228]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@xe_exec_basic@multigpu-no-exec-null-defer-bind.html
* igt@xe_exec_basic@multigpu-no-exec-rebind:
- shard-adlp: NOTRUN -> [SKIP][229] ([Intel XE#1392]) +5 other tests skip
[229]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@xe_exec_basic@multigpu-no-exec-rebind.html
* igt@xe_exec_basic@multigpu-once-basic-defer-bind:
- shard-bmg: NOTRUN -> [SKIP][230] ([Intel XE#2322]) +9 other tests skip
[230]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@xe_exec_basic@multigpu-once-basic-defer-bind.html
* igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race:
- shard-lnl: NOTRUN -> [SKIP][231] ([Intel XE#1392]) +5 other tests skip
[231]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@xe_exec_basic@multigpu-once-bindexecqueue-userptr-invalidate-race.html
* igt@xe_exec_fault_mode@invalid-va-scratch-nopagefault:
- shard-adlp: NOTRUN -> [SKIP][232] ([Intel XE#288]) +14 other tests skip
[232]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_exec_fault_mode@invalid-va-scratch-nopagefault.html
* igt@xe_exec_fault_mode@once-rebind-prefetch:
- shard-dg2-set2: NOTRUN -> [SKIP][233] ([Intel XE#288]) +22 other tests skip
[233]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@xe_exec_fault_mode@once-rebind-prefetch.html
* igt@xe_exec_mix_modes@exec-simple-batch-store-lr:
- shard-dg2-set2: NOTRUN -> [SKIP][234] ([Intel XE#2360])
[234]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@xe_exec_mix_modes@exec-simple-batch-store-lr.html
- shard-adlp: NOTRUN -> [SKIP][235] ([Intel XE#2360])
[235]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@xe_exec_mix_modes@exec-simple-batch-store-lr.html
* igt@xe_fault_injection@inject-fault-probe-function-xe_device_create:
- shard-adlp: [PASS][236] -> [DMESG-WARN][237] ([Intel XE#4173]) +1 other test dmesg-warn
[236]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-9/igt@xe_fault_injection@inject-fault-probe-function-xe_device_create.html
[237]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@xe_fault_injection@inject-fault-probe-function-xe_device_create.html
* igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit:
- shard-adlp: NOTRUN -> [FAIL][238] ([Intel XE#1999]) +2 other tests fail
[238]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit.html
- shard-dg2-set2: NOTRUN -> [FAIL][239] ([Intel XE#1999]) +2 other tests fail
[239]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@xe_live_ktest@xe_mocs@xe_live_mocs_kernel_kunit.html
* igt@xe_mmap@pci-membarrier:
- shard-lnl: NOTRUN -> [SKIP][240] ([Intel XE#4045]) +2 other tests skip
[240]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@xe_mmap@pci-membarrier.html
* igt@xe_mmap@pci-membarrier-parallel:
- shard-adlp: NOTRUN -> [SKIP][241] ([Intel XE#4045]) +2 other tests skip
[241]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@xe_mmap@pci-membarrier-parallel.html
* igt@xe_module_load@force-load:
- shard-bmg: NOTRUN -> [SKIP][242] ([Intel XE#2457])
[242]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-7/igt@xe_module_load@force-load.html
- shard-adlp: NOTRUN -> [SKIP][243] ([Intel XE#378])
[243]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_module_load@force-load.html
- shard-dg2-set2: NOTRUN -> [SKIP][244] ([Intel XE#378])
[244]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@xe_module_load@force-load.html
- shard-lnl: NOTRUN -> [SKIP][245] ([Intel XE#378])
[245]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@xe_module_load@force-load.html
* igt@xe_noexec_ping_pong:
- shard-adlp: NOTRUN -> [SKIP][246] ([Intel XE#379])
[246]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@xe_noexec_ping_pong.html
- shard-lnl: NOTRUN -> [SKIP][247] ([Intel XE#379])
[247]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-3/igt@xe_noexec_ping_pong.html
* igt@xe_oa@buffer-size:
- shard-dg2-set2: NOTRUN -> [SKIP][248] ([Intel XE#4501])
[248]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@xe_oa@buffer-size.html
- shard-adlp: NOTRUN -> [SKIP][249] ([Intel XE#4501])
[249]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@xe_oa@buffer-size.html
* igt@xe_oa@oa-unit-exclusive-stream-sample-oa:
- shard-dg2-set2: NOTRUN -> [SKIP][250] ([Intel XE#2541] / [Intel XE#3573]) +3 other tests skip
[250]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@xe_oa@oa-unit-exclusive-stream-sample-oa.html
* igt@xe_oa@syncs-userptr-wait:
- shard-adlp: NOTRUN -> [SKIP][251] ([Intel XE#2541] / [Intel XE#3573] / [Intel XE#4501])
[251]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@xe_oa@syncs-userptr-wait.html
- shard-dg2-set2: NOTRUN -> [SKIP][252] ([Intel XE#2541] / [Intel XE#3573] / [Intel XE#4501])
[252]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@xe_oa@syncs-userptr-wait.html
* igt@xe_oa@unprivileged-single-ctx-counters:
- shard-adlp: NOTRUN -> [SKIP][253] ([Intel XE#2541] / [Intel XE#3573]) +2 other tests skip
[253]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@xe_oa@unprivileged-single-ctx-counters.html
* igt@xe_pat@display-vs-wb-transient:
- shard-adlp: NOTRUN -> [SKIP][254] ([Intel XE#1337])
[254]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_pat@display-vs-wb-transient.html
- shard-dg2-set2: NOTRUN -> [SKIP][255] ([Intel XE#1337])
[255]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@xe_pat@display-vs-wb-transient.html
* igt@xe_pat@pat-index-xehpc:
- shard-dg2-set2: NOTRUN -> [SKIP][256] ([Intel XE#2838] / [Intel XE#979])
[256]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@xe_pat@pat-index-xehpc.html
* igt@xe_peer2peer@read:
- shard-adlp: NOTRUN -> [SKIP][257] ([Intel XE#1061])
[257]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_peer2peer@read.html
- shard-bmg: NOTRUN -> [SKIP][258] ([Intel XE#2427])
[258]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@xe_peer2peer@read.html
- shard-dg2-set2: NOTRUN -> [SKIP][259] ([Intel XE#1061])
[259]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@xe_peer2peer@read.html
- shard-lnl: NOTRUN -> [SKIP][260] ([Intel XE#1061])
[260]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@xe_peer2peer@read.html
* igt@xe_pm@d3cold-mmap-vram:
- shard-dg2-set2: NOTRUN -> [SKIP][261] ([Intel XE#2284] / [Intel XE#366]) +1 other test skip
[261]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@xe_pm@d3cold-mmap-vram.html
- shard-lnl: NOTRUN -> [SKIP][262] ([Intel XE#2284] / [Intel XE#366]) +1 other test skip
[262]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-3/igt@xe_pm@d3cold-mmap-vram.html
* igt@xe_pm@d3hot-mmap-vram:
- shard-adlp: NOTRUN -> [SKIP][263] ([Intel XE#1948])
[263]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@xe_pm@d3hot-mmap-vram.html
- shard-lnl: NOTRUN -> [SKIP][264] ([Intel XE#1948])
[264]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@xe_pm@d3hot-mmap-vram.html
* igt@xe_pm@s2idle-d3cold-basic-exec:
- shard-bmg: NOTRUN -> [SKIP][265] ([Intel XE#2284]) +2 other tests skip
[265]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@xe_pm@s2idle-d3cold-basic-exec.html
- shard-adlp: NOTRUN -> [SKIP][266] ([Intel XE#2284] / [Intel XE#366]) +1 other test skip
[266]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_pm@s2idle-d3cold-basic-exec.html
* igt@xe_pm@s3-d3hot-basic-exec:
- shard-lnl: NOTRUN -> [SKIP][267] ([Intel XE#584])
[267]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-8/igt@xe_pm@s3-d3hot-basic-exec.html
* igt@xe_pm@vram-d3cold-threshold:
- shard-dg2-set2: NOTRUN -> [SKIP][268] ([Intel XE#579])
[268]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@xe_pm@vram-d3cold-threshold.html
* igt@xe_query@multigpu-query-config:
- shard-bmg: NOTRUN -> [SKIP][269] ([Intel XE#944]) +4 other tests skip
[269]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@xe_query@multigpu-query-config.html
* igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz:
- shard-adlp: NOTRUN -> [SKIP][270] ([Intel XE#944])
[270]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html
- shard-dg2-set2: NOTRUN -> [SKIP][271] ([Intel XE#944]) +1 other test skip
[271]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html
- shard-lnl: NOTRUN -> [SKIP][272] ([Intel XE#944])
[272]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@xe_query@multigpu-query-invalid-uc-fw-version-mbz.html
* igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling:
- shard-bmg: NOTRUN -> [SKIP][273] ([Intel XE#4130]) +2 other tests skip
[273]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@xe_sriov_auto_provisioning@resources-released-on-vfs-disabling.html
* igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs:
- shard-dg2-set2: NOTRUN -> [SKIP][274] ([Intel XE#4130]) +1 other test skip
[274]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs.html
- shard-lnl: NOTRUN -> [SKIP][275] ([Intel XE#4130])
[275]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-1/igt@xe_sriov_auto_provisioning@selfconfig-reprovision-reduce-numvfs.html
* igt@xe_sriov_flr@flr-each-isolation:
- shard-dg2-set2: NOTRUN -> [SKIP][276] ([Intel XE#3342])
[276]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@xe_sriov_flr@flr-each-isolation.html
* igt@xe_sriov_flr@flr-twice:
- shard-bmg: NOTRUN -> [SKIP][277] ([Intel XE#4273])
[277]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@xe_sriov_flr@flr-twice.html
#### Possible fixes ####
* igt@kms_async_flips@alternate-sync-async-flip:
- shard-bmg: [FAIL][278] ([Intel XE#827]) -> [PASS][279] +1 other test pass
[278]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-4/igt@kms_async_flips@alternate-sync-async-flip.html
[279]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-7/igt@kms_async_flips@alternate-sync-async-flip.html
* igt@kms_async_flips@async-flip-with-page-flip-events:
- shard-adlp: [DMESG-WARN][280] ([Intel XE#4330]) -> [PASS][281] +3 other tests pass
[280]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-6/igt@kms_async_flips@async-flip-with-page-flip-events.html
[281]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@kms_async_flips@async-flip-with-page-flip-events.html
* igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-adlp: [DMESG-FAIL][282] ([Intel XE#4330]) -> [PASS][283] +8 other tests pass
[282]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-1/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
[283]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p:
- shard-dg2-set2: [SKIP][284] ([Intel XE#2191]) -> [PASS][285]
[284]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p.html
[285]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@kms_bw@connected-linear-tiling-2-displays-3840x2160p.html
* igt@kms_cursor_legacy@cursora-vs-flipb-toggle:
- shard-bmg: [SKIP][286] ([Intel XE#2291]) -> [PASS][287] +2 other tests pass
[286]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-4/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html
[287]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_cursor_legacy@cursora-vs-flipb-toggle.html
* igt@kms_dp_linktrain_fallback@dp-fallback:
- shard-dg2-set2: [SKIP][288] ([Intel XE#4331]) -> [PASS][289]
[288]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@kms_dp_linktrain_fallback@dp-fallback.html
[289]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@kms_dp_linktrain_fallback@dp-fallback.html
* igt@kms_flip@2x-blocking-absolute-wf_vblank:
- shard-dg2-set2: [SKIP][290] ([Intel XE#310]) -> [PASS][291] +6 other tests pass
[290]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@kms_flip@2x-blocking-absolute-wf_vblank.html
[291]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@kms_flip@2x-blocking-absolute-wf_vblank.html
* igt@kms_flip@2x-nonexisting-fb:
- shard-bmg: [SKIP][292] ([Intel XE#2316]) -> [PASS][293] +4 other tests pass
[292]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-4/igt@kms_flip@2x-nonexisting-fb.html
[293]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-7/igt@kms_flip@2x-nonexisting-fb.html
* igt@kms_flip@flip-vs-absolute-wf_vblank:
- shard-adlp: [FAIL][294] ([Intel XE#2882]) -> [PASS][295]
[294]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-1/igt@kms_flip@flip-vs-absolute-wf_vblank.html
[295]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@kms_flip@flip-vs-absolute-wf_vblank.html
* igt@kms_flip@flip-vs-absolute-wf_vblank@d-hdmi-a1:
- shard-adlp: [FAIL][296] -> [PASS][297]
[296]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-1/igt@kms_flip@flip-vs-absolute-wf_vblank@d-hdmi-a1.html
[297]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@kms_flip@flip-vs-absolute-wf_vblank@d-hdmi-a1.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp2:
- shard-bmg: [FAIL][298] ([Intel XE#3321]) -> [PASS][299]
[298]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-4/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp2.html
[299]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp2.html
* igt@kms_flip@flip-vs-suspend:
- shard-adlp: [DMESG-WARN][300] ([Intel XE#2953] / [Intel XE#4173]) -> [PASS][301]
[300]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-3/igt@kms_flip@flip-vs-suspend.html
[301]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_flip@flip-vs-suspend.html
* igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode:
- shard-adlp: [DMESG-FAIL][302] ([Intel XE#324] / [Intel XE#4330]) -> [PASS][303] +1 other test pass
[302]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode.html
[303]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling@pipe-a-valid-mode.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff:
- shard-dg2-set2: [SKIP][304] ([Intel XE#656]) -> [PASS][305] +3 other tests pass
[304]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
[305]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-onoff.html
* igt@kms_plane_scaling@2x-scaler-multi-pipe:
- shard-dg2-set2: [SKIP][306] ([Intel XE#309]) -> [PASS][307] +3 other tests pass
[306]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
[307]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@kms_plane_scaling@2x-scaler-multi-pipe.html
* igt@kms_pm_dc@dc5-dpms:
- shard-lnl: [FAIL][308] ([Intel XE#718]) -> [PASS][309]
[308]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-7/igt@kms_pm_dc@dc5-dpms.html
[309]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@kms_pm_dc@dc5-dpms.html
* igt@kms_pm_rpm@dpms-mode-unset-non-lpsp:
- shard-dg2-set2: [SKIP][310] ([Intel XE#836]) -> [PASS][311]
[310]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
[311]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@kms_pm_rpm@dpms-mode-unset-non-lpsp.html
* igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf@pipe-a-edp-1:
- shard-lnl: [DMESG-WARN][312] ([Intel XE#324]) -> [PASS][313] +2 other tests pass
[312]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-4/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf@pipe-a-edp-1.html
[313]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@kms_psr2_sf@fbc-psr2-overlay-plane-move-continuous-sf@pipe-a-edp-1.html
* igt@kms_setmode@basic@pipe-a-hdmi-a-6:
- shard-dg2-set2: [FAIL][314] ([Intel XE#2883]) -> [PASS][315] +4 other tests pass
[314]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-433/igt@kms_setmode@basic@pipe-a-hdmi-a-6.html
[315]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@kms_setmode@basic@pipe-a-hdmi-a-6.html
* igt@xe_dma_buf_sync@export-dma-buf-many-write-read-sync:
- shard-adlp: [DMESG-WARN][316] ([Intel XE#4173]) -> [PASS][317] +3 other tests pass
[316]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-3/igt@xe_dma_buf_sync@export-dma-buf-many-write-read-sync.html
[317]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_dma_buf_sync@export-dma-buf-many-write-read-sync.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-rebind:
- shard-dg2-set2: [SKIP][318] ([Intel XE#1392]) -> [PASS][319] +6 other tests pass
[318]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-432/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-rebind.html
[319]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr-rebind.html
* igt@xe_module_load@load:
- shard-lnl: ([PASS][320], [PASS][321], [SKIP][322], [PASS][323], [PASS][324], [PASS][325], [PASS][326], [PASS][327], [PASS][328], [PASS][329], [PASS][330], [PASS][331], [PASS][332], [PASS][333], [PASS][334], [PASS][335], [PASS][336], [PASS][337], [PASS][338], [PASS][339], [PASS][340], [PASS][341], [PASS][342], [PASS][343], [PASS][344], [PASS][345]) ([Intel XE#378]) -> ([PASS][346], [PASS][347], [PASS][348], [PASS][349], [PASS][350], [PASS][351], [PASS][352], [PASS][353], [PASS][354], [PASS][355], [PASS][356], [PASS][357], [PASS][358], [PASS][359], [PASS][360], [PASS][361], [PASS][362], [PASS][363], [PASS][364], [PASS][365], [PASS][366], [PASS][367], [PASS][368], [PASS][369], [PASS][370])
[320]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-5/igt@xe_module_load@load.html
[321]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-3/igt@xe_module_load@load.html
[322]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-4/igt@xe_module_load@load.html
[323]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-8/igt@xe_module_load@load.html
[324]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-8/igt@xe_module_load@load.html
[325]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-8/igt@xe_module_load@load.html
[326]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-1/igt@xe_module_load@load.html
[327]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-1/igt@xe_module_load@load.html
[328]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-6/igt@xe_module_load@load.html
[329]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-7/igt@xe_module_load@load.html
[330]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-1/igt@xe_module_load@load.html
[331]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-3/igt@xe_module_load@load.html
[332]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-6/igt@xe_module_load@load.html
[333]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-6/igt@xe_module_load@load.html
[334]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-5/igt@xe_module_load@load.html
[335]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-5/igt@xe_module_load@load.html
[336]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-4/igt@xe_module_load@load.html
[337]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-5/igt@xe_module_load@load.html
[338]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-7/igt@xe_module_load@load.html
[339]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-1/igt@xe_module_load@load.html
[340]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-1/igt@xe_module_load@load.html
[341]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-3/igt@xe_module_load@load.html
[342]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-7/igt@xe_module_load@load.html
[343]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-4/igt@xe_module_load@load.html
[344]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-4/igt@xe_module_load@load.html
[345]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-lnl-8/igt@xe_module_load@load.html
[346]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-3/igt@xe_module_load@load.html
[347]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@xe_module_load@load.html
[348]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@xe_module_load@load.html
[349]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-8/igt@xe_module_load@load.html
[350]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-3/igt@xe_module_load@load.html
[351]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-3/igt@xe_module_load@load.html
[352]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-8/igt@xe_module_load@load.html
[353]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@xe_module_load@load.html
[354]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-8/igt@xe_module_load@load.html
[355]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-8/igt@xe_module_load@load.html
[356]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@xe_module_load@load.html
[357]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@xe_module_load@load.html
[358]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-1/igt@xe_module_load@load.html
[359]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-1/igt@xe_module_load@load.html
[360]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-1/igt@xe_module_load@load.html
[361]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@xe_module_load@load.html
[362]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@xe_module_load@load.html
[363]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@xe_module_load@load.html
[364]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-7/igt@xe_module_load@load.html
[365]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@xe_module_load@load.html
[366]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-5/igt@xe_module_load@load.html
[367]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-3/igt@xe_module_load@load.html
[368]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-6/igt@xe_module_load@load.html
[369]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@xe_module_load@load.html
[370]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-lnl-4/igt@xe_module_load@load.html
- shard-adlp: ([PASS][371], [PASS][372], [PASS][373], [PASS][374], [PASS][375], [SKIP][376], [PASS][377], [PASS][378], [PASS][379], [PASS][380], [PASS][381], [PASS][382], [PASS][383], [PASS][384], [PASS][385], [PASS][386], [PASS][387], [PASS][388], [PASS][389], [PASS][390], [PASS][391], [PASS][392], [PASS][393], [PASS][394], [PASS][395], [PASS][396]) ([Intel XE#378]) -> ([PASS][397], [PASS][398], [PASS][399], [PASS][400], [PASS][401], [PASS][402], [PASS][403], [PASS][404], [PASS][405], [PASS][406], [PASS][407], [PASS][408], [PASS][409], [PASS][410], [PASS][411], [PASS][412], [PASS][413], [PASS][414], [PASS][415], [PASS][416], [PASS][417], [PASS][418], [PASS][419], [PASS][420], [PASS][421])
[371]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-9/igt@xe_module_load@load.html
[372]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-4/igt@xe_module_load@load.html
[373]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-4/igt@xe_module_load@load.html
[374]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-8/igt@xe_module_load@load.html
[375]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-3/igt@xe_module_load@load.html
[376]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-6/igt@xe_module_load@load.html
[377]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-9/igt@xe_module_load@load.html
[378]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-9/igt@xe_module_load@load.html
[379]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-1/igt@xe_module_load@load.html
[380]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-1/igt@xe_module_load@load.html
[381]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-8/igt@xe_module_load@load.html
[382]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-8/igt@xe_module_load@load.html
[383]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-8/igt@xe_module_load@load.html
[384]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-8/igt@xe_module_load@load.html
[385]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-9/igt@xe_module_load@load.html
[386]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-6/igt@xe_module_load@load.html
[387]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-6/igt@xe_module_load@load.html
[388]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-1/igt@xe_module_load@load.html
[389]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-4/igt@xe_module_load@load.html
[390]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-3/igt@xe_module_load@load.html
[391]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-6/igt@xe_module_load@load.html
[392]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-6/igt@xe_module_load@load.html
[393]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-4/igt@xe_module_load@load.html
[394]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-1/igt@xe_module_load@load.html
[395]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-3/igt@xe_module_load@load.html
[396]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-1/igt@xe_module_load@load.html
[397]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@xe_module_load@load.html
[398]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@xe_module_load@load.html
[399]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@xe_module_load@load.html
[400]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@xe_module_load@load.html
[401]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@xe_module_load@load.html
[402]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@xe_module_load@load.html
[403]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@xe_module_load@load.html
[404]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@xe_module_load@load.html
[405]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-1/igt@xe_module_load@load.html
[406]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@xe_module_load@load.html
[407]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@xe_module_load@load.html
[408]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@xe_module_load@load.html
[409]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@xe_module_load@load.html
[410]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@xe_module_load@load.html
[411]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@xe_module_load@load.html
[412]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-6/igt@xe_module_load@load.html
[413]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_module_load@load.html
[414]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_module_load@load.html
[415]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_module_load@load.html
[416]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-8/igt@xe_module_load@load.html
[417]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_module_load@load.html
[418]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-3/igt@xe_module_load@load.html
[419]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-3/igt@xe_module_load@load.html
[420]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-3/igt@xe_module_load@load.html
[421]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-4/igt@xe_module_load@load.html
- shard-dg2-set2: ([PASS][422], [PASS][423], [PASS][424], [PASS][425], [PASS][426], [SKIP][427], [PASS][428], [PASS][429], [PASS][430], [PASS][431], [PASS][432], [PASS][433], [PASS][434], [PASS][435], [PASS][436], [PASS][437], [PASS][438], [PASS][439], [PASS][440], [PASS][441], [PASS][442], [PASS][443], [PASS][444], [PASS][445], [PASS][446], [PASS][447]) ([Intel XE#378]) -> ([PASS][448], [PASS][449], [PASS][450], [PASS][451], [PASS][452], [PASS][453], [PASS][454], [PASS][455], [PASS][456], [PASS][457], [PASS][458], [PASS][459], [PASS][460], [PASS][461], [PASS][462], [PASS][463], [PASS][464], [PASS][465], [PASS][466], [PASS][467], [PASS][468], [PASS][469], [PASS][470], [PASS][471])
[422]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-433/igt@xe_module_load@load.html
[423]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-433/igt@xe_module_load@load.html
[424]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-432/igt@xe_module_load@load.html
[425]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-432/igt@xe_module_load@load.html
[426]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-432/igt@xe_module_load@load.html
[427]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-432/igt@xe_module_load@load.html
[428]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@xe_module_load@load.html
[429]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-433/igt@xe_module_load@load.html
[430]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@xe_module_load@load.html
[431]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@xe_module_load@load.html
[432]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@xe_module_load@load.html
[433]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-434/igt@xe_module_load@load.html
[434]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-434/igt@xe_module_load@load.html
[435]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-434/igt@xe_module_load@load.html
[436]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-463/igt@xe_module_load@load.html
[437]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-463/igt@xe_module_load@load.html
[438]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-433/igt@xe_module_load@load.html
[439]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-433/igt@xe_module_load@load.html
[440]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-433/igt@xe_module_load@load.html
[441]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-432/igt@xe_module_load@load.html
[442]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@xe_module_load@load.html
[443]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-463/igt@xe_module_load@load.html
[444]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-463/igt@xe_module_load@load.html
[445]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@xe_module_load@load.html
[446]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@xe_module_load@load.html
[447]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-434/igt@xe_module_load@load.html
[448]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@xe_module_load@load.html
[449]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@xe_module_load@load.html
[450]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@xe_module_load@load.html
[451]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@xe_module_load@load.html
[452]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@xe_module_load@load.html
[453]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@xe_module_load@load.html
[454]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-463/igt@xe_module_load@load.html
[455]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@xe_module_load@load.html
[456]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@xe_module_load@load.html
[457]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@xe_module_load@load.html
[458]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@xe_module_load@load.html
[459]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@xe_module_load@load.html
[460]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@xe_module_load@load.html
[461]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@xe_module_load@load.html
[462]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@xe_module_load@load.html
[463]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@xe_module_load@load.html
[464]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@xe_module_load@load.html
[465]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@xe_module_load@load.html
[466]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@xe_module_load@load.html
[467]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@xe_module_load@load.html
[468]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@xe_module_load@load.html
[469]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@xe_module_load@load.html
[470]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@xe_module_load@load.html
[471]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@xe_module_load@load.html
#### Warnings ####
* igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-6:
- shard-dg2-set2: [SKIP][472] ([Intel XE#455] / [Intel XE#787]) -> [SKIP][473] ([Intel XE#787]) +3 other tests skip
[472]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-6.html
[473]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-433/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs@pipe-d-hdmi-a-6.html
* igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-6:
- shard-dg2-set2: [SKIP][474] ([Intel XE#787]) -> [SKIP][475] ([Intel XE#455] / [Intel XE#787]) +3 other tests skip
[474]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-433/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-6.html
[475]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_ccs@crc-primary-basic-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-6.html
* igt@kms_content_protection@atomic-dpms:
- shard-dg2-set2: [SKIP][476] ([Intel XE#455]) -> [FAIL][477] ([Intel XE#1178]) +1 other test fail
[476]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@kms_content_protection@atomic-dpms.html
[477]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@kms_content_protection@atomic-dpms.html
* igt@kms_content_protection@srm:
- shard-dg2-set2: [FAIL][478] ([Intel XE#1178]) -> [SKIP][479] ([Intel XE#455])
[478]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-432/igt@kms_content_protection@srm.html
[479]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_content_protection@srm.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt:
- shard-bmg: [SKIP][480] ([Intel XE#2312]) -> [SKIP][481] ([Intel XE#2311]) +5 other tests skip
[480]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt.html
[481]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-render:
- shard-bmg: [SKIP][482] ([Intel XE#2311]) -> [SKIP][483] ([Intel XE#2312]) +5 other tests skip
[482]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-7/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-render.html
[483]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-spr-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt:
- shard-bmg: [SKIP][484] ([Intel XE#4141]) -> [SKIP][485] ([Intel XE#2312]) +1 other test skip
[484]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt.html
[485]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc:
- shard-bmg: [SKIP][486] ([Intel XE#2312]) -> [SKIP][487] ([Intel XE#4141]) +3 other tests skip
[486]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc.html
[487]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc:
- shard-dg2-set2: [SKIP][488] ([Intel XE#651]) -> [SKIP][489] ([Intel XE#656]) +9 other tests skip
[488]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-432/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc.html
[489]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-pri-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-pgflip-blt:
- shard-dg2-set2: [SKIP][490] ([Intel XE#656]) -> [SKIP][491] ([Intel XE#651]) +9 other tests skip
[490]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-pgflip-blt.html
[491]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-434/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt:
- shard-bmg: [SKIP][492] ([Intel XE#2313]) -> [SKIP][493] ([Intel XE#2312]) +7 other tests skip
[492]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt.html
[493]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt:
- shard-bmg: [SKIP][494] ([Intel XE#2312]) -> [SKIP][495] ([Intel XE#2313]) +10 other tests skip
[494]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-bmg-4/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
[495]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-blt.html
* igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-move:
- shard-dg2-set2: [SKIP][496] ([Intel XE#656]) -> [SKIP][497] ([Intel XE#653]) +12 other tests skip
[496]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-move.html
[497]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-move.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render:
- shard-dg2-set2: [SKIP][498] ([Intel XE#653]) -> [SKIP][499] ([Intel XE#656]) +8 other tests skip
[498]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-dg2-432/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html
[499]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-dg2-464/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html
* igt@xe_pm@s4-exec-after:
- shard-adlp: [ABORT][500] ([Intel XE#4268]) -> [ABORT][501] ([Intel XE#4054] / [Intel XE#4268])
[500]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3/shard-adlp-9/igt@xe_pm@s4-exec-after.html
[501]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/shard-adlp-9/igt@xe_pm@s4-exec-after.html
[Intel XE#1061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1061
[Intel XE#1062]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1062
[Intel XE#1122]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1122
[Intel XE#1123]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1123
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1125]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1125
[Intel XE#1127]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1127
[Intel XE#1135]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1135
[Intel XE#1137]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1137
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1337]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1337
[Intel XE#1340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1340
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1401]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1401
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1407]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1407
[Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
[Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
[Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
[Intel XE#1466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1466
[Intel XE#1468]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1468
[Intel XE#1471]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1471
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1500]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1500
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
[Intel XE#1948]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1948
[Intel XE#1999]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1999
[Intel XE#2049]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2049
[Intel XE#2191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2191
[Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2244]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2244
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
[Intel XE#2291]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2291
[Intel XE#2293]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2293
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2312
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2314
[Intel XE#2316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2316
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
[Intel XE#2340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2340
[Intel XE#2341]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2341
[Intel XE#2360]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2360
[Intel XE#2373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2373
[Intel XE#2374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2374
[Intel XE#2380]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2380
[Intel XE#2390]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2390
[Intel XE#2391]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2391
[Intel XE#2392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2392
[Intel XE#2414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2414
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2427]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2427
[Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
[Intel XE#2541]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2541
[Intel XE#2597]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2597
[Intel XE#261]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/261
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2838]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2838
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#288]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/288
[Intel XE#2882]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2882
[Intel XE#2883]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2883
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#2894]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2894
[Intel XE#2905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2905
[Intel XE#2907]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2907
[Intel XE#2927]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2927
[Intel XE#2934]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2934
[Intel XE#2939]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2939
[Intel XE#2953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2953
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/308
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#310]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/310
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/316
[Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
[Intel XE#324]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/324
[Intel XE#3278]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3278
[Intel XE#3321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3321
[Intel XE#3342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3342
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#3433]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3433
[Intel XE#3442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3442
[Intel XE#356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/356
[Intel XE#3573]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3573
[Intel XE#362]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/362
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
[Intel XE#379]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/379
[Intel XE#3884]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3884
[Intel XE#3889]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3889
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#3914]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3914
[Intel XE#4045]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4045
[Intel XE#4054]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4054
[Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4173]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4173
[Intel XE#4268]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4268
[Intel XE#4273]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4273
[Intel XE#4328]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4328
[Intel XE#4330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4330
[Intel XE#4331]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4331
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4501]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4501
[Intel XE#455]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/455
[Intel XE#488]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/488
[Intel XE#579]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/579
[Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
[Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
[Intel XE#616]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/616
[Intel XE#623]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/623
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#653]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/653
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/703
[Intel XE#718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/718
[Intel XE#736]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/736
[Intel XE#756]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/756
[Intel XE#771]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/771
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
[Intel XE#827]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/827
[Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
[Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
[Intel XE#873]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/873
[Intel XE#899]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/899
[Intel XE#908]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/908
[Intel XE#911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/911
[Intel XE#929]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/929
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
[Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979
Build changes
-------------
* IGT: IGT_8263 -> IGT_8264
* Linux: xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3 -> xe-pw-141439v5
IGT_8263: 25f60274b3dd14d35a7f32558b489ab7a02b6223 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8264: 8264
xe-2769-6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3: 6f2e5afc45e3ca8bf46427ae21a9c1029ea6cdb3
xe-pw-141439v5: 141439v5
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-141439v5/index.html
[-- Attachment #2: Type: text/html, Size: 137019 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 1/3] drm/drm_mm: Safe macro for iterating through nodes in range
2025-03-06 22:21 ` [PATCH v4 1/3] drm/drm_mm: Safe macro for iterating through nodes in range Tomasz Lis
@ 2025-03-07 9:59 ` Christian König
0 siblings, 0 replies; 23+ messages in thread
From: Christian König @ 2025-03-07 9:59 UTC (permalink / raw)
To: Tomasz Lis, intel-xe
Cc: Michał Winiarski, Michał Wajdeczko,
Piotr Piórkowski, dri-devel, Arun R Murthy, Matthew Brost
Am 06.03.25 um 23:21 schrieb Tomasz Lis:
> Benefits of drm_mm_for_each_node_safe and drm_mm_for_each_node_in_range
> squished together into one macro.
Looks sane in general, but the other patches who actually use that never made it into my inbox.
Please send them out to me once more and maybe put Arun in CC as well.
Thanks,
Christian.
>
> Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
> ---
> Cc: dri-devel@lists.freedesktop.org
> Cc: Christian König <christian.koenig@amd.com>
> Cc: Arun R Murthy <arun.r.murthy@intel.com>
> Cc: Matthew Brost <matthew.brost@intel.com>
>
> include/drm/drm_mm.h | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/include/drm/drm_mm.h b/include/drm/drm_mm.h
> index f654874c4ce6..43e99441f6ba 100644
> --- a/include/drm/drm_mm.h
> +++ b/include/drm/drm_mm.h
> @@ -504,6 +504,25 @@ __drm_mm_interval_first(const struct drm_mm *mm, u64 start, u64 last);
> node__->start < (end__); \
> node__ = list_next_entry(node__, node_list))
>
> +/**
> + * drm_mm_for_each_node_in_range_safe - iterator to walk over a range of
> + * allocated nodes
> + * @node__: drm_mm_node structure to assign to in each iteration step
> + * @next__: &struct drm_mm_node to store the next step
> + * @mm__: drm_mm allocator to walk
> + * @start__: starting offset, the first node will overlap this
> + * @end__: ending offset, the last node will start before this (but may overlap)
> + *
> + * This iterator walks over all nodes in the range allocator that lie
> + * between @start and @end. It is implemented similarly to list_for_each_safe(),
> + * so safe against removal of elements.
> + */
> +#define drm_mm_for_each_node_in_range_safe(node__, next__, mm__, start__, end__) \
> + for (node__ = __drm_mm_interval_first((mm__), (start__), (end__)-1), \
> + next__ = list_next_entry(node__, node_list); \
> + node__->start < (end__); \
> + node__ = next__, next__ = list_next_entry(next__, node_list))
> +
> void drm_mm_scan_init_with_range(struct drm_mm_scan *scan,
> struct drm_mm *mm,
> u64 size, u64 alignment, unsigned long color,
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration
2025-03-06 22:21 ` [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration Tomasz Lis
@ 2025-03-14 18:22 ` Michal Wajdeczko
2025-03-14 23:45 ` Lis, Tomasz
2025-03-24 5:58 ` Dan Carpenter
1 sibling, 1 reply; 23+ messages in thread
From: Michal Wajdeczko @ 2025-03-14 18:22 UTC (permalink / raw)
To: Tomasz Lis, intel-xe; +Cc: Michał Winiarski, Piotr Piórkowski
On 06.03.2025 23:21, Tomasz Lis wrote:
> We have only one GGTT for all IOV functions, with each VF having assigned
> a range of addresses for its use. After migration, a VF can receive a
> different range of addresses than it had initially.
>
> This implements shifting GGTT addresses within drm_mm nodes, so that
> VMAs stay valid after migration. This will make the driver use new
> addresses when accessing GGTT from the moment the shifting ends.
>
> By taking the ggtt->lock for the period of VMA fixups, this change
> also adds constraint on that mutex. Any locks used during the recovery
> cannot ever wait for hardware response - because after migration,
> the hardware will not do anything until fixups are finished.
>
> v2: Moved some functs to xe_ggtt.c; moved shift computation to just
> after querying; improved documentation; switched some warns to asserts;
> skipping fixups when GGTT shift eq 0; iterating through tiles (Michal)
> v3: Updated kerneldocs, removed unused funct, properly allocate
> balloning nodes if non existent
>
> Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
> ---
> drivers/gpu/drm/xe/xe_ggtt.c | 163 ++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_ggtt.h | 2 +
> drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 26 ++++
> drivers/gpu/drm/xe/xe_gt_sriov_vf.h | 1 +
> drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h | 2 +
> drivers/gpu/drm/xe/xe_sriov_vf.c | 22 +++
> 6 files changed, 216 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index 5fcb2b4c2c13..6865d1cdd676 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -489,6 +489,169 @@ void xe_ggtt_node_remove_balloon(struct xe_ggtt_node *node)
> xe_ggtt_node_fini(node);
> }
>
> +static u64 drm_mm_node_end(struct drm_mm_node *node)
> +{
> + return node->start + node->size;
> +}
> +
> +static void xe_ggtt_mm_shift_nodes(struct xe_ggtt *ggtt, struct drm_mm_node *balloon_beg,
> + struct drm_mm_node *balloon_fin, s64 shift)
> +{
> + struct drm_mm_node *node, *tmpn;
> + LIST_HEAD(temp_list_head);
> + int err;
> +
> + lockdep_assert_held(&ggtt->lock);
> +
> + /*
> + * Move nodes, from range previously assigned to this VF, into temp list.
> + *
> + * The balloon_beg and balloon_fin nodes are there to eliminate unavailable
> + * ranges from use: first reserves the GGTT area below the range for current VF,
> + * and second reserves area above.
> + *
> + * Below is a GGTT layout of example VF, with a certain address range assigned to
> + * said VF, and inaccessible areas above and below:
> + *
> + * 0 4GiB
> + * |<--------------------------- Total GGTT size ----------------------------->|
> + * WOPCM GUC_TOP
> + * |<-------------- Area mappable by xe_ggtt instance ---------------->|
> + *
> + * +---+---------------------------------+----------+----------------------+---+
> + * |\\\|/////////////////////////////////| VF mem |//////////////////////|\\\|
> + * +---+---------------------------------+----------+----------------------+---+
> + *
> + * Hardware enforced access rules before migration:
> + *
> + * |<------- inaccessible for VF ------->|<VF owned>|<-- inaccessible for VF ->|
> + *
> + * drm_mm nodes used for tracking allocations:
> + *
> + * |<----------- balloon ------------>|<- nodes->|<----- balloon ------>|
> + *
> + * After the migration, GGTT area assigned to the VF might have shifted, either
> + * to lower or to higher address. But we expect the total size and extra areas to
> + * be identical, as migration can only happen between matching platforms.
> + * Below is an example of GGTT layout of the VF after migration. Content of the
> + * GGTT for VF has been moved to a new area, and we receive its address from GuC:
> + *
> + * +---+----------------------+----------+---------------------------------+---+
> + * |\\\|//////////////////////| VF mem |/////////////////////////////////|\\\|
> + * +---+----------------------+----------+---------------------------------+---+
> + *
> + * Hardware enforced access rules after migration:
> + *
> + * |<- inaccessible for VF -->|<VF owned>|<------- inaccessible for VF ------->|
> + *
> + * So the VF has a new slice of GGTT assigned, and during migration process, the
> + * memory content was copied to that new area. But the drm_mm nodes within xe kmd
> + * are still tracking allocations using the old addresses. The nodes within VF
> + * owned area have to be shifted, and balloon nodes need to be resized to
> + * properly mask out areas not owned by the VF.
> + *
> + * Fixed drm_mm nodes used for tracking allocations:
> + *
> + * |<------ balloon ------>|<- nodes->|<----------- balloon ----------->|
> + *
> + * Due to use of GPU profiles, we do not expect the old and new GGTT ares to
> + * overlap; but our node shifting will fix addresses properly regardless.
> + *
> + */
> + drm_mm_for_each_node_in_range_safe(node, tmpn, &ggtt->mm,
> + drm_mm_node_end(balloon_beg),
> + balloon_fin->start) {
> + drm_mm_remove_node(node);
> + list_add(&node->node_list, &temp_list_head);
> + }
> +
> + /* shift and re-add ballooning nodes */
> + if (drm_mm_node_allocated(balloon_beg))
> + drm_mm_remove_node(balloon_beg);
> + if (drm_mm_node_allocated(balloon_fin))
> + drm_mm_remove_node(balloon_fin);
> + balloon_beg->size += shift;
> + balloon_fin->start += shift;
> + balloon_fin->size -= shift;
> + if (balloon_beg->size != 0) {
> + err = drm_mm_reserve_node(&ggtt->mm, balloon_beg);
> + xe_tile_assert(ggtt->tile, !err);
> + }
> + if (balloon_fin->size != 0) {
> + err = drm_mm_reserve_node(&ggtt->mm, balloon_fin);
> + xe_tile_assert(ggtt->tile, !err);
> + }
> +
> + /*
> + * Now the GGTT VM contains only nodes outside of area assigned to this VF.
> + * We can re-add all VF nodes with shifted offsets.
> + */
> + list_for_each_entry_safe(node, tmpn, &temp_list_head, node_list) {
> + list_del(&node->node_list);
> + node->start += shift;
> + err = drm_mm_reserve_node(&ggtt->mm, node);
> + xe_tile_assert(ggtt->tile, !err);
> + }
> +}
> +
> +/**
> + * xe_ggtt_node_shift_nodes - Shift GGTT nodes to adjust for a change in usable address range.
> + * @ggtt: the &xe_ggtt struct instance
> + * @balloon_beg: ggtt balloon node which preceds the area provisioned for current VF
> + * @balloon_fin: ggtt balloon node which follows the area provisioned for current VF
> + * @shift: change to the location of area provisioned for current VF
> + */
> +void xe_ggtt_node_shift_nodes(struct xe_ggtt *ggtt, struct xe_ggtt_node **balloon_beg,
> + struct xe_ggtt_node **balloon_fin, s64 shift)
> +{
> + struct drm_mm_node *balloon_mm_beg, *balloon_mm_end;
> + struct xe_ggtt_node *node;
> +
> + if (!*balloon_beg)
> + {
> + node = xe_ggtt_node_init(ggtt);
> + if (IS_ERR(node))
> + goto out;
> + node->base.color = 0;
> + node->base.flags = 0;
> + node->base.start = xe_wopcm_size(ggtt->tile->xe);
> + node->base.size = 0;
> + *balloon_beg = node;
> + }
> + balloon_mm_beg = &(*balloon_beg)->base;
> +
> + if (!*balloon_fin)
> + {
> + node = xe_ggtt_node_init(ggtt);
> + if (IS_ERR(node))
> + goto out;
> + node->base.color = 0;
> + node->base.flags = 0;
> + node->base.start = GUC_GGTT_TOP;
> + node->base.size = 0;
> + *balloon_fin = node;
> + }
> + balloon_mm_end = &(*balloon_fin)->base;
> +
> + xe_tile_assert(ggtt->tile, (*balloon_beg)->ggtt);
> + xe_tile_assert(ggtt->tile, (*balloon_fin)->ggtt);
> +
> + xe_ggtt_mm_shift_nodes(ggtt, balloon_mm_beg, balloon_mm_end, shift);
> +out:
> + if (*balloon_beg && !xe_ggtt_node_allocated(*balloon_beg))
> + {
> + node = *balloon_beg;
> + *balloon_beg = NULL;
> + xe_ggtt_node_fini(node);
> + }
> + if (*balloon_fin && !xe_ggtt_node_allocated(*balloon_fin))
> + {
> + node = *balloon_fin;
> + *balloon_fin = NULL;
> + xe_ggtt_node_fini(node);
> + }
> +}
> +
> /**
> * xe_ggtt_node_insert_locked - Locked version to insert a &xe_ggtt_node into the GGTT
> * @node: the &xe_ggtt_node to be inserted
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
> index 27e7d67de004..d9e133a155e6 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.h
> +++ b/drivers/gpu/drm/xe/xe_ggtt.h
> @@ -18,6 +18,8 @@ void xe_ggtt_node_fini(struct xe_ggtt_node *node);
> int xe_ggtt_node_insert_balloon(struct xe_ggtt_node *node,
> u64 start, u64 size);
> void xe_ggtt_node_remove_balloon(struct xe_ggtt_node *node);
> +void xe_ggtt_node_shift_nodes(struct xe_ggtt *ggtt, struct xe_ggtt_node **balloon_beg,
> + struct xe_ggtt_node **balloon_fin, s64 shift);
>
> int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32 align);
> int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> index a439261bf4d7..dbd7010f0117 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
> @@ -415,6 +415,7 @@ static int vf_get_ggtt_info(struct xe_gt *gt)
> xe_gt_sriov_dbg_verbose(gt, "GGTT %#llx-%#llx = %lluK\n",
> start, start + size - 1, size / SZ_1K);
>
> + config->ggtt_shift = start - (s64)config->ggtt_base;
btw, is it safe to keep ggtt_shift after we're done with fixups?
> config->ggtt_base = start;
> config->ggtt_size = size;
>
> @@ -938,6 +939,31 @@ int xe_gt_sriov_vf_query_runtime(struct xe_gt *gt)
> return err;
> }
>
> +/**
> + * xe_gt_sriov_vf_fixup_ggtt_nodes - Shift GGTT allocations to match assigned range.
> + * @gt: the &xe_gt struct instance
> + * Return: 0 on success, ENODATA if fixups are unnecessary
if you really need to distinguish between nop/done then bool as return
will be better, but I'm not sure that caller needs to know
if we need to know whether there was a shift, and thus we need to start
the fixup sequence, then maybe we should have a separate function that
returns (and maybe clears) the ggtt_shift
> + *
> + * Since Global GTT is not virtualized, each VF has an assigned range
> + * within the global space. This range might have changed during migration,
> + * which requires all memory addresses pointing to GGTT to be shifted.
> + */
> +int xe_gt_sriov_vf_fixup_ggtt_nodes(struct xe_gt *gt)
> +{
> + struct xe_gt_sriov_vf_selfconfig *config = >->sriov.vf.self_config;
> + struct xe_tile *tile = gt_to_tile(gt);
> + struct xe_ggtt *ggtt = tile->mem.ggtt;
> + s64 ggtt_shift;
> +
> + mutex_lock(&ggtt->lock);
> + ggtt_shift = config->ggtt_shift;
> + if (ggtt_shift)
> + xe_ggtt_node_shift_nodes(ggtt, &tile->sriov.vf.ggtt_balloon[0],
> + &tile->sriov.vf.ggtt_balloon[1], ggtt_shift);
maybe to make it a little simpler on the this xe_ggtt function side, we
should remove our balloon nodes before requesting shift_nodes(), and
then re-add balloon nodes here again?
> + mutex_unlock(&ggtt->lock);
> + return ggtt_shift ? 0 : ENODATA;
and it's quite unusual to return positive errno codes...
> +}
> +
> static int vf_runtime_reg_cmp(const void *a, const void *b)
> {
> const struct vf_runtime_reg *ra = a;
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h b/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
> index ba6c5d74e326..95a6c9c1dca0 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
> @@ -18,6 +18,7 @@ int xe_gt_sriov_vf_query_config(struct xe_gt *gt);
> int xe_gt_sriov_vf_connect(struct xe_gt *gt);
> int xe_gt_sriov_vf_query_runtime(struct xe_gt *gt);
> int xe_gt_sriov_vf_prepare_ggtt(struct xe_gt *gt);
> +int xe_gt_sriov_vf_fixup_ggtt_nodes(struct xe_gt *gt);
> int xe_gt_sriov_vf_notify_resfix_done(struct xe_gt *gt);
> void xe_gt_sriov_vf_migrated_event_handler(struct xe_gt *gt);
>
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
> index a57f13b5afcd..5ccbdf8d08b6 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
> @@ -40,6 +40,8 @@ struct xe_gt_sriov_vf_selfconfig {
> u64 ggtt_base;
> /** @ggtt_size: assigned size of the GGTT region. */
> u64 ggtt_size;
> + /** @ggtt_shift: difference in ggtt_base on last migration */
> + s64 ggtt_shift;
> /** @lmem_size: assigned size of the LMEM. */
> u64 lmem_size;
> /** @num_ctxs: assigned number of GuC submission context IDs. */
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
> index c1275e64aa9c..4ee8fc70a744 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf.c
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
> @@ -7,6 +7,7 @@
>
> #include "xe_assert.h"
> #include "xe_device.h"
> +#include "xe_gt.h"
> #include "xe_gt_sriov_printk.h"
> #include "xe_gt_sriov_vf.h"
> #include "xe_pm.h"
> @@ -170,6 +171,26 @@ static bool vf_post_migration_imminent(struct xe_device *xe)
> work_pending(&xe->sriov.vf.migration.worker);
> }
>
> +static int vf_post_migration_fixup_ggtt_nodes(struct xe_device *xe)
> +{
> + struct xe_tile *tile;
> + unsigned int id;
> + int err;
> +
> + for_each_tile(tile, xe, id) {
> + struct xe_gt *gt = tile->primary_gt;
> + int ret;
> +
> + /* media doesn't have its own ggtt */
> + if (xe_gt_is_media_type(gt))
primary_gt can't be MEDIA_TYPE
> + continue;
> + ret = xe_gt_sriov_vf_fixup_ggtt_nodes(gt);
> + if (ret != ENODATA)
> + err = ret;
for multi-tile platforms, this could overwrite previous error/status
> + }
> + return err;
err might be still uninitialized here
> +}
> +
> /*
> * Notify all GuCs about resource fixups apply finished.
> */
> @@ -201,6 +222,7 @@ static void vf_post_migration_recovery(struct xe_device *xe)
> if (unlikely(err))
> goto fail;
>
> + err = vf_post_migration_fixup_ggtt_nodes(xe);
> /* FIXME: add the recovery steps */
> vf_post_migration_notify_resfix_done(xe);
> xe_pm_runtime_put(xe);
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 3/3] drm/xe/vf: Fixup CTB send buffer messages after migration
2025-03-06 22:21 ` [PATCH v4 3/3] drm/xe/vf: Fixup CTB send buffer messages after migration Tomasz Lis
@ 2025-03-14 20:46 ` Michal Wajdeczko
2025-03-14 22:11 ` Lis, Tomasz
0 siblings, 1 reply; 23+ messages in thread
From: Michal Wajdeczko @ 2025-03-14 20:46 UTC (permalink / raw)
To: Tomasz Lis, intel-xe; +Cc: Michał Winiarski, Piotr Piórkowski
On 06.03.2025 23:21, Tomasz Lis wrote:
> During post-migration recovery of a VF, it is necessary to update
> GGTT references included in messages which are going to be sent
> to GuC. GuC will start consuming messages after VF KMD will inform
> it about fixups being done; before that, the VF KMD is expected
> to update any H2G messages which are already in send buffer but
> were not consumed by GuC.
>
> Only a small subset of messages allowed for VFs have GGTT references
> in them. This patch adds the functionality to parse the CTB send
> ring buffer and shift addresses contained within.
>
> While fixing the CTB content, ct->lock is not taken. This means
> the only barrier taken remains GGTT address lock - which is ok,
> because only requests with GGTT addresses matter, but it also means
> tail changes can happen during the CTB fixups execution (which may
> be ignored as any new messages will not have anything to fix).
>
> The GGTT address locking will be introduced in a future series.
>
> v2: removed storing shift as that's now done in VMA nodes patch;
> macros to inlines; warns to asserts; log messages fixes (Michal)
> v3: Removed inline keywords, enums for offsets in CTB messages,
> less error messages, if return unused then made functs void (Michal)
> v4: Update the cached head before starting fixups
>
> Signed-off-by: Tomasz Lis <tomasz.lis@intel.com>
> ---
> drivers/gpu/drm/xe/abi/guc_actions_abi.h | 7 ++
> drivers/gpu/drm/xe/xe_guc_ct.c | 147 +++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_guc_ct.h | 2 +
> drivers/gpu/drm/xe/xe_guc_submit.c | 4 +
> drivers/gpu/drm/xe/xe_sriov_vf.c | 18 +++
> 5 files changed, 178 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/abi/guc_actions_abi.h b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
> index ec516e838ee8..dde6cb5a6be9 100644
> --- a/drivers/gpu/drm/xe/abi/guc_actions_abi.h
> +++ b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
> @@ -160,6 +160,13 @@ enum xe_guc_preempt_options {
> XE_GUC_PREEMPT_OPTION_DROP_SUBMIT_Q = 0x8,
> };
>
> +enum xe_guc_register_context_multi_lrc_param_offsets {
> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC = 5,
> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE = 7,
> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN = 10,
> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA = 11
> +};
> +
> enum xe_guc_report_status {
> XE_GUC_REPORT_STATUS_UNKNOWN = 0x0,
> XE_GUC_REPORT_STATUS_ACKED = 0x1,
> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
> index 72ad576fc18e..6f19bf9565ba 100644
> --- a/drivers/gpu/drm/xe/xe_guc_ct.c
> +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
> @@ -84,6 +84,8 @@ struct g2h_fence {
> bool done;
> };
>
> +#define make_u64(hi, lo) ((u64)((u64)(u32)(hi) << 32 | (u32)(lo)))
> +
> static void g2h_fence_init(struct g2h_fence *g2h_fence, u32 *response_buffer)
> {
> g2h_fence->response_buffer = response_buffer;
> @@ -1622,6 +1624,151 @@ static void g2h_worker_func(struct work_struct *w)
> receive_g2h(ct);
> }
>
> +static u32 ctb_read32(struct xe_device *xe, struct iosys_map *cmds,
maybe to make this function more "ctb", pass ctb instead xe?
> + u32 head, u32 pos)
> +{
> + u32 msg[1];
> +
> + xe_map_memcpy_from(xe, msg, cmds, (head + pos) * sizeof(u32),
> + 1 * sizeof(u32));
> + return msg[0];
and looks almost like our deprecated xe_map_read32 ;)
> +}
> +
> +static void ctb_fixup64(struct xe_device *xe, struct iosys_map *cmds,
> + u32 head, u32 pos, s64 shift)
> +{
> + u32 msg[2];
> + u64 offset;
> +
> + xe_map_memcpy_from(xe, msg, cmds, (head + pos) * sizeof(u32),
> + 2 * sizeof(u32));
> + offset = make_u64(msg[1], msg[0]);
> + offset += shift;
> + msg[0] = lower_32_bits(offset);
> + msg[1] = upper_32_bits(offset);
> + xe_map_memcpy_to(xe, cmds, (head + pos) * sizeof(u32), msg, 2 * sizeof(u32));
> +}
> +
> +/*
> + * ct_update_addresses_in_message - Shift any GGTT addresses within
nit: as this is *not* a real kernel-doc, then maybe drop function name
and keep only description plus params?
> + * a single message left within CTB from before post-migration recovery.
> + * @ct: pointer to CT struct of the target GuC
> + * @cmds: iomap buffer containing CT messages
> + * @head: start of the target message within the buffer
> + * @len: length of the target message
> + * @size: size of the commands buffer
> + * @shift: the address shift to be added to each GGTT reference
> + */
> +static void ct_update_addresses_in_message(struct xe_guc_ct *ct,
> + struct iosys_map *cmds, u32 head,
> + u32 len, u32 size, s64 shift)
> +{
> + struct xe_device *xe = ct_to_xe(ct);
> + u32 action, i, n;
> + u32 msg[1];
> +
> + xe_map_memcpy_from(xe, msg, cmds, head * sizeof(u32),
> + 1 * sizeof(u32));
ctb_read32() didn't work here?
> + action = FIELD_GET(GUC_HXG_REQUEST_MSG_0_ACTION, msg[0]);
> + switch (action) {
> + case XE_GUC_ACTION_REGISTER_CONTEXT:
> + case XE_GUC_ACTION_REGISTER_CONTEXT_MULTI_LRC:
> + /* field wq_desc */
as we have enums that describe field offsets, we don't need to add those
small now redundant comments
> + ctb_fixup64(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC, shift);
> + /* field wq_base */
> + ctb_fixup64(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE, shift);
> + if (action == XE_GUC_ACTION_REGISTER_CONTEXT_MULTI_LRC) {
> + /* field number_children */
> + n = ctb_read32(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN);
> + /* field hwlrca and child lrcas */
> + for (i = 0; i < n; i++)
> + ctb_fixup64(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA + 2 * i, shift);
did you run checkpatch.pl ? line is quite long
> + } else {
> + /* field hwlrca */
> + ctb_fixup64(xe, cmds, head, 10, shift);
> + }
> + break;
> + default:
> + break;
> + }
> +}
> +
nit: no short description here ;)
> +static int ct_update_addresses_in_buffer(struct xe_guc_ct *ct,
> + struct guc_ctb *h2g,
> + s64 shift, u32 *mhead, s32 avail)
> +{
> + struct xe_device *xe = ct_to_xe(ct);
> + u32 head = *mhead;
> + u32 size = h2g->info.size;
> + u32 msg[1];
> + u32 len;
> +
> + /* Read header */
> + xe_map_memcpy_from(xe, msg, &h2g->cmds, sizeof(u32) * head,
> + sizeof(u32));
ctb_read32() didn't work here?
> + len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) + GUC_CTB_MSG_MIN_LEN;
> +
> + if (unlikely(len > (u32)avail)) {
> + struct xe_gt *gt = ct_to_gt(ct);
> +
> + xe_gt_err(gt, "H2G channel broken on read, avail=%d, len=%d, fixups skipped\n",
> + avail, len);
> + return 0;
in caller we do mark ctb as broken, why are we silent here?
> + }
> +
> + head = (head + 1) % size;
> + ct_update_addresses_in_message(ct, &h2g->cmds, head, len - 1, size, shift);
> + *mhead = (head + len - 1) % size;
> +
> + return avail - len;
> +}
> +
> +/**
> + * xe_guc_ct_fixup_messages_with_ggtt - Fixup any pending H2G CTB messages by updating
> + * GGTT offsets in their payloads.
> + * @ct: pointer to CT struct of the target GuC
> + * @ggtt_shift: shift to be added to all GGTT addresses within the CTB
> + */
> +void xe_guc_ct_fixup_messages_with_ggtt(struct xe_guc_ct *ct, s64 ggtt_shift)
> +{
> + struct xe_guc *guc = ct_to_guc(ct);
> + struct xe_gt *gt = guc_to_gt(guc);
> + struct guc_ctb *h2g = &ct->ctbs.h2g;
> + u32 head, tail, size;
> + s32 avail;
> +
> + if (unlikely(h2g->info.broken))
> + return;
> +
> + h2g->info.head = desc_read(ct_to_xe(ct), h2g, head);
> + head = h2g->info.head;
> + tail = READ_ONCE(h2g->info.tail);
> + size = h2g->info.size;
> +
> + xe_gt_assert(gt, head <= size);
we shouldn't trust GuC, assert is not enough
goto corrupted; if this happens
> +
> + if (unlikely(tail >= size))
> + goto corrupted;
> +
> + avail = tail - head;
> +
> + /* beware of buffer wrap case */
> + if (unlikely(avail < 0))
> + avail += size;
> + xe_gt_dbg(gt, "available %d (%u:%u:%u)\n", avail, head, tail, size);
> + xe_gt_assert(gt, avail >= 0);
> +
> + while (avail > 0)
> + avail = ct_update_addresses_in_buffer(ct, h2g, ggtt_shift, &head, avail);
maybe pass &avail like you did with head?
> +
> + return;
> +
> +corrupted:
> + xe_gt_err(gt, "Corrupted H2G descriptor head=%u tail=%u size=%u\n",
shouldn't we mention that "fixups can't be done" ?
> + head, tail, size);
> + h2g->info.broken = true;
returning an error code wouldn't really hurt ...
> +}
> +
> static struct xe_guc_ct_snapshot *guc_ct_snapshot_alloc(struct xe_guc_ct *ct, bool atomic,
> bool want_ctb)
> {
> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/xe_guc_ct.h
> index 82c4ae458dda..5649bda82823 100644
> --- a/drivers/gpu/drm/xe/xe_guc_ct.h
> +++ b/drivers/gpu/drm/xe/xe_guc_ct.h
> @@ -22,6 +22,8 @@ void xe_guc_ct_snapshot_print(struct xe_guc_ct_snapshot *snapshot, struct drm_pr
> void xe_guc_ct_snapshot_free(struct xe_guc_ct_snapshot *snapshot);
> void xe_guc_ct_print(struct xe_guc_ct *ct, struct drm_printer *p, bool want_ctb);
>
> +void xe_guc_ct_fixup_messages_with_ggtt(struct xe_guc_ct *ct, s64 ggtt_shift);
> +
> static inline bool xe_guc_ct_enabled(struct xe_guc_ct *ct)
> {
> return ct->state == XE_GUC_CT_STATE_ENABLED;
> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> index b95934055f72..4442fb00d0aa 100644
> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> @@ -469,12 +469,16 @@ static void __register_mlrc_exec_queue(struct xe_guc *guc,
> action[len++] = info->context_idx;
> action[len++] = info->engine_class;
> action[len++] = info->engine_submit_mask;
> + xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC);
> action[len++] = info->wq_desc_lo;
> action[len++] = info->wq_desc_hi;
> + xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE);
> action[len++] = info->wq_base_lo;
> action[len++] = info->wq_base_hi;
> action[len++] = info->wq_size;
> + xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN);
> action[len++] = q->width;
> + xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA);
> action[len++] = info->hwlrca_lo;
> action[len++] = info->hwlrca_hi;
nit: maybe this chunk, together with introduction of above enums, should
be a separate patch?
>
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
> index 4ee8fc70a744..cd759579b9b4 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf.c
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
> @@ -10,6 +10,7 @@
> #include "xe_gt.h"
> #include "xe_gt_sriov_printk.h"
> #include "xe_gt_sriov_vf.h"
> +#include "xe_guc_ct.h"
> #include "xe_pm.h"
> #include "xe_sriov.h"
> #include "xe_sriov_printk.h"
> @@ -158,6 +159,20 @@ static int vf_post_migration_requery_guc(struct xe_device *xe)
> return ret;
> }
>
> +static void vf_post_migration_fixup_ctb(struct xe_device *xe)
> +{
> + struct xe_gt *gt;
> + unsigned int id;
> +
> + xe_assert(xe, IS_SRIOV_VF(xe));
> +
> + for_each_gt(gt, xe, id) {
> + struct xe_gt_sriov_vf_selfconfig *config = >->sriov.vf.self_config;
instead of open coding just add a helper to query the ggtt_shift
s64 xe_gt_sriov_vf_ggtt_shift(gt) { }
> +
> + xe_guc_ct_fixup_messages_with_ggtt(>->uc.guc.ct, config->ggtt_shift);
> + }
> +}
> +
> /*
> * vf_post_migration_imminent - Check if post-restore recovery is coming.
> * @xe: the &xe_device struct instance
> @@ -224,6 +239,9 @@ static void vf_post_migration_recovery(struct xe_device *xe)
>
> err = vf_post_migration_fixup_ggtt_nodes(xe);
> /* FIXME: add the recovery steps */
> + if (err != ENODATA)
> + vf_post_migration_fixup_ctb(xe);
> +
do we need to have for_each_gt inside every step?
maybe the loop should be here?
for_each_tile() {
shift = vf_reset_ggtt_shift(tile->primary_gt)
if (shift) {
vf_fixup_nodes(tile)
vf_fixup_ctb(tile->primary_gt)
if (tile->media_gt)
vf_fixup_ctb(tile->media_gt)
}
}
> vf_post_migration_notify_resfix_done(xe);
> xe_pm_runtime_put(xe);
> drm_notice(&xe->drm, "migration recovery ended\n");
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 3/3] drm/xe/vf: Fixup CTB send buffer messages after migration
2025-03-14 20:46 ` Michal Wajdeczko
@ 2025-03-14 22:11 ` Lis, Tomasz
2025-03-15 12:59 ` Michal Wajdeczko
0 siblings, 1 reply; 23+ messages in thread
From: Lis, Tomasz @ 2025-03-14 22:11 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Michał Winiarski, Piotr Piórkowski
[-- Attachment #1: Type: text/plain, Size: 14705 bytes --]
On 14.03.2025 21:46, Michal Wajdeczko wrote:
>
> On 06.03.2025 23:21, Tomasz Lis wrote:
>> During post-migration recovery of a VF, it is necessary to update
>> GGTT references included in messages which are going to be sent
>> to GuC. GuC will start consuming messages after VF KMD will inform
>> it about fixups being done; before that, the VF KMD is expected
>> to update any H2G messages which are already in send buffer but
>> were not consumed by GuC.
>>
>> Only a small subset of messages allowed for VFs have GGTT references
>> in them. This patch adds the functionality to parse the CTB send
>> ring buffer and shift addresses contained within.
>>
>> While fixing the CTB content, ct->lock is not taken. This means
>> the only barrier taken remains GGTT address lock - which is ok,
>> because only requests with GGTT addresses matter, but it also means
>> tail changes can happen during the CTB fixups execution (which may
>> be ignored as any new messages will not have anything to fix).
>>
>> The GGTT address locking will be introduced in a future series.
>>
>> v2: removed storing shift as that's now done in VMA nodes patch;
>> macros to inlines; warns to asserts; log messages fixes (Michal)
>> v3: Removed inline keywords, enums for offsets in CTB messages,
>> less error messages, if return unused then made functs void (Michal)
>> v4: Update the cached head before starting fixups
>>
>> Signed-off-by: Tomasz Lis<tomasz.lis@intel.com>
>> ---
>> drivers/gpu/drm/xe/abi/guc_actions_abi.h | 7 ++
>> drivers/gpu/drm/xe/xe_guc_ct.c | 147 +++++++++++++++++++++++
>> drivers/gpu/drm/xe/xe_guc_ct.h | 2 +
>> drivers/gpu/drm/xe/xe_guc_submit.c | 4 +
>> drivers/gpu/drm/xe/xe_sriov_vf.c | 18 +++
>> 5 files changed, 178 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/xe/abi/guc_actions_abi.h b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
>> index ec516e838ee8..dde6cb5a6be9 100644
>> --- a/drivers/gpu/drm/xe/abi/guc_actions_abi.h
>> +++ b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
>> @@ -160,6 +160,13 @@ enum xe_guc_preempt_options {
>> XE_GUC_PREEMPT_OPTION_DROP_SUBMIT_Q = 0x8,
>> };
>>
>> +enum xe_guc_register_context_multi_lrc_param_offsets {
>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC = 5,
>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE = 7,
>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN = 10,
>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA = 11
>> +};
>> +
>> enum xe_guc_report_status {
>> XE_GUC_REPORT_STATUS_UNKNOWN = 0x0,
>> XE_GUC_REPORT_STATUS_ACKED = 0x1,
>> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
>> index 72ad576fc18e..6f19bf9565ba 100644
>> --- a/drivers/gpu/drm/xe/xe_guc_ct.c
>> +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
>> @@ -84,6 +84,8 @@ struct g2h_fence {
>> bool done;
>> };
>>
>> +#define make_u64(hi, lo) ((u64)((u64)(u32)(hi) << 32 | (u32)(lo)))
>> +
>> static void g2h_fence_init(struct g2h_fence *g2h_fence, u32 *response_buffer)
>> {
>> g2h_fence->response_buffer = response_buffer;
>> @@ -1622,6 +1624,151 @@ static void g2h_worker_func(struct work_struct *w)
>> receive_g2h(ct);
>> }
>>
>> +static u32 ctb_read32(struct xe_device *xe, struct iosys_map *cmds,
> maybe to make this function more "ctb", pass ctb instead xe?
You mean `struct xe_guc_ct *ct`?
I don't understand, why would we do this? We don't even need `ct` there.
That would just add another `ct_to_xe(ct)`.
If we're adjusting parameters to what looks nicer rather than what is
really necessary, then why `xe_map_memcpy_from` accepts `xe` and not a `bo`?
>
>> + u32 head, u32 pos)
>> +{
>> + u32 msg[1];
>> +
>> + xe_map_memcpy_from(xe, msg, cmds, (head + pos) * sizeof(u32),
>> + 1 * sizeof(u32));
>> + return msg[0];
> and looks almost like our deprecated xe_map_read32 ;)
yes, it does look similar. But I assume we don't want to reuse that?
>
>> +}
>> +
>> +static void ctb_fixup64(struct xe_device *xe, struct iosys_map *cmds,
>> + u32 head, u32 pos, s64 shift)
>> +{
>> + u32 msg[2];
>> + u64 offset;
>> +
>> + xe_map_memcpy_from(xe, msg, cmds, (head + pos) * sizeof(u32),
>> + 2 * sizeof(u32));
>> + offset = make_u64(msg[1], msg[0]);
>> + offset += shift;
>> + msg[0] = lower_32_bits(offset);
>> + msg[1] = upper_32_bits(offset);
>> + xe_map_memcpy_to(xe, cmds, (head + pos) * sizeof(u32), msg, 2 * sizeof(u32));
>> +}
>> +
>> +/*
>> + * ct_update_addresses_in_message - Shift any GGTT addresses within
> nit: as this is *not* a real kernel-doc, then maybe drop function name
> and keep only description plus params?
will do, even though I don't know why we break the sibling rules which
could be easily kept.
>
>> + * a single message left within CTB from before post-migration recovery.
>> + * @ct: pointer to CT struct of the target GuC
>> + * @cmds: iomap buffer containing CT messages
>> + * @head: start of the target message within the buffer
>> + * @len: length of the target message
>> + * @size: size of the commands buffer
>> + * @shift: the address shift to be added to each GGTT reference
>> + */
>> +static void ct_update_addresses_in_message(struct xe_guc_ct *ct,
>> + struct iosys_map *cmds, u32 head,
>> + u32 len, u32 size, s64 shift)
>> +{
>> + struct xe_device *xe = ct_to_xe(ct);
>> + u32 action, i, n;
>> + u32 msg[1];
>> +
>> + xe_map_memcpy_from(xe, msg, cmds, head * sizeof(u32),
>> + 1 * sizeof(u32));
> ctb_read32() didn't work here?
It would. For G2H and H2G messages we always use FIELD_GET on an array,
and field name contains index in that array.
So, I consider this way of writing it more standard within Xe, and
therefore easier to understand. Though no strong opinion - let me know
if you want this changed.
>
>> + action = FIELD_GET(GUC_HXG_REQUEST_MSG_0_ACTION, msg[0]);
>> + switch (action) {
>> + case XE_GUC_ACTION_REGISTER_CONTEXT:
>> + case XE_GUC_ACTION_REGISTER_CONTEXT_MULTI_LRC:
>> + /* field wq_desc */
> as we have enums that describe field offsets, we don't need to add those
> small now redundant comments
will remove.
>
>> + ctb_fixup64(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC, shift);
>> + /* field wq_base */
>> + ctb_fixup64(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE, shift);
>> + if (action == XE_GUC_ACTION_REGISTER_CONTEXT_MULTI_LRC) {
>> + /* field number_children */
>> + n = ctb_read32(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN);
>> + /* field hwlrca and child lrcas */
>> + for (i = 0; i < n; i++)
>> + ctb_fixup64(xe, cmds, head, XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA + 2 * i, shift);
> did you run checkpatch.pl ? line is quite long
it does complain. Will fix.
>
>> + } else {
>> + /* field hwlrca */
>> + ctb_fixup64(xe, cmds, head, 10, shift);
>> + }
>> + break;
>> + default:
>> + break;
>> + }
>> +}
>> +
> nit: no short description here ;)
why would it need one? sub-function (ct_update_addresses_in_message) has
documentation, caller also has documentation.
>
>> +static int ct_update_addresses_in_buffer(struct xe_guc_ct *ct,
>> + struct guc_ctb *h2g,
>> + s64 shift, u32 *mhead, s32 avail)
>> +{
>> + struct xe_device *xe = ct_to_xe(ct);
>> + u32 head = *mhead;
>> + u32 size = h2g->info.size;
>> + u32 msg[1];
>> + u32 len;
>> +
>> + /* Read header */
>> + xe_map_memcpy_from(xe, msg, &h2g->cmds, sizeof(u32) * head,
>> + sizeof(u32));
> ctb_read32() didn't work here?
Like before, for consistency. Will change on request.
>
>> + len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) + GUC_CTB_MSG_MIN_LEN;
>> +
>> + if (unlikely(len > (u32)avail)) {
>> + struct xe_gt *gt = ct_to_gt(ct);
>> +
>> + xe_gt_err(gt, "H2G channel broken on read, avail=%d, len=%d, fixups skipped\n",
>> + avail, len);
>> + return 0;
> in caller we do mark ctb as broken, why are we silent here?
Incorrect head/tail of a CTB is an issue of completely different caliber
than a message with invalid length.
The invalid message is actually more likely to be a racing condition
rather than CTB damage.
>> + }
>> +
>> + head = (head + 1) % size;
>> + ct_update_addresses_in_message(ct, &h2g->cmds, head, len - 1, size, shift);
>> + *mhead = (head + len - 1) % size;
>> +
>> + return avail - len;
>> +}
>> +
>> +/**
>> + * xe_guc_ct_fixup_messages_with_ggtt - Fixup any pending H2G CTB messages by updating
>> + * GGTT offsets in their payloads.
>> + * @ct: pointer to CT struct of the target GuC
>> + * @ggtt_shift: shift to be added to all GGTT addresses within the CTB
>> + */
>> +void xe_guc_ct_fixup_messages_with_ggtt(struct xe_guc_ct *ct, s64 ggtt_shift)
>> +{
>> + struct xe_guc *guc = ct_to_guc(ct);
>> + struct xe_gt *gt = guc_to_gt(guc);
>> + struct guc_ctb *h2g = &ct->ctbs.h2g;
>> + u32 head, tail, size;
>> + s32 avail;
>> +
>> + if (unlikely(h2g->info.broken))
>> + return;
>> +
>> + h2g->info.head = desc_read(ct_to_xe(ct), h2g, head);
>> + head = h2g->info.head;
>> + tail = READ_ONCE(h2g->info.tail);
>> + size = h2g->info.size;
>> +
>> + xe_gt_assert(gt, head <= size);
> we shouldn't trust GuC, assert is not enough
> goto corrupted; if this happens
ok.
>
>> +
>> + if (unlikely(tail >= size))
>> + goto corrupted;
>> +
>> + avail = tail - head;
>> +
>> + /* beware of buffer wrap case */
>> + if (unlikely(avail < 0))
>> + avail += size;
>> + xe_gt_dbg(gt, "available %d (%u:%u:%u)\n", avail, head, tail, size);
>> + xe_gt_assert(gt, avail >= 0);
>> +
>> + while (avail > 0)
>> + avail = ct_update_addresses_in_buffer(ct, h2g, ggtt_shift, &head, avail);
> maybe pass &avail like you did with head?
do we have a precedence for this approach being preferred?
>
>> +
>> + return;
>> +
>> +corrupted:
>> + xe_gt_err(gt, "Corrupted H2G descriptor head=%u tail=%u size=%u\n",
> shouldn't we mention that "fixups can't be done" ?
Makes sense, the messages will be still received by GuC after all. Will
change.
>
>> + head, tail, size);
>> + h2g->info.broken = true;
> returning an error code wouldn't really hurt ...
Since when do we return error codes which are not going to be used?
Didn't you asked for a change to `void` in previous round of the review?
> + for_each_gt(gt, xe, id) {
> + struct xe_gt_sriov_vf_selfconfig *config = >->sriov.vf.self_config;
> +
> + xe_guc_ct_update_addresses(>->uc.guc.ct, config->ggtt_shift);
> this function returns int, shouldn't we check for errors?
> if not then maybe make it void
>
>> +}
>> +
>> static struct xe_guc_ct_snapshot *guc_ct_snapshot_alloc(struct xe_guc_ct *ct, bool atomic,
>> bool want_ctb)
>> {
>> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/xe_guc_ct.h
>> index 82c4ae458dda..5649bda82823 100644
>> --- a/drivers/gpu/drm/xe/xe_guc_ct.h
>> +++ b/drivers/gpu/drm/xe/xe_guc_ct.h
>> @@ -22,6 +22,8 @@ void xe_guc_ct_snapshot_print(struct xe_guc_ct_snapshot *snapshot, struct drm_pr
>> void xe_guc_ct_snapshot_free(struct xe_guc_ct_snapshot *snapshot);
>> void xe_guc_ct_print(struct xe_guc_ct *ct, struct drm_printer *p, bool want_ctb);
>>
>> +void xe_guc_ct_fixup_messages_with_ggtt(struct xe_guc_ct *ct, s64 ggtt_shift);
>> +
>> static inline bool xe_guc_ct_enabled(struct xe_guc_ct *ct)
>> {
>> return ct->state == XE_GUC_CT_STATE_ENABLED;
>> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
>> index b95934055f72..4442fb00d0aa 100644
>> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
>> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
>> @@ -469,12 +469,16 @@ static void __register_mlrc_exec_queue(struct xe_guc *guc,
>> action[len++] = info->context_idx;
>> action[len++] = info->engine_class;
>> action[len++] = info->engine_submit_mask;
>> + xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC);
>> action[len++] = info->wq_desc_lo;
>> action[len++] = info->wq_desc_hi;
>> + xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE);
>> action[len++] = info->wq_base_lo;
>> action[len++] = info->wq_base_hi;
>> action[len++] = info->wq_size;
>> + xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN);
>> action[len++] = q->width;
>> + xe_gt_assert(guc_to_gt(guc), len == XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA);
>> action[len++] = info->hwlrca_lo;
>> action[len++] = info->hwlrca_hi;
> nit: maybe this chunk, together with introduction of above enums, should
> be a separate patch?
Ok, can do that. It was introduced on your request, after all.
>
>>
>> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
>> index 4ee8fc70a744..cd759579b9b4 100644
>> --- a/drivers/gpu/drm/xe/xe_sriov_vf.c
>> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
>> @@ -10,6 +10,7 @@
>> #include "xe_gt.h"
>> #include "xe_gt_sriov_printk.h"
>> #include "xe_gt_sriov_vf.h"
>> +#include "xe_guc_ct.h"
>> #include "xe_pm.h"
>> #include "xe_sriov.h"
>> #include "xe_sriov_printk.h"
>> @@ -158,6 +159,20 @@ static int vf_post_migration_requery_guc(struct xe_device *xe)
>> return ret;
>> }
>>
>> +static void vf_post_migration_fixup_ctb(struct xe_device *xe)
>> +{
>> + struct xe_gt *gt;
>> + unsigned int id;
>> +
>> + xe_assert(xe, IS_SRIOV_VF(xe));
>> +
>> + for_each_gt(gt, xe, id) {
>> + struct xe_gt_sriov_vf_selfconfig *config = >->sriov.vf.self_config;
> instead of open coding just add a helper to query the ggtt_shift
>
> s64 xe_gt_sriov_vf_ggtt_shift(gt) { }
This is already a small function so I can't say I see the point. But
sure, can do that.
>
>> +
>> + xe_guc_ct_fixup_messages_with_ggtt(>->uc.guc.ct, config->ggtt_shift);
>> + }
>> +}
>> +
>> /*
>> * vf_post_migration_imminent - Check if post-restore recovery is coming.
>> * @xe: the &xe_device struct instance
>> @@ -224,6 +239,9 @@ static void vf_post_migration_recovery(struct xe_device *xe)
>>
>> err = vf_post_migration_fixup_ggtt_nodes(xe);
>> /* FIXME: add the recovery steps */
>> + if (err != ENODATA)
>> + vf_post_migration_fixup_ctb(xe);
>> +
> do we need to have for_each_gt inside every step?
> maybe the loop should be here?
>
> for_each_tile() {
> shift = vf_reset_ggtt_shift(tile->primary_gt)
> if (shift) {
> vf_fixup_nodes(tile)
> vf_fixup_ctb(tile->primary_gt)
> if (tile->media_gt)
> vf_fixup_ctb(tile->media_gt)
> }
> }
What is the benefit? Doesn't the current code look cleaner?
Isn't it better when all drm_mm nodes are fixed at the point we start
applying fixups to other places?
I don't think it's a good idea.
-Tomasz
>
>
>> vf_post_migration_notify_resfix_done(xe);
>> xe_pm_runtime_put(xe);
>> drm_notice(&xe->drm, "migration recovery ended\n");
[-- Attachment #2: Type: text/html, Size: 19948 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration
2025-03-14 18:22 ` Michal Wajdeczko
@ 2025-03-14 23:45 ` Lis, Tomasz
2025-03-15 14:27 ` Michal Wajdeczko
0 siblings, 1 reply; 23+ messages in thread
From: Lis, Tomasz @ 2025-03-14 23:45 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Michał Winiarski, Piotr Piórkowski
[-- Attachment #1: Type: text/plain, Size: 15850 bytes --]
On 14.03.2025 19:22, Michal Wajdeczko wrote:
>
> On 06.03.2025 23:21, Tomasz Lis wrote:
>> We have only one GGTT for all IOV functions, with each VF having assigned
>> a range of addresses for its use. After migration, a VF can receive a
>> different range of addresses than it had initially.
>>
>> This implements shifting GGTT addresses within drm_mm nodes, so that
>> VMAs stay valid after migration. This will make the driver use new
>> addresses when accessing GGTT from the moment the shifting ends.
>>
>> By taking the ggtt->lock for the period of VMA fixups, this change
>> also adds constraint on that mutex. Any locks used during the recovery
>> cannot ever wait for hardware response - because after migration,
>> the hardware will not do anything until fixups are finished.
>>
>> v2: Moved some functs to xe_ggtt.c; moved shift computation to just
>> after querying; improved documentation; switched some warns to asserts;
>> skipping fixups when GGTT shift eq 0; iterating through tiles (Michal)
>> v3: Updated kerneldocs, removed unused funct, properly allocate
>> balloning nodes if non existent
>>
>> Signed-off-by: Tomasz Lis<tomasz.lis@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_ggtt.c | 163 ++++++++++++++++++++++
>> drivers/gpu/drm/xe/xe_ggtt.h | 2 +
>> drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 26 ++++
>> drivers/gpu/drm/xe/xe_gt_sriov_vf.h | 1 +
>> drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h | 2 +
>> drivers/gpu/drm/xe/xe_sriov_vf.c | 22 +++
>> 6 files changed, 216 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
>> index 5fcb2b4c2c13..6865d1cdd676 100644
>> --- a/drivers/gpu/drm/xe/xe_ggtt.c
>> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
>> @@ -489,6 +489,169 @@ void xe_ggtt_node_remove_balloon(struct xe_ggtt_node *node)
>> xe_ggtt_node_fini(node);
>> }
>>
>> +static u64 drm_mm_node_end(struct drm_mm_node *node)
>> +{
>> + return node->start + node->size;
>> +}
>> +
>> +static void xe_ggtt_mm_shift_nodes(struct xe_ggtt *ggtt, struct drm_mm_node *balloon_beg,
>> + struct drm_mm_node *balloon_fin, s64 shift)
>> +{
>> + struct drm_mm_node *node, *tmpn;
>> + LIST_HEAD(temp_list_head);
>> + int err;
>> +
>> + lockdep_assert_held(&ggtt->lock);
>> +
>> + /*
>> + * Move nodes, from range previously assigned to this VF, into temp list.
>> + *
>> + * The balloon_beg and balloon_fin nodes are there to eliminate unavailable
>> + * ranges from use: first reserves the GGTT area below the range for current VF,
>> + * and second reserves area above.
>> + *
>> + * Below is a GGTT layout of example VF, with a certain address range assigned to
>> + * said VF, and inaccessible areas above and below:
>> + *
>> + * 0 4GiB
>> + * |<--------------------------- Total GGTT size ----------------------------->|
>> + * WOPCM GUC_TOP
>> + * |<-------------- Area mappable by xe_ggtt instance ---------------->|
>> + *
>> + * +---+---------------------------------+----------+----------------------+---+
>> + * |\\\|/////////////////////////////////| VF mem |//////////////////////|\\\|
>> + * +---+---------------------------------+----------+----------------------+---+
>> + *
>> + * Hardware enforced access rules before migration:
>> + *
>> + * |<------- inaccessible for VF ------->|<VF owned>|<-- inaccessible for VF ->|
>> + *
>> + * drm_mm nodes used for tracking allocations:
>> + *
>> + * |<----------- balloon ------------>|<- nodes->|<----- balloon ------>|
>> + *
>> + * After the migration, GGTT area assigned to the VF might have shifted, either
>> + * to lower or to higher address. But we expect the total size and extra areas to
>> + * be identical, as migration can only happen between matching platforms.
>> + * Below is an example of GGTT layout of the VF after migration. Content of the
>> + * GGTT for VF has been moved to a new area, and we receive its address from GuC:
>> + *
>> + * +---+----------------------+----------+---------------------------------+---+
>> + * |\\\|//////////////////////| VF mem |/////////////////////////////////|\\\|
>> + * +---+----------------------+----------+---------------------------------+---+
>> + *
>> + * Hardware enforced access rules after migration:
>> + *
>> + * |<- inaccessible for VF -->|<VF owned>|<------- inaccessible for VF ------->|
>> + *
>> + * So the VF has a new slice of GGTT assigned, and during migration process, the
>> + * memory content was copied to that new area. But the drm_mm nodes within xe kmd
>> + * are still tracking allocations using the old addresses. The nodes within VF
>> + * owned area have to be shifted, and balloon nodes need to be resized to
>> + * properly mask out areas not owned by the VF.
>> + *
>> + * Fixed drm_mm nodes used for tracking allocations:
>> + *
>> + * |<------ balloon ------>|<- nodes->|<----------- balloon ----------->|
>> + *
>> + * Due to use of GPU profiles, we do not expect the old and new GGTT ares to
>> + * overlap; but our node shifting will fix addresses properly regardless.
>> + *
>> + */
>> + drm_mm_for_each_node_in_range_safe(node, tmpn, &ggtt->mm,
>> + drm_mm_node_end(balloon_beg),
>> + balloon_fin->start) {
>> + drm_mm_remove_node(node);
>> + list_add(&node->node_list, &temp_list_head);
>> + }
>> +
>> + /* shift and re-add ballooning nodes */
>> + if (drm_mm_node_allocated(balloon_beg))
>> + drm_mm_remove_node(balloon_beg);
>> + if (drm_mm_node_allocated(balloon_fin))
>> + drm_mm_remove_node(balloon_fin);
>> + balloon_beg->size += shift;
>> + balloon_fin->start += shift;
>> + balloon_fin->size -= shift;
>> + if (balloon_beg->size != 0) {
>> + err = drm_mm_reserve_node(&ggtt->mm, balloon_beg);
>> + xe_tile_assert(ggtt->tile, !err);
>> + }
>> + if (balloon_fin->size != 0) {
>> + err = drm_mm_reserve_node(&ggtt->mm, balloon_fin);
>> + xe_tile_assert(ggtt->tile, !err);
>> + }
>> +
>> + /*
>> + * Now the GGTT VM contains only nodes outside of area assigned to this VF.
>> + * We can re-add all VF nodes with shifted offsets.
>> + */
>> + list_for_each_entry_safe(node, tmpn, &temp_list_head, node_list) {
>> + list_del(&node->node_list);
>> + node->start += shift;
>> + err = drm_mm_reserve_node(&ggtt->mm, node);
>> + xe_tile_assert(ggtt->tile, !err);
>> + }
>> +}
>> +
>> +/**
>> + * xe_ggtt_node_shift_nodes - Shift GGTT nodes to adjust for a change in usable address range.
>> + * @ggtt: the &xe_ggtt struct instance
>> + * @balloon_beg: ggtt balloon node which preceds the area provisioned for current VF
>> + * @balloon_fin: ggtt balloon node which follows the area provisioned for current VF
>> + * @shift: change to the location of area provisioned for current VF
>> + */
>> +void xe_ggtt_node_shift_nodes(struct xe_ggtt *ggtt, struct xe_ggtt_node **balloon_beg,
>> + struct xe_ggtt_node **balloon_fin, s64 shift)
>> +{
>> + struct drm_mm_node *balloon_mm_beg, *balloon_mm_end;
>> + struct xe_ggtt_node *node;
>> +
>> + if (!*balloon_beg)
>> + {
>> + node = xe_ggtt_node_init(ggtt);
>> + if (IS_ERR(node))
>> + goto out;
>> + node->base.color = 0;
>> + node->base.flags = 0;
>> + node->base.start = xe_wopcm_size(ggtt->tile->xe);
>> + node->base.size = 0;
>> + *balloon_beg = node;
>> + }
>> + balloon_mm_beg = &(*balloon_beg)->base;
>> +
>> + if (!*balloon_fin)
>> + {
>> + node = xe_ggtt_node_init(ggtt);
>> + if (IS_ERR(node))
>> + goto out;
>> + node->base.color = 0;
>> + node->base.flags = 0;
>> + node->base.start = GUC_GGTT_TOP;
>> + node->base.size = 0;
>> + *balloon_fin = node;
>> + }
>> + balloon_mm_end = &(*balloon_fin)->base;
>> +
>> + xe_tile_assert(ggtt->tile, (*balloon_beg)->ggtt);
>> + xe_tile_assert(ggtt->tile, (*balloon_fin)->ggtt);
>> +
>> + xe_ggtt_mm_shift_nodes(ggtt, balloon_mm_beg, balloon_mm_end, shift);
>> +out:
>> + if (*balloon_beg && !xe_ggtt_node_allocated(*balloon_beg))
>> + {
>> + node = *balloon_beg;
>> + *balloon_beg = NULL;
>> + xe_ggtt_node_fini(node);
>> + }
>> + if (*balloon_fin && !xe_ggtt_node_allocated(*balloon_fin))
>> + {
>> + node = *balloon_fin;
>> + *balloon_fin = NULL;
>> + xe_ggtt_node_fini(node);
>> + }
>> +}
>> +
>> /**
>> * xe_ggtt_node_insert_locked - Locked version to insert a &xe_ggtt_node into the GGTT
>> * @node: the &xe_ggtt_node to be inserted
>> diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
>> index 27e7d67de004..d9e133a155e6 100644
>> --- a/drivers/gpu/drm/xe/xe_ggtt.h
>> +++ b/drivers/gpu/drm/xe/xe_ggtt.h
>> @@ -18,6 +18,8 @@ void xe_ggtt_node_fini(struct xe_ggtt_node *node);
>> int xe_ggtt_node_insert_balloon(struct xe_ggtt_node *node,
>> u64 start, u64 size);
>> void xe_ggtt_node_remove_balloon(struct xe_ggtt_node *node);
>> +void xe_ggtt_node_shift_nodes(struct xe_ggtt *ggtt, struct xe_ggtt_node **balloon_beg,
>> + struct xe_ggtt_node **balloon_fin, s64 shift);
>>
>> int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32 align);
>> int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>> index a439261bf4d7..dbd7010f0117 100644
>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>> @@ -415,6 +415,7 @@ static int vf_get_ggtt_info(struct xe_gt *gt)
>> xe_gt_sriov_dbg_verbose(gt, "GGTT %#llx-%#llx = %lluK\n",
>> start, start + size - 1, size / SZ_1K);
>>
>> + config->ggtt_shift = start - (s64)config->ggtt_base;
> btw, is it safe to keep ggtt_shift after we're done with fixups?
its value is always set in `vf_post_migration_requery_guc()`. And fixup
functions are only called after that, and will never be called outside
of recovery.
So, yes it's safe.
>
>> config->ggtt_base = start;
>> config->ggtt_size = size;
>>
>> @@ -938,6 +939,31 @@ int xe_gt_sriov_vf_query_runtime(struct xe_gt *gt)
>> return err;
>> }
>>
>> +/**
>> + * xe_gt_sriov_vf_fixup_ggtt_nodes - Shift GGTT allocations to match assigned range.
>> + * @gt: the &xe_gt struct instance
>> + * Return: 0 on success, ENODATA if fixups are unnecessary
> if you really need to distinguish between nop/done then bool as return
> will be better, but I'm not sure that caller needs to know
I don't really need this. Michal, this was introduced on your request.
> if we need to know whether there was a shift, and thus we need to start
> the fixup sequence, then maybe we should have a separate function that
> returns (and maybe clears) the ggtt_shift
No need to clear the shift.
I did not checked for a zero shift in my original patch. I consider it
pointless to complicate
the flow with this skip. This was introduced on your request. If you
agree please let me
know and I will revert the changes which introduced this check. I can
instead make a separate
function iterating through tiles too, if that is your preference.
>> + *
>> + * Since Global GTT is not virtualized, each VF has an assigned range
>> + * within the global space. This range might have changed during migration,
>> + * which requires all memory addresses pointing to GGTT to be shifted.
>> + */
>> +int xe_gt_sriov_vf_fixup_ggtt_nodes(struct xe_gt *gt)
>> +{
>> + struct xe_gt_sriov_vf_selfconfig *config = >->sriov.vf.self_config;
>> + struct xe_tile *tile = gt_to_tile(gt);
>> + struct xe_ggtt *ggtt = tile->mem.ggtt;
>> + s64 ggtt_shift;
>> +
>> + mutex_lock(&ggtt->lock);
>> + ggtt_shift = config->ggtt_shift;
>> + if (ggtt_shift)
>> + xe_ggtt_node_shift_nodes(ggtt, &tile->sriov.vf.ggtt_balloon[0],
>> + &tile->sriov.vf.ggtt_balloon[1], ggtt_shift);
> maybe to make it a little simpler on the this xe_ggtt function side, we
> should remove our balloon nodes before requesting shift_nodes(), and
> then re-add balloon nodes here again?
I like having balloons re-added first, as that mimics the order in
probe, and makes the flow more logical: define bounds first, then add
the functional content.
What would make this flow simpler is if the balloons always existed
instead of having to be conditionally created.
Having the balloons added at the end would not make the code easier to
understand for new readers, but actually more convoluted.
That would also mean in case of error we wouldn't just get few
non-allocated nodes, but unset bounds.
No reset would recover from that.
>
>> + mutex_unlock(&ggtt->lock);
>> + return ggtt_shift ? 0 : ENODATA;
> and it's quite unusual to return positive errno codes...
right, will negate.
>
>> +}
>> +
>> static int vf_runtime_reg_cmp(const void *a, const void *b)
>> {
>> const struct vf_runtime_reg *ra = a;
>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h b/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
>> index ba6c5d74e326..95a6c9c1dca0 100644
>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
>> @@ -18,6 +18,7 @@ int xe_gt_sriov_vf_query_config(struct xe_gt *gt);
>> int xe_gt_sriov_vf_connect(struct xe_gt *gt);
>> int xe_gt_sriov_vf_query_runtime(struct xe_gt *gt);
>> int xe_gt_sriov_vf_prepare_ggtt(struct xe_gt *gt);
>> +int xe_gt_sriov_vf_fixup_ggtt_nodes(struct xe_gt *gt);
>> int xe_gt_sriov_vf_notify_resfix_done(struct xe_gt *gt);
>> void xe_gt_sriov_vf_migrated_event_handler(struct xe_gt *gt);
>>
>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
>> index a57f13b5afcd..5ccbdf8d08b6 100644
>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
>> @@ -40,6 +40,8 @@ struct xe_gt_sriov_vf_selfconfig {
>> u64 ggtt_base;
>> /** @ggtt_size: assigned size of the GGTT region. */
>> u64 ggtt_size;
>> + /** @ggtt_shift: difference in ggtt_base on last migration */
>> + s64 ggtt_shift;
>> /** @lmem_size: assigned size of the LMEM. */
>> u64 lmem_size;
>> /** @num_ctxs: assigned number of GuC submission context IDs. */
>> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
>> index c1275e64aa9c..4ee8fc70a744 100644
>> --- a/drivers/gpu/drm/xe/xe_sriov_vf.c
>> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
>> @@ -7,6 +7,7 @@
>>
>> #include "xe_assert.h"
>> #include "xe_device.h"
>> +#include "xe_gt.h"
>> #include "xe_gt_sriov_printk.h"
>> #include "xe_gt_sriov_vf.h"
>> #include "xe_pm.h"
>> @@ -170,6 +171,26 @@ static bool vf_post_migration_imminent(struct xe_device *xe)
>> work_pending(&xe->sriov.vf.migration.worker);
>> }
>>
>> +static int vf_post_migration_fixup_ggtt_nodes(struct xe_device *xe)
>> +{
>> + struct xe_tile *tile;
>> + unsigned int id;
>> + int err;
>> +
>> + for_each_tile(tile, xe, id) {
>> + struct xe_gt *gt = tile->primary_gt;
>> + int ret;
>> +
>> + /* media doesn't have its own ggtt */
>> + if (xe_gt_is_media_type(gt))
> primary_gt can't be MEDIA_TYPE
ok, will remove the condition.
>
>> + continue;
>> + ret = xe_gt_sriov_vf_fixup_ggtt_nodes(gt);
>> + if (ret != ENODATA)
>> + err = ret;
> for multi-tile platforms, this could overwrite previous error/status
Kerneldoc for `xe_gt_sriov_vf_fixup_ggtt_nodes` explains possible `ret`
values. With that, the solution is correct.
>
>> + }
>> + return err;
> err might be still uninitialized here
True. Will fix.
-Tomasz
>
>> +}
>> +
>> /*
>> * Notify all GuCs about resource fixups apply finished.
>> */
>> @@ -201,6 +222,7 @@ static void vf_post_migration_recovery(struct xe_device *xe)
>> if (unlikely(err))
>> goto fail;
>>
>> + err = vf_post_migration_fixup_ggtt_nodes(xe);
>> /* FIXME: add the recovery steps */
>> vf_post_migration_notify_resfix_done(xe);
>> xe_pm_runtime_put(xe);
[-- Attachment #2: Type: text/html, Size: 18327 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 3/3] drm/xe/vf: Fixup CTB send buffer messages after migration
2025-03-14 22:11 ` Lis, Tomasz
@ 2025-03-15 12:59 ` Michal Wajdeczko
2025-03-28 17:52 ` Lis, Tomasz
0 siblings, 1 reply; 23+ messages in thread
From: Michal Wajdeczko @ 2025-03-15 12:59 UTC (permalink / raw)
To: Lis, Tomasz, intel-xe, Lucas De Marchi
Cc: Michał Winiarski, Piotr Piórkowski
On 14.03.2025 23:11, Lis, Tomasz wrote:
>
> On 14.03.2025 21:46, Michal Wajdeczko wrote:
>>
>> On 06.03.2025 23:21, Tomasz Lis wrote:
>>> During post-migration recovery of a VF, it is necessary to update
>>> GGTT references included in messages which are going to be sent
>>> to GuC. GuC will start consuming messages after VF KMD will inform
>>> it about fixups being done; before that, the VF KMD is expected
>>> to update any H2G messages which are already in send buffer but
>>> were not consumed by GuC.
>>>
>>> Only a small subset of messages allowed for VFs have GGTT references
>>> in them. This patch adds the functionality to parse the CTB send
>>> ring buffer and shift addresses contained within.
>>>
>>> While fixing the CTB content, ct->lock is not taken. This means
>>> the only barrier taken remains GGTT address lock - which is ok,
>>> because only requests with GGTT addresses matter, but it also means
>>> tail changes can happen during the CTB fixups execution (which may
>>> be ignored as any new messages will not have anything to fix).
>>>
>>> The GGTT address locking will be introduced in a future series.
>>>
>>> v2: removed storing shift as that's now done in VMA nodes patch;
>>> macros to inlines; warns to asserts; log messages fixes (Michal)
>>> v3: Removed inline keywords, enums for offsets in CTB messages,
>>> less error messages, if return unused then made functs void (Michal)
>>> v4: Update the cached head before starting fixups
>>>
>>> Signed-off-by: Tomasz Lis<tomasz.lis@intel.com>
>>> ---
>>> drivers/gpu/drm/xe/abi/guc_actions_abi.h | 7 ++
>>> drivers/gpu/drm/xe/xe_guc_ct.c | 147 +++++++++++++++++++++++
>>> drivers/gpu/drm/xe/xe_guc_ct.h | 2 +
>>> drivers/gpu/drm/xe/xe_guc_submit.c | 4 +
>>> drivers/gpu/drm/xe/xe_sriov_vf.c | 18 +++
>>> 5 files changed, 178 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/xe/abi/guc_actions_abi.h b/drivers/gpu/
>>> drm/xe/abi/guc_actions_abi.h
>>> index ec516e838ee8..dde6cb5a6be9 100644
>>> --- a/drivers/gpu/drm/xe/abi/guc_actions_abi.h
>>> +++ b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
>>> @@ -160,6 +160,13 @@ enum xe_guc_preempt_options {
>>> XE_GUC_PREEMPT_OPTION_DROP_SUBMIT_Q = 0x8,
>>> };
>>> +enum xe_guc_register_context_multi_lrc_param_offsets {
>>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC = 5,
>>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE = 7,
>>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN = 10,
>>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA = 11
>>> +};
>>> +
>>> enum xe_guc_report_status {
>>> XE_GUC_REPORT_STATUS_UNKNOWN = 0x0,
>>> XE_GUC_REPORT_STATUS_ACKED = 0x1,
>>> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/
>>> xe_guc_ct.c
>>> index 72ad576fc18e..6f19bf9565ba 100644
>>> --- a/drivers/gpu/drm/xe/xe_guc_ct.c
>>> +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
>>> @@ -84,6 +84,8 @@ struct g2h_fence {
>>> bool done;
>>> };
>>> +#define make_u64(hi, lo) ((u64)((u64)(u32)(hi) << 32 | (u32)(lo)))
>>> +
>>> static void g2h_fence_init(struct g2h_fence *g2h_fence, u32
>>> *response_buffer)
>>> {
>>> g2h_fence->response_buffer = response_buffer;
>>> @@ -1622,6 +1624,151 @@ static void g2h_worker_func(struct
>>> work_struct *w)
>>> receive_g2h(ct);
>>> }
>>> +static u32 ctb_read32(struct xe_device *xe, struct iosys_map *cmds,
>> maybe to make this function more "ctb", pass ctb instead xe?
> You mean `struct xe_guc_ct *ct`?
>
> I don't understand, why would we do this? We don't even need `ct` there.
if it doesn't need 'ct' then don't use 'ctb' prefix
> That would just add another `ct_to_xe(ct)`.
maybe not another, but just moved, as then the caller doesn't need to
have it
>
> If we're adjusting parameters to what looks nicer rather than what is
it's not always just about the look, but it's about proper layering
> really necessary, then why `xe_map_memcpy_from` accepts `xe` and not a
> `bo`?
feel free to ask authors, this was introduced (without review) as part
of the initial Xe commit dd08ebf6c352
>
>>
>>> + u32 head, u32 pos)
>>> +{
>>> + u32 msg[1];
>>> +
>>> + xe_map_memcpy_from(xe, msg, cmds, (head + pos) * sizeof(u32),
>>> + 1 * sizeof(u32));
>>> + return msg[0];
>> and looks almost like our deprecated xe_map_read32 ;)
> yes, it does look similar. But I assume we don't want to reuse that?
well, it depends.
since it is already there, IMO we should use it.
OTOH, during some other review it was said that maybe the whole xe_map
layer will go away, so then no need to use it, but equally, no need to
use _any_ of other xe_map wrappers, so need for having a xe is also gone
but as there are no signs that xe_map will be removed, we should
continue to reuse existing code
unless @Lucas has some more recent news
>>
>>> +}
>>> +
>>> +static void ctb_fixup64(struct xe_device *xe, struct iosys_map *cmds,
>>> + u32 head, u32 pos, s64 shift)
>>> +{
>>> + u32 msg[2];
>>> + u64 offset;
>>> +
>>> + xe_map_memcpy_from(xe, msg, cmds, (head + pos) * sizeof(u32),
>>> + 2 * sizeof(u32));
>>> + offset = make_u64(msg[1], msg[0]);
>>> + offset += shift;
>>> + msg[0] = lower_32_bits(offset);
>>> + msg[1] = upper_32_bits(offset);
>>> + xe_map_memcpy_to(xe, cmds, (head + pos) * sizeof(u32), msg, 2 *
>>> sizeof(u32));
>>> +}
>>> +
>>> +/*
>>> + * ct_update_addresses_in_message - Shift any GGTT addresses within
>> nit: as this is *not* a real kernel-doc, then maybe drop function name
>> and keep only description plus params?
>
> will do, even though I don't know why we break the sibling rules which
> could be easily kept.
>
>>
>>> + * a single message left within CTB from before post-migration
>>> recovery.
>>> + * @ct: pointer to CT struct of the target GuC
>>> + * @cmds: iomap buffer containing CT messages
>>> + * @head: start of the target message within the buffer
>>> + * @len: length of the target message
>>> + * @size: size of the commands buffer
>>> + * @shift: the address shift to be added to each GGTT reference
>>> + */
>>> +static void ct_update_addresses_in_message(struct xe_guc_ct *ct,
>>> + struct iosys_map *cmds, u32 head,
>>> + u32 len, u32 size, s64 shift)
>>> +{
>>> + struct xe_device *xe = ct_to_xe(ct);
>>> + u32 action, i, n;
>>> + u32 msg[1];
>>> +
>>> + xe_map_memcpy_from(xe, msg, cmds, head * sizeof(u32),
>>> + 1 * sizeof(u32));
>> ctb_read32() didn't work here?
>
> It would. For G2H and H2G messages we always use FIELD_GET on an array,
> and field name contains index in that array.
hmm, not sure if I follow here... what was wrong with:
msg = ctb_read32(...)
or
msg = xe_map_read32(...)
you could still use FIELD_GET from the 'msg' var
>
> So, I consider this way of writing it more standard within Xe, and
> therefore easier to understand. Though no strong opinion - let me know
> if you want this changed.
but then you are little inconsistent, you defined new helper but then
decided to access data without it
>
>>
>>> + action = FIELD_GET(GUC_HXG_REQUEST_MSG_0_ACTION, msg[0]);
>>> + switch (action) {
>>> + case XE_GUC_ACTION_REGISTER_CONTEXT:
>>> + case XE_GUC_ACTION_REGISTER_CONTEXT_MULTI_LRC:
>>> + /* field wq_desc */
>> as we have enums that describe field offsets, we don't need to add those
>> small now redundant comments
> will remove.
>>
>>> + ctb_fixup64(xe, cmds, head,
>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC, shift);
>>> + /* field wq_base */
>>> + ctb_fixup64(xe, cmds, head,
>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE, shift);
>>> + if (action == XE_GUC_ACTION_REGISTER_CONTEXT_MULTI_LRC) {
>>> + /* field number_children */
>>> + n = ctb_read32(xe, cmds, head,
>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN);
>>> + /* field hwlrca and child lrcas */
>>> + for (i = 0; i < n; i++)
>>> + ctb_fixup64(xe, cmds, head,
>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA + 2 * i, shift);
>> did you run checkpatch.pl ? line is quite long
> it does complain. Will fix.
>>
>>> + } else {
>>> + /* field hwlrca */
>>> + ctb_fixup64(xe, cmds, head, 10, shift);
>>> + }
>>> + break;
>>> + default:
>>> + break;
>>> + }
>>> +}
>>> +
>> nit: no short description here ;)
> why would it need one? sub-function (ct_update_addresses_in_message) has
> documentation, caller also has documentation.
well, it was just inconsistency, in other places you seems to add
documentation even if there is no
>>
>>> +static int ct_update_addresses_in_buffer(struct xe_guc_ct *ct,
>>> + struct guc_ctb *h2g,
>>> + s64 shift, u32 *mhead, s32 avail)
>>> +{
>>> + struct xe_device *xe = ct_to_xe(ct);
>>> + u32 head = *mhead;
>>> + u32 size = h2g->info.size;
>>> + u32 msg[1];
>>> + u32 len;
>>> +
>>> + /* Read header */
>>> + xe_map_memcpy_from(xe, msg, &h2g->cmds, sizeof(u32) * head,
>>> + sizeof(u32));
>> ctb_read32() didn't work here?
> Like before, for consistency. Will change on request.
>>
>>> + len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) +
>>> GUC_CTB_MSG_MIN_LEN;
>>> +
>>> + if (unlikely(len > (u32)avail)) {
>>> + struct xe_gt *gt = ct_to_gt(ct);
btw, no need to have local var here, since you can do ct_to_gt()
directly in the xe_gt_err() below (it's the only use case)
>>> +
>>> + xe_gt_err(gt, "H2G channel broken on read, avail=%d, len=%d,
>>> fixups skipped\n",
>>> + avail, len);
>>> + return 0;
>> in caller we do mark ctb as broken, why are we silent here?
>
> Incorrect head/tail of a CTB is an issue of completely different caliber
> than a message with invalid length.
not sure if those errors are that different.
see CTB descriptor status codes:
GUC_CTB_STATUS_OVERFLOW
GUC_CTB_STATUS_UNDERFLOW
which are used exactly to classify those kind of errors
if we are able to read msg header from the CTB but there is no payload
data on CTB then it's a CTB protocol bug
>
> The invalid message is actually more likely to be a racing condition
> rather than CTB damage.
racing with what?
>
>>> + }
>>> +
>>> + head = (head + 1) % size;
>>> + ct_update_addresses_in_message(ct, &h2g->cmds, head, len - 1,
>>> size, shift);
>>> + *mhead = (head + len - 1) % size;
>>> +
>>> + return avail - len;
>>> +}
>>> +
>>> +/**
>>> + * xe_guc_ct_fixup_messages_with_ggtt - Fixup any pending H2G CTB
>>> messages by updating
>>> + * GGTT offsets in their payloads.
>>> + * @ct: pointer to CT struct of the target GuC
>>> + * @ggtt_shift: shift to be added to all GGTT addresses within the CTB
>>> + */
>>> +void xe_guc_ct_fixup_messages_with_ggtt(struct xe_guc_ct *ct, s64
>>> ggtt_shift)
>>> +{
>>> + struct xe_guc *guc = ct_to_guc(ct);
>>> + struct xe_gt *gt = guc_to_gt(guc);
>>> + struct guc_ctb *h2g = &ct->ctbs.h2g;
>>> + u32 head, tail, size;
>>> + s32 avail;
>>> +
>>> + if (unlikely(h2g->info.broken))
>>> + return;
>>> +
>>> + h2g->info.head = desc_read(ct_to_xe(ct), h2g, head);
>>> + head = h2g->info.head;
>>> + tail = READ_ONCE(h2g->info.tail);
>>> + size = h2g->info.size;
>>> +
>>> + xe_gt_assert(gt, head <= size);
>> we shouldn't trust GuC, assert is not enough
>> goto corrupted; if this happens
> ok.
>>
>>> +
>>> + if (unlikely(tail >= size))
>>> + goto corrupted;
>>> +
>>> + avail = tail - head;
>>> +
>>> + /* beware of buffer wrap case */
>>> + if (unlikely(avail < 0))
>>> + avail += size;
>>> + xe_gt_dbg(gt, "available %d (%u:%u:%u)\n", avail, head, tail,
>>> size);
>>> + xe_gt_assert(gt, avail >= 0);
>>> +
>>> + while (avail > 0)
>>> + avail = ct_update_addresses_in_buffer(ct, h2g, ggtt_shift,
>>> &head, avail);
>> maybe pass &avail like you did with head?
> do we have a precedence for this approach being preferred?
I'm not sure what you are looking for..
my point is that it looks inconsistent that one in/out param is passed
by pointer, the other by value and then it's new value is returned
if you pass both by ptr then you can use return value to indicate some
error condition (which seems to be already there but silenced by
returning 'no-avail')
>>
>>> +
>>> + return;
>>> +
>>> +corrupted:
>>> + xe_gt_err(gt, "Corrupted H2G descriptor head=%u tail=%u size=%u\n",
>> shouldn't we mention that "fixups can't be done" ?
> Makes sense, the messages will be still received by GuC after all. Will
> change.
>>
>>> + head, tail, size);
>>> + h2g->info.broken = true;
>> returning an error code wouldn't really hurt ...
>
> Since when do we return error codes which are not going to be used?
> Didn't you asked for a change to `void` in previous round of the review?
if code can fail and caller might make some decision based on the
success/failure then IMO we should return error code
if the code can't fail, then it should be void
but right now I just can't judge which scenarios that you implemented
could fail just because of our coding mistakes, where asserts() would be
sufficient to cover them, vs real scenarios that we should treat as
serious recovery failures
>
>> + for_each_gt(gt, xe, id) {
>> + struct xe_gt_sriov_vf_selfconfig *config = >-
>> >sriov.vf.self_config;
>> +
>> + xe_guc_ct_update_addresses(>->uc.guc.ct, config->ggtt_shift);
>
>> this function returns int, shouldn't we check for errors?
>> if not then maybe make it void
>
>>
>>> +}
>>> +
>>> static struct xe_guc_ct_snapshot *guc_ct_snapshot_alloc(struct
>>> xe_guc_ct *ct, bool atomic,
>>> bool want_ctb)
>>> {
>>> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/
>>> xe_guc_ct.h
>>> index 82c4ae458dda..5649bda82823 100644
>>> --- a/drivers/gpu/drm/xe/xe_guc_ct.h
>>> +++ b/drivers/gpu/drm/xe/xe_guc_ct.h
>>> @@ -22,6 +22,8 @@ void xe_guc_ct_snapshot_print(struct
>>> xe_guc_ct_snapshot *snapshot, struct drm_pr
>>> void xe_guc_ct_snapshot_free(struct xe_guc_ct_snapshot *snapshot);
>>> void xe_guc_ct_print(struct xe_guc_ct *ct, struct drm_printer *p,
>>> bool want_ctb);
>>> +void xe_guc_ct_fixup_messages_with_ggtt(struct xe_guc_ct *ct, s64
>>> ggtt_shift);
>>> +
>>> static inline bool xe_guc_ct_enabled(struct xe_guc_ct *ct)
>>> {
>>> return ct->state == XE_GUC_CT_STATE_ENABLED;
>>> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/
>>> xe_guc_submit.c
>>> index b95934055f72..4442fb00d0aa 100644
>>> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
>>> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
>>> @@ -469,12 +469,16 @@ static void __register_mlrc_exec_queue(struct
>>> xe_guc *guc,
>>> action[len++] = info->context_idx;
>>> action[len++] = info->engine_class;
>>> action[len++] = info->engine_submit_mask;
>>> + xe_gt_assert(guc_to_gt(guc), len ==
>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC);
>>> action[len++] = info->wq_desc_lo;
>>> action[len++] = info->wq_desc_hi;
>>> + xe_gt_assert(guc_to_gt(guc), len ==
>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE);
>>> action[len++] = info->wq_base_lo;
>>> action[len++] = info->wq_base_hi;
>>> action[len++] = info->wq_size;
>>> + xe_gt_assert(guc_to_gt(guc), len ==
>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN);
>>> action[len++] = q->width;
>>> + xe_gt_assert(guc_to_gt(guc), len ==
>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA);
>>> action[len++] = info->hwlrca_lo;
>>> action[len++] = info->hwlrca_hi;
>> nit: maybe this chunk, together with introduction of above enums, should
>> be a separate patch?
> Ok, can do that. It was introduced on your request, after all.
but I didn't say it has to be all done in single patch
if some changes are logically independent they deserve a separate patch
this is also to help getting reviews sooner as patches will be smaller
[1]
https://docs.kernel.org/process/submitting-patches.html#separate-your-changes
>>
>>> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/
>>> xe_sriov_vf.c
>>> index 4ee8fc70a744..cd759579b9b4 100644
>>> --- a/drivers/gpu/drm/xe/xe_sriov_vf.c
>>> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
>>> @@ -10,6 +10,7 @@
>>> #include "xe_gt.h"
>>> #include "xe_gt_sriov_printk.h"
>>> #include "xe_gt_sriov_vf.h"
>>> +#include "xe_guc_ct.h"
>>> #include "xe_pm.h"
>>> #include "xe_sriov.h"
>>> #include "xe_sriov_printk.h"
>>> @@ -158,6 +159,20 @@ static int vf_post_migration_requery_guc(struct
>>> xe_device *xe)
>>> return ret;
>>> }
>>> +static void vf_post_migration_fixup_ctb(struct xe_device *xe)
>>> +{
>>> + struct xe_gt *gt;
>>> + unsigned int id;
>>> +
>>> + xe_assert(xe, IS_SRIOV_VF(xe));
>>> +
>>> + for_each_gt(gt, xe, id) {
>>> + struct xe_gt_sriov_vf_selfconfig *config = >-
>>> >sriov.vf.self_config;
>> instead of open coding just add a helper to query the ggtt_shift
>>
>> s64 xe_gt_sriov_vf_ggtt_shift(gt) { }
> This is already a small function so I can't say I see the point. But
> sure, can do that.
the point is that in the 'xe' level function you are directly accessing
a VF internal field stored deep under 'gt.sriov.vf.self_config' structure
>>
>>> +
>>> + xe_guc_ct_fixup_messages_with_ggtt(>->uc.guc.ct, config-
>>> >ggtt_shift);
>>> + }
>>> +}
>>> +
>>> /*
>>> * vf_post_migration_imminent - Check if post-restore recovery is
>>> coming.
>>> * @xe: the &xe_device struct instance
>>> @@ -224,6 +239,9 @@ static void vf_post_migration_recovery(struct
>>> xe_device *xe)
>>> err = vf_post_migration_fixup_ggtt_nodes(xe);
>>> /* FIXME: add the recovery steps */
>>> + if (err != ENODATA)
>>> + vf_post_migration_fixup_ctb(xe);
>>> +
>> do we need to have for_each_gt inside every step?
>> maybe the loop should be here?
>>
>> for_each_tile() {
>> shift = vf_reset_ggtt_shift(tile->primary_gt)
>> if (shift) {
>> vf_fixup_nodes(tile)
>> vf_fixup_ctb(tile->primary_gt)
>> if (tile->media_gt)
>> vf_fixup_ctb(tile->media_gt)
>> }
>> }
>
> What is the benefit? Doesn't the current code look cleaner?
IMO current code access self_config.ggtt_shift from too many places
>
> Isn't it better when all drm_mm nodes are fixed at the point we start
> applying fixups to other places?
hmm, ok, so do we expect that there could be cross-tile references to
the other tile GGTT? if yes, do we have at least asserts that can
confirm that we are not doing fixups on the tile with un-shifted ggtt nodes?
>
> I don't think it's a good idea.
>
> -Tomasz
>
>>
>>
>>> vf_post_migration_notify_resfix_done(xe);
>>> xe_pm_runtime_put(xe);
>>> drm_notice(&xe->drm, "migration recovery ended\n");
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration
2025-03-14 23:45 ` Lis, Tomasz
@ 2025-03-15 14:27 ` Michal Wajdeczko
2025-03-28 17:52 ` Lis, Tomasz
0 siblings, 1 reply; 23+ messages in thread
From: Michal Wajdeczko @ 2025-03-15 14:27 UTC (permalink / raw)
To: Lis, Tomasz, intel-xe; +Cc: Michał Winiarski, Piotr Piórkowski
On 15.03.2025 00:45, Lis, Tomasz wrote:
>
> On 14.03.2025 19:22, Michal Wajdeczko wrote:
>>
>> On 06.03.2025 23:21, Tomasz Lis wrote:
>>> We have only one GGTT for all IOV functions, with each VF having
>>> assigned
>>> a range of addresses for its use. After migration, a VF can receive a
>>> different range of addresses than it had initially.
>>>
>>> This implements shifting GGTT addresses within drm_mm nodes, so that
>>> VMAs stay valid after migration. This will make the driver use new
>>> addresses when accessing GGTT from the moment the shifting ends.
>>>
>>> By taking the ggtt->lock for the period of VMA fixups, this change
>>> also adds constraint on that mutex. Any locks used during the recovery
>>> cannot ever wait for hardware response - because after migration,
>>> the hardware will not do anything until fixups are finished.
>>>
>>> v2: Moved some functs to xe_ggtt.c; moved shift computation to just
>>> after querying; improved documentation; switched some warns to
>>> asserts;
>>> skipping fixups when GGTT shift eq 0; iterating through tiles
>>> (Michal)
>>> v3: Updated kerneldocs, removed unused funct, properly allocate
>>> balloning nodes if non existent
>>>
>>> Signed-off-by: Tomasz Lis<tomasz.lis@intel.com>
>>> ---
>>> drivers/gpu/drm/xe/xe_ggtt.c | 163 ++++++++++++++++++++++
>>> drivers/gpu/drm/xe/xe_ggtt.h | 2 +
>>> drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 26 ++++
>>> drivers/gpu/drm/xe/xe_gt_sriov_vf.h | 1 +
>>> drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h | 2 +
>>> drivers/gpu/drm/xe/xe_sriov_vf.c | 22 +++
>>> 6 files changed, 216 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
>>> index 5fcb2b4c2c13..6865d1cdd676 100644
>>> --- a/drivers/gpu/drm/xe/xe_ggtt.c
>>> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
>>> @@ -489,6 +489,169 @@ void xe_ggtt_node_remove_balloon(struct
>>> xe_ggtt_node *node)
>>> xe_ggtt_node_fini(node);
>>> }
>>> +static u64 drm_mm_node_end(struct drm_mm_node *node)
>>> +{
>>> + return node->start + node->size;
>>> +}
>>> +
>>> +static void xe_ggtt_mm_shift_nodes(struct xe_ggtt *ggtt, struct
>>> drm_mm_node *balloon_beg,
>>> + struct drm_mm_node *balloon_fin, s64 shift)
>>> +{
>>> + struct drm_mm_node *node, *tmpn;
>>> + LIST_HEAD(temp_list_head);
>>> + int err;
>>> +
>>> + lockdep_assert_held(&ggtt->lock);
>>> +
>>> + /*
>>> + * Move nodes, from range previously assigned to this VF, into
>>> temp list.
>>> + *
>>> + * The balloon_beg and balloon_fin nodes are there to eliminate
>>> unavailable
>>> + * ranges from use: first reserves the GGTT area below the range
>>> for current VF,
>>> + * and second reserves area above.
>>> + *
>>> + * Below is a GGTT layout of example VF, with a certain address
>>> range assigned to
>>> + * said VF, and inaccessible areas above and below:
>>> + *
>>> + *
>>> 0 4GiB
>>> + * |<--------------------------- Total GGTT size
>>> ----------------------------->|
>>> + *
>>> WOPCM GUC_TOP
>>> + * |<-------------- Area mappable by xe_ggtt instance
>>> ---------------->|
>>> + *
>>> + * +---+---------------------------------+----------
>>> +----------------------+---+
>>> + * |\\\|/////////////////////////////////| VF mem
>>> |//////////////////////|\\\|
>>> + * +---+---------------------------------+----------
>>> +----------------------+---+
>>> + *
>>> + * Hardware enforced access rules before migration:
>>> + *
>>> + * |<------- inaccessible for VF ------->|<VF owned>|<--
>>> inaccessible for VF ->|
>>> + *
>>> + * drm_mm nodes used for tracking allocations:
>>> + *
>>> + * |<----------- balloon ------------>|<- nodes->|<-----
>>> balloon ------>|
>>> + *
>>> + * After the migration, GGTT area assigned to the VF might have
>>> shifted, either
>>> + * to lower or to higher address. But we expect the total size
>>> and extra areas to
>>> + * be identical, as migration can only happen between matching
>>> platforms.
>>> + * Below is an example of GGTT layout of the VF after migration.
>>> Content of the
>>> + * GGTT for VF has been moved to a new area, and we receive its
>>> address from GuC:
>>> + *
>>> + * +---+----------------------+----------
>>> +---------------------------------+---+
>>> + * |\\\|//////////////////////| VF mem
>>> |/////////////////////////////////|\\\|
>>> + * +---+----------------------+----------
>>> +---------------------------------+---+
>>> + *
>>> + * Hardware enforced access rules after migration:
>>> + *
>>> + * |<- inaccessible for VF -->|<VF owned>|<------- inaccessible
>>> for VF ------->|
>>> + *
>>> + * So the VF has a new slice of GGTT assigned, and during
>>> migration process, the
>>> + * memory content was copied to that new area. But the drm_mm
>>> nodes within xe kmd
>>> + * are still tracking allocations using the old addresses. The
>>> nodes within VF
>>> + * owned area have to be shifted, and balloon nodes need to be
>>> resized to
>>> + * properly mask out areas not owned by the VF.
>>> + *
>>> + * Fixed drm_mm nodes used for tracking allocations:
>>> + *
>>> + * |<------ balloon ------>|<- nodes->|<----------- balloon
>>> ----------->|
>>> + *
>>> + * Due to use of GPU profiles, we do not expect the old and new
>>> GGTT ares to
>>> + * overlap; but our node shifting will fix addresses properly
>>> regardless.
>>> + *
>>> + */
>>> + drm_mm_for_each_node_in_range_safe(node, tmpn, &ggtt->mm,
>>> + drm_mm_node_end(balloon_beg),
>>> + balloon_fin->start) {
>>> + drm_mm_remove_node(node);
>>> + list_add(&node->node_list, &temp_list_head);
>>> + }
>>> +
>>> + /* shift and re-add ballooning nodes */
>>> + if (drm_mm_node_allocated(balloon_beg))
>>> + drm_mm_remove_node(balloon_beg);
>>> + if (drm_mm_node_allocated(balloon_fin))
>>> + drm_mm_remove_node(balloon_fin);
>>> + balloon_beg->size += shift;
>>> + balloon_fin->start += shift;
>>> + balloon_fin->size -= shift;
>>> + if (balloon_beg->size != 0) {
>>> + err = drm_mm_reserve_node(&ggtt->mm, balloon_beg);
>>> + xe_tile_assert(ggtt->tile, !err);
>>> + }
>>> + if (balloon_fin->size != 0) {
>>> + err = drm_mm_reserve_node(&ggtt->mm, balloon_fin);
>>> + xe_tile_assert(ggtt->tile, !err);
>>> + }
>>> +
>>> + /*
>>> + * Now the GGTT VM contains only nodes outside of area assigned
>>> to this VF.
>>> + * We can re-add all VF nodes with shifted offsets.
>>> + */
>>> + list_for_each_entry_safe(node, tmpn, &temp_list_head, node_list) {
>>> + list_del(&node->node_list);
>>> + node->start += shift;
>>> + err = drm_mm_reserve_node(&ggtt->mm, node);
>>> + xe_tile_assert(ggtt->tile, !err);
>>> + }
>>> +}
>>> +
>>> +/**
>>> + * xe_ggtt_node_shift_nodes - Shift GGTT nodes to adjust for a
>>> change in usable address range.
>>> + * @ggtt: the &xe_ggtt struct instance
>>> + * @balloon_beg: ggtt balloon node which preceds the area
>>> provisioned for current VF
>>> + * @balloon_fin: ggtt balloon node which follows the area
>>> provisioned for current VF
>>> + * @shift: change to the location of area provisioned for current VF
>>> + */
>>> +void xe_ggtt_node_shift_nodes(struct xe_ggtt *ggtt, struct
>>> xe_ggtt_node **balloon_beg,
>>> + struct xe_ggtt_node **balloon_fin, s64 shift)
>>> +{
>>> + struct drm_mm_node *balloon_mm_beg, *balloon_mm_end;
>>> + struct xe_ggtt_node *node;
>>> +
>>> + if (!*balloon_beg)
>>> + {
>>> + node = xe_ggtt_node_init(ggtt);
>>> + if (IS_ERR(node))
>>> + goto out;
>>> + node->base.color = 0;
>>> + node->base.flags = 0;
>>> + node->base.start = xe_wopcm_size(ggtt->tile->xe);
>>> + node->base.size = 0;
>>> + *balloon_beg = node;
>>> + }
>>> + balloon_mm_beg = &(*balloon_beg)->base;
>>> +
>>> + if (!*balloon_fin)
>>> + {
>>> + node = xe_ggtt_node_init(ggtt);
>>> + if (IS_ERR(node))
>>> + goto out;
>>> + node->base.color = 0;
>>> + node->base.flags = 0;
>>> + node->base.start = GUC_GGTT_TOP;
>>> + node->base.size = 0;
>>> + *balloon_fin = node;
>>> + }
>>> + balloon_mm_end = &(*balloon_fin)->base;
>>> +
>>> + xe_tile_assert(ggtt->tile, (*balloon_beg)->ggtt);
>>> + xe_tile_assert(ggtt->tile, (*balloon_fin)->ggtt);
>>> +
>>> + xe_ggtt_mm_shift_nodes(ggtt, balloon_mm_beg, balloon_mm_end,
>>> shift);
>>> +out:
>>> + if (*balloon_beg && !xe_ggtt_node_allocated(*balloon_beg))
>>> + {
>>> + node = *balloon_beg;
>>> + *balloon_beg = NULL;
>>> + xe_ggtt_node_fini(node);
>>> + }
>>> + if (*balloon_fin && !xe_ggtt_node_allocated(*balloon_fin))
>>> + {
>>> + node = *balloon_fin;
>>> + *balloon_fin = NULL;
>>> + xe_ggtt_node_fini(node);
>>> + }
>>> +}
>>> +
>>> /**
>>> * xe_ggtt_node_insert_locked - Locked version to insert a
>>> &xe_ggtt_node into the GGTT
>>> * @node: the &xe_ggtt_node to be inserted
>>> diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
>>> index 27e7d67de004..d9e133a155e6 100644
>>> --- a/drivers/gpu/drm/xe/xe_ggtt.h
>>> +++ b/drivers/gpu/drm/xe/xe_ggtt.h
>>> @@ -18,6 +18,8 @@ void xe_ggtt_node_fini(struct xe_ggtt_node *node);
>>> int xe_ggtt_node_insert_balloon(struct xe_ggtt_node *node,
>>> u64 start, u64 size);
>>> void xe_ggtt_node_remove_balloon(struct xe_ggtt_node *node);
>>> +void xe_ggtt_node_shift_nodes(struct xe_ggtt *ggtt, struct
>>> xe_ggtt_node **balloon_beg,
>>> + struct xe_ggtt_node **balloon_fin, s64 shift);
>>> int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32
>>> align);
>>> int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
>>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/
>>> xe/xe_gt_sriov_vf.c
>>> index a439261bf4d7..dbd7010f0117 100644
>>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>>> @@ -415,6 +415,7 @@ static int vf_get_ggtt_info(struct xe_gt *gt)
>>> xe_gt_sriov_dbg_verbose(gt, "GGTT %#llx-%#llx = %lluK\n",
>>> start, start + size - 1, size / SZ_1K);
>>> + config->ggtt_shift = start - (s64)config->ggtt_base;
>> btw, is it safe to keep ggtt_shift after we're done with fixups?
>
> its value is always set in `vf_post_migration_requery_guc()`. And fixup
> functions are only called after that, and will never be called outside
> of recovery.
"called after"
"called outside"
is that somehow enforced? do we some asserts for that?
>
> So, yes it's safe.
I would feel more safe if the ggtt_shift is guaranteed to be zero
outside the recovery process
>
>>
>>> config->ggtt_base = start;
>>> config->ggtt_size = size;
>>> @@ -938,6 +939,31 @@ int xe_gt_sriov_vf_query_runtime(struct xe_gt
>>> *gt)
>>> return err;
>>> }
>>> +/**
>>> + * xe_gt_sriov_vf_fixup_ggtt_nodes - Shift GGTT allocations to match
>>> assigned range.
>>> + * @gt: the &xe_gt struct instance
>>> + * Return: 0 on success, ENODATA if fixups are unnecessary
>> if you really need to distinguish between nop/done then bool as return
>> will be better, but I'm not sure that caller needs to know
> I don't really need this. Michal, this was introduced on your request.
hmm, I don't recall and can't find it now my prev reply...
but likely my point was that if we can fail we should report that
>> if we need to know whether there was a shift, and thus we need to start
>> the fixup sequence, then maybe we should have a separate function that
>> returns (and maybe clears) the ggtt_shift
>
> No need to clear the shift.
but it could be easily used as indication of WIP vs DONE/NOP
>
> I did not checked for a zero shift in my original patch. I consider it
> pointless to complicate
what's so complicated in check for zero/non-zero?
with zero shift there is nothing to do, so even with
broken/unimplemented fixup code we should still be able to move on (by
avoid calling fixup code at all or doing early exit if shift is 0)
>
> the flow with this skip. This was introduced on your request. If you
> agree please let me
>
> know and I will revert the changes which introduced this check. I can
> instead make a separate
>
> function iterating through tiles too, if that is your preference.
>
>>> + *
>>> + * Since Global GTT is not virtualized, each VF has an assigned range
>>> + * within the global space. This range might have changed during
>>> migration,
>>> + * which requires all memory addresses pointing to GGTT to be shifted.
>>> + */
>>> +int xe_gt_sriov_vf_fixup_ggtt_nodes(struct xe_gt *gt)
what about
xe_gt_sriov_vf_fixup_ggtt_nodes(gt, ggtt_shift)
>>> +{
>>> + struct xe_gt_sriov_vf_selfconfig *config = >-
>>> >sriov.vf.self_config;
>>> + struct xe_tile *tile = gt_to_tile(gt);
>>> + struct xe_ggtt *ggtt = tile->mem.ggtt;
>>> + s64 ggtt_shift;
>>> +
then
xe_gt_assert(gt, ggtt_shift);
or
if (!ggtt_shift)
return
>>> + mutex_lock(&ggtt->lock);
>>> + ggtt_shift = config->ggtt_shift;
>>> + if (ggtt_shift)
>>> + xe_ggtt_node_shift_nodes(ggtt, &tile->sriov.vf.ggtt_balloon[0],
>>> + &tile->sriov.vf.ggtt_balloon[1], ggtt_shift);
>> maybe to make it a little simpler on the this xe_ggtt function side, we
>> should remove our balloon nodes before requesting shift_nodes(), and
>> then re-add balloon nodes here again?
>
> I like having balloons re-added first, as that mimics the order in
> probe, and makes the flow more logical: define bounds first, then add
> the functional content.
but during the recovery there will be no new allocations, so we can drop
the bounds/balloons, move existing nodes, and apply new bounds/balloons
>
> What would make this flow simpler is if the balloons always existed
> instead of having to be conditionally created.
it might be also simpler if we try to reuse existing ballooning code
from xe_gt_sriov_vf_prepare_ggtt() - maybe all we need is to add
xe_gt_sriov_vf_release_ggtt() that will release balloons on request
>
> Having the balloons added at the end would not make the code easier to
> understand for new readers, but actually more convoluted.
why? in xe_ggtt we might just focus on moving the nodes (maybe using
drm_mm_shift from your [2] series) without worrying about any balloons
and without the balloons (which are really outside of xe_ggtt logic
right now) we know that nodes shifts shall be successful
[2]
https://lore.kernel.org/dri-devel/20250204224136.3183710-1-tomasz.lis@intel.com/
>
> That would also mean in case of error we wouldn't just get few non-
> allocated nodes, but unset bounds.
hmm, so maybe the only problem is that right now, ie. after xe_ggtt_node
refactoring, our balloon nodes are initialized (allocated) at the same
time when we insert them into GGTT
if in the VF code we split calls to xe_ggtt_node_init() and
xe_ggtt_node_insert_balloon() then there could be no new allocations
when re-adding balloons during recovery, so we can't fail due to this
>
> No reset would recover from that.
>
>>
>>> + mutex_unlock(&ggtt->lock);
>>> + return ggtt_shift ? 0 : ENODATA;
>> and it's quite unusual to return positive errno codes...
> right, will negate.
negative codes usually means errors, but I guess we can't fail, and all
you want is to say whether we need extra follow up steps (fixups) or not
so bool return is likely a better choice
>>
>>> +}
>>> +
>>> static int vf_runtime_reg_cmp(const void *a, const void *b)
>>> {
>>> const struct vf_runtime_reg *ra = a;
>>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h b/drivers/gpu/drm/
>>> xe/xe_gt_sriov_vf.h
>>> index ba6c5d74e326..95a6c9c1dca0 100644
>>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
>>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
>>> @@ -18,6 +18,7 @@ int xe_gt_sriov_vf_query_config(struct xe_gt *gt);
>>> int xe_gt_sriov_vf_connect(struct xe_gt *gt);
>>> int xe_gt_sriov_vf_query_runtime(struct xe_gt *gt);
>>> int xe_gt_sriov_vf_prepare_ggtt(struct xe_gt *gt);
>>> +int xe_gt_sriov_vf_fixup_ggtt_nodes(struct xe_gt *gt);
>>> int xe_gt_sriov_vf_notify_resfix_done(struct xe_gt *gt);
>>> void xe_gt_sriov_vf_migrated_event_handler(struct xe_gt *gt);
>>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h b/drivers/
>>> gpu/drm/xe/xe_gt_sriov_vf_types.h
>>> index a57f13b5afcd..5ccbdf8d08b6 100644
>>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
>>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
>>> @@ -40,6 +40,8 @@ struct xe_gt_sriov_vf_selfconfig {
>>> u64 ggtt_base;
>>> /** @ggtt_size: assigned size of the GGTT region. */
>>> u64 ggtt_size;
>>> + /** @ggtt_shift: difference in ggtt_base on last migration */
>>> + s64 ggtt_shift;
>>> /** @lmem_size: assigned size of the LMEM. */
>>> u64 lmem_size;
>>> /** @num_ctxs: assigned number of GuC submission context IDs. */
>>> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/
>>> xe_sriov_vf.c
>>> index c1275e64aa9c..4ee8fc70a744 100644
>>> --- a/drivers/gpu/drm/xe/xe_sriov_vf.c
>>> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
>>> @@ -7,6 +7,7 @@
>>> #include "xe_assert.h"
>>> #include "xe_device.h"
>>> +#include "xe_gt.h"
>>> #include "xe_gt_sriov_printk.h"
>>> #include "xe_gt_sriov_vf.h"
>>> #include "xe_pm.h"
>>> @@ -170,6 +171,26 @@ static bool vf_post_migration_imminent(struct
>>> xe_device *xe)
>>> work_pending(&xe->sriov.vf.migration.worker);
>>> }
>>> +static int vf_post_migration_fixup_ggtt_nodes(struct xe_device *xe)
>>> +{
>>> + struct xe_tile *tile;
>>> + unsigned int id;
>>> + int err;
>>> +
>>> + for_each_tile(tile, xe, id) {
>>> + struct xe_gt *gt = tile->primary_gt;
>>> + int ret;
>>> +
>>> + /* media doesn't have its own ggtt */
>>> + if (xe_gt_is_media_type(gt))
>> primary_gt can't be MEDIA_TYPE
> ok, will remove the condition.
>>
>>> + continue;
>>> + ret = xe_gt_sriov_vf_fixup_ggtt_nodes(gt);
>>> + if (ret != ENODATA)
>>> + err = ret;
>> for multi-tile platforms, this could overwrite previous error/status
> Kerneldoc for `xe_gt_sriov_vf_fixup_ggtt_nodes` explains possible `ret`
> values. With that, the solution is correct.
this is still error prone, as one day someone can add more error codes
to xe_gt_sriov_vf_fixup_ggtt_nodes()
hmm, and while the doc for xe_gt_sriov_vf_fixup_ggtt_nodes() says:
Return: 0 on success, ENODATA if fixups are unnecessary
what would be expected outcome of vf_post_migration_fixup_ggtt_nodes()?
maybe with bool it will be simpler (for both functions):
Return: true if fixups are necessary
>>
>>> + }
>>> + return err;
>> err might be still uninitialized here
>
> True. Will fix.
>
> -Tomasz
>
>>
>>> +}
>>> +
>>> /*
>>> * Notify all GuCs about resource fixups apply finished.
>>> */
>>> @@ -201,6 +222,7 @@ static void vf_post_migration_recovery(struct
>>> xe_device *xe)
>>> if (unlikely(err))
>>> goto fail;
>>> + err = vf_post_migration_fixup_ggtt_nodes(xe);
>>> /* FIXME: add the recovery steps */
>>> vf_post_migration_notify_resfix_done(xe);
>>> xe_pm_runtime_put(xe);
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration
2025-03-06 22:21 ` [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration Tomasz Lis
2025-03-14 18:22 ` Michal Wajdeczko
@ 2025-03-24 5:58 ` Dan Carpenter
1 sibling, 0 replies; 23+ messages in thread
From: Dan Carpenter @ 2025-03-24 5:58 UTC (permalink / raw)
To: oe-kbuild, Tomasz Lis, intel-xe
Cc: lkp, oe-kbuild-all, Michał Winiarski, Michał Wajdeczko,
Piotr Piórkowski
Hi Tomasz,
kernel test robot noticed the following build warnings:
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Tomasz-Lis/drm-drm_mm-Safe-macro-for-iterating-through-nodes-in-range/20250307-102511
base: https://gitlab.freedesktop.org/drm/xe/kernel.git drm-xe-next
patch link: https://lore.kernel.org/r/20250306222126.3382322-3-tomasz.lis%40intel.com
patch subject: [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration
config: openrisc-randconfig-r073-20250321 (https://download.01.org/0day-ci/archive/20250323/202503231159.himCw1Ch-lkp@intel.com/config)
compiler: or1k-linux-gcc (GCC) 11.5.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202503231159.himCw1Ch-lkp@intel.com/
smatch warnings:
drivers/gpu/drm/xe/xe_sriov_vf.c:191 vf_post_migration_fixup_ggtt_nodes() error: uninitialized symbol 'err'.
vim +/err +191 drivers/gpu/drm/xe/xe_sriov_vf.c
253478de2cb134 Tomasz Lis 2025-03-06 174 static int vf_post_migration_fixup_ggtt_nodes(struct xe_device *xe)
253478de2cb134 Tomasz Lis 2025-03-06 175 {
253478de2cb134 Tomasz Lis 2025-03-06 176 struct xe_tile *tile;
253478de2cb134 Tomasz Lis 2025-03-06 177 unsigned int id;
253478de2cb134 Tomasz Lis 2025-03-06 178 int err;
253478de2cb134 Tomasz Lis 2025-03-06 179
253478de2cb134 Tomasz Lis 2025-03-06 180 for_each_tile(tile, xe, id) {
253478de2cb134 Tomasz Lis 2025-03-06 181 struct xe_gt *gt = tile->primary_gt;
253478de2cb134 Tomasz Lis 2025-03-06 182 int ret;
253478de2cb134 Tomasz Lis 2025-03-06 183
253478de2cb134 Tomasz Lis 2025-03-06 184 /* media doesn't have its own ggtt */
253478de2cb134 Tomasz Lis 2025-03-06 185 if (xe_gt_is_media_type(gt))
253478de2cb134 Tomasz Lis 2025-03-06 186 continue;
253478de2cb134 Tomasz Lis 2025-03-06 187 ret = xe_gt_sriov_vf_fixup_ggtt_nodes(gt);
253478de2cb134 Tomasz Lis 2025-03-06 188 if (ret != ENODATA)
253478de2cb134 Tomasz Lis 2025-03-06 189 err = ret;
err isn't initialized on else path.
253478de2cb134 Tomasz Lis 2025-03-06 190 }
253478de2cb134 Tomasz Lis 2025-03-06 @191 return err;
253478de2cb134 Tomasz Lis 2025-03-06 192 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration
2025-03-15 14:27 ` Michal Wajdeczko
@ 2025-03-28 17:52 ` Lis, Tomasz
0 siblings, 0 replies; 23+ messages in thread
From: Lis, Tomasz @ 2025-03-28 17:52 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Michał Winiarski, Piotr Piórkowski
On 15.03.2025 15:27, Michal Wajdeczko wrote:
> On 15.03.2025 00:45, Lis, Tomasz wrote:
>> On 14.03.2025 19:22, Michal Wajdeczko wrote:
>>> On 06.03.2025 23:21, Tomasz Lis wrote:
>>>> We have only one GGTT for all IOV functions, with each VF having
>>>> assigned
>>>> a range of addresses for its use. After migration, a VF can receive a
>>>> different range of addresses than it had initially.
>>>>
>>>> This implements shifting GGTT addresses within drm_mm nodes, so that
>>>> VMAs stay valid after migration. This will make the driver use new
>>>> addresses when accessing GGTT from the moment the shifting ends.
>>>>
>>>> By taking the ggtt->lock for the period of VMA fixups, this change
>>>> also adds constraint on that mutex. Any locks used during the recovery
>>>> cannot ever wait for hardware response - because after migration,
>>>> the hardware will not do anything until fixups are finished.
>>>>
>>>> v2: Moved some functs to xe_ggtt.c; moved shift computation to just
>>>> after querying; improved documentation; switched some warns to
>>>> asserts;
>>>> skipping fixups when GGTT shift eq 0; iterating through tiles
>>>> (Michal)
>>>> v3: Updated kerneldocs, removed unused funct, properly allocate
>>>> balloning nodes if non existent
>>>>
>>>> Signed-off-by: Tomasz Lis<tomasz.lis@intel.com>
>>>> ---
>>>> drivers/gpu/drm/xe/xe_ggtt.c | 163 ++++++++++++++++++++++
>>>> drivers/gpu/drm/xe/xe_ggtt.h | 2 +
>>>> drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 26 ++++
>>>> drivers/gpu/drm/xe/xe_gt_sriov_vf.h | 1 +
>>>> drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h | 2 +
>>>> drivers/gpu/drm/xe/xe_sriov_vf.c | 22 +++
>>>> 6 files changed, 216 insertions(+)
>>>>
>>>> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
>>>> index 5fcb2b4c2c13..6865d1cdd676 100644
>>>> --- a/drivers/gpu/drm/xe/xe_ggtt.c
>>>> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
>>>> @@ -489,6 +489,169 @@ void xe_ggtt_node_remove_balloon(struct
>>>> xe_ggtt_node *node)
>>>> xe_ggtt_node_fini(node);
>>>> }
>>>> +static u64 drm_mm_node_end(struct drm_mm_node *node)
>>>> +{
>>>> + return node->start + node->size;
>>>> +}
>>>> +
>>>> +static void xe_ggtt_mm_shift_nodes(struct xe_ggtt *ggtt, struct
>>>> drm_mm_node *balloon_beg,
>>>> + struct drm_mm_node *balloon_fin, s64 shift)
>>>> +{
>>>> + struct drm_mm_node *node, *tmpn;
>>>> + LIST_HEAD(temp_list_head);
>>>> + int err;
>>>> +
>>>> + lockdep_assert_held(&ggtt->lock);
>>>> +
>>>> + /*
>>>> + * Move nodes, from range previously assigned to this VF, into
>>>> temp list.
>>>> + *
>>>> + * The balloon_beg and balloon_fin nodes are there to eliminate
>>>> unavailable
>>>> + * ranges from use: first reserves the GGTT area below the range
>>>> for current VF,
>>>> + * and second reserves area above.
>>>> + *
>>>> + * Below is a GGTT layout of example VF, with a certain address
>>>> range assigned to
>>>> + * said VF, and inaccessible areas above and below:
>>>> + *
>>>> + *
>>>> 0 4GiB
>>>> + * |<--------------------------- Total GGTT size
>>>> ----------------------------->|
>>>> + *
>>>> WOPCM GUC_TOP
>>>> + * |<-------------- Area mappable by xe_ggtt instance
>>>> ---------------->|
>>>> + *
>>>> + * +---+---------------------------------+----------
>>>> +----------------------+---+
>>>> + * |\\\|/////////////////////////////////| VF mem
>>>> |//////////////////////|\\\|
>>>> + * +---+---------------------------------+----------
>>>> +----------------------+---+
>>>> + *
>>>> + * Hardware enforced access rules before migration:
>>>> + *
>>>> + * |<------- inaccessible for VF ------->|<VF owned>|<--
>>>> inaccessible for VF ->|
>>>> + *
>>>> + * drm_mm nodes used for tracking allocations:
>>>> + *
>>>> + * |<----------- balloon ------------>|<- nodes->|<-----
>>>> balloon ------>|
>>>> + *
>>>> + * After the migration, GGTT area assigned to the VF might have
>>>> shifted, either
>>>> + * to lower or to higher address. But we expect the total size
>>>> and extra areas to
>>>> + * be identical, as migration can only happen between matching
>>>> platforms.
>>>> + * Below is an example of GGTT layout of the VF after migration.
>>>> Content of the
>>>> + * GGTT for VF has been moved to a new area, and we receive its
>>>> address from GuC:
>>>> + *
>>>> + * +---+----------------------+----------
>>>> +---------------------------------+---+
>>>> + * |\\\|//////////////////////| VF mem
>>>> |/////////////////////////////////|\\\|
>>>> + * +---+----------------------+----------
>>>> +---------------------------------+---+
>>>> + *
>>>> + * Hardware enforced access rules after migration:
>>>> + *
>>>> + * |<- inaccessible for VF -->|<VF owned>|<------- inaccessible
>>>> for VF ------->|
>>>> + *
>>>> + * So the VF has a new slice of GGTT assigned, and during
>>>> migration process, the
>>>> + * memory content was copied to that new area. But the drm_mm
>>>> nodes within xe kmd
>>>> + * are still tracking allocations using the old addresses. The
>>>> nodes within VF
>>>> + * owned area have to be shifted, and balloon nodes need to be
>>>> resized to
>>>> + * properly mask out areas not owned by the VF.
>>>> + *
>>>> + * Fixed drm_mm nodes used for tracking allocations:
>>>> + *
>>>> + * |<------ balloon ------>|<- nodes->|<----------- balloon
>>>> ----------->|
>>>> + *
>>>> + * Due to use of GPU profiles, we do not expect the old and new
>>>> GGTT ares to
>>>> + * overlap; but our node shifting will fix addresses properly
>>>> regardless.
>>>> + *
>>>> + */
>>>> + drm_mm_for_each_node_in_range_safe(node, tmpn, &ggtt->mm,
>>>> + drm_mm_node_end(balloon_beg),
>>>> + balloon_fin->start) {
>>>> + drm_mm_remove_node(node);
>>>> + list_add(&node->node_list, &temp_list_head);
>>>> + }
>>>> +
>>>> + /* shift and re-add ballooning nodes */
>>>> + if (drm_mm_node_allocated(balloon_beg))
>>>> + drm_mm_remove_node(balloon_beg);
>>>> + if (drm_mm_node_allocated(balloon_fin))
>>>> + drm_mm_remove_node(balloon_fin);
>>>> + balloon_beg->size += shift;
>>>> + balloon_fin->start += shift;
>>>> + balloon_fin->size -= shift;
>>>> + if (balloon_beg->size != 0) {
>>>> + err = drm_mm_reserve_node(&ggtt->mm, balloon_beg);
>>>> + xe_tile_assert(ggtt->tile, !err);
>>>> + }
>>>> + if (balloon_fin->size != 0) {
>>>> + err = drm_mm_reserve_node(&ggtt->mm, balloon_fin);
>>>> + xe_tile_assert(ggtt->tile, !err);
>>>> + }
>>>> +
>>>> + /*
>>>> + * Now the GGTT VM contains only nodes outside of area assigned
>>>> to this VF.
>>>> + * We can re-add all VF nodes with shifted offsets.
>>>> + */
>>>> + list_for_each_entry_safe(node, tmpn, &temp_list_head, node_list) {
>>>> + list_del(&node->node_list);
>>>> + node->start += shift;
>>>> + err = drm_mm_reserve_node(&ggtt->mm, node);
>>>> + xe_tile_assert(ggtt->tile, !err);
>>>> + }
>>>> +}
>>>> +
>>>> +/**
>>>> + * xe_ggtt_node_shift_nodes - Shift GGTT nodes to adjust for a
>>>> change in usable address range.
>>>> + * @ggtt: the &xe_ggtt struct instance
>>>> + * @balloon_beg: ggtt balloon node which preceds the area
>>>> provisioned for current VF
>>>> + * @balloon_fin: ggtt balloon node which follows the area
>>>> provisioned for current VF
>>>> + * @shift: change to the location of area provisioned for current VF
>>>> + */
>>>> +void xe_ggtt_node_shift_nodes(struct xe_ggtt *ggtt, struct
>>>> xe_ggtt_node **balloon_beg,
>>>> + struct xe_ggtt_node **balloon_fin, s64 shift)
>>>> +{
>>>> + struct drm_mm_node *balloon_mm_beg, *balloon_mm_end;
>>>> + struct xe_ggtt_node *node;
>>>> +
>>>> + if (!*balloon_beg)
>>>> + {
>>>> + node = xe_ggtt_node_init(ggtt);
>>>> + if (IS_ERR(node))
>>>> + goto out;
>>>> + node->base.color = 0;
>>>> + node->base.flags = 0;
>>>> + node->base.start = xe_wopcm_size(ggtt->tile->xe);
>>>> + node->base.size = 0;
>>>> + *balloon_beg = node;
>>>> + }
>>>> + balloon_mm_beg = &(*balloon_beg)->base;
>>>> +
>>>> + if (!*balloon_fin)
>>>> + {
>>>> + node = xe_ggtt_node_init(ggtt);
>>>> + if (IS_ERR(node))
>>>> + goto out;
>>>> + node->base.color = 0;
>>>> + node->base.flags = 0;
>>>> + node->base.start = GUC_GGTT_TOP;
>>>> + node->base.size = 0;
>>>> + *balloon_fin = node;
>>>> + }
>>>> + balloon_mm_end = &(*balloon_fin)->base;
>>>> +
>>>> + xe_tile_assert(ggtt->tile, (*balloon_beg)->ggtt);
>>>> + xe_tile_assert(ggtt->tile, (*balloon_fin)->ggtt);
>>>> +
>>>> + xe_ggtt_mm_shift_nodes(ggtt, balloon_mm_beg, balloon_mm_end,
>>>> shift);
>>>> +out:
>>>> + if (*balloon_beg && !xe_ggtt_node_allocated(*balloon_beg))
>>>> + {
>>>> + node = *balloon_beg;
>>>> + *balloon_beg = NULL;
>>>> + xe_ggtt_node_fini(node);
>>>> + }
>>>> + if (*balloon_fin && !xe_ggtt_node_allocated(*balloon_fin))
>>>> + {
>>>> + node = *balloon_fin;
>>>> + *balloon_fin = NULL;
>>>> + xe_ggtt_node_fini(node);
>>>> + }
>>>> +}
>>>> +
>>>> /**
>>>> * xe_ggtt_node_insert_locked - Locked version to insert a
>>>> &xe_ggtt_node into the GGTT
>>>> * @node: the &xe_ggtt_node to be inserted
>>>> diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h
>>>> index 27e7d67de004..d9e133a155e6 100644
>>>> --- a/drivers/gpu/drm/xe/xe_ggtt.h
>>>> +++ b/drivers/gpu/drm/xe/xe_ggtt.h
>>>> @@ -18,6 +18,8 @@ void xe_ggtt_node_fini(struct xe_ggtt_node *node);
>>>> int xe_ggtt_node_insert_balloon(struct xe_ggtt_node *node,
>>>> u64 start, u64 size);
>>>> void xe_ggtt_node_remove_balloon(struct xe_ggtt_node *node);
>>>> +void xe_ggtt_node_shift_nodes(struct xe_ggtt *ggtt, struct
>>>> xe_ggtt_node **balloon_beg,
>>>> + struct xe_ggtt_node **balloon_fin, s64 shift);
>>>> int xe_ggtt_node_insert(struct xe_ggtt_node *node, u32 size, u32
>>>> align);
>>>> int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node,
>>>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c b/drivers/gpu/drm/
>>>> xe/xe_gt_sriov_vf.c
>>>> index a439261bf4d7..dbd7010f0117 100644
>>>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>>>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.c
>>>> @@ -415,6 +415,7 @@ static int vf_get_ggtt_info(struct xe_gt *gt)
>>>> xe_gt_sriov_dbg_verbose(gt, "GGTT %#llx-%#llx = %lluK\n",
>>>> start, start + size - 1, size / SZ_1K);
>>>> + config->ggtt_shift = start - (s64)config->ggtt_base;
>>> btw, is it safe to keep ggtt_shift after we're done with fixups?
>> its value is always set in `vf_post_migration_requery_guc()`. And fixup
>> functions are only called after that, and will never be called outside
>> of recovery.
> "called after"
> "called outside"
>
> is that somehow enforced? do we some asserts for that?
It is "enforced", by the flow of the code. Are you implying there is a
need of protecting against someone reordering the lines of code within
the function, or calling random functions from somewhere else?
No, we do not and will not protect from that. We have the tools - a
kernel thread can check whether it's a specific worker. It just makes no
sense to check for that.
>> So, yes it's safe.
> I would feel more safe if the ggtt_shift is guaranteed to be zero
> outside the recovery process
No, I see no point in that. We do not clear unused variables in kernel.
Because there's no point if they're unused (unless they cause a security
risk, but it doesn't happen here).
It wouldn't be hard to do - the value is only set within the worker, and
we can only have one worker at once - so the shift could be cleared
without any need of additional protection.
It is just against the kernel development practices.
>>>> config->ggtt_base = start;
>>>> config->ggtt_size = size;
>>>> @@ -938,6 +939,31 @@ int xe_gt_sriov_vf_query_runtime(struct xe_gt
>>>> *gt)
>>>> return err;
>>>> }
>>>> +/**
>>>> + * xe_gt_sriov_vf_fixup_ggtt_nodes - Shift GGTT allocations to match
>>>> assigned range.
>>>> + * @gt: the &xe_gt struct instance
>>>> + * Return: 0 on success, ENODATA if fixups are unnecessary
>>> if you really need to distinguish between nop/done then bool as return
>>> will be better, but I'm not sure that caller needs to know
>> I don't really need this. Michal, this was introduced on your request.
> hmm, I don't recall and can't find it now my prev reply...
>
> but likely my point was that if we can fail we should report that
>
>>> if we need to know whether there was a shift, and thus we need to start
>>> the fixup sequence, then maybe we should have a separate function that
>>> returns (and maybe clears) the ggtt_shift
>> No need to clear the shift.
> but it could be easily used as indication of WIP vs DONE/NOP
Where do we need such a check? Even if we need it somewhere, how is that
better from checking if the worker is active?
>> I did not checked for a zero shift in my original patch. I consider it
>> pointless to complicate
> what's so complicated in check for zero/non-zero?
>
> with zero shift there is nothing to do, so even with
> broken/unimplemented fixup code we should still be able to move on (by
> avoid calling fixup code at all or doing early exit if shift is 0)
I've often got requests of putting two, and sometimes even one line into
a separate function. You know who requested these.
Now we're discussing making a chunk of logic conditional, and you have
no problem with complicating the code?
What has changed?
Secondly, what is the benefit? Faster recovery? No, we're saving
microseconds.
Error avoidance? If there is internal inconsistency somewhere,
everything will fall regardless
whether we iterate through some requests and messages or not.
Making this conditional strikes me as an example of premature,
completely unnecessary optimization.
Thirdly, "nothing to do"? we still have to do the time-intensive part of
the work in the exact same
way - get provisioning, and send RESFIX_DONE at the end. All we're
skipping is a set of 4 (some to be added later)
functions, the ones which never wait for hardware so pass through at
full CPU speed.
Again, why are we doing this? If we're complicating the code, adding new
conditions, then there must be a reason.
Why make it "so complicated" only for the complication sake? Is there
some kind of threshold for unnecessary complication?
>> the flow with this skip. This was introduced on your request. If you
>> agree please let me
>>
>> know and I will revert the changes which introduced this check. I can
>> instead make a separate
>>
>> function iterating through tiles too, if that is your preference.
>>
>>>> + *
>>>> + * Since Global GTT is not virtualized, each VF has an assigned range
>>>> + * within the global space. This range might have changed during
>>>> migration,
>>>> + * which requires all memory addresses pointing to GGTT to be shifted.
>>>> + */
>>>> +int xe_gt_sriov_vf_fixup_ggtt_nodes(struct xe_gt *gt)
> what about
>
> xe_gt_sriov_vf_fixup_ggtt_nodes(gt, ggtt_shift)
We're often hiding arguments for functions, but this one requires an
additional one?
What is the reason? Why this one in particular?
I do not see any reason for that change.
>>>> +{
>>>> + struct xe_gt_sriov_vf_selfconfig *config = >-
>>>>> sriov.vf.self_config;
>>>> + struct xe_tile *tile = gt_to_tile(gt);
>>>> + struct xe_ggtt *ggtt = tile->mem.ggtt;
>>>> + s64 ggtt_shift;
>>>> +
> then
> xe_gt_assert(gt, ggtt_shift);
> or
> if (!ggtt_shift)
> return
Why? What is the reason? What is the benefit for additional code? What
are the savings?
I don't see the necessity. The code will work perfectly fine with zero
shift.
>>>> + mutex_lock(&ggtt->lock);
>>>> + ggtt_shift = config->ggtt_shift;
>>>> + if (ggtt_shift)
>>>> + xe_ggtt_node_shift_nodes(ggtt, &tile->sriov.vf.ggtt_balloon[0],
>>>> + &tile->sriov.vf.ggtt_balloon[1], ggtt_shift);
>>> maybe to make it a little simpler on the this xe_ggtt function side, we
>>> should remove our balloon nodes before requesting shift_nodes(), and
>>> then re-add balloon nodes here again?
>> I like having balloons re-added first, as that mimics the order in
>> probe, and makes the flow more logical: define bounds first, then add
>> the functional content.
> but during the recovery there will be no new allocations, so we can drop
> the bounds/balloons, move existing nodes, and apply new bounds/balloons
While I don't agree these arguments justify the change, the arguments
below do justify it.
>> What would make this flow simpler is if the balloons always existed
>> instead of having to be conditionally created.
> it might be also simpler if we try to reuse existing ballooning code
> from xe_gt_sriov_vf_prepare_ggtt() - maybe all we need is to add
> xe_gt_sriov_vf_release_ggtt() that will release balloons on request
The code reuse is a good argument for this change. Will do, with all
required
locking changes.
>> Having the balloons added at the end would not make the code easier to
>> understand for new readers, but actually more convoluted.
> why? in xe_ggtt we might just focus on moving the nodes (maybe using
> drm_mm_shift from your [2] series) without worrying about any balloons
>
> and without the balloons (which are really outside of xe_ggtt logic
> right now) we know that nodes shifts shall be successful
>
> [2]
> https://lore.kernel.org/dri-devel/20250204224136.3183710-1-tomasz.lis@intel.com/
The kernel dev practices are to avoid using uncertain future changes as
a justification
for current code. But by heart I agree, this does help with future
prospects.
>> That would also mean in case of error we wouldn't just get few non-
>> allocated nodes, but unset bounds.
> hmm, so maybe the only problem is that right now, ie. after xe_ggtt_node
> refactoring, our balloon nodes are initialized (allocated) at the same
> time when we insert them into GGTT
>
> if in the VF code we split calls to xe_ggtt_node_init() and
> xe_ggtt_node_insert_balloon() then there could be no new allocations
> when re-adding balloons during recovery, so we can't fail due to this
With the code reuse, the split is not only required due to error
returns, but also
to avoid creating lockdep relation between ggtt lock and memory allocation.
>> No reset would recover from that.
>>
>>>> + mutex_unlock(&ggtt->lock);
>>>> + return ggtt_shift ? 0 : ENODATA;
>>> and it's quite unusual to return positive errno codes...
>> right, will negate.
> negative codes usually means errors, but I guess we can't fail, and all
> you want is to say whether we need extra follow up steps (fixups) or not
>
> so bool return is likely a better choice
>
>>>> +}
>>>> +
>>>> static int vf_runtime_reg_cmp(const void *a, const void *b)
>>>> {
>>>> const struct vf_runtime_reg *ra = a;
>>>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h b/drivers/gpu/drm/
>>>> xe/xe_gt_sriov_vf.h
>>>> index ba6c5d74e326..95a6c9c1dca0 100644
>>>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
>>>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf.h
>>>> @@ -18,6 +18,7 @@ int xe_gt_sriov_vf_query_config(struct xe_gt *gt);
>>>> int xe_gt_sriov_vf_connect(struct xe_gt *gt);
>>>> int xe_gt_sriov_vf_query_runtime(struct xe_gt *gt);
>>>> int xe_gt_sriov_vf_prepare_ggtt(struct xe_gt *gt);
>>>> +int xe_gt_sriov_vf_fixup_ggtt_nodes(struct xe_gt *gt);
>>>> int xe_gt_sriov_vf_notify_resfix_done(struct xe_gt *gt);
>>>> void xe_gt_sriov_vf_migrated_event_handler(struct xe_gt *gt);
>>>> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h b/drivers/
>>>> gpu/drm/xe/xe_gt_sriov_vf_types.h
>>>> index a57f13b5afcd..5ccbdf8d08b6 100644
>>>> --- a/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
>>>> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h
>>>> @@ -40,6 +40,8 @@ struct xe_gt_sriov_vf_selfconfig {
>>>> u64 ggtt_base;
>>>> /** @ggtt_size: assigned size of the GGTT region. */
>>>> u64 ggtt_size;
>>>> + /** @ggtt_shift: difference in ggtt_base on last migration */
>>>> + s64 ggtt_shift;
>>>> /** @lmem_size: assigned size of the LMEM. */
>>>> u64 lmem_size;
>>>> /** @num_ctxs: assigned number of GuC submission context IDs. */
>>>> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/
>>>> xe_sriov_vf.c
>>>> index c1275e64aa9c..4ee8fc70a744 100644
>>>> --- a/drivers/gpu/drm/xe/xe_sriov_vf.c
>>>> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
>>>> @@ -7,6 +7,7 @@
>>>> #include "xe_assert.h"
>>>> #include "xe_device.h"
>>>> +#include "xe_gt.h"
>>>> #include "xe_gt_sriov_printk.h"
>>>> #include "xe_gt_sriov_vf.h"
>>>> #include "xe_pm.h"
>>>> @@ -170,6 +171,26 @@ static bool vf_post_migration_imminent(struct
>>>> xe_device *xe)
>>>> work_pending(&xe->sriov.vf.migration.worker);
>>>> }
>>>> +static int vf_post_migration_fixup_ggtt_nodes(struct xe_device *xe)
>>>> +{
>>>> + struct xe_tile *tile;
>>>> + unsigned int id;
>>>> + int err;
>>>> +
>>>> + for_each_tile(tile, xe, id) {
>>>> + struct xe_gt *gt = tile->primary_gt;
>>>> + int ret;
>>>> +
>>>> + /* media doesn't have its own ggtt */
>>>> + if (xe_gt_is_media_type(gt))
>>> primary_gt can't be MEDIA_TYPE
>> ok, will remove the condition.
>>>> + continue;
>>>> + ret = xe_gt_sriov_vf_fixup_ggtt_nodes(gt);
>>>> + if (ret != ENODATA)
>>>> + err = ret;
>>> for multi-tile platforms, this could overwrite previous error/status
>> Kerneldoc for `xe_gt_sriov_vf_fixup_ggtt_nodes` explains possible `ret`
>> values. With that, the solution is correct.
> this is still error prone, as one day someone can add more error codes
> to xe_gt_sriov_vf_fixup_ggtt_nodes()
>
> hmm, and while the doc for xe_gt_sriov_vf_fixup_ggtt_nodes() says:
>
> Return: 0 on success, ENODATA if fixups are unnecessary
>
> what would be expected outcome of vf_post_migration_fixup_ggtt_nodes()?
>
> maybe with bool it will be simpler (for both functions):
>
> Return: true if fixups are necessary
What would be simpler is no unnecessary return value at all, like in my
original series.
But ok, I will switch the standard Linux error codes to just a bool.
-Tomasz
>>>> + }
>>>> + return err;
>>> err might be still uninitialized here
>> True. Will fix.
>>
>> -Tomasz
>>
>>>> +}
>>>> +
>>>> /*
>>>> * Notify all GuCs about resource fixups apply finished.
>>>> */
>>>> @@ -201,6 +222,7 @@ static void vf_post_migration_recovery(struct
>>>> xe_device *xe)
>>>> if (unlikely(err))
>>>> goto fail;
>>>> + err = vf_post_migration_fixup_ggtt_nodes(xe);
>>>> /* FIXME: add the recovery steps */
>>>> vf_post_migration_notify_resfix_done(xe);
>>>> xe_pm_runtime_put(xe);
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v4 3/3] drm/xe/vf: Fixup CTB send buffer messages after migration
2025-03-15 12:59 ` Michal Wajdeczko
@ 2025-03-28 17:52 ` Lis, Tomasz
0 siblings, 0 replies; 23+ messages in thread
From: Lis, Tomasz @ 2025-03-28 17:52 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe, Lucas De Marchi
Cc: Michał Winiarski, Piotr Piórkowski
[-- Attachment #1: Type: text/plain, Size: 23754 bytes --]
On 15.03.2025 13:59, Michal Wajdeczko wrote:
> On 14.03.2025 23:11, Lis, Tomasz wrote:
>> On 14.03.2025 21:46, Michal Wajdeczko wrote:
>>> On 06.03.2025 23:21, Tomasz Lis wrote:
>>>> During post-migration recovery of a VF, it is necessary to update
>>>> GGTT references included in messages which are going to be sent
>>>> to GuC. GuC will start consuming messages after VF KMD will inform
>>>> it about fixups being done; before that, the VF KMD is expected
>>>> to update any H2G messages which are already in send buffer but
>>>> were not consumed by GuC.
>>>>
>>>> Only a small subset of messages allowed for VFs have GGTT references
>>>> in them. This patch adds the functionality to parse the CTB send
>>>> ring buffer and shift addresses contained within.
>>>>
>>>> While fixing the CTB content, ct->lock is not taken. This means
>>>> the only barrier taken remains GGTT address lock - which is ok,
>>>> because only requests with GGTT addresses matter, but it also means
>>>> tail changes can happen during the CTB fixups execution (which may
>>>> be ignored as any new messages will not have anything to fix).
>>>>
>>>> The GGTT address locking will be introduced in a future series.
>>>>
>>>> v2: removed storing shift as that's now done in VMA nodes patch;
>>>> macros to inlines; warns to asserts; log messages fixes (Michal)
>>>> v3: Removed inline keywords, enums for offsets in CTB messages,
>>>> less error messages, if return unused then made functs void (Michal)
>>>> v4: Update the cached head before starting fixups
>>>>
>>>> Signed-off-by: Tomasz Lis<tomasz.lis@intel.com>
>>>> ---
>>>> drivers/gpu/drm/xe/abi/guc_actions_abi.h | 7 ++
>>>> drivers/gpu/drm/xe/xe_guc_ct.c | 147 +++++++++++++++++++++++
>>>> drivers/gpu/drm/xe/xe_guc_ct.h | 2 +
>>>> drivers/gpu/drm/xe/xe_guc_submit.c | 4 +
>>>> drivers/gpu/drm/xe/xe_sriov_vf.c | 18 +++
>>>> 5 files changed, 178 insertions(+)
>>>>
>>>> diff --git a/drivers/gpu/drm/xe/abi/guc_actions_abi.h b/drivers/gpu/
>>>> drm/xe/abi/guc_actions_abi.h
>>>> index ec516e838ee8..dde6cb5a6be9 100644
>>>> --- a/drivers/gpu/drm/xe/abi/guc_actions_abi.h
>>>> +++ b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
>>>> @@ -160,6 +160,13 @@ enum xe_guc_preempt_options {
>>>> XE_GUC_PREEMPT_OPTION_DROP_SUBMIT_Q = 0x8,
>>>> };
>>>> +enum xe_guc_register_context_multi_lrc_param_offsets {
>>>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC = 5,
>>>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE = 7,
>>>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN = 10,
>>>> + XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA = 11
>>>> +};
>>>> +
>>>> enum xe_guc_report_status {
>>>> XE_GUC_REPORT_STATUS_UNKNOWN = 0x0,
>>>> XE_GUC_REPORT_STATUS_ACKED = 0x1,
>>>> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/
>>>> xe_guc_ct.c
>>>> index 72ad576fc18e..6f19bf9565ba 100644
>>>> --- a/drivers/gpu/drm/xe/xe_guc_ct.c
>>>> +++ b/drivers/gpu/drm/xe/xe_guc_ct.c
>>>> @@ -84,6 +84,8 @@ struct g2h_fence {
>>>> bool done;
>>>> };
>>>> +#define make_u64(hi, lo) ((u64)((u64)(u32)(hi) << 32 | (u32)(lo)))
>>>> +
>>>> static void g2h_fence_init(struct g2h_fence *g2h_fence, u32
>>>> *response_buffer)
>>>> {
>>>> g2h_fence->response_buffer = response_buffer;
>>>> @@ -1622,6 +1624,151 @@ static void g2h_worker_func(struct
>>>> work_struct *w)
>>>> receive_g2h(ct);
>>>> }
>>>> +static u32 ctb_read32(struct xe_device *xe, struct iosys_map *cmds,
>>> maybe to make this function more "ctb", pass ctb instead xe?
>> You mean `struct xe_guc_ct *ct`?
>>
>> I don't understand, why would we do this? We don't even need `ct` there.
> if it doesn't need 'ct' then don't use 'ctb' prefix
ok, will change.
>> That would just add another `ct_to_xe(ct)`.
> maybe not another, but just moved, as then the caller doesn't need to
> have it
>
>> If we're adjusting parameters to what looks nicer rather than what is
> it's not always just about the look, but it's about proper layering
>
>> really necessary, then why `xe_map_memcpy_from` accepts `xe` and not a
>> `bo`?
> feel free to ask authors, this was introduced (without review) as part
> of the initial Xe commit dd08ebf6c352
>
>>>> + u32 head, u32 pos)
>>>> +{
>>>> + u32 msg[1];
>>>> +
>>>> + xe_map_memcpy_from(xe, msg, cmds, (head + pos) * sizeof(u32),
>>>> + 1 * sizeof(u32));
>>>> + return msg[0];
>>> and looks almost like our deprecated xe_map_read32 ;)
>> yes, it does look similar. But I assume we don't want to reuse that?
> well, it depends.
>
> since it is already there, IMO we should use it.
>
> OTOH, during some other review it was said that maybe the whole xe_map
> layer will go away, so then no need to use it, but equally, no need to
> use _any_ of other xe_map wrappers, so need for having a xe is also gone
>
> but as there are no signs that xe_map will be removed, we should
> continue to reuse existing code
>
> unless @Lucas has some more recent news
ok, will use `xe_map_rd()`.
>>>> +}
>>>> +
>>>> +static void ctb_fixup64(struct xe_device *xe, struct iosys_map *cmds,
>>>> + u32 head, u32 pos, s64 shift)
>>>> +{
>>>> + u32 msg[2];
>>>> + u64 offset;
>>>> +
>>>> + xe_map_memcpy_from(xe, msg, cmds, (head + pos) * sizeof(u32),
>>>> + 2 * sizeof(u32));
>>>> + offset = make_u64(msg[1], msg[0]);
>>>> + offset += shift;
>>>> + msg[0] = lower_32_bits(offset);
>>>> + msg[1] = upper_32_bits(offset);
>>>> + xe_map_memcpy_to(xe, cmds, (head + pos) * sizeof(u32), msg, 2 *
>>>> sizeof(u32));
>>>> +}
>>>> +
>>>> +/*
>>>> + * ct_update_addresses_in_message - Shift any GGTT addresses within
>>> nit: as this is *not* a real kernel-doc, then maybe drop function name
>>> and keep only description plus params?
>> will do, even though I don't know why we break the sibling rules which
>> could be easily kept.
>>
>>>> + * a single message left within CTB from before post-migration
>>>> recovery.
>>>> + * @ct: pointer to CT struct of the target GuC
>>>> + * @cmds: iomap buffer containing CT messages
>>>> + * @head: start of the target message within the buffer
>>>> + * @len: length of the target message
>>>> + * @size: size of the commands buffer
>>>> + * @shift: the address shift to be added to each GGTT reference
>>>> + */
>>>> +static void ct_update_addresses_in_message(struct xe_guc_ct *ct,
>>>> + struct iosys_map *cmds, u32 head,
>>>> + u32 len, u32 size, s64 shift)
>>>> +{
>>>> + struct xe_device *xe = ct_to_xe(ct);
>>>> + u32 action, i, n;
>>>> + u32 msg[1];
>>>> +
>>>> + xe_map_memcpy_from(xe, msg, cmds, head * sizeof(u32),
>>>> + 1 * sizeof(u32));
>>> ctb_read32() didn't work here?
>> It would. For G2H and H2G messages we always use FIELD_GET on an array,
>> and field name contains index in that array.
> hmm, not sure if I follow here... what was wrong with:
>
> msg = ctb_read32(...)
> or
> msg = xe_map_read32(...)
>
> you could still use FIELD_GET from the 'msg' var
As I explained, currently FIELD_GET is consistently called on an array.
To confirm, use:
```
$ grep -R 'FIELD_GET[\(]' drivers/gpu/drm/xe/xe_guc_ct.c
```
You will find either `hxg[0]` or `msg[0]` in all lines.
>> So, I consider this way of writing it more standard within Xe, and
>> therefore easier to understand. Though no strong opinion - let me know
>> if you want this changed.
> but then you are little inconsistent, you defined new helper but then
> decided to access data without it
The helper was defined on your request:
> those macros are quite ugly and violating many rules maybe they
should be converted into inlines?
I did not intended to have such helper.
>>>> + action = FIELD_GET(GUC_HXG_REQUEST_MSG_0_ACTION, msg[0]);
>>>> + switch (action) {
>>>> + case XE_GUC_ACTION_REGISTER_CONTEXT:
>>>> + case XE_GUC_ACTION_REGISTER_CONTEXT_MULTI_LRC:
>>>> + /* field wq_desc */
>>> as we have enums that describe field offsets, we don't need to add those
>>> small now redundant comments
>> will remove.
>>>> + ctb_fixup64(xe, cmds, head,
>>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC, shift);
>>>> + /* field wq_base */
>>>> + ctb_fixup64(xe, cmds, head,
>>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE, shift);
>>>> + if (action == XE_GUC_ACTION_REGISTER_CONTEXT_MULTI_LRC) {
>>>> + /* field number_children */
>>>> + n = ctb_read32(xe, cmds, head,
>>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN);
>>>> + /* field hwlrca and child lrcas */
>>>> + for (i = 0; i < n; i++)
>>>> + ctb_fixup64(xe, cmds, head,
>>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA + 2 * i, shift);
>>> did you run checkpatch.pl ? line is quite long
>> it does complain. Will fix.
>>>> + } else {
>>>> + /* field hwlrca */
>>>> + ctb_fixup64(xe, cmds, head, 10, shift);
>>>> + }
>>>> + break;
>>>> + default:
>>>> + break;
>>>> + }
>>>> +}
>>>> +
>>> nit: no short description here ;)
>> why would it need one? sub-function (ct_update_addresses_in_message) has
>> documentation, caller also has documentation.
> well, it was just inconsistency, in other places you seems to add
> documentation even if there is no
Functions which need documentation are documented. This is not an
inconsistency, this is
context based decision which completely aligns with both kernel
documentation rules and recommendations.
What is inconsistent is using custom documentation format, not defined
in any kernel guides.
If we want a function doc to not be visible by kernel-doc parsers, it
makes total sense to skip the one
asterisk to make it treated as an ordinary comment. But following that
by also changing format of
the comment into some custom idea, that is questionable and inconsistent
with existing rules.
>>>> +static int ct_update_addresses_in_buffer(struct xe_guc_ct *ct,
>>>> + struct guc_ctb *h2g,
>>>> + s64 shift, u32 *mhead, s32 avail)
>>>> +{
>>>> + struct xe_device *xe = ct_to_xe(ct);
>>>> + u32 head = *mhead;
>>>> + u32 size = h2g->info.size;
>>>> + u32 msg[1];
>>>> + u32 len;
>>>> +
>>>> + /* Read header */
>>>> + xe_map_memcpy_from(xe, msg, &h2g->cmds, sizeof(u32) * head,
>>>> + sizeof(u32));
>>> ctb_read32() didn't work here?
>> Like before, for consistency. Will change on request.
>>>> + len = FIELD_GET(GUC_CTB_MSG_0_NUM_DWORDS, msg[0]) +
>>>> GUC_CTB_MSG_MIN_LEN;
>>>> +
>>>> + if (unlikely(len > (u32)avail)) {
>>>> + struct xe_gt *gt = ct_to_gt(ct);
> btw, no need to have local var here, since you can do ct_to_gt()
> directly in the xe_gt_err() below (it's the only use case)
will change.
>>>> +
>>>> + xe_gt_err(gt, "H2G channel broken on read, avail=%d, len=%d,
>>>> fixups skipped\n",
>>>> + avail, len);
>>>> + return 0;
>>> in caller we do mark ctb as broken, why are we silent here?
>> Incorrect head/tail of a CTB is an issue of completely different caliber
>> than a message with invalid length.
> not sure if those errors are that different.
> see CTB descriptor status codes:
>
> GUC_CTB_STATUS_OVERFLOW
> GUC_CTB_STATUS_UNDERFLOW
>
> which are used exactly to classify those kind of errors
>
> if we are able to read msg header from the CTB but there is no payload
> data on CTB then it's a CTB protocol bug
We are not in CTB write function, we are fixing the existing CTB messages,
stored there by the CTB write function.
But this situation should never happen anyway, so I don't have any
reason to push
a specific solution. Just write how you want this handled, and I will
adjust the code.
>> The invalid message is actually more likely to be a racing condition
>> rather than CTB damage.
> racing with what?
With CTB write function changing the tail, and GuC changing the head.
Both should be normally locked/stalled of course, but there are corner
cases,
around migrating again just after vcpu started from previous migration.
>>>> + }
>>>> +
>>>> + head = (head + 1) % size;
>>>> + ct_update_addresses_in_message(ct, &h2g->cmds, head, len - 1,
>>>> size, shift);
>>>> + *mhead = (head + len - 1) % size;
>>>> +
>>>> + return avail - len;
>>>> +}
>>>> +
>>>> +/**
>>>> + * xe_guc_ct_fixup_messages_with_ggtt - Fixup any pending H2G CTB
>>>> messages by updating
>>>> + * GGTT offsets in their payloads.
>>>> + * @ct: pointer to CT struct of the target GuC
>>>> + * @ggtt_shift: shift to be added to all GGTT addresses within the CTB
>>>> + */
>>>> +void xe_guc_ct_fixup_messages_with_ggtt(struct xe_guc_ct *ct, s64
>>>> ggtt_shift)
>>>> +{
>>>> + struct xe_guc *guc = ct_to_guc(ct);
>>>> + struct xe_gt *gt = guc_to_gt(guc);
>>>> + struct guc_ctb *h2g = &ct->ctbs.h2g;
>>>> + u32 head, tail, size;
>>>> + s32 avail;
>>>> +
>>>> + if (unlikely(h2g->info.broken))
>>>> + return;
>>>> +
>>>> + h2g->info.head = desc_read(ct_to_xe(ct), h2g, head);
>>>> + head = h2g->info.head;
>>>> + tail = READ_ONCE(h2g->info.tail);
>>>> + size = h2g->info.size;
>>>> +
>>>> + xe_gt_assert(gt, head <= size);
>>> we shouldn't trust GuC, assert is not enough
>>> goto corrupted; if this happens
>> ok.
>>>> +
>>>> + if (unlikely(tail >= size))
>>>> + goto corrupted;
>>>> +
>>>> + avail = tail - head;
>>>> +
>>>> + /* beware of buffer wrap case */
>>>> + if (unlikely(avail < 0))
>>>> + avail += size;
>>>> + xe_gt_dbg(gt, "available %d (%u:%u:%u)\n", avail, head, tail,
>>>> size);
>>>> + xe_gt_assert(gt, avail >= 0);
>>>> +
>>>> + while (avail > 0)
>>>> + avail = ct_update_addresses_in_buffer(ct, h2g, ggtt_shift,
>>>> &head, avail);
>>> maybe pass &avail like you did with head?
>> do we have a precedence for this approach being preferred?
> I'm not sure what you are looking for..
>
> my point is that it looks inconsistent that one in/out param is passed
> by pointer, the other by value and then it's new value is returned
No, that is one of normal approaches. Inconsistent with what?
It is actually consistent with how we handle such situation currently in xe,
for example timeout value in `dma_fence_wait_timeout()`.
That only one value can be returned this way is a fact embedded into C
calling
conventions and basic design of C functions, having only one value
returned by
a function is consistent with C language specification.
> if you pass both by ptr then you can use return value to indicate some
> error condition (which seems to be already there but silenced by
> returning 'no-avail')
If you want the function to also return negative error codes and handle
them here,
let me know and I'll do it. This has no impact on the ability of
returning `avail` value.
>>>> +
>>>> + return;
>>>> +
>>>> +corrupted:
>>>> + xe_gt_err(gt, "Corrupted H2G descriptor head=%u tail=%u size=%u\n",
>>> shouldn't we mention that "fixups can't be done" ?
>> Makes sense, the messages will be still received by GuC after all. Will
>> change.
>>>> + head, tail, size);
>>>> + h2g->info.broken = true;
>>> returning an error code wouldn't really hurt ...
>> Since when do we return error codes which are not going to be used?
>> Didn't you asked for a change to `void` in previous round of the review?
> if code can fail and caller might make some decision based on the
> success/failure then IMO we should return error code
>
> if the code can't fail, then it should be void
>
> but right now I just can't judge which scenarios that you implemented
> could fail just because of our coding mistakes, where asserts() would be
> sufficient to cover them, vs real scenarios that we should treat as
> serious recovery failures
Ok, so we agree it should be void.
I don't see any scenario where the xe kmd is expected to bail out in the
middle of fixups procedure.
>>> + for_each_gt(gt, xe, id) {
>>> + struct xe_gt_sriov_vf_selfconfig *config = >-
>>>> sriov.vf.self_config;
>>> +
>>> + xe_guc_ct_update_addresses(>->uc.guc.ct, config->ggtt_shift);
>>> this function returns int, shouldn't we check for errors?
>>> if not then maybe make it void
>>>> +}
>>>> +
>>>> static struct xe_guc_ct_snapshot *guc_ct_snapshot_alloc(struct
>>>> xe_guc_ct *ct, bool atomic,
>>>> bool want_ctb)
>>>> {
>>>> diff --git a/drivers/gpu/drm/xe/xe_guc_ct.h b/drivers/gpu/drm/xe/
>>>> xe_guc_ct.h
>>>> index 82c4ae458dda..5649bda82823 100644
>>>> --- a/drivers/gpu/drm/xe/xe_guc_ct.h
>>>> +++ b/drivers/gpu/drm/xe/xe_guc_ct.h
>>>> @@ -22,6 +22,8 @@ void xe_guc_ct_snapshot_print(struct
>>>> xe_guc_ct_snapshot *snapshot, struct drm_pr
>>>> void xe_guc_ct_snapshot_free(struct xe_guc_ct_snapshot *snapshot);
>>>> void xe_guc_ct_print(struct xe_guc_ct *ct, struct drm_printer *p,
>>>> bool want_ctb);
>>>> +void xe_guc_ct_fixup_messages_with_ggtt(struct xe_guc_ct *ct, s64
>>>> ggtt_shift);
>>>> +
>>>> static inline bool xe_guc_ct_enabled(struct xe_guc_ct *ct)
>>>> {
>>>> return ct->state == XE_GUC_CT_STATE_ENABLED;
>>>> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/
>>>> xe_guc_submit.c
>>>> index b95934055f72..4442fb00d0aa 100644
>>>> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
>>>> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
>>>> @@ -469,12 +469,16 @@ static void __register_mlrc_exec_queue(struct
>>>> xe_guc *guc,
>>>> action[len++] = info->context_idx;
>>>> action[len++] = info->engine_class;
>>>> action[len++] = info->engine_submit_mask;
>>>> + xe_gt_assert(guc_to_gt(guc), len ==
>>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_DESC);
>>>> action[len++] = info->wq_desc_lo;
>>>> action[len++] = info->wq_desc_hi;
>>>> + xe_gt_assert(guc_to_gt(guc), len ==
>>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_WQ_BASE);
>>>> action[len++] = info->wq_base_lo;
>>>> action[len++] = info->wq_base_hi;
>>>> action[len++] = info->wq_size;
>>>> + xe_gt_assert(guc_to_gt(guc), len ==
>>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_N_CHILDREN);
>>>> action[len++] = q->width;
>>>> + xe_gt_assert(guc_to_gt(guc), len ==
>>>> XE_GUC_REGISTER_CONTEXT_MULTI_LRC_OFFS_HWLRCA);
>>>> action[len++] = info->hwlrca_lo;
>>>> action[len++] = info->hwlrca_hi;
>>> nit: maybe this chunk, together with introduction of above enums, should
>>> be a separate patch?
>> Ok, can do that. It was introduced on your request, after all.
> but I didn't say it has to be all done in single patch
>
> if some changes are logically independent they deserve a separate patch
>
> this is also to help getting reviews sooner as patches will be smaller
>
> [1]
> https://docs.kernel.org/process/submitting-patches.html#separate-your-changes
ack.
>>>> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/
>>>> xe_sriov_vf.c
>>>> index 4ee8fc70a744..cd759579b9b4 100644
>>>> --- a/drivers/gpu/drm/xe/xe_sriov_vf.c
>>>> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
>>>> @@ -10,6 +10,7 @@
>>>> #include "xe_gt.h"
>>>> #include "xe_gt_sriov_printk.h"
>>>> #include "xe_gt_sriov_vf.h"
>>>> +#include "xe_guc_ct.h"
>>>> #include "xe_pm.h"
>>>> #include "xe_sriov.h"
>>>> #include "xe_sriov_printk.h"
>>>> @@ -158,6 +159,20 @@ static int vf_post_migration_requery_guc(struct
>>>> xe_device *xe)
>>>> return ret;
>>>> }
>>>> +static void vf_post_migration_fixup_ctb(struct xe_device *xe)
>>>> +{
>>>> + struct xe_gt *gt;
>>>> + unsigned int id;
>>>> +
>>>> + xe_assert(xe, IS_SRIOV_VF(xe));
>>>> +
>>>> + for_each_gt(gt, xe, id) {
>>>> + struct xe_gt_sriov_vf_selfconfig *config = >-
>>>>> sriov.vf.self_config;
>>> instead of open coding just add a helper to query the ggtt_shift
>>>
>>> s64 xe_gt_sriov_vf_ggtt_shift(gt) { }
>> This is already a small function so I can't say I see the point. But
>> sure, can do that.
> the point is that in the 'xe' level function you are directly accessing
> a VF internal field stored deep under 'gt.sriov.vf.self_config' structure
a static function, starting with `vf_*` and stored within a file ending
with `_vf`, is a 'xe' level function. Ok.
I will define the helper as requested, and let's just leave it at that.
>>>> +
>>>> + xe_guc_ct_fixup_messages_with_ggtt(>->uc.guc.ct, config-
>>>>> ggtt_shift);
>>>> + }
>>>> +}
>>>> +
>>>> /*
>>>> * vf_post_migration_imminent - Check if post-restore recovery is
>>>> coming.
>>>> * @xe: the &xe_device struct instance
>>>> @@ -224,6 +239,9 @@ static void vf_post_migration_recovery(struct
>>>> xe_device *xe)
>>>> err = vf_post_migration_fixup_ggtt_nodes(xe);
>>>> /* FIXME: add the recovery steps */
>>>> + if (err != ENODATA)
>>>> + vf_post_migration_fixup_ctb(xe);
>>>> +
>>> do we need to have for_each_gt inside every step?
>>> maybe the loop should be here?
>>>
>>> for_each_tile() {
>>> shift = vf_reset_ggtt_shift(tile->primary_gt)
>>> if (shift) {
>>> vf_fixup_nodes(tile)
>>> vf_fixup_ctb(tile->primary_gt)
>>> if (tile->media_gt)
>>> vf_fixup_ctb(tile->media_gt)
>>> }
>>> }
>> What is the benefit? Doesn't the current code look cleaner?
> IMO current code access self_config.ggtt_shift from too many places
Why would that be a problem? Where exactly is a precedence for avoiding
access of such a variable? If we didn't wanted to access it, we would
make it
local from the beginning.
We do have `xe_gt_sriov_vf_ggtt_shift()` now, so we can use that.
>> Isn't it better when all drm_mm nodes are fixed at the point we start
>> applying fixups to other places?
> hmm, ok, so do we expect that there could be cross-tile references to
> the other tile GGTT? if yes, do we have at least asserts that can
> confirm that we are not doing fixups on the tile with un-shifted ggtt nodes?
We are shifting all the nodes of all tiles at start. Are you saying we
then should check
if the nodes were really shifted? Why this specific operation requires
such strong verification?
Do we expect iterating through tiles to be an operation which changes at
runtime?
The fact that further fixups are preceded by drm_mm node fixups is
enforced by code flow.
If you think there should be additional asserts, please describe where
and what the condition should be.
A check whether first balloon ends at config->ggtt_base wouldn't make
much sense.
-Tomasz
>> I don't think it's a good idea.
>>
>> -Tomasz
>>
>>>> vf_post_migration_notify_resfix_done(xe);
>>>> xe_pm_runtime_put(xe);
>>>> drm_notice(&xe->drm, "migration recovery ended\n");
[-- Attachment #2: Type: text/html, Size: 71569 bytes --]
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2025-03-28 17:52 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-06 22:21 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
2025-03-06 22:21 ` [PATCH v4 1/3] drm/drm_mm: Safe macro for iterating through nodes in range Tomasz Lis
2025-03-07 9:59 ` Christian König
2025-03-06 22:21 ` [PATCH v4 2/3] drm/xe/sriov: Shifting GGTT area post migration Tomasz Lis
2025-03-14 18:22 ` Michal Wajdeczko
2025-03-14 23:45 ` Lis, Tomasz
2025-03-15 14:27 ` Michal Wajdeczko
2025-03-28 17:52 ` Lis, Tomasz
2025-03-24 5:58 ` Dan Carpenter
2025-03-06 22:21 ` [PATCH v4 3/3] drm/xe/vf: Fixup CTB send buffer messages after migration Tomasz Lis
2025-03-14 20:46 ` Michal Wajdeczko
2025-03-14 22:11 ` Lis, Tomasz
2025-03-15 12:59 ` Michal Wajdeczko
2025-03-28 17:52 ` Lis, Tomasz
2025-03-07 0:22 ` ✓ CI.Patch_applied: success for drm/xe/vf: Post-migration recovery of GGTT nodes and CTB (rev5) Patchwork
2025-03-07 0:22 ` ✗ CI.checkpatch: warning " Patchwork
2025-03-07 0:24 ` ✓ CI.KUnit: success " Patchwork
2025-03-07 0:46 ` ✓ CI.Build: " Patchwork
2025-03-07 0:48 ` ✓ CI.Hooks: " Patchwork
2025-03-07 0:50 ` ✗ CI.checksparse: warning " Patchwork
2025-03-07 1:09 ` ✓ Xe.CI.BAT: success " Patchwork
2025-03-07 9:20 ` ✗ Xe.CI.Full: failure " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2024-12-20 23:34 [PATCH v4 0/3] drm/xe/vf: Post-migration recovery of GGTT nodes and CTB Tomasz Lis
2024-12-20 23:34 ` [PATCH v4 1/3] drm/drm_mm: Safe macro for iterating through nodes in range Tomasz Lis
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox