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

Belgaumkar, Vinay vinay.belgaumkar at intel.com
Wed Jan 15 00:40:04 UTC 2025


On 1/14/2025 3:24 PM, Rodrigo Vivi wrote:
> 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 oscillation on throttled
> scenarios, which could potentially reduce latencies.
>
> v2: Move set_policies call after wait for running state, so
>      we ensure it is not overwritten. (Vinay)
> v3: Fix English in the commit message (Jonathan)
> v4: Also set disable to 0 so DCC can really get into effect.
>
> Cc: Vinay Belgaumkar <vinay.belgaumkar at intel.com>
> Reviewed-by: Jonathan Cavitt <jonathan.cavitt at intel.com> #v3
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> ---
>   drivers/gpu/drm/xe/xe_guc_pc.c | 25 +++++++++++++++++++++++++
>   1 file changed, 25 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc_pc.c b/drivers/gpu/drm/xe/xe_guc_pc.c
> index 43f9617baba2..e4f5db787e36 100644
> --- a/drivers/gpu/drm/xe/xe_guc_pc.c
> +++ b/drivers/gpu/drm/xe/xe_guc_pc.c
> @@ -993,6 +993,27 @@ static int pc_init_freqs(struct xe_guc_pc *pc)
>   	return ret;
>   }
>   
> +static int lnl_enable_dcc(struct xe_guc_pc *pc)

Does the function name need to have lnl? There is nothing LNL specific 
it is doing.

Other than that,

Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar at intel.com>

> +{
> +	int ret;
> +
> +	ret = pc_action_set_param(pc, SLPC_PARAM_TASK_ENABLE_DCC, 1);
> +	if (ret)
> +		return ret;
> +
> +	return pc_action_set_param(pc, SLPC_PARAM_TASK_DISABLE_DCC, 0);
> +}
> +
> +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 lnl_enable_dcc(pc);
> +
> +	return 0;
> +}
> +
>   /**
>    * xe_guc_pc_start - Start GuC's Power Conservation component
>    * @pc: Xe_GuC_PC instance
> @@ -1037,6 +1058,10 @@ int xe_guc_pc_start(struct xe_guc_pc *pc)
>   		goto out;
>   	}
>   
> +	ret = slpc_set_policies(pc);
> +	if (ret)
> +		goto out;
> +
>   	ret = pc_init_freqs(pc);
>   	if (ret)
>   		goto out;


More information about the Intel-xe mailing list