Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/7] Small improvements around VF CCS
@ 2025-09-08 12:30 Michal Wajdeczko
  2025-09-08 12:30 ` [PATCH v2 1/7] drm/xe/guc: Rename xe_guc_register_exec_queue Michal Wajdeczko
                   ` (8 more replies)
  0 siblings, 9 replies; 13+ messages in thread
From: Michal Wajdeczko @ 2025-09-08 12:30 UTC (permalink / raw)
  To: intel-xe; +Cc: Michal Wajdeczko, Satyanarayana K V P, Matthew Brost

v1: https://patchwork.freedesktop.org/series/154054/#rev1 (reviewed)
v2: add 2 more patches to move CCS data from tile to device (Michal)

Cc: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>

Michal Wajdeczko (7):
  drm/xe/guc: Rename xe_guc_register_exec_queue
  drm/xe/guc: Use proper flag definitions when registering context
  drm/xe/vf: Drop IS_VF_CCS_INIT_NEEDED macro
  drm/xe/vf: Use single check when calling VF CCS functions
  drm/xe/bo: Add xe_bo_has_valid_ccs_bb helper
  drm/xe/vf: Move VF CCS data to xe_device
  drm/xe/vf: Move VF CCS debugfs attribute

 drivers/gpu/drm/xe/xe_bb.c                 |  4 +-
 drivers/gpu/drm/xe/xe_bo.c                 |  8 +--
 drivers/gpu/drm/xe/xe_bo.h                 | 15 +++++
 drivers/gpu/drm/xe/xe_debugfs.c            |  3 +
 drivers/gpu/drm/xe/xe_device_types.h       |  3 -
 drivers/gpu/drm/xe/xe_gt_debugfs.c         | 40 +-----------
 drivers/gpu/drm/xe/xe_guc_fwif.h           |  1 +
 drivers/gpu/drm/xe/xe_guc_submit.c         | 20 +++---
 drivers/gpu/drm/xe/xe_guc_submit.h         |  2 +-
 drivers/gpu/drm/xe/xe_pm.c                 |  4 +-
 drivers/gpu/drm/xe/xe_sriov_vf.c           | 28 ++++++++
 drivers/gpu/drm/xe/xe_sriov_vf.h           |  2 +
 drivers/gpu/drm/xe/xe_sriov_vf_ccs.c       | 74 ++++++++++++++++------
 drivers/gpu/drm/xe/xe_sriov_vf_ccs.h       | 17 +++++
 drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h | 44 ++++++-------
 drivers/gpu/drm/xe/xe_sriov_vf_types.h     |  7 +-
 16 files changed, 164 insertions(+), 108 deletions(-)

-- 
2.47.1


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

* [PATCH v2 1/7] drm/xe/guc: Rename xe_guc_register_exec_queue
  2025-09-08 12:30 [PATCH v2 0/7] Small improvements around VF CCS Michal Wajdeczko
@ 2025-09-08 12:30 ` Michal Wajdeczko
  2025-09-08 12:30 ` [PATCH v2 2/7] drm/xe/guc: Use proper flag definitions when registering context Michal Wajdeczko
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Michal Wajdeczko @ 2025-09-08 12:30 UTC (permalink / raw)
  To: intel-xe; +Cc: Michal Wajdeczko, Satyanarayana K V P, Matthew Brost

This function is dedicated for use by the VFs, we shouldn't use
name that might suggests it's general purpose. While there, update
asserts to better reflect intended usage.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
---
 drivers/gpu/drm/xe/xe_guc_submit.c   | 14 ++++++++------
 drivers/gpu/drm/xe/xe_guc_submit.h   |  2 +-
 drivers/gpu/drm/xe/xe_sriov_vf_ccs.c |  5 ++---
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index 897f33ded8ec..2b8da44493ae 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -2528,7 +2528,7 @@ static void guc_exec_queue_print(struct xe_exec_queue *q, struct drm_printer *p)
 }
 
 /**
- * xe_guc_register_exec_queue - Register exec queue for a given context type.
+ * xe_guc_register_vf_exec_queue - Register exec queue for a given context type.
  * @q: Execution queue
  * @ctx_type: Type of the context
  *
@@ -2539,15 +2539,17 @@ static void guc_exec_queue_print(struct xe_exec_queue *q, struct drm_printer *p)
  *
  * Returns - None.
  */
