[AMD Official Use Only] > -----Original Message----- > From: Lazar, Lijo <Lijo.Lazar@xxxxxxx> > Sent: Tuesday, January 11, 2022 3:00 PM > To: Zhou1, Tao <Tao.Zhou1@xxxxxxx>; amd-gfx@xxxxxxxxxxxxxxxxxxxxx; Zhang, > Hawking <Hawking.Zhang@xxxxxxx>; Quan, Evan <Evan.Quan@xxxxxxx> > 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@xxxxxxx> > > --- > > .../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 { > >