Messages in this thread | | | Date | Fri, 13 Nov 2020 13:28:13 +0800 | From | Can Guo <> | Subject | Re: [PATCH] scsi: ufs: Add retry flow for failed hba enabling |
| |
On 2020-11-12 13:45, Stanley Chu wrote: > Once hba enabling is failed, add retry mechanism and in the > meanwhile allow vendors to apply specific handlings before > the next retry. For example, vendors can do vendor-specific > host reset flow in variant function "ufshcd_vops_hce_enable_notify()". > > Signed-off-by: Stanley Chu <stanley.chu@mediatek.com>
Reviewed-by: Can Guo <cang@codeaurora.org>
> --- > drivers/scsi/ufs/ufshcd.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index 8001bbfec5c0..9186ee01379a 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -4328,8 +4328,10 @@ static inline void ufshcd_hba_stop(struct > ufs_hba *hba) > */ > static int ufshcd_hba_execute_hce(struct ufs_hba *hba) > { > - int retry; > + int retry_outer = 3; > + int retry_inner; > > +start: > if (!ufshcd_is_hba_active(hba)) > /* change controller state to "reset state" */ > ufshcd_hba_stop(hba); > @@ -4355,13 +4357,17 @@ static int ufshcd_hba_execute_hce(struct > ufs_hba *hba) > ufshcd_delay_us(hba->vps->hba_enable_delay_us, 100); > > /* wait for the host controller to complete initialization */ > - retry = 50; > + retry_inner = 50; > while (ufshcd_is_hba_active(hba)) { > - if (retry) { > - retry--; > + if (retry_inner) { > + retry_inner--; > } else { > dev_err(hba->dev, > "Controller enable failed\n"); > + if (retry_outer) { > + retry_outer--; > + goto start; > + } > return -EIO; > } > usleep_range(1000, 1100);
| |