scsi: ufs: core: Always initialize the UIC done completion
[ Upstream commit b1e8c53749adb795bfb0bf4e2f7836e26684bb90 ] Simplify __ufshcd_send_uic_cmd() by always initializing the uic_cmd::done completion. This is fine since the time required to initialize a completion is small compared to the time required to process an UIC command. Reviewed-by: Peter Wang <peter.wang@mediatek.com> Signed-off-by: Bart Van Assche <bvanassche@acm.org> Link: https://lore.kernel.org/r/20240912223019.3510966-5-bvanassche@acm.org Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Stable-dep-of: 60b4dd1460f6 ("scsi: ufs: core: Add ufshcd_send_bsg_uic_cmd() for UFS BSG") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
66edf59bc4
commit
7d4e5e33ea
@@ -2551,13 +2551,11 @@ ufshcd_wait_for_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd)
|
|||||||
* __ufshcd_send_uic_cmd - Send UIC commands and retrieve the result
|
* __ufshcd_send_uic_cmd - Send UIC commands and retrieve the result
|
||||||
* @hba: per adapter instance
|
* @hba: per adapter instance
|
||||||
* @uic_cmd: UIC command
|
* @uic_cmd: UIC command
|
||||||
* @completion: initialize the completion only if this is set to true
|
|
||||||
*
|
*
|
||||||
* Return: 0 only if success.
|
* Return: 0 only if success.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
__ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd,
|
__ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd)
|
||||||
bool completion)
|
|
||||||
{
|
{
|
||||||
lockdep_assert_held(&hba->uic_cmd_mutex);
|
lockdep_assert_held(&hba->uic_cmd_mutex);
|
||||||
|
|
||||||
@@ -2567,8 +2565,7 @@ __ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd,
|
|||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (completion)
|
init_completion(&uic_cmd->done);
|
||||||
init_completion(&uic_cmd->done);
|
|
||||||
|
|
||||||
uic_cmd->cmd_active = 1;
|
uic_cmd->cmd_active = 1;
|
||||||
ufshcd_dispatch_uic_cmd(hba, uic_cmd);
|
ufshcd_dispatch_uic_cmd(hba, uic_cmd);
|
||||||
@@ -2594,7 +2591,7 @@ int ufshcd_send_uic_cmd(struct ufs_hba *hba, struct uic_command *uic_cmd)
|
|||||||
mutex_lock(&hba->uic_cmd_mutex);
|
mutex_lock(&hba->uic_cmd_mutex);
|
||||||
ufshcd_add_delay_before_dme_cmd(hba);
|
ufshcd_add_delay_before_dme_cmd(hba);
|
||||||
|
|
||||||
ret = __ufshcd_send_uic_cmd(hba, uic_cmd, true);
|
ret = __ufshcd_send_uic_cmd(hba, uic_cmd);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
ret = ufshcd_wait_for_uic_cmd(hba, uic_cmd);
|
ret = ufshcd_wait_for_uic_cmd(hba, uic_cmd);
|
||||||
|
|
||||||
@@ -4288,7 +4285,7 @@ static int ufshcd_uic_pwr_ctrl(struct ufs_hba *hba, struct uic_command *cmd)
|
|||||||
reenable_intr = true;
|
reenable_intr = true;
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(hba->host->host_lock, flags);
|
spin_unlock_irqrestore(hba->host->host_lock, flags);
|
||||||
ret = __ufshcd_send_uic_cmd(hba, cmd, false);
|
ret = __ufshcd_send_uic_cmd(hba, cmd);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(hba->dev,
|
dev_err(hba->dev,
|
||||||
"pwr ctrl cmd 0x%x with mode 0x%x uic error %d\n",
|
"pwr ctrl cmd 0x%x with mode 0x%x uic error %d\n",
|
||||||
|
|||||||
Reference in New Issue
Block a user