[PATCH 1/1] drm/xe/oa: Combined diff of changes between v9 and v10

Ashutosh Dixit ashutosh.dixit at intel.com
Tue Feb 13 06:35:10 UTC 2024


Because Xe OA changes between successive revisions are distributed across
multiple patches, provide a combined diff of all changes in a single patch
to help with the code review.

These changes pertain to: https://patchwork.freedesktop.org/series/121084/

This patch will not compile, it's purpose is to just provide the diff.

Changes between v9 and v10 include:
* Kernel-doc fixes
* Documentation/comment fixes
* Don't expose capabilities as OR of properties (Umesh)
* Define oa_status register bitfields (Umesh)

Signed-off-by: Ashutosh Dixit <ashutosh.dixit at intel.com>
---
 drivers/gpu/drm/xe/xe_guc_pc.c   | 12 ++++------
 drivers/gpu/drm/xe/xe_oa_types.h | 12 ++++------
 drivers/gpu/drm/xe/xe_query.c    |  4 +---
 include/uapi/drm/xe_drm.h        | 40 +++++++++++++++++++-------------
 4 files changed, 33 insertions(+), 35 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
index c94f15f34c659..4e9ec5ad09ec1 100644
--- a/drivers/gpu/drm/xe/xe_guc_pc.c
+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
@@ -842,13 +842,11 @@ int xe_guc_pc_gucrc_disable(struct xe_guc_pc *pc)
 }
 
 /**
- * xe_guc_pc_override_gucrc_mode() - override GUCRC mode
+ * xe_guc_pc_override_gucrc_mode - override GUCRC mode
  * @pc: Xe_GuC_PC instance
  * @mode: new value of the mode.
  *
- * Override the GUCRC mode.
- *
- * Return: 0 on success, negative error code on error.
+ * Return: 0 on success, negative error code on error
  */
 int xe_guc_pc_override_gucrc_mode(struct xe_guc_pc *pc, enum slpc_gucrc_mode mode)
 {
@@ -862,12 +860,10 @@ int xe_guc_pc_override_gucrc_mode(struct xe_guc_pc *pc, enum slpc_gucrc_mode mod
 }
 
 /**
- * xe_guc_pc_override_gucrc_mode() - override GUCRC mode
+ * xe_guc_pc_unset_gucrc_mode - unset GUCRC mode override
  * @pc: Xe_GuC_PC instance
  *
- * Unset the GUCRC mode override
- *
- * Return: 0 on success, negative error code on error.
+ * Return: 0 on success, negative error code on error
  */
 int xe_guc_pc_unset_gucrc_mode(struct xe_guc_pc *pc)
 {
diff --git a/drivers/gpu/drm/xe/xe_oa_types.h b/drivers/gpu/drm/xe/xe_oa_types.h
index bee49977ee3d4..ce20c03bbc285 100644
--- a/drivers/gpu/drm/xe/xe_oa_types.h
+++ b/drivers/gpu/drm/xe/xe_oa_types.h
@@ -56,9 +56,7 @@ enum xe_oa_format_name {
 	XE_OA_FORMAT_MAX,
 };
 
-/**
- * struct xe_oa_format - Format fields for supported OA formats
- */
+/** struct xe_oa_format - Format fields for supported OA formats */
 struct xe_oa_format {
 	u32 counter_select;
 	int size;
@@ -68,9 +66,7 @@ struct xe_oa_format {
 	u16 bc_report;
 };
 
-/**
- * struct xe_oa_regs - Registers for each OA unit
- */
+/** struct xe_oa_regs - Registers for each OA unit */
 struct xe_oa_regs {
 	u32 base;
 	struct xe_reg oa_head_ptr;
@@ -107,7 +103,7 @@ struct xe_oa_unit {
  * struct xe_oa_gt - OA per-gt information
  */
 struct xe_oa_gt {
-	/** @lock: lock protecting create/destroy OA streams */
+	/** @gt_lock: lock protecting create/destroy OA streams */
 	struct mutex gt_lock;
 
 	/** @num_oa_units: number of oa units for each gt */
@@ -182,7 +178,7 @@ struct xe_oa_stream {
 	/** @hwe: hardware engine associated with this oa stream */
 	struct xe_hw_engine *hwe;
 
-	/** @lock: Lock serializing stream operations */
+	/** @stream_lock: Lock serializing stream operations */
 	struct mutex stream_lock;
 
 	/** @sample: true if DRM_XE_OA_PROP_SAMPLE_OA is provided */
diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
index 828be65a076d6..5dfc6072a0b5b 100644
--- a/drivers/gpu/drm/xe/xe_query.c
+++ b/drivers/gpu/drm/xe/xe_query.c
@@ -567,9 +567,7 @@ static int query_oa_units(struct xe_device *xe,
 			du->oa_unit_id = u->oa_unit_id;
 			du->oa_unit_type = u->type;
 			du->oa_timestamp_freq = xe_oa_timestamp_frequency(gt);
-
-			for (j = 1; j < DRM_XE_OA_PROPERTY_MAX; j++)
-				du->capabilities |= BIT(j);
+			du->capabilities = DRM_XE_OA_CAPS_BASE;
 
 			j = 0;
 			for_each_hw_engine(hwe, gt, hwe_id) {
diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
index bd535343a406c..2c28198190c02 100644
--- a/include/uapi/drm/xe_drm.h
+++ b/include/uapi/drm/xe_drm.h
@@ -1343,9 +1343,7 @@ struct drm_xe_wait_user_fence {
 	__u64 reserved[2];
 };
 
-/**
- * enum drm_xe_perf_type - Perf stream types
- */
+/** enum drm_xe_perf_type - Perf stream types */
 enum drm_xe_perf_type {
 	DRM_XE_PERF_TYPE_OA,
 	DRM_XE_PERF_TYPE_MAX,
@@ -1408,7 +1406,13 @@ enum drm_xe_perf_ioctls {
 
 /** enum drm_xe_oa_unit_type - OA unit types */
 enum drm_xe_oa_unit_type {
+	/**
+	 * @DRM_XE_OA_UNIT_TYPE_OAG: OAG OA unit. OAR/OAC are considered
+	 * sub-types of OAG. For OAR/OAC, use OAG.
+	 */
 	DRM_XE_OA_UNIT_TYPE_OAG,
+
+	/** @DRM_XE_OA_UNIT_TYPE_OAM: OAM OA unit */
 	DRM_XE_OA_UNIT_TYPE_OAM,
 };
 
@@ -1422,11 +1426,9 @@ struct drm_xe_oa_unit {
 	/** @oa_unit_type: OA unit type of @drm_xe_oa_unit_type */
 	__u32 oa_unit_type;
 
-	/**
-	 * @capabilities: OA capabilities bit-mask: this is a bit-mask of
-	 * property id's in enum @drm_xe_oa_property_id
-	 */
+	/** @capabilities: OA capabilities bit-mask */
 	__u64 capabilities;
+#define DRM_XE_OA_CAPS_BASE		(1 << 0)
 
 	/** @oa_timestamp_freq: OA timestamp freq */
 	__u64 oa_timestamp_freq;
@@ -1517,10 +1519,11 @@ enum drm_xe_oa_property_id {
 
 	/** @DRM_XE_OA_PROPERTY_OA_FORMAT: Perf counter report format */
 	DRM_XE_OA_PROPERTY_OA_FORMAT,
-	/**
-	 * OA_FORMAT's are specified the same way as in Bspec, in terms of
-	 * the following quantities: a. enum @drm_xe_oa_format_type
-	 * b. Counter select c. Counter size and d. BC report
+	/*
+	 * OA_FORMAT's are specified the same way as in PRM/Bspec 52198/60942,
+	 * in terms of the following quantities: a. enum @drm_xe_oa_format_type
+	 * b. Counter select c. Counter size and d. BC report. Also refer to the
+	 * oa_formats array in drivers/gpu/drm/xe/xe_oa.c.
 	 */
 #define DRM_XE_OA_FORMAT_MASK_FMT_TYPE		(0xff << 0)
 #define DRM_XE_OA_FORMAT_MASK_COUNTER_SEL	(0xff << 8)
@@ -1551,7 +1554,8 @@ enum drm_xe_oa_property_id {
 	 */
 	DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE,
 
-	DRM_XE_OA_PROPERTY_MAX /* non-ABI */
+	/** @DRM_XE_OA_PROPERTY_MAX: non-ABI */
+	DRM_XE_OA_PROPERTY_MAX
 };
 
 /**
@@ -1565,7 +1569,7 @@ struct drm_xe_oa_config {
 	/** @extensions: Pointer to the first extension struct, if any */
 	__u64 extensions;
 
-	/** * @uuid: String formatted like "%\08x-%\04x-%\04x-%\04x-%\012x" */
+	/** @uuid: String formatted like "%\08x-%\04x-%\04x-%\04x-%\012x" */
 	char uuid[36];
 
 	/** @n_regs: Number of regs in @regs_ptr */
@@ -1583,10 +1587,14 @@ struct drm_xe_oa_config {
  * @DRM_XE_PERF_IOCTL_STATUS perf fd ioctl
  */
 struct drm_xe_oa_stream_status {
-	/** @oa_status: OA status register as specified in Bspec */
+	/** @oa_status: OA status register as specified in PRM/Bspec 46717/61226 */
 	__u64 oa_status;
+#define DRM_XE_OASTATUS_MMIO_TRG_Q_FULL		(1 << 6)
+#define DRM_XE_OASTATUS_COUNTER_OVERFLOW	(1 << 2)
+#define DRM_XE_OASTATUS_BUFFER_OVERFLOW		(1 << 1)
+#define DRM_XE_OASTATUS_REPORT_LOST		(1 << 0)
 
-	/** @reserved */
+	/** @reserved: reserved for future use */
 	__u64 reserved[3];
 };
 
@@ -1598,7 +1606,7 @@ struct drm_xe_oa_stream_info {
 	/** @oa_buf_size: OA buffer size */
 	__u64 oa_buf_size;
 
-	/** @reserved */
+	/** @reserved: reserved for future use */
 	__u64 reserved[3];
 };
 
-- 
2.41.0



More information about the Intel-xe mailing list