* [PATCH] scsi: ufs: set STATE_ERROR when ufshcd_probe_hba() failed [not found] <CGME20200717073633epcas2p21b8f5b5c64626b8ea299930193c6ad56@epcas2p2.samsung.com> @ 2020-07-17 7:28 ` Lee Sang Hyun 2020-07-18 4:14 ` Can Guo 0 siblings, 1 reply; 2+ messages in thread From: Lee Sang Hyun @ 2020-07-17 7:28 UTC (permalink / raw) To: linux-scsi, alim.akhtar, avri.altman, jejb, martin.petersen, beanhuo, asutoshd, cang, bvanassche, grant.jung, sc.suh, hy50.seo, sh425.lee, kwmad.kim set STATE_ERR like below to prevent a lockup(IO stuck) when ufshcd_probe_hba() returns error. Change-Id: I6c85ff290503cc9414d7f5fdd934295497b854ff Signed-off-by: Lee Sang Hyun <sh425.lee@samsung.com> --- drivers/scsi/ufs/ufshcd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index ad4fc82..37e4105 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7368,6 +7368,7 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool async) { int ret; ktime_t start = ktime_get(); + unsigned long flags; ret = ufshcd_link_startup(hba); if (ret) @@ -7439,6 +7440,11 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool async) ufshcd_auto_hibern8_enable(hba); out: + if (ret) { + spin_lock_irqsave(hba->host->host_lock, flags); + hba->ufshcd_state = UFSHCD_STATE_ERROR; + spin_unlock_irqrestore(hba->host->host_lock, flags); + } trace_ufshcd_init(dev_name(hba->dev), ret, ktime_to_us(ktime_sub(ktime_get(), start)), -- 2.7.4 ^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] scsi: ufs: set STATE_ERROR when ufshcd_probe_hba() failed 2020-07-17 7:28 ` [PATCH] scsi: ufs: set STATE_ERROR when ufshcd_probe_hba() failed Lee Sang Hyun @ 2020-07-18 4:14 ` Can Guo 0 siblings, 0 replies; 2+ messages in thread From: Can Guo @ 2020-07-18 4:14 UTC (permalink / raw) To: Lee Sang Hyun Cc: linux-scsi, alim.akhtar, avri.altman, jejb, martin.petersen, beanhuo, asutoshd, bvanassche, grant.jung, sc.suh, hy50.seo, kwmad.kim Hi Sang Hyun, On 2020-07-17 15:28, Lee Sang Hyun wrote: > set STATE_ERR like below to prevent a lockup(IO stuck) > when ufshcd_probe_hba() returns error. > > Change-Id: I6c85ff290503cc9414d7f5fdd934295497b854ff > Signed-off-by: Lee Sang Hyun <sh425.lee@samsung.com> > --- > drivers/scsi/ufs/ufshcd.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index ad4fc82..37e4105 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -7368,6 +7368,7 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, > bool async) > { > int ret; > ktime_t start = ktime_get(); > + unsigned long flags; > > ret = ufshcd_link_startup(hba); > if (ret) > @@ -7439,6 +7440,11 @@ static int ufshcd_probe_hba(struct ufs_hba > *hba, bool async) > ufshcd_auto_hibern8_enable(hba); > > out: > + if (ret) { > + spin_lock_irqsave(hba->host->host_lock, flags); > + hba->ufshcd_state = UFSHCD_STATE_ERROR; > + spin_unlock_irqrestore(hba->host->host_lock, flags); > + } This change is included in my change "scsi: ufs: Fix up and simplify error recovery mechanism", please take a look if you are interested. Thanks, Can Guo. > > trace_ufshcd_init(dev_name(hba->dev), ret, > ktime_to_us(ktime_sub(ktime_get(), start)), ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-07-18 4:15 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CGME20200717073633epcas2p21b8f5b5c64626b8ea299930193c6ad56@epcas2p2.samsung.com>
2020-07-17 7:28 ` [PATCH] scsi: ufs: set STATE_ERROR when ufshcd_probe_hba() failed Lee Sang Hyun
2020-07-18 4:14 ` Can Guo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).