[Intel-xe] [PATCH] drm/xe: Add a sysfs node for requested frequency

Sujaritha Sundaresan sujaritha.sundaresan at intel.com
Mon May 29 09:27:03 UTC 2023


Adding freq_pureq as a sysfs node to expose the frequency requested
by the PUnit.

Signed-off-by: Sujaritha Sundaresan <sujaritha.sundaresan at intel.com>
---
 drivers/gpu/drm/xe/xe_guc_pc.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
index e799faa1c6b8..8a1b3bc5d397 100644
--- a/drivers/gpu/drm/xe/xe_guc_pc.c
+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
@@ -62,6 +62,7 @@
  * device/gt#/freq_* *read-only* files:
  * - freq_act: The actual resolved frequency decided by PCODE.
  * - freq_cur: The current one requested by GuC PC to the Hardware.
+ * - freq_pureq: The frequency requested by PUnit.
  * - 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.
@@ -425,6 +426,19 @@ static ssize_t freq_cur_show(struct device *dev,
 }
 static DEVICE_ATTR_RO(freq_cur);
 
+static ssize_t freq_pureq_show(struct device *dev,
+			        struct device_attribute *attr, char *buf)
+{
+	struct kobject *kobj = &dev->kobj;
+	struct xe_gt *gt = kobj_to_gt(kobj);
+	u32 freq;
+
+	freq = xe_mmio_read32(gt, RPNSWREQ);
+
+	return sysfs_emit(buf, "%d\n", decode_freq(freq));
+}
+static DEVICE_ATTR_RO(freq_pureq);
+
 static ssize_t freq_rp0_show(struct device *dev,
 			     struct device_attribute *attr, char *buf)
 {
@@ -628,6 +642,7 @@ static DEVICE_ATTR_RO(rc6_residency);
 static const struct attribute *pc_attrs[] = {
 	&dev_attr_freq_act.attr,
 	&dev_attr_freq_cur.attr,
+	&dev_attr_freq_pureq.attr,
 	&dev_attr_freq_rp0.attr,
 	&dev_attr_freq_rpe.attr,
 	&dev_attr_freq_rpn.attr,
-- 
2.25.1



More information about the Intel-xe mailing list