AMD General > -----Original Message----- > From: Kamal, Asad <[email protected]> > Sent: Monday, June 1, 2026 5:00 PM > To: Wang, Yang(Kevin) <[email protected]>; amd- > [email protected] > Cc: Deucher, Alexander <[email protected]>; Zhang, Hawking > <[email protected]>; Feng, Kenneth <[email protected]>; > Lazar, Lijo <[email protected]> > Subject: RE: [PATCH] drm/amd/pm: zero unused SMU argument registers > > AMD General > > With minor nit below > > Reviewed-by: Asad Kamal <[email protected]> > > Thanks & Regards > Asad > > -----Original Message----- > From: Wang, Yang(Kevin) <[email protected]> > Sent: Monday, June 1, 2026 1:27 PM > To: [email protected] > Cc: Deucher, Alexander <[email protected]>; Zhang, Hawking > <[email protected]>; Feng, Kenneth <[email protected]>; > Kamal, Asad <[email protected]>; Lazar, Lijo <[email protected]> > Subject: [PATCH] drm/amd/pm: zero unused SMU argument registers > > SMU messages may use fewer arguments than the available argument > registers, the previous code only wrote used registers and left the rest > unchanged, so stale values from a prior message could persist. > > Write all argument registers for each message and zero the unused tail to > keep command arguments deterministic and avoid unintended carry-over. > > Signed-off-by: Yang Wang <[email protected]> > --- > drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c > b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c > index 546e64e3ba9c..85e7a8b347f7 100644 > --- a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c > +++ b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c > @@ -313,11 +313,15 @@ static void __smu_msg_v1_send(struct > smu_msg_ctl *ctl, u16 index, { > struct amdgpu_device *adev = ctl->smu->adev; > struct smu_msg_config *cfg = &ctl->config; > + u32 arg; > int i; > > WREG32(cfg->resp_reg, 0); > - for (i = 0; i < args->num_args; i++) > - WREG32(cfg->arg_regs[i], args->args[i]); > + for (i = 0; i < ctl->config.num_arg_regs; i++) { > AK: Can directly use cfg as already defined as local variable Ok, this make sense.
Best Regards, Kevin > + /* NOTE: Clear unused argument registers to avoid stale > values. */ > + arg = i < args->num_args ? args->args[i] : 0; > + WREG32(cfg->arg_regs[i], arg); > + } > WREG32(cfg->msg_reg, index); > } > > -- > 2.47.3 >
