Message ID | 1581123030-12023-6-git-send-email-cang@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | None | expand |
You didn't address any of my comments to this patch. Thanks, Avri > > The async version of ufshcd_hold(async == true), which is only called > in queuecommand path as for now, is expected to work in atomic context, > thus it should not sleep or schedule out. When it runs into the condition > that clocks are ON but link is still in hibern8 state, it should bail out > without flushing the clock ungate work. > > Signed-off-by: Can Guo <cang@codeaurora.org> > Reviewed-by: Hongwu Su <hongwus@codeaurora.org> > Reviewed-by: Asutosh Das <asutoshd@codeaurora.org> > Reviewed-by: Bean Huo <beanhuo@micron.com> > Reviewed-by: Stanley Chu <stanley.chu@mediatek.com> > > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c > index bbc2607..e8f7f9d 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -1518,6 +1518,11 @@ int ufshcd_hold(struct ufs_hba *hba, bool async) > */ > if (ufshcd_can_hibern8_during_gating(hba) && > ufshcd_is_link_hibern8(hba)) { > + if (async) { > + rc = -EAGAIN; > + hba->clk_gating.active_reqs--; > + break; > + } > spin_unlock_irqrestore(hba->host->host_lock, flags); > flush_work(&hba->clk_gating.ungate_work); > spin_lock_irqsave(hba->host->host_lock, flags); > -- > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora > Forum, > a Linux Foundation Collaborative Project
On 2020-02-09 15:48, Avri Altman wrote: > You didn't address any of my comments to this patch. > > Thanks, > Avri Replied in that thread. Thanks, Can Guo. >> >> The async version of ufshcd_hold(async == true), which is only called >> in queuecommand path as for now, is expected to work in atomic >> context, >> thus it should not sleep or schedule out. When it runs into the >> condition >> that clocks are ON but link is still in hibern8 state, it should bail >> out >> without flushing the clock ungate work. >> >> Signed-off-by: Can Guo <cang@codeaurora.org> >> Reviewed-by: Hongwu Su <hongwus@codeaurora.org> >> Reviewed-by: Asutosh Das <asutoshd@codeaurora.org> >> Reviewed-by: Bean Huo <beanhuo@micron.com> >> Reviewed-by: Stanley Chu <stanley.chu@mediatek.com> >> >> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c >> index bbc2607..e8f7f9d 100644 >> --- a/drivers/scsi/ufs/ufshcd.c >> +++ b/drivers/scsi/ufs/ufshcd.c >> @@ -1518,6 +1518,11 @@ int ufshcd_hold(struct ufs_hba *hba, bool >> async) >> */ >> if (ufshcd_can_hibern8_during_gating(hba) && >> ufshcd_is_link_hibern8(hba)) { >> + if (async) { >> + rc = -EAGAIN; >> + hba->clk_gating.active_reqs--; >> + break; >> + } >> spin_unlock_irqrestore(hba->host->host_lock, >> flags); >> flush_work(&hba->clk_gating.ungate_work); >> spin_lock_irqsave(hba->host->host_lock, >> flags); >> -- >> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora >> Forum, >> a Linux Foundation Collaborative Project
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index bbc2607..e8f7f9d 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -1518,6 +1518,11 @@ int ufshcd_hold(struct ufs_hba *hba, bool async) */ if (ufshcd_can_hibern8_during_gating(hba) && ufshcd_is_link_hibern8(hba)) { + if (async) { + rc = -EAGAIN; + hba->clk_gating.active_reqs--; + break; + } spin_unlock_irqrestore(hba->host->host_lock, flags); flush_work(&hba->clk_gating.ungate_work); spin_lock_irqsave(hba->host->host_lock, flags);