mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 10:09:10 +02:00
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 <kevinyang.wang@amd.com> Reviewed-by: Asad Kamal <asad.kamal@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
646b05043e
commit
e03b635f61
|
|
@ -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 < cfg->num_arg_regs; i++) {
|
||||
/* 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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user