-void xe_guc_register_exec_queue(struct xe_exec_queue *q, int ctx_type)
+void xe_guc_register_vf_exec_queue(struct xe_exec_queue *q, int ctx_type)
 {
 	struct xe_guc *guc = exec_queue_to_guc(q);
 	struct xe_device *xe = guc_to_xe(guc);
+	struct xe_gt *gt = guc_to_gt(guc);
 
-	xe_assert(xe, IS_SRIOV_VF(xe));
-	xe_assert(xe, !IS_DGFX(xe));
-	xe_assert(xe, (ctx_type > GUC_CONTEXT_NORMAL &&
-		       ctx_type < GUC_CONTEXT_COUNT));
+	xe_gt_assert(gt, IS_SRIOV_VF(xe));
+	xe_gt_assert(gt, !IS_DGFX(xe));
+	xe_gt_assert(gt, ctx_type == GUC_CONTEXT_COMPRESSION_SAVE ||
+		     ctx_type == GUC_CONTEXT_COMPRESSION_RESTORE);
+	xe_gt_assert(gt, GUC_SUBMIT_VER(guc) >= MAKE_GUC_VER(1, 23, 0));
 
 	register_exec_queue(q, ctx_type);
 	enable_scheduling(q);
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.h b/drivers/gpu/drm/xe/xe_guc_submit.h
index 6b5df5d0956b..9e6f19b03e65 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.h
+++ b/drivers/gpu/drm/xe/xe_guc_submit.h
@@ -46,7 +46,7 @@ xe_guc_exec_queue_snapshot_print(struct xe_guc_submit_exec_queue_snapshot *snaps
 void
 xe_guc_exec_queue_snapshot_free(struct xe_guc_submit_exec_queue_snapshot *snapshot);
 void xe_guc_submit_print(struct xe_guc *guc, struct drm_printer *p);
-void xe_guc_register_exec_queue(struct xe_exec_queue *q, int ctx_type);
+void xe_guc_register_vf_exec_queue(struct xe_exec_queue *q, int ctx_type);
 
 int xe_guc_contexts_hwsp_rebase(struct xe_guc *guc, void *scratch);
 
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
index 908590fa79d4..19786f64a7da 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
@@ -186,7 +186,6 @@ static void ccs_rw_update_ring(struct xe_tile_vf_ccs *ctx)
 
 static int register_save_restore_context(struct xe_tile_vf_ccs *ctx)
 {
-	int err = -EINVAL;
 	int ctx_type;
 
 	switch (ctx->ctx_id) {
@@ -197,10 +196,10 @@ static int register_save_restore_context(struct xe_tile_vf_ccs *ctx)
 		ctx_type = GUC_CONTEXT_COMPRESSION_RESTORE;
 		break;
 	default:
-		return err;
+		return -EINVAL;
 	}
 
-	xe_guc_register_exec_queue(ctx->mig_q, ctx_type);
+	xe_guc_register_vf_exec_queue(ctx->mig_q, ctx_type);
 	return 0;
 }
 
-- 
2.47.1


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

* [PATCH v2 2/7] drm/xe/guc: Use proper flag definitions when registering context
  2025-09-08 12:30 [PATCH v2 0/7] Small improvements around VF CCS Michal Wajdeczko
  2025-09-08 12:30 ` [PATCH v2 1/7] drm/xe/guc: Rename xe_guc_register_exec_queue Michal Wajdeczko
@ 2025-09-08 12:30 ` Michal Wajdeczko
  2025-09-08 12:30 ` [PATCH v2 3/7] drm/xe/vf: Drop IS_VF_CCS_INIT_NEEDED macro Michal Wajdeczko
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Michal Wajdeczko @ 2025-09-08 12:30 UTC (permalink / raw)
  To: intel-xe; +Cc: Michal Wajdeczko, Matthew Brost

In H2G action context type is specified in flags dword in bits 2:1.
Use generic FIELD_PREP macro instead of misleading BIT logic.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_guc_fwif.h   | 1 +
 drivers/gpu/drm/xe/xe_guc_submit.c | 6 ++----
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_fwif.h b/drivers/gpu/drm/xe/xe_guc_fwif.h
index 457d914097c8..a72ff8a68568 100644
--- a/drivers/gpu/drm/xe/xe_guc_fwif.h
+++ b/drivers/gpu/drm/xe/xe_guc_fwif.h
@@ -65,6 +65,7 @@ struct guc_ctxt_registration_info {
 	u32 hwlrca_hi;
 };
 #define CONTEXT_REGISTRATION_FLAG_KMD	BIT(0)
+#define CONTEXT_REGISTRATION_FLAG_TYPE	GENMASK(2, 1)
 
 /* 32-bit KLV structure as used by policy updates and others */
 struct guc_klv_generic_dw_t {
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index 2b8da44493ae..5ab242be50dd 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -558,10 +558,8 @@ static void register_exec_queue(struct xe_exec_queue *q, int ctx_type)
 	info.engine_submit_mask = q->logical_mask;
 	info.hwlrca_lo = lower_32_bits(xe_lrc_descriptor(lrc));
 	info.hwlrca_hi = upper_32_bits(xe_lrc_descriptor(lrc));
-	info.flags = CONTEXT_REGISTRATION_FLAG_KMD;
-
-	if (ctx_type != GUC_CONTEXT_NORMAL)
-		info.flags |= BIT(ctx_type);
+	info.flags = CONTEXT_REGISTRATION_FLAG_KMD |
+		FIELD_PREP(CONTEXT_REGISTRATION_FLAG_TYPE, ctx_type);
 
 	if (xe_exec_queue_is_parallel(q)) {
 		u64 ggtt_addr = xe_lrc_parallel_ggtt_addr(lrc);
-- 
2.47.1


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

* [PATCH v2 3/7] drm/xe/vf: Drop IS_VF_CCS_INIT_NEEDED macro
  2025-09-08 12:30 [PATCH v2 0/7] Small improvements around VF CCS Michal Wajdeczko
  2025-09-08 12:30 ` [PATCH v2 1/7] drm/xe/guc: Rename xe_guc_register_exec_queue Michal Wajdeczko
  2025-09-08 12:30 ` [PATCH v2 2/7] drm/xe/guc: Use proper flag definitions when registering context Michal Wajdeczko
@ 2025-09-08 12:30 ` Michal Wajdeczko
  2025-09-08 12:30 ` [PATCH v2 4/7] drm/xe/vf: Use single check when calling VF CCS functions Michal Wajdeczko
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Michal Wajdeczko @ 2025-09-08 12:30 UTC (permalink / raw)
  To: intel-xe; +Cc: Michal Wajdeczko, Satyanarayana K V P, Matthew Brost

We only use this macro once and we can open-code it to explicitly
show relevant conditions and avoid duplications.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
---
 drivers/gpu/drm/xe/xe_sriov_vf_ccs.c       | 6 +++++-
 drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h | 6 ------
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
index 19786f64a7da..b01bb3660fb1 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
@@ -15,6 +15,7 @@
 #include "xe_migrate.h"
 #include "xe_sa.h"
 #include "xe_sriov_printk.h"
+#include "xe_sriov_vf.h"
 #include "xe_sriov_vf_ccs.h"
 #include "xe_sriov_vf_ccs_types.h"
 
@@ -263,7 +264,10 @@ int xe_sriov_vf_ccs_init(struct xe_device *xe)
 	u32 flags;
 	int err;
 
-	if (!IS_VF_CCS_INIT_NEEDED(xe))
+	xe_assert(xe, IS_SRIOV_VF(xe));
+	xe_assert(xe, xe_sriov_vf_migration_supported(xe));
+
+	if (IS_DGFX(xe) || !xe_device_has_flat_ccs(xe))
 		return 0;
 
 	for_each_ccs_rw_ctx(ctx_id) {
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h b/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
index 93435a6f4cb6..0df6b4130e7c 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
@@ -15,12 +15,6 @@
 		___xe->sriov.vf.ccs.initialized; \
 		})
 
-#define IS_VF_CCS_INIT_NEEDED(xe) ({\
-		struct xe_device *___xe = (xe); \
-		IS_SRIOV_VF(___xe) && !IS_DGFX(___xe) && \
-		xe_device_has_flat_ccs(___xe) && GRAPHICS_VER(___xe) >= 20; \
-		})
-
 enum xe_sriov_vf_ccs_rw_ctxs {
 	XE_SRIOV_VF_CCS_READ_CTX,
 	XE_SRIOV_VF_CCS_WRITE_CTX,
-- 
2.47.1


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

* [PATCH v2 4/7] drm/xe/vf: Use single check when calling VF CCS functions
  2025-09-08 12:30 [PATCH v2 0/7] Small improvements around VF CCS Michal Wajdeczko
                   ` (2 preceding siblings ...)
  2025-09-08 12:30 ` [PATCH v2 3/7] drm/xe/vf: Drop IS_VF_CCS_INIT_NEEDED macro Michal Wajdeczko
@ 2025-09-08 12:30 ` Michal Wajdeczko
  2025-09-08 12:30 ` [PATCH v2 5/7] drm/xe/bo: Add xe_bo_has_valid_ccs_bb helper Michal Wajdeczko
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Michal Wajdeczko @ 2025-09-08 12:30 UTC (permalink / raw)
  To: intel-xe; +Cc: Michal Wajdeczko, Satyanarayana K V P, Matthew Brost

All xe_sriov_vf_ccs() functions but init() expect to be called
when initialization was successful and CCS handling is ready.

Update IS_VF_CCS_READY macro and use it as single entry guard.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c                 |  8 ++++----
 drivers/gpu/drm/xe/xe_gt_debugfs.c         |  1 +
 drivers/gpu/drm/xe/xe_pm.c                 |  4 ++--
 drivers/gpu/drm/xe/xe_sriov_vf_ccs.c       | 10 +++++-----
 drivers/gpu/drm/xe/xe_sriov_vf_ccs.h       | 15 +++++++++++++++
 drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h |  6 ------
 6 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index f03f7432c6fa..4efc1c8d15b8 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -974,11 +974,11 @@ static int xe_bo_move(struct ttm_buffer_object *ttm_bo, bool evict,
 	 * CCS meta data is migrated from TT -> SMEM. So, let us detach the
 	 * BBs from BO as it is no longer needed.
 	 */
-	if (IS_VF_CCS_BB_VALID(xe, bo) && old_mem_type == XE_PL_TT &&
+	if (IS_VF_CCS_READY(xe) && old_mem_type == XE_PL_TT &&
 	    new_mem->mem_type == XE_PL_SYSTEM)
 		xe_sriov_vf_ccs_detach_bo(bo);
 
-	if (IS_SRIOV_VF(xe) &&
+	if (IS_VF_CCS_READY(xe) &&
 	    ((move_lacks_source && new_mem->mem_type == XE_PL_TT) ||
 	     (old_mem_type == XE_PL_SYSTEM && new_mem->mem_type == XE_PL_TT)) &&
 	    handle_system_ccs)
@@ -994,7 +994,7 @@ static int xe_bo_move(struct ttm_buffer_object *ttm_bo, bool evict,
 		if (timeout < 0)
 			ret = timeout;
 
-		if (IS_VF_CCS_BB_VALID(xe, bo))
+		if (IS_VF_CCS_READY(xe))
 			xe_sriov_vf_ccs_detach_bo(bo);
 
 		xe_tt_unmap_sg(xe, ttm_bo->ttm);
@@ -1518,7 +1518,7 @@ static void xe_ttm_bo_delete_mem_notify(struct ttm_buffer_object *ttm_bo)
 	if (!xe_bo_is_xe_bo(ttm_bo))
 		return;
 
-	if (IS_VF_CCS_BB_VALID(ttm_to_xe_device(ttm_bo->bdev), bo))
+	if (IS_VF_CCS_READY(ttm_to_xe_device(ttm_bo->bdev)))
 		xe_sriov_vf_ccs_detach_bo(bo);
 
 	/*
diff --git a/drivers/gpu/drm/xe/xe_gt_debugfs.c b/drivers/gpu/drm/xe/xe_gt_debugfs.c
index 5aa1eded278d..f6f2c14b642d 100644
--- a/drivers/gpu/drm/xe/xe_gt_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_debugfs.c
@@ -31,6 +31,7 @@
 #include "xe_reg_whitelist.h"
 #include "xe_sa.h"
 #include "xe_sriov.h"
+#include "xe_sriov_vf_ccs.h"
 #include "xe_tuning.h"
 #include "xe_uc_debugfs.h"
 #include "xe_wa.h"
diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
index d9c466177147..211935590e21 100644
--- a/drivers/gpu/drm/xe/xe_pm.c
+++ b/drivers/gpu/drm/xe/xe_pm.c
@@ -213,7 +213,7 @@ int xe_pm_resume(struct xe_device *xe)
 
 	xe_pxp_pm_resume(xe->pxp);
 
-	if (IS_SRIOV_VF(xe))
+	if (IS_VF_CCS_READY(xe))
 		xe_sriov_vf_ccs_register_context(xe);
 
 	drm_dbg(&xe->drm, "Device resumed\n");
@@ -594,7 +594,7 @@ int xe_pm_runtime_resume(struct xe_device *xe)
 
 	xe_pxp_pm_resume(xe->pxp);
 
-	if (IS_SRIOV_VF(xe))
+	if (IS_VF_CCS_READY(xe))
 		xe_sriov_vf_ccs_register_context(xe);
 
 out:
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
index b01bb3660fb1..30aea958a337 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
@@ -220,8 +220,7 @@ int xe_sriov_vf_ccs_register_context(struct xe_device *xe)
 	struct xe_tile_vf_ccs *ctx;
 	int err;
 
-	if (!IS_VF_CCS_READY(xe))
-		return 0;
+	xe_assert(xe, IS_VF_CCS_READY(xe));
 
 	for_each_ccs_rw_ctx(ctx_id) {
 		ctx = &tile->sriov.vf.ccs[ctx_id];
@@ -331,8 +330,7 @@ int xe_sriov_vf_ccs_attach_bo(struct xe_bo *bo)
 	struct xe_bb *bb;
 	int err = 0;
 
-	if (!IS_VF_CCS_READY(xe))
-		return 0;
+	xe_assert(xe, IS_VF_CCS_READY(xe));
 
 	tile = xe_device_get_root_tile(xe);
 
@@ -363,7 +361,9 @@ int xe_sriov_vf_ccs_detach_bo(struct xe_bo *bo)
 	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
 	struct xe_bb *bb;
 
-	if (!IS_VF_CCS_READY(xe))
+	xe_assert(xe, IS_VF_CCS_READY(xe));
+
+	if (!IS_VF_CCS_BB_VALID(xe, bo))
 		return 0;
 
 	for_each_ccs_rw_ctx(ctx_id) {
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h
index 1f1baf685fec..f0e1189b417a 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h
@@ -6,6 +6,10 @@
 #ifndef _XE_SRIOV_VF_CCS_H_
 #define _XE_SRIOV_VF_CCS_H_
 
+#include "xe_device_types.h"
+#include "xe_sriov.h"
+#include "xe_sriov_vf_ccs_types.h"
+
 struct xe_device;
 struct xe_bo;
 
@@ -14,4 +18,15 @@ int xe_sriov_vf_ccs_attach_bo(struct xe_bo *bo);
 int xe_sriov_vf_ccs_detach_bo(struct xe_bo *bo);
 int xe_sriov_vf_ccs_register_context(struct xe_device *xe);
 
+static inline bool xe_sriov_vf_ccs_ready(struct xe_device *xe)
+{
+	xe_assert(xe, IS_SRIOV_VF(xe));
+	return xe->sriov.vf.ccs.initialized;
+}
+
+#define IS_VF_CCS_READY(xe) ({ \
+	struct xe_device *xe__ = (xe); \
+	IS_SRIOV_VF(xe__) && xe_sriov_vf_ccs_ready(xe__); \
+	})
+
 #endif
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h b/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
index 0df6b4130e7c..79092e386c4a 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
@@ -9,12 +9,6 @@
 #define for_each_ccs_rw_ctx(id__) \
 	for ((id__) = 0; (id__) < XE_SRIOV_VF_CCS_CTX_COUNT; (id__)++)
 
-#define IS_VF_CCS_READY(xe) ({ \
-		struct xe_device *___xe = (xe); \
-		xe_assert(___xe, IS_SRIOV_VF(___xe)); \
-		___xe->sriov.vf.ccs.initialized; \
-		})
-
 enum xe_sriov_vf_ccs_rw_ctxs {
 	XE_SRIOV_VF_CCS_READ_CTX,
 	XE_SRIOV_VF_CCS_WRITE_CTX,
-- 
2.47.1


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

* [PATCH v2 5/7] drm/xe/bo: Add xe_bo_has_valid_ccs_bb helper
  2025-09-08 12:30 [PATCH v2 0/7] Small improvements around VF CCS Michal Wajdeczko
                   ` (3 preceding siblings ...)
  2025-09-08 12:30 ` [PATCH v2 4/7] drm/xe/vf: Use single check when calling VF CCS functions Michal Wajdeczko
@ 2025-09-08 12:30 ` Michal Wajdeczko
  2025-09-08 12:30 ` [PATCH v2 6/7] drm/xe/vf: Move VF CCS data to xe_device Michal Wajdeczko
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 13+ messages in thread
From: Michal Wajdeczko @ 2025-09-08 12:30 UTC (permalink / raw)
  To: intel-xe; +Cc: Michal Wajdeczko, Satyanarayana K V P, Matthew Brost

This will allow as to drop ugly IS_VF_CCS_BB_VALID macro.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Reviewed-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
---
 drivers/gpu/drm/xe/xe_bo.h                 | 15 +++++++++++++++
 drivers/gpu/drm/xe/xe_sriov_vf_ccs.c       |  2 +-
 drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h |  8 --------
 3 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.h b/drivers/gpu/drm/xe/xe_bo.h
index cfb1ec266a6d..c7ee9c7605e5 100644
--- a/drivers/gpu/drm/xe/xe_bo.h
+++ b/drivers/gpu/drm/xe/xe_bo.h
@@ -315,6 +315,21 @@ static inline size_t xe_bo_ccs_pages_start(struct xe_bo *bo)
 	return PAGE_ALIGN(xe_bo_size(bo));
 }
 
+/**
+ * xe_bo_has_valid_ccs_bb - Check if CCS's BBs were setup for the BO.
+ * @bo: the &xe_bo to check
+ *
+ * The CCS's BBs should only be setup by the driver VF, but it is safe
+ * to call this function also by non-VF driver.
+ *
+ * Return: true iff the CCS's BBs are setup, false otherwise.
+ */
+static inline bool xe_bo_has_valid_ccs_bb(struct xe_bo *bo)
+{
+	return bo->bb_ccs[XE_SRIOV_VF_CCS_READ_CTX] &&
+	       bo->bb_ccs[XE_SRIOV_VF_CCS_WRITE_CTX];
+}
+
 static inline bool xe_bo_has_pages(struct xe_bo *bo)
 {
 	if ((bo->ttm.ttm && ttm_tt_is_populated(bo->ttm.ttm)) ||
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
index 30aea958a337..eb8436e44ca4 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
@@ -363,7 +363,7 @@ int xe_sriov_vf_ccs_detach_bo(struct xe_bo *bo)
 
 	xe_assert(xe, IS_VF_CCS_READY(xe));
 
-	if (!IS_VF_CCS_BB_VALID(xe, bo))
+	if (!xe_bo_has_valid_ccs_bb(bo))
 		return 0;
 
 	for_each_ccs_rw_ctx(ctx_id) {
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h b/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
index 79092e386c4a..4d3c10907135 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
@@ -15,14 +15,6 @@ enum xe_sriov_vf_ccs_rw_ctxs {
 	XE_SRIOV_VF_CCS_CTX_COUNT
 };
 
-#define IS_VF_CCS_BB_VALID(xe, bo) ({ \
-		struct xe_device *___xe = (xe); \
-		struct xe_bo *___bo = (bo); \
-		IS_SRIOV_VF(___xe) && \
-		___bo->bb_ccs[XE_SRIOV_VF_CCS_READ_CTX] && \
-		___bo->bb_ccs[XE_SRIOV_VF_CCS_WRITE_CTX]; \
-		})
-
 struct xe_migrate;
 struct xe_sa_manager;
 
-- 
2.47.1


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

* [PATCH v2 6/7] drm/xe/vf: Move VF CCS data to xe_device
  2025-09-08 12:30 [PATCH v2 0/7] Small improvements around VF CCS Michal Wajdeczko
                   ` (4 preceding siblings ...)
  2025-09-08 12:30 ` [PATCH v2 5/7] drm/xe/bo: Add xe_bo_has_valid_ccs_bb helper Michal Wajdeczko
@ 2025-09-08 12:30 ` Michal Wajdeczko
  2025-09-09  8:19   ` K V P, Satyanarayana
  2025-09-08 12:30 ` [PATCH v2 7/7] drm/xe/vf: Move VF CCS debugfs attribute Michal Wajdeczko
                   ` (2 subsequent siblings)
  8 siblings, 1 reply; 13+ messages in thread
From: Michal Wajdeczko @ 2025-09-08 12:30 UTC (permalink / raw)
  To: intel-xe; +Cc: Michal Wajdeczko, Satyanarayana K V P

We only need single set of VF CCS contexts, they are not per-tile
as initial implementation might suggest. Move all VF CCS data from
xe_tile.sriov.vf to xe_device.sriov.vf. Also rename some structs to
align with the usage and fix their kernel-doc.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
---
 drivers/gpu/drm/xe/xe_bb.c                 |  4 ++--
 drivers/gpu/drm/xe/xe_device_types.h       |  3 ---
 drivers/gpu/drm/xe/xe_gt_debugfs.c         |  4 ++--
 drivers/gpu/drm/xe/xe_sriov_vf_ccs.c       | 21 +++++++++----------
 drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h | 24 +++++++++++++++++++---
 drivers/gpu/drm/xe/xe_sriov_vf_types.h     |  7 +++----
 6 files changed, 38 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_bb.c b/drivers/gpu/drm/xe/xe_bb.c
index feb6e013dc38..6d20229c11de 100644
--- a/drivers/gpu/drm/xe/xe_bb.c
+++ b/drivers/gpu/drm/xe/xe_bb.c
@@ -64,7 +64,7 @@ struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords,
 			    enum xe_sriov_vf_ccs_rw_ctxs ctx_id)
 {
 	struct xe_bb *bb = kmalloc(sizeof(*bb), GFP_KERNEL);
-	struct xe_tile *tile = gt_to_tile(gt);
+	struct xe_device *xe = gt_to_xe(gt);
 	struct xe_sa_manager *bb_pool;
 	int err;
 
@@ -78,7 +78,7 @@ struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords,
 	 * So, this extra DW acts as a guard here.
 	 */
 
-	bb_pool = tile->sriov.vf.ccs[ctx_id].mem.ccs_bb_pool;
+	bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool;
 	bb->bo = xe_sa_bo_new(bb_pool, 4 * (dwords + 1));
 
 	if (IS_ERR(bb->bo)) {
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 1e780f8a2a8c..c0a1f71f767d 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -183,9 +183,6 @@ struct xe_tile {
 		struct {
 			/** @sriov.vf.ggtt_balloon: GGTT regions excluded from use. */
 			struct xe_ggtt_node *ggtt_balloon[2];
-
-			/** @sriov.vf.ccs: CCS read and write contexts for VF. */
-			struct xe_tile_vf_ccs ccs[XE_SRIOV_VF_CCS_CTX_COUNT];
 		} vf;
 	} sriov;
 
diff --git a/drivers/gpu/drm/xe/xe_gt_debugfs.c b/drivers/gpu/drm/xe/xe_gt_debugfs.c
index f6f2c14b642d..a9d960de0e5e 100644
--- a/drivers/gpu/drm/xe/xe_gt_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_debugfs.c
@@ -126,7 +126,7 @@ static int powergate_info(struct xe_gt *gt, struct drm_printer *p)
 
 static int sa_info_vf_ccs(struct xe_gt *gt, struct drm_printer *p)
 {
-	struct xe_tile *tile = gt_to_tile(gt);
+	struct xe_device *xe = gt_to_xe(gt);
 	struct xe_sa_manager *bb_pool;
 	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
 
@@ -136,7 +136,7 @@ static int sa_info_vf_ccs(struct xe_gt *gt, struct drm_printer *p)
 	xe_pm_runtime_get(gt_to_xe(gt));
 
 	for_each_ccs_rw_ctx(ctx_id) {
-		bb_pool = tile->sriov.vf.ccs[ctx_id].mem.ccs_bb_pool;
+		bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool;
 		if (!bb_pool)
 			break;
 
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
index eb8436e44ca4..c5c60f05073d 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
@@ -136,7 +136,7 @@ static u64 get_ccs_bb_pool_size(struct xe_device *xe)
 	return round_up(bb_pool_size * 2, SZ_1M);
 }
 
-static int alloc_bb_pool(struct xe_tile *tile, struct xe_tile_vf_ccs *ctx)
+static int alloc_bb_pool(struct xe_tile *tile, struct xe_sriov_vf_ccs_ctx *ctx)
 {
 	struct xe_device *xe = tile_to_xe(tile);
 	struct xe_sa_manager *sa_manager;
@@ -168,7 +168,7 @@ static int alloc_bb_pool(struct xe_tile *tile, struct xe_tile_vf_ccs *ctx)
 	return 0;
 }
 
-static void ccs_rw_update_ring(struct xe_tile_vf_ccs *ctx)
+static void ccs_rw_update_ring(struct xe_sriov_vf_ccs_ctx *ctx)
 {
 	u64 addr = xe_sa_manager_gpu_addr(ctx->mem.ccs_bb_pool);
 	struct xe_lrc *lrc = xe_exec_queue_lrc(ctx->mig_q);
@@ -185,7 +185,7 @@ static void ccs_rw_update_ring(struct xe_tile_vf_ccs *ctx)
 	xe_lrc_set_ring_tail(lrc, lrc->ring.tail);
 }
 
-static int register_save_restore_context(struct xe_tile_vf_ccs *ctx)
+static int register_save_restore_context(struct xe_sriov_vf_ccs_ctx *ctx)
 {
 	int ctx_type;
 
@@ -215,15 +215,14 @@ static int register_save_restore_context(struct xe_tile_vf_ccs *ctx)
  */
 int xe_sriov_vf_ccs_register_context(struct xe_device *xe)
 {
-	struct xe_tile *tile = xe_device_get_root_tile(xe);
 	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
-	struct xe_tile_vf_ccs *ctx;
+	struct xe_sriov_vf_ccs_ctx *ctx;
 	int err;
 
 	xe_assert(xe, IS_VF_CCS_READY(xe));
 
 	for_each_ccs_rw_ctx(ctx_id) {
-		ctx = &tile->sriov.vf.ccs[ctx_id];
+		ctx = &xe->sriov.vf.ccs.contexts[ctx_id];
 		err = register_save_restore_context(ctx);
 		if (err)
 			return err;
@@ -234,7 +233,7 @@ int xe_sriov_vf_ccs_register_context(struct xe_device *xe)
 
 static void xe_sriov_vf_ccs_fini(void *arg)
 {
-	struct xe_tile_vf_ccs *ctx = arg;
+	struct xe_sriov_vf_ccs_ctx *ctx = arg;
 	struct xe_lrc *lrc = xe_exec_queue_lrc(ctx->mig_q);
 
 	/*
@@ -258,7 +257,7 @@ int xe_sriov_vf_ccs_init(struct xe_device *xe)
 {
 	struct xe_tile *tile = xe_device_get_root_tile(xe);
 	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
-	struct xe_tile_vf_ccs *ctx;
+	struct xe_sriov_vf_ccs_ctx *ctx;
 	struct xe_exec_queue *q;
 	u32 flags;
 	int err;
@@ -270,7 +269,7 @@ int xe_sriov_vf_ccs_init(struct xe_device *xe)
 		return 0;
 
 	for_each_ccs_rw_ctx(ctx_id) {
-		ctx = &tile->sriov.vf.ccs[ctx_id];
+		ctx = &xe->sriov.vf.ccs.contexts[ctx_id];
 		ctx->ctx_id = ctx_id;
 
 		flags = EXEC_QUEUE_FLAG_KERNEL |
@@ -325,7 +324,7 @@ int xe_sriov_vf_ccs_attach_bo(struct xe_bo *bo)
 {
 	struct xe_device *xe = xe_bo_device(bo);
 	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
-	struct xe_tile_vf_ccs *ctx;
+	struct xe_sriov_vf_ccs_ctx *ctx;
 	struct xe_tile *tile;
 	struct xe_bb *bb;
 	int err = 0;
@@ -339,7 +338,7 @@ int xe_sriov_vf_ccs_attach_bo(struct xe_bo *bo)
 		/* bb should be NULL here. Assert if not NULL */
 		xe_assert(xe, !bb);
 
-		ctx = &tile->sriov.vf.ccs[ctx_id];
+		ctx = &xe->sriov.vf.ccs.contexts[ctx_id];
 		err = xe_migrate_ccs_rw_copy(tile, ctx->mig_q, bo, ctx_id);
 	}
 	return err;
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h b/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
index 4d3c10907135..22c499943d2a 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
@@ -6,6 +6,8 @@
 #ifndef _XE_SRIOV_VF_CCS_TYPES_H_
 #define _XE_SRIOV_VF_CCS_TYPES_H_
 
+#include <linux/types.h>
+
 #define for_each_ccs_rw_ctx(id__) \
 	for ((id__) = 0; (id__) < XE_SRIOV_VF_CCS_CTX_COUNT; (id__)++)
 
@@ -18,16 +20,32 @@ enum xe_sriov_vf_ccs_rw_ctxs {
 struct xe_migrate;
 struct xe_sa_manager;
 
-struct xe_tile_vf_ccs {
-	/** @id: Id to which context it belongs to */
+/**
+ * struct xe_sriov_vf_ccs_ctx - VF CCS migration context data.
+ */
+struct xe_sriov_vf_ccs_ctx {
+	/** @ctx_id: Id to which context it belongs to */
 	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
+
 	/** @mig_q: exec queues used for migration */
 	struct xe_exec_queue *mig_q;
 
+	/** @mem: memory data */
 	struct {
-		/** @ccs_bb_pool: Pool from which batch buffers are allocated. */
+		/** @mem.ccs_bb_pool: Pool from which batch buffers are allocated. */
 		struct xe_sa_manager *ccs_bb_pool;
 	} mem;
 };
 
+/**
+ * struct xe_sriov_vf_ccs - The VF CCS migration support data.
+ */
+struct xe_sriov_vf_ccs {
+	/** @contexts: CCS read and write contexts for VF. */
+	struct xe_sriov_vf_ccs_ctx contexts[XE_SRIOV_VF_CCS_CTX_COUNT];
+
+	/** @initialized: Initialization of VF CCS is completed or not. */
+	bool initialized;
+};
+
 #endif
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_types.h b/drivers/gpu/drm/xe/xe_sriov_vf_types.h
index 2c94d1f92187..426cc5841958 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_types.h
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_types.h
@@ -9,6 +9,8 @@
 #include <linux/types.h>
 #include <linux/workqueue_types.h>
 
+#include "xe_sriov_vf_ccs_types.h"
+
 /**
  * struct xe_sriov_vf_relay_version - PF ABI version details.
  */
@@ -43,10 +45,7 @@ struct xe_device_vf {
 	} migration;
 
 	/** @ccs: VF CCS state data */
-	struct {
-		/** @ccs.initialized: Initilalization of VF CCS is completed or not */
-		bool initialized;
-	} ccs;
+	struct xe_sriov_vf_ccs ccs;
 };
 
 #endif
-- 
2.47.1


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

* [PATCH v2 7/7] drm/xe/vf: Move VF CCS debugfs attribute
  2025-09-08 12:30 [PATCH v2 0/7] Small improvements around VF CCS Michal Wajdeczko
                   ` (5 preceding siblings ...)
  2025-09-08 12:30 ` [PATCH v2 6/7] drm/xe/vf: Move VF CCS data to xe_device Michal Wajdeczko
@ 2025-09-08 12:30 ` Michal Wajdeczko
  2025-09-09  8:23   ` K V P, Satyanarayana
  2025-09-08 22:53 ` ✓ CI.KUnit: success for Small improvements around VF CCS (rev2) Patchwork
  2025-09-09  4:21 ` ✗ Xe.CI.Full: failure " Patchwork
  8 siblings, 1 reply; 13+ messages in thread
From: Michal Wajdeczko @ 2025-09-08 12:30 UTC (permalink / raw)
  To: intel-xe; +Cc: Michal Wajdeczko, Satyanarayana K V P

The VF CCS handling is per-device so its debugfs file should not
be exposed on per-GT basis. Move it up to the device level.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
---
 drivers/gpu/drm/xe/xe_debugfs.c      |  3 +++
 drivers/gpu/drm/xe/xe_gt_debugfs.c   | 39 ----------------------------
 drivers/gpu/drm/xe/xe_sriov_vf.c     | 28 ++++++++++++++++++++
 drivers/gpu/drm/xe/xe_sriov_vf.h     |  2 ++
 drivers/gpu/drm/xe/xe_sriov_vf_ccs.c | 32 +++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_sriov_vf_ccs.h |  2 ++
 6 files changed, 67 insertions(+), 39 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index 4b71570529a6..544d7d8460d9 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -24,6 +24,7 @@
 #include "xe_pxp_debugfs.h"
 #include "xe_sriov.h"
 #include "xe_sriov_pf.h"
+#include "xe_sriov_vf.h"
 #include "xe_step.h"
 #include "xe_tile_debugfs.h"
 #include "xe_wa.h"
@@ -395,4 +396,6 @@ void xe_debugfs_register(struct xe_device *xe)
 
 	if (IS_SRIOV_PF(xe))
 		xe_sriov_pf_debugfs_register(xe, root);
+	else if (IS_SRIOV_VF(xe))
+		xe_sriov_vf_debugfs_register(xe, root);
 }
diff --git a/drivers/gpu/drm/xe/xe_gt_debugfs.c b/drivers/gpu/drm/xe/xe_gt_debugfs.c
index a9d960de0e5e..f253e2df4907 100644
--- a/drivers/gpu/drm/xe/xe_gt_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_gt_debugfs.c
@@ -124,33 +124,6 @@ static int powergate_info(struct xe_gt *gt, struct drm_printer *p)
 	return ret;
 }
 
-static int sa_info_vf_ccs(struct xe_gt *gt, struct drm_printer *p)
-{
-	struct xe_device *xe = gt_to_xe(gt);
-	struct xe_sa_manager *bb_pool;
-	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
-
-	if (!IS_VF_CCS_READY(gt_to_xe(gt)))
-		return 0;
-
-	xe_pm_runtime_get(gt_to_xe(gt));
-
-	for_each_ccs_rw_ctx(ctx_id) {
-		bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool;
-		if (!bb_pool)
-			break;
-
-		drm_printf(p, "ccs %s bb suballoc info\n", ctx_id ? "write" : "read");
-		drm_printf(p, "-------------------------\n");
-		drm_suballoc_dump_debug_info(&bb_pool->base, p, xe_sa_manager_gpu_addr(bb_pool));
-		drm_puts(p, "\n");
-	}
-
-	xe_pm_runtime_put(gt_to_xe(gt));
-
-	return 0;
-}
-
 static int topology(struct xe_gt *gt, struct drm_printer *p)
 {
 	xe_pm_runtime_get(gt_to_xe(gt));
@@ -318,13 +291,6 @@ static const struct drm_info_list vf_safe_debugfs_list[] = {
 	{"hwconfig", .show = xe_gt_debugfs_simple_show, .data = hwconfig},
 };
 
-/*
- * only for GT debugfs files which are valid on VF. Not valid on PF.
- */
-static const struct drm_info_list vf_only_debugfs_list[] = {
-	{"sa_info_vf_ccs", .show = xe_gt_debugfs_simple_show, .data = sa_info_vf_ccs},
-};
-
 /* everything else should be added here */
 static const struct drm_info_list pf_only_debugfs_list[] = {
 	{"hw_engines", .show = xe_gt_debugfs_simple_show, .data = hw_engines},
@@ -465,11 +431,6 @@ void xe_gt_debugfs_register(struct xe_gt *gt)
 		drm_debugfs_create_files(pf_only_debugfs_list,
 					 ARRAY_SIZE(pf_only_debugfs_list),
 					 root, minor);
-	else
-		drm_debugfs_create_files(vf_only_debugfs_list,
-					 ARRAY_SIZE(vf_only_debugfs_list),
-					 root, minor);
-
 
 	xe_uc_debugfs_register(&gt->uc, root);
 
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
index cb062328551a..cdd9f8e78b2a 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
@@ -3,6 +3,7 @@
  * Copyright © 2023-2024 Intel Corporation
  */
 
+#include <drm/drm_debugfs.h>
 #include <drm/drm_managed.h>
 
 #include "xe_assert.h"
@@ -445,3 +446,30 @@ int xe_sriov_vf_init_late(struct xe_device *xe)
 
 	return err;
 }
+
+static int sa_info_vf_ccs(struct seq_file *m, void *data)
+{
+	struct drm_info_node *node = m->private;
+	struct xe_device *xe = to_xe_device(node->minor->dev);
+	struct drm_printer p = drm_seq_file_printer(m);
+
+	xe_sriov_vf_ccs_print(xe, &p);
+	return 0;
+}
+
+static const struct drm_info_list debugfs_list[] = {
+	{ .name = "sa_info_vf_ccs", .show = sa_info_vf_ccs },
+};
+
+/**
+ * xe_sriov_vf_debugfs_register - Register VF debugfs attributes.
+ * @xe: the &xe_device
+ * @root: the root &dentry
+ *
+ * Prepare debugfs attributes exposed by the VF.
+ */
+void xe_sriov_vf_debugfs_register(struct xe_device *xe, struct dentry *root)
+{
+	drm_debugfs_create_files(debugfs_list, ARRAY_SIZE(debugfs_list),
+				 root, xe->drm.primary);
+}
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.h b/drivers/gpu/drm/xe/xe_sriov_vf.h
index 3bf3364799ad..9e752105ec2a 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf.h
+++ b/drivers/gpu/drm/xe/xe_sriov_vf.h
@@ -8,11 +8,13 @@
 
 #include <linux/types.h>
 
+struct dentry;
 struct xe_device;
 
 void xe_sriov_vf_init_early(struct xe_device *xe);
 int xe_sriov_vf_init_late(struct xe_device *xe);
 void xe_sriov_vf_start_migration_recovery(struct xe_device *xe);
 bool xe_sriov_vf_migration_supported(struct xe_device *xe);
+void xe_sriov_vf_debugfs_register(struct xe_device *xe, struct dentry *root);
 
 #endif
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
index c5c60f05073d..8dec616c37c9 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
@@ -13,6 +13,7 @@
 #include "xe_guc_submit.h"
 #include "xe_lrc.h"
 #include "xe_migrate.h"
+#include "xe_pm.h"
 #include "xe_sa.h"
 #include "xe_sriov_printk.h"
 #include "xe_sriov_vf.h"
@@ -376,3 +377,34 @@ int xe_sriov_vf_ccs_detach_bo(struct xe_bo *bo)
 	}
 	return 0;
 }
+
+/**
+ * xe_sriov_vf_ccs_print - Print VF CCS details.
+ * @xe: the &xe_device
+ * @p: the &drm_printer
+ *
+ * This function is for VF use only.
+ */
+void xe_sriov_vf_ccs_print(struct xe_device *xe, struct drm_printer *p)
+{
+	struct xe_sa_manager *bb_pool;
+	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
+
+	if (!IS_VF_CCS_READY(xe))
+		return;
+
+	xe_pm_runtime_get(xe);
+
+	for_each_ccs_rw_ctx(ctx_id) {
+		bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool;
+		if (!bb_pool)
+			break;
+
+		drm_printf(p, "ccs %s bb suballoc info\n", ctx_id ? "write" : "read");
+		drm_printf(p, "-------------------------\n");
+		drm_suballoc_dump_debug_info(&bb_pool->base, p, xe_sa_manager_gpu_addr(bb_pool));
+		drm_puts(p, "\n");
+	}
+
+	xe_pm_runtime_put(xe);
+}
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h
index f0e1189b417a..0745c0ff0228 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h
@@ -10,6 +10,7 @@
 #include "xe_sriov.h"
 #include "xe_sriov_vf_ccs_types.h"
 
+struct drm_printer;
 struct xe_device;
 struct xe_bo;
 
@@ -17,6 +18,7 @@ int xe_sriov_vf_ccs_init(struct xe_device *xe);
 int xe_sriov_vf_ccs_attach_bo(struct xe_bo *bo);
 int xe_sriov_vf_ccs_detach_bo(struct xe_bo *bo);
 int xe_sriov_vf_ccs_register_context(struct xe_device *xe);
+void xe_sriov_vf_ccs_print(struct xe_device *xe, struct drm_printer *p);
 
 static inline bool xe_sriov_vf_ccs_ready(struct xe_device *xe)
 {
-- 
2.47.1


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

* ✓ CI.KUnit: success for Small improvements around VF CCS (rev2)
  2025-09-08 12:30 [PATCH v2 0/7] Small improvements around VF CCS Michal Wajdeczko
                   ` (6 preceding siblings ...)
  2025-09-08 12:30 ` [PATCH v2 7/7] drm/xe/vf: Move VF CCS debugfs attribute Michal Wajdeczko
@ 2025-09-08 22:53 ` Patchwork
  2025-09-09  4:21 ` ✗ Xe.CI.Full: failure " Patchwork
  8 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2025-09-08 22:53 UTC (permalink / raw)
  To: Michal Wajdeczko; +Cc: intel-xe

== Series Details ==

Series: Small improvements around VF CCS (rev2)
URL   : https://patchwork.freedesktop.org/series/154054/
State : success

== Summary ==

+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[22:52:31] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[22:52:35] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[22:53:04] Starting KUnit Kernel (1/1)...
[22:53:04] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[22:53:04] ================== guc_buf (11 subtests) ===================
[22:53:04] [PASSED] test_smallest
[22:53:04] [PASSED] test_largest
[22:53:04] [PASSED] test_granular
[22:53:04] [PASSED] test_unique
[22:53:04] [PASSED] test_overlap
[22:53:04] [PASSED] test_reusable
[22:53:04] [PASSED] test_too_big
[22:53:04] [PASSED] test_flush
[22:53:04] [PASSED] test_lookup
[22:53:04] [PASSED] test_data
[22:53:04] [PASSED] test_class
[22:53:04] ===================== [PASSED] guc_buf =====================
[22:53:04] =================== guc_dbm (7 subtests) ===================
[22:53:04] [PASSED] test_empty
[22:53:04] [PASSED] test_default
[22:53:04] ======================== test_size  ========================
[22:53:04] [PASSED] 4
[22:53:04] [PASSED] 8
[22:53:04] [PASSED] 32
[22:53:04] [PASSED] 256
[22:53:04] ==================== [PASSED] test_size ====================
[22:53:04] ======================= test_reuse  ========================
[22:53:04] [PASSED] 4
[22:53:04] [PASSED] 8
[22:53:04] [PASSED] 32
[22:53:04] [PASSED] 256
[22:53:04] =================== [PASSED] test_reuse ====================
[22:53:04] =================== test_range_overlap  ====================
[22:53:04] [PASSED] 4
[22:53:04] [PASSED] 8
[22:53:04] [PASSED] 32
[22:53:04] [PASSED] 256
[22:53:04] =============== [PASSED] test_range_overlap ================
[22:53:04] =================== test_range_compact  ====================
[22:53:04] [PASSED] 4
[22:53:04] [PASSED] 8
[22:53:04] [PASSED] 32
[22:53:04] [PASSED] 256
[22:53:04] =============== [PASSED] test_range_compact ================
[22:53:04] ==================== test_range_spare  =====================
[22:53:04] [PASSED] 4
[22:53:04] [PASSED] 8
[22:53:04] [PASSED] 32
[22:53:04] [PASSED] 256
[22:53:04] ================ [PASSED] test_range_spare =================
[22:53:04] ===================== [PASSED] guc_dbm =====================
[22:53:04] =================== guc_idm (6 subtests) ===================
[22:53:04] [PASSED] bad_init
[22:53:04] [PASSED] no_init
[22:53:04] [PASSED] init_fini
[22:53:04] [PASSED] check_used
[22:53:04] [PASSED] check_quota
[22:53:04] [PASSED] check_all
[22:53:04] ===================== [PASSED] guc_idm =====================
[22:53:04] ================== no_relay (3 subtests) ===================
[22:53:04] [PASSED] xe_drops_guc2pf_if_not_ready
[22:53:04] [PASSED] xe_drops_guc2vf_if_not_ready
[22:53:04] [PASSED] xe_rejects_send_if_not_ready
[22:53:04] ==================== [PASSED] no_relay =====================
[22:53:04] ================== pf_relay (14 subtests) ==================
[22:53:04] [PASSED] pf_rejects_guc2pf_too_short
[22:53:04] [PASSED] pf_rejects_guc2pf_too_long
[22:53:04] [PASSED] pf_rejects_guc2pf_no_payload
[22:53:04] [PASSED] pf_fails_no_payload
[22:53:04] [PASSED] pf_fails_bad_origin
[22:53:04] [PASSED] pf_fails_bad_type
[22:53:04] [PASSED] pf_txn_reports_error
[22:53:04] [PASSED] pf_txn_sends_pf2guc
[22:53:04] [PASSED] pf_sends_pf2guc
[22:53:04] [SKIPPED] pf_loopback_nop
[22:53:04] [SKIPPED] pf_loopback_echo
[22:53:04] [SKIPPED] pf_loopback_fail
[22:53:04] [SKIPPED] pf_loopback_busy
[22:53:04] [SKIPPED] pf_loopback_retry
[22:53:04] ==================== [PASSED] pf_relay =====================
[22:53:04] ================== vf_relay (3 subtests) ===================
[22:53:04] [PASSED] vf_rejects_guc2vf_too_short
[22:53:04] [PASSED] vf_rejects_guc2vf_too_long
[22:53:04] [PASSED] vf_rejects_guc2vf_no_payload
[22:53:04] ==================== [PASSED] vf_relay =====================
[22:53:04] ===================== lmtt (1 subtest) =====================
[22:53:04] ======================== test_ops  =========================
[22:53:04] [PASSED] 2-level
[22:53:04] [PASSED] multi-level
[22:53:04] ==================== [PASSED] test_ops =====================
[22:53:04] ====================== [PASSED] lmtt =======================
[22:53:04] ================= pf_service (11 subtests) =================
[22:53:04] [PASSED] pf_negotiate_any
[22:53:04] [PASSED] pf_negotiate_base_match
[22:53:04] [PASSED] pf_negotiate_base_newer
[22:53:04] [PASSED] pf_negotiate_base_next
[22:53:04] [SKIPPED] pf_negotiate_base_older
[22:53:04] [PASSED] pf_negotiate_base_prev
[22:53:04] [PASSED] pf_negotiate_latest_match
[22:53:04] [PASSED] pf_negotiate_latest_newer
[22:53:04] [PASSED] pf_negotiate_latest_next
[22:53:04] [SKIPPED] pf_negotiate_latest_older
[22:53:04] [SKIPPED] pf_negotiate_latest_prev
[22:53:04] =================== [PASSED] pf_service ====================
[22:53:04] =================== xe_mocs (2 subtests) ===================
[22:53:04] ================ xe_live_mocs_kernel_kunit  ================
[22:53:04] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[22:53:04] ================ xe_live_mocs_reset_kunit  =================
[22:53:04] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[22:53:04] ==================== [SKIPPED] xe_mocs =====================
[22:53:04] ================= xe_migrate (2 subtests) ==================
[22:53:04] ================= xe_migrate_sanity_kunit  =================
[22:53:04] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[22:53:04] ================== xe_validate_ccs_kunit  ==================
[22:53:04] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[22:53:04] =================== [SKIPPED] xe_migrate ===================
[22:53:04] ================== xe_dma_buf (1 subtest) ==================
[22:53:04] ==================== xe_dma_buf_kunit  =====================
[22:53:04] ================ [SKIPPED] xe_dma_buf_kunit ================
[22:53:04] =================== [SKIPPED] xe_dma_buf ===================
[22:53:04] ================= xe_bo_shrink (1 subtest) =================
[22:53:04] =================== xe_bo_shrink_kunit  ====================
[22:53:04] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[22:53:04] ================== [SKIPPED] xe_bo_shrink ==================
[22:53:04] ==================== xe_bo (2 subtests) ====================
[22:53:04] ================== xe_ccs_migrate_kunit  ===================
[22:53:04] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[22:53:04] ==================== xe_bo_evict_kunit  ====================
[22:53:04] =============== [SKIPPED] xe_bo_evict_kunit ================
[22:53:04] ===================== [SKIPPED] xe_bo ======================
[22:53:04] ==================== args (11 subtests) ====================
[22:53:04] [PASSED] count_args_test
[22:53:04] [PASSED] call_args_example
[22:53:04] [PASSED] call_args_test
[22:53:04] [PASSED] drop_first_arg_example
[22:53:04] [PASSED] drop_first_arg_test
[22:53:04] [PASSED] first_arg_example
[22:53:04] [PASSED] first_arg_test
[22:53:04] [PASSED] last_arg_example
[22:53:04] [PASSED] last_arg_test
[22:53:04] [PASSED] pick_arg_example
[22:53:04] [PASSED] sep_comma_example
[22:53:04] ====================== [PASSED] args =======================
[22:53:04] =================== xe_pci (3 subtests) ====================
[22:53:04] ==================== check_graphics_ip  ====================
[22:53:04] [PASSED] 12.70 Xe_LPG
[22:53:04] [PASSED] 12.71 Xe_LPG
[22:53:04] [PASSED] 12.74 Xe_LPG+
[22:53:04] [PASSED] 20.01 Xe2_HPG
[22:53:04] [PASSED] 20.02 Xe2_HPG
[22:53:04] [PASSED] 20.04 Xe2_LPG
[22:53:04] [PASSED] 30.00 Xe3_LPG
[22:53:04] [PASSED] 30.01 Xe3_LPG
[22:53:04] [PASSED] 30.03 Xe3_LPG
[22:53:04] ================ [PASSED] check_graphics_ip ================
[22:53:04] ===================== check_media_ip  ======================
[22:53:04] [PASSED] 13.00 Xe_LPM+
[22:53:04] [PASSED] 13.01 Xe2_HPM
[22:53:04] [PASSED] 20.00 Xe2_LPM
[22:53:04] [PASSED] 30.00 Xe3_LPM
[22:53:04] [PASSED] 30.02 Xe3_LPM
[22:53:04] ================= [PASSED] check_media_ip ==================
[22:53:04] ================= check_platform_gt_count  =================
[22:53:04] [PASSED] 0x9A60 (TIGERLAKE)
[22:53:04] [PASSED] 0x9A68 (TIGERLAKE)
[22:53:04] [PASSED] 0x9A70 (TIGERLAKE)
[22:53:04] [PASSED] 0x9A40 (TIGERLAKE)
[22:53:04] [PASSED] 0x9A49 (TIGERLAKE)
[22:53:04] [PASSED] 0x9A59 (TIGERLAKE)
[22:53:04] [PASSED] 0x9A78 (TIGERLAKE)
[22:53:04] [PASSED] 0x9AC0 (TIGERLAKE)
[22:53:04] [PASSED] 0x9AC9 (TIGERLAKE)
[22:53:04] [PASSED] 0x9AD9 (TIGERLAKE)
[22:53:04] [PASSED] 0x9AF8 (TIGERLAKE)
[22:53:04] [PASSED] 0x4C80 (ROCKETLAKE)
[22:53:04] [PASSED] 0x4C8A (ROCKETLAKE)
[22:53:04] [PASSED] 0x4C8B (ROCKETLAKE)
[22:53:04] [PASSED] 0x4C8C (ROCKETLAKE)
[22:53:04] [PASSED] 0x4C90 (ROCKETLAKE)
[22:53:04] [PASSED] 0x4C9A (ROCKETLAKE)
[22:53:04] [PASSED] 0x4680 (ALDERLAKE_S)
[22:53:04] [PASSED] 0x4682 (ALDERLAKE_S)
[22:53:04] [PASSED] 0x4688 (ALDERLAKE_S)
[22:53:04] [PASSED] 0x468A (ALDERLAKE_S)
[22:53:04] [PASSED] 0x468B (ALDERLAKE_S)
[22:53:04] [PASSED] 0x4690 (ALDERLAKE_S)
[22:53:04] [PASSED] 0x4692 (ALDERLAKE_S)
[22:53:04] [PASSED] 0x4693 (ALDERLAKE_S)
[22:53:04] [PASSED] 0x46A0 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46A1 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46A2 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46A3 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46A6 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46A8 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46AA (ALDERLAKE_P)
[22:53:04] [PASSED] 0x462A (ALDERLAKE_P)
[22:53:04] [PASSED] 0x4626 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x4628 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46B0 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46B1 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46B2 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46B3 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46C0 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46C1 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46C2 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46C3 (ALDERLAKE_P)
[22:53:04] [PASSED] 0x46D0 (ALDERLAKE_N)
[22:53:04] [PASSED] 0x46D1 (ALDERLAKE_N)
[22:53:04] [PASSED] 0x46D2 (ALDERLAKE_N)
[22:53:04] [PASSED] 0x46D3 (ALDERLAKE_N)
[22:53:04] [PASSED] 0x46D4 (ALDERLAKE_N)
[22:53:04] [PASSED] 0xA721 (ALDERLAKE_P)
[22:53:04] [PASSED] 0xA7A1 (ALDERLAKE_P)
[22:53:04] [PASSED] 0xA7A9 (ALDERLAKE_P)
[22:53:04] [PASSED] 0xA7AC (ALDERLAKE_P)
[22:53:04] [PASSED] 0xA7AD (ALDERLAKE_P)
[22:53:04] [PASSED] 0xA720 (ALDERLAKE_P)
[22:53:04] [PASSED] 0xA7A0 (ALDERLAKE_P)
[22:53:04] [PASSED] 0xA7A8 (ALDERLAKE_P)
[22:53:04] [PASSED] 0xA7AA (ALDERLAKE_P)
[22:53:04] [PASSED] 0xA7AB (ALDERLAKE_P)
[22:53:04] [PASSED] 0xA780 (ALDERLAKE_S)
[22:53:04] [PASSED] 0xA781 (ALDERLAKE_S)
[22:53:04] [PASSED] 0xA782 (ALDERLAKE_S)
[22:53:04] [PASSED] 0xA783 (ALDERLAKE_S)
[22:53:04] [PASSED] 0xA788 (ALDERLAKE_S)
[22:53:04] [PASSED] 0xA789 (ALDERLAKE_S)
[22:53:04] [PASSED] 0xA78A (ALDERLAKE_S)
[22:53:04] [PASSED] 0xA78B (ALDERLAKE_S)
[22:53:04] [PASSED] 0x4905 (DG1)
[22:53:04] [PASSED] 0x4906 (DG1)
[22:53:04] [PASSED] 0x4907 (DG1)
[22:53:04] [PASSED] 0x4908 (DG1)
[22:53:04] [PASSED] 0x4909 (DG1)
[22:53:04] [PASSED] 0x56C0 (DG2)
[22:53:04] [PASSED] 0x56C2 (DG2)
[22:53:04] [PASSED] 0x56C1 (DG2)
[22:53:04] [PASSED] 0x7D51 (METEORLAKE)
[22:53:04] [PASSED] 0x7DD1 (METEORLAKE)
[22:53:04] [PASSED] 0x7D41 (METEORLAKE)
[22:53:04] [PASSED] 0x7D67 (METEORLAKE)
[22:53:04] [PASSED] 0xB640 (METEORLAKE)
[22:53:04] [PASSED] 0x56A0 (DG2)
[22:53:04] [PASSED] 0x56A1 (DG2)
[22:53:04] [PASSED] 0x56A2 (DG2)
[22:53:04] [PASSED] 0x56BE (DG2)
[22:53:04] [PASSED] 0x56BF (DG2)
[22:53:04] [PASSED] 0x5690 (DG2)
[22:53:04] [PASSED] 0x5691 (DG2)
[22:53:04] [PASSED] 0x5692 (DG2)
[22:53:04] [PASSED] 0x56A5 (DG2)
[22:53:04] [PASSED] 0x56A6 (DG2)
[22:53:04] [PASSED] 0x56B0 (DG2)
[22:53:04] [PASSED] 0x56B1 (DG2)
[22:53:04] [PASSED] 0x56BA (DG2)
[22:53:04] [PASSED] 0x56BB (DG2)
[22:53:04] [PASSED] 0x56BC (DG2)
[22:53:04] [PASSED] 0x56BD (DG2)
[22:53:04] [PASSED] 0x5693 (DG2)
[22:53:04] [PASSED] 0x5694 (DG2)
[22:53:04] [PASSED] 0x5695 (DG2)
[22:53:04] [PASSED] 0x56A3 (DG2)
[22:53:04] [PASSED] 0x56A4 (DG2)
[22:53:04] [PASSED] 0x56B2 (DG2)
[22:53:04] [PASSED] 0x56B3 (DG2)
[22:53:04] [PASSED] 0x5696 (DG2)
[22:53:04] [PASSED] 0x5697 (DG2)
[22:53:04] [PASSED] 0xB69 (PVC)
[22:53:04] [PASSED] 0xB6E (PVC)
[22:53:04] [PASSED] 0xBD4 (PVC)
[22:53:04] [PASSED] 0xBD5 (PVC)
[22:53:04] [PASSED] 0xBD6 (PVC)
[22:53:04] [PASSED] 0xBD7 (PVC)
[22:53:04] [PASSED] 0xBD8 (PVC)
[22:53:04] [PASSED] 0xBD9 (PVC)
[22:53:04] [PASSED] 0xBDA (PVC)
[22:53:04] [PASSED] 0xBDB (PVC)
[22:53:04] [PASSED] 0xBE0 (PVC)
[22:53:04] [PASSED] 0xBE1 (PVC)
[22:53:04] [PASSED] 0xBE5 (PVC)
[22:53:04] [PASSED] 0x7D40 (METEORLAKE)
[22:53:04] [PASSED] 0x7D45 (METEORLAKE)
[22:53:04] [PASSED] 0x7D55 (METEORLAKE)
[22:53:04] [PASSED] 0x7D60 (METEORLAKE)
[22:53:04] [PASSED] 0x7DD5 (METEORLAKE)
[22:53:04] [PASSED] 0x6420 (LUNARLAKE)
[22:53:04] [PASSED] 0x64A0 (LUNARLAKE)
[22:53:04] [PASSED] 0x64B0 (LUNARLAKE)
[22:53:04] [PASSED] 0xE202 (BATTLEMAGE)
[22:53:04] [PASSED] 0xE209 (BATTLEMAGE)
[22:53:04] [PASSED] 0xE20B (BATTLEMAGE)
[22:53:04] [PASSED] 0xE20C (BATTLEMAGE)
[22:53:04] [PASSED] 0xE20D (BATTLEMAGE)
[22:53:04] [PASSED] 0xE210 (BATTLEMAGE)
[22:53:04] [PASSED] 0xE211 (BATTLEMAGE)
[22:53:04] [PASSED] 0xE212 (BATTLEMAGE)
[22:53:04] [PASSED] 0xE216 (BATTLEMAGE)
[22:53:04] [PASSED] 0xE220 (BATTLEMAGE)
[22:53:04] [PASSED] 0xE221 (BATTLEMAGE)
[22:53:04] [PASSED] 0xE222 (BATTLEMAGE)
[22:53:04] [PASSED] 0xE223 (BATTLEMAGE)
[22:53:04] [PASSED] 0xB080 (PANTHERLAKE)
[22:53:04] [PASSED] 0xB081 (PANTHERLAKE)
[22:53:04] [PASSED] 0xB082 (PANTHERLAKE)
[22:53:04] [PASSED] 0xB083 (PANTHERLAKE)
[22:53:04] [PASSED] 0xB084 (PANTHERLAKE)
[22:53:04] [PASSED] 0xB085 (PANTHERLAKE)
[22:53:04] [PASSED] 0xB086 (PANTHERLAKE)
[22:53:04] [PASSED] 0xB087 (PANTHERLAKE)
[22:53:04] [PASSED] 0xB08F (PANTHERLAKE)
[22:53:04] [PASSED] 0xB090 (PANTHERLAKE)
[22:53:04] [PASSED] 0xB0A0 (PANTHERLAKE)
[22:53:04] [PASSED] 0xB0B0 (PANTHERLAKE)
[22:53:04] [PASSED] 0xFD80 (PANTHERLAKE)
[22:53:04] [PASSED] 0xFD81 (PANTHERLAKE)
[22:53:04] ============= [PASSED] check_platform_gt_count =============
[22:53:04] ===================== [PASSED] xe_pci ======================
[22:53:04] =================== xe_rtp (2 subtests) ====================
[22:53:04] =============== xe_rtp_process_to_sr_tests  ================
[22:53:04] [PASSED] coalesce-same-reg
[22:53:04] [PASSED] no-match-no-add
[22:53:04] [PASSED] match-or
[22:53:04] [PASSED] match-or-xfail
[22:53:04] [PASSED] no-match-no-add-multiple-rules
[22:53:04] [PASSED] two-regs-two-entries
[22:53:04] [PASSED] clr-one-set-other
[22:53:04] [PASSED] set-field
[22:53:04] [PASSED] conflict-duplicate
[22:53:04] [PASSED] conflict-not-disjoint
[22:53:04] [PASSED] conflict-reg-type
[22:53:04] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[22:53:04] ================== xe_rtp_process_tests  ===================
[22:53:04] [PASSED] active1
[22:53:04] [PASSED] active2
[22:53:04] [PASSED] active-inactive
[22:53:04] [PASSED] inactive-active
[22:53:04] [PASSED] inactive-1st_or_active-inactive
[22:53:04] [PASSED] inactive-2nd_or_active-inactive
[22:53:04] [PASSED] inactive-last_or_active-inactive
[22:53:04] [PASSED] inactive-no_or_active-inactive
[22:53:04] ============== [PASSED] xe_rtp_process_tests ===============
[22:53:04] ===================== [PASSED] xe_rtp ======================
[22:53:04] ==================== xe_wa (1 subtest) =====================
[22:53:04] ======================== xe_wa_gt  =========================
[22:53:04] [PASSED] TIGERLAKE B0
[22:53:04] [PASSED] DG1 A0
[22:53:04] [PASSED] DG1 B0
[22:53:04] [PASSED] ALDERLAKE_S A0
[22:53:04] [PASSED] ALDERLAKE_S B0
[22:53:04] [PASSED] ALDERLAKE_S C0
[22:53:04] [PASSED] ALDERLAKE_S D0
[22:53:04] [PASSED] ALDERLAKE_P A0
[22:53:04] [PASSED] ALDERLAKE_P B0
[22:53:04] [PASSED] ALDERLAKE_P C0
[22:53:04] [PASSED] ALDERLAKE_S RPLS D0
[22:53:04] [PASSED] ALDERLAKE_P RPLU E0
[22:53:04] [PASSED] DG2 G10 C0
[22:53:04] [PASSED] DG2 G11 B1
[22:53:04] [PASSED] DG2 G12 A1
[22:53:04] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[22:53:04] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[22:53:04] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[22:53:04] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
stty: 'standard input': Inappropriate ioctl for device
[22:53:04] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[22:53:04] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[22:53:04] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[22:53:04] ==================== [PASSED] xe_wa_gt =====================
[22:53:04] ====================== [PASSED] xe_wa ======================
[22:53:04] ============================================================
[22:53:04] Testing complete. Ran 298 tests: passed: 282, skipped: 16
[22:53:04] Elapsed time: 33.224s total, 4.203s configuring, 28.654s building, 0.318s running

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

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

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



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

* ✗ Xe.CI.Full: failure for Small improvements around VF CCS (rev2)
  2025-09-08 12:30 [PATCH v2 0/7] Small improvements around VF CCS Michal Wajdeczko
                   ` (7 preceding siblings ...)
  2025-09-08 22:53 ` ✓ CI.KUnit: success for Small improvements around VF CCS (rev2) Patchwork
@ 2025-09-09  4:21 ` Patchwork
  2025-09-09  9:21   ` K V P, Satyanarayana
  8 siblings, 1 reply; 13+ messages in thread
From: Patchwork @ 2025-09-09  4:21 UTC (permalink / raw)
  To: Michal Wajdeczko; +Cc: intel-xe

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

== Series Details ==

Series: Small improvements around VF CCS (rev2)
URL   : https://patchwork.freedesktop.org/series/154054/
State : failure

== Summary ==

ERROR: The runconfig 'xe-3704-d45ca10a9305e2c3658bdb677087f0f88e57f6c1_FULL' does not exist in the database

== Logs ==

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

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

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

* Re: [PATCH v2 6/7] drm/xe/vf: Move VF CCS data to xe_device
  2025-09-08 12:30 ` [PATCH v2 6/7] drm/xe/vf: Move VF CCS data to xe_device Michal Wajdeczko
@ 2025-09-09  8:19   ` K V P, Satyanarayana
  0 siblings, 0 replies; 13+ messages in thread
From: K V P, Satyanarayana @ 2025-09-09  8:19 UTC (permalink / raw)
  To: Michal Wajdeczko, intel-xe



On 08-09-2025 18:00, Michal Wajdeczko wrote:
> We only need single set of VF CCS contexts, they are not per-tile
> as initial implementation might suggest. Move all VF CCS data from
> xe_tile.sriov.vf to xe_device.sriov.vf. Also rename some structs to
> align with the usage and fix their kernel-doc.
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
> ---
>   drivers/gpu/drm/xe/xe_bb.c                 |  4 ++--
>   drivers/gpu/drm/xe/xe_device_types.h       |  3 ---
>   drivers/gpu/drm/xe/xe_gt_debugfs.c         |  4 ++--
>   drivers/gpu/drm/xe/xe_sriov_vf_ccs.c       | 21 +++++++++----------
>   drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h | 24 +++++++++++++++++++---
>   drivers/gpu/drm/xe/xe_sriov_vf_types.h     |  7 +++----
>   6 files changed, 38 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_bb.c b/drivers/gpu/drm/xe/xe_bb.c
> index feb6e013dc38..6d20229c11de 100644
> --- a/drivers/gpu/drm/xe/xe_bb.c
> +++ b/drivers/gpu/drm/xe/xe_bb.c
> @@ -64,7 +64,7 @@ struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords,
>   			    enum xe_sriov_vf_ccs_rw_ctxs ctx_id)
>   {
>   	struct xe_bb *bb = kmalloc(sizeof(*bb), GFP_KERNEL);
> -	struct xe_tile *tile = gt_to_tile(gt);
> +	struct xe_device *xe = gt_to_xe(gt);
>   	struct xe_sa_manager *bb_pool;
>   	int err;
>   
> @@ -78,7 +78,7 @@ struct xe_bb *xe_bb_ccs_new(struct xe_gt *gt, u32 dwords,
>   	 * So, this extra DW acts as a guard here.
>   	 */
>   
> -	bb_pool = tile->sriov.vf.ccs[ctx_id].mem.ccs_bb_pool;
> +	bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool;
>   	bb->bo = xe_sa_bo_new(bb_pool, 4 * (dwords + 1));
>   
>   	if (IS_ERR(bb->bo)) {
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index 1e780f8a2a8c..c0a1f71f767d 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -183,9 +183,6 @@ struct xe_tile {
>   		struct {
>   			/** @sriov.vf.ggtt_balloon: GGTT regions excluded from use. */
>   			struct xe_ggtt_node *ggtt_balloon[2];
> -
> -			/** @sriov.vf.ccs: CCS read and write contexts for VF. */
> -			struct xe_tile_vf_ccs ccs[XE_SRIOV_VF_CCS_CTX_COUNT];
>   		} vf;
>   	} sriov;
>   
> diff --git a/drivers/gpu/drm/xe/xe_gt_debugfs.c b/drivers/gpu/drm/xe/xe_gt_debugfs.c
> index f6f2c14b642d..a9d960de0e5e 100644
> --- a/drivers/gpu/drm/xe/xe_gt_debugfs.c
> +++ b/drivers/gpu/drm/xe/xe_gt_debugfs.c
> @@ -126,7 +126,7 @@ static int powergate_info(struct xe_gt *gt, struct drm_printer *p)
>   
>   static int sa_info_vf_ccs(struct xe_gt *gt, struct drm_printer *p)
>   {
> -	struct xe_tile *tile = gt_to_tile(gt);
> +	struct xe_device *xe = gt_to_xe(gt);
>   	struct xe_sa_manager *bb_pool;
>   	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
>   
> @@ -136,7 +136,7 @@ static int sa_info_vf_ccs(struct xe_gt *gt, struct drm_printer *p)
>   	xe_pm_runtime_get(gt_to_xe(gt));
>   
>   	for_each_ccs_rw_ctx(ctx_id) {
> -		bb_pool = tile->sriov.vf.ccs[ctx_id].mem.ccs_bb_pool;
> +		bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool;
>   		if (!bb_pool)
>   			break;
>   
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
> index eb8436e44ca4..c5c60f05073d 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
> @@ -136,7 +136,7 @@ static u64 get_ccs_bb_pool_size(struct xe_device *xe)
>   	return round_up(bb_pool_size * 2, SZ_1M);
>   }
>   
> -static int alloc_bb_pool(struct xe_tile *tile, struct xe_tile_vf_ccs *ctx)
> +static int alloc_bb_pool(struct xe_tile *tile, struct xe_sriov_vf_ccs_ctx *ctx)
>   {
>   	struct xe_device *xe = tile_to_xe(tile);
>   	struct xe_sa_manager *sa_manager;
> @@ -168,7 +168,7 @@ static int alloc_bb_pool(struct xe_tile *tile, struct xe_tile_vf_ccs *ctx)
>   	return 0;
>   }
>   
> -static void ccs_rw_update_ring(struct xe_tile_vf_ccs *ctx)
> +static void ccs_rw_update_ring(struct xe_sriov_vf_ccs_ctx *ctx)
>   {
>   	u64 addr = xe_sa_manager_gpu_addr(ctx->mem.ccs_bb_pool);
>   	struct xe_lrc *lrc = xe_exec_queue_lrc(ctx->mig_q);
> @@ -185,7 +185,7 @@ static void ccs_rw_update_ring(struct xe_tile_vf_ccs *ctx)
>   	xe_lrc_set_ring_tail(lrc, lrc->ring.tail);
>   }
>   
> -static int register_save_restore_context(struct xe_tile_vf_ccs *ctx)
> +static int register_save_restore_context(struct xe_sriov_vf_ccs_ctx *ctx)
>   {
>   	int ctx_type;
>   
> @@ -215,15 +215,14 @@ static int register_save_restore_context(struct xe_tile_vf_ccs *ctx)
>    */
>   int xe_sriov_vf_ccs_register_context(struct xe_device *xe)
>   {
> -	struct xe_tile *tile = xe_device_get_root_tile(xe);
>   	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
> -	struct xe_tile_vf_ccs *ctx;
> +	struct xe_sriov_vf_ccs_ctx *ctx;
>   	int err;
>   
>   	xe_assert(xe, IS_VF_CCS_READY(xe));
>   
>   	for_each_ccs_rw_ctx(ctx_id) {
> -		ctx = &tile->sriov.vf.ccs[ctx_id];
> +		ctx = &xe->sriov.vf.ccs.contexts[ctx_id];
>   		err = register_save_restore_context(ctx);
>   		if (err)
>   			return err;
> @@ -234,7 +233,7 @@ int xe_sriov_vf_ccs_register_context(struct xe_device *xe)
>   
>   static void xe_sriov_vf_ccs_fini(void *arg)
>   {
> -	struct xe_tile_vf_ccs *ctx = arg;
> +	struct xe_sriov_vf_ccs_ctx *ctx = arg;
>   	struct xe_lrc *lrc = xe_exec_queue_lrc(ctx->mig_q);
>   
>   	/*
> @@ -258,7 +257,7 @@ int xe_sriov_vf_ccs_init(struct xe_device *xe)
>   {
>   	struct xe_tile *tile = xe_device_get_root_tile(xe);
>   	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
> -	struct xe_tile_vf_ccs *ctx;
> +	struct xe_sriov_vf_ccs_ctx *ctx;
>   	struct xe_exec_queue *q;
>   	u32 flags;
>   	int err;
> @@ -270,7 +269,7 @@ int xe_sriov_vf_ccs_init(struct xe_device *xe)
>   		return 0;
>   
>   	for_each_ccs_rw_ctx(ctx_id) {
> -		ctx = &tile->sriov.vf.ccs[ctx_id];
> +		ctx = &xe->sriov.vf.ccs.contexts[ctx_id];
>   		ctx->ctx_id = ctx_id;
>   
>   		flags = EXEC_QUEUE_FLAG_KERNEL |
> @@ -325,7 +324,7 @@ int xe_sriov_vf_ccs_attach_bo(struct xe_bo *bo)
>   {
>   	struct xe_device *xe = xe_bo_device(bo);
>   	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
> -	struct xe_tile_vf_ccs *ctx;
> +	struct xe_sriov_vf_ccs_ctx *ctx;
>   	struct xe_tile *tile;
>   	struct xe_bb *bb;
>   	int err = 0;
> @@ -339,7 +338,7 @@ int xe_sriov_vf_ccs_attach_bo(struct xe_bo *bo)
>   		/* bb should be NULL here. Assert if not NULL */
>   		xe_assert(xe, !bb);
>   
> -		ctx = &tile->sriov.vf.ccs[ctx_id];
> +		ctx = &xe->sriov.vf.ccs.contexts[ctx_id];
>   		err = xe_migrate_ccs_rw_copy(tile, ctx->mig_q, bo, ctx_id);
>   	}
>   	return err;
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h b/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
> index 4d3c10907135..22c499943d2a 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs_types.h
> @@ -6,6 +6,8 @@
>   #ifndef _XE_SRIOV_VF_CCS_TYPES_H_
>   #define _XE_SRIOV_VF_CCS_TYPES_H_
>   
> +#include <linux/types.h>
> +
>   #define for_each_ccs_rw_ctx(id__) \
>   	for ((id__) = 0; (id__) < XE_SRIOV_VF_CCS_CTX_COUNT; (id__)++)
>   
> @@ -18,16 +20,32 @@ enum xe_sriov_vf_ccs_rw_ctxs {
>   struct xe_migrate;
>   struct xe_sa_manager;
>   
> -struct xe_tile_vf_ccs {
> -	/** @id: Id to which context it belongs to */
> +/**
> + * struct xe_sriov_vf_ccs_ctx - VF CCS migration context data.
> + */
> +struct xe_sriov_vf_ccs_ctx {
> +	/** @ctx_id: Id to which context it belongs to */
>   	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
> +
>   	/** @mig_q: exec queues used for migration */
>   	struct xe_exec_queue *mig_q;
>   
> +	/** @mem: memory data */
>   	struct {
> -		/** @ccs_bb_pool: Pool from which batch buffers are allocated. */
> +		/** @mem.ccs_bb_pool: Pool from which batch buffers are allocated. */
>   		struct xe_sa_manager *ccs_bb_pool;
>   	} mem;
>   };
>   
> +/**
> + * struct xe_sriov_vf_ccs - The VF CCS migration support data.
> + */
> +struct xe_sriov_vf_ccs {
> +	/** @contexts: CCS read and write contexts for VF. */
> +	struct xe_sriov_vf_ccs_ctx contexts[XE_SRIOV_VF_CCS_CTX_COUNT];
> +
> +	/** @initialized: Initialization of VF CCS is completed or not. */
> +	bool initialized;
> +};
> +
>   #endif
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_types.h b/drivers/gpu/drm/xe/xe_sriov_vf_types.h
> index 2c94d1f92187..426cc5841958 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf_types.h
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf_types.h
> @@ -9,6 +9,8 @@
>   #include <linux/types.h>
>   #include <linux/workqueue_types.h>
>   
> +#include "xe_sriov_vf_ccs_types.h"
> +
>   /**
>    * struct xe_sriov_vf_relay_version - PF ABI version details.
>    */
> @@ -43,10 +45,7 @@ struct xe_device_vf {
>   	} migration;
>   
>   	/** @ccs: VF CCS state data */
> -	struct {
> -		/** @ccs.initialized: Initilalization of VF CCS is completed or not */
> -		bool initialized;
> -	} ccs;
> +	struct xe_sriov_vf_ccs ccs;
>   };
>   
>   #endif
LGTM.
Reviewed-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>

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

* Re: [PATCH v2 7/7] drm/xe/vf: Move VF CCS debugfs attribute
  2025-09-08 12:30 ` [PATCH v2 7/7] drm/xe/vf: Move VF CCS debugfs attribute Michal Wajdeczko
@ 2025-09-09  8:23   ` K V P, Satyanarayana
  0 siblings, 0 replies; 13+ messages in thread
From: K V P, Satyanarayana @ 2025-09-09  8:23 UTC (permalink / raw)
  To: Michal Wajdeczko, intel-xe



On 08-09-2025 18:00, Michal Wajdeczko wrote:
> The VF CCS handling is per-device so its debugfs file should not
> be exposed on per-GT basis. Move it up to the device level.
> 
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>
> ---
>   drivers/gpu/drm/xe/xe_debugfs.c      |  3 +++
>   drivers/gpu/drm/xe/xe_gt_debugfs.c   | 39 ----------------------------
>   drivers/gpu/drm/xe/xe_sriov_vf.c     | 28 ++++++++++++++++++++
>   drivers/gpu/drm/xe/xe_sriov_vf.h     |  2 ++
>   drivers/gpu/drm/xe/xe_sriov_vf_ccs.c | 32 +++++++++++++++++++++++
>   drivers/gpu/drm/xe/xe_sriov_vf_ccs.h |  2 ++
>   6 files changed, 67 insertions(+), 39 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
> index 4b71570529a6..544d7d8460d9 100644
> --- a/drivers/gpu/drm/xe/xe_debugfs.c
> +++ b/drivers/gpu/drm/xe/xe_debugfs.c
> @@ -24,6 +24,7 @@
>   #include "xe_pxp_debugfs.h"
>   #include "xe_sriov.h"
>   #include "xe_sriov_pf.h"
> +#include "xe_sriov_vf.h"
>   #include "xe_step.h"
>   #include "xe_tile_debugfs.h"
>   #include "xe_wa.h"
> @@ -395,4 +396,6 @@ void xe_debugfs_register(struct xe_device *xe)
>   
>   	if (IS_SRIOV_PF(xe))
>   		xe_sriov_pf_debugfs_register(xe, root);
> +	else if (IS_SRIOV_VF(xe))
> +		xe_sriov_vf_debugfs_register(xe, root);
>   }
> diff --git a/drivers/gpu/drm/xe/xe_gt_debugfs.c b/drivers/gpu/drm/xe/xe_gt_debugfs.c
> index a9d960de0e5e..f253e2df4907 100644
> --- a/drivers/gpu/drm/xe/xe_gt_debugfs.c
> +++ b/drivers/gpu/drm/xe/xe_gt_debugfs.c
> @@ -124,33 +124,6 @@ static int powergate_info(struct xe_gt *gt, struct drm_printer *p)
>   	return ret;
>   }
>   
> -static int sa_info_vf_ccs(struct xe_gt *gt, struct drm_printer *p)
> -{
> -	struct xe_device *xe = gt_to_xe(gt);
> -	struct xe_sa_manager *bb_pool;
> -	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
> -
> -	if (!IS_VF_CCS_READY(gt_to_xe(gt)))
> -		return 0;
> -
> -	xe_pm_runtime_get(gt_to_xe(gt));
> -
> -	for_each_ccs_rw_ctx(ctx_id) {
> -		bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool;
> -		if (!bb_pool)
> -			break;
> -
> -		drm_printf(p, "ccs %s bb suballoc info\n", ctx_id ? "write" : "read");
> -		drm_printf(p, "-------------------------\n");
> -		drm_suballoc_dump_debug_info(&bb_pool->base, p, xe_sa_manager_gpu_addr(bb_pool));
> -		drm_puts(p, "\n");
> -	}
> -
> -	xe_pm_runtime_put(gt_to_xe(gt));
> -
> -	return 0;
> -}
> -
>   static int topology(struct xe_gt *gt, struct drm_printer *p)
>   {
>   	xe_pm_runtime_get(gt_to_xe(gt));
> @@ -318,13 +291,6 @@ static const struct drm_info_list vf_safe_debugfs_list[] = {
>   	{"hwconfig", .show = xe_gt_debugfs_simple_show, .data = hwconfig},
>   };
>   
> -/*
> - * only for GT debugfs files which are valid on VF. Not valid on PF.
> - */
> -static const struct drm_info_list vf_only_debugfs_list[] = {
> -	{"sa_info_vf_ccs", .show = xe_gt_debugfs_simple_show, .data = sa_info_vf_ccs},
> -};
> -
>   /* everything else should be added here */
>   static const struct drm_info_list pf_only_debugfs_list[] = {
>   	{"hw_engines", .show = xe_gt_debugfs_simple_show, .data = hw_engines},
> @@ -465,11 +431,6 @@ void xe_gt_debugfs_register(struct xe_gt *gt)
>   		drm_debugfs_create_files(pf_only_debugfs_list,
>   					 ARRAY_SIZE(pf_only_debugfs_list),
>   					 root, minor);
> -	else
> -		drm_debugfs_create_files(vf_only_debugfs_list,
> -					 ARRAY_SIZE(vf_only_debugfs_list),
> -					 root, minor);
> -
>   
>   	xe_uc_debugfs_register(&gt->uc, root);
>   
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
> index cb062328551a..cdd9f8e78b2a 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf.c
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
> @@ -3,6 +3,7 @@
>    * Copyright © 2023-2024 Intel Corporation
>    */
>   
> +#include <drm/drm_debugfs.h>
>   #include <drm/drm_managed.h>
>   
>   #include "xe_assert.h"
> @@ -445,3 +446,30 @@ int xe_sriov_vf_init_late(struct xe_device *xe)
>   
>   	return err;
>   }
> +
> +static int sa_info_vf_ccs(struct seq_file *m, void *data)
> +{
> +	struct drm_info_node *node = m->private;
> +	struct xe_device *xe = to_xe_device(node->minor->dev);
> +	struct drm_printer p = drm_seq_file_printer(m);
> +
> +	xe_sriov_vf_ccs_print(xe, &p);
> +	return 0;
> +}
> +
> +static const struct drm_info_list debugfs_list[] = {
> +	{ .name = "sa_info_vf_ccs", .show = sa_info_vf_ccs },
> +};
> +
> +/**
> + * xe_sriov_vf_debugfs_register - Register VF debugfs attributes.
> + * @xe: the &xe_device
> + * @root: the root &dentry
> + *
> + * Prepare debugfs attributes exposed by the VF.
> + */
> +void xe_sriov_vf_debugfs_register(struct xe_device *xe, struct dentry *root)
> +{
> +	drm_debugfs_create_files(debugfs_list, ARRAY_SIZE(debugfs_list),
> +				 root, xe->drm.primary);
> +}
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.h b/drivers/gpu/drm/xe/xe_sriov_vf.h
> index 3bf3364799ad..9e752105ec2a 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf.h
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf.h
> @@ -8,11 +8,13 @@
>   
>   #include <linux/types.h>
>   
> +struct dentry;
>   struct xe_device;
>   
>   void xe_sriov_vf_init_early(struct xe_device *xe);
>   int xe_sriov_vf_init_late(struct xe_device *xe);
>   void xe_sriov_vf_start_migration_recovery(struct xe_device *xe);
>   bool xe_sriov_vf_migration_supported(struct xe_device *xe);
> +void xe_sriov_vf_debugfs_register(struct xe_device *xe, struct dentry *root);
>   
>   #endif
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
> index c5c60f05073d..8dec616c37c9 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
> @@ -13,6 +13,7 @@
>   #include "xe_guc_submit.h"
>   #include "xe_lrc.h"
>   #include "xe_migrate.h"
> +#include "xe_pm.h"
>   #include "xe_sa.h"
>   #include "xe_sriov_printk.h"
>   #include "xe_sriov_vf.h"
> @@ -376,3 +377,34 @@ int xe_sriov_vf_ccs_detach_bo(struct xe_bo *bo)
>   	}
>   	return 0;
>   }
> +
> +/**
> + * xe_sriov_vf_ccs_print - Print VF CCS details.
> + * @xe: the &xe_device
> + * @p: the &drm_printer
> + *
> + * This function is for VF use only.
> + */
> +void xe_sriov_vf_ccs_print(struct xe_device *xe, struct drm_printer *p)
> +{
> +	struct xe_sa_manager *bb_pool;
> +	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
> +
> +	if (!IS_VF_CCS_READY(xe))
> +		return;
> +
> +	xe_pm_runtime_get(xe);
> +
> +	for_each_ccs_rw_ctx(ctx_id) {
> +		bb_pool = xe->sriov.vf.ccs.contexts[ctx_id].mem.ccs_bb_pool;
> +		if (!bb_pool)
> +			break;
> +
> +		drm_printf(p, "ccs %s bb suballoc info\n", ctx_id ? "write" : "read");
> +		drm_printf(p, "-------------------------\n");
> +		drm_suballoc_dump_debug_info(&bb_pool->base, p, xe_sa_manager_gpu_addr(bb_pool));
> +		drm_puts(p, "\n");
> +	}
> +
> +	xe_pm_runtime_put(xe);
> +}
> diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h
> index f0e1189b417a..0745c0ff0228 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h
> +++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.h
> @@ -10,6 +10,7 @@
>   #include "xe_sriov.h"
>   #include "xe_sriov_vf_ccs_types.h"
>   
> +struct drm_printer;
>   struct xe_device;
>   struct xe_bo;
>   
> @@ -17,6 +18,7 @@ int xe_sriov_vf_ccs_init(struct xe_device *xe);
>   int xe_sriov_vf_ccs_attach_bo(struct xe_bo *bo);
>   int xe_sriov_vf_ccs_detach_bo(struct xe_bo *bo);
>   int xe_sriov_vf_ccs_register_context(struct xe_device *xe);
> +void xe_sriov_vf_ccs_print(struct xe_device *xe, struct drm_printer *p);
>   
>   static inline bool xe_sriov_vf_ccs_ready(struct xe_device *xe)
>   {
LGTM.
Reviewed-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com>

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

* Re: ✗ Xe.CI.Full: failure for Small improvements around VF CCS (rev2)
  2025-09-09  4:21 ` ✗ Xe.CI.Full: failure " Patchwork
@ 2025-09-09  9:21   ` K V P, Satyanarayana
  0 siblings, 0 replies; 13+ messages in thread
From: K V P, Satyanarayana @ 2025-09-09  9:21 UTC (permalink / raw)
  To: intel-xe



On 09-09-2025 09:51, Patchwork wrote:
> *Patch Details*
> *Series:*	Small improvements around VF CCS (rev2)
> *URL:*	https://patchwork.freedesktop.org/series/154054/ <https:// 
> patchwork.freedesktop.org/series/154054/>
> *State:*	failure
> *Details:*	https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154054v2/ 
> index.html <https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-154054v2/ 
> index.html>
> 
> ERROR: The runconfig 'xe-3704- 
> d45ca10a9305e2c3658bdb677087f0f88e57f6c1_FULL' does not exist in the 
> database
> 
I have checked this series and it works fine. Looks like CI is some how 
broken.
-Satya.

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

end of thread, other threads:[~2025-09-09  9:21 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-08 12:30 [PATCH v2 0/7] Small improvements around VF CCS Michal Wajdeczko
2025-09-08 12:30 ` [PATCH v2 1/7] drm/xe/guc: Rename xe_guc_register_exec_queue Michal Wajdeczko
2025-09-08 12:30 ` [PATCH v2 2/7] drm/xe/guc: Use proper flag definitions when registering context Michal Wajdeczko
2025-09-08 12:30 ` [PATCH v2 3/7] drm/xe/vf: Drop IS_VF_CCS_INIT_NEEDED macro Michal Wajdeczko
2025-09-08 12:30 ` [PATCH v2 4/7] drm/xe/vf: Use single check when calling VF CCS functions Michal Wajdeczko
2025-09-08 12:30 ` [PATCH v2 5/7] drm/xe/bo: Add xe_bo_has_valid_ccs_bb helper Michal Wajdeczko
2025-09-08 12:30 ` [PATCH v2 6/7] drm/xe/vf: Move VF CCS data to xe_device Michal Wajdeczko
2025-09-09  8:19   ` K V P, Satyanarayana
2025-09-08 12:30 ` [PATCH v2 7/7] drm/xe/vf: Move VF CCS debugfs attribute Michal Wajdeczko
2025-09-09  8:23   ` K V P, Satyanarayana
2025-09-08 22:53 ` ✓ CI.KUnit: success for Small improvements around VF CCS (rev2) Patchwork
2025-09-09  4:21 ` ✗ Xe.CI.Full: failure " Patchwork
2025-09-09  9:21   ` K V P, Satyanarayana

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