On 8/23/2024 1:25 PM, Bart Van Assche wrote:
If the UIC command completion interrupt could come late we would
already have observed unhandled interrupt errors in device logs, isn't
it?
Anyway, isn't this something that is easy to fix with something like the
(untested) patch below?
@@ -2559,8 +2557,7 @@ __ufshcd_send_uic_cmd(struct ufs_hba *hba, struct
uic_command *uic_cmd,
return -EIO;
}
- if (completion)
- init_completion(&uic_cmd->done);
+ init_completion(&uic_cmd->done);
This change may not work, Bart.
In this path ufshcd_uic_pwr_ctrl()->__ufshcd_send_uic_cmd(), the
proposal always has a init_completion(&uic_cmd->done). However, there is
no ufshcd_wait_for_uic_cmd() in this path. The isr will call
ufshcd_uic_cmd_compl()->complete(&hba->active_uic_cmd->done); to signal
the completion, but you are missing the code that waits for the
&hba->active_uic_cmd->done signal, so it may cause stability issues.
I am going to review another of your proposal in the mail with Peter and
get back.
Thanks, Bao