[Intel-xe] [PATCH] drm/xe: Sysfs entries to query fused min, max frequency of

Sujaritha Sundaresan sujaritha.sundaresan at intel.com
Tue May 30 05:13:02 UTC 2023


Adding sysfs entries to get fused min, max frequency of lmem
using the pcode mailbox interface.

Co-developed-by: Badal Nilawar <badal.nilawar at intel.com>
Signed-off-by: Sujaritha Sundaresan <sujaritha.sundaresan at intel.com>
---
 drivers/gpu/drm/xe/xe_guc_pc.c | 44 ++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
index e799faa1c6b8..a38493bcadae 100644
--- a/drivers/gpu/drm/xe/xe_guc_pc.c
+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
@@ -65,6 +65,10 @@
  * - freq_rpn: The Render Performance (RP) N level, which is the minimal one.
  * - freq_rpe: The Render Performance (RP) E level, which is the efficient one.
  * - freq_rp0: The Render Performance (RP) 0 level, which is the maximum one.
+ * - freq_mem_rp0: The fused maximum frequency of LMEM using the PCODE mailbox
+ *		   interface.
+ * - freq_mem_rpn: The fused minimal frequency of LMEM using the PCODE mailbox
+ *		   interface.
  *
  * device/gt#/freq_* *read-write* files:
  * - freq_min: GuC PC min request.
@@ -625,6 +629,44 @@ static ssize_t rc6_residency_show(struct device *dev,
 }
 static DEVICE_ATTR_RO(rc6_residency);
 
+static ssize_t freq_mem_rp0_show(struct device *dev,
+				 struct device_attribute *attr, char *buff)
+{
+	u32 val;
+	int err;
+
+	err = xe_pcode_read(dev, XEHPSDV_PCODE_FREQUENCY_CONFIG,
+			    PCODE_MBOX_FC_SC_READ_FUSED_P0,
+			    PCODE_MBOX_DOMAIN_HBM, &val);
+	if (err)
+		return err;
+
+	/* data_out - Fused P0 for domain ID in units of 50 MHz */
+	val *= GT_FREQUENCY_MULTIPLIER;
+
+	return sysfs_emit(buff, "%u\n", val);
+}
+static DEVICE_ATTR_RO(freq_mem_rp0);
+
+static ssize_t freq_mem_rpn_show(struct device *dev,
+				 struct device_attribute *attr, char *buff)
+{
+	u32 val;
+	int err;
+
+	err = xe_pcode_read(dev, XEHPSDV_PCODE_FREQUENCY_CONFIG,
+			    PCODE_MBOX_FC_SC_READ_FUSED_PN,
+			    PCODE_MBOX_DOMAIN_HBM, &val);
+	if (err)
+		return err;
+
+	/* data_out - Fused P0 for domain ID in units of 50 MHz */
+	val *= GT_FREQUENCY_MULTIPLIER;
+
+	return sysfs_emit(buff, "%u\n", val);
+}
+static DEVICE_ATTR_RO(freq_mem_rpn);
+
 static const struct attribute *pc_attrs[] = {
 	&dev_attr_freq_act.attr,
 	&dev_attr_freq_cur.attr,
@@ -635,6 +677,8 @@ static const struct attribute *pc_attrs[] = {
 	&dev_attr_freq_max.attr,
 	&dev_attr_rc_status.attr,
 	&dev_attr_rc6_residency.attr,
+	&dev_attr_freq_mem_rp0.attr,
+	&dev_attr_freq_mem_rpn.attr,
 	NULL
 };
 
-- 
2.25.1



More information about the Intel-xe mailing list