[PATCH] drm/amd/pm: only send GmiPwrDnControl msg on master die (v2)
Lazar, Lijo
lijo.lazar at amd.com
Tue Jan 11 07:00:00 UTC 2022
On 1/11/2022 12:03 PM, Tao Zhou wrote:
> PMFW only returns 0 on master die and sends NACK back on other dies for
> the message.
>
> v2: only send GmiPwrDnControl msg on master die instead of all
> dies.
>
> Signed-off-by: Tao Zhou <tao.zhou1 at amd.com>
> ---
> .../drm/amd/pm/swsmu/smu13/aldebaran_ppt.c | 25 ++++++++++++++++---
> 1 file changed, 21 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c
> index 261892977654..3fe5c05ced77 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c
> @@ -1625,10 +1625,27 @@ static int aldebaran_set_df_cstate(struct smu_context *smu,
>
> static int aldebaran_allow_xgmi_power_down(struct smu_context *smu, bool en)
> {
> - return smu_cmn_send_smc_msg_with_param(smu,
> - SMU_MSG_GmiPwrDnControl,
> - en ? 0 : 1,
> - NULL);
> + struct amdgpu_device *adev = smu->adev;
> +
> + /* The message only works on master die and NACK will be sent
> + back for other dies, only send it on master die */
> + if (adev->smuio.funcs &&
> + adev->smuio.funcs->get_socket_id &&
> + adev->smuio.funcs->get_die_id) {
> + if (!adev->smuio.funcs->get_socket_id(adev) &&
> + !adev->smuio.funcs->get_die_id(adev))
> + return smu_cmn_send_smc_msg_with_param(smu,
> + SMU_MSG_GmiPwrDnControl,
> + en ? 0 : 1,
> + NULL);
> + else
> + return 0;
> + }
> + else
The else part can be dropped. We always expect smuio functions to be
present in aldebaran.
Thanks,
Lijo
> + return smu_cmn_send_smc_msg_with_param(smu,
> + SMU_MSG_GmiPwrDnControl,
> + en ? 0 : 1,
> + NULL);
> }
>
> static const struct throttling_logging_label {
>
More information about the amd-gfx
mailing list