Re: [PATCH v2 5/5] scsi: ufs: core: Clear stale UIC result byte before peer DME retries
From: Bean Huo
Date: Sun Oct 18 2026 - 14:36:05 EST
On Thu, 2026-10-15 at 08:18 +0800, Stanley Jhu wrote:
> Peer DME get and set retry a failed attempt with the same struct
> uic_command. UIC completion ORs the ConfigResultCode into
> argument2[7:0], and nothing clears it before the next attempt. Once an
> attempt fails, every retry keeps reporting that error code, even when
> the device returns success, so a transient failure becomes a hard
> failure after three retries. Each such retry also triggers the
> WARN_ON_ONCE() in ufshcd_dispatch_uic_cmd(). In ufshcd_dme_set_attr(),
> ufshcd_uic_cmd_compl() also overwrites argument3 with the register
> readback before the next attempt.
>
> Clear the result byte and restore argument3 in ufshcd_dme_set_attr()
> when an attempt fails.
>
> Fixes: 64238fbd15ea ("scsi: ufs: add retries to dme_peer get and set
> attribute")
> Cc: stable@xxxxxxxxxxxxxxx
> Reviewed-by: Bean Huo <beanhuo@xxxxxxxxxx>
> Signed-off-by: Stanley Jhu <stanleyjhu@xxxxxxxxxx>
> ---
> Changes in v2:
> - Clear argument2's result byte and restore argument3 (MIBvalue_W) in
> the failure path instead of before the first attempt. Kept Bean's
> Reviewed-by; Bean, please let me know if you would like to look again.
v2 looks good to me, and keeping my reviewed-by is fine