scsi: ufs: Remove a redundant command completion logic in error handler
authorCan Guo <cang@codeaurora.org>
Mon, 24 May 2021 08:36:56 +0000 (01:36 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 8 Jun 2021 02:18:03 +0000 (22:18 -0400)
ufshcd_host_reset_and_restore() anyways completes all pending requests
before starts re-probing, so there is no need to complete the command on
the highest bit in tr_doorbell in advance.

Link: https://lore.kernel.org/r/1621845419-14194-2-git-send-email-cang@codeaurora.org
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Reviewed-by: Bean Huo <beanhuo@micron.com>
Signed-off-by: Can Guo <cang@codeaurora.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c

index bb567a4..0680eff 100644 (file)
@@ -6124,19 +6124,6 @@ lock_skip_pending_xfer_clear:
 do_reset:
        /* Fatal errors need reset */
        if (needs_reset) {
-               unsigned long max_doorbells = (1UL << hba->nutrs) - 1;
-
-               /*
-                * ufshcd_reset_and_restore() does the link reinitialization
-                * which will need atleast one empty doorbell slot to send the
-                * device management commands (NOP and query commands).
-                * If there is no slot empty at this moment then free up last
-                * slot forcefully.
-                */
-               if (hba->outstanding_reqs == max_doorbells)
-                       __ufshcd_transfer_req_compl(hba,
-                                                   (1UL << (hba->nutrs - 1)));
-
                hba->force_reset = false;
                spin_unlock_irqrestore(hba->host->host_lock, flags);
                err = ufshcd_reset_and_restore(hba);