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

Reply via email to