[PATCH 2/3] drm/xe/lnl: Enable GuC SLPC DCC task

Rodrigo Vivi rodrigo.vivi at intel.com
Wed Oct 9 18:36:47 UTC 2024


Enable DCC (Duty Cycle Control) in Lunar Lake.

DCC is the SLPC task that tries to keep
the GT from operating inefficiently when thermally constrained.

Although the recommendation is to enable it, LNL GuC is leaving
it disabled by default on LNL.

It would minimize the GT frequency oscilation on throttled
scenarios, what could potentially reduce latencies.

Cc: Vinay Belgaumkar <vinay.belgaumkar at intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
---
 drivers/gpu/drm/xe/xe_guc_pc.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
index 4b38523c49e9..d141165e016b 100644
--- a/drivers/gpu/drm/xe/xe_guc_pc.c
+++ b/drivers/gpu/drm/xe/xe_guc_pc.c
@@ -948,6 +948,16 @@ static int pc_init_freqs(struct xe_guc_pc *pc)
 	return ret;
 }
 
+static int slpc_set_policies(struct xe_guc_pc *pc)
+{
+	struct xe_device *xe = pc_to_xe(pc);
+
+	if (xe->info.platform == XE_LUNARLAKE)
+		return pc_action_set_param(pc, SLPC_PARAM_TASK_ENABLE_DCC, 1);
+
+	return 0;
+}
+
 /**
  * xe_guc_pc_start - Start GuC's Power Conservation component
  * @pc: Xe_GuC_PC instance
@@ -983,6 +993,10 @@ int xe_guc_pc_start(struct xe_guc_pc *pc)
 	if (ret)
 		goto out;
 
+	ret = slpc_set_policies(pc);
+	if (ret)
+		goto out;
+
 	if (wait_for_pc_state(pc, SLPC_GLOBAL_STATE_RUNNING)) {
 		xe_gt_err(gt, "GuC PC Start failed\n");
 		ret = -EIO;
-- 
2.46.2



More information about the Intel-xe mailing list