mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 07:30:06 -04:00
scsi: ufs: core: Simplify ufshcd_try_to_abort_task()
The MCQ code is also valid for legacy mode. Hence, remove the legacy mode code and retain the MCQ code. Since it is not an error if a command completes while ufshcd_try_to_abort_task() is in progress, use dev_info() instead of dev_err() to report this. Signed-off-by: Bart Van Assche <bvanassche@acm.org> Link: https://lore.kernel.org/r/20241022193130.2733293-4-bvanassche@acm.org Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
committed by
Martin K. Petersen
parent
7df89440d0
commit
9a5f6c09d0
@@ -7488,7 +7488,6 @@ int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag)
|
||||
int err;
|
||||
int poll_cnt;
|
||||
u8 resp = 0xF;
|
||||
u32 reg;
|
||||
|
||||
for (poll_cnt = 100; poll_cnt; poll_cnt--) {
|
||||
err = ufshcd_issue_tm_cmd(hba, lrbp->lun, lrbp->task_tag,
|
||||
@@ -7503,32 +7502,17 @@ int ufshcd_try_to_abort_task(struct ufs_hba *hba, int tag)
|
||||
* cmd not pending in the device, check if it is
|
||||
* in transition.
|
||||
*/
|
||||
dev_err(hba->dev, "%s: cmd at tag %d not pending in the device.\n",
|
||||
dev_info(
|
||||
hba->dev,
|
||||
"%s: cmd with tag %d not pending in the device.\n",
|
||||
__func__, tag);
|
||||
if (hba->mcq_enabled) {
|
||||
/* MCQ mode */
|
||||
if (ufshcd_cmd_inflight(lrbp->cmd)) {
|
||||
/* sleep for max. 200us same delay as in SDB mode */
|
||||
usleep_range(100, 200);
|
||||
continue;
|
||||
}
|
||||
/* command completed already */
|
||||
dev_err(hba->dev, "%s: cmd at tag=%d is cleared.\n",
|
||||
__func__, tag);
|
||||
if (!ufshcd_cmd_inflight(lrbp->cmd)) {
|
||||
dev_info(hba->dev,
|
||||
"%s: cmd with tag=%d completed.\n",
|
||||
__func__, tag);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Single Doorbell Mode */
|
||||
reg = ufshcd_readl(hba, REG_UTP_TRANSFER_REQ_DOOR_BELL);
|
||||
if (reg & (1 << tag)) {
|
||||
/* sleep for max. 200us to stabilize */
|
||||
usleep_range(100, 200);
|
||||
continue;
|
||||
}
|
||||
/* command completed already */
|
||||
dev_err(hba->dev, "%s: cmd at tag %d successfully cleared from DB.\n",
|
||||
__func__, tag);
|
||||
return 0;
|
||||
usleep_range(100, 200);
|
||||
} else {
|
||||
dev_err(hba->dev,
|
||||
"%s: no response from device. tag = %d, err %d\n",
|
||||
|
||||
Reference in New Issue
Block a user