[PATCH] drm/amd/pm: only send GmiPwrDnControl msg on master die (v2)

Zhou1, Tao Tao.Zhou1 at amd.com
Tue Jan 11 07:20:49 UTC 2022


[AMD Official Use Only]


> -----Original Message-----
> From: Lazar, Lijo <Lijo.Lazar at amd.com>
> Sent: Tuesday, January 11, 2022 3:00 PM
> To: Zhou1, Tao <Tao.Zhou1 at amd.com>; amd-gfx at lists.freedesktop.org; Zhang,
> Hawking <Hawking.Zhang at amd.com>; Quan, Evan <Evan.Quan at amd.com>
> Subject: Re: [PATCH] drm/amd/pm: only send GmiPwrDnControl msg on master
> die (v2)
> 
> 
> 
> 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

[Tao] OK, I'll also remove the pointer check for get_socket_id and get_die_id.

> 
> > +		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